feat(mcp): run governed version lifecycle receipts

This commit is contained in:
ogt
2026-07-15 02:16:48 +08:00
parent b49a1ec164
commit aed4b044d4
13 changed files with 1831 additions and 36 deletions

View File

@@ -623,6 +623,7 @@ async def _main() -> None:
backup_restore_legacy_backfill_task: asyncio.Task[Any] | None = None
security_maintenance_tasks: list[asyncio.Task[Any]] = []
agent99_controlled_dispatch_reconciler_task: asyncio.Task[Any] | None = None
mcp_version_lifecycle_task: asyncio.Task[Any] | None = None
if settings.ENABLE_AWOOOP_ANSIBLE_CANDIDATE_BACKFILL_WORKER:
from src.jobs.awooop_ansible_candidate_backfill_job import (
run_awooop_ansible_candidate_backfill_loop,
@@ -688,6 +689,30 @@ async def _main() -> None:
task_count=len(security_maintenance_tasks),
)
if settings.ENABLE_MCP_VERSION_LIFECYCLE_WORKER:
from src.jobs.mcp_version_lifecycle_job import (
run_mcp_version_lifecycle_loop,
)
mcp_version_lifecycle_task = asyncio.create_task(
run_mcp_version_lifecycle_loop(),
name="run_mcp_version_lifecycle_loop",
)
logger.info(
"signal_worker_mcp_version_lifecycle_started",
interval_seconds=settings.MCP_VERSION_LIFECYCLE_INTERVAL_SECONDS,
startup_sleep_seconds=(
settings.MCP_VERSION_LIFECYCLE_STARTUP_SLEEP_SECONDS
),
external_install_allowed=False,
external_rag_write_allowed=False,
)
else:
logger.warning(
"signal_worker_mcp_version_lifecycle_disabled",
owner="signal_worker",
)
# 2026-07-14 Codex v1.4: Agent99 reconciliation has one runtime owner.
# The API reserves its single DB connection for requests, so durable
# dispatch completion belongs to this standalone worker after the CD-owned
@@ -769,7 +794,16 @@ async def _main() -> None:
await agent99_controlled_dispatch_reconciler_task
except asyncio.CancelledError:
pass
if mcp_version_lifecycle_task is not None:
mcp_version_lifecycle_task.cancel()
try:
await mcp_version_lifecycle_task
except asyncio.CancelledError:
pass
await worker.stop()
from src.core.http_client import close_general_client
await close_general_client()
await close_worker_redis_pool() # 關閉 Worker 專屬連線
await close_redis_pool()
await close_db() # 關閉 PostgreSQL 連線池