feat(fleet): expand sidechat auto-provisioning for muse and dev, integrate response harvesting
This commit is contained in:
@@ -661,6 +661,21 @@ class Handler(BaseHTTPRequestHandler):
|
|||||||
{'op': k, 'desc': v['desc'],
|
{'op': k, 'desc': v['desc'],
|
||||||
'side_effecting': v['side_effecting']}
|
'side_effecting': v['side_effecting']}
|
||||||
for k, v in sorted(OPS.items())]})
|
for k, v in sorted(OPS.items())]})
|
||||||
|
elif self.path in ('/box', '/box-relay.sh'):
|
||||||
|
relay_path = os.path.join(BIN_DIR, 'box-relay.sh')
|
||||||
|
if os.path.isfile(relay_path):
|
||||||
|
try:
|
||||||
|
with open(relay_path, 'rb') as f:
|
||||||
|
data = f.read()
|
||||||
|
self.send_response(200)
|
||||||
|
self.send_header('Content-Type', 'text/x-shellscript')
|
||||||
|
self.send_header('Content-Length', str(len(data)))
|
||||||
|
self.end_headers()
|
||||||
|
self.wfile.write(data)
|
||||||
|
return
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
self._send(404, {'error': 'not found'})
|
||||||
else:
|
else:
|
||||||
self._send(404, {'error': 'not found'})
|
self._send(404, {'error': 'not found'})
|
||||||
|
|
||||||
|
|||||||
@@ -69,8 +69,8 @@ try:
|
|||||||
except ImportError:
|
except ImportError:
|
||||||
HAS_PIPELINE = False
|
HAS_PIPELINE = False
|
||||||
|
|
||||||
VALID_AGENTS = ["muse", "pip", "646", "opm"]
|
VALID_AGENTS = ["muse", "pip", "646", "opm", "dev", "def"]
|
||||||
DEFAULT_PORTS = {"muse": 9410, "pip": 9420, "646": 9430, "opm": 9440}
|
DEFAULT_PORTS = {"muse": 9410, "pip": 9420, "646": 9430, "opm": 9440, "def": 9450, "dev": 9460}
|
||||||
|
|
||||||
# Matches EVERY [RESULT <job_id>] marker in a message (use with finditer, not
|
# Matches EVERY [RESULT <job_id>] marker in a message (use with finditer, not
|
||||||
# search). The result text is lazy and stops before the next marker (or end of
|
# search). The result text is lazy and stops before the next marker (or end of
|
||||||
|
|||||||
+20
-3
@@ -76,8 +76,14 @@
|
|||||||
"thread_uuid": "5f33b1ab-a310-4cbb-9ccc-bb7bcd3d1b34",
|
"thread_uuid": "5f33b1ab-a310-4cbb-9ccc-bb7bcd3d1b34",
|
||||||
"agent": "pip"
|
"agent": "pip"
|
||||||
},
|
},
|
||||||
|
"muse tasks": {
|
||||||
|
"thread_uuid": "3881dae3-30fa-411b-8f5b-f6d5917bc302",
|
||||||
|
"agent": "muse",
|
||||||
|
"title": "muse tasks",
|
||||||
|
"created_at": "2026-10-05T02:44:00+00:00"
|
||||||
|
},
|
||||||
"muse-tasks": {
|
"muse-tasks": {
|
||||||
"thread_uuid": "414cc0fc-4c46-4cb4-9fa6-07f06912384a",
|
"thread_uuid": "3881dae3-30fa-411b-8f5b-f6d5917bc302",
|
||||||
"agent": "muse"
|
"agent": "muse"
|
||||||
},
|
},
|
||||||
"pipe-c3f686": {
|
"pipe-c3f686": {
|
||||||
@@ -100,7 +106,7 @@
|
|||||||
"heartbeat-opm": {
|
"heartbeat-opm": {
|
||||||
"thread_uuid": "51695451-ffba-49e2-8c6d-ffa4f511ce5a",
|
"thread_uuid": "51695451-ffba-49e2-8c6d-ffa4f511ce5a",
|
||||||
"agent": "opm",
|
"agent": "opm",
|
||||||
"description": "Reuse key for OPM heartbeat -> dedicated heartbeat thread",
|
"description": "Reuse key for OPM heartbeat -> dedicated heartbeat thread [updated 2026-10-05 to current]",
|
||||||
"updated_at": "2026-10-05T02:22:19+00:00"
|
"updated_at": "2026-10-05T02:22:19+00:00"
|
||||||
},
|
},
|
||||||
"646-pip@646": {
|
"646-pip@646": {
|
||||||
@@ -185,7 +191,7 @@
|
|||||||
"heartbeat-thread": {
|
"heartbeat-thread": {
|
||||||
"thread_uuid": "51695451-ffba-49e2-8c6d-ffa4f511ce5a",
|
"thread_uuid": "51695451-ffba-49e2-8c6d-ffa4f511ce5a",
|
||||||
"agent": "opm",
|
"agent": "opm",
|
||||||
"description": "Alias for heartbeat (dedicated heartbeat channel provisioned 2026-10-05)"
|
"description": "Alias for heartbeat (dedicated heartbeat channel provisioned 2026-10-05) [updated 2026-10-05 to current]"
|
||||||
},
|
},
|
||||||
"main-loop": {
|
"main-loop": {
|
||||||
"thread_uuid": "5f18476d-8994-49e7-a9e0-4838732363fe",
|
"thread_uuid": "5f18476d-8994-49e7-a9e0-4838732363fe",
|
||||||
@@ -209,5 +215,16 @@
|
|||||||
"agent": "646",
|
"agent": "646",
|
||||||
"title": "box-deep-health",
|
"title": "box-deep-health",
|
||||||
"created_at": "2026-10-05T02:26:37.043639+00:00"
|
"created_at": "2026-10-05T02:26:37.043639+00:00"
|
||||||
|
},
|
||||||
|
"dev-646-sync": {
|
||||||
|
"thread_uuid": "4aefde50-c02c-4657-8d18-ad2238ef4cda",
|
||||||
|
"agent": "dev",
|
||||||
|
"title": "dev-646-sync",
|
||||||
|
"created_at": "2026-10-05T02:30:35.461450+00:00"
|
||||||
|
},
|
||||||
|
"pipe-5086a2": {
|
||||||
|
"thread_uuid": "8a026cff-1b98-48df-9bf3-169b19c2e07c",
|
||||||
|
"agent": "opm",
|
||||||
|
"created_at": "2026-10-05T02:37:49.620793+00:00"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
{
|
||||||
|
"name": "dev-hourly-checkin",
|
||||||
|
"description": "Hourly operational check-in for Dev during active daytime hours",
|
||||||
|
"agent": "dev",
|
||||||
|
"schedule": "0 8-22 * * *",
|
||||||
|
"timeout": 300,
|
||||||
|
"on_failure": "alert",
|
||||||
|
"dm_target": "onboarding-dev",
|
||||||
|
"sidechat": {"create": false},
|
||||||
|
"followup": {
|
||||||
|
"expect_reply": true,
|
||||||
|
"timeout": "1h",
|
||||||
|
"nudges": 1,
|
||||||
|
"escalate": "opm"
|
||||||
|
},
|
||||||
|
"prompt_template": "Hourly operational check-in for Dev.\nJob ID: {job_id}\nTime: {datetime}\n\nPlease report briefly in this thread:\n(1) Current tasks and VM status\n(2) Subagent tasks and tooling audits\n(3) Any blockers or peer coordination items with 646/opm\n\nReply with [RESULT {job_id}] and your status."
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user