Commit Graph

  • 3dd9d9ffaf docs: DM-over-HTTPS design from operator-646 operator-646 2026-10-04 05:27:55 +00:00
  • 45741f1151 bin/box-chat.py + box-chat-cdp.py — read-only bl helper for Box thread oversight operator-main 2026-10-04 04:31:39 +00:00
  • ef453ccb26 Verify + extend DOM-SETTINGS/SEARCH/NOTIFICATIONS (2026-10-04, 3 nodes) dom-inspector-4 2026-10-04 04:31:11 +00:00
  • 7d0ccba64c docs/DOM-CHAT-PANEL.md — re-verified 2026-10-04 on opm/muse/pip; unread indicator, stripped state, row differences dom-panel-inspector 2026-10-04 04:29:16 +00:00
  • e28b10edc8 DOM inspector 5/5: verify page structure + edge states, regenerate index dom-inspector-5 2026-10-04 04:29:10 +00:00
  • c50667b626 DOM message surface re-verified 2026-10-04 (3 nodes): .group/msg nesting fix, ownership-split menus, More reactions dialog, dividers, virtualization, DM text formats dom-inspector-2 2026-10-04 04:28:21 +00:00
  • bbe1ebb76a docs/DOM-APPROVALS.md — approval/permission dialog DOM surface reference dom-inspector-3 2026-10-04 04:27:16 +00:00
  • 4b9f4889e3 docs/BOX-API-DESIGN-THREADS.md — per-agent thread oversight API contract (draft) operator-main 2026-10-04 04:16:15 +00:00
  • 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) operator-main 2026-10-04 04:03:28 +00:00
  • a9812cd355 Add box-ctl.py: allowlisted bl helper for Box API mutations\n\n- 14 actions: timer-list/status/create/delete/start/stop/enable/disable,\n job-list/get/put/delete/trigger, notify\n- Name regex ^[a-z0-9-]{1,64}$, full job schema validation per design §6\n- Cron→OnCalendar conversion + systemd-analyze verification\n- Fixed unit templates (only validated name interpolated)\n- Git commits on job put/delete; audit log to box-ctl.jsonl\n- No shell=True, no string interpolation into commands\n- Tested: full lifecycle on bl (boxtest job) operator-main 2026-10-04 04:02:19 +00:00
  • fcf9224404 Delete job boxtest via box-ctl box-ctl 2026-10-04 04:01:56 +00:00
  • 7cf80bc918 Add job boxtest via box-ctl box-ctl 2026-10-04 04:01:51 +00:00
  • 61d59de30d Box API design: timer and job endpoints\n\n- 14 endpoints with full schemas, JSON canonical (not YAML)\n- Allowlisted box-ctl.py helper (no raw systemctl over SSH)\n- Auto-confirmed vs agent-confirmed split for [REQ]/[CONFIRM] operator-main 2026-10-04 03:59:01 +00:00
  • 458314cbf6 Box UI design: operator dashboard and management pages\n\n- 7 sections: dashboard, timers, jobs, DMs, board/chat, requests, audit\n- Server-rendered + theme engine (not SPA)\n- Every mutation shows its API equivalent (steering made visible) operator-main 2026-10-04 03:58:36 +00:00
  • ef8e98abf0 Box API design: DM and message endpoints\n\n- POST /api/box/dms, /chat/send, /message, /board/post\n- Bearer token auth with spoof scope, idempotency via deterministic IDs\n- Rate limits mirror rate_limiter.py operator-main 2026-10-04 03:58:30 +00:00
  • 6fcd3bfb4e DOM reference: search functionality\n\n- Quick search dialog structure and data-value encoding\n- chat🧵<uuid> gives ready-made thread lookup\n- Radix gotchas: trusted events only, never touch input via JS operator-main 2026-10-04 03:54:16 +00:00
  • 13d231b86a DOM reference: message actions and thread interactions\n\n- Messages use .group/msg (no testid); action via More options radix menu\n- 6 quick reactions documented; Reply is composer-quote only, no Edit UI\n- Headless quirk: full pointer event sequence needed for radix operator-main 2026-10-04 03:53:52 +00:00
  • 265a76778b DOM reference: settings and profile\n\n- Dock rail structure, radix menu gotchas (synthetic click fails)\n- Settings dialog sections, appearance controls\n- No in-app account switching (profile-level only) operator-main 2026-10-04 03:53:01 +00:00
  • 664b66be93 DOM reference: edge states, loading, and error handling\n\n- S3 PARTIAL_LOAD dissected with timed probes\n- readyState useless; settled-state signature documented\n- False-positive traps for innerText.includes() operator-main 2026-10-04 03:51:05 +00:00
  • e470dfc244 DOM reference: notifications and activity\n\n- No bell icon; toast live region + Activity tab documented\n- Chat nav unread via aria-label flip (match on testid, not label) operator-main 2026-10-04 03:50:57 +00:00
  • a98fcfa64c DOM master index with quick-reference recipes\n\n- 50+ testids deduplicated across all docs\n- 6 copy-pasteable automation recipes\n- Resolves 4 contradictions (Ctrl+J superseded by click-based)\n- Flags 7 gaps for future mapping operator-main 2026-10-04 03:50:49 +00:00
  • 39e9db07b2 DOM reference: page structure, states, and approvals\n\n- 538-line map of 5 page states with detection logic\n- 57 data-testid values inventoried and categorized\n- check_approvals IP filtering documented operator-main 2026-10-04 03:48:33 +00:00
  • 6d737a48f1 DOM reference: messages, input, and chat activation\n\n- 332-line map of composer, send button, message list\n- Author encoding via data-message-id prefix documented\n- hatch-nav-chat as reliable Ctrl+J replacement operator-main 2026-10-04 03:48:18 +00:00
  • 0511e88b60 DOM reference: chat panel and sidechat structure\n\n- 367-line map of switcher, compose button, panel shell\n- 24 data-testid inventory with states and detection signals\n- Documents toggle behavior and false-positive traps operator-main 2026-10-04 03:47:00 +00:00
  • 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 operator-main 2026-10-04 03:46:47 +00:00
  • 7d48123835 Heartbeat to sidechat with reuse\n\n- Dispatcher: reuse existing sidechat by name (not create new each time)\n- Heartbeat job: sidechat.create=true, name_template=heartbeat (fixed) operator-main 2026-10-04 03:40:25 +00:00
  • dbc6ac6f3b DM_SPEC: converge operator reply into sections 4-6 operator-main 2026-10-04 03:39:49 +00:00
  • 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. operator-main 2026-10-04 03:38:46 +00:00
  • 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. operator-main 2026-10-04 03:38:22 +00:00
  • 8ff4dd0e30 cmd_sidechat_create: check + first, open panel only if needed\n\nAvoids unnecessary switcher click when panel already open. operator-main 2026-10-04 03:37:32 +00:00
  • 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 operator-main 2026-10-04 03:37:01 +00:00
  • 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) operator-main 2026-10-04 03:36:06 +00:00
  • 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 operator-main 2026-10-04 03:29:21 +00:00
  • 5feca52602 cmd_sidechat_create: remove Ctrl+J toggle\n\nPanel is always open; Ctrl+J toggle was closing it.\nJust find the + button directly. operator-main 2026-10-04 03:26:17 +00:00
  • 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. operator-main 2026-10-04 03:25:37 +00:00
  • b46afcbaea refine-system: back to automated sidechat create\n\nDispatcher now nails the create via direct send. operator-main 2026-10-04 03:23:41 +00:00
  • 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 operator-main 2026-10-04 03:23:34 +00:00
  • b0d6bb3ad8 refine-system job: agent creates sidechat (not dispatcher)\n\nPragmatic pattern: DM instructs agent to create sidechat via UI.\nAvoids flaky browser automation for sidechat creation. operator-main 2026-10-04 03:21:54 +00:00
  • 4524907663 sidechat_manager: Use data-testid for sidebar button\n\nReliable selector hatch-chat-switcher-trigger instead of\nflaky text matching. operator-main 2026-10-04 03:20:42 +00:00
  • 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 operator-main 2026-10-04 03:19:48 +00:00
  • 7a6e54fed2 sidechat_manager: Fix CDP id mismatch\n\n_e() used id=100, muse-chat-api.py ev() uses id=1.\nOn shared websocket, responses mismatched. operator-main 2026-10-04 03:16:10 +00:00
  • 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. operator-main 2026-10-04 03:15:07 +00:00
  • 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. operator-main 2026-10-04 03:13:07 +00:00
  • 942f37e21c job-dispatch.py: Send job DM to sidechat directly\n\nWhen sidechat.create=true, the job DM now goes to the sidechat\nitself (via thread ID), not to main chat. Keeps main clean;\nthe sidechat IS the workspace. operator-main 2026-10-04 03:11:11 +00:00
  • 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. operator-main 2026-10-04 03:10:52 +00:00
  • 2b76863520 Add refine-system job: sidechat for infrastructure refinement\n\nSpawns sidechat for opm to review and improve the JOB/DM system. operator-main 2026-10-04 03:09:48 +00:00
  • 35bd358b78 job-dispatch.py: Add sidechat creation support\n\nWhen job has sidechat.create=true, creates sidechat via\nmuse-chat-api.py in sender context, includes URL in DM. operator-main 2026-10-04 03:09:42 +00:00
  • 0929a44736 Add heartbeat job: 5-min DM health check\n\nSystemd timer job-heartbeat.timer runs every 5 minutes,\ndispatches heartbeat DM to opm via job-dispatch.py. operator-main 2026-10-04 03:07:41 +00:00
  • 78dbf8f131 Add job-dispatch.py: JOB system dispatcher\n\nReads job JSON, renders prompt template, sends DM via dm.py,\nlogs to job-log.jsonl. Tested end-to-end: canary-test job\ndispatched successfully (DM 36bd80aa SENT and VERIFIED). operator-main 2026-10-04 03:06:46 +00:00
  • 6f1ed27a0d BOX-API-SPEC: Add board and chatroom API appendix\n\nAppendix C: Unified message API for populating boards and chatrooms.\nCovers board post/get, chatroom send/list, and unified /message endpoint\nwith target routing (board:#, chat:, dm:). operator-main 2026-10-04 03:02:06 +00:00
  • 706fe057a6 BOX-API-SPEC: Add confirmation system spec\n\nAPI requests result in DMs; DMs require explicit confirmations.\nCovers: [REQ id] -> [CONFIRM id] flow, pending request tracking,\nsweeper for timeouts, when to require confirmation. operator-main 2026-10-04 03:00:36 +00:00
  • ac6d7bf2d3 BOX-API-SPEC: Add UI/API design principle\n\nUI surfaces allow agent creativity but clearly steer toward API.\nThe UI teaches, the API is the source of truth. operator-main 2026-10-04 03:00:03 +00:00
  • e7aae05dbd BOX-API-SPEC: Add rich scheduling and DM metadata appendices\n\nAppendix A: Rich Linux scheduling (systemd, cron, at) with unified API.\nAppendix B: DM + metadata JSON (wire format, types, API endpoints). operator-main 2026-10-04 02:59:40 +00:00
  • b1247c530b Add BOX-API-SPEC.md: agentic timer management interface\n\nSpec for box.muse-dev.online API to manage systemd timers on bl.\nCovers: endpoints (list/create/start/stop/delete), auth (ops bearer),\nbackend (SSH to bl), rate limiting, web UI. operator-main 2026-10-04 02:57:55 +00:00
  • 372e9612db Add JOB-SPEC.md: hosted job scheduler and distributor\n\nSpec for cron-driven job system that injects prompts via DM.\nCovers: job YAML format, scheduler (systemd timers), dispatcher,\nagent handler convention, collector, sidechat integration,\nlogging, rate limiting. operator-main 2026-10-04 02:55:51 +00:00
  • 70b82f5a8b Add sidechat_manager.py: robust sidebar operations with retry and logging\n\n- ensure_sidebar() with exponential backoff (2s, 4s, 6s)\n- list_sidechats() with heuristic parsing\n- log_sidechat_op() for audit trail to sidechat-log.jsonl\nAddresses flaky NOSIDEBAR errors from hardcoded sleeps. operator-main 2026-10-04 02:49:38 +00:00
  • 89b9fdb9f8 Add DM-SPEC.md (work orders + server-side logging spec)\n\nCopied from frontdoor repo per 646 request. Spec covers:\n- Work orders as first-class DM kind\n- Server-level DM logging (append-only)\n- Box visibility via DMs tab operator-main 2026-10-04 02:42:23 +00:00
  • 7c591c73bc Add shared rate_limiter.py module\n\nModular rate limiter any .py script can use:\n from rate_limiter import rate_limit_wait\n rate_limit_wait(agent)\n\nToken bucket per agent: 1 op/3s sustained, burst 5, max 20/min.\nState in /tmp/netvm-rate-limit.json. operator-main 2026-10-04 02:40:56 +00:00
  • 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. operator-main 2026-10-04 02:32:38 +00:00
  • d82bf58e78 DM: signed-DM pipeline (dm-sign.sh) + attribution unification + honest docs operator-main 2026-10-04 02:31:37 +00:00
  • 6189793748 agent-health.sh: Verify CDP port liveness, not just API success\n\nThe watchdog only checked if the API responded, missing zombie\nbrowsers (process alive but CDP not listening). Now explicitly\nchecks via ss -tln in the netns before trying the API.\nAlso: kill by exact PIDs instead of unreliable pkill patterns,\nand warn if port still bound after kill. operator-main 2026-10-04 02:23:20 +00:00
  • 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. operator-main 2026-10-04 02:11:41 +00:00
  • 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. operator-main 2026-10-04 02:04:19 +00:00
  • 062e46a6f8 chat-state tap: per-node main+sidechat reporter for box operator-main 2026-10-04 01:59:00 +00:00
  • 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. operator-main 2026-10-04 01:58:41 +00:00
  • 77d904d344 dm.py: Fix dm_thread to pass to_agent correctly\n\nWas calling dm_send(to_agent, target, attributed) which set the\nsender to the recipient and omitted the to_agent param. Now calls\ndm_send(from_agent, target, attributed, to_agent=to_agent). operator-main 2026-10-04 01:29:26 +00:00
  • d3c19425e8 muse-chat-api.py upload: verify via Remove-attachment button operator-main 2026-10-04 01:28:47 +00:00
  • c759ca353f muse-chat-api.py upload: ev1() skips CDP chatter on verify operator-main 2026-10-04 01:28:19 +00:00
  • 716b31a7e6 muse-chat-api.py upload: verify chip by own-text (React swaps the input) operator-main 2026-10-04 01:27:55 +00:00
  • 1c386ca6bb muse-chat-api.py: cdp_call skips CDP event chatter operator-main 2026-10-04 01:25:44 +00:00
  • 566edf20c6 muse-chat-api.py upload: --dry-run/--message as real argparse flags operator-main 2026-10-04 01:25:10 +00:00
  • b5f718a885 muse-chat-api.py: upload subcommand (CDP file attach) operator-main 2026-10-04 01:23:22 +00:00
  • f19aff9b79 Fix supervisor SIGKILL loop killing restarted browsers (opm/pip) operator-main 2026-10-04 01:10:45 +00:00
  • 3a1f0107ba Add holdings logging to muse-auth.py (log_holdings/get_holdings, logs/auth-holdings.log) operator 2026-10-03 22:32:54 +00:00
  • 08f05263e6 dm.py: Add UUID, logging, and read-back verification. No trust required. operator 2026-10-03 21:36:42 +00:00
  • 027d7baa30 multi-account selection: --account-name hint, exit 3 NEEDS_HUMAN operator 2026-10-03 21:30:32 +00:00
  • a7639e2341 propagation: single registry drives all node references operator 2026-10-03 21:28:36 +00:00
  • 1191cbd86e Add muse-auth.py: login state detection, sign-in vs sign-up notes operator 2026-10-03 21:06:22 +00:00
  • 02cf10acc8 bulk onboarding step 1: netvm-provision-node.sh + CDP_PORT_OVERRIDE operator 2026-10-03 20:54:56 +00:00
  • 2006ecd5a2 Add opm (operator-main) to DM system on CDP 9440 operator 2026-10-03 20:50:53 +00:00
  • 9d6805060e Remove wrongly-specced opp-dm.py and dev-dm.py; dm.py is the headless DM tool operator 2026-10-03 20:34:33 +00:00
  • 7272ccfeea opp-dm.py: fix to work from bl or container, verify writes operator 2026-10-03 20:28:18 +00:00
  • 3ad28cb679 opp-dm.py and dev-dm.py: separate operator vs developer DM systems operator 2026-10-03 20:25:21 +00:00
  • e934a31778 dm-listener: auto-route 646 Message commands operator 2026-10-03 20:00:43 +00:00
  • 9fde2232fd dm.py: Headless DM function class, separate from Chat operator 2026-10-03 19:48:09 +00:00
  • fced2e79a4 thread-listener: auto-execute 646 THREAD commands operator 2026-10-03 19:43:40 +00:00
  • 169b7d1f35 p2p-relay: add watermark to prevent duplicates operator 2026-10-03 19:25:42 +00:00
  • 828f67ffc8 p2p-relay: 646 to muse via headless operator 2026-10-03 19:21:04 +00:00
  • 667755e312 meta-acct: Accounts Center read API (list-linked, security-status, login-activity)\n\nImplements the read ops from META-ACCOUNTS-API.md via the agent browser\nsession. Key finding: phone-OTP login leaves a full Meta session -\naccountscenter.meta.com loads without redirect.\n\nAlso: 646 node fully registered (warp-646, CDP 9430, active). operator 2026-10-03 19:20:47 +00:00
  • 1b3faf0126 bridge: add P2P 646-muse channels operator 2026-10-03 19:19:30 +00:00
  • 75368424c2 bridge: add 646-reports to #ops operator 2026-10-03 19:17:39 +00:00
  • a8d456529f muse-chat-api: add sidechat use/main/list commands operator 2026-10-03 19:15:50 +00:00
  • 23bf83a09f bridge: add 646 test mapping for #ops operator 2026-10-03 19:02:21 +00:00
  • abd4497bd6 bridge: clean test mapping operator 2026-10-03 18:59:59 +00:00
  • 63b62b5f0c bridge.py: front-door to muse.ai metadata bridge CLI operator 2026-10-03 18:59:52 +00:00
  • a5a821f3b1 BRIDGE_SPEC.md: front-door to muse.ai metadata bridge v0.1 operator 2026-10-03 18:58:25 +00:00
  • 5b9e6e55d7 muse-chat-api.py: remove stale 646 duplicate operator 2026-10-03 18:52:47 +00:00
  • e8c6362c3e muse-chat-api.py: add 646 operator 2026-10-03 18:37:13 +00:00
  • f11da73efe SIDECHAT_SPEC.md: side chat data model v0.1 operator 2026-10-03 18:18:56 +00:00
  • 00772e408c Fix GOLDEN PATH header (preserve docstring) operator 2026-10-03 18:06:42 +00:00