Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 8a440c68e7 | |||
| 34badb28e5 |
@@ -0,0 +1,40 @@
|
||||
name: gitea-merge-queue
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: '*/5 * * * *'
|
||||
workflow_dispatch:
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
concurrency:
|
||||
group: gitea-merge-queue-${{ github.repository }}
|
||||
cancel-in-progress: false
|
||||
|
||||
jobs:
|
||||
queue:
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 5
|
||||
steps:
|
||||
- name: Check out queue script from main
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
with:
|
||||
ref: ${{ github.event.repository.default_branch }}
|
||||
|
||||
- name: Process one queued PR
|
||||
env:
|
||||
GITEA_TOKEN: ${{ secrets.AUTO_SYNC_TOKEN }}
|
||||
GITEA_HOST: git.moleculesai.app
|
||||
REPO: ${{ github.repository }}
|
||||
WATCH_BRANCH: ${{ github.event.repository.default_branch }}
|
||||
QUEUE_LABEL: merge-queue
|
||||
HOLD_LABEL: merge-queue-hold
|
||||
UPDATE_STYLE: merge
|
||||
# Context names: CI workflow is "CI", job is "test" → "CI / test".
|
||||
# The CI workflow (.gitea/workflows/ci.yml) triggers on pull_request events,
|
||||
# so Gitea posts statuses with the "(pull_request)" suffix.
|
||||
# The queue script also checks the SOP gate: sop-checklist / all-items-acked (pull_request).
|
||||
REQUIRED_CONTEXTS: >-
|
||||
CI / test (pull_request), sop-checklist / all-items-acked (pull_request)
|
||||
run: python3 .gitea/scripts/gitea-merge-queue.py
|
||||
+7
-3
@@ -188,13 +188,17 @@ The MCP server's remote-agent tools (`list_remote_agents`, `get_remote_agent_sta
|
||||
`check_remote_agent_freshness`, `get_remote_agent_setup_command`) are **read-only
|
||||
queries** — they do not drive any background heartbeat loop. The actual
|
||||
`run_heartbeat_loop()` that sends heartbeats from a remote agent lives in the
|
||||
Python SDK (`molecule_sdk_python/molecule_agent/client.py`).
|
||||
Python SDK's `molecule_agent/client.py` (standalone `molecule-sdk-python` repo).
|
||||
|
||||
The heartbeat cleanup issue (heartbeat loop continues after the controlling MCP
|
||||
client disconnects) is tracked as **SDK KI-009** in `molecule-sdk-python/known-issues.md`.
|
||||
client disconnects) is tracked as **SDK KI-009** in the `molecule-sdk-python`
|
||||
repo's `known-issues.md`. The Python SDK lives in the `molecule-sdk-python`
|
||||
standalone repo; the `RemoteAgentClient` class is at `molecule_agent/client.py`
|
||||
(not the old monorepo path `sdk/python/molecule_agent/`).
|
||||
|
||||
### Suggested fix (SDK side)
|
||||
Expose a `stop_event` parameter or `stop()` method on `RemoteAgentClient` so the
|
||||
callers (MCP client, shell wrapper) can signal the loop to exit cleanly. The
|
||||
Python SDK's `run_heartbeat_loop()` should check `threading.Event` or accept a
|
||||
`stop_on: asyncio.Event` argument. See `molecule-sdk-python/known-issues.md`.
|
||||
`stop_on: asyncio.Event` argument. See the `molecule-sdk-python` repo's
|
||||
`known-issues.md` (KI-009 there).
|
||||
Reference in New Issue
Block a user