@evalops/maestro 0.10.17 → 0.10.20

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 (930) hide show
  1. package/README.md +56 -1
  2. package/dist/agent/action-approval.d.ts +12 -2
  3. package/dist/agent/action-approval.d.ts.map +1 -1
  4. package/dist/agent/action-approval.js +19 -32
  5. package/dist/agent/action-approval.js.map +1 -1
  6. package/dist/agent/agent.d.ts +1 -0
  7. package/dist/agent/agent.d.ts.map +1 -1
  8. package/dist/agent/agent.js +26 -0
  9. package/dist/agent/agent.js.map +1 -1
  10. package/dist/agent/compaction.d.ts +2 -0
  11. package/dist/agent/compaction.d.ts.map +1 -1
  12. package/dist/agent/compaction.js +4 -2
  13. package/dist/agent/compaction.js.map +1 -1
  14. package/dist/agent/index.d.ts +1 -1
  15. package/dist/agent/index.d.ts.map +1 -1
  16. package/dist/agent/index.js +1 -1
  17. package/dist/agent/index.js.map +1 -1
  18. package/dist/agent/modes.d.ts +56 -4
  19. package/dist/agent/modes.d.ts.map +1 -1
  20. package/dist/agent/modes.js +163 -2
  21. package/dist/agent/modes.js.map +1 -1
  22. package/dist/agent/prompt-recovery.d.ts.map +1 -1
  23. package/dist/agent/prompt-recovery.js +1 -3
  24. package/dist/agent/prompt-recovery.js.map +1 -1
  25. package/dist/agent/providers/anthropic.d.ts.map +1 -1
  26. package/dist/agent/providers/anthropic.js +9 -1
  27. package/dist/agent/providers/anthropic.js.map +1 -1
  28. package/dist/agent/providers/codex-app-server.d.ts +12 -0
  29. package/dist/agent/providers/codex-app-server.d.ts.map +1 -0
  30. package/dist/agent/providers/codex-app-server.js +788 -0
  31. package/dist/agent/providers/codex-app-server.js.map +1 -0
  32. package/dist/agent/providers/google-gemini-cli.js +14 -3
  33. package/dist/agent/providers/google.js +22 -3
  34. package/dist/agent/providers/scripted.d.ts +11 -0
  35. package/dist/agent/providers/scripted.d.ts.map +1 -0
  36. package/dist/agent/providers/scripted.js +399 -0
  37. package/dist/agent/providers/scripted.js.map +1 -0
  38. package/dist/agent/providers/vertex.js +14 -3
  39. package/dist/agent/scenario-source.d.ts +19 -0
  40. package/dist/agent/scenario-source.d.ts.map +1 -0
  41. package/dist/agent/scenario-source.js +112 -0
  42. package/dist/agent/scenario-source.js.map +1 -0
  43. package/dist/agent/subagent-specs.d.ts +1 -1
  44. package/dist/agent/subagent-specs.js +1 -1
  45. package/dist/agent/subagent-specs.js.map +1 -1
  46. package/dist/agent/swarm/executor.d.ts +25 -0
  47. package/dist/agent/swarm/executor.d.ts.map +1 -1
  48. package/dist/agent/swarm/executor.js +795 -20
  49. package/dist/agent/swarm/executor.js.map +1 -1
  50. package/dist/agent/swarm/runtime-events.d.ts +11 -0
  51. package/dist/agent/swarm/runtime-events.d.ts.map +1 -0
  52. package/dist/agent/swarm/runtime-events.js +26 -0
  53. package/dist/agent/swarm/runtime-events.js.map +1 -0
  54. package/dist/agent/swarm/types.d.ts +78 -0
  55. package/dist/agent/swarm/types.d.ts.map +1 -1
  56. package/dist/agent/swarm/types.js.map +1 -1
  57. package/dist/agent/tracing.d.ts +1 -1
  58. package/dist/agent/tracing.d.ts.map +1 -1
  59. package/dist/agent/tracing.js +17 -9
  60. package/dist/agent/tracing.js.map +1 -1
  61. package/dist/agent/transport/create-provider-stream.d.ts.map +1 -1
  62. package/dist/agent/transport/create-provider-stream.js +14 -0
  63. package/dist/agent/transport/create-provider-stream.js.map +1 -1
  64. package/dist/agent/transport/stable-stringify.d.ts +2 -0
  65. package/dist/agent/transport/stable-stringify.d.ts.map +1 -0
  66. package/dist/agent/transport/stable-stringify.js +14 -0
  67. package/dist/agent/transport/stable-stringify.js.map +1 -0
  68. package/dist/agent/transport/tool-execution-bridge.d.ts.map +1 -1
  69. package/dist/agent/transport/tool-execution-bridge.js +2 -15
  70. package/dist/agent/transport/tool-execution-bridge.js.map +1 -1
  71. package/dist/agent/transport/tool-safety-pipeline.d.ts +5 -1
  72. package/dist/agent/transport/tool-safety-pipeline.d.ts.map +1 -1
  73. package/dist/agent/transport/tool-safety-pipeline.js +184 -36
  74. package/dist/agent/transport/tool-safety-pipeline.js.map +1 -1
  75. package/dist/agent/transport.d.ts +8 -0
  76. package/dist/agent/transport.d.ts.map +1 -1
  77. package/dist/agent/transport.js +1613 -68
  78. package/dist/agent/transport.js.map +1 -1
  79. package/dist/agent/types.d.ts +170 -2
  80. package/dist/agent/types.d.ts.map +1 -1
  81. package/dist/agent/types.js.map +1 -1
  82. package/dist/api/enterprise-routes.d.ts.map +1 -1
  83. package/dist/api/enterprise-routes.js +34 -3
  84. package/dist/api/enterprise-routes.js.map +1 -1
  85. package/dist/app-server/in-process-client.d.ts +32 -0
  86. package/dist/app-server/in-process-client.d.ts.map +1 -0
  87. package/dist/app-server/in-process-client.js +73 -0
  88. package/dist/app-server/in-process-client.js.map +1 -0
  89. package/dist/app-server/session-api.d.ts +36 -0
  90. package/dist/app-server/session-api.d.ts.map +1 -0
  91. package/dist/app-server/session-api.js +713 -0
  92. package/dist/app-server/session-api.js.map +1 -0
  93. package/dist/approvals/platform-action-approval.d.ts +3 -1
  94. package/dist/approvals/platform-action-approval.d.ts.map +1 -1
  95. package/dist/approvals/platform-action-approval.js +16 -9
  96. package/dist/approvals/platform-action-approval.js.map +1 -1
  97. package/dist/approvals/service-client.d.ts.map +1 -1
  98. package/dist/approvals/service-client.js +7 -7
  99. package/dist/approvals/service-client.js.map +1 -1
  100. package/dist/audit/logger.d.ts +4 -4
  101. package/dist/bootstrap/agent-creation-setup.d.ts +4 -0
  102. package/dist/bootstrap/agent-creation-setup.d.ts.map +1 -1
  103. package/dist/bootstrap/agent-creation-setup.js +3 -1
  104. package/dist/bootstrap/agent-creation-setup.js.map +1 -1
  105. package/dist/bootstrap/auth-setup.js +1 -1
  106. package/dist/bootstrap/auth-setup.js.map +1 -1
  107. package/dist/bootstrap/event-subscriptions-setup.d.ts +6 -0
  108. package/dist/bootstrap/event-subscriptions-setup.d.ts.map +1 -1
  109. package/dist/bootstrap/event-subscriptions-setup.js +26 -2
  110. package/dist/bootstrap/event-subscriptions-setup.js.map +1 -1
  111. package/dist/bootstrap/model-resolution-setup.d.ts.map +1 -1
  112. package/dist/bootstrap/model-resolution-setup.js +4 -1
  113. package/dist/bootstrap/model-resolution-setup.js.map +1 -1
  114. package/dist/bootstrap/tools-setup.d.ts +2 -1
  115. package/dist/bootstrap/tools-setup.d.ts.map +1 -1
  116. package/dist/bootstrap/tools-setup.js +5 -1
  117. package/dist/bootstrap/tools-setup.js.map +1 -1
  118. package/dist/cli/args.d.ts +9 -1
  119. package/dist/cli/args.d.ts.map +1 -1
  120. package/dist/cli/args.js +130 -5
  121. package/dist/cli/args.js.map +1 -1
  122. package/dist/cli/commands/a2a.d.ts +9 -0
  123. package/dist/cli/commands/a2a.d.ts.map +1 -0
  124. package/dist/cli/commands/a2a.js +1714 -0
  125. package/dist/cli/commands/a2a.js.map +1 -0
  126. package/dist/cli/commands/agents.d.ts +16 -2
  127. package/dist/cli/commands/agents.d.ts.map +1 -1
  128. package/dist/cli/commands/agents.js +223 -35
  129. package/dist/cli/commands/agents.js.map +1 -1
  130. package/dist/cli/commands/codex.d.ts +1 -1
  131. package/dist/cli/commands/codex.d.ts.map +1 -1
  132. package/dist/cli/commands/codex.js +145 -39
  133. package/dist/cli/commands/codex.js.map +1 -1
  134. package/dist/cli/commands/context.d.ts +10 -0
  135. package/dist/cli/commands/context.d.ts.map +1 -0
  136. package/dist/cli/commands/context.js +176 -0
  137. package/dist/cli/commands/context.js.map +1 -0
  138. package/dist/cli/commands/hosted-runner.d.ts +1 -0
  139. package/dist/cli/commands/hosted-runner.d.ts.map +1 -1
  140. package/dist/cli/commands/hosted-runner.js +9 -1
  141. package/dist/cli/commands/hosted-runner.js.map +1 -1
  142. package/dist/cli/commands/init.d.ts.map +1 -1
  143. package/dist/cli/commands/init.js +6 -0
  144. package/dist/cli/commands/init.js.map +1 -1
  145. package/dist/cli/commands/modes.d.ts +8 -0
  146. package/dist/cli/commands/modes.d.ts.map +1 -0
  147. package/dist/cli/commands/modes.js +151 -0
  148. package/dist/cli/commands/modes.js.map +1 -0
  149. package/dist/cli/commands/operating-plane.d.ts +14 -0
  150. package/dist/cli/commands/operating-plane.d.ts.map +1 -0
  151. package/dist/cli/commands/operating-plane.js +160 -0
  152. package/dist/cli/commands/operating-plane.js.map +1 -0
  153. package/dist/cli/commands/run.d.ts +87 -0
  154. package/dist/cli/commands/run.d.ts.map +1 -0
  155. package/dist/cli/commands/run.js +356 -0
  156. package/dist/cli/commands/run.js.map +1 -0
  157. package/dist/cli/commands/scenario.d.ts +7 -0
  158. package/dist/cli/commands/scenario.d.ts.map +1 -0
  159. package/dist/cli/commands/scenario.js +195 -0
  160. package/dist/cli/commands/scenario.js.map +1 -0
  161. package/dist/cli/commands/skill.d.ts +7 -0
  162. package/dist/cli/commands/skill.d.ts.map +1 -0
  163. package/dist/cli/commands/skill.js +286 -0
  164. package/dist/cli/commands/skill.js.map +1 -0
  165. package/dist/cli/headless-protocol.d.ts +55 -1
  166. package/dist/cli/headless-protocol.d.ts.map +1 -1
  167. package/dist/cli/headless-protocol.js +446 -7
  168. package/dist/cli/headless-protocol.js.map +1 -1
  169. package/dist/cli/headless-runtime-selection.d.ts +38 -0
  170. package/dist/cli/headless-runtime-selection.d.ts.map +1 -0
  171. package/dist/cli/headless-runtime-selection.js +48 -0
  172. package/dist/cli/headless-runtime-selection.js.map +1 -0
  173. package/dist/cli/headless.d.ts +5 -1
  174. package/dist/cli/headless.d.ts.map +1 -1
  175. package/dist/cli/headless.js +11 -1
  176. package/dist/cli/headless.js.map +1 -1
  177. package/dist/cli/help.d.ts +3 -1
  178. package/dist/cli/help.d.ts.map +1 -1
  179. package/dist/cli/help.js +136 -30
  180. package/dist/cli/help.js.map +1 -1
  181. package/dist/cli/system-prompt.d.ts +22 -4
  182. package/dist/cli/system-prompt.d.ts.map +1 -1
  183. package/dist/cli/system-prompt.js +224 -127
  184. package/dist/cli/system-prompt.js.map +1 -1
  185. package/dist/cli-tui/commands/a2a-handlers.d.ts +7 -0
  186. package/dist/cli-tui/commands/a2a-handlers.d.ts.map +1 -0
  187. package/dist/cli-tui/commands/a2a-handlers.js +160 -0
  188. package/dist/cli-tui/commands/a2a-handlers.js.map +1 -0
  189. package/dist/cli-tui/commands/command-catalog.d.ts.map +1 -1
  190. package/dist/cli-tui/commands/command-catalog.js +15 -0
  191. package/dist/cli-tui/commands/command-catalog.js.map +1 -1
  192. package/dist/cli-tui/commands/command-registry-adapter.js +10 -1
  193. package/dist/cli-tui/commands/command-registry-adapter.js.map +1 -1
  194. package/dist/cli-tui/commands/handlers/mode-handler.d.ts.map +1 -1
  195. package/dist/cli-tui/commands/handlers/mode-handler.js +22 -10
  196. package/dist/cli-tui/commands/handlers/mode-handler.js.map +1 -1
  197. package/dist/cli-tui/commands/mcp-handlers.d.ts.map +1 -1
  198. package/dist/cli-tui/commands/mcp-handlers.js +6 -5
  199. package/dist/cli-tui/commands/mcp-handlers.js.map +1 -1
  200. package/dist/cli-tui/commands/types.d.ts +1 -0
  201. package/dist/cli-tui/commands/types.d.ts.map +1 -1
  202. package/dist/cli-tui/commands/types.js.map +1 -1
  203. package/dist/cli-tui/commands/utility-handlers.d.ts +4 -0
  204. package/dist/cli-tui/commands/utility-handlers.d.ts.map +1 -1
  205. package/dist/cli-tui/commands/utility-handlers.js +45 -6
  206. package/dist/cli-tui/commands/utility-handlers.js.map +1 -1
  207. package/dist/cli-tui/run/run-shell-command.d.ts.map +1 -1
  208. package/dist/cli-tui/run/run-shell-command.js +14 -5
  209. package/dist/cli-tui/run/run-shell-command.js.map +1 -1
  210. package/dist/cli-tui/run/streaming-shell-command.d.ts.map +1 -1
  211. package/dist/cli-tui/run/streaming-shell-command.js +14 -5
  212. package/dist/cli-tui/run/streaming-shell-command.js.map +1 -1
  213. package/dist/cli-tui/selectors/model-selector.d.ts +1 -0
  214. package/dist/cli-tui/selectors/model-selector.d.ts.map +1 -1
  215. package/dist/cli-tui/selectors/model-selector.js +6 -2
  216. package/dist/cli-tui/selectors/model-selector.js.map +1 -1
  217. package/dist/cli-tui/tui-renderer/command-registry-options.d.ts.map +1 -1
  218. package/dist/cli-tui/tui-renderer/command-registry-options.js +5 -0
  219. package/dist/cli-tui/tui-renderer/command-registry-options.js.map +1 -1
  220. package/dist/cli-tui/utils/commands/review-prompt.d.ts +1 -1
  221. package/dist/cli-tui/utils/commands/review-prompt.d.ts.map +1 -1
  222. package/dist/cli-tui/utils/commands/review-prompt.js +8 -3
  223. package/dist/cli-tui/utils/commands/review-prompt.js.map +1 -1
  224. package/dist/cli-tui/utils/runtime-badges.d.ts +1 -0
  225. package/dist/cli-tui/utils/runtime-badges.d.ts.map +1 -1
  226. package/dist/cli-tui/utils/runtime-badges.js +7 -0
  227. package/dist/cli-tui/utils/runtime-badges.js.map +1 -1
  228. package/dist/cli-tui/utils/text-formatting.d.ts +1 -0
  229. package/dist/cli-tui/utils/text-formatting.d.ts.map +1 -1
  230. package/dist/cli-tui/utils/text-formatting.js +5 -0
  231. package/dist/cli-tui/utils/text-formatting.js.map +1 -1
  232. package/dist/cli.js +49209 -26165
  233. package/dist/cli.js.map +1 -1
  234. package/dist/codex/app-server-client.d.ts +139 -0
  235. package/dist/codex/app-server-client.d.ts.map +1 -0
  236. package/dist/codex/app-server-client.js +352 -0
  237. package/dist/codex/app-server-client.js.map +1 -0
  238. package/dist/codex/compatibility.d.ts +48 -0
  239. package/dist/codex/compatibility.d.ts.map +1 -0
  240. package/dist/codex/compatibility.js +344 -0
  241. package/dist/codex/compatibility.js.map +1 -0
  242. package/dist/codex/subagent-dispatch-table.d.ts +66 -0
  243. package/dist/codex/subagent-dispatch-table.d.ts.map +1 -0
  244. package/dist/codex/subagent-dispatch-table.js +127 -0
  245. package/dist/codex/subagent-dispatch-table.js.map +1 -0
  246. package/dist/codex/subagent-workgraph.d.ts +56 -0
  247. package/dist/codex/subagent-workgraph.d.ts.map +1 -0
  248. package/dist/codex/subagent-workgraph.js +89 -0
  249. package/dist/codex/subagent-workgraph.js.map +1 -0
  250. package/dist/config/constants.d.ts +3 -1
  251. package/dist/config/constants.d.ts.map +1 -1
  252. package/dist/config/constants.js +9 -0
  253. package/dist/config/constants.js.map +1 -1
  254. package/dist/config/feature-flags.d.ts +10 -1
  255. package/dist/config/feature-flags.d.ts.map +1 -1
  256. package/dist/config/feature-flags.js +17 -6
  257. package/dist/config/feature-flags.js.map +1 -1
  258. package/dist/config/index.d.ts +1 -1
  259. package/dist/config/index.d.ts.map +1 -1
  260. package/dist/config/index.js +1 -1
  261. package/dist/config/index.js.map +1 -1
  262. package/dist/config/toml-config.d.ts +32 -0
  263. package/dist/config/toml-config.d.ts.map +1 -1
  264. package/dist/config/toml-config.js +152 -43
  265. package/dist/config/toml-config.js.map +1 -1
  266. package/dist/connectors/service-client.d.ts.map +1 -1
  267. package/dist/connectors/service-client.js +4 -7
  268. package/dist/connectors/service-client.js.map +1 -1
  269. package/dist/context/manifest-types.d.ts +59 -0
  270. package/dist/context/manifest-types.d.ts.map +1 -0
  271. package/dist/context/manifest-types.js +2 -0
  272. package/dist/context/manifest-types.js.map +1 -0
  273. package/dist/context/manifest.d.ts +16 -0
  274. package/dist/context/manifest.d.ts.map +1 -0
  275. package/dist/context/manifest.js +503 -0
  276. package/dist/context/manifest.js.map +1 -0
  277. package/dist/db/schema.d.ts +10 -1
  278. package/dist/db/schema.d.ts.map +1 -1
  279. package/dist/db/schema.js.map +1 -1
  280. package/dist/evalops/agent-bootstrap.d.ts +1 -0
  281. package/dist/evalops/agent-bootstrap.d.ts.map +1 -1
  282. package/dist/evalops/agent-bootstrap.js +41 -1
  283. package/dist/evalops/agent-bootstrap.js.map +1 -1
  284. package/dist/evalops/env-aliases.d.ts +13 -0
  285. package/dist/evalops/env-aliases.d.ts.map +1 -0
  286. package/dist/evalops/env-aliases.js +60 -0
  287. package/dist/evalops/env-aliases.js.map +1 -0
  288. package/dist/evalops/managed-context.d.ts.map +1 -1
  289. package/dist/evalops/managed-context.js +28 -62
  290. package/dist/evalops/managed-context.js.map +1 -1
  291. package/dist/guardian/config.d.ts.map +1 -1
  292. package/dist/guardian/config.js +1 -0
  293. package/dist/guardian/config.js.map +1 -1
  294. package/dist/guardian/runner.d.ts +2 -0
  295. package/dist/guardian/runner.d.ts.map +1 -1
  296. package/dist/guardian/runner.js +105 -2
  297. package/dist/guardian/runner.js.map +1 -1
  298. package/dist/guardian/types.d.ts +1 -0
  299. package/dist/guardian/types.d.ts.map +1 -1
  300. package/dist/guardian/types.js.map +1 -1
  301. package/dist/index.d.ts +6 -1
  302. package/dist/index.d.ts.map +1 -1
  303. package/dist/index.js +6 -1
  304. package/dist/index.js.map +1 -1
  305. package/dist/main.d.ts.map +1 -1
  306. package/dist/main.js +267 -55
  307. package/dist/main.js.map +1 -1
  308. package/dist/mcp/config.d.ts.map +1 -1
  309. package/dist/mcp/config.js +89 -7
  310. package/dist/mcp/config.js.map +1 -1
  311. package/dist/mcp/manager.d.ts +5 -1
  312. package/dist/mcp/manager.d.ts.map +1 -1
  313. package/dist/mcp/manager.js +159 -4
  314. package/dist/mcp/manager.js.map +1 -1
  315. package/dist/mcp/platform-plugin.d.ts.map +1 -1
  316. package/dist/mcp/platform-plugin.js +9 -26
  317. package/dist/mcp/platform-plugin.js.map +1 -1
  318. package/dist/mcp/schema.d.ts +15 -0
  319. package/dist/mcp/schema.d.ts.map +1 -1
  320. package/dist/mcp/schema.js +24 -0
  321. package/dist/mcp/schema.js.map +1 -1
  322. package/dist/mcp/tool-bridge.d.ts +39 -10
  323. package/dist/mcp/tool-bridge.d.ts.map +1 -1
  324. package/dist/mcp/tool-bridge.js +101 -24
  325. package/dist/mcp/tool-bridge.js.map +1 -1
  326. package/dist/mcp/types.d.ts +27 -0
  327. package/dist/mcp/types.d.ts.map +1 -1
  328. package/dist/mcp/types.js.map +1 -1
  329. package/dist/mcp/workspace-trust.d.ts +10 -0
  330. package/dist/mcp/workspace-trust.d.ts.map +1 -0
  331. package/dist/mcp/workspace-trust.js +295 -0
  332. package/dist/mcp/workspace-trust.js.map +1 -0
  333. package/dist/memory/service-client.d.ts +1 -0
  334. package/dist/memory/service-client.d.ts.map +1 -1
  335. package/dist/memory/service-client.js +194 -9
  336. package/dist/memory/service-client.js.map +1 -1
  337. package/dist/models/builtin.d.ts.map +1 -1
  338. package/dist/models/builtin.js +66 -25
  339. package/dist/models/builtin.js.map +1 -1
  340. package/dist/models/config-loader.d.ts +10 -10
  341. package/dist/models/config-loader.d.ts.map +1 -1
  342. package/dist/models/config-loader.js +2 -0
  343. package/dist/models/config-loader.js.map +1 -1
  344. package/dist/models/registry.d.ts +1 -0
  345. package/dist/models/registry.d.ts.map +1 -1
  346. package/dist/models/registry.js +1 -0
  347. package/dist/models/registry.js.map +1 -1
  348. package/dist/oauth/device-identity.d.ts.map +1 -1
  349. package/dist/oauth/device-identity.js +1 -3
  350. package/dist/oauth/device-identity.js.map +1 -1
  351. package/dist/oauth/evalops.d.ts.map +1 -1
  352. package/dist/oauth/evalops.js +2 -5
  353. package/dist/oauth/evalops.js.map +1 -1
  354. package/dist/opentelemetry.d.ts.map +1 -1
  355. package/dist/opentelemetry.js +12 -12
  356. package/dist/opentelemetry.js.map +1 -1
  357. package/dist/package-version.d.ts +2 -0
  358. package/dist/package-version.d.ts.map +1 -0
  359. package/dist/package-version.js +11 -0
  360. package/dist/package-version.js.map +1 -0
  361. package/dist/packages/constants.d.ts +3 -0
  362. package/dist/packages/constants.d.ts.map +1 -0
  363. package/dist/packages/constants.js +3 -0
  364. package/dist/packages/constants.js.map +1 -0
  365. package/dist/packages/inspection.d.ts.map +1 -1
  366. package/dist/packages/inspection.js +2 -1
  367. package/dist/packages/inspection.js.map +1 -1
  368. package/dist/packages/search.d.ts.map +1 -1
  369. package/dist/packages/search.js +1 -1
  370. package/dist/packages/search.js.map +1 -1
  371. package/dist/platform/a2a-capability-market.d.ts +21 -0
  372. package/dist/platform/a2a-capability-market.d.ts.map +1 -0
  373. package/dist/platform/a2a-capability-market.js +176 -0
  374. package/dist/platform/a2a-capability-market.js.map +1 -0
  375. package/dist/platform/a2a-client.d.ts +217 -0
  376. package/dist/platform/a2a-client.d.ts.map +1 -0
  377. package/dist/platform/a2a-client.js +589 -0
  378. package/dist/platform/a2a-client.js.map +1 -0
  379. package/dist/platform/a2a-fleet.d.ts +41 -0
  380. package/dist/platform/a2a-fleet.d.ts.map +1 -0
  381. package/dist/platform/a2a-fleet.js +109 -0
  382. package/dist/platform/a2a-fleet.js.map +1 -0
  383. package/dist/platform/a2a-maestro-peer.d.ts +20 -0
  384. package/dist/platform/a2a-maestro-peer.d.ts.map +1 -0
  385. package/dist/platform/a2a-maestro-peer.js +176 -0
  386. package/dist/platform/a2a-maestro-peer.js.map +1 -0
  387. package/dist/platform/a2a-peer-pairing.d.ts +107 -0
  388. package/dist/platform/a2a-peer-pairing.d.ts.map +1 -0
  389. package/dist/platform/a2a-peer-pairing.js +489 -0
  390. package/dist/platform/a2a-peer-pairing.js.map +1 -0
  391. package/dist/platform/a2a-peer-registry.d.ts +68 -0
  392. package/dist/platform/a2a-peer-registry.d.ts.map +1 -0
  393. package/dist/platform/a2a-peer-registry.js +320 -0
  394. package/dist/platform/a2a-peer-registry.js.map +1 -0
  395. package/dist/platform/a2a-task-ledger.d.ts +86 -0
  396. package/dist/platform/a2a-task-ledger.d.ts.map +1 -0
  397. package/dist/platform/a2a-task-ledger.js +546 -0
  398. package/dist/platform/a2a-task-ledger.js.map +1 -0
  399. package/dist/platform/a2a-work-graph.d.ts +43 -0
  400. package/dist/platform/a2a-work-graph.d.ts.map +1 -0
  401. package/dist/platform/a2a-work-graph.js +267 -0
  402. package/dist/platform/a2a-work-graph.js.map +1 -0
  403. package/dist/platform/agent-registry-client.d.ts +327 -0
  404. package/dist/platform/agent-registry-client.d.ts.map +1 -0
  405. package/dist/platform/agent-registry-client.js +803 -0
  406. package/dist/platform/agent-registry-client.js.map +1 -0
  407. package/dist/platform/agent-runtime-client.d.ts +135 -1
  408. package/dist/platform/agent-runtime-client.d.ts.map +1 -1
  409. package/dist/platform/agent-runtime-client.js +467 -10
  410. package/dist/platform/agent-runtime-client.js.map +1 -1
  411. package/dist/platform/cerebro-facts-client.d.ts.map +1 -1
  412. package/dist/platform/cerebro-facts-client.js +4 -7
  413. package/dist/platform/cerebro-facts-client.js.map +1 -1
  414. package/dist/platform/client.d.ts +2 -0
  415. package/dist/platform/client.d.ts.map +1 -1
  416. package/dist/platform/client.js +7 -14
  417. package/dist/platform/client.js.map +1 -1
  418. package/dist/platform/core-services.d.ts +68 -0
  419. package/dist/platform/core-services.d.ts.map +1 -1
  420. package/dist/platform/core-services.js +68 -0
  421. package/dist/platform/core-services.js.map +1 -1
  422. package/dist/platform/fermata-eval-client.d.ts +195 -0
  423. package/dist/platform/fermata-eval-client.d.ts.map +1 -0
  424. package/dist/platform/fermata-eval-client.js +146 -0
  425. package/dist/platform/fermata-eval-client.js.map +1 -0
  426. package/dist/platform/fermata-scenario-suite.d.ts +99 -0
  427. package/dist/platform/fermata-scenario-suite.d.ts.map +1 -0
  428. package/dist/platform/fermata-scenario-suite.js +459 -0
  429. package/dist/platform/fermata-scenario-suite.js.map +1 -0
  430. package/dist/platform/maestro-timeline-client.d.ts.map +1 -1
  431. package/dist/platform/maestro-timeline-client.js +5 -11
  432. package/dist/platform/maestro-timeline-client.js.map +1 -1
  433. package/dist/platform/operating-plane-client.d.ts +156 -0
  434. package/dist/platform/operating-plane-client.d.ts.map +1 -0
  435. package/dist/platform/operating-plane-client.js +131 -0
  436. package/dist/platform/operating-plane-client.js.map +1 -0
  437. package/dist/platform/operating-plane-summary.d.ts +47 -0
  438. package/dist/platform/operating-plane-summary.d.ts.map +1 -0
  439. package/dist/platform/operating-plane-summary.js +209 -0
  440. package/dist/platform/operating-plane-summary.js.map +1 -0
  441. package/dist/platform/tool-execution-client.d.ts.map +1 -1
  442. package/dist/platform/tool-execution-client.js +4 -11
  443. package/dist/platform/tool-execution-client.js.map +1 -1
  444. package/dist/prompts/service-client.d.ts.map +1 -1
  445. package/dist/prompts/service-client.js +3 -5
  446. package/dist/prompts/service-client.js.map +1 -1
  447. package/dist/prompts/system-prompt.d.ts +3 -0
  448. package/dist/prompts/system-prompt.d.ts.map +1 -1
  449. package/dist/prompts/system-prompt.js +13 -3
  450. package/dist/prompts/system-prompt.js.map +1 -1
  451. package/dist/prompts/types.d.ts +2 -0
  452. package/dist/prompts/types.d.ts.map +1 -1
  453. package/dist/prompts/types.js.map +1 -1
  454. package/dist/providers/api-keys.d.ts +1 -1
  455. package/dist/providers/api-keys.d.ts.map +1 -1
  456. package/dist/providers/api-keys.js +2 -1
  457. package/dist/providers/api-keys.js.map +1 -1
  458. package/dist/providers/auth.d.ts.map +1 -1
  459. package/dist/providers/auth.js +48 -25
  460. package/dist/providers/auth.js.map +1 -1
  461. package/dist/remote-runner/attach-client.d.ts.map +1 -1
  462. package/dist/remote-runner/attach-client.js +1 -0
  463. package/dist/remote-runner/attach-client.js.map +1 -1
  464. package/dist/remote-runner/client.d.ts.map +1 -1
  465. package/dist/remote-runner/client.js +4 -7
  466. package/dist/remote-runner/client.js.map +1 -1
  467. package/dist/rpc/rpc-types.d.ts.map +1 -1
  468. package/dist/rpc/rpc-types.js +1 -0
  469. package/dist/rpc/rpc-types.js.map +1 -1
  470. package/dist/safety/action-firewall.d.ts.map +1 -1
  471. package/dist/safety/action-firewall.js +69 -6
  472. package/dist/safety/action-firewall.js.map +1 -1
  473. package/dist/safety/attack-patterns.d.ts.map +1 -1
  474. package/dist/safety/attack-patterns.js +31 -14
  475. package/dist/safety/attack-patterns.js.map +1 -1
  476. package/dist/safety/bash-parser.d.ts.map +1 -1
  477. package/dist/safety/bash-parser.js +4 -3
  478. package/dist/safety/bash-parser.js.map +1 -1
  479. package/dist/safety/execpolicy.d.ts +15 -3
  480. package/dist/safety/execpolicy.d.ts.map +1 -1
  481. package/dist/safety/execpolicy.js +248 -37
  482. package/dist/safety/execpolicy.js.map +1 -1
  483. package/dist/safety/governance-service-client.d.ts.map +1 -1
  484. package/dist/safety/governance-service-client.js +4 -7
  485. package/dist/safety/governance-service-client.js.map +1 -1
  486. package/dist/safety/guarded-files.d.ts +34 -0
  487. package/dist/safety/guarded-files.d.ts.map +1 -0
  488. package/dist/safety/guarded-files.js +372 -0
  489. package/dist/safety/guarded-files.js.map +1 -0
  490. package/dist/safety/loop-detector.d.ts.map +1 -1
  491. package/dist/safety/loop-detector.js +6 -1
  492. package/dist/safety/loop-detector.js.map +1 -1
  493. package/dist/safety/permission-profile.d.ts +47 -0
  494. package/dist/safety/permission-profile.d.ts.map +1 -0
  495. package/dist/safety/permission-profile.js +349 -0
  496. package/dist/safety/permission-profile.js.map +1 -0
  497. package/dist/safety/safety-middleware.d.ts +5 -1
  498. package/dist/safety/safety-middleware.d.ts.map +1 -1
  499. package/dist/safety/safety-middleware.js +3 -2
  500. package/dist/safety/safety-middleware.js.map +1 -1
  501. package/dist/safety/suspicious-patterns.d.ts.map +1 -1
  502. package/dist/safety/suspicious-patterns.js +12 -7
  503. package/dist/safety/suspicious-patterns.js.map +1 -1
  504. package/dist/safety/tool-categorization.js +1 -1
  505. package/dist/safety/tool-categorization.js.map +1 -1
  506. package/dist/safety/validators/path-policy-validator.d.ts.map +1 -1
  507. package/dist/safety/validators/path-policy-validator.js +7 -0
  508. package/dist/safety/validators/path-policy-validator.js.map +1 -1
  509. package/dist/sandbox/index.d.ts +6 -1
  510. package/dist/sandbox/index.d.ts.map +1 -1
  511. package/dist/sandbox/index.js +30 -4
  512. package/dist/sandbox/index.js.map +1 -1
  513. package/dist/sandbox/native-sandbox.d.ts +3 -0
  514. package/dist/sandbox/native-sandbox.d.ts.map +1 -1
  515. package/dist/sandbox/native-sandbox.js +139 -18
  516. package/dist/sandbox/native-sandbox.js.map +1 -1
  517. package/dist/sentry.d.ts +17 -0
  518. package/dist/sentry.d.ts.map +1 -0
  519. package/dist/sentry.js +91 -0
  520. package/dist/sentry.js.map +1 -0
  521. package/dist/server/agent-runtime-ledger.d.ts +141 -0
  522. package/dist/server/agent-runtime-ledger.d.ts.map +1 -0
  523. package/dist/server/agent-runtime-ledger.js +334 -0
  524. package/dist/server/agent-runtime-ledger.js.map +1 -0
  525. package/dist/server/agent-trajectory-inspection.d.ts +104 -0
  526. package/dist/server/agent-trajectory-inspection.d.ts.map +1 -0
  527. package/dist/server/agent-trajectory-inspection.js +168 -0
  528. package/dist/server/agent-trajectory-inspection.js.map +1 -0
  529. package/dist/server/agent-trajectory-replay.d.ts +56 -0
  530. package/dist/server/agent-trajectory-replay.d.ts.map +1 -0
  531. package/dist/server/agent-trajectory-replay.js +214 -0
  532. package/dist/server/agent-trajectory-replay.js.map +1 -0
  533. package/dist/server/agent-trajectory-scenarios.d.ts +109 -0
  534. package/dist/server/agent-trajectory-scenarios.d.ts.map +1 -0
  535. package/dist/server/agent-trajectory-scenarios.js +822 -0
  536. package/dist/server/agent-trajectory-scenarios.js.map +1 -0
  537. package/dist/server/agent-trajectory-scorers.d.ts +61 -0
  538. package/dist/server/agent-trajectory-scorers.d.ts.map +1 -0
  539. package/dist/server/agent-trajectory-scorers.js +162 -0
  540. package/dist/server/agent-trajectory-scorers.js.map +1 -0
  541. package/dist/server/agent-trajectory-validation.d.ts +7 -0
  542. package/dist/server/agent-trajectory-validation.d.ts.map +1 -0
  543. package/dist/server/agent-trajectory-validation.js +101 -0
  544. package/dist/server/agent-trajectory-validation.js.map +1 -0
  545. package/dist/server/agent-trajectory.d.ts +50 -0
  546. package/dist/server/agent-trajectory.d.ts.map +1 -0
  547. package/dist/server/agent-trajectory.js +159 -0
  548. package/dist/server/agent-trajectory.js.map +1 -0
  549. package/dist/server/app-context.d.ts +18 -0
  550. package/dist/server/app-context.d.ts.map +1 -1
  551. package/dist/server/app-context.js.map +1 -1
  552. package/dist/server/handlers/headless-sessions.d.ts.map +1 -1
  553. package/dist/server/handlers/headless-sessions.js +64 -27
  554. package/dist/server/handlers/headless-sessions.js.map +1 -1
  555. package/dist/server/handlers/health.d.ts +6 -0
  556. package/dist/server/handlers/health.d.ts.map +1 -1
  557. package/dist/server/handlers/health.js +6 -0
  558. package/dist/server/handlers/health.js.map +1 -1
  559. package/dist/server/handlers/hosted-runner-drain.d.ts +69 -1
  560. package/dist/server/handlers/hosted-runner-drain.d.ts.map +1 -1
  561. package/dist/server/handlers/hosted-runner-drain.js +309 -18
  562. package/dist/server/handlers/hosted-runner-drain.js.map +1 -1
  563. package/dist/server/handlers/hosted-runner-identity.d.ts +16 -0
  564. package/dist/server/handlers/hosted-runner-identity.d.ts.map +1 -1
  565. package/dist/server/handlers/hosted-runner-identity.js +43 -0
  566. package/dist/server/handlers/hosted-runner-identity.js.map +1 -1
  567. package/dist/server/handlers/mode.d.ts.map +1 -1
  568. package/dist/server/handlers/mode.js +3 -1
  569. package/dist/server/handlers/mode.js.map +1 -1
  570. package/dist/server/handlers/pending-requests.d.ts.map +1 -1
  571. package/dist/server/handlers/pending-requests.js +336 -51
  572. package/dist/server/handlers/pending-requests.js.map +1 -1
  573. package/dist/server/handlers/platform-a2a-push.d.ts +6 -0
  574. package/dist/server/handlers/platform-a2a-push.d.ts.map +1 -0
  575. package/dist/server/handlers/platform-a2a-push.js +136 -0
  576. package/dist/server/handlers/platform-a2a-push.js.map +1 -0
  577. package/dist/server/handlers/sessions.d.ts.map +1 -1
  578. package/dist/server/handlers/sessions.js +21 -1
  579. package/dist/server/handlers/sessions.js.map +1 -1
  580. package/dist/server/headless-runtime-service.d.ts +9 -2
  581. package/dist/server/headless-runtime-service.d.ts.map +1 -1
  582. package/dist/server/headless-runtime-service.js +39 -0
  583. package/dist/server/headless-runtime-service.js.map +1 -1
  584. package/dist/server/hosted-agent-runtime-progress.d.ts +144 -0
  585. package/dist/server/hosted-agent-runtime-progress.d.ts.map +1 -0
  586. package/dist/server/hosted-agent-runtime-progress.js +1650 -0
  587. package/dist/server/hosted-agent-runtime-progress.js.map +1 -0
  588. package/dist/server/hosted-runner-lease.d.ts +41 -0
  589. package/dist/server/hosted-runner-lease.d.ts.map +1 -0
  590. package/dist/server/hosted-runner-lease.js +140 -0
  591. package/dist/server/hosted-runner-lease.js.map +1 -0
  592. package/dist/server/hosted-session-manager.d.ts +16 -8
  593. package/dist/server/hosted-session-manager.d.ts.map +1 -1
  594. package/dist/server/hosted-session-manager.js +98 -76
  595. package/dist/server/hosted-session-manager.js.map +1 -1
  596. package/dist/server/junit-xml.d.ts +2 -0
  597. package/dist/server/junit-xml.d.ts.map +1 -0
  598. package/dist/server/junit-xml.js +9 -0
  599. package/dist/server/junit-xml.js.map +1 -0
  600. package/dist/server/routes.d.ts.map +1 -1
  601. package/dist/server/routes.js +6 -0
  602. package/dist/server/routes.js.map +1 -1
  603. package/dist/server/scenario-recorder.d.ts +56 -0
  604. package/dist/server/scenario-recorder.d.ts.map +1 -0
  605. package/dist/server/scenario-recorder.js +109 -0
  606. package/dist/server/scenario-recorder.js.map +1 -0
  607. package/dist/server/scripted-scenario-runner.d.ts +46 -0
  608. package/dist/server/scripted-scenario-runner.d.ts.map +1 -0
  609. package/dist/server/scripted-scenario-runner.js +190 -0
  610. package/dist/server/scripted-scenario-runner.js.map +1 -0
  611. package/dist/server/server-middlewares.d.ts +6 -2
  612. package/dist/server/server-middlewares.d.ts.map +1 -1
  613. package/dist/server/server-middlewares.js +8 -2
  614. package/dist/server/server-middlewares.js.map +1 -1
  615. package/dist/server/server-request-manager.d.ts +9 -1
  616. package/dist/server/server-request-manager.d.ts.map +1 -1
  617. package/dist/server/server-request-manager.js +49 -4
  618. package/dist/server/server-request-manager.js.map +1 -1
  619. package/dist/services/intelligent-router/service.d.ts +2 -0
  620. package/dist/services/intelligent-router/service.d.ts.map +1 -1
  621. package/dist/services/intelligent-router/service.js +4 -0
  622. package/dist/services/intelligent-router/service.js.map +1 -1
  623. package/dist/services/service-authority.d.ts +25 -0
  624. package/dist/services/service-authority.d.ts.map +1 -0
  625. package/dist/services/service-authority.js +143 -0
  626. package/dist/services/service-authority.js.map +1 -0
  627. package/dist/services/workspace-config/service.d.ts +2 -0
  628. package/dist/services/workspace-config/service.d.ts.map +1 -1
  629. package/dist/services/workspace-config/service.js +4 -0
  630. package/dist/services/workspace-config/service.js.map +1 -1
  631. package/dist/session/manager.d.ts +8 -2
  632. package/dist/session/manager.d.ts.map +1 -1
  633. package/dist/session/manager.js +19 -4
  634. package/dist/session/manager.js.map +1 -1
  635. package/dist/session/session-branch.d.ts.map +1 -1
  636. package/dist/session/session-branch.js +5 -1
  637. package/dist/session/session-branch.js.map +1 -1
  638. package/dist/session/session-catalog.d.ts +7 -2
  639. package/dist/session/session-catalog.d.ts.map +1 -1
  640. package/dist/session/session-catalog.js +13 -2
  641. package/dist/session/session-catalog.js.map +1 -1
  642. package/dist/session/session-context.d.ts +6 -2
  643. package/dist/session/session-context.d.ts.map +1 -1
  644. package/dist/session/session-context.js +44 -4
  645. package/dist/session/session-context.js.map +1 -1
  646. package/dist/session/session-graph-projection.d.ts +32 -0
  647. package/dist/session/session-graph-projection.d.ts.map +1 -0
  648. package/dist/session/session-graph-projection.js +133 -0
  649. package/dist/session/session-graph-projection.js.map +1 -0
  650. package/dist/session/types.d.ts +18 -0
  651. package/dist/session/types.d.ts.map +1 -1
  652. package/dist/session/types.js +8 -0
  653. package/dist/session/types.js.map +1 -1
  654. package/dist/session/wire-format.generated.d.ts +3 -0
  655. package/dist/session/wire-format.generated.d.ts.map +1 -1
  656. package/dist/session/wire-format.generated.js +20 -0
  657. package/dist/session/wire-format.generated.js.map +1 -1
  658. package/dist/skills/eval-harness.d.ts +38 -0
  659. package/dist/skills/eval-harness.d.ts.map +1 -0
  660. package/dist/skills/eval-harness.js +112 -0
  661. package/dist/skills/eval-harness.js.map +1 -0
  662. package/dist/skills/index.d.ts +5 -1
  663. package/dist/skills/index.d.ts.map +1 -1
  664. package/dist/skills/index.js +5 -1
  665. package/dist/skills/index.js.map +1 -1
  666. package/dist/skills/linter.d.ts +36 -0
  667. package/dist/skills/linter.d.ts.map +1 -0
  668. package/dist/skills/linter.js +398 -0
  669. package/dist/skills/linter.js.map +1 -0
  670. package/dist/skills/loader.d.ts +36 -6
  671. package/dist/skills/loader.d.ts.map +1 -1
  672. package/dist/skills/loader.js +169 -86
  673. package/dist/skills/loader.js.map +1 -1
  674. package/dist/skills/package-contract.d.ts +45 -0
  675. package/dist/skills/package-contract.d.ts.map +1 -0
  676. package/dist/skills/package-contract.js +153 -0
  677. package/dist/skills/package-contract.js.map +1 -0
  678. package/dist/skills/runtime-activation.d.ts +68 -0
  679. package/dist/skills/runtime-activation.d.ts.map +1 -0
  680. package/dist/skills/runtime-activation.js +228 -0
  681. package/dist/skills/runtime-activation.js.map +1 -0
  682. package/dist/skills/service-client.d.ts.map +1 -1
  683. package/dist/skills/service-client.js +3 -4
  684. package/dist/skills/service-client.js.map +1 -1
  685. package/dist/skills/tool.d.ts.map +1 -1
  686. package/dist/skills/tool.js +2 -0
  687. package/dist/skills/tool.js.map +1 -1
  688. package/dist/skills/types.d.ts +14 -0
  689. package/dist/skills/types.d.ts.map +1 -1
  690. package/dist/skills/types.js.map +1 -1
  691. package/dist/telemetry/agent-operating-plane-context.d.ts +24 -0
  692. package/dist/telemetry/agent-operating-plane-context.d.ts.map +1 -0
  693. package/dist/telemetry/agent-operating-plane-context.js +54 -0
  694. package/dist/telemetry/agent-operating-plane-context.js.map +1 -0
  695. package/dist/telemetry/beacon.d.ts +24 -0
  696. package/dist/telemetry/beacon.d.ts.map +1 -0
  697. package/dist/telemetry/beacon.js +115 -0
  698. package/dist/telemetry/beacon.js.map +1 -0
  699. package/dist/telemetry/cli-command-aggregator.d.ts +36 -0
  700. package/dist/telemetry/cli-command-aggregator.d.ts.map +1 -0
  701. package/dist/telemetry/cli-command-aggregator.js +251 -0
  702. package/dist/telemetry/cli-command-aggregator.js.map +1 -0
  703. package/dist/telemetry/cli-startup.d.ts +21 -0
  704. package/dist/telemetry/cli-startup.d.ts.map +1 -0
  705. package/dist/telemetry/cli-startup.js +83 -0
  706. package/dist/telemetry/cli-startup.js.map +1 -0
  707. package/dist/telemetry/disablement.d.ts +13 -0
  708. package/dist/telemetry/disablement.d.ts.map +1 -0
  709. package/dist/telemetry/disablement.js +19 -0
  710. package/dist/telemetry/disablement.js.map +1 -0
  711. package/dist/telemetry/index.d.ts +6 -2
  712. package/dist/telemetry/index.d.ts.map +1 -1
  713. package/dist/telemetry/index.js +6 -2
  714. package/dist/telemetry/index.js.map +1 -1
  715. package/dist/telemetry/maestro-event-bus.d.ts +52 -0
  716. package/dist/telemetry/maestro-event-bus.d.ts.map +1 -1
  717. package/dist/telemetry/maestro-event-bus.js +179 -3
  718. package/dist/telemetry/maestro-event-bus.js.map +1 -1
  719. package/dist/telemetry/maestro-event-catalog.d.ts +3 -1
  720. package/dist/telemetry/maestro-event-catalog.d.ts.map +1 -1
  721. package/dist/telemetry/maestro-event-catalog.js +2 -0
  722. package/dist/telemetry/maestro-event-catalog.js.map +1 -1
  723. package/dist/telemetry/maestro-platform-replay-fixture.d.ts.map +1 -1
  724. package/dist/telemetry/maestro-platform-replay-fixture.js +74 -9
  725. package/dist/telemetry/maestro-platform-replay-fixture.js.map +1 -1
  726. package/dist/telemetry/maestro-publisher-conformance-fixture.d.ts +1 -1
  727. package/dist/telemetry/maestro-publisher-conformance-fixture.d.ts.map +1 -1
  728. package/dist/telemetry/maestro-publisher-conformance-fixture.js +46 -11
  729. package/dist/telemetry/maestro-publisher-conformance-fixture.js.map +1 -1
  730. package/dist/telemetry/mcp-beacon.d.ts +20 -0
  731. package/dist/telemetry/mcp-beacon.d.ts.map +1 -0
  732. package/dist/telemetry/mcp-beacon.js +54 -0
  733. package/dist/telemetry/mcp-beacon.js.map +1 -0
  734. package/dist/telemetry/metadata-normalization.d.ts +7 -0
  735. package/dist/telemetry/metadata-normalization.d.ts.map +1 -0
  736. package/dist/telemetry/metadata-normalization.js +189 -0
  737. package/dist/telemetry/metadata-normalization.js.map +1 -0
  738. package/dist/telemetry/meter-service-client.d.ts.map +1 -1
  739. package/dist/telemetry/meter-service-client.js +5 -10
  740. package/dist/telemetry/meter-service-client.js.map +1 -1
  741. package/dist/telemetry/metrics.d.ts +123 -0
  742. package/dist/telemetry/metrics.d.ts.map +1 -0
  743. package/dist/telemetry/metrics.js +184 -0
  744. package/dist/telemetry/metrics.js.map +1 -0
  745. package/dist/telemetry/turn-tracker.d.ts +1 -0
  746. package/dist/telemetry/turn-tracker.d.ts.map +1 -1
  747. package/dist/telemetry/turn-tracker.js +22 -1
  748. package/dist/telemetry/turn-tracker.js.map +1 -1
  749. package/dist/telemetry/wide-events.d.ts +31 -1
  750. package/dist/telemetry/wide-events.d.ts.map +1 -1
  751. package/dist/telemetry/wide-events.js +229 -1
  752. package/dist/telemetry/wide-events.js.map +1 -1
  753. package/dist/telemetry.d.ts +39 -3
  754. package/dist/telemetry.d.ts.map +1 -1
  755. package/dist/telemetry.js +160 -3
  756. package/dist/telemetry.js.map +1 -1
  757. package/dist/testing/test-verification-hook.d.ts.map +1 -1
  758. package/dist/testing/test-verification-hook.js +34 -21
  759. package/dist/testing/test-verification-hook.js.map +1 -1
  760. package/dist/tools/apply-patch-parser.d.ts +26 -0
  761. package/dist/tools/apply-patch-parser.d.ts.map +1 -0
  762. package/dist/tools/apply-patch-parser.js +146 -0
  763. package/dist/tools/apply-patch-parser.js.map +1 -0
  764. package/dist/tools/apply-patch.d.ts +42 -0
  765. package/dist/tools/apply-patch.d.ts.map +1 -0
  766. package/dist/tools/apply-patch.js +648 -0
  767. package/dist/tools/apply-patch.js.map +1 -0
  768. package/dist/tools/ask-user.d.ts +1 -0
  769. package/dist/tools/ask-user.d.ts.map +1 -1
  770. package/dist/tools/background/tool-handler.d.ts +1 -0
  771. package/dist/tools/background/tool-handler.d.ts.map +1 -1
  772. package/dist/tools/bash.d.ts +1 -0
  773. package/dist/tools/bash.d.ts.map +1 -1
  774. package/dist/tools/codesearch.d.ts +1 -0
  775. package/dist/tools/codesearch.d.ts.map +1 -1
  776. package/dist/tools/conductor-client.d.ts +1 -0
  777. package/dist/tools/conductor-client.d.ts.map +1 -1
  778. package/dist/tools/conductor-client.js +63 -0
  779. package/dist/tools/conductor-client.js.map +1 -1
  780. package/dist/tools/diff.d.ts +1 -0
  781. package/dist/tools/diff.d.ts.map +1 -1
  782. package/dist/tools/edit.d.ts +1 -0
  783. package/dist/tools/edit.d.ts.map +1 -1
  784. package/dist/tools/extract-document.d.ts +1 -0
  785. package/dist/tools/extract-document.d.ts.map +1 -1
  786. package/dist/tools/find.d.ts +10 -0
  787. package/dist/tools/find.d.ts.map +1 -1
  788. package/dist/tools/find.js +236 -27
  789. package/dist/tools/find.js.map +1 -1
  790. package/dist/tools/gh.d.ts +3 -0
  791. package/dist/tools/gh.d.ts.map +1 -1
  792. package/dist/tools/index.d.ts +50 -0
  793. package/dist/tools/index.d.ts.map +1 -1
  794. package/dist/tools/index.js +4 -0
  795. package/dist/tools/index.js.map +1 -1
  796. package/dist/tools/list.d.ts +1 -0
  797. package/dist/tools/list.d.ts.map +1 -1
  798. package/dist/tools/notebook.d.ts +1 -0
  799. package/dist/tools/notebook.d.ts.map +1 -1
  800. package/dist/tools/oracle.d.ts +1 -0
  801. package/dist/tools/oracle.d.ts.map +1 -1
  802. package/dist/tools/oracle.js +17 -32
  803. package/dist/tools/oracle.js.map +1 -1
  804. package/dist/tools/parallel-execution.d.ts +13 -2
  805. package/dist/tools/parallel-execution.d.ts.map +1 -1
  806. package/dist/tools/parallel-execution.js +178 -7
  807. package/dist/tools/parallel-execution.js.map +1 -1
  808. package/dist/tools/parallel-ripgrep.d.ts +1 -0
  809. package/dist/tools/parallel-ripgrep.d.ts.map +1 -1
  810. package/dist/tools/pipeline.d.ts +4 -0
  811. package/dist/tools/pipeline.d.ts.map +1 -1
  812. package/dist/tools/read.d.ts +1 -0
  813. package/dist/tools/read.d.ts.map +1 -1
  814. package/dist/tools/search.d.ts +1 -0
  815. package/dist/tools/search.d.ts.map +1 -1
  816. package/dist/tools/status.d.ts +1 -0
  817. package/dist/tools/status.d.ts.map +1 -1
  818. package/dist/tools/todo.d.ts +1 -0
  819. package/dist/tools/todo.d.ts.map +1 -1
  820. package/dist/tools/tool-dsl.d.ts +5 -1
  821. package/dist/tools/tool-dsl.d.ts.map +1 -1
  822. package/dist/tools/tool-dsl.js +1 -0
  823. package/dist/tools/tool-dsl.js.map +1 -1
  824. package/dist/tools/tool-result-cache.d.ts.map +1 -1
  825. package/dist/tools/tool-result-cache.js +1 -0
  826. package/dist/tools/tool-result-cache.js.map +1 -1
  827. package/dist/tools/typebox-tool.d.ts.map +1 -1
  828. package/dist/tools/typebox-tool.js +3 -0
  829. package/dist/tools/typebox-tool.js.map +1 -1
  830. package/dist/tools/webfetch.d.ts +1 -0
  831. package/dist/tools/webfetch.d.ts.map +1 -1
  832. package/dist/tools/websearch.d.ts +1 -0
  833. package/dist/tools/websearch.d.ts.map +1 -1
  834. package/dist/tools/write.d.ts +1 -0
  835. package/dist/tools/write.d.ts.map +1 -1
  836. package/dist/utils/abort-error.d.ts +2 -0
  837. package/dist/utils/abort-error.d.ts.map +1 -0
  838. package/dist/utils/abort-error.js +7 -0
  839. package/dist/utils/abort-error.js.map +1 -0
  840. package/dist/utils/downstream.d.ts.map +1 -1
  841. package/dist/utils/downstream.js +4 -0
  842. package/dist/utils/downstream.js.map +1 -1
  843. package/dist/utils/logger.d.ts +3 -0
  844. package/dist/utils/logger.d.ts.map +1 -1
  845. package/dist/utils/logger.js +14 -3
  846. package/dist/utils/logger.js.map +1 -1
  847. package/dist/utils/path-containment.d.ts +2 -0
  848. package/dist/utils/path-containment.d.ts.map +1 -0
  849. package/dist/utils/path-containment.js +14 -0
  850. package/dist/utils/path-containment.js.map +1 -0
  851. package/dist/utils/prompt-safe-text.d.ts +7 -0
  852. package/dist/utils/prompt-safe-text.d.ts.map +1 -0
  853. package/dist/utils/prompt-safe-text.js +44 -0
  854. package/dist/utils/prompt-safe-text.js.map +1 -0
  855. package/dist/version.json +2 -2
  856. package/dist/web-server.d.ts.map +1 -1
  857. package/dist/web-server.js +32 -7
  858. package/dist/web-server.js.map +1 -1
  859. package/dist/workspace/root-resolver.d.ts +4 -1
  860. package/dist/workspace/root-resolver.d.ts.map +1 -1
  861. package/dist/workspace/root-resolver.js +16 -6
  862. package/dist/workspace/root-resolver.js.map +1 -1
  863. package/node_modules/@evalops/contracts/dist/advisor-effort.d.ts +8 -0
  864. package/node_modules/@evalops/contracts/dist/advisor-effort.d.ts.map +1 -0
  865. package/node_modules/@evalops/contracts/dist/advisor-effort.js +35 -0
  866. package/node_modules/@evalops/contracts/dist/advisor-effort.js.map +1 -0
  867. package/node_modules/@evalops/contracts/dist/delegation-prompt.d.ts +10 -0
  868. package/node_modules/@evalops/contracts/dist/delegation-prompt.d.ts.map +1 -0
  869. package/node_modules/@evalops/contracts/dist/delegation-prompt.js +48 -0
  870. package/node_modules/@evalops/contracts/dist/delegation-prompt.js.map +1 -0
  871. package/node_modules/@evalops/contracts/dist/guarded-files-settings.d.ts +20 -0
  872. package/node_modules/@evalops/contracts/dist/guarded-files-settings.d.ts.map +1 -0
  873. package/node_modules/@evalops/contracts/dist/guarded-files-settings.js +147 -0
  874. package/node_modules/@evalops/contracts/dist/guarded-files-settings.js.map +1 -0
  875. package/node_modules/@evalops/contracts/dist/headless-protocol-generated.d.ts +2 -0
  876. package/node_modules/@evalops/contracts/dist/headless-protocol-generated.d.ts.map +1 -1
  877. package/node_modules/@evalops/contracts/dist/headless-protocol-generated.js +1 -0
  878. package/node_modules/@evalops/contracts/dist/headless-protocol-generated.js.map +1 -1
  879. package/node_modules/@evalops/contracts/dist/headless-protocol-schemas.generated.d.ts +280 -5
  880. package/node_modules/@evalops/contracts/dist/headless-protocol-schemas.generated.d.ts.map +1 -1
  881. package/node_modules/@evalops/contracts/dist/headless-protocol-schemas.generated.js +36 -1
  882. package/node_modules/@evalops/contracts/dist/headless-protocol-schemas.generated.js.map +1 -1
  883. package/node_modules/@evalops/contracts/dist/index.d.ts +15 -1
  884. package/node_modules/@evalops/contracts/dist/index.d.ts.map +1 -1
  885. package/node_modules/@evalops/contracts/dist/index.js +6 -0
  886. package/node_modules/@evalops/contracts/dist/index.js.map +1 -1
  887. package/node_modules/@evalops/contracts/dist/maestro-app-server.d.ts +593 -0
  888. package/node_modules/@evalops/contracts/dist/maestro-app-server.d.ts.map +1 -0
  889. package/node_modules/@evalops/contracts/dist/maestro-app-server.js +218 -0
  890. package/node_modules/@evalops/contracts/dist/maestro-app-server.js.map +1 -0
  891. package/node_modules/@evalops/contracts/dist/proto/maestro/v1/headless_pb.d.ts +91 -0
  892. package/node_modules/@evalops/contracts/dist/proto/maestro/v1/headless_pb.d.ts.map +1 -1
  893. package/node_modules/@evalops/contracts/dist/proto/maestro/v1/headless_pb.js +92 -61
  894. package/node_modules/@evalops/contracts/dist/proto/maestro/v1/headless_pb.js.map +1 -1
  895. package/node_modules/@evalops/contracts/dist/runtime-app-server.d.ts +3 -0
  896. package/node_modules/@evalops/contracts/dist/runtime-app-server.d.ts.map +1 -1
  897. package/node_modules/@evalops/contracts/dist/runtime-constraints.d.ts +28 -0
  898. package/node_modules/@evalops/contracts/dist/runtime-constraints.d.ts.map +1 -0
  899. package/node_modules/@evalops/contracts/dist/runtime-constraints.js +71 -0
  900. package/node_modules/@evalops/contracts/dist/runtime-constraints.js.map +1 -0
  901. package/node_modules/@evalops/contracts/dist/runtime-server-request.d.ts +7 -0
  902. package/node_modules/@evalops/contracts/dist/runtime-server-request.d.ts.map +1 -1
  903. package/node_modules/@evalops/contracts/dist/runtime-server-request.js +2 -0
  904. package/node_modules/@evalops/contracts/dist/runtime-server-request.js.map +1 -1
  905. package/node_modules/@evalops/contracts/dist/scenario.d.ts +191 -0
  906. package/node_modules/@evalops/contracts/dist/scenario.d.ts.map +1 -0
  907. package/node_modules/@evalops/contracts/dist/scenario.js +4 -0
  908. package/node_modules/@evalops/contracts/dist/scenario.js.map +1 -0
  909. package/node_modules/@evalops/contracts/dist/schemas.d.ts +17 -3
  910. package/node_modules/@evalops/contracts/dist/schemas.d.ts.map +1 -1
  911. package/node_modules/@evalops/contracts/dist/schemas.js +16 -0
  912. package/node_modules/@evalops/contracts/dist/schemas.js.map +1 -1
  913. package/node_modules/@evalops/contracts/package.json +1 -1
  914. package/node_modules/@evalops/tui/package.json +1 -1
  915. package/package.json +41 -7
  916. package/skills/incident-triage/SKILL.md +40 -0
  917. package/skills/incident-triage/mcp.json +14 -0
  918. package/skills/incident-triage/reference/triage.md +20 -0
  919. package/skills/incident-triage/toolbox/incident-timeline +22 -0
  920. package/skills/incident-triage/toolbox/incident-timeline.cmd +16 -0
  921. package/skills/pr-review/SKILL.md +40 -0
  922. package/skills/pr-review/mcp.json +14 -0
  923. package/skills/pr-review/reference/rubric.md +20 -0
  924. package/skills/pr-review/toolbox/review-summary +20 -0
  925. package/skills/pr-review/toolbox/review-summary.cmd +14 -0
  926. package/skills/release-verification/SKILL.md +40 -0
  927. package/skills/release-verification/mcp.json +15 -0
  928. package/skills/release-verification/reference/checklist.md +21 -0
  929. package/skills/release-verification/toolbox/release-readiness +18 -0
  930. package/skills/release-verification/toolbox/release-readiness.cmd +12 -0
@@ -0,0 +1,48 @@
1
+ import { recordStagedRolloutSurfaceUsage } from "../telemetry.js";
2
+ import { createLogger } from "../utils/logger.js";
3
+ export const LEGACY_HEADLESS_RUNTIME_ENV = "MAESTRO_INTERNAL_HEADLESS_RUNTIME";
4
+ export const LEGACY_HEADLESS_RUNTIME_ENV_VALUE = "legacy";
5
+ export const LEGACY_HEADLESS_RUNTIME_ID = "typescript-headless-legacy";
6
+ export const LEGACY_HEADLESS_RUNTIME_EVENT = "runtime_legacy_selected";
7
+ export function isHeadlessModeRequested(args) {
8
+ return args.headless === true || args.mode === "headless";
9
+ }
10
+ export function willDispatchHeadlessRuntime(args) {
11
+ return (isHeadlessModeRequested(args) &&
12
+ (args.command === undefined || args.command === "exec"));
13
+ }
14
+ export function isLegacyHeadlessRuntimeRequested(env = process.env) {
15
+ return env[LEGACY_HEADLESS_RUNTIME_ENV] === LEGACY_HEADLESS_RUNTIME_ENV_VALUE;
16
+ }
17
+ export function selectHeadlessRuntime(env = process.env, options = {}) {
18
+ if (options.allowLegacy !== true || !isLegacyHeadlessRuntimeRequested(env)) {
19
+ return { kind: "current" };
20
+ }
21
+ return {
22
+ kind: "legacy",
23
+ source: LEGACY_HEADLESS_RUNTIME_ENV,
24
+ runtimeId: LEGACY_HEADLESS_RUNTIME_ID,
25
+ event: LEGACY_HEADLESS_RUNTIME_EVENT,
26
+ };
27
+ }
28
+ export function recordHeadlessRuntimeSelection(selection, logger = createLogger("headless-runtime"), recorder = recordStagedRolloutSurfaceUsage) {
29
+ if (selection.kind !== "legacy") {
30
+ return;
31
+ }
32
+ logger.info(selection.event, {
33
+ runtime: selection.runtimeId,
34
+ source: selection.source,
35
+ surface: "headless",
36
+ });
37
+ void recorder("internal_gate_used", {
38
+ surfaceId: "internal-gate:headless-runtime-selector",
39
+ surfaceType: "internal_gate",
40
+ owner: "headless-runtime",
41
+ source: selection.source,
42
+ metadata: {
43
+ runtime: selection.runtimeId,
44
+ event: selection.event,
45
+ },
46
+ });
47
+ }
48
+ //# sourceMappingURL=headless-runtime-selection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"headless-runtime-selection.js","sourceRoot":"","sources":["../../src/cli/headless-runtime-selection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,+BAA+B,EAAE,MAAM,iBAAiB,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,MAAM,CAAC,MAAM,2BAA2B,GAAG,mCAAmC,CAAC;AAC/E,MAAM,CAAC,MAAM,iCAAiC,GAAG,QAAQ,CAAC;AAC1D,MAAM,CAAC,MAAM,0BAA0B,GAAG,4BAA4B,CAAC;AACvE,MAAM,CAAC,MAAM,6BAA6B,GAAG,yBAAyB,CAAC;AAqCvE,MAAM,UAAU,uBAAuB,CAAC,IAAsB;IAC7D,OAAO,IAAI,CAAC,QAAQ,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,2BAA2B,CAC1C,IAA0B;IAE1B,OAAO,CACN,uBAAuB,CAAC,IAAI,CAAC;QAC7B,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO,KAAK,MAAM,CAAC,CACvD,CAAC;AACH,CAAC;AAED,MAAM,UAAU,gCAAgC,CAC/C,MAAyB,OAAO,CAAC,GAAG;IAEpC,OAAO,GAAG,CAAC,2BAA2B,CAAC,KAAK,iCAAiC,CAAC;AAC/E,CAAC;AAED,MAAM,UAAU,qBAAqB,CACpC,MAAyB,OAAO,CAAC,GAAG,EACpC,UAAqC,EAAE;IAEvC,IAAI,OAAO,CAAC,WAAW,KAAK,IAAI,IAAI,CAAC,gCAAgC,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5E,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IAC5B,CAAC;IAED,OAAO;QACN,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,2BAA2B;QACnC,SAAS,EAAE,0BAA0B;QACrC,KAAK,EAAE,6BAA6B;KACpC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,8BAA8B,CAC7C,SAAmC,EACnC,SAAiC,YAAY,CAAC,kBAAkB,CAAC,EACjE,WAA8C,+BAA+B;IAE7E,IAAI,SAAS,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACjC,OAAO;IACR,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;QAC5B,OAAO,EAAE,SAAS,CAAC,SAAS;QAC5B,MAAM,EAAE,SAAS,CAAC,MAAM;QACxB,OAAO,EAAE,UAAU;KACnB,CAAC,CAAC;IACH,KAAK,QAAQ,CAAC,oBAAoB,EAAE;QACnC,SAAS,EAAE,yCAAyC;QACpD,WAAW,EAAE,eAAe;QAC5B,KAAK,EAAE,kBAAkB;QACzB,MAAM,EAAE,SAAS,CAAC,MAAM;QACxB,QAAQ,EAAE;YACT,OAAO,EAAE,SAAS,CAAC,SAAS;YAC5B,KAAK,EAAE,SAAS,CAAC,KAAK;SACtB;KACD,CAAC,CAAC;AACJ,CAAC","sourcesContent":["import { recordStagedRolloutSurfaceUsage } from \"../telemetry.js\";\nimport { createLogger } from \"../utils/logger.js\";\n\nexport const LEGACY_HEADLESS_RUNTIME_ENV = \"MAESTRO_INTERNAL_HEADLESS_RUNTIME\";\nexport const LEGACY_HEADLESS_RUNTIME_ENV_VALUE = \"legacy\";\nexport const LEGACY_HEADLESS_RUNTIME_ID = \"typescript-headless-legacy\";\nexport const LEGACY_HEADLESS_RUNTIME_EVENT = \"runtime_legacy_selected\";\n\nexport type HeadlessRuntimeSelection =\n\t| {\n\t\t\tkind: \"current\";\n\t }\n\t| {\n\t\t\tkind: \"legacy\";\n\t\t\tsource: typeof LEGACY_HEADLESS_RUNTIME_ENV;\n\t\t\truntimeId: typeof LEGACY_HEADLESS_RUNTIME_ID;\n\t\t\tevent: typeof LEGACY_HEADLESS_RUNTIME_EVENT;\n\t };\n\nexport interface RuntimeSelectionLogger {\n\tinfo(message: string, context?: Record<string, unknown>): void;\n}\n\nexport type RuntimeSelectionTelemetryRecorder = (\n\tevent: \"internal_gate_used\",\n\toptions: {\n\t\tsurfaceId: string;\n\t\tsurfaceType: \"internal_gate\";\n\t\towner: string;\n\t\tsource: string;\n\t\tmetadata?: Record<string, unknown>;\n\t},\n) => void | Promise<void>;\n\ntype HeadlessModeArgs = {\n\theadless?: boolean;\n\tmode?: string;\n};\n\ntype HeadlessDispatchArgs = HeadlessModeArgs & {\n\tcommand?: string;\n};\n\nexport function isHeadlessModeRequested(args: HeadlessModeArgs): boolean {\n\treturn args.headless === true || args.mode === \"headless\";\n}\n\nexport function willDispatchHeadlessRuntime(\n\targs: HeadlessDispatchArgs,\n): boolean {\n\treturn (\n\t\tisHeadlessModeRequested(args) &&\n\t\t(args.command === undefined || args.command === \"exec\")\n\t);\n}\n\nexport function isLegacyHeadlessRuntimeRequested(\n\tenv: NodeJS.ProcessEnv = process.env,\n): boolean {\n\treturn env[LEGACY_HEADLESS_RUNTIME_ENV] === LEGACY_HEADLESS_RUNTIME_ENV_VALUE;\n}\n\nexport function selectHeadlessRuntime(\n\tenv: NodeJS.ProcessEnv = process.env,\n\toptions: { allowLegacy?: boolean } = {},\n): HeadlessRuntimeSelection {\n\tif (options.allowLegacy !== true || !isLegacyHeadlessRuntimeRequested(env)) {\n\t\treturn { kind: \"current\" };\n\t}\n\n\treturn {\n\t\tkind: \"legacy\",\n\t\tsource: LEGACY_HEADLESS_RUNTIME_ENV,\n\t\truntimeId: LEGACY_HEADLESS_RUNTIME_ID,\n\t\tevent: LEGACY_HEADLESS_RUNTIME_EVENT,\n\t};\n}\n\nexport function recordHeadlessRuntimeSelection(\n\tselection: HeadlessRuntimeSelection,\n\tlogger: RuntimeSelectionLogger = createLogger(\"headless-runtime\"),\n\trecorder: RuntimeSelectionTelemetryRecorder = recordStagedRolloutSurfaceUsage,\n): void {\n\tif (selection.kind !== \"legacy\") {\n\t\treturn;\n\t}\n\n\tlogger.info(selection.event, {\n\t\truntime: selection.runtimeId,\n\t\tsource: selection.source,\n\t\tsurface: \"headless\",\n\t});\n\tvoid recorder(\"internal_gate_used\", {\n\t\tsurfaceId: \"internal-gate:headless-runtime-selector\",\n\t\tsurfaceType: \"internal_gate\",\n\t\towner: \"headless-runtime\",\n\t\tsource: selection.source,\n\t\tmetadata: {\n\t\t\truntime: selection.runtimeId,\n\t\t\tevent: selection.event,\n\t\t},\n\t});\n}\n"]}
@@ -10,6 +10,10 @@ import type { Agent } from "../agent/index.js";
10
10
  import type { ToolRetryService } from "../agent/tool-retry.js";
11
11
  import type { SessionManager } from "../session/manager.js";
12
12
  import { HEADLESS_PROTOCOL_VERSION, buildHeadlessCompactionMessage, buildHeadlessToolsSummary, buildHeadlessUsage, classifyHeadlessError } from "./headless-protocol.js";
13
+ import type { HeadlessRuntimeSelection } from "./headless-runtime-selection.js";
13
14
  export { HEADLESS_PROTOCOL_VERSION, buildHeadlessCompactionMessage, buildHeadlessToolsSummary, buildHeadlessUsage, classifyHeadlessError, };
14
- export declare function runHeadlessMode(agent: Agent, sessionManager: SessionManager, approvalService?: ActionApprovalService, toolRetryService?: ToolRetryService): Promise<void>;
15
+ export interface RunHeadlessModeOptions {
16
+ runtimeSelection?: HeadlessRuntimeSelection;
17
+ }
18
+ export declare function runHeadlessMode(agent: Agent, sessionManager: SessionManager, approvalService?: ActionApprovalService, toolRetryService?: ToolRetryService, options?: RunHeadlessModeOptions): Promise<void>;
15
19
  //# sourceMappingURL=headless.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"headless.d.ts","sourceRoot":"","sources":["../../src/cli/headless.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAS/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EACN,yBAAyB,EAOzB,8BAA8B,EAE9B,yBAAyB,EACzB,kBAAkB,EAClB,qBAAqB,EAMrB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACN,yBAAyB,EACzB,8BAA8B,EAC9B,yBAAyB,EACzB,kBAAkB,EAClB,qBAAqB,GACrB,CAAC;AAuCF,wBAAsB,eAAe,CACpC,KAAK,EAAE,KAAK,EACZ,cAAc,EAAE,cAAc,EAC9B,eAAe,CAAC,EAAE,qBAAqB,EACvC,gBAAgB,CAAC,EAAE,gBAAgB,GACjC,OAAO,CAAC,IAAI,CAAC,CAgrBf"}
1
+ {"version":3,"file":"headless.d.ts","sourceRoot":"","sources":["../../src/cli/headless.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAS/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EACN,yBAAyB,EAOzB,8BAA8B,EAE9B,yBAAyB,EACzB,kBAAkB,EAClB,qBAAqB,EAMrB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAEhF,OAAO,EACN,yBAAyB,EACzB,8BAA8B,EAC9B,yBAAyB,EACzB,kBAAkB,EAClB,qBAAqB,GACrB,CAAC;AAIF,MAAM,WAAW,sBAAsB;IACtC,gBAAgB,CAAC,EAAE,wBAAwB,CAAC;CAC5C;AAqCD,wBAAsB,eAAe,CACpC,KAAK,EAAE,KAAK,EACZ,cAAc,EAAE,cAAc,EAC9B,eAAe,CAAC,EAAE,qBAAqB,EACvC,gBAAgB,CAAC,EAAE,gBAAgB,EACnC,OAAO,GAAE,sBAA2B,GAClC,OAAO,CAAC,IAAI,CAAC,CA0rBf"}
@@ -48,9 +48,10 @@ function sendError(message, fatal, options) {
48
48
  error_type: classifyHeadlessError(message, fatal),
49
49
  });
50
50
  }
51
- export async function runHeadlessMode(agent, sessionManager, approvalService, toolRetryService) {
51
+ export async function runHeadlessMode(agent, sessionManager, approvalService, toolRetryService, options = {}) {
52
52
  const translator = new HeadlessProtocolTranslator();
53
53
  const state = createHeadlessRuntimeState();
54
+ void options.runtimeSelection;
54
55
  const shouldFilterOutgoingMessage = (msg, force = false) => {
55
56
  if (force || !state.opt_out_notifications?.length) {
56
57
  return false;
@@ -196,6 +197,9 @@ export async function runHeadlessMode(agent, sessionManager, approvalService, to
196
197
  : {}),
197
198
  args: event.request.args,
198
199
  reason: event.request.reason,
200
+ ...(event.request.startedAtMs !== undefined
201
+ ? { started_at_ms: event.request.startedAtMs }
202
+ : {}),
199
203
  });
200
204
  return;
201
205
  }
@@ -207,6 +211,12 @@ export async function runHeadlessMode(agent, sessionManager, approvalService, to
207
211
  resolution: event.resolution,
208
212
  reason: event.reason,
209
213
  resolved_by: event.resolvedBy,
214
+ ...(event.request.startedAtMs !== undefined
215
+ ? { started_at_ms: event.request.startedAtMs }
216
+ : {}),
217
+ ...(event.resolvedAtMs !== undefined
218
+ ? { resolved_at_ms: event.resolvedAtMs }
219
+ : {}),
210
220
  });
211
221
  });
212
222
  agent.subscribe((event) => {
@@ -1 +1 @@
1
- {"version":3,"file":"headless.js","sourceRoot":"","sources":["../../src/cli/headless.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Headless Agent Mode for Native TUI Communication\n *\n * This module wires stdin/stdout to the shared headless protocol helpers.\n * The protocol itself lives in `headless-protocol.ts` so local stdio and\n * remote runtimes stay aligned.\n */\n\nimport { basename } from \"node:path\";\nimport {\n\tassertHeadlessFromAgentMessage,\n\tassertHeadlessToAgentMessage,\n} from \"@evalops/contracts\";\nimport type { ActionApprovalService } from \"../agent/action-approval.js\";\nimport type { Agent } from \"../agent/index.js\";\nimport { buildCompactionEvent } from \"../agent/prompt-recovery.js\";\nimport type { ToolRetryService } from \"../agent/tool-retry.js\";\nimport { runUserPromptWithRecovery } from \"../agent/user-prompt-runtime.js\";\nimport { withHeadlessPostKeepMessages } from \"../headless/prompt-recovery.js\";\nimport { HeadlessUtilityCommandManager } from \"../headless/utility-command-manager.js\";\nimport { readWorkspaceFile } from \"../headless/utility-file-read.js\";\nimport { searchWorkspaceFiles } from \"../headless/utility-file-search.js\";\nimport { HeadlessUtilityFileWatchManager } from \"../headless/utility-file-watch-manager.js\";\nimport { clientToolService } from \"../server/client-tools-service.js\";\nimport { serverRequestManager } from \"../server/server-request-manager.js\";\nimport type { SessionManager } from \"../session/manager.js\";\nimport {\n\tHEADLESS_PROTOCOL_VERSION,\n\ttype HeadlessFromAgentMessage,\n\tHeadlessProtocolTranslator,\n\ttype HeadlessToAgentMessage,\n\tapplyIncomingHeadlessMessage,\n\tapplyInitMessage,\n\tapplyOutgoingHeadlessMessage,\n\tbuildHeadlessCompactionMessage,\n\tbuildHeadlessRawAgentEventMessage,\n\tbuildHeadlessToolsSummary,\n\tbuildHeadlessUsage,\n\tclassifyHeadlessError,\n\tcreateHeadlessRuntimeState,\n\theadlessHelloChangesConnectionRole,\n\theadlessViewerCanSend,\n\theadlessViewerDisallowedCapability,\n\tloadPromptAttachments,\n} from \"./headless-protocol.js\";\n\nexport {\n\tHEADLESS_PROTOCOL_VERSION,\n\tbuildHeadlessCompactionMessage,\n\tbuildHeadlessToolsSummary,\n\tbuildHeadlessUsage,\n\tclassifyHeadlessError,\n};\n\nconst LOCAL_HEADLESS_CONNECTION_ID = \"local\";\n\nfunction send(msg: HeadlessFromAgentMessage): void {\n\ttry {\n\t\tassertHeadlessFromAgentMessage(msg, \"headless stdout message\");\n\t\tprocess.stdout.write(`${JSON.stringify(msg)}\\n`);\n\t} catch (error) {\n\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\ttry {\n\t\t\tprocess.stdout.write(\n\t\t\t\t`${JSON.stringify({\n\t\t\t\t\ttype: \"error\",\n\t\t\t\t\tmessage: `Failed to emit headless message: ${message}`,\n\t\t\t\t\tfatal: false,\n\t\t\t\t\terror_type: \"protocol\",\n\t\t\t\t} satisfies HeadlessFromAgentMessage)}\\n`,\n\t\t\t);\n\t\t} catch {\n\t\t\t// Ignore fallback write failures; there is no safer recovery path on stdout.\n\t\t}\n\t}\n}\n\nfunction sendError(\n\tmessage: string,\n\tfatal: boolean,\n\toptions?: { request_id?: string },\n): void {\n\tsend({\n\t\ttype: \"error\",\n\t\trequest_id: options?.request_id,\n\t\tmessage,\n\t\tfatal,\n\t\terror_type: classifyHeadlessError(message, fatal),\n\t});\n}\n\nexport async function runHeadlessMode(\n\tagent: Agent,\n\tsessionManager: SessionManager,\n\tapprovalService?: ActionApprovalService,\n\ttoolRetryService?: ToolRetryService,\n): Promise<void> {\n\tconst translator = new HeadlessProtocolTranslator();\n\tconst state = createHeadlessRuntimeState();\n\n\tconst shouldFilterOutgoingMessage = (\n\t\tmsg: HeadlessFromAgentMessage,\n\t\tforce = false,\n\t): boolean => {\n\t\tif (force || !state.opt_out_notifications?.length) {\n\t\t\treturn false;\n\t\t}\n\t\tswitch (msg.type) {\n\t\t\tcase \"status\":\n\t\t\t\treturn state.opt_out_notifications.includes(\"status\");\n\t\t\tcase \"compaction\":\n\t\t\t\treturn state.opt_out_notifications.includes(\"compaction\");\n\t\t\tcase \"connection_info\":\n\t\t\t\treturn state.opt_out_notifications.includes(\"connection_info\");\n\t\t\tdefault:\n\t\t\t\treturn false;\n\t\t}\n\t};\n\n\tconst sendMessage = (\n\t\tmsg: HeadlessFromAgentMessage,\n\t\toptions?: { force?: boolean },\n\t): void => {\n\t\tapplyIncomingHeadlessMessage(state, msg);\n\t\tif (shouldFilterOutgoingMessage(msg, options?.force)) {\n\t\t\treturn;\n\t\t}\n\t\tsend(msg);\n\t};\n\tconst shouldHandleServerRequestEvent = (\n\t\tsessionId: string | undefined,\n\t): boolean => {\n\t\tconst currentSessionId = sessionManager.getSessionId() ?? undefined;\n\t\tif (!currentSessionId) {\n\t\t\treturn sessionId === undefined;\n\t\t}\n\t\treturn sessionId === currentSessionId;\n\t};\n\n\tconst cancelPendingServerRequests = (reason: string): void => {\n\t\tconst sessionId = sessionManager.getSessionId() ?? undefined;\n\t\tif (sessionId) {\n\t\t\tserverRequestManager.cancelBySession(sessionId, reason, \"runtime\");\n\t\t}\n\t\tfor (const request of [\n\t\t\t...state.pending_approvals,\n\t\t\t...state.pending_client_tools,\n\t\t\t...state.pending_mcp_elicitations,\n\t\t\t...state.pending_user_inputs,\n\t\t\t...state.pending_tool_retries,\n\t\t]) {\n\t\t\tserverRequestManager.cancel(\n\t\t\t\trequest.request_id ?? request.call_id,\n\t\t\t\treason,\n\t\t\t\t\"runtime\",\n\t\t\t);\n\t\t}\n\t};\n\tconst utilityCommands = new HeadlessUtilityCommandManager((event) => {\n\t\tswitch (event.type) {\n\t\t\tcase \"started\":\n\t\t\t\tsendMessage({\n\t\t\t\t\ttype: \"utility_command_started\",\n\t\t\t\t\tcommand_id: event.command_id,\n\t\t\t\t\tcommand: event.command,\n\t\t\t\t\tshell_mode: event.shell_mode,\n\t\t\t\t\tterminal_mode: event.terminal_mode,\n\t\t\t\t\t...(event.cwd ? { cwd: event.cwd } : {}),\n\t\t\t\t\t...(event.pid !== undefined ? { pid: event.pid } : {}),\n\t\t\t\t\t...(event.columns !== undefined ? { columns: event.columns } : {}),\n\t\t\t\t\t...(event.rows !== undefined ? { rows: event.rows } : {}),\n\t\t\t\t\t...(event.owner_connection_id\n\t\t\t\t\t\t? { owner_connection_id: event.owner_connection_id }\n\t\t\t\t\t\t: {}),\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\tcase \"resized\":\n\t\t\t\tsendMessage({\n\t\t\t\t\ttype: \"utility_command_resized\",\n\t\t\t\t\tcommand_id: event.command_id,\n\t\t\t\t\tcolumns: event.columns,\n\t\t\t\t\trows: event.rows,\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\tcase \"output\":\n\t\t\t\tsendMessage({\n\t\t\t\t\ttype: \"utility_command_output\",\n\t\t\t\t\tcommand_id: event.command_id,\n\t\t\t\t\tstream: event.stream,\n\t\t\t\t\tcontent: event.content,\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\tcase \"exited\":\n\t\t\t\tsendMessage({\n\t\t\t\t\ttype: \"utility_command_exited\",\n\t\t\t\t\tcommand_id: event.command_id,\n\t\t\t\t\tsuccess: event.success,\n\t\t\t\t\texit_code: event.exit_code,\n\t\t\t\t\tsignal: event.signal,\n\t\t\t\t\treason: event.reason,\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t}\n\t});\n\tconst fileWatches = new HeadlessUtilityFileWatchManager((event) => {\n\t\tswitch (event.type) {\n\t\t\tcase \"started\":\n\t\t\t\tsendMessage({\n\t\t\t\t\ttype: \"utility_file_watch_started\",\n\t\t\t\t\twatch_id: event.watch_id,\n\t\t\t\t\troot_dir: event.root_dir,\n\t\t\t\t\tinclude_patterns: event.include_patterns,\n\t\t\t\t\texclude_patterns: event.exclude_patterns,\n\t\t\t\t\tdebounce_ms: event.debounce_ms,\n\t\t\t\t\towner_connection_id: event.owner_connection_id,\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\tcase \"event\":\n\t\t\t\tsendMessage({\n\t\t\t\t\ttype: \"utility_file_watch_event\",\n\t\t\t\t\twatch_id: event.watch_id,\n\t\t\t\t\tchange_type: event.change_type,\n\t\t\t\t\tpath: event.path,\n\t\t\t\t\trelative_path: event.relative_path,\n\t\t\t\t\ttimestamp: event.timestamp,\n\t\t\t\t\tis_directory: event.is_directory,\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\tcase \"stopped\":\n\t\t\t\tsendMessage({\n\t\t\t\t\ttype: \"utility_file_watch_stopped\",\n\t\t\t\t\twatch_id: event.watch_id,\n\t\t\t\t\treason: event.reason,\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t}\n\t});\n\n\tconst unsubscribeServerRequests = serverRequestManager.subscribe((event) => {\n\t\tif (!shouldHandleServerRequestEvent(event.request.sessionId)) {\n\t\t\treturn;\n\t\t}\n\t\tif (event.type === \"registered\") {\n\t\t\tsendMessage({\n\t\t\t\ttype: \"server_request\",\n\t\t\t\trequest_id: event.request.id,\n\t\t\t\trequest_type: event.request.kind,\n\t\t\t\tcall_id: event.request.callId,\n\t\t\t\ttool: event.request.toolName,\n\t\t\t\t...(event.request.displayName\n\t\t\t\t\t? { display_name: event.request.displayName }\n\t\t\t\t\t: {}),\n\t\t\t\t...(event.request.summaryLabel\n\t\t\t\t\t? { summary_label: event.request.summaryLabel }\n\t\t\t\t\t: {}),\n\t\t\t\t...(event.request.actionDescription\n\t\t\t\t\t? { action_description: event.request.actionDescription }\n\t\t\t\t\t: {}),\n\t\t\t\targs: event.request.args,\n\t\t\t\treason: event.request.reason,\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tsendMessage({\n\t\t\ttype: \"server_request_resolved\",\n\t\t\trequest_id: event.request.id,\n\t\t\trequest_type: event.request.kind,\n\t\t\tcall_id: event.request.callId,\n\t\t\tresolution: event.resolution,\n\t\t\treason: event.reason,\n\t\t\tresolved_by: event.resolvedBy,\n\t\t});\n\t});\n\n\tagent.subscribe((event) => {\n\t\tif (state.capabilities?.raw_agent_events) {\n\t\t\tsendMessage(buildHeadlessRawAgentEventMessage(event));\n\t\t}\n\t\tif (\n\t\t\tevent.type === \"action_approval_required\" &&\n\t\t\t!approvalService?.requiresUserInteraction()\n\t\t) {\n\t\t\treturn;\n\t\t}\n\t\tconst pendingApprovalRegistration =\n\t\t\tevent.type === \"action_approval_required\" &&\n\t\t\tapprovalService?.requiresUserInteraction() &&\n\t\t\t!serverRequestManager.get(event.request.id)\n\t\t\t\t? {\n\t\t\t\t\t\tsessionId: sessionManager.getSessionId() ?? undefined,\n\t\t\t\t\t\trequest: event.request,\n\t\t\t\t\t\tservice: approvalService,\n\t\t\t\t\t}\n\t\t\t\t: null;\n\t\tfor (const message of translator.handleAgentEvent(event)) {\n\t\t\tif (\n\t\t\t\tmessage.type === \"server_request\" ||\n\t\t\t\tmessage.type === \"server_request_resolved\"\n\t\t\t) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tsendMessage(message);\n\t\t}\n\t\tif (pendingApprovalRegistration) {\n\t\t\tserverRequestManager.registerApproval(pendingApprovalRegistration);\n\t\t}\n\t});\n\n\tsendMessage(translator.buildReadyMessage(agent, sessionManager));\n\tsendMessage(translator.buildSessionInfoMessage(sessionManager));\n\n\tconst readline = await import(\"node:readline\");\n\tconst rl = readline.createInterface({\n\t\tinput: process.stdin,\n\t\toutput: process.stdout,\n\t\tterminal: false,\n\t});\n\n\trl.on(\"line\", async (line: string) => {\n\t\tlet msg: HeadlessToAgentMessage;\n\t\ttry {\n\t\t\tconst parsed = JSON.parse(line) as unknown;\n\t\t\tassertHeadlessToAgentMessage(parsed, \"headless command\");\n\t\t\tmsg = parsed;\n\t\t} catch (error) {\n\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\tsendError(`Failed to parse command: ${message}`, false);\n\t\t\treturn;\n\t\t}\n\n\t\ttry {\n\t\t\tif (headlessHelloChangesConnectionRole(msg, state.connection_role)) {\n\t\t\t\tsend({\n\t\t\t\t\ttype: \"error\",\n\t\t\t\t\tmessage: \"headless connection role cannot change after hello\",\n\t\t\t\t\tfatal: false,\n\t\t\t\t\terror_type: \"protocol\",\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst disallowedViewerCapability = headlessViewerDisallowedCapability(\n\t\t\t\tmsg,\n\t\t\t\tstate.connection_role,\n\t\t\t);\n\t\t\tif (disallowedViewerCapability !== undefined) {\n\t\t\t\tsend({\n\t\t\t\t\ttype: \"error\",\n\t\t\t\t\tmessage: `viewer headless connections cannot negotiate ${disallowedViewerCapability} requests`,\n\t\t\t\t\tfatal: false,\n\t\t\t\t\terror_type: \"protocol\",\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (state.connection_role === \"viewer\" && !headlessViewerCanSend(msg)) {\n\t\t\t\tsend({\n\t\t\t\t\ttype: \"error\",\n\t\t\t\t\tmessage: \"Viewer headless connections cannot send messages\",\n\t\t\t\t\tfatal: false,\n\t\t\t\t\terror_type: \"protocol\",\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tswitch (msg.type) {\n\t\t\t\tcase \"init\": {\n\t\t\t\t\tconst applied = applyInitMessage(agent, msg, approvalService);\n\t\t\t\t\tsendMessage({\n\t\t\t\t\t\ttype: \"status\",\n\t\t\t\t\t\tmessage:\n\t\t\t\t\t\t\tapplied.length > 0\n\t\t\t\t\t\t\t\t? `Initialized: ${applied.join(\", \")}`\n\t\t\t\t\t\t\t\t: \"Init received with no changes\",\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tcase \"hello\": {\n\t\t\t\t\tapplyOutgoingHeadlessMessage(state, msg);\n\t\t\t\t\tconst effectiveRole = state.connection_role ?? \"controller\";\n\t\t\t\t\ttoolRetryService?.setMode(\n\t\t\t\t\t\tmsg.capabilities?.server_requests?.includes(\"tool_retry\")\n\t\t\t\t\t\t\t? \"prompt\"\n\t\t\t\t\t\t\t: \"skip\",\n\t\t\t\t\t);\n\t\t\t\t\tsendMessage(\n\t\t\t\t\t\ttranslator.buildHelloOkMessage({\n\t\t\t\t\t\t\tconnection_id: LOCAL_HEADLESS_CONNECTION_ID,\n\t\t\t\t\t\t\tprotocol_version: HEADLESS_PROTOCOL_VERSION,\n\t\t\t\t\t\t\tclient_protocol_version: msg.protocol_version,\n\t\t\t\t\t\t\tclient_info: msg.client_info,\n\t\t\t\t\t\t\tcapabilities: msg.capabilities,\n\t\t\t\t\t\t\topt_out_notifications: msg.opt_out_notifications,\n\t\t\t\t\t\t\trole: effectiveRole,\n\t\t\t\t\t\t\tcontroller_connection_id:\n\t\t\t\t\t\t\t\teffectiveRole === \"controller\"\n\t\t\t\t\t\t\t\t\t? LOCAL_HEADLESS_CONNECTION_ID\n\t\t\t\t\t\t\t\t\t: null,\n\t\t\t\t\t\t\tlease_expires_at: null,\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t{ force: true },\n\t\t\t\t\t);\n\t\t\t\t\tsendMessage(\n\t\t\t\t\t\ttranslator.buildConnectionInfoMessage({\n\t\t\t\t\t\t\tconnection_id: LOCAL_HEADLESS_CONNECTION_ID,\n\t\t\t\t\t\t\tprotocol_version: msg.protocol_version,\n\t\t\t\t\t\t\tclient_info: msg.client_info,\n\t\t\t\t\t\t\tcapabilities: msg.capabilities,\n\t\t\t\t\t\t\topt_out_notifications: msg.opt_out_notifications,\n\t\t\t\t\t\t\trole: effectiveRole,\n\t\t\t\t\t\t\tconnection_count: 1,\n\t\t\t\t\t\t\tcontroller_connection_id:\n\t\t\t\t\t\t\t\teffectiveRole === \"controller\"\n\t\t\t\t\t\t\t\t\t? LOCAL_HEADLESS_CONNECTION_ID\n\t\t\t\t\t\t\t\t\t: null,\n\t\t\t\t\t\t\tlease_expires_at: null,\n\t\t\t\t\t\t\tconnections: state.connections,\n\t\t\t\t\t\t}),\n\t\t\t\t\t);\n\t\t\t\t\tif (\n\t\t\t\t\t\tmsg.protocol_version &&\n\t\t\t\t\t\tmsg.protocol_version !== HEADLESS_PROTOCOL_VERSION\n\t\t\t\t\t) {\n\t\t\t\t\t\tsendMessage({\n\t\t\t\t\t\t\ttype: \"status\",\n\t\t\t\t\t\t\tmessage: `Client protocol ${msg.protocol_version} attached to server ${HEADLESS_PROTOCOL_VERSION}`,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tcase \"prompt\":\n\t\t\t\t\tapplyOutgoingHeadlessMessage(state, msg);\n\t\t\t\t\tawait runUserPromptWithRecovery({\n\t\t\t\t\t\tagent,\n\t\t\t\t\t\tsessionManager,\n\t\t\t\t\t\tcwd: process.cwd(),\n\t\t\t\t\t\tprompt: msg.content,\n\t\t\t\t\t\tattachmentCount: msg.attachments?.length ?? 0,\n\t\t\t\t\t\tattachmentNames: msg.attachments?.map((path) => basename(path)),\n\t\t\t\t\t\tgetPostKeepMessages: withHeadlessPostKeepMessages(() => state),\n\t\t\t\t\t\texecute: async () => {\n\t\t\t\t\t\t\tif (msg.attachments && msg.attachments.length > 0) {\n\t\t\t\t\t\t\t\tconst loaded = await loadPromptAttachments(\n\t\t\t\t\t\t\t\t\tmsg.attachments,\n\t\t\t\t\t\t\t\t\tsendError,\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tif (loaded.length > 0) {\n\t\t\t\t\t\t\t\t\tsendMessage({\n\t\t\t\t\t\t\t\t\t\ttype: \"status\",\n\t\t\t\t\t\t\t\t\t\tmessage: `Loaded ${loaded.length} attachment(s)`,\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\tawait agent.prompt(msg.content, loaded);\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tawait agent.prompt(msg.content);\n\t\t\t\t\t\t},\n\t\t\t\t\t\tcallbacks: {\n\t\t\t\t\t\t\tonCompacting: () => {\n\t\t\t\t\t\t\t\tsendMessage({\n\t\t\t\t\t\t\t\t\ttype: \"status\",\n\t\t\t\t\t\t\t\t\tmessage:\n\t\t\t\t\t\t\t\t\t\t\"Prompt exceeded the context window. Compacting history and continuing automatically...\",\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tonCompacted: (result) => {\n\t\t\t\t\t\t\t\tsendMessage(\n\t\t\t\t\t\t\t\t\tbuildHeadlessCompactionMessage(\n\t\t\t\t\t\t\t\t\t\tbuildCompactionEvent(result, { auto: true }),\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tonMaxOutputContinue: (attempt, maxContinuations) => {\n\t\t\t\t\t\t\t\tsendMessage({\n\t\t\t\t\t\t\t\t\ttype: \"status\",\n\t\t\t\t\t\t\t\t\tmessage:\n\t\t\t\t\t\t\t\t\t\tattempt === 1\n\t\t\t\t\t\t\t\t\t\t\t? \"Response hit the output limit. Continuing automatically...\"\n\t\t\t\t\t\t\t\t\t\t\t: `Response still hit the output limit. Continuing automatically (${attempt}/${maxContinuations})...`,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tonMaxOutputExhausted: (maxContinuations) => {\n\t\t\t\t\t\t\t\tsendMessage({\n\t\t\t\t\t\t\t\t\ttype: \"status\",\n\t\t\t\t\t\t\t\t\tmessage: `Stopped after ${maxContinuations} automatic continuations because the response kept hitting the output limit.`,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tonMaxOutputStoppedEarly: (attempt, maxContinuations) => {\n\t\t\t\t\t\t\t\tsendMessage({\n\t\t\t\t\t\t\t\t\ttype: \"status\",\n\t\t\t\t\t\t\t\t\tmessage: `Stopped automatic continuation early after ${attempt}/${maxContinuations} retries because recent responses made minimal progress.`,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"interrupt\":\n\t\t\t\tcase \"cancel\":\n\t\t\t\t\tcancelPendingServerRequests(\n\t\t\t\t\t\tmsg.type === \"interrupt\"\n\t\t\t\t\t\t\t? \"Interrupted before request completed\"\n\t\t\t\t\t\t\t: \"Cancelled before request completed\",\n\t\t\t\t\t);\n\t\t\t\t\tapplyOutgoingHeadlessMessage(state, msg);\n\t\t\t\t\tawait utilityCommands.dispose(\n\t\t\t\t\t\tmsg.type === \"interrupt\"\n\t\t\t\t\t\t\t? \"Interrupted while utility command was still running\"\n\t\t\t\t\t\t\t: \"Cancelled while utility command was still running\",\n\t\t\t\t\t);\n\t\t\t\t\tfileWatches.dispose(\n\t\t\t\t\t\tmsg.type === \"interrupt\"\n\t\t\t\t\t\t\t? \"Interrupted while file watch was still running\"\n\t\t\t\t\t\t\t: \"Cancelled while file watch was still running\",\n\t\t\t\t\t);\n\t\t\t\t\tagent.abort();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"tool_response\":\n\t\t\t\t\tif (approvalService?.requiresUserInteraction()) {\n\t\t\t\t\t\tconst reason = msg.approved\n\t\t\t\t\t\t\t? (msg.result?.output ?? \"Approved\")\n\t\t\t\t\t\t\t: (msg.result?.error ?? \"Denied by user\");\n\t\t\t\t\t\tconst resolved = serverRequestManager.resolveApproval(msg.call_id, {\n\t\t\t\t\t\t\tapproved: msg.approved,\n\t\t\t\t\t\t\treason,\n\t\t\t\t\t\t\tresolvedBy: \"user\",\n\t\t\t\t\t\t});\n\t\t\t\t\t\tif (!resolved) {\n\t\t\t\t\t\t\tsendError(\n\t\t\t\t\t\t\t\t`No pending approval found for call_id: ${msg.call_id}`,\n\t\t\t\t\t\t\t\tfalse,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsendMessage({\n\t\t\t\t\t\t\ttype: \"status\",\n\t\t\t\t\t\t\tmessage: \"Tool response ignored (auto-approval mode)\",\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tapplyOutgoingHeadlessMessage(state, msg);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"client_tool_result\": {\n\t\t\t\t\tconst resolved = clientToolService.resolve(\n\t\t\t\t\t\tmsg.call_id,\n\t\t\t\t\t\tmsg.content,\n\t\t\t\t\t\tmsg.is_error,\n\t\t\t\t\t);\n\t\t\t\t\tif (!resolved) {\n\t\t\t\t\t\tsendError(\n\t\t\t\t\t\t\t`No pending client tool request found for call_id: ${msg.call_id}`,\n\t\t\t\t\t\t\tfalse,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tapplyOutgoingHeadlessMessage(state, msg);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tcase \"server_request_response\":\n\t\t\t\t\tif (msg.request_type === \"approval\") {\n\t\t\t\t\t\tif (approvalService?.requiresUserInteraction()) {\n\t\t\t\t\t\t\tconst reason = msg.approved\n\t\t\t\t\t\t\t\t? (msg.result?.output ?? \"Approved\")\n\t\t\t\t\t\t\t\t: (msg.result?.error ?? \"Denied by user\");\n\t\t\t\t\t\t\tconst resolved = serverRequestManager.resolveApproval(\n\t\t\t\t\t\t\t\tmsg.request_id,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tapproved: msg.approved ?? false,\n\t\t\t\t\t\t\t\t\treason,\n\t\t\t\t\t\t\t\t\tresolvedBy: \"user\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tif (!resolved) {\n\t\t\t\t\t\t\t\tsendError(\n\t\t\t\t\t\t\t\t\t`No pending approval found for request_id: ${msg.request_id}`,\n\t\t\t\t\t\t\t\t\tfalse,\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tsendMessage({\n\t\t\t\t\t\t\t\ttype: \"status\",\n\t\t\t\t\t\t\t\tmessage: \"Tool response ignored (auto-approval mode)\",\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (msg.request_type === \"tool_retry\") {\n\t\t\t\t\t\tconst resolved = serverRequestManager.resolveToolRetry(\n\t\t\t\t\t\t\tmsg.request_id,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\taction: msg.decision_action ?? \"abort\",\n\t\t\t\t\t\t\t\treason: msg.reason,\n\t\t\t\t\t\t\t\tresolvedBy: \"user\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (!resolved) {\n\t\t\t\t\t\t\tsendError(\n\t\t\t\t\t\t\t\t`No pending tool retry request found for request_id: ${msg.request_id}`,\n\t\t\t\t\t\t\t\tfalse,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst resolved = clientToolService.resolve(\n\t\t\t\t\t\t\tmsg.request_id,\n\t\t\t\t\t\t\tmsg.content ?? [],\n\t\t\t\t\t\t\tmsg.is_error ?? false,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (!resolved) {\n\t\t\t\t\t\t\tsendError(\n\t\t\t\t\t\t\t\t`No pending client tool request found for request_id: ${msg.request_id}`,\n\t\t\t\t\t\t\t\tfalse,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tapplyOutgoingHeadlessMessage(state, msg);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"utility_command_start\":\n\t\t\t\t\tif (\n\t\t\t\t\t\t!state.capabilities?.utility_operations?.includes(\"command_exec\")\n\t\t\t\t\t) {\n\t\t\t\t\t\tsendError(\n\t\t\t\t\t\t\t\"utility_command_start requires command_exec capability\",\n\t\t\t\t\t\t\tfalse,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tawait utilityCommands.start({\n\t\t\t\t\t\tcommand_id: msg.command_id,\n\t\t\t\t\t\tcommand: msg.command,\n\t\t\t\t\t\tcwd: msg.cwd,\n\t\t\t\t\t\tenv: msg.env,\n\t\t\t\t\t\tshell_mode: msg.shell_mode,\n\t\t\t\t\t\tterminal_mode: msg.terminal_mode,\n\t\t\t\t\t\tallow_stdin: msg.allow_stdin,\n\t\t\t\t\t\tcolumns: msg.columns,\n\t\t\t\t\t\trows: msg.rows,\n\t\t\t\t\t\towner_connection_id: LOCAL_HEADLESS_CONNECTION_ID,\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"utility_command_terminate\":\n\t\t\t\t\tawait utilityCommands.terminate(msg.command_id, msg.force);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"utility_command_stdin\":\n\t\t\t\t\tif (\n\t\t\t\t\t\t!state.capabilities?.utility_operations?.includes(\"command_exec\")\n\t\t\t\t\t) {\n\t\t\t\t\t\tsendError(\n\t\t\t\t\t\t\t\"utility_command_stdin requires command_exec capability\",\n\t\t\t\t\t\t\tfalse,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tawait utilityCommands.writeStdin(\n\t\t\t\t\t\tmsg.command_id,\n\t\t\t\t\t\tmsg.content,\n\t\t\t\t\t\tmsg.eof,\n\t\t\t\t\t);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"utility_command_resize\":\n\t\t\t\t\tif (\n\t\t\t\t\t\t!state.capabilities?.utility_operations?.includes(\"command_exec\")\n\t\t\t\t\t) {\n\t\t\t\t\t\tsendError(\n\t\t\t\t\t\t\t\"utility_command_resize requires command_exec capability\",\n\t\t\t\t\t\t\tfalse,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tawait utilityCommands.resize(msg.command_id, msg.columns, msg.rows);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"utility_file_search\":\n\t\t\t\t\tif (\n\t\t\t\t\t\t!state.capabilities?.utility_operations?.includes(\"file_search\")\n\t\t\t\t\t) {\n\t\t\t\t\t\tsendError(\n\t\t\t\t\t\t\t\"utility_file_search requires file_search capability\",\n\t\t\t\t\t\t\tfalse,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\t{\n\t\t\t\t\t\tconst result = searchWorkspaceFiles({\n\t\t\t\t\t\t\tquery: msg.query,\n\t\t\t\t\t\t\tcwd: msg.cwd,\n\t\t\t\t\t\t\tlimit: msg.limit,\n\t\t\t\t\t\t});\n\t\t\t\t\t\tsendMessage({\n\t\t\t\t\t\t\ttype: \"utility_file_search_results\",\n\t\t\t\t\t\t\tsearch_id: msg.search_id,\n\t\t\t\t\t\t\tquery: result.query,\n\t\t\t\t\t\t\tcwd: result.cwd,\n\t\t\t\t\t\t\tresults: result.results,\n\t\t\t\t\t\t\ttruncated: result.truncated,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"utility_file_read\":\n\t\t\t\t\tif (!state.capabilities?.utility_operations?.includes(\"file_read\")) {\n\t\t\t\t\t\tsendError(\"utility_file_read requires file_read capability\", false);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\t{\n\t\t\t\t\t\tlet result: Awaited<ReturnType<typeof readWorkspaceFile>>;\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresult = await readWorkspaceFile({\n\t\t\t\t\t\t\t\tpath: msg.path,\n\t\t\t\t\t\t\t\tcwd: msg.cwd,\n\t\t\t\t\t\t\t\toffset: msg.offset,\n\t\t\t\t\t\t\t\tlimit: msg.limit,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\tconst message =\n\t\t\t\t\t\t\t\terror instanceof Error ? error.message : String(error);\n\t\t\t\t\t\t\tsendError(message, false, { request_id: msg.read_id });\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsendMessage({\n\t\t\t\t\t\t\ttype: \"utility_file_read_result\",\n\t\t\t\t\t\t\tread_id: msg.read_id,\n\t\t\t\t\t\t\tpath: result.path,\n\t\t\t\t\t\t\trelative_path: result.relative_path,\n\t\t\t\t\t\t\tcwd: result.cwd,\n\t\t\t\t\t\t\tcontent: result.content,\n\t\t\t\t\t\t\tstart_line: result.start_line,\n\t\t\t\t\t\t\tend_line: result.end_line,\n\t\t\t\t\t\t\ttotal_lines: result.total_lines,\n\t\t\t\t\t\t\ttruncated: result.truncated,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"utility_file_watch_start\":\n\t\t\t\t\tif (!state.capabilities?.utility_operations?.includes(\"file_watch\")) {\n\t\t\t\t\t\tsendError(\n\t\t\t\t\t\t\t\"utility_file_watch_start requires file_watch capability\",\n\t\t\t\t\t\t\tfalse,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tawait fileWatches.start({\n\t\t\t\t\t\twatch_id: msg.watch_id,\n\t\t\t\t\t\troot_dir: msg.root_dir,\n\t\t\t\t\t\tinclude_patterns: msg.include_patterns,\n\t\t\t\t\t\texclude_patterns: msg.exclude_patterns,\n\t\t\t\t\t\tdebounce_ms: msg.debounce_ms,\n\t\t\t\t\t\towner_connection_id: LOCAL_HEADLESS_CONNECTION_ID,\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"utility_file_watch_stop\":\n\t\t\t\t\tfileWatches.stop(msg.watch_id, \"Stopped by controller\");\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"shutdown\":\n\t\t\t\t\tcancelPendingServerRequests(\"Shutdown before request completed\");\n\t\t\t\t\tapplyOutgoingHeadlessMessage(state, msg);\n\t\t\t\t\tawait utilityCommands.dispose(\n\t\t\t\t\t\t\"Headless runtime shutdown while utility command was still running\",\n\t\t\t\t\t);\n\t\t\t\t\tfileWatches.dispose(\n\t\t\t\t\t\t\"Headless runtime shutdown while file watch was still running\",\n\t\t\t\t\t);\n\t\t\t\t\tprocess.exit(0);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\tsendError(message, false);\n\t\t}\n\t});\n\n\treturn new Promise<void>((resolve) => {\n\t\trl.on(\"close\", () => {\n\t\t\tunsubscribeServerRequests();\n\t\t\tresolve();\n\t\t});\n\t});\n}\n"]}
1
+ {"version":3,"file":"headless.js","sourceRoot":"","sources":["../../src/cli/headless.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Headless Agent Mode for Native TUI Communication\n *\n * This module wires stdin/stdout to the shared headless protocol helpers.\n * The protocol itself lives in `headless-protocol.ts` so local stdio and\n * remote runtimes stay aligned.\n */\n\nimport { basename } from \"node:path\";\nimport {\n\tassertHeadlessFromAgentMessage,\n\tassertHeadlessToAgentMessage,\n} from \"@evalops/contracts\";\nimport type { ActionApprovalService } from \"../agent/action-approval.js\";\nimport type { Agent } from \"../agent/index.js\";\nimport { buildCompactionEvent } from \"../agent/prompt-recovery.js\";\nimport type { ToolRetryService } from \"../agent/tool-retry.js\";\nimport { runUserPromptWithRecovery } from \"../agent/user-prompt-runtime.js\";\nimport { withHeadlessPostKeepMessages } from \"../headless/prompt-recovery.js\";\nimport { HeadlessUtilityCommandManager } from \"../headless/utility-command-manager.js\";\nimport { readWorkspaceFile } from \"../headless/utility-file-read.js\";\nimport { searchWorkspaceFiles } from \"../headless/utility-file-search.js\";\nimport { HeadlessUtilityFileWatchManager } from \"../headless/utility-file-watch-manager.js\";\nimport { clientToolService } from \"../server/client-tools-service.js\";\nimport { serverRequestManager } from \"../server/server-request-manager.js\";\nimport type { SessionManager } from \"../session/manager.js\";\nimport {\n\tHEADLESS_PROTOCOL_VERSION,\n\ttype HeadlessFromAgentMessage,\n\tHeadlessProtocolTranslator,\n\ttype HeadlessToAgentMessage,\n\tapplyIncomingHeadlessMessage,\n\tapplyInitMessage,\n\tapplyOutgoingHeadlessMessage,\n\tbuildHeadlessCompactionMessage,\n\tbuildHeadlessRawAgentEventMessage,\n\tbuildHeadlessToolsSummary,\n\tbuildHeadlessUsage,\n\tclassifyHeadlessError,\n\tcreateHeadlessRuntimeState,\n\theadlessHelloChangesConnectionRole,\n\theadlessViewerCanSend,\n\theadlessViewerDisallowedCapability,\n\tloadPromptAttachments,\n} from \"./headless-protocol.js\";\nimport type { HeadlessRuntimeSelection } from \"./headless-runtime-selection.js\";\n\nexport {\n\tHEADLESS_PROTOCOL_VERSION,\n\tbuildHeadlessCompactionMessage,\n\tbuildHeadlessToolsSummary,\n\tbuildHeadlessUsage,\n\tclassifyHeadlessError,\n};\n\nconst LOCAL_HEADLESS_CONNECTION_ID = \"local\";\n\nexport interface RunHeadlessModeOptions {\n\truntimeSelection?: HeadlessRuntimeSelection;\n}\n\nfunction send(msg: HeadlessFromAgentMessage): void {\n\ttry {\n\t\tassertHeadlessFromAgentMessage(msg, \"headless stdout message\");\n\t\tprocess.stdout.write(`${JSON.stringify(msg)}\\n`);\n\t} catch (error) {\n\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\ttry {\n\t\t\tprocess.stdout.write(\n\t\t\t\t`${JSON.stringify({\n\t\t\t\t\ttype: \"error\",\n\t\t\t\t\tmessage: `Failed to emit headless message: ${message}`,\n\t\t\t\t\tfatal: false,\n\t\t\t\t\terror_type: \"protocol\",\n\t\t\t\t} satisfies HeadlessFromAgentMessage)}\\n`,\n\t\t\t);\n\t\t} catch {\n\t\t\t// Ignore fallback write failures; there is no safer recovery path on stdout.\n\t\t}\n\t}\n}\n\nfunction sendError(\n\tmessage: string,\n\tfatal: boolean,\n\toptions?: { request_id?: string },\n): void {\n\tsend({\n\t\ttype: \"error\",\n\t\trequest_id: options?.request_id,\n\t\tmessage,\n\t\tfatal,\n\t\terror_type: classifyHeadlessError(message, fatal),\n\t});\n}\n\nexport async function runHeadlessMode(\n\tagent: Agent,\n\tsessionManager: SessionManager,\n\tapprovalService?: ActionApprovalService,\n\ttoolRetryService?: ToolRetryService,\n\toptions: RunHeadlessModeOptions = {},\n): Promise<void> {\n\tconst translator = new HeadlessProtocolTranslator();\n\tconst state = createHeadlessRuntimeState();\n\tvoid options.runtimeSelection;\n\n\tconst shouldFilterOutgoingMessage = (\n\t\tmsg: HeadlessFromAgentMessage,\n\t\tforce = false,\n\t): boolean => {\n\t\tif (force || !state.opt_out_notifications?.length) {\n\t\t\treturn false;\n\t\t}\n\t\tswitch (msg.type) {\n\t\t\tcase \"status\":\n\t\t\t\treturn state.opt_out_notifications.includes(\"status\");\n\t\t\tcase \"compaction\":\n\t\t\t\treturn state.opt_out_notifications.includes(\"compaction\");\n\t\t\tcase \"connection_info\":\n\t\t\t\treturn state.opt_out_notifications.includes(\"connection_info\");\n\t\t\tdefault:\n\t\t\t\treturn false;\n\t\t}\n\t};\n\n\tconst sendMessage = (\n\t\tmsg: HeadlessFromAgentMessage,\n\t\toptions?: { force?: boolean },\n\t): void => {\n\t\tapplyIncomingHeadlessMessage(state, msg);\n\t\tif (shouldFilterOutgoingMessage(msg, options?.force)) {\n\t\t\treturn;\n\t\t}\n\t\tsend(msg);\n\t};\n\tconst shouldHandleServerRequestEvent = (\n\t\tsessionId: string | undefined,\n\t): boolean => {\n\t\tconst currentSessionId = sessionManager.getSessionId() ?? undefined;\n\t\tif (!currentSessionId) {\n\t\t\treturn sessionId === undefined;\n\t\t}\n\t\treturn sessionId === currentSessionId;\n\t};\n\n\tconst cancelPendingServerRequests = (reason: string): void => {\n\t\tconst sessionId = sessionManager.getSessionId() ?? undefined;\n\t\tif (sessionId) {\n\t\t\tserverRequestManager.cancelBySession(sessionId, reason, \"runtime\");\n\t\t}\n\t\tfor (const request of [\n\t\t\t...state.pending_approvals,\n\t\t\t...state.pending_client_tools,\n\t\t\t...state.pending_mcp_elicitations,\n\t\t\t...state.pending_user_inputs,\n\t\t\t...state.pending_tool_retries,\n\t\t]) {\n\t\t\tserverRequestManager.cancel(\n\t\t\t\trequest.request_id ?? request.call_id,\n\t\t\t\treason,\n\t\t\t\t\"runtime\",\n\t\t\t);\n\t\t}\n\t};\n\tconst utilityCommands = new HeadlessUtilityCommandManager((event) => {\n\t\tswitch (event.type) {\n\t\t\tcase \"started\":\n\t\t\t\tsendMessage({\n\t\t\t\t\ttype: \"utility_command_started\",\n\t\t\t\t\tcommand_id: event.command_id,\n\t\t\t\t\tcommand: event.command,\n\t\t\t\t\tshell_mode: event.shell_mode,\n\t\t\t\t\tterminal_mode: event.terminal_mode,\n\t\t\t\t\t...(event.cwd ? { cwd: event.cwd } : {}),\n\t\t\t\t\t...(event.pid !== undefined ? { pid: event.pid } : {}),\n\t\t\t\t\t...(event.columns !== undefined ? { columns: event.columns } : {}),\n\t\t\t\t\t...(event.rows !== undefined ? { rows: event.rows } : {}),\n\t\t\t\t\t...(event.owner_connection_id\n\t\t\t\t\t\t? { owner_connection_id: event.owner_connection_id }\n\t\t\t\t\t\t: {}),\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\tcase \"resized\":\n\t\t\t\tsendMessage({\n\t\t\t\t\ttype: \"utility_command_resized\",\n\t\t\t\t\tcommand_id: event.command_id,\n\t\t\t\t\tcolumns: event.columns,\n\t\t\t\t\trows: event.rows,\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\tcase \"output\":\n\t\t\t\tsendMessage({\n\t\t\t\t\ttype: \"utility_command_output\",\n\t\t\t\t\tcommand_id: event.command_id,\n\t\t\t\t\tstream: event.stream,\n\t\t\t\t\tcontent: event.content,\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\tcase \"exited\":\n\t\t\t\tsendMessage({\n\t\t\t\t\ttype: \"utility_command_exited\",\n\t\t\t\t\tcommand_id: event.command_id,\n\t\t\t\t\tsuccess: event.success,\n\t\t\t\t\texit_code: event.exit_code,\n\t\t\t\t\tsignal: event.signal,\n\t\t\t\t\treason: event.reason,\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t}\n\t});\n\tconst fileWatches = new HeadlessUtilityFileWatchManager((event) => {\n\t\tswitch (event.type) {\n\t\t\tcase \"started\":\n\t\t\t\tsendMessage({\n\t\t\t\t\ttype: \"utility_file_watch_started\",\n\t\t\t\t\twatch_id: event.watch_id,\n\t\t\t\t\troot_dir: event.root_dir,\n\t\t\t\t\tinclude_patterns: event.include_patterns,\n\t\t\t\t\texclude_patterns: event.exclude_patterns,\n\t\t\t\t\tdebounce_ms: event.debounce_ms,\n\t\t\t\t\towner_connection_id: event.owner_connection_id,\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\tcase \"event\":\n\t\t\t\tsendMessage({\n\t\t\t\t\ttype: \"utility_file_watch_event\",\n\t\t\t\t\twatch_id: event.watch_id,\n\t\t\t\t\tchange_type: event.change_type,\n\t\t\t\t\tpath: event.path,\n\t\t\t\t\trelative_path: event.relative_path,\n\t\t\t\t\ttimestamp: event.timestamp,\n\t\t\t\t\tis_directory: event.is_directory,\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\tcase \"stopped\":\n\t\t\t\tsendMessage({\n\t\t\t\t\ttype: \"utility_file_watch_stopped\",\n\t\t\t\t\twatch_id: event.watch_id,\n\t\t\t\t\treason: event.reason,\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t}\n\t});\n\n\tconst unsubscribeServerRequests = serverRequestManager.subscribe((event) => {\n\t\tif (!shouldHandleServerRequestEvent(event.request.sessionId)) {\n\t\t\treturn;\n\t\t}\n\t\tif (event.type === \"registered\") {\n\t\t\tsendMessage({\n\t\t\t\ttype: \"server_request\",\n\t\t\t\trequest_id: event.request.id,\n\t\t\t\trequest_type: event.request.kind,\n\t\t\t\tcall_id: event.request.callId,\n\t\t\t\ttool: event.request.toolName,\n\t\t\t\t...(event.request.displayName\n\t\t\t\t\t? { display_name: event.request.displayName }\n\t\t\t\t\t: {}),\n\t\t\t\t...(event.request.summaryLabel\n\t\t\t\t\t? { summary_label: event.request.summaryLabel }\n\t\t\t\t\t: {}),\n\t\t\t\t...(event.request.actionDescription\n\t\t\t\t\t? { action_description: event.request.actionDescription }\n\t\t\t\t\t: {}),\n\t\t\t\targs: event.request.args,\n\t\t\t\treason: event.request.reason,\n\t\t\t\t...(event.request.startedAtMs !== undefined\n\t\t\t\t\t? { started_at_ms: event.request.startedAtMs }\n\t\t\t\t\t: {}),\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tsendMessage({\n\t\t\ttype: \"server_request_resolved\",\n\t\t\trequest_id: event.request.id,\n\t\t\trequest_type: event.request.kind,\n\t\t\tcall_id: event.request.callId,\n\t\t\tresolution: event.resolution,\n\t\t\treason: event.reason,\n\t\t\tresolved_by: event.resolvedBy,\n\t\t\t...(event.request.startedAtMs !== undefined\n\t\t\t\t? { started_at_ms: event.request.startedAtMs }\n\t\t\t\t: {}),\n\t\t\t...(event.resolvedAtMs !== undefined\n\t\t\t\t? { resolved_at_ms: event.resolvedAtMs }\n\t\t\t\t: {}),\n\t\t});\n\t});\n\n\tagent.subscribe((event) => {\n\t\tif (state.capabilities?.raw_agent_events) {\n\t\t\tsendMessage(buildHeadlessRawAgentEventMessage(event));\n\t\t}\n\t\tif (\n\t\t\tevent.type === \"action_approval_required\" &&\n\t\t\t!approvalService?.requiresUserInteraction()\n\t\t) {\n\t\t\treturn;\n\t\t}\n\t\tconst pendingApprovalRegistration =\n\t\t\tevent.type === \"action_approval_required\" &&\n\t\t\tapprovalService?.requiresUserInteraction() &&\n\t\t\t!serverRequestManager.get(event.request.id)\n\t\t\t\t? {\n\t\t\t\t\t\tsessionId: sessionManager.getSessionId() ?? undefined,\n\t\t\t\t\t\trequest: event.request,\n\t\t\t\t\t\tservice: approvalService,\n\t\t\t\t\t}\n\t\t\t\t: null;\n\t\tfor (const message of translator.handleAgentEvent(event)) {\n\t\t\tif (\n\t\t\t\tmessage.type === \"server_request\" ||\n\t\t\t\tmessage.type === \"server_request_resolved\"\n\t\t\t) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tsendMessage(message);\n\t\t}\n\t\tif (pendingApprovalRegistration) {\n\t\t\tserverRequestManager.registerApproval(pendingApprovalRegistration);\n\t\t}\n\t});\n\n\tsendMessage(translator.buildReadyMessage(agent, sessionManager));\n\tsendMessage(translator.buildSessionInfoMessage(sessionManager));\n\n\tconst readline = await import(\"node:readline\");\n\tconst rl = readline.createInterface({\n\t\tinput: process.stdin,\n\t\toutput: process.stdout,\n\t\tterminal: false,\n\t});\n\n\trl.on(\"line\", async (line: string) => {\n\t\tlet msg: HeadlessToAgentMessage;\n\t\ttry {\n\t\t\tconst parsed = JSON.parse(line) as unknown;\n\t\t\tassertHeadlessToAgentMessage(parsed, \"headless command\");\n\t\t\tmsg = parsed;\n\t\t} catch (error) {\n\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\tsendError(`Failed to parse command: ${message}`, false);\n\t\t\treturn;\n\t\t}\n\n\t\ttry {\n\t\t\tif (headlessHelloChangesConnectionRole(msg, state.connection_role)) {\n\t\t\t\tsend({\n\t\t\t\t\ttype: \"error\",\n\t\t\t\t\tmessage: \"headless connection role cannot change after hello\",\n\t\t\t\t\tfatal: false,\n\t\t\t\t\terror_type: \"protocol\",\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst disallowedViewerCapability = headlessViewerDisallowedCapability(\n\t\t\t\tmsg,\n\t\t\t\tstate.connection_role,\n\t\t\t);\n\t\t\tif (disallowedViewerCapability !== undefined) {\n\t\t\t\tsend({\n\t\t\t\t\ttype: \"error\",\n\t\t\t\t\tmessage: `viewer headless connections cannot negotiate ${disallowedViewerCapability} requests`,\n\t\t\t\t\tfatal: false,\n\t\t\t\t\terror_type: \"protocol\",\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (state.connection_role === \"viewer\" && !headlessViewerCanSend(msg)) {\n\t\t\t\tsend({\n\t\t\t\t\ttype: \"error\",\n\t\t\t\t\tmessage: \"Viewer headless connections cannot send messages\",\n\t\t\t\t\tfatal: false,\n\t\t\t\t\terror_type: \"protocol\",\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tswitch (msg.type) {\n\t\t\t\tcase \"init\": {\n\t\t\t\t\tconst applied = applyInitMessage(agent, msg, approvalService);\n\t\t\t\t\tsendMessage({\n\t\t\t\t\t\ttype: \"status\",\n\t\t\t\t\t\tmessage:\n\t\t\t\t\t\t\tapplied.length > 0\n\t\t\t\t\t\t\t\t? `Initialized: ${applied.join(\", \")}`\n\t\t\t\t\t\t\t\t: \"Init received with no changes\",\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tcase \"hello\": {\n\t\t\t\t\tapplyOutgoingHeadlessMessage(state, msg);\n\t\t\t\t\tconst effectiveRole = state.connection_role ?? \"controller\";\n\t\t\t\t\ttoolRetryService?.setMode(\n\t\t\t\t\t\tmsg.capabilities?.server_requests?.includes(\"tool_retry\")\n\t\t\t\t\t\t\t? \"prompt\"\n\t\t\t\t\t\t\t: \"skip\",\n\t\t\t\t\t);\n\t\t\t\t\tsendMessage(\n\t\t\t\t\t\ttranslator.buildHelloOkMessage({\n\t\t\t\t\t\t\tconnection_id: LOCAL_HEADLESS_CONNECTION_ID,\n\t\t\t\t\t\t\tprotocol_version: HEADLESS_PROTOCOL_VERSION,\n\t\t\t\t\t\t\tclient_protocol_version: msg.protocol_version,\n\t\t\t\t\t\t\tclient_info: msg.client_info,\n\t\t\t\t\t\t\tcapabilities: msg.capabilities,\n\t\t\t\t\t\t\topt_out_notifications: msg.opt_out_notifications,\n\t\t\t\t\t\t\trole: effectiveRole,\n\t\t\t\t\t\t\tcontroller_connection_id:\n\t\t\t\t\t\t\t\teffectiveRole === \"controller\"\n\t\t\t\t\t\t\t\t\t? LOCAL_HEADLESS_CONNECTION_ID\n\t\t\t\t\t\t\t\t\t: null,\n\t\t\t\t\t\t\tlease_expires_at: null,\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t{ force: true },\n\t\t\t\t\t);\n\t\t\t\t\tsendMessage(\n\t\t\t\t\t\ttranslator.buildConnectionInfoMessage({\n\t\t\t\t\t\t\tconnection_id: LOCAL_HEADLESS_CONNECTION_ID,\n\t\t\t\t\t\t\tprotocol_version: msg.protocol_version,\n\t\t\t\t\t\t\tclient_info: msg.client_info,\n\t\t\t\t\t\t\tcapabilities: msg.capabilities,\n\t\t\t\t\t\t\topt_out_notifications: msg.opt_out_notifications,\n\t\t\t\t\t\t\trole: effectiveRole,\n\t\t\t\t\t\t\tconnection_count: 1,\n\t\t\t\t\t\t\tcontroller_connection_id:\n\t\t\t\t\t\t\t\teffectiveRole === \"controller\"\n\t\t\t\t\t\t\t\t\t? LOCAL_HEADLESS_CONNECTION_ID\n\t\t\t\t\t\t\t\t\t: null,\n\t\t\t\t\t\t\tlease_expires_at: null,\n\t\t\t\t\t\t\tconnections: state.connections,\n\t\t\t\t\t\t}),\n\t\t\t\t\t);\n\t\t\t\t\tif (\n\t\t\t\t\t\tmsg.protocol_version &&\n\t\t\t\t\t\tmsg.protocol_version !== HEADLESS_PROTOCOL_VERSION\n\t\t\t\t\t) {\n\t\t\t\t\t\tsendMessage({\n\t\t\t\t\t\t\ttype: \"status\",\n\t\t\t\t\t\t\tmessage: `Client protocol ${msg.protocol_version} attached to server ${HEADLESS_PROTOCOL_VERSION}`,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tcase \"prompt\":\n\t\t\t\t\tapplyOutgoingHeadlessMessage(state, msg);\n\t\t\t\t\tawait runUserPromptWithRecovery({\n\t\t\t\t\t\tagent,\n\t\t\t\t\t\tsessionManager,\n\t\t\t\t\t\tcwd: process.cwd(),\n\t\t\t\t\t\tprompt: msg.content,\n\t\t\t\t\t\tattachmentCount: msg.attachments?.length ?? 0,\n\t\t\t\t\t\tattachmentNames: msg.attachments?.map((path) => basename(path)),\n\t\t\t\t\t\tgetPostKeepMessages: withHeadlessPostKeepMessages(() => state),\n\t\t\t\t\t\texecute: async () => {\n\t\t\t\t\t\t\tif (msg.attachments && msg.attachments.length > 0) {\n\t\t\t\t\t\t\t\tconst loaded = await loadPromptAttachments(\n\t\t\t\t\t\t\t\t\tmsg.attachments,\n\t\t\t\t\t\t\t\t\tsendError,\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tif (loaded.length > 0) {\n\t\t\t\t\t\t\t\t\tsendMessage({\n\t\t\t\t\t\t\t\t\t\ttype: \"status\",\n\t\t\t\t\t\t\t\t\t\tmessage: `Loaded ${loaded.length} attachment(s)`,\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\tawait agent.prompt(msg.content, loaded);\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tawait agent.prompt(msg.content);\n\t\t\t\t\t\t},\n\t\t\t\t\t\tcallbacks: {\n\t\t\t\t\t\t\tonCompacting: () => {\n\t\t\t\t\t\t\t\tsendMessage({\n\t\t\t\t\t\t\t\t\ttype: \"status\",\n\t\t\t\t\t\t\t\t\tmessage:\n\t\t\t\t\t\t\t\t\t\t\"Prompt exceeded the context window. Compacting history and continuing automatically...\",\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tonCompacted: (result) => {\n\t\t\t\t\t\t\t\tsendMessage(\n\t\t\t\t\t\t\t\t\tbuildHeadlessCompactionMessage(\n\t\t\t\t\t\t\t\t\t\tbuildCompactionEvent(result, { auto: true }),\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tonMaxOutputContinue: (attempt, maxContinuations) => {\n\t\t\t\t\t\t\t\tsendMessage({\n\t\t\t\t\t\t\t\t\ttype: \"status\",\n\t\t\t\t\t\t\t\t\tmessage:\n\t\t\t\t\t\t\t\t\t\tattempt === 1\n\t\t\t\t\t\t\t\t\t\t\t? \"Response hit the output limit. Continuing automatically...\"\n\t\t\t\t\t\t\t\t\t\t\t: `Response still hit the output limit. Continuing automatically (${attempt}/${maxContinuations})...`,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tonMaxOutputExhausted: (maxContinuations) => {\n\t\t\t\t\t\t\t\tsendMessage({\n\t\t\t\t\t\t\t\t\ttype: \"status\",\n\t\t\t\t\t\t\t\t\tmessage: `Stopped after ${maxContinuations} automatic continuations because the response kept hitting the output limit.`,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tonMaxOutputStoppedEarly: (attempt, maxContinuations) => {\n\t\t\t\t\t\t\t\tsendMessage({\n\t\t\t\t\t\t\t\t\ttype: \"status\",\n\t\t\t\t\t\t\t\t\tmessage: `Stopped automatic continuation early after ${attempt}/${maxContinuations} retries because recent responses made minimal progress.`,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"interrupt\":\n\t\t\t\tcase \"cancel\":\n\t\t\t\t\tcancelPendingServerRequests(\n\t\t\t\t\t\tmsg.type === \"interrupt\"\n\t\t\t\t\t\t\t? \"Interrupted before request completed\"\n\t\t\t\t\t\t\t: \"Cancelled before request completed\",\n\t\t\t\t\t);\n\t\t\t\t\tapplyOutgoingHeadlessMessage(state, msg);\n\t\t\t\t\tawait utilityCommands.dispose(\n\t\t\t\t\t\tmsg.type === \"interrupt\"\n\t\t\t\t\t\t\t? \"Interrupted while utility command was still running\"\n\t\t\t\t\t\t\t: \"Cancelled while utility command was still running\",\n\t\t\t\t\t);\n\t\t\t\t\tfileWatches.dispose(\n\t\t\t\t\t\tmsg.type === \"interrupt\"\n\t\t\t\t\t\t\t? \"Interrupted while file watch was still running\"\n\t\t\t\t\t\t\t: \"Cancelled while file watch was still running\",\n\t\t\t\t\t);\n\t\t\t\t\tagent.abort();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"tool_response\":\n\t\t\t\t\tif (approvalService?.requiresUserInteraction()) {\n\t\t\t\t\t\tconst reason = msg.approved\n\t\t\t\t\t\t\t? (msg.result?.output ?? \"Approved\")\n\t\t\t\t\t\t\t: (msg.result?.error ?? \"Denied by user\");\n\t\t\t\t\t\tconst resolved = serverRequestManager.resolveApproval(msg.call_id, {\n\t\t\t\t\t\t\tapproved: msg.approved,\n\t\t\t\t\t\t\treason,\n\t\t\t\t\t\t\tresolvedBy: \"user\",\n\t\t\t\t\t\t});\n\t\t\t\t\t\tif (!resolved) {\n\t\t\t\t\t\t\tsendError(\n\t\t\t\t\t\t\t\t`No pending approval found for call_id: ${msg.call_id}`,\n\t\t\t\t\t\t\t\tfalse,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsendMessage({\n\t\t\t\t\t\t\ttype: \"status\",\n\t\t\t\t\t\t\tmessage: \"Tool response ignored (auto-approval mode)\",\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tapplyOutgoingHeadlessMessage(state, msg);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"client_tool_result\": {\n\t\t\t\t\tconst resolved = clientToolService.resolve(\n\t\t\t\t\t\tmsg.call_id,\n\t\t\t\t\t\tmsg.content,\n\t\t\t\t\t\tmsg.is_error,\n\t\t\t\t\t);\n\t\t\t\t\tif (!resolved) {\n\t\t\t\t\t\tsendError(\n\t\t\t\t\t\t\t`No pending client tool request found for call_id: ${msg.call_id}`,\n\t\t\t\t\t\t\tfalse,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tapplyOutgoingHeadlessMessage(state, msg);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tcase \"server_request_response\":\n\t\t\t\t\tif (msg.request_type === \"approval\") {\n\t\t\t\t\t\tif (approvalService?.requiresUserInteraction()) {\n\t\t\t\t\t\t\tconst reason = msg.approved\n\t\t\t\t\t\t\t\t? (msg.result?.output ?? \"Approved\")\n\t\t\t\t\t\t\t\t: (msg.result?.error ?? \"Denied by user\");\n\t\t\t\t\t\t\tconst resolved = serverRequestManager.resolveApproval(\n\t\t\t\t\t\t\t\tmsg.request_id,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tapproved: msg.approved ?? false,\n\t\t\t\t\t\t\t\t\treason,\n\t\t\t\t\t\t\t\t\tresolvedBy: \"user\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tif (!resolved) {\n\t\t\t\t\t\t\t\tsendError(\n\t\t\t\t\t\t\t\t\t`No pending approval found for request_id: ${msg.request_id}`,\n\t\t\t\t\t\t\t\t\tfalse,\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tsendMessage({\n\t\t\t\t\t\t\t\ttype: \"status\",\n\t\t\t\t\t\t\t\tmessage: \"Tool response ignored (auto-approval mode)\",\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (msg.request_type === \"tool_retry\") {\n\t\t\t\t\t\tconst resolved = serverRequestManager.resolveToolRetry(\n\t\t\t\t\t\t\tmsg.request_id,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\taction: msg.decision_action ?? \"abort\",\n\t\t\t\t\t\t\t\treason: msg.reason,\n\t\t\t\t\t\t\t\tresolvedBy: \"user\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (!resolved) {\n\t\t\t\t\t\t\tsendError(\n\t\t\t\t\t\t\t\t`No pending tool retry request found for request_id: ${msg.request_id}`,\n\t\t\t\t\t\t\t\tfalse,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst resolved = clientToolService.resolve(\n\t\t\t\t\t\t\tmsg.request_id,\n\t\t\t\t\t\t\tmsg.content ?? [],\n\t\t\t\t\t\t\tmsg.is_error ?? false,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (!resolved) {\n\t\t\t\t\t\t\tsendError(\n\t\t\t\t\t\t\t\t`No pending client tool request found for request_id: ${msg.request_id}`,\n\t\t\t\t\t\t\t\tfalse,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tapplyOutgoingHeadlessMessage(state, msg);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"utility_command_start\":\n\t\t\t\t\tif (\n\t\t\t\t\t\t!state.capabilities?.utility_operations?.includes(\"command_exec\")\n\t\t\t\t\t) {\n\t\t\t\t\t\tsendError(\n\t\t\t\t\t\t\t\"utility_command_start requires command_exec capability\",\n\t\t\t\t\t\t\tfalse,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tawait utilityCommands.start({\n\t\t\t\t\t\tcommand_id: msg.command_id,\n\t\t\t\t\t\tcommand: msg.command,\n\t\t\t\t\t\tcwd: msg.cwd,\n\t\t\t\t\t\tenv: msg.env,\n\t\t\t\t\t\tshell_mode: msg.shell_mode,\n\t\t\t\t\t\tterminal_mode: msg.terminal_mode,\n\t\t\t\t\t\tallow_stdin: msg.allow_stdin,\n\t\t\t\t\t\tcolumns: msg.columns,\n\t\t\t\t\t\trows: msg.rows,\n\t\t\t\t\t\towner_connection_id: LOCAL_HEADLESS_CONNECTION_ID,\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"utility_command_terminate\":\n\t\t\t\t\tawait utilityCommands.terminate(msg.command_id, msg.force);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"utility_command_stdin\":\n\t\t\t\t\tif (\n\t\t\t\t\t\t!state.capabilities?.utility_operations?.includes(\"command_exec\")\n\t\t\t\t\t) {\n\t\t\t\t\t\tsendError(\n\t\t\t\t\t\t\t\"utility_command_stdin requires command_exec capability\",\n\t\t\t\t\t\t\tfalse,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tawait utilityCommands.writeStdin(\n\t\t\t\t\t\tmsg.command_id,\n\t\t\t\t\t\tmsg.content,\n\t\t\t\t\t\tmsg.eof,\n\t\t\t\t\t);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"utility_command_resize\":\n\t\t\t\t\tif (\n\t\t\t\t\t\t!state.capabilities?.utility_operations?.includes(\"command_exec\")\n\t\t\t\t\t) {\n\t\t\t\t\t\tsendError(\n\t\t\t\t\t\t\t\"utility_command_resize requires command_exec capability\",\n\t\t\t\t\t\t\tfalse,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tawait utilityCommands.resize(msg.command_id, msg.columns, msg.rows);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"utility_file_search\":\n\t\t\t\t\tif (\n\t\t\t\t\t\t!state.capabilities?.utility_operations?.includes(\"file_search\")\n\t\t\t\t\t) {\n\t\t\t\t\t\tsendError(\n\t\t\t\t\t\t\t\"utility_file_search requires file_search capability\",\n\t\t\t\t\t\t\tfalse,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\t{\n\t\t\t\t\t\tconst result = searchWorkspaceFiles({\n\t\t\t\t\t\t\tquery: msg.query,\n\t\t\t\t\t\t\tcwd: msg.cwd,\n\t\t\t\t\t\t\tlimit: msg.limit,\n\t\t\t\t\t\t});\n\t\t\t\t\t\tsendMessage({\n\t\t\t\t\t\t\ttype: \"utility_file_search_results\",\n\t\t\t\t\t\t\tsearch_id: msg.search_id,\n\t\t\t\t\t\t\tquery: result.query,\n\t\t\t\t\t\t\tcwd: result.cwd,\n\t\t\t\t\t\t\tresults: result.results,\n\t\t\t\t\t\t\ttruncated: result.truncated,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"utility_file_read\":\n\t\t\t\t\tif (!state.capabilities?.utility_operations?.includes(\"file_read\")) {\n\t\t\t\t\t\tsendError(\"utility_file_read requires file_read capability\", false);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\t{\n\t\t\t\t\t\tlet result: Awaited<ReturnType<typeof readWorkspaceFile>>;\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresult = await readWorkspaceFile({\n\t\t\t\t\t\t\t\tpath: msg.path,\n\t\t\t\t\t\t\t\tcwd: msg.cwd,\n\t\t\t\t\t\t\t\toffset: msg.offset,\n\t\t\t\t\t\t\t\tlimit: msg.limit,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\tconst message =\n\t\t\t\t\t\t\t\terror instanceof Error ? error.message : String(error);\n\t\t\t\t\t\t\tsendError(message, false, { request_id: msg.read_id });\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsendMessage({\n\t\t\t\t\t\t\ttype: \"utility_file_read_result\",\n\t\t\t\t\t\t\tread_id: msg.read_id,\n\t\t\t\t\t\t\tpath: result.path,\n\t\t\t\t\t\t\trelative_path: result.relative_path,\n\t\t\t\t\t\t\tcwd: result.cwd,\n\t\t\t\t\t\t\tcontent: result.content,\n\t\t\t\t\t\t\tstart_line: result.start_line,\n\t\t\t\t\t\t\tend_line: result.end_line,\n\t\t\t\t\t\t\ttotal_lines: result.total_lines,\n\t\t\t\t\t\t\ttruncated: result.truncated,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"utility_file_watch_start\":\n\t\t\t\t\tif (!state.capabilities?.utility_operations?.includes(\"file_watch\")) {\n\t\t\t\t\t\tsendError(\n\t\t\t\t\t\t\t\"utility_file_watch_start requires file_watch capability\",\n\t\t\t\t\t\t\tfalse,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tawait fileWatches.start({\n\t\t\t\t\t\twatch_id: msg.watch_id,\n\t\t\t\t\t\troot_dir: msg.root_dir,\n\t\t\t\t\t\tinclude_patterns: msg.include_patterns,\n\t\t\t\t\t\texclude_patterns: msg.exclude_patterns,\n\t\t\t\t\t\tdebounce_ms: msg.debounce_ms,\n\t\t\t\t\t\towner_connection_id: LOCAL_HEADLESS_CONNECTION_ID,\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"utility_file_watch_stop\":\n\t\t\t\t\tfileWatches.stop(msg.watch_id, \"Stopped by controller\");\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"shutdown\":\n\t\t\t\t\tcancelPendingServerRequests(\"Shutdown before request completed\");\n\t\t\t\t\tapplyOutgoingHeadlessMessage(state, msg);\n\t\t\t\t\tawait utilityCommands.dispose(\n\t\t\t\t\t\t\"Headless runtime shutdown while utility command was still running\",\n\t\t\t\t\t);\n\t\t\t\t\tfileWatches.dispose(\n\t\t\t\t\t\t\"Headless runtime shutdown while file watch was still running\",\n\t\t\t\t\t);\n\t\t\t\t\tprocess.exit(0);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\tsendError(message, false);\n\t\t}\n\t});\n\n\treturn new Promise<void>((resolve) => {\n\t\trl.on(\"close\", () => {\n\t\t\tunsubscribeServerRequests();\n\t\t\tresolve();\n\t\t});\n\t});\n}\n"]}
@@ -18,5 +18,7 @@
18
18
  * }
19
19
  * ```
20
20
  */
21
- export declare function printHelp(version: string): void;
21
+ export declare function printHelp(version: string, options?: {
22
+ includeHidden?: boolean;
23
+ }): void;
22
24
  //# sourceMappingURL=help.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../src/cli/help.ts"],"names":[],"mappings":"AAyBA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,QAyNxC"}
1
+ {"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../src/cli/help.ts"],"names":[],"mappings":"AAyFA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,SAAS,CACxB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;IAAE,aAAa,CAAC,EAAE,OAAO,CAAA;CAAE,QAwRrC"}
package/dist/cli/help.js CHANGED
@@ -22,6 +22,63 @@
22
22
  * @module cli/help
23
23
  */
24
24
  import { badge, heading, muted, sectionHeading } from "../style/theme.js";
25
+ const CLI_OPTIONS = [
26
+ { text: "--provider <name> Provider name (default: anthropic)" },
27
+ { text: "-m, --model <id> Model ID (default: claude-sonnet-4-5)" },
28
+ { text: "--task-budget <tokens> API-side Anthropic task budget in tokens" },
29
+ {
30
+ text: "--models <patterns> Comma-separated patterns for Ctrl+P model cycling",
31
+ },
32
+ {
33
+ text: "--tools <names> Comma-separated tool names to enable (e.g., read,search,list,find)",
34
+ },
35
+ { text: "--api-key <key> API key (defaults to env vars)" },
36
+ {
37
+ text: "--system-prompt <text> System prompt (default: coding assistant prompt)",
38
+ },
39
+ {
40
+ text: "--append-system-prompt <text> Append instructions to the system prompt",
41
+ },
42
+ { text: "--mode <mode> Output mode: text (default), json, or rpc" },
43
+ {
44
+ text: "--auth <mode> Credential mode: auto (default), api-key, claude",
45
+ },
46
+ {
47
+ text: "--approval-mode <mode> Action approvals: prompt (default in TUI), auto, fail",
48
+ },
49
+ {
50
+ text: "--sandbox <mode> Sandbox mode: read-only, workspace-write, danger-full-access, native, docker, local, none",
51
+ },
52
+ {
53
+ text: "--port <n> Port for `maestro web` (defaults to PORT env or 8080)",
54
+ },
55
+ { text: "--continue, -c Continue previous session" },
56
+ { text: "--resume, -r Select a session to resume" },
57
+ { text: "--session <path> Use specific session file" },
58
+ { text: "--no-session Don't save session (ephemeral)" },
59
+ { text: "--safe-mode Enable extra safety restrictions" },
60
+ {
61
+ text: "--replay <path|uri> Open a scripted deterministic replay session",
62
+ },
63
+ {
64
+ text: "--record-scenario <path> Record assistant turns as a replay fixture",
65
+ },
66
+ { text: "--help, -h Show this help" },
67
+ {
68
+ text: "--help-hidden Show hidden support and staged-rollout flags",
69
+ hidden: true,
70
+ },
71
+ {
72
+ text: "--list-modes-all List visible and hidden agent modes",
73
+ hidden: true,
74
+ },
75
+ ];
76
+ function renderHelpOptions(options, includeHidden) {
77
+ return options
78
+ .filter((option) => includeHidden || option.hidden !== true)
79
+ .map((option) => ` ${muted(option.text)}`)
80
+ .join("\n");
81
+ }
25
82
  /**
26
83
  * Prints the complete CLI help message to stdout.
27
84
  *
@@ -42,32 +99,14 @@ import { badge, heading, muted, sectionHeading } from "../style/theme.js";
42
99
  * }
43
100
  * ```
44
101
  */
45
- export function printHelp(version) {
102
+ export function printHelp(version, options) {
103
+ const includeHidden = options?.includeHidden === true;
46
104
  const header = `${heading("Maestro")} ${muted(`v${version} by EvalOps — AI coding assistant with read, list, search, diff, bash, edit, write, todo tools`)}`;
47
105
  const usage = `${sectionHeading("Usage")}${muted("maestro [options] [messages...]")}`;
48
- const options = `${sectionHeading("Options")}${[
49
- "--provider <name> Provider name (default: anthropic)",
50
- "-m, --model <id> Model ID (default: claude-sonnet-4-5)",
51
- "--task-budget <tokens> API-side Anthropic task budget in tokens",
52
- "--models <patterns> Comma-separated patterns for Ctrl+P model cycling",
53
- "--tools <names> Comma-separated tool names to enable (e.g., read,search,list,find)",
54
- "--api-key <key> API key (defaults to env vars)",
55
- "--system-prompt <text> System prompt (default: coding assistant prompt)",
56
- "--append-system-prompt <text> Append instructions to the system prompt",
57
- "--mode <mode> Output mode: text (default), json, or rpc",
58
- "--auth <mode> Credential mode: auto (default), api-key, claude",
59
- "--approval-mode <mode> Action approvals: prompt (default in TUI), auto, fail",
60
- "--sandbox <mode> Sandbox mode: docker, local, none (see docs/SAFETY.md)",
61
- "--port <n> Port for `maestro web` (defaults to PORT env or 8080)",
62
- "--continue, -c Continue previous session",
63
- "--resume, -r Select a session to resume",
64
- "--session <path> Use specific session file",
65
- "--no-session Don't save session (ephemeral)",
66
- "--safe-mode Enable extra safety restrictions",
67
- "--help, -h Show this help",
68
- ]
69
- .map((line) => ` ${muted(line)}`)
70
- .join("\n")}`;
106
+ const renderedOptions = `${sectionHeading("Options")}${renderHelpOptions(CLI_OPTIONS, includeHidden)}`;
107
+ const hiddenSupportSection = includeHidden
108
+ ? `${sectionHeading("Hidden Support Flags")}${muted(" Hidden flags are external support surfaces. Keep them in docs/CONVENTIONS/staged-rollout-registry.json with an owner, telemetry event, and promotion/removal target.")}`
109
+ : null;
71
110
  const examples = `${sectionHeading("Examples")}${muted(` # Interactive mode (no messages = interactive TUI)
72
111
  maestro
73
112
 
@@ -85,6 +124,7 @@ export function printHelp(version) {
85
124
 
86
125
  # Use Codex subscription models after \`maestro codex login\`
87
126
  maestro --provider openai-codex --model gpt-5.5 "Plan this migration"
127
+ maestro codex doctor
88
128
 
89
129
  # Bootstrap EvalOps login, API key, and agent registration in one flow
90
130
  maestro init
@@ -95,6 +135,18 @@ export function printHelp(version) {
95
135
  # Confirm managed mode sinks and EvalOps org identity
96
136
  maestro status
97
137
 
138
+ # Inspect mode-level subagent model dispatch before running a swarm
139
+ maestro modes describe smart
140
+
141
+ # Explain which instruction files and MCP context sources are visible
142
+ maestro context explain
143
+
144
+ # Compare context sources between two workspaces
145
+ maestro context diff ./before ./after
146
+
147
+ # Include live MCP resources and prompts in context diagnostics
148
+ maestro context explain --live-mcp
149
+
98
150
  # Export a portable session log
99
151
  maestro export <session-id> ./session.jsonl --format jsonl
100
152
 
@@ -104,6 +156,10 @@ export function printHelp(version) {
104
156
  # Import a portable session log into this workspace
105
157
  maestro import ./session.json
106
158
 
159
+ # Scaffold and validate progressive skill packages
160
+ maestro skill new processing-incidents --description "Process incident reports. Use when the user asks for incident triage."
161
+ maestro skill lint .maestro/skills
162
+
107
163
  # Start a hosted EvalOps runner session and wait for attach readiness
108
164
  maestro remote start --workspace ws_123 --repo evalops/foo --branch main --ttl 90m --wait --verify
109
165
 
@@ -114,7 +170,22 @@ export function printHelp(version) {
114
170
  maestro stats
115
171
 
116
172
  # Show usage analytics for one session
117
- maestro stats --session <session-id>`)}`;
173
+ maestro stats --session <session-id>
174
+
175
+ # Reconstruct the timeline, trajectory, and evidence coverage for a saved run
176
+ maestro run inspect <session-id> --json
177
+ maestro run promote <session-id>
178
+
179
+ # Validate and run a deterministic scenario fixture
180
+ maestro scenario validate ./test/fixtures/agent-trajectory-scenarios/local-diagnostic-success.json
181
+ maestro scenario run ./test/fixtures/agent-trajectory-scenarios/local-diagnostic-success.json --junit ./tmp/scenario.xml
182
+
183
+ # Open a real agent session backed by a scripted model fixture
184
+ maestro --replay ./test/fixtures/scripted-replay/basic-tool-call.json
185
+ maestro --replay gs://evalops-prod-maestro-scenario-fixtures/maestro/scenarios/example.json
186
+
187
+ # Record a live run into a replayable scripted scenario
188
+ maestro --record-scenario ./tmp/recorded-scenario.json "inspect package.json"`)}`;
118
189
  const env = `${sectionHeading("Environment Variables:")}${muted(` GEMINI_API_KEY - Google Gemini API key
119
190
  OPENAI_API_KEY - OpenAI API key
120
191
  OPENAI_CODEX_TOKEN - OpenAI Codex ChatGPT access token
@@ -123,7 +194,7 @@ export function printHelp(version) {
123
194
  CLAUDE_CODE_TOKEN - Claude Code access token for --auth claude
124
195
  ANTHROPIC_OAUTH_TOKEN - Alternate env for Claude Code bearer tokens
125
196
  MAESTRO_AGENT_DIR - Session storage directory (default: ~/.maestro/agent)
126
- MAESTRO_SANDBOX_MODE - Sandbox mode: docker, local, none (default: none)
197
+ MAESTRO_SANDBOX_MODE - Sandbox mode: read-only, workspace-write, danger-full-access
127
198
  MAESTRO_CHANGELOG - Set to off/false/hide/hidden/skip/0 to hide startup changelog banner
128
199
  MAESTRO_TUI_MINIMAL - Set to 1/true to disable animations and reduce TUI effects (SSH-friendly)
129
200
  MAESTRO_TUI_TOOL_MAX_CHARS - Max chars shown per tool output panel (0 = unlimited)
@@ -145,7 +216,7 @@ export function printHelp(version) {
145
216
  --output-schema <file|json> Validate final assistant JSON against a schema
146
217
  --output-last-message <path> Write the final assistant message to disk
147
218
  --full-auto | --read-only Force approval policy (auto or fail)
148
- --sandbox <mode> Run in sandbox: docker, local, none
219
+ --sandbox <mode> Run in sandbox: read-only, workspace-write, danger-full-access, native, docker, local, none
149
220
  --resume <sessionId> Resume a prior exec session by id
150
221
  --last Resume the most recent exec session`)}`;
151
222
  const webSection = `${sectionHeading("maestro web")}${muted(` # Start the bundled web UI + API server
@@ -154,26 +225,54 @@ export function printHelp(version) {
154
225
  # Use a custom port
155
226
  maestro web --port 3000`)}`;
156
227
  const portabilitySection = `${sectionHeading("Session Portability")}${muted(` maestro export <session-id> [output-path] --format json|jsonl [--redact-secrets]
157
- maestro import <file.json|file.jsonl>
228
+ maestro import <file.json|file.jsonl>
158
229
 
159
230
  Notes:
160
231
  - json preserves the full session in a portable wrapper object
161
232
  - jsonl preserves the append-only session log verbatim unless redaction is requested
162
233
  - --redact-secrets scrubs detected credentials from exported payloads
163
234
  - import restores the session into the current workspace session directory`)}`;
235
+ const modesSection = `${sectionHeading("maestro modes")}${muted(` maestro modes list
236
+ maestro modes describe <mode> [--provider <provider>] [--json]
237
+
238
+ Prints the mode primary/fallback model policy and resolved subagent dispatch
239
+ table, including cross-provider overrides such as smart-mode coder lanes
240
+ routed to openai-codex/gpt-5.5.`)}`;
164
241
  const memorySection = `${sectionHeading("maestro memory")}${muted(` maestro memory [status] Show shared memory service status
165
242
  maestro memory session <id> Show per-session metrics
166
243
  maestro memory audit <id> [n] Show recent sync audit entries
167
244
  maestro memory export <id> Export metrics log as JSONL
168
245
  maestro memory watch [id] [ms] Poll status/metrics continuously`)}`;
246
+ const skillSection = `${sectionHeading("maestro skill")}${muted(` maestro skill list List available progressive skills
247
+ maestro skill inspect <name> Print one skill package manifest
248
+ maestro skill install <source> Validate and install an OSS skill package
249
+ maestro skill publish-check <src> Validate an OSS skill package for publishing
250
+ maestro skill new <name> Scaffold SKILL.md, reference/, scripts/, toolbox/, and mcp.json.example
251
+ maestro skill lint [path...] Validate frontmatter, budget, mcp.json includeTools, and toolbox shape`)}`;
169
252
  const remoteSection = `${sectionHeading("maestro remote")}${muted(` maestro remote start --workspace <id> --repo <repo> --branch <branch> [--ttl 90m] [--wait] [--verify]
170
253
  maestro remote list --workspace <id> [--state running]
171
254
  maestro remote attach <session-id> [--verify] [--print-env]
172
255
  maestro remote extend <session-id> --ttl 2h
173
256
  maestro remote stop <session-id> [--reason <text>]`)}`;
257
+ const operatingPlaneSection = `${sectionHeading("maestro operating-plane")}${muted(` maestro operating-plane status --thread-id <slack-thread> [--evidence-id <id>] [--auth-subject <subject>]
258
+ maestro operating-plane status --trace-id <id> --json
259
+
260
+ Fetches the Platform operating-plane ledger and prints a content-free value
261
+ proof report with identity, model/tool/approval/trace/evidence/cost status,
262
+ allowed evidence ids/revisions, blockers, next actions, and withheld reasons.`)}`;
263
+ const runSection = `${sectionHeading("maestro run")}${muted(` maestro run inspect <session-id> [--json]
264
+ maestro run ledger <session-id>
265
+ maestro run replay <session-id>
266
+ maestro run promote <session-id>
267
+
268
+ Reconstructs a saved session into a timeline plus canonical agent trajectory
269
+ with prompt, tool, file-change, artifact, policy, diagnostic, compaction,
270
+ pending-wait, and MCP-context coverage. The ledger/replay/promote commands
271
+ expose the local AgentRuntime projection and dry-run Platform promotion plan.`)}`;
174
272
  const initSection = `${sectionHeading("maestro init")}${muted(` maestro init Login, create or reuse an API key, and register this agent
175
273
  maestro init --rotate-key Replace the stored agent MCP API key
176
274
  maestro init --mcp-url <url> Override the EvalOps agent MCP endpoint
275
+ maestro init --capability code:write Declare an agent-registry capability
177
276
  maestro init --json Emit machine-readable bootstrap output`)}`;
178
277
  const hostedRunnerSection = `${sectionHeading("maestro hosted-runner")}${muted(` maestro hosted-runner --runner-session-id <id> --workspace-root <path> [--listen 0.0.0.0:8080]
179
278
 
@@ -205,21 +304,28 @@ export function printHelp(version) {
205
304
  console.log([
206
305
  header,
207
306
  usage,
208
- options,
307
+ renderedOptions,
308
+ hiddenSupportSection,
209
309
  examples,
210
310
  env,
211
311
  execSection,
212
312
  webSection,
213
313
  portabilitySection,
314
+ modesSection,
214
315
  memorySection,
316
+ skillSection,
215
317
  initSection,
318
+ runSection,
216
319
  remoteSection,
320
+ operatingPlaneSection,
217
321
  hostedRunnerSection,
218
322
  sessionsSection,
219
323
  sessionsDiscovery,
220
324
  `${sectionHeading("Tips")}${badge("Need models?", "maestro models list", "info")}`,
221
325
  frameworkSection,
222
326
  tools,
223
- ].join("\n\n"));
327
+ ]
328
+ .filter((section) => section !== null)
329
+ .join("\n\n"));
224
330
  }
225
331
  //# sourceMappingURL=help.js.map