cli-jaw 2.2.0 → 2.2.1-preview.20260625145621

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.
Files changed (190) hide show
  1. package/README.ko.md +1 -1
  2. package/README.md +22 -3
  3. package/README.zh-CN.md +1 -1
  4. package/dist/bin/cli-jaw.js +13 -1
  5. package/dist/bin/cli-jaw.js.map +1 -1
  6. package/dist/bin/commands/bgtask.js +2 -1
  7. package/dist/bin/commands/bgtask.js.map +1 -1
  8. package/dist/bin/commands/dispatch-batch-summary.js +38 -0
  9. package/dist/bin/commands/dispatch-batch-summary.js.map +1 -0
  10. package/dist/bin/commands/dispatch.js +91 -52
  11. package/dist/bin/commands/dispatch.js.map +1 -1
  12. package/dist/bin/commands/hooks.js +58 -0
  13. package/dist/bin/commands/hooks.js.map +1 -0
  14. package/dist/bin/commands/jwc.js +237 -0
  15. package/dist/bin/commands/jwc.js.map +1 -0
  16. package/dist/bin/commands/orchestrate.js +37 -2
  17. package/dist/bin/commands/orchestrate.js.map +1 -1
  18. package/dist/bin/commands/provider.js +213 -0
  19. package/dist/bin/commands/provider.js.map +1 -0
  20. package/dist/bin/commands/skill.js +17 -4
  21. package/dist/bin/commands/skill.js.map +1 -1
  22. package/dist/bin/commands/worker.js +162 -4
  23. package/dist/bin/commands/worker.js.map +1 -1
  24. package/dist/lib/mcp/skills-distribution.js +17 -19
  25. package/dist/lib/mcp/skills-distribution.js.map +1 -1
  26. package/dist/server.js +2 -1
  27. package/dist/server.js.map +1 -1
  28. package/dist/src/agent/jwc-runtime.js +12 -3
  29. package/dist/src/agent/jwc-runtime.js.map +1 -1
  30. package/dist/src/agent/spawn/queue.js +14 -0
  31. package/dist/src/agent/spawn/queue.js.map +1 -1
  32. package/dist/src/agent/spawn.js +1 -1
  33. package/dist/src/agent/spawn.js.map +1 -1
  34. package/dist/src/bgtask/recover.js +4 -1
  35. package/dist/src/bgtask/recover.js.map +1 -1
  36. package/dist/src/bgtask/registry.js +12 -2
  37. package/dist/src/bgtask/registry.js.map +1 -1
  38. package/dist/src/browser/adaptive-fetch/bm25-filter.js +47 -0
  39. package/dist/src/browser/adaptive-fetch/bm25-filter.js.map +1 -0
  40. package/dist/src/browser/adaptive-fetch/browser-escalation.js +136 -3
  41. package/dist/src/browser/adaptive-fetch/browser-escalation.js.map +1 -1
  42. package/dist/src/browser/adaptive-fetch/browser-flow.js +118 -0
  43. package/dist/src/browser/adaptive-fetch/browser-flow.js.map +1 -0
  44. package/dist/src/browser/adaptive-fetch/browser-runtime.js +10 -1
  45. package/dist/src/browser/adaptive-fetch/browser-runtime.js.map +1 -1
  46. package/dist/src/browser/adaptive-fetch/camoufox-session.js +76 -0
  47. package/dist/src/browser/adaptive-fetch/camoufox-session.js.map +1 -0
  48. package/dist/src/browser/adaptive-fetch/candidate-discovery.js +116 -0
  49. package/dist/src/browser/adaptive-fetch/candidate-discovery.js.map +1 -0
  50. package/dist/src/browser/adaptive-fetch/challenge-detector.js +1 -1
  51. package/dist/src/browser/adaptive-fetch/challenge-detector.js.map +1 -1
  52. package/dist/src/browser/adaptive-fetch/endpoint-resolvers.js +66 -5
  53. package/dist/src/browser/adaptive-fetch/endpoint-resolvers.js.map +1 -1
  54. package/dist/src/browser/adaptive-fetch/feed-parser.js +152 -0
  55. package/dist/src/browser/adaptive-fetch/feed-parser.js.map +1 -0
  56. package/dist/src/browser/adaptive-fetch/fetcher.js +20 -1
  57. package/dist/src/browser/adaptive-fetch/fetcher.js.map +1 -1
  58. package/dist/src/browser/adaptive-fetch/human-loop.js +10 -1
  59. package/dist/src/browser/adaptive-fetch/human-loop.js.map +1 -1
  60. package/dist/src/browser/adaptive-fetch/index.js +17 -397
  61. package/dist/src/browser/adaptive-fetch/index.js.map +1 -1
  62. package/dist/src/browser/adaptive-fetch/live-smoke-manifest.js +99 -0
  63. package/dist/src/browser/adaptive-fetch/live-smoke-manifest.js.map +1 -0
  64. package/dist/src/browser/adaptive-fetch/metadata.js +74 -5
  65. package/dist/src/browser/adaptive-fetch/metadata.js.map +1 -1
  66. package/dist/src/browser/adaptive-fetch/public-endpoint-normalizers.js +414 -0
  67. package/dist/src/browser/adaptive-fetch/public-endpoint-normalizers.js.map +1 -0
  68. package/dist/src/browser/adaptive-fetch/reader-adapters.js +36 -0
  69. package/dist/src/browser/adaptive-fetch/reader-adapters.js.map +1 -1
  70. package/dist/src/browser/adaptive-fetch/scheduler.js +472 -0
  71. package/dist/src/browser/adaptive-fetch/scheduler.js.map +1 -0
  72. package/dist/src/browser/adaptive-fetch/stage-types.js +2 -0
  73. package/dist/src/browser/adaptive-fetch/stage-types.js.map +1 -0
  74. package/dist/src/browser/adaptive-fetch/structured-extractor.js +117 -0
  75. package/dist/src/browser/adaptive-fetch/structured-extractor.js.map +1 -0
  76. package/dist/src/browser/adaptive-fetch/third-party-readers.js +15 -1
  77. package/dist/src/browser/adaptive-fetch/third-party-readers.js.map +1 -1
  78. package/dist/src/browser/adaptive-fetch/tls-fetch.js +81 -0
  79. package/dist/src/browser/adaptive-fetch/tls-fetch.js.map +1 -0
  80. package/dist/src/browser/adaptive-fetch/validators.js +11 -8
  81. package/dist/src/browser/adaptive-fetch/validators.js.map +1 -1
  82. package/dist/src/browser/adaptive-fetch/ytdlp-reader.js +82 -0
  83. package/dist/src/browser/adaptive-fetch/ytdlp-reader.js.map +1 -0
  84. package/dist/src/cli/commands.js +67 -13
  85. package/dist/src/cli/commands.js.map +1 -1
  86. package/dist/src/cli/handlers-search.js +28 -0
  87. package/dist/src/cli/handlers-search.js.map +1 -0
  88. package/dist/src/cli/handlers-skill-invoke.js +30 -0
  89. package/dist/src/cli/handlers-skill-invoke.js.map +1 -0
  90. package/dist/src/cli/handlers.js +12 -1
  91. package/dist/src/cli/handlers.js.map +1 -1
  92. package/dist/src/code-mode/acp-host.js +1 -8
  93. package/dist/src/code-mode/acp-host.js.map +1 -1
  94. package/dist/src/command-contract/catalog.js +22 -1
  95. package/dist/src/command-contract/catalog.js.map +1 -1
  96. package/dist/src/core/cli-detection.js +7 -0
  97. package/dist/src/core/cli-detection.js.map +1 -1
  98. package/dist/src/core/skill-cache.js +34 -0
  99. package/dist/src/core/skill-cache.js.map +1 -0
  100. package/dist/src/goal/heartbeat.js +13 -7
  101. package/dist/src/goal/heartbeat.js.map +1 -1
  102. package/dist/src/memory/heartbeat.js +12 -1
  103. package/dist/src/memory/heartbeat.js.map +1 -1
  104. package/dist/src/orchestrator/attestation.js +156 -0
  105. package/dist/src/orchestrator/attestation.js.map +1 -0
  106. package/dist/src/orchestrator/pipeline.js +34 -6
  107. package/dist/src/orchestrator/pipeline.js.map +1 -1
  108. package/dist/src/orchestrator/sanitize.js +4 -0
  109. package/dist/src/orchestrator/sanitize.js.map +1 -1
  110. package/dist/src/orchestrator/state-machine.js +69 -13
  111. package/dist/src/orchestrator/state-machine.js.map +1 -1
  112. package/dist/src/orchestrator/worker-output-store.js +64 -0
  113. package/dist/src/orchestrator/worker-output-store.js.map +1 -0
  114. package/dist/src/orchestrator/worker-progress.js.map +1 -1
  115. package/dist/src/orchestrator/worker-registry.js +91 -10
  116. package/dist/src/orchestrator/worker-registry.js.map +1 -1
  117. package/dist/src/orchestrator/worker-replay-notice.js +28 -0
  118. package/dist/src/orchestrator/worker-replay-notice.js.map +1 -0
  119. package/dist/src/orchestrator/worker-run-store.js +142 -0
  120. package/dist/src/orchestrator/worker-run-store.js.map +1 -0
  121. package/dist/src/prompt/builder.js +35 -3
  122. package/dist/src/prompt/builder.js.map +1 -1
  123. package/dist/src/prompt/context-hooks.js +210 -0
  124. package/dist/src/prompt/context-hooks.js.map +1 -0
  125. package/dist/src/prompt/templates/orchestration.md +1 -1
  126. package/dist/src/routes/bgtask.js +13 -4
  127. package/dist/src/routes/bgtask.js.map +1 -1
  128. package/dist/src/routes/command.js +1 -1
  129. package/dist/src/routes/command.js.map +1 -1
  130. package/dist/src/routes/orchestrate.js +85 -10
  131. package/dist/src/routes/orchestrate.js.map +1 -1
  132. package/dist/src/shared/runtime-observability.js +20 -0
  133. package/dist/src/shared/runtime-observability.js.map +1 -0
  134. package/dist/src/workflows/search.js +21 -0
  135. package/dist/src/workflows/search.js.map +1 -0
  136. package/package.json +11 -12
  137. package/public/dist/assets/{app-BsVpXeLC.js → app-CLrfEHAk.js} +4 -4
  138. package/public/dist/assets/bgtask-badge-4OjtCvDq.js +1 -0
  139. package/public/dist/assets/{bgtask-badge-DqMU3pM3.js → bgtask-badge-xWbw-l-0.js} +1 -1
  140. package/public/dist/assets/{employees-BhkR2-xi.js → employees-C5GPj3d3.js} +1 -1
  141. package/public/dist/assets/manager-Ceg2x8D0.js +13 -0
  142. package/public/dist/assets/{manager-U147AWWu.css → manager-CwAlpgV7.css} +1 -1
  143. package/public/dist/assets/memory-B1beDKbo.js +1 -0
  144. package/public/dist/assets/{memory-DERWDVjI.js → memory-CcnjBuo-.js} +1 -1
  145. package/public/dist/assets/{message-history-CK0ah3pB.js → message-history-BSWJwi__.js} +2 -2
  146. package/public/dist/assets/message-history-CzaziSe8.js +1 -0
  147. package/public/dist/assets/{render-CqzsW5KN.js → render-C2g_qvCg.js} +2 -2
  148. package/public/dist/assets/settings-Dst1mUjn.js +1 -0
  149. package/public/dist/assets/{settings-DdwmhI5a.js → settings-DxClXVD0.js} +1 -1
  150. package/public/dist/assets/settings-core-BW5mtFPE.js +1 -0
  151. package/public/dist/assets/{settings-core-AiF7o3Ns.js → settings-core-CSUV4-QG.js} +1 -1
  152. package/public/dist/assets/{sidebar-Bhtk2fPc.js → sidebar-CJz_SnMW.js} +3 -3
  153. package/public/dist/assets/skills-B2io6S_4.js +1 -0
  154. package/public/dist/assets/{skills-Cs8byPIx.js → skills-PKg2h1N4.js} +1 -1
  155. package/public/dist/assets/slash-commands-D1IS00Eg.js +1 -0
  156. package/public/dist/assets/{slash-commands-C5erv0KS.js → slash-commands-FMOOfedZ.js} +1 -1
  157. package/public/dist/assets/{trace-drawer-CtmD6jwj.js → trace-drawer-BoU1ucw7.js} +1 -1
  158. package/public/dist/assets/{ui-DaFl446W.js → ui-BX-IfLze.js} +1 -1
  159. package/public/dist/assets/ui-C-al0etg.js +1 -0
  160. package/public/dist/index.html +1 -1
  161. package/public/dist/manager/index.html +2 -2
  162. package/public/js/features/command-info.ts +1 -0
  163. package/public/js/render/file-links.ts +1 -1
  164. package/public/js/render/notes-vault-path.ts +1 -1
  165. package/public/locales/en.json +2 -0
  166. package/public/locales/ja.json +2 -0
  167. package/public/locales/ko.json +2 -0
  168. package/public/locales/zh.json +2 -0
  169. package/public/manager/src/SidebarRailRouter.tsx +7 -3
  170. package/public/manager/src/background-tasks/background-task-client.ts +21 -1
  171. package/public/manager/src/main.tsx +2 -0
  172. package/public/manager/src/workers/WorkerProgressMonitorPanel.tsx +2 -0
  173. package/public/manager/src/workers/WorkerRunsPanel.tsx +152 -0
  174. package/public/manager/src/workers/useWorkerRuns.ts +138 -0
  175. package/public/manager/src/workers/worker-runs-client.ts +112 -0
  176. package/public/manager/src/workers/worker-runs.css +208 -0
  177. package/scripts/bundle-sidecar.sh +2 -64
  178. package/scripts/check-electron-sidecar-no-jwc.cjs +57 -0
  179. package/scripts/install-risk-gate.mjs +3 -2
  180. package/scripts/jwc-no-global-smoke.mjs +19 -21
  181. package/public/dist/assets/bgtask-badge-YR8SMYrp.js +0 -1
  182. package/public/dist/assets/manager-ycX0r7uL.js +0 -13
  183. package/public/dist/assets/memory-CfeG2ViL.js +0 -1
  184. package/public/dist/assets/message-history-BaI36ciH.js +0 -1
  185. package/public/dist/assets/settings-VeoQiKpd.js +0 -1
  186. package/public/dist/assets/settings-core-DlfGtuWD.js +0 -1
  187. package/public/dist/assets/skills-Z0rMlwnf.js +0 -1
  188. package/public/dist/assets/slash-commands-CZKlw4A6.js +0 -1
  189. package/public/dist/assets/ui-WRcA4tUT.js +0 -1
  190. package/scripts/check-electron-sidecar-jwc.cjs +0 -117
package/README.ko.md CHANGED
@@ -5,7 +5,7 @@
5
5
  ### 나만의 AI 에이전트. 2줄이면 설치 끝. 13개 AI 런타임 표면을 하나의 대시보드에서.
6
6
 
7
7
  [![npm](https://img.shields.io/npm/v/cli-jaw)](https://npmjs.com/package/cli-jaw)
8
- [![Version](https://img.shields.io/badge/v2.1.3-GA-brightgreen)](https://github.com/lidge-jun/cli-jaw/releases)
8
+ [![Version](https://img.shields.io/badge/v2.2.0-GA-brightgreen)](https://github.com/lidge-jun/cli-jaw/releases)
9
9
  [![TypeScript](https://img.shields.io/badge/TypeScript-6.0-blue)](https://typescriptlang.org)
10
10
  [![Node](https://img.shields.io/badge/node-%3E%3D22.4-blue)](https://nodejs.org)
11
11
  [![License](https://img.shields.io/badge/license-MIT-yellow)](LICENSE)
package/README.md CHANGED
@@ -5,7 +5,7 @@
5
5
  ### Your personal AI agent. 2 lines to install. 13 AI runtime surfaces in one dashboard.
6
6
 
7
7
  [![npm](https://img.shields.io/npm/v/cli-jaw)](https://npmjs.com/package/cli-jaw)
8
- [![Version](https://img.shields.io/badge/v2.1.3-GA-brightgreen)](https://github.com/lidge-jun/cli-jaw/releases)
8
+ [![Version](https://img.shields.io/badge/v2.2.0-GA-brightgreen)](https://github.com/lidge-jun/cli-jaw/releases)
9
9
  [![TypeScript](https://img.shields.io/badge/TypeScript-6.0-blue)](https://typescriptlang.org)
10
10
  [![Node](https://img.shields.io/badge/node-%3E%3D22.4-blue)](https://nodejs.org)
11
11
  [![License](https://img.shields.io/badge/license-MIT-yellow)](LICENSE)
@@ -40,6 +40,22 @@ That's it. Open **http://localhost:24576** for the manager dashboard. Per-instan
40
40
 
41
41
  > **First time?** The default npm install initializes CLI-JAW and attempts native Claude setup. Other AI CLIs are optional; install them all during npm setup with `CLI_JAW_INSTALL_CLI_TOOLS=1 npm install -g cli-jaw` on macOS/Linux. On Windows, use the WSL install path below.
42
42
 
43
+ ### Optional JWC Runtime
44
+
45
+ JWC is optional and external-only. The default npm install and Electron desktop sidecar do not bundle `jawcode`, `@jawcode-dev`, `@oven`, `bun`, or a `jwc` payload. To use JWC, install the runtime into CLI-JAW's external prefix and opt in with the printed SDK path:
46
+
47
+ ```bash
48
+ jaw jwc install
49
+ export JWC_SDK_PATH="/absolute/path/printed/by/jaw-jwc-install/sdk.js"
50
+ jaw jwc doctor
51
+ ```
52
+
53
+ To remove the optional external JWC dependencies later:
54
+
55
+ ```bash
56
+ jaw jwc clean
57
+ ```
58
+
43
59
  <details>
44
60
  <summary><b>macOS one-click</b> — don't have Node.js? This installs everything</summary>
45
61
 
@@ -397,7 +413,7 @@ P (Plan) → A (Audit) → B (Build) → C (Check) → D (Done) → IDLE
397
413
  | **C — Check** | Type-check (`tsc --noEmit`), docs update, consistency check |
398
414
  | **D — Done** | Summary of all changes. Returns to idle |
399
415
 
400
- State is database-persisted and survives restarts. Workers cannot modify files — only verify. Activate with `jaw orchestrate`, `/orchestrate`, or `/pabcd`; resume an active worklog explicitly with `/continue`. Workflow helper slash commands are exposed as `/plan`, `/interview`, `/deliberate`, `/planaudit`, and `/goal`; `/plan` is a compatibility guide that explains "this is PABCD P" and points to the right next command instead of creating a second planning mode. Bounded automation is expressed as `/goal run ...`, not a separate top-level `/autopilot`. Durable goals — `/goal <objective>` plus `update`/`done`/`cancel`/`pause`/`resume` — are functional and survive restarts, and a goal resume re-fires the work on every interface (Web/CLI included, not just messaging). `/goal run` (`preflight`/`start`/`stop`/`status`) is a tracking-only preview: it gates on preflight and tracks turn/dispatch budget, with enforcement still to come.
416
+ State is database-persisted and survives restarts. Workers cannot modify files — only verify. Activate with `jaw orchestrate`, `/orchestrate`, or `/pabcd`; resume an active worklog explicitly with `/continue`. Workflow helper slash commands are exposed as `/plan`, `/interview`, `/deliberate`, `/planaudit`, `/review`, `/search`, and `/goal`; `/plan` is a compatibility guide that explains "this is PABCD P" and points to the right next command instead of creating a second planning mode. `/search <query>` routes search intent through the active search skill: classify local vs external lookup, rewrite focused queries, discover candidate URLs, and only then use browser commands such as `browser fetch` for evidence verification. Bounded automation is expressed as `/goal run ...`, not a separate top-level `/autopilot`. Durable goals — `/goal <objective>` plus `update`/`done`/`cancel`/`pause`/`resume` — are functional and survive restarts, and a goal resume re-fires the work on every interface (Web/CLI included, not just messaging). `/goal run` (`preflight`/`start`/`stop`/`status`) is a tracking-only preview: it gates on preflight and tracks turn/dispatch budget, with enforcement still to come.
401
417
 
402
418
  ---
403
419
 
@@ -464,7 +480,7 @@ Computer Use lets you control any macOS app — Finder, Safari, System Settings,
464
480
  📱 Telegram ←→ 🦈 CLI-JAW ←→ 🤖 AI Engines
465
481
  ```
466
482
 
467
- Text chat, voice messages (auto-transcribed via STT — speech-to-text), file/photo upload, slash commands (`/cli`, `/model`, `/status`, `/plan`, `/interview`, `/deliberate`, `/planaudit`), scheduled task delivery via `every`/`cron` (recurring schedule) heartbeat jobs.
483
+ Text chat, voice messages (auto-transcribed via STT — speech-to-text), file/photo upload, slash commands (`/cli`, `/model`, `/status`, `/plan`, `/interview`, `/deliberate`, `/planaudit`, `/review`, `/search`), scheduled task delivery via `every`/`cron` (recurring schedule) heartbeat jobs.
468
484
 
469
485
  <details>
470
486
  <summary>Setup (3 steps)</summary>
@@ -548,6 +564,9 @@ jaw browser vision-click "Login" # AI-powered click
548
564
  jaw browser web-ai status # ChatGPT/Gemini/Grok web-AI session tooling
549
565
  jaw browser web-ai code --vendor chatgpt --model thinking --effort heavy --prompt "Build an MVP" --output-zip ./result.zip
550
566
 
567
+ # Search
568
+ # in chat: /search "npm trusted publishing official docs" # search-skill routing + evidence verification
569
+
551
570
  # Dashboard connectors
552
571
  jaw dashboard memory search "query" # read-only cross-instance memory search
553
572
  jaw dashboard chat search "query" # cross-instance chat search
package/README.zh-CN.md CHANGED
@@ -5,7 +5,7 @@
5
5
  ### 你的个人 AI 助手。2 行安装。13 个 AI 运行时入口,一个仪表盘。
6
6
 
7
7
  [![npm](https://img.shields.io/npm/v/cli-jaw)](https://npmjs.com/package/cli-jaw)
8
- [![Version](https://img.shields.io/badge/v2.1.3-GA-brightgreen)](https://github.com/lidge-jun/cli-jaw/releases)
8
+ [![Version](https://img.shields.io/badge/v2.2.0-GA-brightgreen)](https://github.com/lidge-jun/cli-jaw/releases)
9
9
  [![TypeScript](https://img.shields.io/badge/TypeScript-6.0-blue)](https://typescriptlang.org)
10
10
  [![Node](https://img.shields.io/badge/node-%3E%3D22.4-blue)](https://nodejs.org)
11
11
  [![License](https://img.shields.io/badge/license-MIT-yellow)](LICENSE)
@@ -34,7 +34,7 @@ const _homeEqArg = process.argv.find(a => a.startsWith('--home='));
34
34
  if (_homeIdx !== -1 && process.argv[_homeIdx + 1]) {
35
35
  const _homeVal = process.argv[_homeIdx + 1];
36
36
  // Guard: if the "value" looks like a known subcommand, user forgot the path
37
- const _knownCmds = ['serve', 'init', 'doctor', 'chat', 'employee', 'reset', 'mcp', 'skill', 'status', 'browser', 'memory', 'launchd', 'clone', 'service', 'dashboard', 'connector', 'reminders', 'orchestrate', 'dispatch', 'worker', 'project', 'goal', 'task', 'bgtask'];
37
+ const _knownCmds = ['serve', 'init', 'doctor', 'chat', 'employee', 'reset', 'mcp', 'skill', 'status', 'browser', 'memory', 'hooks', 'launchd', 'clone', 'service', 'dashboard', 'connector', 'reminders', 'orchestrate', 'dispatch', 'worker', 'project', 'goal', 'task', 'bgtask', 'jwc', 'provider'];
38
38
  if (_knownCmds.includes(_homeVal)) {
39
39
  console.error(` ❌ --home requires a path argument (got subcommand '${_homeVal}')`);
40
40
  console.error(` Usage: jaw --home <path> ${_homeVal}`);
@@ -134,6 +134,8 @@ ${c.cyan} 🦈 jaw${c.reset} — AI agent orchestration platform ${c.dim}v${pk
134
134
  ${c.bold}Setup & diagnostics:${c.reset}
135
135
  init Interactive setup wizard
136
136
  doctor [--json] Installation diagnostics
137
+ jwc install|clean|doctor Optional external JWC runtime helper
138
+ provider install|clean|doctor|list On-demand provider runtime helper
137
139
  reset [--all|--mcp|--skills|...] Reset configuration
138
140
 
139
141
  ${c.bold}Orchestration:${c.reset}
@@ -149,6 +151,7 @@ ${c.cyan} 🦈 jaw${c.reset} — AI agent orchestration platform ${c.dim}v${pk
149
151
  ${c.bold}Automation:${c.reset}
150
152
  browser <sub> Chrome CDP browser control
151
153
  memory <search|read|save> Persistent memory store
154
+ hooks inspect [--scope ...] Inspect pre-prompt runtime context
152
155
  mcp <install|sync|list> MCP server management
153
156
  skill <install|remove|info|list> Skill management
154
157
 
@@ -180,6 +183,12 @@ switch (command) {
180
183
  case 'doctor':
181
184
  await import('./commands/doctor.js');
182
185
  break;
186
+ case 'jwc':
187
+ await import('./commands/jwc.js');
188
+ break;
189
+ case 'provider':
190
+ await import('./commands/provider.js');
191
+ break;
183
192
  case 'chat':
184
193
  if (process.argv[3] === 'search') {
185
194
  await import('./commands/chat-search.js');
@@ -210,6 +219,9 @@ switch (command) {
210
219
  case 'memory':
211
220
  await import('./commands/memory.js');
212
221
  break;
222
+ case 'hooks':
223
+ await import('./commands/hooks.js');
224
+ break;
213
225
  case 'launchd':
214
226
  await import('./commands/launchd.js');
215
227
  break;
@@ -1 +1 @@
1
- {"version":3,"file":"cli-jaw.js","sourceRoot":"","sources":["../../bin/cli-jaw.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli-jaw.js","sourceRoot":"","sources":["../../bin/cli-jaw.ts"],"names":[],"mappings":"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"}
@@ -40,7 +40,8 @@ function flagValue(flag) {
40
40
  function printTask(task) {
41
41
  const spec = (task['spec'] ?? {});
42
42
  const completion = (spec['completion'] ?? {});
43
- console.log(`${task['id']} [${task['status']}${task['runnerActive'] ? ' • runner active' : ''}] kind=${task['kind']} completion=${completion['type'] ?? '?'}`);
43
+ const category = task['statusCategory'] ? `/${task['statusCategory']}` : '';
44
+ console.log(`${task['id']} [${task['status']}${category}${task['runnerActive'] ? ' • runner active' : ''}] kind=${task['kind']} completion=${completion['type'] ?? '?'}`);
44
45
  if (task['createdAt'])
45
46
  console.log(` created: ${task['createdAt']}${task['completedAt'] ? ` completed: ${task['completedAt']}` : ''}`);
46
47
  if (task['notifiedAt'])
@@ -1 +1 @@
1
- {"version":3,"file":"bgtask.js","sourceRoot":"","sources":["../../../bin/commands/bgtask.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bgtask.js","sourceRoot":"","sources":["../../../bin/commands/bgtask.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ function compact(value, max = 240) {
2
+ const text = String(value || '').replace(/\s+/g, ' ').trim();
3
+ if (!text)
4
+ return '';
5
+ return text.length > max ? `${text.slice(0, max - 1)}…` : text;
6
+ }
7
+ function byteLabel(value) {
8
+ if (!value)
9
+ return '';
10
+ if (value < 1024)
11
+ return `${value} B`;
12
+ if (value < 1024 * 1024)
13
+ return `${Math.round(value / 1024)} KB`;
14
+ return `${(value / 1024 / 1024).toFixed(1)} MB`;
15
+ }
16
+ export function printBatchDispatchSummary(results) {
17
+ let exitCode = 0;
18
+ for (const result of results) {
19
+ const statusIcon = result.ok ? '✅' : '❌';
20
+ console.log(`\n${statusIcon} ${result.agent}`);
21
+ console.log(` status: ${result.status || (result.ok ? 'done' : 'error')}`);
22
+ if (result.runId)
23
+ console.log(` runId: ${result.runId}`);
24
+ const preview = compact(result.preview || result.error);
25
+ if (preview)
26
+ console.log(` ${result.ok ? 'preview' : 'error'}: ${preview}`);
27
+ const bytes = byteLabel(result.outputBytes);
28
+ if (bytes)
29
+ console.log(` outputBytes: ${bytes}`);
30
+ const recovery = result.recoveryCommand || (result.runId ? `cli-jaw worker read ${result.runId} --tail 120` : '');
31
+ if (recovery)
32
+ console.log(` output: ${recovery}`);
33
+ if (!result.ok)
34
+ exitCode = 1;
35
+ }
36
+ return exitCode;
37
+ }
38
+ //# sourceMappingURL=dispatch-batch-summary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dispatch-batch-summary.js","sourceRoot":"","sources":["../../../bin/commands/dispatch-batch-summary.ts"],"names":[],"mappings":"AAWA,SAAS,OAAO,CAAC,KAAc,EAAE,GAAG,GAAG,GAAG;IACtC,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAC7D,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IACrB,OAAO,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AACnE,CAAC;AAED,SAAS,SAAS,CAAC,KAAyB;IACxC,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACtB,IAAI,KAAK,GAAG,IAAI;QAAE,OAAO,GAAG,KAAK,IAAI,CAAC;IACtC,IAAI,KAAK,GAAG,IAAI,GAAG,IAAI;QAAE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IACjE,OAAO,GAAG,CAAC,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,OAAqC;IAC3E,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC3B,MAAM,UAAU,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QACzC,OAAO,CAAC,GAAG,CAAC,KAAK,UAAU,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QAC/C,OAAO,CAAC,GAAG,CAAC,aAAa,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC5E,IAAI,MAAM,CAAC,KAAK;YAAE,OAAO,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QAC1D,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;QACxD,IAAI,OAAO;YAAE,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC,CAAC;QAC7E,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAC5C,IAAI,KAAK;YAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB,KAAK,EAAE,CAAC,CAAC;QAClD,MAAM,QAAQ,GAAG,MAAM,CAAC,eAAe,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,uBAAuB,MAAM,CAAC,KAAK,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAClH,IAAI,QAAQ;YAAE,OAAO,CAAC,GAAG,CAAC,aAAa,QAAQ,EAAE,CAAC,CAAC;QACnD,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,QAAQ,GAAG,CAAC,CAAC;IACjC,CAAC;IACD,OAAO,QAAQ,CAAC;AACpB,CAAC"}
@@ -6,12 +6,13 @@ import { cliFetch, getCliAuthToken } from '../../src/cli/api-auth.js';
6
6
  import { shouldShowHelp, printAndExit } from '../helpers/help.js';
7
7
  import { errString, isConnRefused } from '../_http-client.js';
8
8
  import { unwrapEmployeeSummaries } from './dispatch-helpers.js';
9
+ import { printBatchDispatchSummary } from './dispatch-batch-summary.js';
9
10
  import { displayShellCommand, displayShellCommandDetail, } from '../../src/shared/shell-command-display.js';
10
11
  if (shouldShowHelp(process.argv))
11
12
  printAndExit(`
12
13
  jaw dispatch — send task to an employee agent
13
14
 
14
- Usage: jaw dispatch --agent "Name" --task "instruction" [--watch]
15
+ Usage: jaw dispatch --agent "Name" --task "instruction" [--watch] [--quiet]
15
16
  jaw dispatch --virtual "security" --task "audit this change" [--role "security"]
16
17
  jaw dispatch --batch --agents '<JSON array>'
17
18
  Options:
@@ -23,8 +24,9 @@ if (shouldShowHelp(process.argv))
23
24
  --task <text> Task instruction to send
24
25
  --mutable Allow employee to write/modify files (default: read-only)
25
26
  --scope <path> Restrict writes to a subdirectory (optional, requires --mutable)
26
- --watch Print live sanitized employee progress until completion
27
- --json JSON output
27
+ --watch Print live sanitized employee progress until completion (default for human output)
28
+ --quiet Suppress live progress summaries
29
+ --json JSON output; suppresses human progress lines
28
30
  Batch mode:
29
31
  --batch Enable batch parallel dispatch
30
32
  --agents <json> JSON array of {agent|virtual, task, role?, cli?, model?, parallel?, mutable?, scope?, affected_files?}
@@ -65,7 +67,8 @@ const model = getFlag('--model');
65
67
  const task = getFlag('--task');
66
68
  const mutable = process.argv.includes('--mutable');
67
69
  const scope = getFlag('--scope');
68
- const watch = process.argv.includes('--watch');
70
+ const quiet = process.argv.includes('--quiet');
71
+ const json = process.argv.includes('--json');
69
72
  const isBatch = process.argv.includes('--batch');
70
73
  const batchAgentsRaw = getFlag('--agents');
71
74
  if (isBatch) {
@@ -85,7 +88,8 @@ if (isBatch) {
85
88
  }
86
89
  const BASE = getServerUrl();
87
90
  await getCliAuthToken();
88
- console.log(`🚀 Batch dispatching ${batchAgents.length} agents...`);
91
+ if (!json && !quiet)
92
+ console.log(`🚀 Batch dispatching ${batchAgents.length} agents...`);
89
93
  try {
90
94
  const res = await cliFetch(`${BASE}/api/orchestrate/dispatch/batch`, {
91
95
  method: 'POST',
@@ -97,18 +101,13 @@ if (isBatch) {
97
101
  console.error(`❌ ${body.error || `Failed: ${res.status}`}`);
98
102
  process.exit(1);
99
103
  }
100
- let exitCode = 0;
101
- for (const r of body.results || []) {
102
- const status = r.ok ? '✅' : '❌';
103
- console.log(`\n${status} ${r.agent}`);
104
- if (r.text)
105
- console.log(r.text);
106
- if (r.error) {
107
- console.error(` Error: ${r.error}`);
108
- exitCode = 1;
109
- }
104
+ if (json) {
105
+ console.log(JSON.stringify(body));
106
+ process.exit((body.results || []).every(r => r.ok) ? 0 : 1);
110
107
  }
111
- process.exit(exitCode);
108
+ if (quiet)
109
+ process.exit((body.results || []).every(r => r.ok) ? 0 : 1);
110
+ process.exit(printBatchDispatchSummary(body.results || []));
112
111
  }
113
112
  catch (e) {
114
113
  console.error(`❌ Error: ${errString(e)}`);
@@ -165,17 +164,19 @@ async function resolveAgentId(name) {
165
164
  class DispatchPollError extends Error {
166
165
  agentId;
167
166
  agentName;
168
- constructor(message, agentId, agentName) {
167
+ runId;
168
+ constructor(message, agentId, agentName, runId) {
169
169
  super(message);
170
170
  this.agentId = agentId;
171
171
  this.agentName = agentName;
172
+ this.runId = runId;
172
173
  this.name = 'DispatchPollError';
173
174
  }
174
175
  }
175
176
  // A single transient fetch failure (ECONNRESET, brief event-loop stall) used
176
177
  // to kill a 10-minute poll loop on its first throw (devlog 260613 doc 08).
177
178
  const POLL_RETRY_DELAYS_MS = [500, 1000, 2000];
178
- async function pollFetch(url, agentId, agentName, label) {
179
+ async function pollFetch(url, agentId, agentName, label, runId) {
179
180
  let lastErr;
180
181
  for (let attempt = 0; attempt <= POLL_RETRY_DELAYS_MS.length; attempt++) {
181
182
  try {
@@ -187,34 +188,40 @@ async function pollFetch(url, agentId, agentName, label) {
187
188
  await sleep(POLL_RETRY_DELAYS_MS[attempt]);
188
189
  }
189
190
  }
190
- throw new DispatchPollError(`${label}: ${errString(lastErr)}`, agentId, agentName);
191
+ throw new DispatchPollError(`${label}: ${errString(lastErr)}`, agentId, agentName, runId);
192
+ }
193
+ function runIdFromBody(body) {
194
+ return body.runId || body.worker?.runId || body.existing?.runId || progressRun(body.progress)?.runId || undefined;
191
195
  }
192
- async function pollWorkerResult(agentId, agentName = '') {
196
+ async function pollWorkerResult(agentId, agentName = '', runId) {
193
197
  const deadline = Date.now() + 600_000;
194
198
  let lastState = 'unknown';
199
+ let knownRunId = runId;
195
200
  while (Date.now() < deadline) {
196
- const res = await pollFetch(`${BASE}/api/orchestrate/worker/${encodeURIComponent(agentId)}/result`, agentId, agentName, 'dispatch poll failed');
201
+ const res = await pollFetch(`${BASE}/api/orchestrate/worker/${encodeURIComponent(agentId)}/result`, agentId, agentName, 'dispatch poll failed', knownRunId);
197
202
  const { body, nonJsonError } = await readJsonResponse(res, 'worker result endpoint');
203
+ knownRunId = runIdFromBody(body) || knownRunId;
198
204
  if (nonJsonError)
199
- throw new DispatchPollError(nonJsonError, agentId, agentName);
205
+ throw new DispatchPollError(nonJsonError, agentId, agentName, knownRunId);
200
206
  if (!res.ok)
201
- throw new DispatchPollError(body.error || `poll failed: ${res.status}`, agentId, agentName);
207
+ throw new DispatchPollError(body.error || `poll failed: ${res.status}`, agentId, agentName, knownRunId);
202
208
  lastState = body.state || 'unknown';
203
209
  if (body.state !== 'running')
204
210
  return body;
205
211
  await sleep(2_000);
206
212
  }
207
- throw new DispatchPollError(`timed out after 10 minutes (last state: ${lastState})`, agentId, agentName);
213
+ throw new DispatchPollError(`timed out after 10 minutes (last state: ${lastState})`, agentId, agentName, knownRunId);
208
214
  }
209
- async function fetchWorkerProgress(agentId, agentName = '') {
210
- const res = await pollFetch(`${BASE}/api/orchestrate/worker-progress/${encodeURIComponent(agentId)}`, agentId, agentName, 'worker progress fetch failed');
215
+ async function fetchWorkerProgress(agentId, agentName = '', runId) {
216
+ const res = await pollFetch(`${BASE}/api/orchestrate/worker-progress/${encodeURIComponent(agentId)}`, agentId, agentName, 'worker progress fetch failed', runId);
211
217
  const { body, nonJsonError } = await readJsonResponse(res, 'worker progress endpoint');
218
+ const bodyRunId = body.progress ? progressRun(body.progress)?.runId : undefined;
212
219
  if (nonJsonError)
213
- throw new DispatchPollError(nonJsonError, agentId, agentName);
220
+ throw new DispatchPollError(nonJsonError, agentId, agentName, bodyRunId || runId);
214
221
  if (res.status === 404)
215
222
  return null;
216
223
  if (!res.ok)
217
- throw new DispatchPollError(body.error || `progress fetch failed: ${res.status}`, agentId, agentName);
224
+ throw new DispatchPollError(body.error || `progress fetch failed: ${res.status}`, agentId, agentName, bodyRunId || runId);
218
225
  return body.progress || null;
219
226
  }
220
227
  function resultStatus(body) {
@@ -295,29 +302,33 @@ function printProgressSnapshot(progress, printed) {
295
302
  console.log(formatToolLine(tool, index + 1));
296
303
  });
297
304
  }
298
- async function pollAndPrintWorker(agentId, agentName) {
305
+ async function pollAndPrintWorker(agentId, agentName, runId) {
299
306
  const deadline = Date.now() + 600_000;
300
307
  const printed = new Set();
301
308
  let lastState = 'unknown';
309
+ let knownRunId = runId;
302
310
  while (Date.now() < deadline) {
303
- const progress = await fetchWorkerProgress(agentId, agentName);
311
+ const progress = await fetchWorkerProgress(agentId, agentName, knownRunId);
312
+ knownRunId = progressRun(progress)?.runId || knownRunId;
304
313
  printProgressSnapshot(progress, printed);
305
- const body = await pollWorkerResultOnce(agentId, agentName);
314
+ const body = await pollWorkerResultOnce(agentId, agentName, knownRunId);
315
+ knownRunId = runIdFromBody(body) || knownRunId;
306
316
  lastState = body.state || lastState;
307
317
  printProgressSnapshot(body.progress, printed);
308
318
  if (body.state !== 'running')
309
319
  return body;
310
320
  await sleep(2_000);
311
321
  }
312
- throw new DispatchPollError(`timed out after 10 minutes (last state: ${lastState})`, agentId, agentName);
322
+ throw new DispatchPollError(`timed out after 10 minutes (last state: ${lastState})`, agentId, agentName, knownRunId);
313
323
  }
314
- async function pollWorkerResultOnce(agentId, agentName = '') {
315
- const res = await pollFetch(`${BASE}/api/orchestrate/worker/${encodeURIComponent(agentId)}/result`, agentId, agentName, 'dispatch poll failed');
324
+ async function pollWorkerResultOnce(agentId, agentName = '', runId) {
325
+ const res = await pollFetch(`${BASE}/api/orchestrate/worker/${encodeURIComponent(agentId)}/result`, agentId, agentName, 'dispatch poll failed', runId);
316
326
  const { body, nonJsonError } = await readJsonResponse(res, 'worker result endpoint');
327
+ const knownRunId = runIdFromBody(body) || runId;
317
328
  if (nonJsonError)
318
- throw new DispatchPollError(nonJsonError, agentId, agentName);
329
+ throw new DispatchPollError(nonJsonError, agentId, agentName, knownRunId);
319
330
  if (!res.ok)
320
- throw new DispatchPollError(body.error || `poll failed: ${res.status}`, agentId, agentName);
331
+ throw new DispatchPollError(body.error || `poll failed: ${res.status}`, agentId, agentName, knownRunId);
321
332
  return body;
322
333
  }
323
334
  function printDispatchResult(agentName, body, opts = {}) {
@@ -338,6 +349,12 @@ function printDispatchResult(agentName, body, opts = {}) {
338
349
  console.log(`\nOrchestration verdict: ${verdict} ${persisted}`);
339
350
  }
340
351
  }
352
+ function printJsonResult(body) {
353
+ console.log(JSON.stringify(body, null, 2));
354
+ }
355
+ function shouldPrintLiveProgress() {
356
+ return !json && !quiet;
357
+ }
341
358
  function printFetchErrorWithRecovery(message) {
342
359
  console.error(`❌ Error: ${message}`);
343
360
  if (!message.includes('fetch failed'))
@@ -345,9 +362,24 @@ function printFetchErrorWithRecovery(message) {
345
362
  console.error(` status: cli-jaw worker status`);
346
363
  console.error(` target: cli-jaw worker status "${targetName}"`);
347
364
  }
365
+ function printPollErrorWithRecovery(e) {
366
+ console.error(`❌ ${e.message}`);
367
+ console.error(` agentId: ${e.agentId}`);
368
+ if (e.runId)
369
+ console.error(` runId: ${e.runId}`);
370
+ console.error(` agent: ${e.agentName || targetName}`);
371
+ if (e.runId) {
372
+ console.error(` status: cli-jaw worker status ${e.runId}`);
373
+ console.error(` output: cli-jaw worker read ${e.runId} --tail 80`);
374
+ }
375
+ else
376
+ console.error(` status: cli-jaw worker status "${e.agentName || targetName}"`);
377
+ console.error(` poll: curl -s ${BASE}/api/orchestrate/worker/${encodeURIComponent(e.agentId)}/result`);
378
+ }
348
379
  await getCliAuthToken(PORT);
349
380
  try {
350
- console.log(`🚀 Dispatching to ${targetName}...`);
381
+ if (!json && !quiet)
382
+ console.log(`🚀 Dispatching to ${targetName}...`);
351
383
  let res;
352
384
  let lastError;
353
385
  for (let attempt = 0; attempt <= STARTUP_RETRY_DELAYS_MS.length; attempt++) {
@@ -406,10 +438,13 @@ try {
406
438
  console.error('❌ dispatch started but worker id was not returned');
407
439
  process.exit(1);
408
440
  }
409
- const polled = watch
410
- ? await pollAndPrintWorker(pollAgentId, targetName)
411
- : await pollWorkerResult(pollAgentId, targetName);
412
- printDispatchResult(targetName, polled, watch ? { skipProcess: true } : {});
441
+ const pollRunId = body?.worker?.runId;
442
+ const liveProgress = shouldPrintLiveProgress();
443
+ const polled = liveProgress ? await pollAndPrintWorker(pollAgentId, targetName, pollRunId) : await pollWorkerResult(pollAgentId, targetName, pollRunId);
444
+ if (json)
445
+ printJsonResult(polled);
446
+ else
447
+ printDispatchResult(targetName, polled, liveProgress ? { skipProcess: true } : {});
413
448
  process.exit(dispatchExitCode(polled));
414
449
  }
415
450
  if (!res.ok) {
@@ -419,26 +454,30 @@ try {
419
454
  console.error(`❌ ${body.error || `Failed: ${res.status}`}`);
420
455
  process.exit(1);
421
456
  }
422
- console.error(`⏳ ${targetName} is already running (agentId: ${pollAgentId}), polling worker result...`);
423
- const polled = watch
424
- ? await pollAndPrintWorker(pollAgentId, targetName)
425
- : await pollWorkerResult(pollAgentId, targetName);
426
- printDispatchResult(targetName, polled, watch ? { skipProcess: true } : {});
457
+ const pollRunId = body?.worker?.runId || body?.existing?.runId;
458
+ if (!json && !quiet) {
459
+ console.error(`⏳ ${targetName} is already running (agentId: ${pollAgentId}${pollRunId ? `, runId: ${pollRunId}` : ''}), polling worker result...`);
460
+ }
461
+ const liveProgress = shouldPrintLiveProgress();
462
+ const polled = liveProgress ? await pollAndPrintWorker(pollAgentId, targetName, pollRunId) : await pollWorkerResult(pollAgentId, targetName, pollRunId);
463
+ if (json)
464
+ printJsonResult(polled);
465
+ else
466
+ printDispatchResult(targetName, polled, liveProgress ? { skipProcess: true } : {});
427
467
  process.exit(dispatchExitCode(polled));
428
468
  }
429
469
  console.error(`❌ ${body.error || `Failed: ${res.status}`}`);
430
470
  process.exit(1);
431
471
  }
432
- printDispatchResult(targetName, body);
472
+ if (json)
473
+ printJsonResult(body);
474
+ else
475
+ printDispatchResult(targetName, body);
433
476
  process.exit(dispatchExitCode(body));
434
477
  }
435
478
  catch (e) {
436
479
  if (e instanceof DispatchPollError) {
437
- console.error(`❌ ${e.message}`);
438
- console.error(` agentId: ${e.agentId}`);
439
- console.error(` agent: ${e.agentName || targetName}`);
440
- console.error(` recover: cli-jaw dispatch ${agent ? '--agent' : '--virtual'} "${e.agentName || targetName}" --task "(resume polling)"`);
441
- console.error(` poll: curl -s ${BASE}/api/orchestrate/worker/${encodeURIComponent(e.agentId)}/result`);
480
+ printPollErrorWithRecovery(e);
442
481
  }
443
482
  else {
444
483
  printFetchErrorWithRecovery(errString(e));