@ai-matrx/desktop-protocol 0.21.62 → 0.21.65
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +29 -3
- package/dist/{chunk-server-EQCCXWD7.js → chunk-server-K7IQDLLV.js} +99 -7
- package/dist/chunk-server-K7IQDLLV.js.map +1 -0
- package/dist/client.cjs +63 -6
- package/dist/client.cjs.map +1 -1
- package/dist/client.d.cts +2 -2
- package/dist/client.d.ts +2 -2
- package/dist/client.js +1 -1
- package/dist/index.cjs +99 -7
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +151 -6
- package/dist/index.d.ts +151 -6
- package/dist/index.js +18 -2
- package/dist/index.js.map +1 -1
- package/dist/{models-yHB4kGxD.d.cts → models-Bz990hcd.d.cts} +193 -1
- package/dist/{models-yHB4kGxD.d.ts → models-Bz990hcd.d.ts} +193 -1
- package/dist/react.d.cts +92 -0
- package/dist/react.d.ts +92 -0
- package/generated/desktop-protocol.schema.json +366 -1
- package/package.json +2 -2
- package/dist/chunk-server-EQCCXWD7.js.map +0 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/contract.ts","../src/tools/catalog.ts","../src/tools/status.ts","../src/tools/policy.ts"],"sourcesContent":["// AUTO-GENERATED by scripts/generate.ts — DO NOT EDIT. `pnpm generate --check` fails on any hand edit.\n/** SHA-256 of generated/desktop-protocol.schema.json: the contract both sides of a service connection were built from. */\nexport const CONTRACT_SHA256 = \"c161897b36fd5da0d5892a08466479f4fa495fc79a9efc2956f32e0cd6e461b6\" as const;\n","/**\n * The local tool catalog (SPEC §10): every tool a platform agent calls on a person's computer, the\n * protocol ops it reaches, the group it ships in, and what became of each of matrx-local's 139\n * handlers (120 actions + the 19 action-enum dispatchers that fanned out to them).\n *\n * Data only. The status table (./status.ts) joins it with the harnesses' results, so a tool listed\n * here with no passing result reads \"untested\", never \"working\". Design and the reasons behind each\n * group: matrx-desktop/design/local-tools.md.\n */\nimport type { OpName } from \"../schema/registry\";\nimport type { ToolPlatform } from \"../schema/tools\";\n\nexport type ToolGroupId = \"files_shell\" | \"os_control\" | \"personal_automation\" | \"tools_service\" | \"ml_service\" | \"windows_admin\";\n\nexport interface ToolGroup {\n readonly id: ToolGroupId;\n readonly order: number;\n readonly title: string;\n /** Who implements the ops: a TS capability owner in the core, or a Python service. */\n readonly owner: \"core\" | \"python_tools\" | \"python_ml\";\n}\n\nexport const TOOL_GROUPS: readonly ToolGroup[] = [\n { id: \"files_shell\", order: 1, title: \"Files and shell\", owner: \"core\" },\n { id: \"os_control\", order: 2, title: \"Computer control\", owner: \"core\" },\n { id: \"personal_automation\", order: 3, title: \"Personal apps and automation\", owner: \"core\" },\n { id: \"tools_service\", order: 4, title: \"Web, documents, OCR and entities\", owner: \"python_tools\" },\n { id: \"ml_service\", order: 5, title: \"Speech\", owner: \"python_ml\" },\n { id: \"windows_admin\", order: 6, title: \"Windows administration\", owner: \"core\" },\n];\n\n/**\n * How an agent's call reaches the device. Both end at the relay's `POST /v1/devices/{id}/call`:\n * - `sandbox_proxy`: the cloud-sandbox-shaped tools (fs_*, shell_*). matrx-ai's `_sandbox_proxy`\n * calls aidream `/api/local-proxy/{device}/{fs|search|exec}/…`, which maps the route to its op.\n * Agent code never knows a laptop from a cloud box (SPEC §6.1).\n * - `device_op`: desktop-only capabilities. One generic route, `/api/local-proxy/{device}/op/{cap.op}`,\n * params and result exactly the op's schema; the tool definition is generated from that schema.\n * - `server`: runs on the aidream server even when the turn is bound to a device (a defect when\n * the tool reads a local path; see `note`).\n */\nexport type ToolPath = \"sandbox_proxy\" | \"device_op\" | \"server\";\n\n/** `built`: the ops exist in the protocol and Matrx 2's core serves them (registered on the platform for agents with the server tool); `planned`: designed, not built; `broken`: registered but wrong on a device. */\nexport type ToolState = \"built\" | \"planned\" | \"broken\";\n\nexport interface CatalogTool {\n /** The platform registry name (`tool.definition.name`). */\n readonly name: string;\n readonly group: ToolGroupId;\n readonly state: ToolState;\n readonly path: ToolPath;\n /** Ops the tool sends. For `built` tools every one is in OPS (a test enforces it). */\n readonly ops: readonly string[];\n readonly platforms: readonly ToolPlatform[];\n /** One line for the status table. */\n readonly summary: string;\n /** Required for `broken`: what is wrong. */\n readonly note?: string;\n}\n\nconst ALL: readonly ToolPlatform[] = [\"darwin\", \"win32\", \"linux\"];\n\nexport const TOOL_CATALOG: readonly CatalogTool[] = [\n // ── 1. Files and shell (core `fs`, `exec`; the cloud sandbox's agent tools) ──────────────────\n { name: \"fs_read\", group: \"files_shell\", state: \"built\", path: \"sandbox_proxy\", ops: [\"fs.read\"], platforms: ALL, summary: \"Read a file, paged\" },\n { name: \"fs_write\", group: \"files_shell\", state: \"built\", path: \"sandbox_proxy\", ops: [\"fs.read\", \"fs.write\"], platforms: ALL, summary: \"Create or overwrite a file\" },\n { name: \"fs_edit\", group: \"files_shell\", state: \"built\", path: \"sandbox_proxy\", ops: [\"fs.read\", \"fs.patch\"], platforms: ALL, summary: \"Replace one exact string\" },\n { name: \"fs_patch\", group: \"files_shell\", state: \"built\", path: \"sandbox_proxy\", ops: [\"fs.read\", \"fs.patch\"], platforms: ALL, summary: \"Apply several exact edits at once\" },\n { name: \"fs_list\", group: \"files_shell\", state: \"built\", path: \"sandbox_proxy\", ops: [\"fs.list\"], platforms: ALL, summary: \"List a folder\" },\n { name: \"fs_mkdir\", group: \"files_shell\", state: \"built\", path: \"sandbox_proxy\", ops: [\"fs.mkdir\"], platforms: ALL, summary: \"Create a folder\" },\n { name: \"fs_search\", group: \"files_shell\", state: \"built\", path: \"sandbox_proxy\", ops: [\"fs.search_paths\", \"fs.search_content\"], platforms: ALL, summary: \"Find files by name or content\" },\n { name: \"shell_execute\", group: \"files_shell\", state: \"built\", path: \"sandbox_proxy\", ops: [\"exec.run\"], platforms: ALL, summary: \"Run a command; cd carries over\" },\n { name: \"shell_python\", group: \"files_shell\", state: \"built\", path: \"sandbox_proxy\", ops: [\"exec.run\"], platforms: ALL, summary: \"Run a Python script\" },\n { name: \"desktop_git\", group: \"files_shell\", state: \"built\", path: \"device_op\", ops: [\"git.status\", \"git.diff\", \"git.log\", \"git.add\", \"git.commit\", \"git.push\", \"git.pull\", \"git.branch\", \"git.stash\", \"git.clone\"], platforms: ALL, summary: \"Git: status, diff, log, commit, branches, push and pull\" },\n { name: \"shell_job\", group: \"files_shell\", state: \"built\", path: \"device_op\", ops: [\"exec.job.start\", \"exec.job.output\", \"exec.job.stop\", \"exec.job.list\"], platforms: ALL, summary: \"Background commands: start, read output, stop\" },\n\n // ── 2. Computer control (TS owners) ──────────────────────────────────────────────────────────\n { name: \"desktop_process\", group: \"os_control\", state: \"built\", path: \"device_op\", ops: [\"proc.list\", \"proc.ports\", \"proc.kill\"], platforms: ALL, summary: \"Running processes and ports; stop one\" },\n { name: \"desktop_apps\", group: \"os_control\", state: \"built\", path: \"device_op\", ops: [\"apps.list\", \"apps.open\"], platforms: ALL, summary: \"Installed apps; open or bring one forward\" },\n { name: \"desktop_system\", group: \"os_control\", state: \"built\", path: \"device_op\", ops: [\"sysinfo.get\", \"sysinfo.hardware\", \"system.open_url\", \"system.open_path\", \"system.open_settings\", \"system.notify\"], platforms: ALL, summary: \"System facts, open, notify\" },\n { name: \"desktop_clipboard\", group: \"os_control\", state: \"built\", path: \"device_op\", ops: [\"clipboard.read\", \"clipboard.write\"], platforms: ALL, summary: \"Read and write the clipboard's text\" },\n { name: \"desktop_screen\", group: \"os_control\", state: \"built\", path: \"device_op\", ops: [\"screen.list\", \"screen.capture\"], platforms: ALL, summary: \"Displays and screenshots\" },\n { name: \"desktop_browser\", group: \"os_control\", state: \"built\", path: \"device_op\", ops: [\"browser.sessions\", \"browser.call\"], platforms: ALL, summary: \"The person's own browser through the AI Matrx extension: tabs, read, screenshot, navigate, click, type\" },\n { name: \"desktop_window\", group: \"os_control\", state: \"built\", path: \"device_op\", ops: [\"window.list\", \"window.focus\", \"window.move\", \"window.minimize\"], platforms: ALL, summary: \"Find, focus and arrange windows\" },\n { name: \"desktop_input\", group: \"os_control\", state: \"built\", path: \"device_op\", ops: [\"input.type_text\", \"input.hotkey\", \"input.mouse_click\", \"input.mouse_move\", \"input.keyboard_settings\", \"input.set_keyboard_settings\"], platforms: ALL, summary: \"Keyboard and mouse\" },\n { name: \"desktop_audio\", group: \"os_control\", state: \"built\", path: \"device_op\", ops: [\"audio.devices\", \"audio.levels\", \"audio.set_levels\", \"audio.record\", \"audio.play\"], platforms: ALL, summary: \"Audio devices, record, play\" },\n { name: \"desktop_power\", group: \"os_control\", state: \"built\", path: \"device_op\", ops: [\"power.status\", \"power.history\", \"power.prevent_sleep\"], platforms: ALL, summary: \"Battery and keep awake\" },\n { name: \"desktop_resources\", group: \"os_control\", state: \"built\", path: \"device_op\", ops: [\"resources.snapshot\", \"resources.activity\", \"resources.stop_job\", \"resources.incidents\"], platforms: ALL, summary: \"CPU, memory and disk use; what is using them, grouped into jobs; stop a job; the slowdown log\" },\n { name: \"fs_watch\", group: \"os_control\", state: \"built\", path: \"device_op\", ops: [\"fs.watch.start\", \"fs.watch.events\", \"fs.watch.stop\"], platforms: ALL, summary: \"Watch a folder; read what changed\" },\n\n // ── 3. Personal apps and automation (1.37: the core's `automation`, `personal`, `net` and `schedule` owners) ──\n { name: \"desktop_automation\", group: \"personal_automation\", state: \"built\", path: \"device_op\", ops: [\"automation.script\"], platforms: [\"darwin\", \"win32\"], summary: \"AppleScript or JavaScript for Automation on a Mac, PowerShell on Windows\" },\n { name: \"desktop_mail\", group: \"personal_automation\", state: \"built\", path: \"device_op\", ops: [\"mail.accounts\", \"mail.list\", \"mail.send\"], platforms: [\"darwin\"], summary: \"The Mail app: accounts, messages, send\" },\n { name: \"desktop_outlook\", group: \"personal_automation\", state: \"built\", path: \"device_op\", ops: [\"outlook.status\", \"outlook.draft\", \"outlook.list\", \"outlook.read\"], platforms: [\"win32\"], summary: \"The person's own Outlook: drafts with attachments, recent mail, one message\" },\n { name: \"desktop_messages\", group: \"personal_automation\", state: \"built\", path: \"device_op\", ops: [\"messages.chats\", \"messages.list\", \"messages.send\"], platforms: [\"darwin\"], summary: \"The Messages app: chats, messages, send\" },\n { name: \"desktop_contacts\", group: \"personal_automation\", state: \"built\", path: \"device_op\", ops: [\"contacts.search\", \"contacts.get\"], platforms: [\"darwin\"], summary: \"Contacts: search, one card\" },\n { name: \"desktop_calendar\", group: \"personal_automation\", state: \"built\", path: \"device_op\", ops: [\"calendar.list\", \"calendar.create\", \"reminders.list\", \"reminders.create\"], platforms: [\"darwin\"], summary: \"Calendar and Reminders: list and add\" },\n { name: \"desktop_photos\", group: \"personal_automation\", state: \"built\", path: \"device_op\", ops: [\"photos.search\", \"photos.get\"], platforms: [\"darwin\"], summary: \"The Photos library: find, export an original\" },\n // Windows comes back once a Windows location fix is proven (plan attack retire-local 2026-10-12, B6):\n // until then local_mac_apps (macOS-only) is judged on macOS and nothing claims Windows.\n { name: \"desktop_location\", group: \"personal_automation\", state: \"built\", path: \"device_op\", ops: [\"location.get\"], platforms: [\"darwin\"], summary: \"Where the computer is (the OS's location service)\" },\n { name: \"desktop_net\", group: \"personal_automation\", state: \"built\", path: \"device_op\", ops: [\"net.info\", \"net.wifi\", \"net.bluetooth\", \"net.devices\", \"net.mdns\", \"net.scan\", \"net.download\"], platforms: ALL, summary: \"Local network, Wi-Fi, Bluetooth, open ports and downloads\" },\n { name: \"desktop_schedule\", group: \"personal_automation\", state: \"built\", path: \"device_op\", ops: [\"schedule.create\", \"schedule.list\", \"schedule.cancel\"], platforms: ALL, summary: \"Run a tool's op on this computer on an interval; list and cancel\" },\n // 1.38, code from anywhere: the person's Claude Code and Codex sessions on this computer. Turning\n // either off in Agents › Tools refuses its ops on every relay connection (the existing switch).\n { name: \"coding_sessions_read\", group: \"personal_automation\", state: \"built\", path: \"device_op\", ops: [\"coding.providers\", \"coding.sessions.list\", \"coding.discover\", \"coding.runs.list\", \"coding.history\", \"coding.transcript.read\", \"coding.item.full\", \"coding.activity\", \"coding.folders.recent\", \"coding.folders.check\", \"coding.agents.access\", \"coding.titles.status\", \"coding.prefs.list\", \"coding.recent.seen\", \"coding.search\", \"coding.transcript.raw\", \"coding.watch\", \"coding.session.watch\"], platforms: ALL, summary: \"Claude Code and Codex sessions: list, read live, search, download\" },\n { name: \"coding_sessions_drive\", group: \"personal_automation\", state: \"built\", path: \"device_op\", ops: [\"coding.start\", \"coding.takeover\", \"coding.send\", \"coding.stop\", \"coding.stop_elsewhere\", \"coding.options.set\", \"coding.account.continue\", \"coding.agent.set\", \"coding.folders.create\", \"coding.prefs.set\", \"coding.reconcile\"], platforms: ALL, summary: \"Claude Code and Codex sessions: start, send, stop, take over, rename\" },\n\n // ── 4. Documents, notes and entities (1.37: the core's `documents` and `notes` owners; desktop_web is the `tools` service) ──\n { name: \"desktop_documents\", group: \"tools_service\", state: \"built\", path: \"device_op\", ops: [\"documents.pdf_text\", \"documents.ocr\", \"documents.image_resize\", \"documents.office_generate\"], platforms: ALL, summary: \"PDF text, OCR, images, Word and Excel files\" },\n { name: \"desktop_web\", group: \"tools_service\", state: \"built\", path: \"device_op\", ops: [\"web.fetch\", \"web.scrape\", \"web.search\", \"web.fetch_with_browser\"], platforms: ALL, summary: \"Fetch, scrape and search the web from this computer's own connection\" },\n { name: \"desktop_entities\", group: \"tools_service\", state: \"built\", path: \"device_op\", ops: [\"entities.ner\", \"entities.pii\"], platforms: ALL, summary: \"Names, places, organizations and private data, found on the device\" },\n { name: \"desktop_notes\", group: \"files_shell\", state: \"built\", path: \"device_op\", ops: [\"notes.folders\", \"notes.list\", \"notes.read\", \"notes.write\", \"notes.search\"], platforms: ALL, summary: \"The person's local notes (Documents/Matrx/Notes): list, read, write, search\" },\n\n // ── 5. Python `ml` service ───────────────────────────────────────────────────────────────────\n // Built: models.transcribe through local_proxy's POST /op/{cap.op} (matrx-ai implementations/desktop.py).\n // Whisper detects the language itself, so matrx-local's speech_locales needs no op of its own.\n { name: \"desktop_transcribe\", group: \"ml_service\", state: \"built\", path: \"device_op\", ops: [\"models.transcribe\"], platforms: ALL, summary: \"Speech to text on the device\" },\n\n // ── 6. Windows administration ────────────────────────────────────────────────────────────────\n { name: \"desktop_windows_admin\", group: \"windows_admin\", state: \"built\", path: \"device_op\", ops: [\"windows.registry_read\", \"windows.registry_write\", \"windows.services\", \"windows.service_control\", \"windows.event_log\", \"windows.features\"], platforms: [\"win32\"], summary: \"Registry, services, event log, optional features\" },\n];\n\n/**\n * Tools armed with a device binding that are deliberately NOT device tools, each with its reason.\n * They run on the server; the status table does not track them.\n */\nexport const EXCLUDED_TOOLS: Readonly<Record<string, string>> = {\n git_ingest:\n \"Runs on the server: it ingests repository URLs. A local path on a bound computer or sandbox is refused with the fs_* and shell remedy, since the server cannot see it\",\n};\n\n/** What became of one matrx-local handler. */\nexport type LegacyDisposition =\n | { readonly kind: \"tool\"; readonly tool: string }\n | { readonly kind: \"dropped\"; readonly reason: string };\n\nconst tool = (name: string): LegacyDisposition => ({ kind: \"tool\", tool: name });\nconst dropped = (reason: string): LegacyDisposition => ({ kind: \"dropped\", reason });\n\nconst SHELL_COVERS = \"Done with shell_execute (mv, cp, rm, tar), as every coding agent does\";\nconst CLOUD_SCRAPER = \"The cloud scraper and research tools run with this computer as their network (the `proxy` capability)\";\n\n/** matrx-local's 120 actions (`app/tools/actions.py` ACTION_GROUPS), keyed `<mega tool>.<action>`. */\nexport const LEGACY_ACTIONS: Readonly<Record<string, LegacyDisposition>> = {\n \"local_file.read\": tool(\"fs_read\"),\n \"local_file.write\": tool(\"fs_write\"),\n \"local_file.edit\": tool(\"fs_edit\"),\n \"local_file.move\": dropped(SHELL_COVERS),\n \"local_file.copy\": dropped(SHELL_COVERS),\n \"local_file.delete\": dropped(SHELL_COVERS),\n \"local_file.rename\": dropped(SHELL_COVERS),\n \"local_file.mkdir\": tool(\"fs_mkdir\"),\n \"local_file.glob\": tool(\"fs_search\"),\n \"local_file.grep\": tool(\"fs_search\"),\n \"local_file.list\": tool(\"fs_list\"),\n \"local_file.places\": dropped(\"The device's home and folders reach the agent in its binding briefing (sysinfo.get)\"),\n \"local_file.find\": tool(\"fs_search\"),\n \"local_file.semantic_find\": dropped(\"Needs a local embedding index; returns with file sync's index, not before\"),\n\n \"local_shell.run\": tool(\"shell_execute\"),\n \"local_shell.output\": tool(\"shell_job\"),\n \"local_shell.stop\": tool(\"shell_job\"),\n\n \"local_window.list\": tool(\"desktop_window\"),\n \"local_window.focus\": tool(\"desktop_window\"),\n \"local_window.move\": tool(\"desktop_window\"),\n \"local_window.minimize\": tool(\"desktop_window\"),\n\n \"local_process.list\": tool(\"desktop_process\"),\n \"local_process.ports\": tool(\"desktop_process\"),\n \"local_process.launch_app\": tool(\"desktop_apps\"),\n \"local_process.kill\": tool(\"desktop_process\"),\n \"local_process.focus_app\": tool(\"desktop_apps\"),\n \"local_process.terminals\": dropped(\"Matrx 2 terminals are exec sessions; the person's own terminal windows are not the agent's\"),\n \"local_process.tail_terminal\": dropped(\"Matrx 2 terminals are exec sessions; the person's own terminal windows are not the agent's\"),\n \"local_process.installed_apps\": tool(\"desktop_apps\"),\n\n \"local_input.type_text\": tool(\"desktop_input\"),\n \"local_input.hotkey\": tool(\"desktop_input\"),\n \"local_input.mouse_click\": tool(\"desktop_input\"),\n \"local_input.mouse_move\": tool(\"desktop_input\"),\n\n \"local_audio.devices\": tool(\"desktop_audio\"),\n \"local_audio.record\": tool(\"desktop_audio\"),\n \"local_audio.play\": tool(\"desktop_audio\"),\n \"local_audio.transcribe\": tool(\"desktop_transcribe\"),\n \"local_audio.transcribe_with_speech\": tool(\"desktop_transcribe\"),\n \"local_audio.speech_locales\": tool(\"desktop_transcribe\"),\n\n \"local_clipboard.read\": tool(\"desktop_clipboard\"),\n \"local_clipboard.write\": tool(\"desktop_clipboard\"),\n\n \"local_screen.screenshot\": tool(\"desktop_screen\"),\n \"local_screen.list\": tool(\"desktop_screen\"),\n \"local_screen.capture_book\": dropped(\"A one-off loop of screenshot plus page turn; the agent composes it from desktop_screen and desktop_input\"),\n\n \"local_system.info\": tool(\"desktop_system\"),\n \"local_system.open_url\": tool(\"desktop_system\"),\n \"local_system.open_path\": tool(\"desktop_system\"),\n \"local_system.notify\": tool(\"desktop_system\"),\n\n // The person's own browser is the AI Matrx extension paired with Matrx 2 (cap browser).\n \"local_browser.navigate\": tool(\"desktop_browser\"),\n \"local_browser.click\": tool(\"desktop_browser\"),\n \"local_browser.type_text\": tool(\"desktop_browser\"),\n \"local_browser.extract\": tool(\"desktop_browser\"),\n \"local_browser.screenshot\": tool(\"desktop_browser\"),\n \"local_browser.eval\": dropped(\"The extension runs no page script for Matrx 2: its script and cdp tools are privileged and refused over the desktop path; read, click and type cover what eval was used for\"),\n \"local_browser.tabs\": tool(\"desktop_browser\"),\n \"local_browser.close\": tool(\"desktop_browser\"),\n\n \"local_web.fetch\": tool(\"desktop_web\"),\n \"local_web.fetch_with_browser\": tool(\"desktop_web\"),\n \"local_web.scrape\": tool(\"desktop_web\"),\n \"local_web.search\": tool(\"desktop_web\"),\n \"local_web.research\": dropped(CLOUD_SCRAPER),\n \"local_web.download\": tool(\"desktop_net\"),\n \"local_web.upload\": dropped(\"Uploads are cloud files (matrx-files) and file sync, one upload path\"),\n\n \"local_net.info\": tool(\"desktop_net\"),\n \"local_net.scan\": tool(\"desktop_net\"),\n \"local_net.port_scan\": tool(\"desktop_net\"),\n \"local_net.mdns_discover\": tool(\"desktop_net\"),\n \"local_net.wifi_networks\": tool(\"desktop_net\"),\n \"local_net.bluetooth_devices\": tool(\"desktop_net\"),\n \"local_net.connected_devices\": tool(\"desktop_net\"),\n\n \"local_monitor.resources\": tool(\"desktop_resources\"),\n \"local_monitor.battery\": tool(\"desktop_power\"),\n \"local_monitor.disk_usage\": tool(\"desktop_resources\"),\n \"local_monitor.top_processes\": tool(\"desktop_process\"),\n \"local_monitor.watch_directory\": tool(\"fs_watch\"),\n \"local_monitor.watch_events\": tool(\"fs_watch\"),\n \"local_monitor.stop_watch\": tool(\"fs_watch\"),\n \"local_monitor.heartbeat\": dropped(\"The relay's device status replaces the heartbeat\"),\n\n // Matrx Local's scheduler ran one of its tools on an interval; desktop_schedule runs an op so.\n \"local_schedule.create\": tool(\"desktop_schedule\"),\n \"local_schedule.list\": tool(\"desktop_schedule\"),\n \"local_schedule.cancel\": tool(\"desktop_schedule\"),\n \"local_schedule.prevent_sleep\": tool(\"desktop_power\"),\n\n // Matrx Local's documents are the Markdown notes in Documents/Matrx/Notes; desktop_notes reads and writes them.\n \"local_documents.list\": tool(\"desktop_notes\"),\n \"local_documents.folders\": tool(\"desktop_notes\"),\n \"local_documents.read\": tool(\"desktop_notes\"),\n \"local_documents.write\": tool(\"desktop_notes\"),\n \"local_documents.search\": tool(\"desktop_notes\"),\n\n \"local_media.ocr\": tool(\"desktop_documents\"),\n \"local_media.resize\": tool(\"desktop_documents\"),\n \"local_media.pdf_extract\": tool(\"desktop_documents\"),\n \"local_media.office_generate\": tool(\"desktop_documents\"),\n \"local_media.archive_create\": dropped(SHELL_COVERS),\n \"local_media.archive_extract\": dropped(SHELL_COVERS),\n\n \"local_ner.entities\": tool(\"desktop_entities\"),\n \"local_ner.pii\": tool(\"desktop_entities\"),\n\n \"local_mac_apps.applescript\": tool(\"desktop_automation\"),\n \"local_mac_apps.list_emails\": tool(\"desktop_mail\"),\n \"local_mac_apps.send_email\": tool(\"desktop_mail\"),\n \"local_mac_apps.email_accounts\": tool(\"desktop_mail\"),\n \"local_mac_apps.list_messages\": tool(\"desktop_messages\"),\n \"local_mac_apps.list_conversations\": tool(\"desktop_messages\"),\n \"local_mac_apps.send_message\": tool(\"desktop_messages\"),\n \"local_mac_apps.search_contacts\": tool(\"desktop_contacts\"),\n \"local_mac_apps.get_contact\": tool(\"desktop_contacts\"),\n \"local_mac_apps.list_events\": tool(\"desktop_calendar\"),\n \"local_mac_apps.create_event\": tool(\"desktop_calendar\"),\n \"local_mac_apps.list_reminders\": tool(\"desktop_calendar\"),\n \"local_mac_apps.create_reminder\": tool(\"desktop_calendar\"),\n \"local_mac_apps.search_photos\": tool(\"desktop_photos\"),\n \"local_mac_apps.get_photo\": tool(\"desktop_photos\"),\n \"local_mac_apps.location\": tool(\"desktop_location\"),\n\n \"local_windows_ps.run\": tool(\"desktop_automation\"),\n \"local_windows_ps.get_env\": dropped(\"Read with shell_execute; a per-command env rides exec.run\"),\n \"local_windows_ps.set_env\": dropped(\"Changing the person's persistent environment is not an agent tool\"),\n \"local_windows_ps.registry_read\": tool(\"desktop_windows_admin\"),\n \"local_windows_ps.registry_write\": tool(\"desktop_windows_admin\"),\n \"local_windows_ps.service_list\": tool(\"desktop_windows_admin\"),\n \"local_windows_ps.service_control\": tool(\"desktop_windows_admin\"),\n \"local_windows_ps.event_log\": tool(\"desktop_windows_admin\"),\n \"local_windows_ps.windows_features\": tool(\"desktop_windows_admin\"),\n};\n\n/**\n * matrx-local's 19 action-enum dispatchers. Each fanned an `action` out to the handlers above and\n * did nothing else; they retire with the `matrx-local` executor binding (the platform reaches a\n * device through the relay now, never by client delegation).\n */\nexport const LEGACY_DISPATCHERS: readonly string[] = [\n \"local_file\",\n \"local_shell\",\n \"local_window\",\n \"local_process\",\n \"local_input\",\n \"local_audio\",\n \"local_clipboard\",\n \"local_screen\",\n \"local_system\",\n \"local_browser\",\n \"local_web\",\n \"local_net\",\n \"local_monitor\",\n \"local_schedule\",\n \"local_documents\",\n \"local_media\",\n \"local_ner\",\n \"local_mac_apps\",\n \"local_windows_ps\",\n];\n\n/** Built tools' ops, typed: a built tool naming an op the protocol does not have fails to compile in the test. */\nexport function builtOps(): OpName[] {\n return TOOL_CATALOG.filter((t) => t.state === \"built\").flatMap((t) => t.ops as OpName[]);\n}\n","/**\n * The generated tool status table (SPEC §10): tool × level × platform, built ONLY from harness\n * results (`ToolResultsFile`) joined with the catalog. Never written by hand; the one status anyone\n * cites. `renderToolStatusMarkdown` is the committed text form; screens render `ToolStatus` itself.\n */\nimport { ToolResultsFile, type ToolLevel, type ToolLevelResult, type ToolPlatform, type ToolTransport } from \"../schema/tools\";\nimport { EXCLUDED_TOOLS, TOOL_CATALOG, TOOL_GROUPS, type CatalogTool, type ToolGroupId, type ToolState } from \"./catalog\";\n\nexport const TOOL_LEVELS: readonly ToolLevel[] = [\"programmatic\", \"protocol\", \"chat\"];\nexport const TOOL_PLATFORMS: readonly ToolPlatform[] = [\"darwin\", \"win32\", \"linux\"];\n\n/**\n * `pass`: every required proof passed and none failed. `partial`: passes so far, a required proof\n * missing (`missing` says which). `fail`: the latest run of some proof failed. `untested`: nothing\n * ran. `not_built`: the tool is planned. `unsupported`: the tool does not exist on this platform.\n */\nconst UUID_IN_NAME = /[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/gi;\n\nexport type CellState = \"pass\" | \"partial\" | \"fail\" | \"untested\" | \"not_built\" | \"unsupported\";\n\nexport interface StatusEvidence {\n readonly suite: string;\n readonly test: string;\n readonly transport: ToolTransport;\n readonly outcome: ToolLevelResult[\"outcome\"];\n readonly remote_network: boolean;\n readonly commit: string;\n readonly run_at_ms: number;\n readonly detail: string;\n /** Chat level: the tool calls the turn made, of any tool (absent on older evidence). */\n readonly calls_made?: number;\n}\n\n/**\n * A run that never exercised the tool: a `skip`, or a chat turn that made no tool calls at all (the\n * model answered in prose, or the chat request failed). It is shown as the latest run but is never\n * evidence about the tool, so it can neither prove a cell nor turn a proven one red.\n */\nexport function isInconclusive(e: Pick<StatusEvidence, \"outcome\" | \"calls_made\">): boolean {\n return e.outcome === \"skip\" || e.calls_made === 0;\n}\n\nexport interface StatusCell {\n readonly state: CellState;\n /** Required proofs not yet passed, e.g. \"relay from another network\". */\n readonly missing: readonly string[];\n readonly last_run_at_ms: number | null;\n readonly evidence: readonly StatusEvidence[];\n}\n\nexport interface StatusRow {\n readonly tool: string;\n readonly group: ToolGroupId;\n readonly tool_state: ToolState;\n readonly summary: string;\n readonly note: string | null;\n readonly cells: Readonly<Record<ToolPlatform, Readonly<Record<ToolLevel, StatusCell>>>>;\n /** Working on a platform = all three levels pass there (SPEC §10). */\n readonly working: Readonly<Record<ToolPlatform, boolean>>;\n}\n\nexport interface ToolStatus {\n readonly schema: \"matrx.tool-status.v1\";\n readonly generated_at_ms: number;\n readonly commits: readonly string[];\n readonly rows: readonly StatusRow[];\n readonly totals: Readonly<Record<ToolPlatform, { readonly working: number; readonly built: number; readonly tools: number }>>;\n}\n\n/** What each level needs before it reads `pass`. Level 2 is the transports AND the relay from another network. */\nconst REQUIRED: Readonly<Record<ToolLevel, readonly { readonly label: string; readonly ok: (e: StatusEvidence) => boolean }[]>> = {\n programmatic: [{ label: \"in process\", ok: (e) => e.transport === \"in_process\" }],\n protocol: [\n { label: \"localhost\", ok: (e) => e.transport === \"localhost\" },\n { label: \"relay\", ok: (e) => e.transport === \"relay\" },\n { label: \"relay from another network\", ok: (e) => e.transport === \"relay\" && e.remote_network },\n ],\n chat: [{ label: \"a real agent in a real chat\", ok: (e) => e.transport === \"agent\" }],\n};\n\nfunction cellFor(tool: CatalogTool, platform: ToolPlatform, level: ToolLevel, evidence: StatusEvidence[]): StatusCell {\n if (!tool.platforms.includes(platform)) return { state: \"unsupported\", missing: [], last_run_at_ms: null, evidence: [] };\n // The latest DECISIVE run of each (suite, test, transport, network) decides; older runs are\n // history. A run that never exercised the tool (`isInconclusive`) never replaces a decisive one:\n // it is kept beside it, when newer, so the table still shows that the last run proved nothing.\n const latest = new Map<string, StatusEvidence>();\n const latestInconclusive = new Map<string, StatusEvidence>();\n for (const e of evidence) {\n // A uuid in a test name (the agent a chat proof ran, a conversation) is run data, never the\n // proof's identity: the same proof under a new test agent replaces the old one's result.\n const key = `${e.suite}\\u0000${e.test.replace(UUID_IN_NAME, \"<id>\")}\\u0000${e.transport}\\u0000${e.remote_network}`;\n const into = isInconclusive(e) ? latestInconclusive : latest;\n const prev = into.get(key);\n if (!prev || prev.run_at_ms < e.run_at_ms) into.set(key, e);\n }\n const runs = [...latest.values()].sort((a, b) => b.run_at_ms - a.run_at_ms);\n const unproven = [...latestInconclusive].filter(([k, e]) => (latest.get(k)?.run_at_ms ?? -1) < e.run_at_ms).map(([, e]) => e);\n const shown = [...runs, ...unproven].sort((a, b) => b.run_at_ms - a.run_at_ms);\n const last = runs[0]?.run_at_ms ?? null;\n if (tool.state === \"planned\" && runs.length === 0) return { state: \"not_built\", missing: [], last_run_at_ms: null, evidence: [] };\n if (runs.length === 0) return { state: \"untested\", missing: REQUIRED[level].map((r) => r.label), last_run_at_ms: null, evidence: shown };\n if (runs.some((e) => e.outcome === \"fail\")) return { state: \"fail\", missing: [], last_run_at_ms: last, evidence: shown };\n const missing = REQUIRED[level].filter((r) => !runs.some((e) => e.outcome === \"pass\" && r.ok(e))).map((r) => r.label);\n return { state: missing.length === 0 ? \"pass\" : \"partial\", missing, last_run_at_ms: last, evidence: shown };\n}\n\n/** Build the table from every results file. Throws when a file is off-contract (never silently skipped). */\nexport function buildToolStatus(files: readonly unknown[], opts: { readonly generatedAtMs: number }): ToolStatus {\n const parsed = files.map((f, i) => {\n const r = ToolResultsFile.safeParse(f);\n if (!r.success) throw new Error(`tool results file #${i} is off-contract: ${r.error.issues[0]?.path.join(\".\")} ${r.error.issues[0]?.message}`);\n return r.data;\n });\n const known = new Set(TOOL_CATALOG.map((t) => t.name));\n const byKey = new Map<string, StatusEvidence[]>();\n for (const file of parsed) {\n for (const r of file.results) {\n if (!known.has(r.tool)) throw new Error(`a result names ${r.tool}, which is not in the tool catalog`);\n const key = `${r.tool}|${r.platform}|${r.level}`;\n const list = byKey.get(key) ?? [];\n list.push({\n suite: r.suite,\n test: r.test,\n transport: r.transport,\n outcome: r.outcome,\n remote_network: r.remote_network,\n commit: file.commit,\n run_at_ms: r.run_at_ms,\n detail: r.detail,\n ...(r.calls_made === undefined ? {} : { calls_made: r.calls_made }),\n });\n byKey.set(key, list);\n }\n }\n const groupOrder = new Map(TOOL_GROUPS.map((g) => [g.id, g.order]));\n const tools = [...TOOL_CATALOG].sort((a, b) => (groupOrder.get(a.group) ?? 99) - (groupOrder.get(b.group) ?? 99));\n const rows: StatusRow[] = tools.map((tool) => {\n const cells = {} as Record<ToolPlatform, Record<ToolLevel, StatusCell>>;\n const working = {} as Record<ToolPlatform, boolean>;\n for (const platform of TOOL_PLATFORMS) {\n const perLevel = {} as Record<ToolLevel, StatusCell>;\n for (const level of TOOL_LEVELS) perLevel[level] = cellFor(tool, platform, level, byKey.get(`${tool.name}|${platform}|${level}`) ?? []);\n cells[platform] = perLevel;\n working[platform] = TOOL_LEVELS.every((l) => perLevel[l].state === \"pass\");\n }\n return { tool: tool.name, group: tool.group, tool_state: tool.state, summary: tool.summary, note: tool.note ?? null, cells, working };\n });\n const totals = {} as Record<ToolPlatform, { working: number; built: number; tools: number }>;\n for (const platform of TOOL_PLATFORMS) {\n const onPlatform = TOOL_CATALOG.filter((t) => t.platforms.includes(platform));\n totals[platform] = {\n working: rows.filter((r) => r.working[platform]).length,\n built: onPlatform.filter((t) => t.state !== \"planned\").length,\n tools: onPlatform.length,\n };\n }\n const commits = [...new Set(parsed.map((f) => f.commit))].sort();\n return { schema: \"matrx.tool-status.v1\", generated_at_ms: opts.generatedAtMs, commits, rows, totals };\n}\n\nconst MARK: Readonly<Record<CellState, string>> = { pass: \"✓\", partial: \"◐\", fail: \"✗\", untested: \"·\", not_built: \"—\", unsupported: \" \" };\n\n/** The committed text form. Columns: per platform, the three levels (P = programmatic, R = protocol, C = chat). */\nexport function renderToolStatusMarkdown(status: ToolStatus): string {\n const lines: string[] = [\n \"<!-- GENERATED by `pnpm tools:status` from test results. Never edit by hand. -->\",\n \"# Local tools: status\",\n \"\",\n `Generated ${new Date(status.generated_at_ms).toISOString()} from commits ${status.commits.join(\", \") || \"none\"}.`,\n \"\",\n \"✓ pass · ◐ passing so far, a required proof missing · ✗ fail · `·` untested · — not built. Levels: P programmatic, R protocol, C chat.\",\n \"\",\n \"| Platform | Working | Built | Tools |\",\n \"|---|---|---|---|\",\n ...TOOL_PLATFORMS.map((p) => `| ${p} | ${status.totals[p].working} | ${status.totals[p].built} | ${status.totals[p].tools} |`),\n \"\",\n ];\n for (const group of TOOL_GROUPS) {\n const rows = status.rows.filter((r) => r.group === group.id);\n if (rows.length === 0) continue;\n lines.push(`## ${group.order}. ${group.title}`, \"\", \"| Tool | darwin P R C | win32 P R C | linux P R C | Missing |\", \"|---|---|---|---|---|\");\n for (const r of rows) {\n const cols = TOOL_PLATFORMS.map((p) => TOOL_LEVELS.map((l) => MARK[r.cells[p][l].state]).join(\" \"));\n const missing = new Set<string>();\n for (const p of TOOL_PLATFORMS) for (const l of TOOL_LEVELS) for (const m of r.cells[p][l].missing) if (r.cells[p][l].state !== \"untested\") missing.add(`${p} ${l}: ${m}`);\n const name = r.tool_state === \"broken\" ? `${r.tool} (broken: ${r.note ?? \"\"})` : r.tool;\n lines.push(`| ${name} | ${cols.join(\" | \")} | ${[...missing].join(\"; \")} |`);\n }\n lines.push(\"\");\n }\n const excluded = Object.entries(EXCLUDED_TOOLS);\n if (excluded.length > 0) {\n lines.push(\"## Not device tools\", \"\", \"| Tool | Why |\", \"|---|---|\", ...excluded.map(([name, why]) => `| ${name} | ${why} |`), \"\");\n }\n return lines.join(\"\\n\");\n}\n","/**\n * The per-device tool policy's op rule (Matrx 2: Agents › Tools' switches, the\n * `desktop.tools/disabled_on_device` knob). The relay carries an op, never the tool that sent it, and\n * several tools share ops (fs_read, fs_write and fs_edit all read with `fs.read`; shell_execute and\n * shell_python both run `exec.run`). So an op is refused when EVERY catalog tool that sends it is\n * turned off. Pure, data-only: the core enforces it on relay connections, the screen explains it.\n */\nimport { TOOL_CATALOG } from \"./catalog\";\n\n/** The ops refused when these tools are off: those every sending tool has turned off. */\nexport function refusedOps(disabledTools: readonly string[]): ReadonlySet<string> {\n const off = new Set(disabledTools);\n const senders = new Map<string, string[]>();\n for (const tool of TOOL_CATALOG) for (const op of tool.ops) senders.set(op, [...(senders.get(op) ?? []), tool.name]);\n const refused = new Set<string>();\n for (const [op, tools] of senders) if (tools.every((t) => off.has(t))) refused.add(op);\n return refused;\n}\n\n/** The catalog tools that send this op. */\nexport function toolsSending(op: string): string[] {\n return TOOL_CATALOG.filter((t) => t.ops.includes(op)).map((t) => t.name);\n}\n\n/**\n * For one tool switched off: the tools still on that keep ALL its ops open (turning it off alone\n * stops nothing until they are off too). Empty when turning it off stops at least one op.\n */\nexport function sharedOpsBlocking(tool: string, disabledTools: readonly string[]): string[] {\n const entry = TOOL_CATALOG.find((t) => t.name === tool);\n if (!entry || entry.ops.length === 0) return [];\n const off = new Set([...disabledTools, tool]);\n const refused = refusedOps([...off]);\n if (entry.ops.some((op) => refused.has(op))) return [];\n const keepers = new Set<string>();\n for (const op of entry.ops) for (const other of TOOL_CATALOG) if (other.name !== tool && !off.has(other.name) && other.ops.includes(op)) keepers.add(other.name);\n return [...keepers].sort();\n}\n"],"mappings":"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","names":["tool","tool"]}
|
|
1
|
+
{"version":3,"sources":["../src/contract.ts","../src/tools/catalog.ts","../src/tools/status.ts","../src/tools/policy.ts"],"sourcesContent":["// AUTO-GENERATED by scripts/generate.ts — DO NOT EDIT. `pnpm generate --check` fails on any hand edit.\n/** SHA-256 of generated/desktop-protocol.schema.json: the contract both sides of a service connection were built from. */\nexport const CONTRACT_SHA256 = \"12cce30e22d7106e7344708176202949a2b2fea7eede2c570f663d46d3cedf34\" as const;\n","/**\n * The local tool catalog (SPEC §10): every tool a platform agent calls on a person's computer, the\n * protocol ops it reaches, the group it ships in, and what became of each of matrx-local's 139\n * handlers (120 actions + the 19 action-enum dispatchers that fanned out to them).\n *\n * Data only. The status table (./status.ts) joins it with the harnesses' results, so a tool listed\n * here with no passing result reads \"untested\", never \"working\". Design and the reasons behind each\n * group: matrx-desktop/design/local-tools.md.\n */\nimport type { OpName } from \"../schema/registry\";\nimport type { ToolPlatform } from \"../schema/tools\";\n\nexport type ToolGroupId = \"files_shell\" | \"os_control\" | \"personal_automation\" | \"tools_service\" | \"ml_service\" | \"windows_admin\";\n\nexport interface ToolGroup {\n readonly id: ToolGroupId;\n readonly order: number;\n readonly title: string;\n /** Who implements the ops: a TS capability owner in the core, or a Python service. */\n readonly owner: \"core\" | \"python_tools\" | \"python_ml\";\n}\n\nexport const TOOL_GROUPS: readonly ToolGroup[] = [\n { id: \"files_shell\", order: 1, title: \"Files and shell\", owner: \"core\" },\n { id: \"os_control\", order: 2, title: \"Computer control\", owner: \"core\" },\n { id: \"personal_automation\", order: 3, title: \"Personal apps and automation\", owner: \"core\" },\n { id: \"tools_service\", order: 4, title: \"Web, documents, OCR and entities\", owner: \"python_tools\" },\n { id: \"ml_service\", order: 5, title: \"Speech\", owner: \"python_ml\" },\n { id: \"windows_admin\", order: 6, title: \"Windows administration\", owner: \"core\" },\n];\n\n/**\n * How an agent's call reaches the device. Both end at the relay's `POST /v1/devices/{id}/call`:\n * - `sandbox_proxy`: the cloud-sandbox-shaped tools (fs_*, shell_*). matrx-ai's `_sandbox_proxy`\n * calls aidream `/api/local-proxy/{device}/{fs|search|exec}/…`, which maps the route to its op.\n * Agent code never knows a laptop from a cloud box (SPEC §6.1).\n * - `device_op`: desktop-only capabilities. One generic route, `/api/local-proxy/{device}/op/{cap.op}`,\n * params and result exactly the op's schema; the tool definition is generated from that schema.\n * - `server`: runs on the aidream server even when the turn is bound to a device (a defect when\n * the tool reads a local path; see `note`).\n */\nexport type ToolPath = \"sandbox_proxy\" | \"device_op\" | \"server\";\n\n/** `built`: the ops exist in the protocol and Matrx 2's core serves them (registered on the platform for agents with the server tool); `planned`: designed, not built; `broken`: registered but wrong on a device. */\nexport type ToolState = \"built\" | \"planned\" | \"broken\";\n\nexport interface CatalogTool {\n /** The platform registry name (`tool.definition.name`). */\n readonly name: string;\n readonly group: ToolGroupId;\n readonly state: ToolState;\n readonly path: ToolPath;\n /** Ops the tool sends. For `built` tools every one is in OPS (a test enforces it). */\n readonly ops: readonly string[];\n readonly platforms: readonly ToolPlatform[];\n /** One line for the status table. */\n readonly summary: string;\n /** Required for `broken`: what is wrong. */\n readonly note?: string;\n}\n\nconst ALL: readonly ToolPlatform[] = [\"darwin\", \"win32\", \"linux\"];\n\nexport const TOOL_CATALOG: readonly CatalogTool[] = [\n // ── 1. Files and shell (core `fs`, `exec`; the cloud sandbox's agent tools) ──────────────────\n { name: \"fs_read\", group: \"files_shell\", state: \"built\", path: \"sandbox_proxy\", ops: [\"fs.read\"], platforms: ALL, summary: \"Read a file, paged\" },\n { name: \"fs_write\", group: \"files_shell\", state: \"built\", path: \"sandbox_proxy\", ops: [\"fs.read\", \"fs.write\"], platforms: ALL, summary: \"Create or overwrite a file\" },\n { name: \"fs_edit\", group: \"files_shell\", state: \"built\", path: \"sandbox_proxy\", ops: [\"fs.read\", \"fs.patch\"], platforms: ALL, summary: \"Replace one exact string\" },\n { name: \"fs_patch\", group: \"files_shell\", state: \"built\", path: \"sandbox_proxy\", ops: [\"fs.read\", \"fs.patch\"], platforms: ALL, summary: \"Apply several exact edits at once\" },\n { name: \"fs_list\", group: \"files_shell\", state: \"built\", path: \"sandbox_proxy\", ops: [\"fs.list\"], platforms: ALL, summary: \"List a folder\" },\n { name: \"fs_mkdir\", group: \"files_shell\", state: \"built\", path: \"sandbox_proxy\", ops: [\"fs.mkdir\"], platforms: ALL, summary: \"Create a folder\" },\n { name: \"fs_search\", group: \"files_shell\", state: \"built\", path: \"sandbox_proxy\", ops: [\"fs.search_paths\", \"fs.search_content\"], platforms: ALL, summary: \"Find files by name or content\" },\n { name: \"shell_execute\", group: \"files_shell\", state: \"built\", path: \"sandbox_proxy\", ops: [\"exec.run\"], platforms: ALL, summary: \"Run a command; cd carries over\" },\n { name: \"shell_python\", group: \"files_shell\", state: \"built\", path: \"sandbox_proxy\", ops: [\"exec.run\"], platforms: ALL, summary: \"Run a Python script\" },\n { name: \"desktop_git\", group: \"files_shell\", state: \"built\", path: \"device_op\", ops: [\"git.status\", \"git.diff\", \"git.log\", \"git.add\", \"git.commit\", \"git.push\", \"git.pull\", \"git.branch\", \"git.stash\", \"git.clone\"], platforms: ALL, summary: \"Git: status, diff, log, commit, branches, push and pull\" },\n { name: \"shell_job\", group: \"files_shell\", state: \"built\", path: \"device_op\", ops: [\"exec.job.start\", \"exec.job.output\", \"exec.job.stop\", \"exec.job.list\"], platforms: ALL, summary: \"Background commands: start, read output, stop\" },\n\n // ── 2. Computer control (TS owners) ──────────────────────────────────────────────────────────\n { name: \"desktop_process\", group: \"os_control\", state: \"built\", path: \"device_op\", ops: [\"proc.list\", \"proc.ports\", \"proc.kill\"], platforms: ALL, summary: \"Running processes and ports; stop one\" },\n { name: \"desktop_apps\", group: \"os_control\", state: \"built\", path: \"device_op\", ops: [\"apps.list\", \"apps.open\"], platforms: ALL, summary: \"Installed apps; open or bring one forward\" },\n { name: \"desktop_system\", group: \"os_control\", state: \"built\", path: \"device_op\", ops: [\"sysinfo.get\", \"sysinfo.hardware\", \"system.open_url\", \"system.open_path\", \"system.open_settings\", \"system.notify\"], platforms: ALL, summary: \"System facts, open, notify\" },\n { name: \"desktop_clipboard\", group: \"os_control\", state: \"built\", path: \"device_op\", ops: [\"clipboard.read\", \"clipboard.write\"], platforms: ALL, summary: \"Read and write the clipboard's text\" },\n { name: \"desktop_screen\", group: \"os_control\", state: \"built\", path: \"device_op\", ops: [\"screen.list\", \"screen.capture\"], platforms: ALL, summary: \"Displays and screenshots\" },\n { name: \"desktop_browser\", group: \"os_control\", state: \"built\", path: \"device_op\", ops: [\"browser.sessions\", \"browser.call\"], platforms: ALL, summary: \"The person's own browser through the AI Matrx extension: tabs, read, screenshot, navigate, click, type\" },\n { name: \"desktop_window\", group: \"os_control\", state: \"built\", path: \"device_op\", ops: [\"window.list\", \"window.focus\", \"window.move\", \"window.minimize\"], platforms: ALL, summary: \"Find, focus and arrange windows\" },\n { name: \"desktop_input\", group: \"os_control\", state: \"built\", path: \"device_op\", ops: [\"input.type_text\", \"input.hotkey\", \"input.mouse_click\", \"input.mouse_move\", \"input.keyboard_settings\", \"input.set_keyboard_settings\"], platforms: ALL, summary: \"Keyboard and mouse\" },\n { name: \"desktop_audio\", group: \"os_control\", state: \"built\", path: \"device_op\", ops: [\"audio.devices\", \"audio.levels\", \"audio.set_levels\", \"audio.record\", \"audio.play\"], platforms: ALL, summary: \"Audio devices, record, play\" },\n { name: \"desktop_power\", group: \"os_control\", state: \"built\", path: \"device_op\", ops: [\"power.status\", \"power.history\", \"power.prevent_sleep\"], platforms: ALL, summary: \"Battery and keep awake\" },\n { name: \"desktop_resources\", group: \"os_control\", state: \"built\", path: \"device_op\", ops: [\"resources.snapshot\", \"resources.activity\", \"resources.stop_job\", \"resources.incidents\"], platforms: ALL, summary: \"CPU, memory and disk use; what is using them, grouped into jobs; stop a job; the slowdown log\" },\n { name: \"fs_watch\", group: \"os_control\", state: \"built\", path: \"device_op\", ops: [\"fs.watch.start\", \"fs.watch.events\", \"fs.watch.stop\"], platforms: ALL, summary: \"Watch a folder; read what changed\" },\n\n // ── 3. Personal apps and automation (1.37: the core's `automation`, `personal`, `net` and `schedule` owners) ──\n { name: \"desktop_automation\", group: \"personal_automation\", state: \"built\", path: \"device_op\", ops: [\"automation.script\"], platforms: [\"darwin\", \"win32\"], summary: \"AppleScript or JavaScript for Automation on a Mac, PowerShell on Windows\" },\n { name: \"desktop_mail\", group: \"personal_automation\", state: \"built\", path: \"device_op\", ops: [\"mail.accounts\", \"mail.list\", \"mail.send\"], platforms: [\"darwin\"], summary: \"The Mail app: accounts, messages, send\" },\n { name: \"desktop_outlook\", group: \"personal_automation\", state: \"built\", path: \"device_op\", ops: [\"outlook.status\", \"outlook.draft\", \"outlook.list\", \"outlook.read\"], platforms: [\"win32\"], summary: \"The person's own Outlook: drafts with attachments, recent mail, one message\" },\n { name: \"desktop_messages\", group: \"personal_automation\", state: \"built\", path: \"device_op\", ops: [\"messages.chats\", \"messages.list\", \"messages.send\"], platforms: [\"darwin\"], summary: \"The Messages app: chats, messages, send\" },\n { name: \"desktop_contacts\", group: \"personal_automation\", state: \"built\", path: \"device_op\", ops: [\"contacts.search\", \"contacts.get\"], platforms: [\"darwin\"], summary: \"Contacts: search, one card\" },\n { name: \"desktop_calendar\", group: \"personal_automation\", state: \"built\", path: \"device_op\", ops: [\"calendar.list\", \"calendar.create\", \"reminders.list\", \"reminders.create\"], platforms: [\"darwin\"], summary: \"Calendar and Reminders: list and add\" },\n { name: \"desktop_photos\", group: \"personal_automation\", state: \"built\", path: \"device_op\", ops: [\"photos.search\", \"photos.get\"], platforms: [\"darwin\"], summary: \"The Photos library: find, export an original\" },\n // Windows comes back once a Windows location fix is proven (plan attack retire-local 2026-10-12, B6):\n // until then local_mac_apps (macOS-only) is judged on macOS and nothing claims Windows.\n { name: \"desktop_location\", group: \"personal_automation\", state: \"built\", path: \"device_op\", ops: [\"location.get\"], platforms: [\"darwin\"], summary: \"Where the computer is (the OS's location service)\" },\n { name: \"desktop_net\", group: \"personal_automation\", state: \"built\", path: \"device_op\", ops: [\"net.info\", \"net.wifi\", \"net.bluetooth\", \"net.devices\", \"net.mdns\", \"net.scan\", \"net.download\"], platforms: ALL, summary: \"Local network, Wi-Fi, Bluetooth, open ports and downloads\" },\n { name: \"desktop_schedule\", group: \"personal_automation\", state: \"built\", path: \"device_op\", ops: [\"schedule.create\", \"schedule.list\", \"schedule.cancel\"], platforms: ALL, summary: \"Run a tool's op on this computer on an interval; list and cancel\" },\n // 1.38, code from anywhere: the person's Claude Code and Codex sessions on this computer. Turning\n // either off in Agents › Tools refuses its ops on every relay connection (the existing switch).\n { name: \"coding_sessions_read\", group: \"personal_automation\", state: \"built\", path: \"device_op\", ops: [\"coding.providers\", \"coding.sessions.list\", \"coding.discover\", \"coding.runs.list\", \"coding.history\", \"coding.transcript.read\", \"coding.item.full\", \"coding.activity\", \"coding.folders.recent\", \"coding.folders.check\", \"coding.agents.access\", \"coding.titles.status\", \"coding.prefs.list\", \"coding.recent.seen\", \"coding.search\", \"coding.transcript.raw\", \"coding.watch\", \"coding.session.watch\"], platforms: ALL, summary: \"Claude Code and Codex sessions: list, read live, search, download\" },\n { name: \"coding_sessions_drive\", group: \"personal_automation\", state: \"built\", path: \"device_op\", ops: [\"coding.start\", \"coding.takeover\", \"coding.send\", \"coding.stop\", \"coding.stop_elsewhere\", \"coding.options.set\", \"coding.account.continue\", \"coding.agent.set\", \"coding.folders.create\", \"coding.prefs.set\", \"coding.reconcile\"], platforms: ALL, summary: \"Claude Code and Codex sessions: start, send, stop, take over, rename\" },\n\n // ── 4. Documents, notes and entities (1.37: the core's `documents` and `notes` owners; desktop_web is the `tools` service) ──\n { name: \"desktop_documents\", group: \"tools_service\", state: \"built\", path: \"device_op\", ops: [\"documents.pdf_text\", \"documents.ocr\", \"documents.image_resize\", \"documents.office_generate\"], platforms: ALL, summary: \"PDF text, OCR, images, Word and Excel files\" },\n { name: \"desktop_web\", group: \"tools_service\", state: \"built\", path: \"device_op\", ops: [\"web.fetch\", \"web.scrape\", \"web.search\", \"web.fetch_with_browser\"], platforms: ALL, summary: \"Fetch, scrape and search the web from this computer's own connection\" },\n { name: \"desktop_entities\", group: \"tools_service\", state: \"built\", path: \"device_op\", ops: [\"entities.ner\", \"entities.pii\"], platforms: ALL, summary: \"Names, places, organizations and private data, found on the device\" },\n { name: \"desktop_notes\", group: \"files_shell\", state: \"built\", path: \"device_op\", ops: [\"notes.folders\", \"notes.list\", \"notes.read\", \"notes.write\", \"notes.search\"], platforms: ALL, summary: \"The person's local notes (Documents/Matrx/Notes): list, read, write, search\" },\n\n // ── 5. Python `ml` service ───────────────────────────────────────────────────────────────────\n // Built: models.transcribe through local_proxy's POST /op/{cap.op} (matrx-ai implementations/desktop.py).\n // Whisper detects the language itself, so matrx-local's speech_locales needs no op of its own.\n { name: \"desktop_transcribe\", group: \"ml_service\", state: \"built\", path: \"device_op\", ops: [\"models.transcribe\"], platforms: ALL, summary: \"Speech to text on the device\" },\n\n // ── 6. Windows administration ────────────────────────────────────────────────────────────────\n { name: \"desktop_windows_admin\", group: \"windows_admin\", state: \"built\", path: \"device_op\", ops: [\"windows.registry_read\", \"windows.registry_write\", \"windows.services\", \"windows.service_control\", \"windows.event_log\", \"windows.features\"], platforms: [\"win32\"], summary: \"Registry, services, event log, optional features\" },\n];\n\n/**\n * Tools armed with a device binding that are deliberately NOT device tools, each with its reason.\n * They run on the server; the status table does not track them.\n */\nexport const EXCLUDED_TOOLS: Readonly<Record<string, string>> = {\n git_ingest:\n \"Runs on the server: it ingests repository URLs. A local path on a bound computer or sandbox is refused with the fs_* and shell remedy, since the server cannot see it\",\n};\n\n/** What became of one matrx-local handler. */\nexport type LegacyDisposition =\n | { readonly kind: \"tool\"; readonly tool: string }\n | { readonly kind: \"dropped\"; readonly reason: string };\n\nconst tool = (name: string): LegacyDisposition => ({ kind: \"tool\", tool: name });\nconst dropped = (reason: string): LegacyDisposition => ({ kind: \"dropped\", reason });\n\nconst SHELL_COVERS = \"Done with shell_execute (mv, cp, rm, tar), as every coding agent does\";\nconst CLOUD_SCRAPER = \"The cloud scraper and research tools run with this computer as their network (the `proxy` capability)\";\n\n/** matrx-local's 120 actions (`app/tools/actions.py` ACTION_GROUPS), keyed `<mega tool>.<action>`. */\nexport const LEGACY_ACTIONS: Readonly<Record<string, LegacyDisposition>> = {\n \"local_file.read\": tool(\"fs_read\"),\n \"local_file.write\": tool(\"fs_write\"),\n \"local_file.edit\": tool(\"fs_edit\"),\n \"local_file.move\": dropped(SHELL_COVERS),\n \"local_file.copy\": dropped(SHELL_COVERS),\n \"local_file.delete\": dropped(SHELL_COVERS),\n \"local_file.rename\": dropped(SHELL_COVERS),\n \"local_file.mkdir\": tool(\"fs_mkdir\"),\n \"local_file.glob\": tool(\"fs_search\"),\n \"local_file.grep\": tool(\"fs_search\"),\n \"local_file.list\": tool(\"fs_list\"),\n \"local_file.places\": dropped(\"The device's home and folders reach the agent in its binding briefing (sysinfo.get)\"),\n \"local_file.find\": tool(\"fs_search\"),\n \"local_file.semantic_find\": dropped(\"Needs a local embedding index; returns with file sync's index, not before\"),\n\n \"local_shell.run\": tool(\"shell_execute\"),\n \"local_shell.output\": tool(\"shell_job\"),\n \"local_shell.stop\": tool(\"shell_job\"),\n\n \"local_window.list\": tool(\"desktop_window\"),\n \"local_window.focus\": tool(\"desktop_window\"),\n \"local_window.move\": tool(\"desktop_window\"),\n \"local_window.minimize\": tool(\"desktop_window\"),\n\n \"local_process.list\": tool(\"desktop_process\"),\n \"local_process.ports\": tool(\"desktop_process\"),\n \"local_process.launch_app\": tool(\"desktop_apps\"),\n \"local_process.kill\": tool(\"desktop_process\"),\n \"local_process.focus_app\": tool(\"desktop_apps\"),\n \"local_process.terminals\": dropped(\"Matrx 2 terminals are exec sessions; the person's own terminal windows are not the agent's\"),\n \"local_process.tail_terminal\": dropped(\"Matrx 2 terminals are exec sessions; the person's own terminal windows are not the agent's\"),\n \"local_process.installed_apps\": tool(\"desktop_apps\"),\n\n \"local_input.type_text\": tool(\"desktop_input\"),\n \"local_input.hotkey\": tool(\"desktop_input\"),\n \"local_input.mouse_click\": tool(\"desktop_input\"),\n \"local_input.mouse_move\": tool(\"desktop_input\"),\n\n \"local_audio.devices\": tool(\"desktop_audio\"),\n \"local_audio.record\": tool(\"desktop_audio\"),\n \"local_audio.play\": tool(\"desktop_audio\"),\n \"local_audio.transcribe\": tool(\"desktop_transcribe\"),\n \"local_audio.transcribe_with_speech\": tool(\"desktop_transcribe\"),\n \"local_audio.speech_locales\": tool(\"desktop_transcribe\"),\n\n \"local_clipboard.read\": tool(\"desktop_clipboard\"),\n \"local_clipboard.write\": tool(\"desktop_clipboard\"),\n\n \"local_screen.screenshot\": tool(\"desktop_screen\"),\n \"local_screen.list\": tool(\"desktop_screen\"),\n \"local_screen.capture_book\": dropped(\"A one-off loop of screenshot plus page turn; the agent composes it from desktop_screen and desktop_input\"),\n\n \"local_system.info\": tool(\"desktop_system\"),\n \"local_system.open_url\": tool(\"desktop_system\"),\n \"local_system.open_path\": tool(\"desktop_system\"),\n \"local_system.notify\": tool(\"desktop_system\"),\n\n // The person's own browser is the AI Matrx extension paired with Matrx 2 (cap browser).\n \"local_browser.navigate\": tool(\"desktop_browser\"),\n \"local_browser.click\": tool(\"desktop_browser\"),\n \"local_browser.type_text\": tool(\"desktop_browser\"),\n \"local_browser.extract\": tool(\"desktop_browser\"),\n \"local_browser.screenshot\": tool(\"desktop_browser\"),\n \"local_browser.eval\": dropped(\"The extension runs no page script for Matrx 2: its script and cdp tools are privileged and refused over the desktop path; read, click and type cover what eval was used for\"),\n \"local_browser.tabs\": tool(\"desktop_browser\"),\n \"local_browser.close\": tool(\"desktop_browser\"),\n\n \"local_web.fetch\": tool(\"desktop_web\"),\n \"local_web.fetch_with_browser\": tool(\"desktop_web\"),\n \"local_web.scrape\": tool(\"desktop_web\"),\n \"local_web.search\": tool(\"desktop_web\"),\n \"local_web.research\": dropped(CLOUD_SCRAPER),\n \"local_web.download\": tool(\"desktop_net\"),\n \"local_web.upload\": dropped(\"Uploads are cloud files (matrx-files) and file sync, one upload path\"),\n\n \"local_net.info\": tool(\"desktop_net\"),\n \"local_net.scan\": tool(\"desktop_net\"),\n \"local_net.port_scan\": tool(\"desktop_net\"),\n \"local_net.mdns_discover\": tool(\"desktop_net\"),\n \"local_net.wifi_networks\": tool(\"desktop_net\"),\n \"local_net.bluetooth_devices\": tool(\"desktop_net\"),\n \"local_net.connected_devices\": tool(\"desktop_net\"),\n\n \"local_monitor.resources\": tool(\"desktop_resources\"),\n \"local_monitor.battery\": tool(\"desktop_power\"),\n \"local_monitor.disk_usage\": tool(\"desktop_resources\"),\n \"local_monitor.top_processes\": tool(\"desktop_process\"),\n \"local_monitor.watch_directory\": tool(\"fs_watch\"),\n \"local_monitor.watch_events\": tool(\"fs_watch\"),\n \"local_monitor.stop_watch\": tool(\"fs_watch\"),\n \"local_monitor.heartbeat\": dropped(\"The relay's device status replaces the heartbeat\"),\n\n // Matrx Local's scheduler ran one of its tools on an interval; desktop_schedule runs an op so.\n \"local_schedule.create\": tool(\"desktop_schedule\"),\n \"local_schedule.list\": tool(\"desktop_schedule\"),\n \"local_schedule.cancel\": tool(\"desktop_schedule\"),\n \"local_schedule.prevent_sleep\": tool(\"desktop_power\"),\n\n // Matrx Local's documents are the Markdown notes in Documents/Matrx/Notes; desktop_notes reads and writes them.\n \"local_documents.list\": tool(\"desktop_notes\"),\n \"local_documents.folders\": tool(\"desktop_notes\"),\n \"local_documents.read\": tool(\"desktop_notes\"),\n \"local_documents.write\": tool(\"desktop_notes\"),\n \"local_documents.search\": tool(\"desktop_notes\"),\n\n \"local_media.ocr\": tool(\"desktop_documents\"),\n \"local_media.resize\": tool(\"desktop_documents\"),\n \"local_media.pdf_extract\": tool(\"desktop_documents\"),\n \"local_media.office_generate\": tool(\"desktop_documents\"),\n \"local_media.archive_create\": dropped(SHELL_COVERS),\n \"local_media.archive_extract\": dropped(SHELL_COVERS),\n\n \"local_ner.entities\": tool(\"desktop_entities\"),\n \"local_ner.pii\": tool(\"desktop_entities\"),\n\n \"local_mac_apps.applescript\": tool(\"desktop_automation\"),\n \"local_mac_apps.list_emails\": tool(\"desktop_mail\"),\n \"local_mac_apps.send_email\": tool(\"desktop_mail\"),\n \"local_mac_apps.email_accounts\": tool(\"desktop_mail\"),\n \"local_mac_apps.list_messages\": tool(\"desktop_messages\"),\n \"local_mac_apps.list_conversations\": tool(\"desktop_messages\"),\n \"local_mac_apps.send_message\": tool(\"desktop_messages\"),\n \"local_mac_apps.search_contacts\": tool(\"desktop_contacts\"),\n \"local_mac_apps.get_contact\": tool(\"desktop_contacts\"),\n \"local_mac_apps.list_events\": tool(\"desktop_calendar\"),\n \"local_mac_apps.create_event\": tool(\"desktop_calendar\"),\n \"local_mac_apps.list_reminders\": tool(\"desktop_calendar\"),\n \"local_mac_apps.create_reminder\": tool(\"desktop_calendar\"),\n \"local_mac_apps.search_photos\": tool(\"desktop_photos\"),\n \"local_mac_apps.get_photo\": tool(\"desktop_photos\"),\n \"local_mac_apps.location\": tool(\"desktop_location\"),\n\n \"local_windows_ps.run\": tool(\"desktop_automation\"),\n \"local_windows_ps.get_env\": dropped(\"Read with shell_execute; a per-command env rides exec.run\"),\n \"local_windows_ps.set_env\": dropped(\"Changing the person's persistent environment is not an agent tool\"),\n \"local_windows_ps.registry_read\": tool(\"desktop_windows_admin\"),\n \"local_windows_ps.registry_write\": tool(\"desktop_windows_admin\"),\n \"local_windows_ps.service_list\": tool(\"desktop_windows_admin\"),\n \"local_windows_ps.service_control\": tool(\"desktop_windows_admin\"),\n \"local_windows_ps.event_log\": tool(\"desktop_windows_admin\"),\n \"local_windows_ps.windows_features\": tool(\"desktop_windows_admin\"),\n};\n\n/**\n * matrx-local's 19 action-enum dispatchers. Each fanned an `action` out to the handlers above and\n * did nothing else; they retire with the `matrx-local` executor binding (the platform reaches a\n * device through the relay now, never by client delegation).\n */\nexport const LEGACY_DISPATCHERS: readonly string[] = [\n \"local_file\",\n \"local_shell\",\n \"local_window\",\n \"local_process\",\n \"local_input\",\n \"local_audio\",\n \"local_clipboard\",\n \"local_screen\",\n \"local_system\",\n \"local_browser\",\n \"local_web\",\n \"local_net\",\n \"local_monitor\",\n \"local_schedule\",\n \"local_documents\",\n \"local_media\",\n \"local_ner\",\n \"local_mac_apps\",\n \"local_windows_ps\",\n];\n\n/** Built tools' ops, typed: a built tool naming an op the protocol does not have fails to compile in the test. */\nexport function builtOps(): OpName[] {\n return TOOL_CATALOG.filter((t) => t.state === \"built\").flatMap((t) => t.ops as OpName[]);\n}\n","/**\n * The generated tool status table (SPEC §10): tool × level × platform, built ONLY from harness\n * results (`ToolResultsFile`) joined with the catalog. Never written by hand; the one status anyone\n * cites. `renderToolStatusMarkdown` is the committed text form; screens render `ToolStatus` itself.\n */\nimport { ToolResultsFile, type ToolLevel, type ToolLevelResult, type ToolPlatform, type ToolTransport } from \"../schema/tools\";\nimport { EXCLUDED_TOOLS, TOOL_CATALOG, TOOL_GROUPS, type CatalogTool, type ToolGroupId, type ToolState } from \"./catalog\";\n\nexport const TOOL_LEVELS: readonly ToolLevel[] = [\"programmatic\", \"protocol\", \"chat\"];\nexport const TOOL_PLATFORMS: readonly ToolPlatform[] = [\"darwin\", \"win32\", \"linux\"];\n\n/**\n * `pass`: every required proof passed and none failed. `partial`: passes so far, a required proof\n * missing (`missing` says which). `fail`: the latest run of some proof failed. `untested`: nothing\n * ran. `not_built`: the tool is planned. `unsupported`: the tool does not exist on this platform.\n */\nconst UUID_IN_NAME = /[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/gi;\n\nexport type CellState = \"pass\" | \"partial\" | \"fail\" | \"untested\" | \"not_built\" | \"unsupported\";\n\nexport interface StatusEvidence {\n readonly suite: string;\n readonly test: string;\n readonly transport: ToolTransport;\n readonly outcome: ToolLevelResult[\"outcome\"];\n readonly remote_network: boolean;\n readonly commit: string;\n readonly run_at_ms: number;\n readonly detail: string;\n /** Chat level: the tool calls the turn made, of any tool (absent on older evidence). */\n readonly calls_made?: number;\n}\n\n/**\n * A run that never exercised the tool: a `skip`, or a chat turn that made no tool calls at all (the\n * model answered in prose, or the chat request failed). It is shown as the latest run but is never\n * evidence about the tool, so it can neither prove a cell nor turn a proven one red.\n */\nexport function isInconclusive(e: Pick<StatusEvidence, \"outcome\" | \"calls_made\">): boolean {\n return e.outcome === \"skip\" || e.calls_made === 0;\n}\n\nexport interface StatusCell {\n readonly state: CellState;\n /** Required proofs not yet passed, e.g. \"relay from another network\". */\n readonly missing: readonly string[];\n readonly last_run_at_ms: number | null;\n readonly evidence: readonly StatusEvidence[];\n}\n\nexport interface StatusRow {\n readonly tool: string;\n readonly group: ToolGroupId;\n readonly tool_state: ToolState;\n readonly summary: string;\n readonly note: string | null;\n readonly cells: Readonly<Record<ToolPlatform, Readonly<Record<ToolLevel, StatusCell>>>>;\n /** Working on a platform = all three levels pass there (SPEC §10). */\n readonly working: Readonly<Record<ToolPlatform, boolean>>;\n}\n\nexport interface ToolStatus {\n readonly schema: \"matrx.tool-status.v1\";\n readonly generated_at_ms: number;\n readonly commits: readonly string[];\n readonly rows: readonly StatusRow[];\n readonly totals: Readonly<Record<ToolPlatform, { readonly working: number; readonly built: number; readonly tools: number }>>;\n}\n\n/** What each level needs before it reads `pass`. Level 2 is the transports AND the relay from another network. */\nconst REQUIRED: Readonly<Record<ToolLevel, readonly { readonly label: string; readonly ok: (e: StatusEvidence) => boolean }[]>> = {\n programmatic: [{ label: \"in process\", ok: (e) => e.transport === \"in_process\" }],\n protocol: [\n { label: \"localhost\", ok: (e) => e.transport === \"localhost\" },\n { label: \"relay\", ok: (e) => e.transport === \"relay\" },\n { label: \"relay from another network\", ok: (e) => e.transport === \"relay\" && e.remote_network },\n ],\n chat: [{ label: \"a real agent in a real chat\", ok: (e) => e.transport === \"agent\" }],\n};\n\nfunction cellFor(tool: CatalogTool, platform: ToolPlatform, level: ToolLevel, evidence: StatusEvidence[]): StatusCell {\n if (!tool.platforms.includes(platform)) return { state: \"unsupported\", missing: [], last_run_at_ms: null, evidence: [] };\n // The latest DECISIVE run of each (suite, test, transport, network) decides; older runs are\n // history. A run that never exercised the tool (`isInconclusive`) never replaces a decisive one:\n // it is kept beside it, when newer, so the table still shows that the last run proved nothing.\n const latest = new Map<string, StatusEvidence>();\n const latestInconclusive = new Map<string, StatusEvidence>();\n for (const e of evidence) {\n // A uuid in a test name (the agent a chat proof ran, a conversation) is run data, never the\n // proof's identity: the same proof under a new test agent replaces the old one's result.\n const key = `${e.suite}\\u0000${e.test.replace(UUID_IN_NAME, \"<id>\")}\\u0000${e.transport}\\u0000${e.remote_network}`;\n const into = isInconclusive(e) ? latestInconclusive : latest;\n const prev = into.get(key);\n if (!prev || prev.run_at_ms < e.run_at_ms) into.set(key, e);\n }\n const runs = [...latest.values()].sort((a, b) => b.run_at_ms - a.run_at_ms);\n const unproven = [...latestInconclusive].filter(([k, e]) => (latest.get(k)?.run_at_ms ?? -1) < e.run_at_ms).map(([, e]) => e);\n const shown = [...runs, ...unproven].sort((a, b) => b.run_at_ms - a.run_at_ms);\n const last = runs[0]?.run_at_ms ?? null;\n if (tool.state === \"planned\" && runs.length === 0) return { state: \"not_built\", missing: [], last_run_at_ms: null, evidence: [] };\n if (runs.length === 0) return { state: \"untested\", missing: REQUIRED[level].map((r) => r.label), last_run_at_ms: null, evidence: shown };\n if (runs.some((e) => e.outcome === \"fail\")) return { state: \"fail\", missing: [], last_run_at_ms: last, evidence: shown };\n const missing = REQUIRED[level].filter((r) => !runs.some((e) => e.outcome === \"pass\" && r.ok(e))).map((r) => r.label);\n return { state: missing.length === 0 ? \"pass\" : \"partial\", missing, last_run_at_ms: last, evidence: shown };\n}\n\n/** Build the table from every results file. Throws when a file is off-contract (never silently skipped). */\nexport function buildToolStatus(files: readonly unknown[], opts: { readonly generatedAtMs: number }): ToolStatus {\n const parsed = files.map((f, i) => {\n const r = ToolResultsFile.safeParse(f);\n if (!r.success) throw new Error(`tool results file #${i} is off-contract: ${r.error.issues[0]?.path.join(\".\")} ${r.error.issues[0]?.message}`);\n return r.data;\n });\n const known = new Set(TOOL_CATALOG.map((t) => t.name));\n const byKey = new Map<string, StatusEvidence[]>();\n for (const file of parsed) {\n for (const r of file.results) {\n if (!known.has(r.tool)) throw new Error(`a result names ${r.tool}, which is not in the tool catalog`);\n const key = `${r.tool}|${r.platform}|${r.level}`;\n const list = byKey.get(key) ?? [];\n list.push({\n suite: r.suite,\n test: r.test,\n transport: r.transport,\n outcome: r.outcome,\n remote_network: r.remote_network,\n commit: file.commit,\n run_at_ms: r.run_at_ms,\n detail: r.detail,\n ...(r.calls_made === undefined ? {} : { calls_made: r.calls_made }),\n });\n byKey.set(key, list);\n }\n }\n const groupOrder = new Map(TOOL_GROUPS.map((g) => [g.id, g.order]));\n const tools = [...TOOL_CATALOG].sort((a, b) => (groupOrder.get(a.group) ?? 99) - (groupOrder.get(b.group) ?? 99));\n const rows: StatusRow[] = tools.map((tool) => {\n const cells = {} as Record<ToolPlatform, Record<ToolLevel, StatusCell>>;\n const working = {} as Record<ToolPlatform, boolean>;\n for (const platform of TOOL_PLATFORMS) {\n const perLevel = {} as Record<ToolLevel, StatusCell>;\n for (const level of TOOL_LEVELS) perLevel[level] = cellFor(tool, platform, level, byKey.get(`${tool.name}|${platform}|${level}`) ?? []);\n cells[platform] = perLevel;\n working[platform] = TOOL_LEVELS.every((l) => perLevel[l].state === \"pass\");\n }\n return { tool: tool.name, group: tool.group, tool_state: tool.state, summary: tool.summary, note: tool.note ?? null, cells, working };\n });\n const totals = {} as Record<ToolPlatform, { working: number; built: number; tools: number }>;\n for (const platform of TOOL_PLATFORMS) {\n const onPlatform = TOOL_CATALOG.filter((t) => t.platforms.includes(platform));\n totals[platform] = {\n working: rows.filter((r) => r.working[platform]).length,\n built: onPlatform.filter((t) => t.state !== \"planned\").length,\n tools: onPlatform.length,\n };\n }\n const commits = [...new Set(parsed.map((f) => f.commit))].sort();\n return { schema: \"matrx.tool-status.v1\", generated_at_ms: opts.generatedAtMs, commits, rows, totals };\n}\n\nconst MARK: Readonly<Record<CellState, string>> = { pass: \"✓\", partial: \"◐\", fail: \"✗\", untested: \"·\", not_built: \"—\", unsupported: \" \" };\n\n/** The committed text form. Columns: per platform, the three levels (P = programmatic, R = protocol, C = chat). */\nexport function renderToolStatusMarkdown(status: ToolStatus): string {\n const lines: string[] = [\n \"<!-- GENERATED by `pnpm tools:status` from test results. Never edit by hand. -->\",\n \"# Local tools: status\",\n \"\",\n `Generated ${new Date(status.generated_at_ms).toISOString()} from commits ${status.commits.join(\", \") || \"none\"}.`,\n \"\",\n \"✓ pass · ◐ passing so far, a required proof missing · ✗ fail · `·` untested · — not built. Levels: P programmatic, R protocol, C chat.\",\n \"\",\n \"| Platform | Working | Built | Tools |\",\n \"|---|---|---|---|\",\n ...TOOL_PLATFORMS.map((p) => `| ${p} | ${status.totals[p].working} | ${status.totals[p].built} | ${status.totals[p].tools} |`),\n \"\",\n ];\n for (const group of TOOL_GROUPS) {\n const rows = status.rows.filter((r) => r.group === group.id);\n if (rows.length === 0) continue;\n lines.push(`## ${group.order}. ${group.title}`, \"\", \"| Tool | darwin P R C | win32 P R C | linux P R C | Missing |\", \"|---|---|---|---|---|\");\n for (const r of rows) {\n const cols = TOOL_PLATFORMS.map((p) => TOOL_LEVELS.map((l) => MARK[r.cells[p][l].state]).join(\" \"));\n const missing = new Set<string>();\n for (const p of TOOL_PLATFORMS) for (const l of TOOL_LEVELS) for (const m of r.cells[p][l].missing) if (r.cells[p][l].state !== \"untested\") missing.add(`${p} ${l}: ${m}`);\n const name = r.tool_state === \"broken\" ? `${r.tool} (broken: ${r.note ?? \"\"})` : r.tool;\n lines.push(`| ${name} | ${cols.join(\" | \")} | ${[...missing].join(\"; \")} |`);\n }\n lines.push(\"\");\n }\n const excluded = Object.entries(EXCLUDED_TOOLS);\n if (excluded.length > 0) {\n lines.push(\"## Not device tools\", \"\", \"| Tool | Why |\", \"|---|---|\", ...excluded.map(([name, why]) => `| ${name} | ${why} |`), \"\");\n }\n return lines.join(\"\\n\");\n}\n","/**\n * The per-device tool policy's op rule (Matrx 2: Agents › Tools' switches, the\n * `desktop.tools/disabled_on_device` knob). The relay carries an op, never the tool that sent it, and\n * several tools share ops (fs_read, fs_write and fs_edit all read with `fs.read`; shell_execute and\n * shell_python both run `exec.run`). So an op is refused when EVERY catalog tool that sends it is\n * turned off. Pure, data-only: the core enforces it on relay connections, the screen explains it.\n */\nimport { TOOL_CATALOG } from \"./catalog\";\n\n/** The ops refused when these tools are off: those every sending tool has turned off. */\nexport function refusedOps(disabledTools: readonly string[]): ReadonlySet<string> {\n const off = new Set(disabledTools);\n const senders = new Map<string, string[]>();\n for (const tool of TOOL_CATALOG) for (const op of tool.ops) senders.set(op, [...(senders.get(op) ?? []), tool.name]);\n const refused = new Set<string>();\n for (const [op, tools] of senders) if (tools.every((t) => off.has(t))) refused.add(op);\n return refused;\n}\n\n/** The catalog tools that send this op. */\nexport function toolsSending(op: string): string[] {\n return TOOL_CATALOG.filter((t) => t.ops.includes(op)).map((t) => t.name);\n}\n\n/**\n * For one tool switched off: the tools still on that keep ALL its ops open (turning it off alone\n * stops nothing until they are off too). Empty when turning it off stops at least one op.\n */\nexport function sharedOpsBlocking(tool: string, disabledTools: readonly string[]): string[] {\n const entry = TOOL_CATALOG.find((t) => t.name === tool);\n if (!entry || entry.ops.length === 0) return [];\n const off = new Set([...disabledTools, tool]);\n const refused = refusedOps([...off]);\n if (entry.ops.some((op) => refused.has(op))) return [];\n const keepers = new Set<string>();\n for (const op of entry.ops) for (const other of TOOL_CATALOG) if (other.name !== tool && !off.has(other.name) && other.ops.includes(op)) keepers.add(other.name);\n return [...keepers].sort();\n}\n"],"mappings":"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","names":["tool","tool"]}
|
|
@@ -711,7 +711,7 @@ type OpSpec = {
|
|
|
711
711
|
readonly params: z.ZodType;
|
|
712
712
|
readonly result: z.ZodType;
|
|
713
713
|
readonly kind: "unary" | "stream" | "resource";
|
|
714
|
-
readonly since: "1.0" | "1.2" | "1.3" | "1.4" | "1.5" | "1.6" | "1.8" | "1.9" | "1.10" | "1.11" | "1.16" | "1.17" | "1.19" | "1.20" | "1.21" | "1.22" | "1.23" | "1.24" | "1.26" | "1.28" | "1.29" | "1.30" | "1.31" | "1.37" | "1.38" | "1.39" | "1.40" | "1.43" | "1.44" | "1.45" | "1.47" | "1.50" | "1.55" | "1.56";
|
|
714
|
+
readonly since: "1.0" | "1.2" | "1.3" | "1.4" | "1.5" | "1.6" | "1.8" | "1.9" | "1.10" | "1.11" | "1.16" | "1.17" | "1.19" | "1.20" | "1.21" | "1.22" | "1.23" | "1.24" | "1.26" | "1.28" | "1.29" | "1.30" | "1.31" | "1.37" | "1.38" | "1.39" | "1.40" | "1.43" | "1.44" | "1.45" | "1.47" | "1.50" | "1.55" | "1.56" | "1.64";
|
|
715
715
|
readonly errors: readonly z.infer<typeof ErrorCode>[];
|
|
716
716
|
};
|
|
717
717
|
declare const OPS: {
|
|
@@ -3831,6 +3831,7 @@ declare const OPS: {
|
|
|
3831
3831
|
readonly "window.list": {
|
|
3832
3832
|
readonly params: z.ZodObject<{
|
|
3833
3833
|
title: z.ZodOptional<z.ZodString>;
|
|
3834
|
+
app: z.ZodOptional<z.ZodString>;
|
|
3834
3835
|
limit: z.ZodDefault<z.ZodInt>;
|
|
3835
3836
|
}, z.core.$strict>;
|
|
3836
3837
|
readonly result: z.ZodObject<{
|
|
@@ -3898,9 +3899,19 @@ declare const OPS: {
|
|
|
3898
3899
|
readonly "window.minimize": {
|
|
3899
3900
|
readonly params: z.ZodObject<{
|
|
3900
3901
|
id: z.ZodInt;
|
|
3902
|
+
mode: z.ZodOptional<z.ZodEnum<{
|
|
3903
|
+
minimize: "minimize";
|
|
3904
|
+
maximize: "maximize";
|
|
3905
|
+
restore: "restore";
|
|
3906
|
+
}>>;
|
|
3901
3907
|
}, z.core.$strict>;
|
|
3902
3908
|
readonly result: z.ZodObject<{
|
|
3903
3909
|
id: z.ZodInt;
|
|
3910
|
+
mode: z.ZodOptional<z.ZodEnum<{
|
|
3911
|
+
minimize: "minimize";
|
|
3912
|
+
maximize: "maximize";
|
|
3913
|
+
restore: "restore";
|
|
3914
|
+
}>>;
|
|
3904
3915
|
}, z.core.$strict>;
|
|
3905
3916
|
readonly kind: "unary";
|
|
3906
3917
|
readonly since: "1.4";
|
|
@@ -4440,12 +4451,16 @@ declare const OPS: {
|
|
|
4440
4451
|
seconds: z.ZodNumber;
|
|
4441
4452
|
device_id: z.ZodOptional<z.ZodString>;
|
|
4442
4453
|
path: z.ZodOptional<z.ZodString>;
|
|
4454
|
+
channels: z.ZodOptional<z.ZodInt>;
|
|
4455
|
+
sample_rate: z.ZodOptional<z.ZodInt>;
|
|
4443
4456
|
}, z.core.$strict>;
|
|
4444
4457
|
readonly result: z.ZodObject<{
|
|
4445
4458
|
path: z.ZodString;
|
|
4446
4459
|
seconds: z.ZodNumber;
|
|
4447
4460
|
bytes: z.ZodInt;
|
|
4448
4461
|
peak: z.ZodNumber;
|
|
4462
|
+
channels: z.ZodOptional<z.ZodInt>;
|
|
4463
|
+
sample_rate: z.ZodOptional<z.ZodInt>;
|
|
4449
4464
|
}, z.core.$strict>;
|
|
4450
4465
|
readonly kind: "unary";
|
|
4451
4466
|
readonly since: "1.6";
|
|
@@ -4454,6 +4469,7 @@ declare const OPS: {
|
|
|
4454
4469
|
readonly "audio.play": {
|
|
4455
4470
|
readonly params: z.ZodObject<{
|
|
4456
4471
|
path: z.ZodString;
|
|
4472
|
+
device_id: z.ZodOptional<z.ZodString>;
|
|
4457
4473
|
}, z.core.$strict>;
|
|
4458
4474
|
readonly result: z.ZodObject<{
|
|
4459
4475
|
path: z.ZodString;
|
|
@@ -5157,6 +5173,12 @@ declare const OPS: {
|
|
|
5157
5173
|
info: "info";
|
|
5158
5174
|
}>;
|
|
5159
5175
|
text: z.ZodString;
|
|
5176
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
5177
|
+
kind: z.ZodLiteral<"continued">;
|
|
5178
|
+
id: z.ZodString;
|
|
5179
|
+
from: z.ZodString;
|
|
5180
|
+
text: z.ZodString;
|
|
5181
|
+
at: z.ZodNullable<z.ZodString>;
|
|
5160
5182
|
}, z.core.$strict>, z.ZodObject<{
|
|
5161
5183
|
kind: z.ZodLiteral<"error">;
|
|
5162
5184
|
id: z.ZodString;
|
|
@@ -5224,6 +5246,12 @@ declare const OPS: {
|
|
|
5224
5246
|
info: "info";
|
|
5225
5247
|
}>;
|
|
5226
5248
|
text: z.ZodString;
|
|
5249
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
5250
|
+
kind: z.ZodLiteral<"continued">;
|
|
5251
|
+
id: z.ZodString;
|
|
5252
|
+
from: z.ZodString;
|
|
5253
|
+
text: z.ZodString;
|
|
5254
|
+
at: z.ZodNullable<z.ZodString>;
|
|
5227
5255
|
}, z.core.$strict>, z.ZodObject<{
|
|
5228
5256
|
kind: z.ZodLiteral<"error">;
|
|
5229
5257
|
id: z.ZodString;
|
|
@@ -6947,6 +6975,64 @@ declare const OPS: {
|
|
|
6947
6975
|
readonly since: "1.39";
|
|
6948
6976
|
readonly errors: readonly ["AUTH_REQUIRED", "NOT_FOUND", "INVALID_PARAMS", "DEVICE_OFFLINE", "INTERNAL"];
|
|
6949
6977
|
};
|
|
6978
|
+
readonly "account.agents.versions": {
|
|
6979
|
+
readonly params: z.ZodObject<{
|
|
6980
|
+
agent_id: z.ZodString;
|
|
6981
|
+
offset: z.ZodOptional<z.ZodInt>;
|
|
6982
|
+
limit: z.ZodOptional<z.ZodInt>;
|
|
6983
|
+
}, z.core.$strict>;
|
|
6984
|
+
readonly result: z.ZodObject<{
|
|
6985
|
+
state: z.ZodEnum<{
|
|
6986
|
+
ok: "ok";
|
|
6987
|
+
signed_out: "signed_out";
|
|
6988
|
+
unavailable: "unavailable";
|
|
6989
|
+
}>;
|
|
6990
|
+
problem: z.ZodNullable<z.ZodString>;
|
|
6991
|
+
current_version: z.ZodNullable<z.ZodInt>;
|
|
6992
|
+
rows: z.ZodArray<z.ZodObject<{
|
|
6993
|
+
version_id: z.ZodString;
|
|
6994
|
+
version_number: z.ZodInt;
|
|
6995
|
+
changed_at_ms: z.ZodInt;
|
|
6996
|
+
note: z.ZodNullable<z.ZodString>;
|
|
6997
|
+
}, z.core.$strict>>;
|
|
6998
|
+
}, z.core.$strict>;
|
|
6999
|
+
readonly kind: "unary";
|
|
7000
|
+
readonly since: "1.64";
|
|
7001
|
+
readonly errors: readonly ["INVALID_PARAMS", "INTERNAL"];
|
|
7002
|
+
};
|
|
7003
|
+
readonly "account.agents.version_diff": {
|
|
7004
|
+
readonly params: z.ZodObject<{
|
|
7005
|
+
agent_id: z.ZodString;
|
|
7006
|
+
version_number: z.ZodInt;
|
|
7007
|
+
}, z.core.$strict>;
|
|
7008
|
+
readonly result: z.ZodObject<{
|
|
7009
|
+
state: z.ZodEnum<{
|
|
7010
|
+
ok: "ok";
|
|
7011
|
+
signed_out: "signed_out";
|
|
7012
|
+
unavailable: "unavailable";
|
|
7013
|
+
}>;
|
|
7014
|
+
problem: z.ZodNullable<z.ZodString>;
|
|
7015
|
+
version_number: z.ZodInt;
|
|
7016
|
+
current_version: z.ZodNullable<z.ZodInt>;
|
|
7017
|
+
old: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
7018
|
+
current: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
7019
|
+
}, z.core.$strict>;
|
|
7020
|
+
readonly kind: "unary";
|
|
7021
|
+
readonly since: "1.64";
|
|
7022
|
+
readonly errors: readonly ["INVALID_PARAMS", "INTERNAL"];
|
|
7023
|
+
};
|
|
7024
|
+
readonly "account.agents.restore_version": {
|
|
7025
|
+
readonly params: z.ZodObject<{
|
|
7026
|
+
agent_id: z.ZodString;
|
|
7027
|
+
version_number: z.ZodInt;
|
|
7028
|
+
}, z.core.$strict>;
|
|
7029
|
+
readonly result: z.ZodObject<{
|
|
7030
|
+
restored_version: z.ZodInt;
|
|
7031
|
+
}, z.core.$strict>;
|
|
7032
|
+
readonly kind: "unary";
|
|
7033
|
+
readonly since: "1.64";
|
|
7034
|
+
readonly errors: readonly ["AUTH_REQUIRED", "NOT_FOUND", "INVALID_PARAMS", "DEVICE_OFFLINE", "INTERNAL"];
|
|
7035
|
+
};
|
|
6950
7036
|
readonly "apps.windows.update_state": {
|
|
6951
7037
|
readonly params: z.ZodObject<{
|
|
6952
7038
|
app_key: z.ZodString;
|
|
@@ -8562,6 +8648,12 @@ declare const EVENTS: {
|
|
|
8562
8648
|
info: "info";
|
|
8563
8649
|
}>;
|
|
8564
8650
|
text: z.ZodString;
|
|
8651
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
8652
|
+
kind: z.ZodLiteral<"continued">;
|
|
8653
|
+
id: z.ZodString;
|
|
8654
|
+
from: z.ZodString;
|
|
8655
|
+
text: z.ZodString;
|
|
8656
|
+
at: z.ZodNullable<z.ZodString>;
|
|
8565
8657
|
}, z.core.$strict>, z.ZodObject<{
|
|
8566
8658
|
kind: z.ZodLiteral<"error">;
|
|
8567
8659
|
id: z.ZodString;
|
|
@@ -11506,6 +11598,12 @@ declare const NAMED_SCHEMAS: {
|
|
|
11506
11598
|
info: "info";
|
|
11507
11599
|
}>;
|
|
11508
11600
|
text: z.ZodString;
|
|
11601
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
11602
|
+
kind: z.ZodLiteral<"continued">;
|
|
11603
|
+
id: z.ZodString;
|
|
11604
|
+
from: z.ZodString;
|
|
11605
|
+
text: z.ZodString;
|
|
11606
|
+
at: z.ZodNullable<z.ZodString>;
|
|
11509
11607
|
}, z.core.$strict>, z.ZodObject<{
|
|
11510
11608
|
kind: z.ZodLiteral<"error">;
|
|
11511
11609
|
id: z.ZodString;
|
|
@@ -11556,6 +11654,12 @@ declare const NAMED_SCHEMAS: {
|
|
|
11556
11654
|
info: "info";
|
|
11557
11655
|
}>;
|
|
11558
11656
|
text: z.ZodString;
|
|
11657
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
11658
|
+
kind: z.ZodLiteral<"continued">;
|
|
11659
|
+
id: z.ZodString;
|
|
11660
|
+
from: z.ZodString;
|
|
11661
|
+
text: z.ZodString;
|
|
11662
|
+
at: z.ZodNullable<z.ZodString>;
|
|
11559
11663
|
}, z.core.$strict>, z.ZodObject<{
|
|
11560
11664
|
kind: z.ZodLiteral<"error">;
|
|
11561
11665
|
id: z.ZodString;
|
|
@@ -12308,6 +12412,12 @@ declare const NAMED_SCHEMAS: {
|
|
|
12308
12412
|
info: "info";
|
|
12309
12413
|
}>;
|
|
12310
12414
|
text: z.ZodString;
|
|
12415
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
12416
|
+
kind: z.ZodLiteral<"continued">;
|
|
12417
|
+
id: z.ZodString;
|
|
12418
|
+
from: z.ZodString;
|
|
12419
|
+
text: z.ZodString;
|
|
12420
|
+
at: z.ZodNullable<z.ZodString>;
|
|
12311
12421
|
}, z.core.$strict>, z.ZodObject<{
|
|
12312
12422
|
kind: z.ZodLiteral<"error">;
|
|
12313
12423
|
id: z.ZodString;
|
|
@@ -12370,6 +12480,12 @@ declare const NAMED_SCHEMAS: {
|
|
|
12370
12480
|
info: "info";
|
|
12371
12481
|
}>;
|
|
12372
12482
|
text: z.ZodString;
|
|
12483
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
12484
|
+
kind: z.ZodLiteral<"continued">;
|
|
12485
|
+
id: z.ZodString;
|
|
12486
|
+
from: z.ZodString;
|
|
12487
|
+
text: z.ZodString;
|
|
12488
|
+
at: z.ZodNullable<z.ZodString>;
|
|
12373
12489
|
}, z.core.$strict>, z.ZodObject<{
|
|
12374
12490
|
kind: z.ZodLiteral<"error">;
|
|
12375
12491
|
id: z.ZodString;
|
|
@@ -13296,6 +13412,12 @@ declare const NAMED_SCHEMAS: {
|
|
|
13296
13412
|
info: "info";
|
|
13297
13413
|
}>;
|
|
13298
13414
|
text: z.ZodString;
|
|
13415
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
13416
|
+
kind: z.ZodLiteral<"continued">;
|
|
13417
|
+
id: z.ZodString;
|
|
13418
|
+
from: z.ZodString;
|
|
13419
|
+
text: z.ZodString;
|
|
13420
|
+
at: z.ZodNullable<z.ZodString>;
|
|
13299
13421
|
}, z.core.$strict>, z.ZodObject<{
|
|
13300
13422
|
kind: z.ZodLiteral<"error">;
|
|
13301
13423
|
id: z.ZodString;
|
|
@@ -13947,6 +14069,7 @@ declare const NAMED_SCHEMAS: {
|
|
|
13947
14069
|
}, z.core.$strict>;
|
|
13948
14070
|
readonly WindowListParams: z.ZodObject<{
|
|
13949
14071
|
title: z.ZodOptional<z.ZodString>;
|
|
14072
|
+
app: z.ZodOptional<z.ZodString>;
|
|
13950
14073
|
limit: z.ZodDefault<z.ZodInt>;
|
|
13951
14074
|
}, z.core.$strict>;
|
|
13952
14075
|
readonly WindowListResult: z.ZodObject<{
|
|
@@ -13999,10 +14122,25 @@ declare const NAMED_SCHEMAS: {
|
|
|
13999
14122
|
}, z.core.$strict>;
|
|
14000
14123
|
readonly WindowMinimizeParams: z.ZodObject<{
|
|
14001
14124
|
id: z.ZodInt;
|
|
14125
|
+
mode: z.ZodOptional<z.ZodEnum<{
|
|
14126
|
+
minimize: "minimize";
|
|
14127
|
+
maximize: "maximize";
|
|
14128
|
+
restore: "restore";
|
|
14129
|
+
}>>;
|
|
14002
14130
|
}, z.core.$strict>;
|
|
14003
14131
|
readonly WindowMinimizeResult: z.ZodObject<{
|
|
14004
14132
|
id: z.ZodInt;
|
|
14133
|
+
mode: z.ZodOptional<z.ZodEnum<{
|
|
14134
|
+
minimize: "minimize";
|
|
14135
|
+
maximize: "maximize";
|
|
14136
|
+
restore: "restore";
|
|
14137
|
+
}>>;
|
|
14005
14138
|
}, z.core.$strict>;
|
|
14139
|
+
readonly WindowState: z.ZodEnum<{
|
|
14140
|
+
minimize: "minimize";
|
|
14141
|
+
maximize: "maximize";
|
|
14142
|
+
restore: "restore";
|
|
14143
|
+
}>;
|
|
14006
14144
|
readonly InputKey: z.ZodEnum<{
|
|
14007
14145
|
0: "0";
|
|
14008
14146
|
1: "1";
|
|
@@ -14637,15 +14775,20 @@ declare const NAMED_SCHEMAS: {
|
|
|
14637
14775
|
seconds: z.ZodNumber;
|
|
14638
14776
|
device_id: z.ZodOptional<z.ZodString>;
|
|
14639
14777
|
path: z.ZodOptional<z.ZodString>;
|
|
14778
|
+
channels: z.ZodOptional<z.ZodInt>;
|
|
14779
|
+
sample_rate: z.ZodOptional<z.ZodInt>;
|
|
14640
14780
|
}, z.core.$strict>;
|
|
14641
14781
|
readonly AudioRecordResult: z.ZodObject<{
|
|
14642
14782
|
path: z.ZodString;
|
|
14643
14783
|
seconds: z.ZodNumber;
|
|
14644
14784
|
bytes: z.ZodInt;
|
|
14645
14785
|
peak: z.ZodNumber;
|
|
14786
|
+
channels: z.ZodOptional<z.ZodInt>;
|
|
14787
|
+
sample_rate: z.ZodOptional<z.ZodInt>;
|
|
14646
14788
|
}, z.core.$strict>;
|
|
14647
14789
|
readonly AudioPlayParams: z.ZodObject<{
|
|
14648
14790
|
path: z.ZodString;
|
|
14791
|
+
device_id: z.ZodOptional<z.ZodString>;
|
|
14649
14792
|
}, z.core.$strict>;
|
|
14650
14793
|
readonly AudioPlayResult: z.ZodObject<{
|
|
14651
14794
|
path: z.ZodString;
|
|
@@ -18332,6 +18475,55 @@ declare const NAMED_SCHEMAS: {
|
|
|
18332
18475
|
readonly AccountAgentsFavoriteResult: z.ZodObject<{
|
|
18333
18476
|
favorite: z.ZodBoolean;
|
|
18334
18477
|
}, z.core.$strict>;
|
|
18478
|
+
readonly AccountAgentVersion: z.ZodObject<{
|
|
18479
|
+
version_id: z.ZodString;
|
|
18480
|
+
version_number: z.ZodInt;
|
|
18481
|
+
changed_at_ms: z.ZodInt;
|
|
18482
|
+
note: z.ZodNullable<z.ZodString>;
|
|
18483
|
+
}, z.core.$strict>;
|
|
18484
|
+
readonly AccountAgentsVersionsParams: z.ZodObject<{
|
|
18485
|
+
agent_id: z.ZodString;
|
|
18486
|
+
offset: z.ZodOptional<z.ZodInt>;
|
|
18487
|
+
limit: z.ZodOptional<z.ZodInt>;
|
|
18488
|
+
}, z.core.$strict>;
|
|
18489
|
+
readonly AccountAgentsVersionsResult: z.ZodObject<{
|
|
18490
|
+
state: z.ZodEnum<{
|
|
18491
|
+
ok: "ok";
|
|
18492
|
+
signed_out: "signed_out";
|
|
18493
|
+
unavailable: "unavailable";
|
|
18494
|
+
}>;
|
|
18495
|
+
problem: z.ZodNullable<z.ZodString>;
|
|
18496
|
+
current_version: z.ZodNullable<z.ZodInt>;
|
|
18497
|
+
rows: z.ZodArray<z.ZodObject<{
|
|
18498
|
+
version_id: z.ZodString;
|
|
18499
|
+
version_number: z.ZodInt;
|
|
18500
|
+
changed_at_ms: z.ZodInt;
|
|
18501
|
+
note: z.ZodNullable<z.ZodString>;
|
|
18502
|
+
}, z.core.$strict>>;
|
|
18503
|
+
}, z.core.$strict>;
|
|
18504
|
+
readonly AccountAgentsVersionDiffParams: z.ZodObject<{
|
|
18505
|
+
agent_id: z.ZodString;
|
|
18506
|
+
version_number: z.ZodInt;
|
|
18507
|
+
}, z.core.$strict>;
|
|
18508
|
+
readonly AccountAgentsVersionDiffResult: z.ZodObject<{
|
|
18509
|
+
state: z.ZodEnum<{
|
|
18510
|
+
ok: "ok";
|
|
18511
|
+
signed_out: "signed_out";
|
|
18512
|
+
unavailable: "unavailable";
|
|
18513
|
+
}>;
|
|
18514
|
+
problem: z.ZodNullable<z.ZodString>;
|
|
18515
|
+
version_number: z.ZodInt;
|
|
18516
|
+
current_version: z.ZodNullable<z.ZodInt>;
|
|
18517
|
+
old: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
18518
|
+
current: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
18519
|
+
}, z.core.$strict>;
|
|
18520
|
+
readonly AccountAgentsRestoreVersionParams: z.ZodObject<{
|
|
18521
|
+
agent_id: z.ZodString;
|
|
18522
|
+
version_number: z.ZodInt;
|
|
18523
|
+
}, z.core.$strict>;
|
|
18524
|
+
readonly AccountAgentsRestoreVersionResult: z.ZodObject<{
|
|
18525
|
+
restored_version: z.ZodInt;
|
|
18526
|
+
}, z.core.$strict>;
|
|
18335
18527
|
readonly AppsWindowsUpdateStateParams: z.ZodObject<{
|
|
18336
18528
|
app_key: z.ZodString;
|
|
18337
18529
|
}, z.core.$strict>;
|