operator
1d739f6b6a
feat(loop): codify external intrinsic loop management, progressive remediation, and operational runbook
...
- Add bin/gravity.py loop diagnostics, reconstruction, and progressive remediation
- Wire hard-break alerting to job-log audit and operator direct message
- Add comprehensive architecture and operational specification in docs/LOOP-MANAGEMENT.md
- Add sidechat thread auto-provisioning fallback on 'Navigated to: None' in bin/dm.py
- Support Muse unconfirmed signup error handling in bin/muse-signin.py
- Track dynamic pipe sidechat mappings in job-sidechats.json
2026-10-04 16:52:54 +00:00
operator
7a35b684c4
feat: unified fleet CLI, Main Chat preservation policy, sidechat routing, and file transfers
...
- Added CHAT_POLICY.md and README.md banner enforcing sidechat-first and file-transfer-first rules.
- Added strict Main Chat block to super dm send and super dm wo with --allow-main-chat override.
- Implemented file transfer staging and metadata registry in super dm send-file and super dm files (with clean subcommand).
- Added full job lifecycle management (show, create, enable, disable, delete, run --follow) to super-cli.py and box-ctl.py.
- Audited all jobs in jobs/*.json and redirected automated dispatches away from Main Chat.
- Hardened chromebox-watchdog.sh with systemd user session environment exports and stale singleton cleanup.
- Added compose_check command choice to muse-chat-api.py.
2026-10-04 16:34:25 +00:00
operator-main
5f0a77d04b
Integrate cdp_queue into CDP path
...
All CDP sessions now go through per-node queue (max 2 concurrent, priority levels). DM sends use high priority. Graceful fallback if module unavailable.
Session: sidechat/chromebox-ops
2026-10-04 13:15:59 +00:00
operator-main
844aa73bd9
UUID-based sidechat reuse for heartbeat\n\n- Add url command to muse-chat-api.py\n- Dispatcher: reuse_key -> thread UUID mapping in job-sidechats.json\n- Capture UUID after first send, reuse on subsequent runs\n- Fixes multi-spawn bug (was matching by auto-generated title)
2026-10-04 04:03:28 +00:00
operator-main
72574baa4b
Replace Ctrl+J with click-based chat activation\n\n- New _ensure_chat_active(): compose -> switcher -> nav-chat priority\n- hatch-nav-chat click recovers from stripped /thread/new state\n- Ctrl+J needed keyboard focus which stripped states lack
2026-10-04 03:46:47 +00:00
operator-main
12dca45107
cmd_sidechat_create: navigate to main first\n\nReliability test found success poisons next run (browser left on\n/thread/new with stripped DOM). Now navigates to main via Ctrl+J\nat start for known good state.
2026-10-04 03:38:46 +00:00
operator-main
f8b6475396
cmd_sidechat_create: exact header check for panel state\n\ninnerText.includes was always true (switcher button text).\nNow checks for exact Side chats header text node, loops up to 5x.
2026-10-04 03:38:22 +00:00
operator-main
8ff4dd0e30
cmd_sidechat_create: check + first, open panel only if needed\n\nAvoids unnecessary switcher click when panel already open.
2026-10-04 03:37:32 +00:00
operator-main
4379610d06
cmd_sidechat_create: verified working selectors\n\nDOM investigation found:\n- Switcher: [data-testid=hatch-chat-switcher-trigger] (idempotent)\n- Plus: [data-testid=hatch-chat-compose] (SVG, no text)\n- Old text-based checks were false-positive on DM content
2026-10-04 03:37:01 +00:00
operator-main
bc4cd77a52
Fix sidechat selectors from DOM investigation\n\n- + button: [data-testid=hatch-chat-compose] (SVG, no text)\n- Panel: [data-testid=hatch-chat-switcher-trigger] (idempotent)\n- ensure_sidebar: check + button presence, not text (was false-positive\n on DM text containing Side chats)
2026-10-04 03:36:06 +00:00
operator-main
1cffacc7d1
Sidechat: render wait, direct send, stderr logging\n\n- Wait for Side chats to render before finding + button\n- Dispatcher: send_to_current_chat for sidechat jobs\n- Log stderr on create failure
2026-10-04 03:29:21 +00:00
operator-main
5feca52602
cmd_sidechat_create: remove Ctrl+J toggle\n\nPanel is always open; Ctrl+J toggle was closing it.\nJust find the + button directly.
2026-10-04 03:26:17 +00:00
operator-main
7938322e6d
cmd_sidechat_create: Ctrl+J opens chat panel via CDP\n\nSidebar is actually the chat panel (Ctrl+J toggle).\nUse proven Input.dispatchKeyEvent like cmd_sidechat_main.
2026-10-04 03:25:37 +00:00
operator-main
34082045cc
Nail sidechat create: direct send, no ID lookup\n\n- cmd_sidechat_create: simplified, just create and return\n- job-dispatch: after create, send via direct API to current chat\n- No thread ID parsing needed; thread lookup via URL for later ops
2026-10-04 03:23:34 +00:00
operator-main
c57a05963a
Fix sidechat CDP and button selectors\n\n- sidechat_manager._ev: use id=1 and returnByValue to match ev()\n- cmd_sidechat_create: find + button via Side chats header proximity\n- cmd_sidechat_create: use cmd_send for initial message (not DOM hack)\n- Integrate ensure_sidebar with retry
2026-10-04 03:19:48 +00:00
operator-main
2074145e22
muse-chat-api.py: Integrate sidechat_manager.ensure_sidebar\n\nUse robust sidebar opener with exponential backoff retry\ninstead of single-attempt click. Fixes flaky NOSIDEBAR errors.
2026-10-04 03:15:07 +00:00
operator-main
50ddecb02e
muse-chat-api.py: Get real thread ID after sidechat create\n\nSend system message to trigger ID assignment, poll for\n/thread/<uuid> instead of accepting /thread/new placeholder.
2026-10-04 03:13:07 +00:00
operator-main
39e47ab2ef
muse-chat-api.py: Fix sidechat create URL race\n\nPoll for /thread/ URL up to 15s instead of fixed 5s sleep.\nWas capturing base URL before navigation settled.
2026-10-04 03:10:52 +00:00
operator-main
c48fbc03f6
muse-chat-api: Dont block sends on dialogs without IPs\n\ncheck_approvals was raising APPROVAL_NEEDED for false positives\n(dialogs without IP addresses, likely chat content misidentified).\nOnly IP-based permission dialogs should block. Others are ignored.
2026-10-04 02:32:38 +00:00
operator-main
5dddedb667
muse-chat-api: Press chat button to refocus Main Chat\n\nUser confirmed pressing the chat button properly refocuses Main Chat.\nSimpler and more reliable than searching for Main chat text in sidebar.
2026-10-04 02:11:41 +00:00
operator-main
c83fb7c294
muse-chat-api: Use fuzzy matching for Main chat button\n\nExact match was too fragile - if the UI text differs slightly,\nit returns NOTFOUND and the browser stays on the side chat.\nNow uses substring + shortest-first like cmd_sidechat_use.
2026-10-04 02:04:19 +00:00
operator-main
e5c85c7940
muse-chat-api: Fix cmd_sidechat_main to click Main chat button\n\nWas navigating to https://muse.ai/ (landing page) which restores the\nlast-viewed chat (often a side chat like Manage Muse agents). Now opens\nthe sidebar and clicks the Main chat element directly.
2026-10-04 01:58:41 +00:00
operator-main
d3c19425e8
muse-chat-api.py upload: verify via Remove-attachment button
2026-10-04 01:28:47 +00:00
operator-main
c759ca353f
muse-chat-api.py upload: ev1() skips CDP chatter on verify
2026-10-04 01:28:19 +00:00
operator-main
716b31a7e6
muse-chat-api.py upload: verify chip by own-text (React swaps the input)
2026-10-04 01:27:55 +00:00
operator-main
1c386ca6bb
muse-chat-api.py: cdp_call skips CDP event chatter
2026-10-04 01:25:44 +00:00
operator-main
566edf20c6
muse-chat-api.py upload: --dry-run/--message as real argparse flags
2026-10-04 01:25:10 +00:00
operator-main
b5f718a885
muse-chat-api.py: upload subcommand (CDP file attach)
...
Attach a file to the agent chat composer via DOM.setFileInputFiles.
--dry-run stages the attachment and verifies the preview chip without
sending; otherwise sends (optional --message caption) and verifies via
read-back. Supports the box console upload flow (v0.2).
Session: sidechat/box-console
2026-10-04 01:23:22 +00:00
operator
a7639e2341
propagation: single registry drives all node references
...
New bin/netvm-registry.py parses NODES.md (node -> cdp_port); every
consumer reads from it instead of hardcoding:
- onboard-driver.py: CDP_PORTS dict -> registry lookup (new nodes work)
- muse-signin.py: hardcoded 9410 -> --node/--cdp-port args
- muse-chat-api.py: hardcoded ACCOUNTS -> registry-built
- agent-health.sh: hardcoded muse/pip blocks -> loop over all active
nodes (646 and opm now get health coverage too)
NODES.md: record opm node (9440).
2026-10-03 21:28:36 +00:00
operator
2006ecd5a2
Add opm (operator-main) to DM system on CDP 9440
2026-10-03 20:50:53 +00:00
operator
a8d456529f
muse-chat-api: add sidechat use/main/list commands
2026-10-03 19:15:50 +00:00
operator
5b9e6e55d7
muse-chat-api.py: remove stale 646 duplicate
2026-10-03 18:52:47 +00:00
operator
e8c6362c3e
muse-chat-api.py: add 646
2026-10-03 18:37:13 +00:00
operator
00772e408c
Fix GOLDEN PATH header (preserve docstring)
2026-10-03 18:06:42 +00:00
operator
ed45611912
Add GOLDEN PATH headers to agent loops
2026-10-03 18:04:57 +00:00
operator
46da437ccc
muse-chat-api.py: approval handling (auto-approve trusted IPs)
2026-10-03 17:20:46 +00:00
operator
235e5309ef
muse-chat-api.py: unified naming, node==agent
2026-10-03 17:18:09 +00:00
operator
7ab615901a
muse-chat-api.py: unified agent naming (muse, pip)
2026-10-03 17:15:53 +00:00
operator
c6ba4cce3d
muse-chat-api.py: multi-account support (--account)
2026-10-03 17:10:44 +00:00
Antigravity Agent
4b92277686
muse-chat-api: add navigate command for thread URLs
2026-10-03 10:21:31 -04:00
Antigravity Agent
b061a53c6d
muse-chat-api.py: CDP chat client (send/messages/wait) for smoke headless
2026-10-03 10:19:22 -04:00