@evalops/maestro 0.10.8 → 0.10.10

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 (1001) hide show
  1. package/README.md +3 -1
  2. package/dist/agent/action-approval.d.ts +6 -0
  3. package/dist/agent/action-approval.d.ts.map +1 -1
  4. package/dist/agent/action-approval.js.map +1 -1
  5. package/dist/agent/agent.d.ts +13 -1
  6. package/dist/agent/agent.d.ts.map +1 -1
  7. package/dist/agent/agent.js +368 -1
  8. package/dist/agent/agent.js.map +1 -1
  9. package/dist/agent/auto-compaction.d.ts +4 -4
  10. package/dist/agent/auto-compaction.d.ts.map +1 -1
  11. package/dist/agent/auto-compaction.js.map +1 -1
  12. package/dist/agent/compaction-cleanup.d.ts +2 -0
  13. package/dist/agent/compaction-cleanup.d.ts.map +1 -1
  14. package/dist/agent/compaction-cleanup.js +17 -2
  15. package/dist/agent/compaction-cleanup.js.map +1 -1
  16. package/dist/agent/compaction.d.ts +3 -1
  17. package/dist/agent/compaction.d.ts.map +1 -1
  18. package/dist/agent/compaction.js +10 -2
  19. package/dist/agent/compaction.js.map +1 -1
  20. package/dist/agent/context-manager.d.ts +4 -0
  21. package/dist/agent/context-manager.d.ts.map +1 -1
  22. package/dist/agent/context-manager.js +8 -0
  23. package/dist/agent/context-manager.js.map +1 -1
  24. package/dist/agent/context-providers.d.ts +2 -0
  25. package/dist/agent/context-providers.d.ts.map +1 -1
  26. package/dist/agent/context-providers.js +3 -2
  27. package/dist/agent/context-providers.js.map +1 -1
  28. package/dist/agent/providers/google-gemini-cli.js +17 -5
  29. package/dist/agent/providers/google.js +174 -144
  30. package/dist/agent/providers/openai-codex-responses.d.ts +4 -0
  31. package/dist/agent/providers/openai-codex-responses.d.ts.map +1 -0
  32. package/dist/agent/providers/openai-codex-responses.js +637 -0
  33. package/dist/agent/providers/openai-codex-responses.js.map +1 -0
  34. package/dist/agent/providers/openai-codex-session.d.ts +18 -0
  35. package/dist/agent/providers/openai-codex-session.d.ts.map +1 -0
  36. package/dist/agent/providers/openai-codex-session.js +53 -0
  37. package/dist/agent/providers/openai-codex-session.js.map +1 -0
  38. package/dist/agent/providers/openai-responses-sdk.d.ts.map +1 -1
  39. package/dist/agent/providers/openai-responses-sdk.js +16 -6
  40. package/dist/agent/providers/openai-responses-sdk.js.map +1 -1
  41. package/dist/agent/providers/openai-shared.d.ts +12 -5
  42. package/dist/agent/providers/openai-shared.d.ts.map +1 -1
  43. package/dist/agent/providers/openai-shared.js +291 -2
  44. package/dist/agent/providers/openai-shared.js.map +1 -1
  45. package/dist/agent/providers/openai.d.ts +1 -1
  46. package/dist/agent/providers/openai.d.ts.map +1 -1
  47. package/dist/agent/providers/openai.js +48 -20
  48. package/dist/agent/providers/openai.js.map +1 -1
  49. package/dist/agent/providers/vertex.js +7 -0
  50. package/dist/agent/tracing.d.ts +16 -5
  51. package/dist/agent/tracing.d.ts.map +1 -1
  52. package/dist/agent/tracing.js +44 -2
  53. package/dist/agent/tracing.js.map +1 -1
  54. package/dist/agent/transport/create-provider-stream.d.ts.map +1 -1
  55. package/dist/agent/transport/create-provider-stream.js +9 -0
  56. package/dist/agent/transport/create-provider-stream.js.map +1 -1
  57. package/dist/agent/transport/tool-execution-bridge.d.ts +86 -0
  58. package/dist/agent/transport/tool-execution-bridge.d.ts.map +1 -0
  59. package/dist/agent/transport/tool-execution-bridge.js +665 -0
  60. package/dist/agent/transport/tool-execution-bridge.js.map +1 -0
  61. package/dist/agent/transport/tool-execution.d.ts +3 -0
  62. package/dist/agent/transport/tool-execution.d.ts.map +1 -1
  63. package/dist/agent/transport/tool-execution.js +16 -1
  64. package/dist/agent/transport/tool-execution.js.map +1 -1
  65. package/dist/agent/transport/tool-safety-pipeline.d.ts +7 -1
  66. package/dist/agent/transport/tool-safety-pipeline.d.ts.map +1 -1
  67. package/dist/agent/transport/tool-safety-pipeline.js +207 -40
  68. package/dist/agent/transport/tool-safety-pipeline.js.map +1 -1
  69. package/dist/agent/transport/tool-update-queue.d.ts +2 -0
  70. package/dist/agent/transport/tool-update-queue.d.ts.map +1 -1
  71. package/dist/agent/transport/tool-update-queue.js.map +1 -1
  72. package/dist/agent/transport.d.ts +3 -0
  73. package/dist/agent/transport.d.ts.map +1 -1
  74. package/dist/agent/transport.js +96 -16
  75. package/dist/agent/transport.js.map +1 -1
  76. package/dist/agent/types.d.ts +50 -2
  77. package/dist/agent/types.d.ts.map +1 -1
  78. package/dist/agent/types.js.map +1 -1
  79. package/dist/approvals/platform-action-approval.d.ts +32 -0
  80. package/dist/approvals/platform-action-approval.d.ts.map +1 -0
  81. package/dist/approvals/platform-action-approval.js +210 -0
  82. package/dist/approvals/platform-action-approval.js.map +1 -0
  83. package/dist/approvals/service-client.d.ts +56 -0
  84. package/dist/approvals/service-client.d.ts.map +1 -0
  85. package/dist/approvals/service-client.js +316 -0
  86. package/dist/approvals/service-client.js.map +1 -0
  87. package/dist/audit/logger.d.ts +4 -4
  88. package/dist/bootstrap/auth-setup.d.ts +2 -2
  89. package/dist/bootstrap/auth-setup.d.ts.map +1 -1
  90. package/dist/bootstrap/auth-setup.js +4 -7
  91. package/dist/bootstrap/auth-setup.js.map +1 -1
  92. package/dist/cli/args.d.ts +2 -0
  93. package/dist/cli/args.d.ts.map +1 -1
  94. package/dist/cli/args.js +28 -0
  95. package/dist/cli/args.js.map +1 -1
  96. package/dist/cli/commands/codex.d.ts +2 -0
  97. package/dist/cli/commands/codex.d.ts.map +1 -0
  98. package/dist/cli/commands/codex.js +65 -0
  99. package/dist/cli/commands/codex.js.map +1 -0
  100. package/dist/cli/commands/config.js +1 -1
  101. package/dist/cli/commands/config.js.map +1 -1
  102. package/dist/cli/commands/evalops.d.ts +2 -0
  103. package/dist/cli/commands/evalops.d.ts.map +1 -0
  104. package/dist/cli/commands/evalops.js +69 -0
  105. package/dist/cli/commands/evalops.js.map +1 -0
  106. package/dist/cli/commands/hosted-runner.d.ts +23 -0
  107. package/dist/cli/commands/hosted-runner.d.ts.map +1 -0
  108. package/dist/cli/commands/hosted-runner.js +241 -0
  109. package/dist/cli/commands/hosted-runner.js.map +1 -0
  110. package/dist/cli/commands/memory.d.ts.map +1 -1
  111. package/dist/cli/commands/memory.js +23 -30
  112. package/dist/cli/commands/memory.js.map +1 -1
  113. package/dist/cli/commands/remote.d.ts +3 -0
  114. package/dist/cli/commands/remote.d.ts.map +1 -0
  115. package/dist/cli/commands/remote.js +631 -0
  116. package/dist/cli/commands/remote.js.map +1 -0
  117. package/dist/cli/commands/stats.d.ts +7 -0
  118. package/dist/cli/commands/stats.d.ts.map +1 -0
  119. package/dist/cli/commands/stats.js +167 -0
  120. package/dist/cli/commands/stats.js.map +1 -0
  121. package/dist/cli/headless-protocol.d.ts +16 -1
  122. package/dist/cli/headless-protocol.d.ts.map +1 -1
  123. package/dist/cli/headless-protocol.js +60 -4
  124. package/dist/cli/headless-protocol.js.map +1 -1
  125. package/dist/cli/headless.d.ts.map +1 -1
  126. package/dist/cli/headless.js +1 -0
  127. package/dist/cli/headless.js.map +1 -1
  128. package/dist/cli/help.d.ts.map +1 -1
  129. package/dist/cli/help.js +36 -1
  130. package/dist/cli/help.js.map +1 -1
  131. package/dist/cli/jsonl-writer.d.ts.map +1 -1
  132. package/dist/cli/jsonl-writer.js +19 -6
  133. package/dist/cli/jsonl-writer.js.map +1 -1
  134. package/dist/cli-tui/client-tools/client-tool-controller.d.ts.map +1 -1
  135. package/dist/cli-tui/client-tools/client-tool-controller.js +17 -1
  136. package/dist/cli-tui/client-tools/client-tool-controller.js.map +1 -1
  137. package/dist/cli-tui/commands/access-command.js +1 -1
  138. package/dist/cli-tui/commands/access-command.js.map +1 -1
  139. package/dist/cli-tui/commands/audit-command.js +1 -1
  140. package/dist/cli-tui/commands/audit-command.js.map +1 -1
  141. package/dist/cli-tui/commands/command-catalog.d.ts +29 -0
  142. package/dist/cli-tui/commands/command-catalog.d.ts.map +1 -0
  143. package/dist/cli-tui/commands/command-catalog.js +645 -0
  144. package/dist/cli-tui/commands/command-catalog.js.map +1 -0
  145. package/dist/cli-tui/commands/command-registry-adapter.d.ts +12 -0
  146. package/dist/cli-tui/commands/command-registry-adapter.d.ts.map +1 -0
  147. package/dist/cli-tui/commands/command-registry-adapter.js +120 -0
  148. package/dist/cli-tui/commands/command-registry-adapter.js.map +1 -0
  149. package/dist/cli-tui/commands/command-suite-catalog.d.ts +14 -0
  150. package/dist/cli-tui/commands/command-suite-catalog.d.ts.map +1 -0
  151. package/dist/cli-tui/commands/command-suite-catalog.js +147 -0
  152. package/dist/cli-tui/commands/command-suite-catalog.js.map +1 -0
  153. package/dist/cli-tui/commands/{grouped-command-handlers.d.ts → command-suite-handlers.d.ts} +27 -26
  154. package/dist/cli-tui/commands/command-suite-handlers.d.ts.map +1 -0
  155. package/dist/cli-tui/commands/command-suite-handlers.js +110 -0
  156. package/dist/cli-tui/commands/command-suite-handlers.js.map +1 -0
  157. package/dist/cli-tui/commands/hotkeys-command.d.ts +1 -1
  158. package/dist/cli-tui/commands/hotkeys-command.d.ts.map +1 -1
  159. package/dist/cli-tui/commands/hotkeys-command.js +2 -2
  160. package/dist/cli-tui/commands/hotkeys-command.js.map +1 -1
  161. package/dist/cli-tui/commands/limits-command.js +1 -1
  162. package/dist/cli-tui/commands/limits-command.js.map +1 -1
  163. package/dist/cli-tui/commands/pii-command.js +1 -1
  164. package/dist/cli-tui/commands/pii-command.js.map +1 -1
  165. package/dist/cli-tui/commands/registry.d.ts +1 -1
  166. package/dist/cli-tui/commands/registry.d.ts.map +1 -1
  167. package/dist/cli-tui/commands/registry.js +29 -921
  168. package/dist/cli-tui/commands/registry.js.map +1 -1
  169. package/dist/cli-tui/commands/{grouped → subcommands}/auth-commands.d.ts +2 -1
  170. package/dist/cli-tui/commands/subcommands/auth-commands.d.ts.map +1 -0
  171. package/dist/cli-tui/commands/{grouped → subcommands}/auth-commands.js +22 -6
  172. package/dist/cli-tui/commands/subcommands/auth-commands.js.map +1 -0
  173. package/dist/cli-tui/commands/{grouped → subcommands}/config-commands.d.ts +0 -1
  174. package/dist/cli-tui/commands/subcommands/config-commands.d.ts.map +1 -0
  175. package/dist/cli-tui/commands/{grouped → subcommands}/config-commands.js +2 -2
  176. package/dist/cli-tui/commands/subcommands/config-commands.js.map +1 -0
  177. package/dist/cli-tui/commands/{grouped → subcommands}/diag-commands.d.ts +1 -2
  178. package/dist/cli-tui/commands/subcommands/diag-commands.d.ts.map +1 -0
  179. package/dist/cli-tui/commands/{grouped → subcommands}/diag-commands.js +5 -7
  180. package/dist/cli-tui/commands/subcommands/diag-commands.js.map +1 -0
  181. package/dist/cli-tui/commands/{grouped → subcommands}/git-commands.d.ts +0 -2
  182. package/dist/cli-tui/commands/subcommands/git-commands.d.ts.map +1 -0
  183. package/dist/cli-tui/commands/{grouped → subcommands}/git-commands.js +2 -2
  184. package/dist/cli-tui/commands/subcommands/git-commands.js.map +1 -0
  185. package/dist/cli-tui/commands/{grouped → subcommands}/index.d.ts +2 -2
  186. package/dist/cli-tui/commands/subcommands/index.d.ts.map +1 -0
  187. package/dist/cli-tui/commands/{grouped → subcommands}/index.js +2 -2
  188. package/dist/cli-tui/commands/subcommands/index.js.map +1 -0
  189. package/dist/cli-tui/commands/{grouped → subcommands}/safety-commands.d.ts +0 -1
  190. package/dist/cli-tui/commands/subcommands/safety-commands.d.ts.map +1 -0
  191. package/dist/cli-tui/commands/{grouped → subcommands}/safety-commands.js +12 -12
  192. package/dist/cli-tui/commands/subcommands/safety-commands.js.map +1 -0
  193. package/dist/cli-tui/commands/{grouped → subcommands}/session-commands.d.ts +1 -2
  194. package/dist/cli-tui/commands/subcommands/session-commands.d.ts.map +1 -0
  195. package/dist/cli-tui/commands/{grouped → subcommands}/session-commands.js +3 -3
  196. package/dist/cli-tui/commands/subcommands/session-commands.js.map +1 -0
  197. package/dist/cli-tui/commands/{grouped → subcommands}/tools-commands.d.ts +0 -1
  198. package/dist/cli-tui/commands/subcommands/tools-commands.d.ts.map +1 -0
  199. package/dist/cli-tui/commands/{grouped → subcommands}/tools-commands.js +2 -2
  200. package/dist/cli-tui/commands/subcommands/tools-commands.js.map +1 -0
  201. package/dist/cli-tui/commands/{grouped → subcommands}/ui-commands.d.ts +0 -1
  202. package/dist/cli-tui/commands/subcommands/ui-commands.d.ts.map +1 -0
  203. package/dist/cli-tui/commands/{grouped → subcommands}/ui-commands.js +5 -5
  204. package/dist/cli-tui/commands/subcommands/ui-commands.js.map +1 -0
  205. package/dist/cli-tui/commands/{grouped → subcommands}/undo-commands.d.ts +1 -2
  206. package/dist/cli-tui/commands/subcommands/undo-commands.d.ts.map +1 -0
  207. package/dist/cli-tui/commands/{grouped → subcommands}/undo-commands.js +6 -6
  208. package/dist/cli-tui/commands/subcommands/undo-commands.js.map +1 -0
  209. package/dist/cli-tui/commands/subcommands/usage-commands.d.ts.map +1 -0
  210. package/dist/cli-tui/commands/{grouped → subcommands}/usage-commands.js +2 -2
  211. package/dist/cli-tui/commands/subcommands/usage-commands.js.map +1 -0
  212. package/dist/cli-tui/commands/{grouped → subcommands}/utils.d.ts +15 -15
  213. package/dist/cli-tui/commands/subcommands/utils.d.ts.map +1 -0
  214. package/dist/cli-tui/commands/{grouped → subcommands}/utils.js +13 -8
  215. package/dist/cli-tui/commands/subcommands/utils.js.map +1 -0
  216. package/dist/cli-tui/commands/types.d.ts +3 -3
  217. package/dist/cli-tui/commands/types.d.ts.map +1 -1
  218. package/dist/cli-tui/commands/types.js.map +1 -1
  219. package/dist/cli-tui/editor-view.d.ts +1 -1
  220. package/dist/cli-tui/editor-view.d.ts.map +1 -1
  221. package/dist/cli-tui/editor-view.js +1 -1
  222. package/dist/cli-tui/editor-view.js.map +1 -1
  223. package/dist/cli-tui/oauth/oauth-flow-controller.d.ts +4 -0
  224. package/dist/cli-tui/oauth/oauth-flow-controller.d.ts.map +1 -1
  225. package/dist/cli-tui/oauth/oauth-flow-controller.js +76 -5
  226. package/dist/cli-tui/oauth/oauth-flow-controller.js.map +1 -1
  227. package/dist/cli-tui/run/run-controller.d.ts +2 -2
  228. package/dist/cli-tui/run/run-controller.d.ts.map +1 -1
  229. package/dist/cli-tui/run/run-controller.js +3 -2
  230. package/dist/cli-tui/run/run-controller.js.map +1 -1
  231. package/dist/cli-tui/run/run-shell-command.d.ts.map +1 -1
  232. package/dist/cli-tui/run/run-shell-command.js +11 -3
  233. package/dist/cli-tui/run/run-shell-command.js.map +1 -1
  234. package/dist/cli-tui/run/streaming-shell-command.d.ts.map +1 -1
  235. package/dist/cli-tui/run/streaming-shell-command.js +11 -3
  236. package/dist/cli-tui/run/streaming-shell-command.js.map +1 -1
  237. package/dist/cli-tui/selectors/model-selector.d.ts.map +1 -1
  238. package/dist/cli-tui/selectors/model-selector.js +1 -0
  239. package/dist/cli-tui/selectors/model-selector.js.map +1 -1
  240. package/dist/cli-tui/tui-renderer/agent-event-bridge.d.ts +8 -0
  241. package/dist/cli-tui/tui-renderer/agent-event-bridge.d.ts.map +1 -1
  242. package/dist/cli-tui/tui-renderer/agent-event-bridge.js +23 -2
  243. package/dist/cli-tui/tui-renderer/agent-event-bridge.js.map +1 -1
  244. package/dist/cli-tui/tui-renderer/command-registry-options.d.ts +3 -3
  245. package/dist/cli-tui/tui-renderer/command-registry-options.d.ts.map +1 -1
  246. package/dist/cli-tui/tui-renderer/command-registry-options.js +12 -2
  247. package/dist/cli-tui/tui-renderer/command-registry-options.js.map +1 -1
  248. package/dist/cli-tui/tui-renderer/command-suite-wiring.d.ts +32 -0
  249. package/dist/cli-tui/tui-renderer/command-suite-wiring.d.ts.map +1 -0
  250. package/dist/cli-tui/tui-renderer/command-suite-wiring.js +108 -0
  251. package/dist/cli-tui/tui-renderer/command-suite-wiring.js.map +1 -0
  252. package/dist/cli-tui/tui-renderer/input-controller.d.ts +2 -2
  253. package/dist/cli-tui/tui-renderer/input-controller.d.ts.map +1 -1
  254. package/dist/cli-tui/tui-renderer/input-controller.js +2 -2
  255. package/dist/cli-tui/tui-renderer/input-controller.js.map +1 -1
  256. package/dist/cli-tui/tui-renderer/ui-state-controller.d.ts +1 -1
  257. package/dist/cli-tui/tui-renderer/ui-state-controller.js +1 -1
  258. package/dist/cli-tui/tui-renderer/ui-state-controller.js.map +1 -1
  259. package/dist/cli-tui/tui-renderer.d.ts +1 -3
  260. package/dist/cli-tui/tui-renderer.d.ts.map +1 -1
  261. package/dist/cli-tui/tui-renderer.js +37 -83
  262. package/dist/cli-tui/tui-renderer.js.map +1 -1
  263. package/dist/cli-tui/utils/runtime-badges.d.ts +8 -0
  264. package/dist/cli-tui/utils/runtime-badges.d.ts.map +1 -1
  265. package/dist/cli-tui/utils/runtime-badges.js +58 -0
  266. package/dist/cli-tui/utils/runtime-badges.js.map +1 -1
  267. package/dist/cli.js +41771 -22892
  268. package/dist/cli.js.map +1 -1
  269. package/dist/config/env-vars.d.ts +4 -0
  270. package/dist/config/env-vars.d.ts.map +1 -1
  271. package/dist/config/env-vars.js +4 -0
  272. package/dist/config/env-vars.js.map +1 -1
  273. package/dist/config/feature-flags.d.ts +44 -0
  274. package/dist/config/feature-flags.d.ts.map +1 -1
  275. package/dist/config/feature-flags.js +214 -0
  276. package/dist/config/feature-flags.js.map +1 -1
  277. package/dist/connectors/service-client.d.ts +98 -0
  278. package/dist/connectors/service-client.d.ts.map +1 -0
  279. package/dist/connectors/service-client.js +459 -0
  280. package/dist/connectors/service-client.js.map +1 -0
  281. package/dist/conversation/render-model.d.ts.map +1 -1
  282. package/dist/conversation/render-model.js +53 -3
  283. package/dist/conversation/render-model.js.map +1 -1
  284. package/dist/db/health.d.ts +8 -0
  285. package/dist/db/health.d.ts.map +1 -0
  286. package/dist/db/health.js +64 -0
  287. package/dist/db/health.js.map +1 -0
  288. package/dist/db/migrate.d.ts +301 -0
  289. package/dist/db/migrate.d.ts.map +1 -1
  290. package/dist/db/migrate.js +186 -0
  291. package/dist/db/migrate.js.map +1 -1
  292. package/dist/db/migrations/0000_initial.sql +308 -0
  293. package/dist/db/migrations/0001_shared_sessions.sql +18 -0
  294. package/dist/db/migrations/0002_usage_metrics.sql +28 -0
  295. package/dist/db/migrations/0003_execution_traces.sql +18 -0
  296. package/dist/db/migrations/0004_workspace_config.sql +11 -0
  297. package/dist/db/migrations/0005_revenue_attribution.sql +31 -0
  298. package/dist/db/migrations/0006_hosted_session_storage.sql +51 -0
  299. package/dist/db/migrations/0007_reconcile_legacy_audit_hash_cache.sql +24 -0
  300. package/dist/db/migrations/0008_reconcile_legacy_webhook_deliveries.sql +290 -0
  301. package/dist/db/migrations/meta/0000_snapshot.json +2438 -0
  302. package/dist/db/migrations/meta/_journal.json +69 -0
  303. package/dist/db/schema.d.ts +2232 -844
  304. package/dist/db/schema.d.ts.map +1 -1
  305. package/dist/db/schema.js +187 -1
  306. package/dist/db/schema.js.map +1 -1
  307. package/dist/export-html.d.ts.map +1 -1
  308. package/dist/export-html.js +7 -4
  309. package/dist/export-html.js.map +1 -1
  310. package/dist/headless/utility-command-manager.d.ts +2 -1
  311. package/dist/headless/utility-command-manager.d.ts.map +1 -1
  312. package/dist/headless/utility-command-manager.js +12 -6
  313. package/dist/headless/utility-command-manager.js.map +1 -1
  314. package/dist/headless/utility-file-read.d.ts +1 -0
  315. package/dist/headless/utility-file-read.d.ts.map +1 -1
  316. package/dist/headless/utility-file-read.js +5 -1
  317. package/dist/headless/utility-file-read.js.map +1 -1
  318. package/dist/headless/utility-file-search.d.ts +1 -0
  319. package/dist/headless/utility-file-search.d.ts.map +1 -1
  320. package/dist/headless/utility-file-search.js +4 -1
  321. package/dist/headless/utility-file-search.js.map +1 -1
  322. package/dist/headless/utility-file-watch-manager.d.ts +2 -1
  323. package/dist/headless/utility-file-watch-manager.d.ts.map +1 -1
  324. package/dist/headless/utility-file-watch-manager.js +6 -2
  325. package/dist/headless/utility-file-watch-manager.js.map +1 -1
  326. package/dist/headless/workspace-root.d.ts +8 -0
  327. package/dist/headless/workspace-root.d.ts.map +1 -0
  328. package/dist/headless/workspace-root.js +74 -0
  329. package/dist/headless/workspace-root.js.map +1 -0
  330. package/dist/hooks/notification-hooks.d.ts +5 -0
  331. package/dist/hooks/notification-hooks.d.ts.map +1 -1
  332. package/dist/hooks/notification-hooks.js +4 -0
  333. package/dist/hooks/notification-hooks.js.map +1 -1
  334. package/dist/lsp/diagnostic-deltas.d.ts +20 -0
  335. package/dist/lsp/diagnostic-deltas.d.ts.map +1 -0
  336. package/dist/lsp/diagnostic-deltas.js +92 -0
  337. package/dist/lsp/diagnostic-deltas.js.map +1 -0
  338. package/dist/lsp/diagnostic-repair.d.ts +48 -0
  339. package/dist/lsp/diagnostic-repair.d.ts.map +1 -0
  340. package/dist/lsp/diagnostic-repair.js +143 -0
  341. package/dist/lsp/diagnostic-repair.js.map +1 -0
  342. package/dist/main.d.ts.map +1 -1
  343. package/dist/main.js +122 -37
  344. package/dist/main.js.map +1 -1
  345. package/dist/mcp/config.d.ts +4 -2
  346. package/dist/mcp/config.d.ts.map +1 -1
  347. package/dist/mcp/config.js +58 -14
  348. package/dist/mcp/config.js.map +1 -1
  349. package/dist/mcp/index.d.ts +1 -0
  350. package/dist/mcp/index.d.ts.map +1 -1
  351. package/dist/mcp/index.js +1 -0
  352. package/dist/mcp/index.js.map +1 -1
  353. package/dist/mcp/manager.d.ts +1 -0
  354. package/dist/mcp/manager.d.ts.map +1 -1
  355. package/dist/mcp/manager.js +1 -0
  356. package/dist/mcp/manager.js.map +1 -1
  357. package/dist/mcp/platform-plugin.d.ts +3 -0
  358. package/dist/mcp/platform-plugin.d.ts.map +1 -0
  359. package/dist/mcp/platform-plugin.js +83 -0
  360. package/dist/mcp/platform-plugin.js.map +1 -0
  361. package/dist/mcp/tool-bridge.d.ts +15 -0
  362. package/dist/mcp/tool-bridge.d.ts.map +1 -1
  363. package/dist/mcp/tool-bridge.js +194 -6
  364. package/dist/mcp/tool-bridge.js.map +1 -1
  365. package/dist/memory/platform-memory-client.d.ts +130 -0
  366. package/dist/memory/platform-memory-client.d.ts.map +1 -0
  367. package/dist/memory/platform-memory-client.js +330 -0
  368. package/dist/memory/platform-memory-client.js.map +1 -0
  369. package/dist/memory/service-client.d.ts.map +1 -1
  370. package/dist/memory/service-client.js +1 -2
  371. package/dist/memory/service-client.js.map +1 -1
  372. package/dist/models/builtin.d.ts.map +1 -1
  373. package/dist/models/builtin.js +137 -0
  374. package/dist/models/builtin.js.map +1 -1
  375. package/dist/models/config-loader.d.ts +10 -10
  376. package/dist/models/config-loader.d.ts.map +1 -1
  377. package/dist/models/config-loader.js +1 -0
  378. package/dist/models/config-loader.js.map +1 -1
  379. package/dist/models/registry.d.ts +1 -0
  380. package/dist/models/registry.d.ts.map +1 -1
  381. package/dist/models/registry.js +1 -0
  382. package/dist/models/registry.js.map +1 -1
  383. package/dist/oauth/connectors.d.ts +25 -0
  384. package/dist/oauth/connectors.d.ts.map +1 -0
  385. package/dist/oauth/connectors.js +253 -0
  386. package/dist/oauth/connectors.js.map +1 -0
  387. package/dist/oauth/device-identity.d.ts +18 -0
  388. package/dist/oauth/device-identity.d.ts.map +1 -0
  389. package/dist/oauth/device-identity.js +193 -0
  390. package/dist/oauth/device-identity.js.map +1 -0
  391. package/dist/oauth/evalops.d.ts.map +1 -1
  392. package/dist/oauth/evalops.js +73 -14
  393. package/dist/oauth/evalops.js.map +1 -1
  394. package/dist/oauth/index.d.ts +1 -1
  395. package/dist/oauth/index.d.ts.map +1 -1
  396. package/dist/oauth/index.js +31 -1
  397. package/dist/oauth/index.js.map +1 -1
  398. package/dist/oauth/openai-codex.d.ts +16 -0
  399. package/dist/oauth/openai-codex.d.ts.map +1 -0
  400. package/dist/oauth/openai-codex.js +300 -0
  401. package/dist/oauth/openai-codex.js.map +1 -0
  402. package/dist/opentelemetry.d.ts.map +1 -1
  403. package/dist/opentelemetry.js +9 -2
  404. package/dist/opentelemetry.js.map +1 -1
  405. package/dist/platform/agent-runtime-client.d.ts +279 -0
  406. package/dist/platform/agent-runtime-client.d.ts.map +1 -0
  407. package/dist/platform/agent-runtime-client.js +515 -0
  408. package/dist/platform/agent-runtime-client.js.map +1 -0
  409. package/dist/platform/cerebro-facts-client.d.ts +56 -0
  410. package/dist/platform/cerebro-facts-client.d.ts.map +1 -0
  411. package/dist/platform/cerebro-facts-client.js +297 -0
  412. package/dist/platform/cerebro-facts-client.js.map +1 -0
  413. package/dist/platform/client.d.ts +2 -1
  414. package/dist/platform/client.d.ts.map +1 -1
  415. package/dist/platform/client.js +9 -26
  416. package/dist/platform/client.js.map +1 -1
  417. package/dist/platform/core-services.d.ts +128 -0
  418. package/dist/platform/core-services.d.ts.map +1 -1
  419. package/dist/platform/core-services.js +128 -0
  420. package/dist/platform/core-services.js.map +1 -1
  421. package/dist/platform/maestro-timeline-client.d.ts +22 -0
  422. package/dist/platform/maestro-timeline-client.d.ts.map +1 -0
  423. package/dist/platform/maestro-timeline-client.js +373 -0
  424. package/dist/platform/maestro-timeline-client.js.map +1 -0
  425. package/dist/platform/tool-execution-client.d.ts +104 -0
  426. package/dist/platform/tool-execution-client.d.ts.map +1 -0
  427. package/dist/platform/tool-execution-client.js +284 -0
  428. package/dist/platform/tool-execution-client.js.map +1 -0
  429. package/dist/prompts/service-client.d.ts.map +1 -1
  430. package/dist/prompts/service-client.js +5 -2
  431. package/dist/prompts/service-client.js.map +1 -1
  432. package/dist/providers/anthropic-auth.d.ts.map +1 -1
  433. package/dist/providers/anthropic-auth.js +8 -6
  434. package/dist/providers/anthropic-auth.js.map +1 -1
  435. package/dist/providers/api-keys.d.ts +1 -0
  436. package/dist/providers/api-keys.d.ts.map +1 -1
  437. package/dist/providers/api-keys.js +5 -0
  438. package/dist/providers/api-keys.js.map +1 -1
  439. package/dist/providers/auth.d.ts +2 -1
  440. package/dist/providers/auth.d.ts.map +1 -1
  441. package/dist/providers/auth.js +26 -3
  442. package/dist/providers/auth.js.map +1 -1
  443. package/dist/remote-runner/attach-client.d.ts +41 -0
  444. package/dist/remote-runner/attach-client.d.ts.map +1 -0
  445. package/dist/remote-runner/attach-client.js +692 -0
  446. package/dist/remote-runner/attach-client.js.map +1 -0
  447. package/dist/remote-runner/client.d.ts +205 -0
  448. package/dist/remote-runner/client.d.ts.map +1 -0
  449. package/dist/remote-runner/client.js +633 -0
  450. package/dist/remote-runner/client.js.map +1 -0
  451. package/dist/safety/action-firewall.d.ts +6 -1
  452. package/dist/safety/action-firewall.d.ts.map +1 -1
  453. package/dist/safety/action-firewall.js +62 -26
  454. package/dist/safety/action-firewall.js.map +1 -1
  455. package/dist/safety/governance-service-client.d.ts +36 -0
  456. package/dist/safety/governance-service-client.d.ts.map +1 -0
  457. package/dist/safety/governance-service-client.js +279 -0
  458. package/dist/safety/governance-service-client.js.map +1 -0
  459. package/dist/safety/policy.d.ts +13 -2
  460. package/dist/safety/policy.d.ts.map +1 -1
  461. package/dist/safety/policy.js +474 -52
  462. package/dist/safety/policy.js.map +1 -1
  463. package/dist/sdk-tools.d.ts +21 -0
  464. package/dist/sdk-tools.d.ts.map +1 -1
  465. package/dist/sdk-tools.js +16 -0
  466. package/dist/sdk-tools.js.map +1 -1
  467. package/dist/server/app-context.d.ts +25 -0
  468. package/dist/server/app-context.d.ts.map +1 -1
  469. package/dist/server/app-context.js.map +1 -1
  470. package/dist/server/approval-service.d.ts +7 -8
  471. package/dist/server/approval-service.d.ts.map +1 -1
  472. package/dist/server/approval-service.js +12 -24
  473. package/dist/server/approval-service.js.map +1 -1
  474. package/dist/server/authz.d.ts +23 -2
  475. package/dist/server/authz.d.ts.map +1 -1
  476. package/dist/server/authz.js +153 -17
  477. package/dist/server/authz.js.map +1 -1
  478. package/dist/server/handlers/approvals.d.ts.map +1 -1
  479. package/dist/server/handlers/approvals.js +3 -10
  480. package/dist/server/handlers/approvals.js.map +1 -1
  481. package/dist/server/handlers/branch.d.ts.map +1 -1
  482. package/dist/server/handlers/branch.js +29 -20
  483. package/dist/server/handlers/branch.js.map +1 -1
  484. package/dist/server/handlers/bridge.d.ts.map +1 -1
  485. package/dist/server/handlers/bridge.js +3 -2
  486. package/dist/server/handlers/bridge.js.map +1 -1
  487. package/dist/server/handlers/chat-ws.d.ts.map +1 -1
  488. package/dist/server/handlers/chat-ws.js +23 -31
  489. package/dist/server/handlers/chat-ws.js.map +1 -1
  490. package/dist/server/handlers/chat.d.ts.map +1 -1
  491. package/dist/server/handlers/chat.js +105 -46
  492. package/dist/server/handlers/chat.js.map +1 -1
  493. package/dist/server/handlers/compliance.d.ts +3 -0
  494. package/dist/server/handlers/compliance.d.ts.map +1 -0
  495. package/dist/server/handlers/compliance.js +53 -0
  496. package/dist/server/handlers/compliance.js.map +1 -0
  497. package/dist/server/handlers/context.d.ts.map +1 -1
  498. package/dist/server/handlers/context.js +3 -8
  499. package/dist/server/handlers/context.js.map +1 -1
  500. package/dist/server/handlers/fleet.d.ts +4 -0
  501. package/dist/server/handlers/fleet.d.ts.map +1 -0
  502. package/dist/server/handlers/fleet.js +9 -0
  503. package/dist/server/handlers/fleet.js.map +1 -0
  504. package/dist/server/handlers/headless-sessions.d.ts +4 -0
  505. package/dist/server/handlers/headless-sessions.d.ts.map +1 -1
  506. package/dist/server/handlers/headless-sessions.js +168 -3
  507. package/dist/server/handlers/headless-sessions.js.map +1 -1
  508. package/dist/server/handlers/health.d.ts +31 -2
  509. package/dist/server/handlers/health.d.ts.map +1 -1
  510. package/dist/server/handlers/health.js +82 -8
  511. package/dist/server/handlers/health.js.map +1 -1
  512. package/dist/server/handlers/hosted-runner-drain.d.ts +128 -0
  513. package/dist/server/handlers/hosted-runner-drain.d.ts.map +1 -0
  514. package/dist/server/handlers/hosted-runner-drain.js +373 -0
  515. package/dist/server/handlers/hosted-runner-drain.js.map +1 -0
  516. package/dist/server/handlers/hosted-runner-identity.d.ts +17 -0
  517. package/dist/server/handlers/hosted-runner-identity.d.ts.map +1 -0
  518. package/dist/server/handlers/hosted-runner-identity.js +39 -0
  519. package/dist/server/handlers/hosted-runner-identity.js.map +1 -0
  520. package/dist/server/handlers/intelligent-router.d.ts +3 -0
  521. package/dist/server/handlers/intelligent-router.d.ts.map +1 -0
  522. package/dist/server/handlers/intelligent-router.js +141 -0
  523. package/dist/server/handlers/intelligent-router.js.map +1 -0
  524. package/dist/server/handlers/models.d.ts.map +1 -1
  525. package/dist/server/handlers/models.js +14 -0
  526. package/dist/server/handlers/models.js.map +1 -1
  527. package/dist/server/handlers/pending-requests.d.ts +8 -0
  528. package/dist/server/handlers/pending-requests.d.ts.map +1 -0
  529. package/dist/server/handlers/pending-requests.js +149 -0
  530. package/dist/server/handlers/pending-requests.js.map +1 -0
  531. package/dist/server/handlers/revenue-attribution.d.ts +3 -0
  532. package/dist/server/handlers/revenue-attribution.d.ts.map +1 -0
  533. package/dist/server/handlers/revenue-attribution.js +45 -0
  534. package/dist/server/handlers/revenue-attribution.js.map +1 -0
  535. package/dist/server/handlers/runtime-app-server-ws.d.ts +10 -0
  536. package/dist/server/handlers/runtime-app-server-ws.d.ts.map +1 -0
  537. package/dist/server/handlers/runtime-app-server-ws.js +206 -0
  538. package/dist/server/handlers/runtime-app-server-ws.js.map +1 -0
  539. package/dist/server/handlers/session-artifacts.js +2 -2
  540. package/dist/server/handlers/session-artifacts.js.map +1 -1
  541. package/dist/server/handlers/session-attachments.js +3 -3
  542. package/dist/server/handlers/session-attachments.js.map +1 -1
  543. package/dist/server/handlers/session-timeline.d.ts +11 -0
  544. package/dist/server/handlers/session-timeline.d.ts.map +1 -0
  545. package/dist/server/handlers/session-timeline.js +77 -0
  546. package/dist/server/handlers/session-timeline.js.map +1 -0
  547. package/dist/server/handlers/sessions.d.ts +11 -0
  548. package/dist/server/handlers/sessions.d.ts.map +1 -1
  549. package/dist/server/handlers/sessions.js +68 -100
  550. package/dist/server/handlers/sessions.js.map +1 -1
  551. package/dist/server/handlers/traces.d.ts +3 -0
  552. package/dist/server/handlers/traces.d.ts.map +1 -0
  553. package/dist/server/handlers/traces.js +60 -0
  554. package/dist/server/handlers/traces.js.map +1 -0
  555. package/dist/server/handlers/usage-analytics.d.ts +3 -0
  556. package/dist/server/handlers/usage-analytics.d.ts.map +1 -0
  557. package/dist/server/handlers/usage-analytics.js +40 -0
  558. package/dist/server/handlers/usage-analytics.js.map +1 -0
  559. package/dist/server/handlers/workspace-config.d.ts +3 -0
  560. package/dist/server/handlers/workspace-config.d.ts.map +1 -0
  561. package/dist/server/handlers/workspace-config.js +62 -0
  562. package/dist/server/handlers/workspace-config.js.map +1 -0
  563. package/dist/server/headless-in-process-host.d.ts +8 -1
  564. package/dist/server/headless-in-process-host.d.ts.map +1 -1
  565. package/dist/server/headless-in-process-host.js +6 -0
  566. package/dist/server/headless-in-process-host.js.map +1 -1
  567. package/dist/server/headless-runtime-service.d.ts +99 -1
  568. package/dist/server/headless-runtime-service.d.ts.map +1 -1
  569. package/dist/server/headless-runtime-service.js +286 -23
  570. package/dist/server/headless-runtime-service.js.map +1 -1
  571. package/dist/server/hosted-session-manager.d.ts +103 -0
  572. package/dist/server/hosted-session-manager.d.ts.map +1 -0
  573. package/dist/server/hosted-session-manager.js +629 -0
  574. package/dist/server/hosted-session-manager.js.map +1 -0
  575. package/dist/server/pending-request-payload.d.ts +4 -0
  576. package/dist/server/pending-request-payload.d.ts.map +1 -0
  577. package/dist/server/pending-request-payload.js +107 -0
  578. package/dist/server/pending-request-payload.js.map +1 -0
  579. package/dist/server/request-context.d.ts +4 -0
  580. package/dist/server/request-context.d.ts.map +1 -1
  581. package/dist/server/request-context.js +9 -0
  582. package/dist/server/request-context.js.map +1 -1
  583. package/dist/server/routes.d.ts.map +1 -1
  584. package/dist/server/routes.js +149 -1
  585. package/dist/server/routes.js.map +1 -1
  586. package/dist/server/runtime-ws-access.d.ts +16 -0
  587. package/dist/server/runtime-ws-access.d.ts.map +1 -0
  588. package/dist/server/runtime-ws-access.js +21 -0
  589. package/dist/server/runtime-ws-access.js.map +1 -0
  590. package/dist/server/server-middlewares.d.ts +1 -1
  591. package/dist/server/server-middlewares.d.ts.map +1 -1
  592. package/dist/server/server-middlewares.js +35 -27
  593. package/dist/server/server-middlewares.js.map +1 -1
  594. package/dist/server/server-request-manager.d.ts +8 -27
  595. package/dist/server/server-request-manager.d.ts.map +1 -1
  596. package/dist/server/server-request-manager.js +7 -0
  597. package/dist/server/server-request-manager.js.map +1 -1
  598. package/dist/server/server-utils.d.ts +2 -1
  599. package/dist/server/server-utils.d.ts.map +1 -1
  600. package/dist/server/server-utils.js +11 -1
  601. package/dist/server/server-utils.js.map +1 -1
  602. package/dist/server/session-event-env.d.ts +2 -0
  603. package/dist/server/session-event-env.d.ts.map +1 -0
  604. package/dist/server/session-event-env.js +8 -0
  605. package/dist/server/session-event-env.js.map +1 -0
  606. package/dist/server/session-initialization.d.ts +25 -4
  607. package/dist/server/session-initialization.d.ts.map +1 -1
  608. package/dist/server/session-initialization.js +22 -5
  609. package/dist/server/session-initialization.js.map +1 -1
  610. package/dist/server/session-scope.d.ts +4 -0
  611. package/dist/server/session-scope.d.ts.map +1 -1
  612. package/dist/server/session-scope.js +44 -4
  613. package/dist/server/session-scope.js.map +1 -1
  614. package/dist/server/session-timeline.d.ts +13 -0
  615. package/dist/server/session-timeline.d.ts.map +1 -0
  616. package/dist/server/session-timeline.js +566 -0
  617. package/dist/server/session-timeline.js.map +1 -0
  618. package/dist/services/compliance/controls.d.ts +6 -0
  619. package/dist/services/compliance/controls.d.ts.map +1 -0
  620. package/dist/services/compliance/controls.js +113 -0
  621. package/dist/services/compliance/controls.js.map +1 -0
  622. package/dist/services/compliance/index.d.ts +6 -0
  623. package/dist/services/compliance/index.d.ts.map +1 -0
  624. package/dist/services/compliance/index.js +5 -0
  625. package/dist/services/compliance/index.js.map +1 -0
  626. package/dist/services/compliance/normalize.d.ts +23 -0
  627. package/dist/services/compliance/normalize.d.ts.map +1 -0
  628. package/dist/services/compliance/normalize.js +226 -0
  629. package/dist/services/compliance/normalize.js.map +1 -0
  630. package/dist/services/compliance/recorder.d.ts +22 -0
  631. package/dist/services/compliance/recorder.d.ts.map +1 -0
  632. package/dist/services/compliance/recorder.js +89 -0
  633. package/dist/services/compliance/recorder.js.map +1 -0
  634. package/dist/services/compliance/service.d.ts +24 -0
  635. package/dist/services/compliance/service.d.ts.map +1 -0
  636. package/dist/services/compliance/service.js +426 -0
  637. package/dist/services/compliance/service.js.map +1 -0
  638. package/dist/services/compliance/types.d.ts +185 -0
  639. package/dist/services/compliance/types.d.ts.map +1 -0
  640. package/dist/services/compliance/types.js +2 -0
  641. package/dist/services/compliance/types.js.map +1 -0
  642. package/dist/services/intelligent-router/index.d.ts +5 -0
  643. package/dist/services/intelligent-router/index.d.ts.map +1 -0
  644. package/dist/services/intelligent-router/index.js +5 -0
  645. package/dist/services/intelligent-router/index.js.map +1 -0
  646. package/dist/services/intelligent-router/normalize.d.ts +9 -0
  647. package/dist/services/intelligent-router/normalize.d.ts.map +1 -0
  648. package/dist/services/intelligent-router/normalize.js +169 -0
  649. package/dist/services/intelligent-router/normalize.js.map +1 -0
  650. package/dist/services/intelligent-router/recorder.d.ts +24 -0
  651. package/dist/services/intelligent-router/recorder.d.ts.map +1 -0
  652. package/dist/services/intelligent-router/recorder.js +98 -0
  653. package/dist/services/intelligent-router/recorder.js.map +1 -0
  654. package/dist/services/intelligent-router/service.d.ts +22 -0
  655. package/dist/services/intelligent-router/service.d.ts.map +1 -0
  656. package/dist/services/intelligent-router/service.js +328 -0
  657. package/dist/services/intelligent-router/service.js.map +1 -0
  658. package/dist/services/intelligent-router/types.d.ts +98 -0
  659. package/dist/services/intelligent-router/types.d.ts.map +1 -0
  660. package/dist/services/intelligent-router/types.js +7 -0
  661. package/dist/services/intelligent-router/types.js.map +1 -0
  662. package/dist/services/revenue-attribution/index.d.ts +4 -0
  663. package/dist/services/revenue-attribution/index.d.ts.map +1 -0
  664. package/dist/services/revenue-attribution/index.js +4 -0
  665. package/dist/services/revenue-attribution/index.js.map +1 -0
  666. package/dist/services/revenue-attribution/normalize.d.ts +13 -0
  667. package/dist/services/revenue-attribution/normalize.d.ts.map +1 -0
  668. package/dist/services/revenue-attribution/normalize.js +155 -0
  669. package/dist/services/revenue-attribution/normalize.js.map +1 -0
  670. package/dist/services/revenue-attribution/service.d.ts +21 -0
  671. package/dist/services/revenue-attribution/service.d.ts.map +1 -0
  672. package/dist/services/revenue-attribution/service.js +248 -0
  673. package/dist/services/revenue-attribution/service.js.map +1 -0
  674. package/dist/services/revenue-attribution/types.d.ts +96 -0
  675. package/dist/services/revenue-attribution/types.d.ts.map +1 -0
  676. package/dist/services/revenue-attribution/types.js +7 -0
  677. package/dist/services/revenue-attribution/types.js.map +1 -0
  678. package/dist/services/traces/index.d.ts +5 -0
  679. package/dist/services/traces/index.d.ts.map +1 -0
  680. package/dist/services/traces/index.js +4 -0
  681. package/dist/services/traces/index.js.map +1 -0
  682. package/dist/services/traces/normalize.d.ts +20 -0
  683. package/dist/services/traces/normalize.d.ts.map +1 -0
  684. package/dist/services/traces/normalize.js +261 -0
  685. package/dist/services/traces/normalize.js.map +1 -0
  686. package/dist/services/traces/otel.d.ts +3 -0
  687. package/dist/services/traces/otel.d.ts.map +1 -0
  688. package/dist/services/traces/otel.js +173 -0
  689. package/dist/services/traces/otel.js.map +1 -0
  690. package/dist/services/traces/service.d.ts +17 -0
  691. package/dist/services/traces/service.d.ts.map +1 -0
  692. package/dist/services/traces/service.js +197 -0
  693. package/dist/services/traces/service.js.map +1 -0
  694. package/dist/services/traces/types.d.ts +130 -0
  695. package/dist/services/traces/types.d.ts.map +1 -0
  696. package/dist/services/traces/types.js +8 -0
  697. package/dist/services/traces/types.js.map +1 -0
  698. package/dist/services/usage-analytics/aggregation.d.ts +18 -0
  699. package/dist/services/usage-analytics/aggregation.d.ts.map +1 -0
  700. package/dist/services/usage-analytics/aggregation.js +130 -0
  701. package/dist/services/usage-analytics/aggregation.js.map +1 -0
  702. package/dist/services/usage-analytics/index.d.ts +5 -0
  703. package/dist/services/usage-analytics/index.d.ts.map +1 -0
  704. package/dist/services/usage-analytics/index.js +4 -0
  705. package/dist/services/usage-analytics/index.js.map +1 -0
  706. package/dist/services/usage-analytics/recorder.d.ts +16 -0
  707. package/dist/services/usage-analytics/recorder.d.ts.map +1 -0
  708. package/dist/services/usage-analytics/recorder.js +128 -0
  709. package/dist/services/usage-analytics/recorder.js.map +1 -0
  710. package/dist/services/usage-analytics/service.d.ts +15 -0
  711. package/dist/services/usage-analytics/service.d.ts.map +1 -0
  712. package/dist/services/usage-analytics/service.js +210 -0
  713. package/dist/services/usage-analytics/service.js.map +1 -0
  714. package/dist/services/usage-analytics/types.d.ts +80 -0
  715. package/dist/services/usage-analytics/types.d.ts.map +1 -0
  716. package/dist/services/usage-analytics/types.js +2 -0
  717. package/dist/services/usage-analytics/types.js.map +1 -0
  718. package/dist/services/workspace-config/index.d.ts +6 -0
  719. package/dist/services/workspace-config/index.d.ts.map +1 -0
  720. package/dist/services/workspace-config/index.js +5 -0
  721. package/dist/services/workspace-config/index.js.map +1 -0
  722. package/dist/services/workspace-config/middleware.d.ts +5 -0
  723. package/dist/services/workspace-config/middleware.d.ts.map +1 -0
  724. package/dist/services/workspace-config/middleware.js +98 -0
  725. package/dist/services/workspace-config/middleware.js.map +1 -0
  726. package/dist/services/workspace-config/normalize.d.ts +17 -0
  727. package/dist/services/workspace-config/normalize.d.ts.map +1 -0
  728. package/dist/services/workspace-config/normalize.js +148 -0
  729. package/dist/services/workspace-config/normalize.js.map +1 -0
  730. package/dist/services/workspace-config/policy.d.ts +16 -0
  731. package/dist/services/workspace-config/policy.d.ts.map +1 -0
  732. package/dist/services/workspace-config/policy.js +77 -0
  733. package/dist/services/workspace-config/policy.js.map +1 -0
  734. package/dist/services/workspace-config/service.d.ts +20 -0
  735. package/dist/services/workspace-config/service.d.ts.map +1 -0
  736. package/dist/services/workspace-config/service.js +162 -0
  737. package/dist/services/workspace-config/service.js.map +1 -0
  738. package/dist/services/workspace-config/types.d.ts +71 -0
  739. package/dist/services/workspace-config/types.d.ts.map +1 -0
  740. package/dist/services/workspace-config/types.js +2 -0
  741. package/dist/services/workspace-config/types.js.map +1 -0
  742. package/dist/session/manager.d.ts.map +1 -1
  743. package/dist/session/manager.js +10 -0
  744. package/dist/session/manager.js.map +1 -1
  745. package/dist/session/migration.d.ts.map +1 -1
  746. package/dist/session/migration.js +2 -1
  747. package/dist/session/migration.js.map +1 -1
  748. package/dist/session/session-memory.d.ts.map +1 -1
  749. package/dist/session/session-memory.js +7 -1
  750. package/dist/session/session-memory.js.map +1 -1
  751. package/dist/session/types.d.ts +1 -2
  752. package/dist/session/types.d.ts.map +1 -1
  753. package/dist/session/types.js +1 -22
  754. package/dist/session/types.js.map +1 -1
  755. package/dist/session/wire-format.d.ts +7 -0
  756. package/dist/session/wire-format.d.ts.map +1 -0
  757. package/dist/session/wire-format.generated.d.ts +95 -0
  758. package/dist/session/wire-format.generated.d.ts.map +1 -0
  759. package/dist/session/wire-format.generated.js +111 -0
  760. package/dist/session/wire-format.generated.js.map +1 -0
  761. package/dist/session/wire-format.js +145 -0
  762. package/dist/session/wire-format.js.map +1 -0
  763. package/dist/shared-memory/client.d.ts.map +1 -1
  764. package/dist/shared-memory/client.js +22 -22
  765. package/dist/shared-memory/client.js.map +1 -1
  766. package/dist/skills/artifact-metadata.d.ts +16 -0
  767. package/dist/skills/artifact-metadata.d.ts.map +1 -0
  768. package/dist/skills/artifact-metadata.js +86 -0
  769. package/dist/skills/artifact-metadata.js.map +1 -0
  770. package/dist/skills/loader.d.ts +2 -2
  771. package/dist/skills/loader.d.ts.map +1 -1
  772. package/dist/skills/loader.js +1 -0
  773. package/dist/skills/loader.js.map +1 -1
  774. package/dist/skills/service-client.d.ts +42 -0
  775. package/dist/skills/service-client.d.ts.map +1 -0
  776. package/dist/skills/service-client.js +258 -0
  777. package/dist/skills/service-client.js.map +1 -0
  778. package/dist/skills/tool.d.ts +3 -0
  779. package/dist/skills/tool.d.ts.map +1 -1
  780. package/dist/skills/tool.js +67 -5
  781. package/dist/skills/tool.js.map +1 -1
  782. package/dist/telemetry/index.d.ts +4 -0
  783. package/dist/telemetry/index.d.ts.map +1 -1
  784. package/dist/telemetry/index.js +5 -0
  785. package/dist/telemetry/index.js.map +1 -1
  786. package/dist/telemetry/maestro-event-bus.d.ts +440 -0
  787. package/dist/telemetry/maestro-event-bus.d.ts.map +1 -0
  788. package/dist/telemetry/maestro-event-bus.js +784 -0
  789. package/dist/telemetry/maestro-event-bus.js.map +1 -0
  790. package/dist/telemetry/maestro-event-catalog.d.ts +48 -0
  791. package/dist/telemetry/maestro-event-catalog.d.ts.map +1 -0
  792. package/dist/telemetry/maestro-event-catalog.js +69 -0
  793. package/dist/telemetry/maestro-event-catalog.js.map +1 -0
  794. package/dist/telemetry/maestro-platform-replay-fixture.d.ts +24 -0
  795. package/dist/telemetry/maestro-platform-replay-fixture.d.ts.map +1 -0
  796. package/dist/telemetry/maestro-platform-replay-fixture.js +400 -0
  797. package/dist/telemetry/maestro-platform-replay-fixture.js.map +1 -0
  798. package/dist/telemetry/maestro-publisher-conformance-fixture.d.ts +29 -0
  799. package/dist/telemetry/maestro-publisher-conformance-fixture.d.ts.map +1 -0
  800. package/dist/telemetry/maestro-publisher-conformance-fixture.js +240 -0
  801. package/dist/telemetry/maestro-publisher-conformance-fixture.js.map +1 -0
  802. package/dist/telemetry/meter-service-client.d.ts +0 -33
  803. package/dist/telemetry/meter-service-client.d.ts.map +1 -1
  804. package/dist/telemetry/meter-service-client.js +22 -50
  805. package/dist/telemetry/meter-service-client.js.map +1 -1
  806. package/dist/telemetry/turn-tracker.d.ts.map +1 -1
  807. package/dist/telemetry/turn-tracker.js +5 -5
  808. package/dist/telemetry/turn-tracker.js.map +1 -1
  809. package/dist/telemetry/wide-events.d.ts +8 -0
  810. package/dist/telemetry/wide-events.d.ts.map +1 -1
  811. package/dist/telemetry/wide-events.js +28 -0
  812. package/dist/telemetry/wide-events.js.map +1 -1
  813. package/dist/telemetry.d.ts +1 -1
  814. package/dist/telemetry.d.ts.map +1 -1
  815. package/dist/telemetry.js +14 -4
  816. package/dist/telemetry.js.map +1 -1
  817. package/dist/timeline/redaction.d.ts +5 -0
  818. package/dist/timeline/redaction.d.ts.map +1 -0
  819. package/dist/timeline/redaction.js +119 -0
  820. package/dist/timeline/redaction.js.map +1 -0
  821. package/dist/tools/ask-user.d.ts +26 -0
  822. package/dist/tools/ask-user.d.ts.map +1 -1
  823. package/dist/tools/ask-user.js +33 -1
  824. package/dist/tools/ask-user.js.map +1 -1
  825. package/dist/tools/background/task-types.d.ts +1 -1
  826. package/dist/tools/edit.d.ts +2 -0
  827. package/dist/tools/edit.d.ts.map +1 -1
  828. package/dist/tools/edit.js +27 -7
  829. package/dist/tools/edit.js.map +1 -1
  830. package/dist/tools/index.d.ts +9 -0
  831. package/dist/tools/index.d.ts.map +1 -1
  832. package/dist/tools/pipeline.d.ts.map +1 -1
  833. package/dist/tools/pipeline.js +16 -7
  834. package/dist/tools/pipeline.js.map +1 -1
  835. package/dist/tools/write.d.ts +2 -0
  836. package/dist/tools/write.d.ts.map +1 -1
  837. package/dist/tools/write.js +24 -6
  838. package/dist/tools/write.js.map +1 -1
  839. package/dist/tracking/cost-tracker.d.ts +15 -12
  840. package/dist/tracking/cost-tracker.d.ts.map +1 -1
  841. package/dist/tracking/cost-tracker.js +29 -40
  842. package/dist/tracking/cost-tracker.js.map +1 -1
  843. package/dist/utils/checkpoint-profiler.d.ts +29 -0
  844. package/dist/utils/checkpoint-profiler.d.ts.map +1 -0
  845. package/dist/utils/checkpoint-profiler.js +118 -0
  846. package/dist/utils/checkpoint-profiler.js.map +1 -0
  847. package/dist/utils/downstream-http.d.ts +21 -0
  848. package/dist/utils/downstream-http.d.ts.map +1 -0
  849. package/dist/utils/downstream-http.js +151 -0
  850. package/dist/utils/downstream-http.js.map +1 -0
  851. package/dist/utils/downstream.d.ts +18 -0
  852. package/dist/utils/downstream.d.ts.map +1 -0
  853. package/dist/utils/downstream.js +47 -0
  854. package/dist/utils/downstream.js.map +1 -0
  855. package/dist/utils/logger.d.ts +3 -1
  856. package/dist/utils/logger.d.ts.map +1 -1
  857. package/dist/utils/logger.js +12 -1
  858. package/dist/utils/logger.js.map +1 -1
  859. package/dist/utils/oauth-http.d.ts +8 -0
  860. package/dist/utils/oauth-http.d.ts.map +1 -0
  861. package/dist/utils/oauth-http.js +41 -0
  862. package/dist/utils/oauth-http.js.map +1 -0
  863. package/dist/utils/path-utils.d.ts +2 -0
  864. package/dist/utils/path-utils.d.ts.map +1 -0
  865. package/dist/utils/path-utils.js +12 -0
  866. package/dist/utils/path-utils.js.map +1 -0
  867. package/dist/utils/path-validation.d.ts +1 -1
  868. package/dist/utils/path-validation.d.ts.map +1 -1
  869. package/dist/utils/path-validation.js +3 -3
  870. package/dist/utils/path-validation.js.map +1 -1
  871. package/dist/version.json +2 -2
  872. package/dist/web-server.d.ts +7 -1
  873. package/dist/web-server.d.ts.map +1 -1
  874. package/dist/web-server.js +117 -15
  875. package/dist/web-server.js.map +1 -1
  876. package/dist/webhooks/delivery.d.ts.map +1 -1
  877. package/dist/webhooks/delivery.js +9 -12
  878. package/dist/webhooks/delivery.js.map +1 -1
  879. package/node_modules/@bufbuild/protobuf/dist/cjs/descriptors.d.ts +12 -5
  880. package/node_modules/@bufbuild/protobuf/dist/cjs/from-binary.js +7 -7
  881. package/node_modules/@bufbuild/protobuf/dist/cjs/from-json.d.ts +1 -1
  882. package/node_modules/@bufbuild/protobuf/dist/cjs/from-json.js +1 -1
  883. package/node_modules/@bufbuild/protobuf/dist/cjs/reflect/path.d.ts +1 -1
  884. package/node_modules/@bufbuild/protobuf/dist/cjs/registry.js +24 -1
  885. package/node_modules/@bufbuild/protobuf/dist/cjs/to-json.d.ts +1 -1
  886. package/node_modules/@bufbuild/protobuf/dist/cjs/to-json.js +9 -10
  887. package/node_modules/@bufbuild/protobuf/dist/cjs/types.d.ts +1 -1
  888. package/node_modules/@bufbuild/protobuf/dist/cjs/wire/binary-encoding.d.ts +9 -7
  889. package/node_modules/@bufbuild/protobuf/dist/cjs/wire/binary-encoding.js +18 -8
  890. package/node_modules/@bufbuild/protobuf/dist/cjs/wire/text-encoding.d.ts +4 -2
  891. package/node_modules/@bufbuild/protobuf/dist/cjs/wire/text-encoding.js +8 -1
  892. package/node_modules/@bufbuild/protobuf/dist/cjs/wkt/gen/google/protobuf/api_pb.d.ts +1 -1
  893. package/node_modules/@bufbuild/protobuf/dist/cjs/wkt/gen/google/protobuf/compiler/plugin_pb.d.ts +2 -2
  894. package/node_modules/@bufbuild/protobuf/dist/cjs/wkt/gen/google/protobuf/descriptor_pb.d.ts +37 -23
  895. package/node_modules/@bufbuild/protobuf/dist/cjs/wkt/gen/google/protobuf/descriptor_pb.js +1 -1
  896. package/node_modules/@bufbuild/protobuf/dist/cjs/wkt/gen/google/protobuf/field_mask_pb.d.ts +32 -36
  897. package/node_modules/@bufbuild/protobuf/dist/cjs/wkt/gen/google/protobuf/go_features_pb.d.ts +65 -0
  898. package/node_modules/@bufbuild/protobuf/dist/cjs/wkt/gen/google/protobuf/go_features_pb.js +38 -2
  899. package/node_modules/@bufbuild/protobuf/dist/cjs/wkt/gen/google/protobuf/timestamp_pb.d.ts +5 -5
  900. package/node_modules/@bufbuild/protobuf/dist/cjs/wkt/gen/google/protobuf/type_pb.d.ts +3 -3
  901. package/node_modules/@bufbuild/protobuf/dist/cjs/wkt/wrappers.d.ts +10 -0
  902. package/node_modules/@bufbuild/protobuf/dist/cjs/wkt/wrappers.js +24 -0
  903. package/node_modules/@bufbuild/protobuf/dist/esm/descriptors.d.ts +12 -5
  904. package/node_modules/@bufbuild/protobuf/dist/esm/from-binary.js +7 -7
  905. package/node_modules/@bufbuild/protobuf/dist/esm/from-json.d.ts +1 -1
  906. package/node_modules/@bufbuild/protobuf/dist/esm/from-json.js +2 -2
  907. package/node_modules/@bufbuild/protobuf/dist/esm/reflect/path.d.ts +1 -1
  908. package/node_modules/@bufbuild/protobuf/dist/esm/registry.js +24 -1
  909. package/node_modules/@bufbuild/protobuf/dist/esm/to-json.d.ts +1 -1
  910. package/node_modules/@bufbuild/protobuf/dist/esm/to-json.js +10 -11
  911. package/node_modules/@bufbuild/protobuf/dist/esm/types.d.ts +1 -1
  912. package/node_modules/@bufbuild/protobuf/dist/esm/wire/binary-encoding.d.ts +9 -7
  913. package/node_modules/@bufbuild/protobuf/dist/esm/wire/binary-encoding.js +18 -8
  914. package/node_modules/@bufbuild/protobuf/dist/esm/wire/text-encoding.d.ts +4 -2
  915. package/node_modules/@bufbuild/protobuf/dist/esm/wire/text-encoding.js +8 -1
  916. package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/api_pb.d.ts +1 -1
  917. package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/compiler/plugin_pb.d.ts +2 -2
  918. package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/descriptor_pb.d.ts +37 -23
  919. package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/descriptor_pb.js +1 -1
  920. package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/field_mask_pb.d.ts +32 -36
  921. package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/go_features_pb.d.ts +65 -0
  922. package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/go_features_pb.js +37 -1
  923. package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/timestamp_pb.d.ts +5 -5
  924. package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/type_pb.d.ts +3 -3
  925. package/node_modules/@bufbuild/protobuf/dist/esm/wkt/wrappers.d.ts +10 -0
  926. package/node_modules/@bufbuild/protobuf/dist/esm/wkt/wrappers.js +23 -0
  927. package/node_modules/@bufbuild/protobuf/package.json +1 -1
  928. package/node_modules/@evalops/contracts/dist/headless-protocol-schemas.generated.d.ts +305 -2
  929. package/node_modules/@evalops/contracts/dist/headless-protocol-schemas.generated.d.ts.map +1 -1
  930. package/node_modules/@evalops/contracts/dist/headless-protocol-schemas.generated.js +34 -4
  931. package/node_modules/@evalops/contracts/dist/headless-protocol-schemas.generated.js.map +1 -1
  932. package/node_modules/@evalops/contracts/dist/index.d.ts +88 -0
  933. package/node_modules/@evalops/contracts/dist/index.d.ts.map +1 -1
  934. package/node_modules/@evalops/contracts/dist/index.js +2 -0
  935. package/node_modules/@evalops/contracts/dist/index.js.map +1 -1
  936. package/node_modules/@evalops/contracts/dist/proto/maestro/v1/headless_pb.d.ts +77 -77
  937. package/node_modules/@evalops/contracts/dist/proto/maestro/v1/headless_pb.d.ts.map +1 -1
  938. package/node_modules/@evalops/contracts/dist/proto/maestro/v1/headless_pb.js +1 -1
  939. package/node_modules/@evalops/contracts/dist/proto/maestro/v1/headless_pb.js.map +1 -1
  940. package/node_modules/@evalops/contracts/dist/runtime-app-server.d.ts +182 -0
  941. package/node_modules/@evalops/contracts/dist/runtime-app-server.d.ts.map +1 -0
  942. package/node_modules/@evalops/contracts/dist/runtime-app-server.js +83 -0
  943. package/node_modules/@evalops/contracts/dist/runtime-app-server.js.map +1 -0
  944. package/node_modules/@evalops/contracts/dist/runtime-server-request.d.ts +133 -0
  945. package/node_modules/@evalops/contracts/dist/runtime-server-request.d.ts.map +1 -0
  946. package/node_modules/@evalops/contracts/dist/runtime-server-request.js +68 -0
  947. package/node_modules/@evalops/contracts/dist/runtime-server-request.js.map +1 -0
  948. package/node_modules/@evalops/contracts/dist/schemas.d.ts +178 -0
  949. package/node_modules/@evalops/contracts/dist/schemas.d.ts.map +1 -1
  950. package/node_modules/@evalops/contracts/dist/schemas.js +165 -0
  951. package/node_modules/@evalops/contracts/dist/schemas.js.map +1 -1
  952. package/node_modules/@evalops/contracts/dist/typebox-utils.d.ts +2 -0
  953. package/node_modules/@evalops/contracts/dist/typebox-utils.d.ts.map +1 -0
  954. package/node_modules/@evalops/contracts/dist/typebox-utils.js +5 -0
  955. package/node_modules/@evalops/contracts/dist/typebox-utils.js.map +1 -0
  956. package/node_modules/@evalops/contracts/dist/validators.d.ts +4 -1
  957. package/node_modules/@evalops/contracts/dist/validators.d.ts.map +1 -1
  958. package/node_modules/@evalops/contracts/dist/validators.js +4 -1
  959. package/node_modules/@evalops/contracts/dist/validators.js.map +1 -1
  960. package/node_modules/@evalops/contracts/package.json +1 -1
  961. package/node_modules/@evalops/tui/package.json +1 -1
  962. package/node_modules/string-width/index.js +93 -9
  963. package/node_modules/string-width/package.json +1 -1
  964. package/package.json +32 -25
  965. package/dist/cli-tui/commands/grouped/auth-commands.d.ts.map +0 -1
  966. package/dist/cli-tui/commands/grouped/auth-commands.js.map +0 -1
  967. package/dist/cli-tui/commands/grouped/config-commands.d.ts.map +0 -1
  968. package/dist/cli-tui/commands/grouped/config-commands.js.map +0 -1
  969. package/dist/cli-tui/commands/grouped/diag-commands.d.ts.map +0 -1
  970. package/dist/cli-tui/commands/grouped/diag-commands.js.map +0 -1
  971. package/dist/cli-tui/commands/grouped/git-commands.d.ts.map +0 -1
  972. package/dist/cli-tui/commands/grouped/git-commands.js.map +0 -1
  973. package/dist/cli-tui/commands/grouped/index.d.ts.map +0 -1
  974. package/dist/cli-tui/commands/grouped/index.js.map +0 -1
  975. package/dist/cli-tui/commands/grouped/safety-commands.d.ts.map +0 -1
  976. package/dist/cli-tui/commands/grouped/safety-commands.js.map +0 -1
  977. package/dist/cli-tui/commands/grouped/session-commands.d.ts.map +0 -1
  978. package/dist/cli-tui/commands/grouped/session-commands.js.map +0 -1
  979. package/dist/cli-tui/commands/grouped/tools-commands.d.ts.map +0 -1
  980. package/dist/cli-tui/commands/grouped/tools-commands.js.map +0 -1
  981. package/dist/cli-tui/commands/grouped/ui-commands.d.ts.map +0 -1
  982. package/dist/cli-tui/commands/grouped/ui-commands.js.map +0 -1
  983. package/dist/cli-tui/commands/grouped/undo-commands.d.ts.map +0 -1
  984. package/dist/cli-tui/commands/grouped/undo-commands.js.map +0 -1
  985. package/dist/cli-tui/commands/grouped/usage-commands.d.ts.map +0 -1
  986. package/dist/cli-tui/commands/grouped/usage-commands.js.map +0 -1
  987. package/dist/cli-tui/commands/grouped/utils.d.ts.map +0 -1
  988. package/dist/cli-tui/commands/grouped/utils.js.map +0 -1
  989. package/dist/cli-tui/commands/grouped-command-handlers.d.ts.map +0 -1
  990. package/dist/cli-tui/commands/grouped-command-handlers.js +0 -135
  991. package/dist/cli-tui/commands/grouped-command-handlers.js.map +0 -1
  992. package/dist/cli-tui/tui-renderer/grouped-handlers-wiring.d.ts +0 -78
  993. package/dist/cli-tui/tui-renderer/grouped-handlers-wiring.d.ts.map +0 -1
  994. package/dist/cli-tui/tui-renderer/grouped-handlers-wiring.js +0 -129
  995. package/dist/cli-tui/tui-renderer/grouped-handlers-wiring.js.map +0 -1
  996. package/node_modules/@evalops/memory/dist/client.d.ts +0 -94
  997. package/node_modules/@evalops/memory/dist/client.js +0 -503
  998. package/node_modules/@evalops/memory/gen/proto/dist/memory/v1/memory_pb.d.ts +0 -608
  999. package/node_modules/@evalops/memory/gen/proto/dist/memory/v1/memory_pb.js +0 -187
  1000. package/node_modules/@evalops/memory/package.json +0 -26
  1001. /package/dist/cli-tui/commands/{grouped → subcommands}/usage-commands.d.ts +0 -0
@@ -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_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":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EACN,8BAA8B,EAC9B,4BAA4B,GAC5B,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAEnE,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAC5E,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,EAAE,6BAA6B,EAAE,MAAM,wCAAwC,CAAC;AACvF,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,+BAA+B,EAAE,MAAM,2CAA2C,CAAC;AAC5F,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAE3E,OAAO,EACN,yBAAyB,EAEzB,0BAA0B,EAE1B,4BAA4B,EAC5B,gBAAgB,EAChB,4BAA4B,EAC5B,8BAA8B,EAC9B,iCAAiC,EACjC,yBAAyB,EACzB,kBAAkB,EAClB,qBAAqB,EACrB,0BAA0B,EAC1B,kCAAkC,EAClC,qBAAqB,EACrB,kCAAkC,EAClC,qBAAqB,GACrB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACN,yBAAyB,EACzB,8BAA8B,EAC9B,yBAAyB,EACzB,kBAAkB,EAClB,qBAAqB,GACrB,CAAC;AAEF,MAAM,4BAA4B,GAAG,OAAO,CAAC;AAE7C,SAAS,IAAI,CAAC,GAA6B;IAC1C,IAAI,CAAC;QACJ,8BAA8B,CAAC,GAAG,EAAE,yBAAyB,CAAC,CAAC;QAC/D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAClD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,IAAI,CAAC;YACJ,OAAO,CAAC,MAAM,CAAC,KAAK,CACnB,GAAG,IAAI,CAAC,SAAS,CAAC;gBACjB,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,oCAAoC,OAAO,EAAE;gBACtD,KAAK,EAAE,KAAK;gBACZ,UAAU,EAAE,UAAU;aACa,CAAC,IAAI,CACzC,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACR,6EAA6E;QAC9E,CAAC;IACF,CAAC;AACF,CAAC;AAED,SAAS,SAAS,CACjB,OAAe,EACf,KAAc,EACd,OAAiC;IAEjC,IAAI,CAAC;QACJ,IAAI,EAAE,OAAO;QACb,UAAU,EAAE,OAAO,EAAE,UAAU;QAC/B,OAAO;QACP,KAAK;QACL,UAAU,EAAE,qBAAqB,CAAC,OAAO,EAAE,KAAK,CAAC;KACjD,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACpC,KAAY,EACZ,cAA8B,EAC9B,eAAuC,EACvC,gBAAmC;IAEnC,MAAM,UAAU,GAAG,IAAI,0BAA0B,EAAE,CAAC;IACpD,MAAM,KAAK,GAAG,0BAA0B,EAAE,CAAC;IAE3C,MAAM,2BAA2B,GAAG,CACnC,GAA6B,EAC7B,KAAK,GAAG,KAAK,EACH,EAAE;QACZ,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,qBAAqB,EAAE,MAAM,EAAE,CAAC;YACnD,OAAO,KAAK,CAAC;QACd,CAAC;QACD,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,QAAQ;gBACZ,OAAO,KAAK,CAAC,qBAAqB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACvD,KAAK,YAAY;gBAChB,OAAO,KAAK,CAAC,qBAAqB,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;YAC3D,KAAK,iBAAiB;gBACrB,OAAO,KAAK,CAAC,qBAAqB,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;YAChE;gBACC,OAAO,KAAK,CAAC;QACf,CAAC;IACF,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,CACnB,GAA6B,EAC7B,OAA6B,EACtB,EAAE;QACT,4BAA4B,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACzC,IAAI,2BAA2B,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC;YACtD,OAAO;QACR,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,CAAC;IACX,CAAC,CAAC;IACF,MAAM,8BAA8B,GAAG,CACtC,SAA6B,EACnB,EAAE;QACZ,MAAM,gBAAgB,GAAG,cAAc,CAAC,YAAY,EAAE,IAAI,SAAS,CAAC;QACpE,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACvB,OAAO,SAAS,KAAK,SAAS,CAAC;QAChC,CAAC;QACD,OAAO,SAAS,KAAK,gBAAgB,CAAC;IACvC,CAAC,CAAC;IAEF,MAAM,2BAA2B,GAAG,CAAC,MAAc,EAAQ,EAAE;QAC5D,MAAM,SAAS,GAAG,cAAc,CAAC,YAAY,EAAE,IAAI,SAAS,CAAC;QAC7D,IAAI,SAAS,EAAE,CAAC;YACf,oBAAoB,CAAC,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;QACpE,CAAC;QACD,KAAK,MAAM,OAAO,IAAI;YACrB,GAAG,KAAK,CAAC,iBAAiB;YAC1B,GAAG,KAAK,CAAC,oBAAoB;YAC7B,GAAG,KAAK,CAAC,wBAAwB;YACjC,GAAG,KAAK,CAAC,mBAAmB;YAC5B,GAAG,KAAK,CAAC,oBAAoB;SAC7B,EAAE,CAAC;YACH,oBAAoB,CAAC,MAAM,CAC1B,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,OAAO,EACrC,MAAM,EACN,SAAS,CACT,CAAC;QACH,CAAC;IACF,CAAC,CAAC;IACF,MAAM,eAAe,GAAG,IAAI,6BAA6B,CAAC,CAAC,KAAK,EAAE,EAAE;QACnE,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACpB,KAAK,SAAS;gBACb,WAAW,CAAC;oBACX,IAAI,EAAE,yBAAyB;oBAC/B,UAAU,EAAE,KAAK,CAAC,UAAU;oBAC5B,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,UAAU,EAAE,KAAK,CAAC,UAAU;oBAC5B,aAAa,EAAE,KAAK,CAAC,aAAa;oBAClC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACxC,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACtD,GAAG,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAClE,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACzD,GAAG,CAAC,KAAK,CAAC,mBAAmB;wBAC5B,CAAC,CAAC,EAAE,mBAAmB,EAAE,KAAK,CAAC,mBAAmB,EAAE;wBACpD,CAAC,CAAC,EAAE,CAAC;iBACN,CAAC,CAAC;gBACH,OAAO;YACR,KAAK,SAAS;gBACb,WAAW,CAAC;oBACX,IAAI,EAAE,yBAAyB;oBAC/B,UAAU,EAAE,KAAK,CAAC,UAAU;oBAC5B,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,IAAI,EAAE,KAAK,CAAC,IAAI;iBAChB,CAAC,CAAC;gBACH,OAAO;YACR,KAAK,QAAQ;gBACZ,WAAW,CAAC;oBACX,IAAI,EAAE,wBAAwB;oBAC9B,UAAU,EAAE,KAAK,CAAC,UAAU;oBAC5B,MAAM,EAAE,KAAK,CAAC,MAAM;oBACpB,OAAO,EAAE,KAAK,CAAC,OAAO;iBACtB,CAAC,CAAC;gBACH,OAAO;YACR,KAAK,QAAQ;gBACZ,WAAW,CAAC;oBACX,IAAI,EAAE,wBAAwB;oBAC9B,UAAU,EAAE,KAAK,CAAC,UAAU;oBAC5B,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,SAAS,EAAE,KAAK,CAAC,SAAS;oBAC1B,MAAM,EAAE,KAAK,CAAC,MAAM;oBACpB,MAAM,EAAE,KAAK,CAAC,MAAM;iBACpB,CAAC,CAAC;gBACH,OAAO;QACT,CAAC;IACF,CAAC,CAAC,CAAC;IACH,MAAM,WAAW,GAAG,IAAI,+BAA+B,CAAC,CAAC,KAAK,EAAE,EAAE;QACjE,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACpB,KAAK,SAAS;gBACb,WAAW,CAAC;oBACX,IAAI,EAAE,4BAA4B;oBAClC,QAAQ,EAAE,KAAK,CAAC,QAAQ;oBACxB,QAAQ,EAAE,KAAK,CAAC,QAAQ;oBACxB,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;oBACxC,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;oBACxC,WAAW,EAAE,KAAK,CAAC,WAAW;oBAC9B,mBAAmB,EAAE,KAAK,CAAC,mBAAmB;iBAC9C,CAAC,CAAC;gBACH,OAAO;YACR,KAAK,OAAO;gBACX,WAAW,CAAC;oBACX,IAAI,EAAE,0BAA0B;oBAChC,QAAQ,EAAE,KAAK,CAAC,QAAQ;oBACxB,WAAW,EAAE,KAAK,CAAC,WAAW;oBAC9B,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,aAAa,EAAE,KAAK,CAAC,aAAa;oBAClC,SAAS,EAAE,KAAK,CAAC,SAAS;oBAC1B,YAAY,EAAE,KAAK,CAAC,YAAY;iBAChC,CAAC,CAAC;gBACH,OAAO;YACR,KAAK,SAAS;gBACb,WAAW,CAAC;oBACX,IAAI,EAAE,4BAA4B;oBAClC,QAAQ,EAAE,KAAK,CAAC,QAAQ;oBACxB,MAAM,EAAE,KAAK,CAAC,MAAM;iBACpB,CAAC,CAAC;gBACH,OAAO;QACT,CAAC;IACF,CAAC,CAAC,CAAC;IAEH,MAAM,yBAAyB,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE;QAC1E,IAAI,CAAC,8BAA8B,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9D,OAAO;QACR,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YACjC,WAAW,CAAC;gBACX,IAAI,EAAE,gBAAgB;gBACtB,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE;gBAC5B,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI;gBAChC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM;gBAC7B,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,QAAQ;gBAC5B,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW;oBAC5B,CAAC,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE;oBAC7C,CAAC,CAAC,EAAE,CAAC;gBACN,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY;oBAC7B,CAAC,CAAC,EAAE,aAAa,EAAE,KAAK,CAAC,OAAO,CAAC,YAAY,EAAE;oBAC/C,CAAC,CAAC,EAAE,CAAC;gBACN,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB;oBAClC,CAAC,CAAC,EAAE,kBAAkB,EAAE,KAAK,CAAC,OAAO,CAAC,iBAAiB,EAAE;oBACzD,CAAC,CAAC,EAAE,CAAC;gBACN,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI;gBACxB,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM;aAC5B,CAAC,CAAC;YACH,OAAO;QACR,CAAC;QACD,WAAW,CAAC;YACX,IAAI,EAAE,yBAAyB;YAC/B,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE;YAC5B,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI;YAChC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM;YAC7B,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,WAAW,EAAE,KAAK,CAAC,UAAU;SAC7B,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE;QACzB,IAAI,KAAK,CAAC,YAAY,EAAE,gBAAgB,EAAE,CAAC;YAC1C,WAAW,CAAC,iCAAiC,CAAC,KAAK,CAAC,CAAC,CAAC;QACvD,CAAC;QACD,IACC,KAAK,CAAC,IAAI,KAAK,0BAA0B;YACzC,CAAC,eAAe,EAAE,uBAAuB,EAAE,EAC1C,CAAC;YACF,OAAO;QACR,CAAC;QACD,MAAM,2BAA2B,GAChC,KAAK,CAAC,IAAI,KAAK,0BAA0B;YACzC,eAAe,EAAE,uBAAuB,EAAE;YAC1C,CAAC,oBAAoB,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1C,CAAC,CAAC;gBACA,SAAS,EAAE,cAAc,CAAC,YAAY,EAAE,IAAI,SAAS;gBACrD,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,OAAO,EAAE,eAAe;aACxB;YACF,CAAC,CAAC,IAAI,CAAC;QACT,KAAK,MAAM,OAAO,IAAI,UAAU,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1D,IACC,OAAO,CAAC,IAAI,KAAK,gBAAgB;gBACjC,OAAO,CAAC,IAAI,KAAK,yBAAyB,EACzC,CAAC;gBACF,SAAS;YACV,CAAC;YACD,WAAW,CAAC,OAAO,CAAC,CAAC;QACtB,CAAC;QACD,IAAI,2BAA2B,EAAE,CAAC;YACjC,oBAAoB,CAAC,gBAAgB,CAAC,2BAA2B,CAAC,CAAC;QACpE,CAAC;IACF,CAAC,CAAC,CAAC;IAEH,WAAW,CAAC,UAAU,CAAC,iBAAiB,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC;IACjE,WAAW,CAAC,UAAU,CAAC,uBAAuB,CAAC,cAAc,CAAC,CAAC,CAAC;IAEhE,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;IAC/C,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC;QACnC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,QAAQ,EAAE,KAAK;KACf,CAAC,CAAC;IAEH,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,IAAY,EAAE,EAAE;QACpC,IAAI,GAA2B,CAAC;QAChC,IAAI,CAAC;YACJ,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAY,CAAC;YAC3C,4BAA4B,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;YACzD,GAAG,GAAG,MAAM,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,SAAS,CAAC,4BAA4B,OAAO,EAAE,EAAE,KAAK,CAAC,CAAC;YACxD,OAAO;QACR,CAAC;QAED,IAAI,CAAC;YACJ,IAAI,kCAAkC,CAAC,GAAG,EAAE,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC;gBACpE,IAAI,CAAC;oBACJ,IAAI,EAAE,OAAO;oBACb,OAAO,EAAE,oDAAoD;oBAC7D,KAAK,EAAE,KAAK;oBACZ,UAAU,EAAE,UAAU;iBACtB,CAAC,CAAC;gBACH,OAAO;YACR,CAAC;YAED,MAAM,0BAA0B,GAAG,kCAAkC,CACpE,GAAG,EACH,KAAK,CAAC,eAAe,CACrB,CAAC;YACF,IAAI,0BAA0B,KAAK,SAAS,EAAE,CAAC;gBAC9C,IAAI,CAAC;oBACJ,IAAI,EAAE,OAAO;oBACb,OAAO,EAAE,gDAAgD,0BAA0B,WAAW;oBAC9F,KAAK,EAAE,KAAK;oBACZ,UAAU,EAAE,UAAU;iBACtB,CAAC,CAAC;gBACH,OAAO;YACR,CAAC;YAED,IAAI,KAAK,CAAC,eAAe,KAAK,QAAQ,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,EAAE,CAAC;gBACvE,IAAI,CAAC;oBACJ,IAAI,EAAE,OAAO;oBACb,OAAO,EAAE,kDAAkD;oBAC3D,KAAK,EAAE,KAAK;oBACZ,UAAU,EAAE,UAAU;iBACtB,CAAC,CAAC;gBACH,OAAO;YACR,CAAC;YAED,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC;gBAClB,KAAK,MAAM,CAAC,CAAC,CAAC;oBACb,MAAM,OAAO,GAAG,gBAAgB,CAAC,KAAK,EAAE,GAAG,EAAE,eAAe,CAAC,CAAC;oBAC9D,WAAW,CAAC;wBACX,IAAI,EAAE,QAAQ;wBACd,OAAO,EACN,OAAO,CAAC,MAAM,GAAG,CAAC;4BACjB,CAAC,CAAC,gBAAgB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;4BACtC,CAAC,CAAC,+BAA+B;qBACnC,CAAC,CAAC;oBACH,MAAM;gBACP,CAAC;gBAED,KAAK,OAAO,CAAC,CAAC,CAAC;oBACd,4BAA4B,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;oBACzC,MAAM,aAAa,GAAG,KAAK,CAAC,eAAe,IAAI,YAAY,CAAC;oBAC5D,gBAAgB,EAAE,OAAO,CACxB,GAAG,CAAC,YAAY,EAAE,eAAe,EAAE,QAAQ,CAAC,YAAY,CAAC;wBACxD,CAAC,CAAC,QAAQ;wBACV,CAAC,CAAC,MAAM,CACT,CAAC;oBACF,WAAW,CACV,UAAU,CAAC,mBAAmB,CAAC;wBAC9B,aAAa,EAAE,4BAA4B;wBAC3C,gBAAgB,EAAE,yBAAyB;wBAC3C,uBAAuB,EAAE,GAAG,CAAC,gBAAgB;wBAC7C,WAAW,EAAE,GAAG,CAAC,WAAW;wBAC5B,YAAY,EAAE,GAAG,CAAC,YAAY;wBAC9B,qBAAqB,EAAE,GAAG,CAAC,qBAAqB;wBAChD,IAAI,EAAE,aAAa;wBACnB,wBAAwB,EACvB,aAAa,KAAK,YAAY;4BAC7B,CAAC,CAAC,4BAA4B;4BAC9B,CAAC,CAAC,IAAI;wBACR,gBAAgB,EAAE,IAAI;qBACtB,CAAC,EACF,EAAE,KAAK,EAAE,IAAI,EAAE,CACf,CAAC;oBACF,WAAW,CACV,UAAU,CAAC,0BAA0B,CAAC;wBACrC,aAAa,EAAE,4BAA4B;wBAC3C,gBAAgB,EAAE,GAAG,CAAC,gBAAgB;wBACtC,WAAW,EAAE,GAAG,CAAC,WAAW;wBAC5B,YAAY,EAAE,GAAG,CAAC,YAAY;wBAC9B,qBAAqB,EAAE,GAAG,CAAC,qBAAqB;wBAChD,IAAI,EAAE,aAAa;wBACnB,gBAAgB,EAAE,CAAC;wBACnB,wBAAwB,EACvB,aAAa,KAAK,YAAY;4BAC7B,CAAC,CAAC,4BAA4B;4BAC9B,CAAC,CAAC,IAAI;wBACR,gBAAgB,EAAE,IAAI;wBACtB,WAAW,EAAE,KAAK,CAAC,WAAW;qBAC9B,CAAC,CACF,CAAC;oBACF,IACC,GAAG,CAAC,gBAAgB;wBACpB,GAAG,CAAC,gBAAgB,KAAK,yBAAyB,EACjD,CAAC;wBACF,WAAW,CAAC;4BACX,IAAI,EAAE,QAAQ;4BACd,OAAO,EAAE,mBAAmB,GAAG,CAAC,gBAAgB,uBAAuB,yBAAyB,EAAE;yBAClG,CAAC,CAAC;oBACJ,CAAC;oBACD,MAAM;gBACP,CAAC;gBAED,KAAK,QAAQ;oBACZ,4BAA4B,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;oBACzC,MAAM,yBAAyB,CAAC;wBAC/B,KAAK;wBACL,cAAc;wBACd,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;wBAClB,MAAM,EAAE,GAAG,CAAC,OAAO;wBACnB,eAAe,EAAE,GAAG,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC;wBAC7C,eAAe,EAAE,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;wBAC/D,mBAAmB,EAAE,4BAA4B,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC;wBAC9D,OAAO,EAAE,KAAK,IAAI,EAAE;4BACnB,IAAI,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gCACnD,MAAM,MAAM,GAAG,MAAM,qBAAqB,CACzC,GAAG,CAAC,WAAW,EACf,SAAS,CACT,CAAC;gCACF,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oCACvB,WAAW,CAAC;wCACX,IAAI,EAAE,QAAQ;wCACd,OAAO,EAAE,UAAU,MAAM,CAAC,MAAM,gBAAgB;qCAChD,CAAC,CAAC;oCACH,MAAM,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;oCACxC,OAAO;gCACR,CAAC;4BACF,CAAC;4BACD,MAAM,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;wBACjC,CAAC;wBACD,SAAS,EAAE;4BACV,YAAY,EAAE,GAAG,EAAE;gCAClB,WAAW,CAAC;oCACX,IAAI,EAAE,QAAQ;oCACd,OAAO,EACN,wFAAwF;iCACzF,CAAC,CAAC;4BACJ,CAAC;4BACD,WAAW,EAAE,CAAC,MAAM,EAAE,EAAE;gCACvB,WAAW,CACV,8BAA8B,CAC7B,oBAAoB,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAC5C,CACD,CAAC;4BACH,CAAC;4BACD,mBAAmB,EAAE,CAAC,OAAO,EAAE,gBAAgB,EAAE,EAAE;gCAClD,WAAW,CAAC;oCACX,IAAI,EAAE,QAAQ;oCACd,OAAO,EACN,OAAO,KAAK,CAAC;wCACZ,CAAC,CAAC,4DAA4D;wCAC9D,CAAC,CAAC,kEAAkE,OAAO,IAAI,gBAAgB,MAAM;iCACvG,CAAC,CAAC;4BACJ,CAAC;4BACD,oBAAoB,EAAE,CAAC,gBAAgB,EAAE,EAAE;gCAC1C,WAAW,CAAC;oCACX,IAAI,EAAE,QAAQ;oCACd,OAAO,EAAE,iBAAiB,gBAAgB,8EAA8E;iCACxH,CAAC,CAAC;4BACJ,CAAC;4BACD,uBAAuB,EAAE,CAAC,OAAO,EAAE,gBAAgB,EAAE,EAAE;gCACtD,WAAW,CAAC;oCACX,IAAI,EAAE,QAAQ;oCACd,OAAO,EAAE,8CAA8C,OAAO,IAAI,gBAAgB,0DAA0D;iCAC5I,CAAC,CAAC;4BACJ,CAAC;yBACD;qBACD,CAAC,CAAC;oBACH,MAAM;gBAEP,KAAK,WAAW,CAAC;gBACjB,KAAK,QAAQ;oBACZ,2BAA2B,CAC1B,GAAG,CAAC,IAAI,KAAK,WAAW;wBACvB,CAAC,CAAC,sCAAsC;wBACxC,CAAC,CAAC,oCAAoC,CACvC,CAAC;oBACF,4BAA4B,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;oBACzC,MAAM,eAAe,CAAC,OAAO,CAC5B,GAAG,CAAC,IAAI,KAAK,WAAW;wBACvB,CAAC,CAAC,qDAAqD;wBACvD,CAAC,CAAC,mDAAmD,CACtD,CAAC;oBACF,WAAW,CAAC,OAAO,CAClB,GAAG,CAAC,IAAI,KAAK,WAAW;wBACvB,CAAC,CAAC,gDAAgD;wBAClD,CAAC,CAAC,8CAA8C,CACjD,CAAC;oBACF,KAAK,CAAC,KAAK,EAAE,CAAC;oBACd,MAAM;gBAEP,KAAK,eAAe;oBACnB,IAAI,eAAe,EAAE,uBAAuB,EAAE,EAAE,CAAC;wBAChD,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ;4BAC1B,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,IAAI,UAAU,CAAC;4BACpC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,IAAI,gBAAgB,CAAC,CAAC;wBAC3C,MAAM,QAAQ,GAAG,oBAAoB,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,EAAE;4BAClE,QAAQ,EAAE,GAAG,CAAC,QAAQ;4BACtB,MAAM;4BACN,UAAU,EAAE,MAAM;yBAClB,CAAC,CAAC;wBACH,IAAI,CAAC,QAAQ,EAAE,CAAC;4BACf,SAAS,CACR,0CAA0C,GAAG,CAAC,OAAO,EAAE,EACvD,KAAK,CACL,CAAC;wBACH,CAAC;oBACF,CAAC;yBAAM,CAAC;wBACP,WAAW,CAAC;4BACX,IAAI,EAAE,QAAQ;4BACd,OAAO,EAAE,4CAA4C;yBACrD,CAAC,CAAC;oBACJ,CAAC;oBACD,4BAA4B,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;oBACzC,MAAM;gBAEP,KAAK,oBAAoB,CAAC,CAAC,CAAC;oBAC3B,MAAM,QAAQ,GAAG,iBAAiB,CAAC,OAAO,CACzC,GAAG,CAAC,OAAO,EACX,GAAG,CAAC,OAAO,EACX,GAAG,CAAC,QAAQ,CACZ,CAAC;oBACF,IAAI,CAAC,QAAQ,EAAE,CAAC;wBACf,SAAS,CACR,qDAAqD,GAAG,CAAC,OAAO,EAAE,EAClE,KAAK,CACL,CAAC;oBACH,CAAC;oBACD,4BAA4B,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;oBACzC,MAAM;gBACP,CAAC;gBAED,KAAK,yBAAyB;oBAC7B,IAAI,GAAG,CAAC,YAAY,KAAK,UAAU,EAAE,CAAC;wBACrC,IAAI,eAAe,EAAE,uBAAuB,EAAE,EAAE,CAAC;4BAChD,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ;gCAC1B,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,IAAI,UAAU,CAAC;gCACpC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,IAAI,gBAAgB,CAAC,CAAC;4BAC3C,MAAM,QAAQ,GAAG,oBAAoB,CAAC,eAAe,CACpD,GAAG,CAAC,UAAU,EACd;gCACC,QAAQ,EAAE,GAAG,CAAC,QAAQ,IAAI,KAAK;gCAC/B,MAAM;gCACN,UAAU,EAAE,MAAM;6BAClB,CACD,CAAC;4BACF,IAAI,CAAC,QAAQ,EAAE,CAAC;gCACf,SAAS,CACR,6CAA6C,GAAG,CAAC,UAAU,EAAE,EAC7D,KAAK,CACL,CAAC;4BACH,CAAC;wBACF,CAAC;6BAAM,CAAC;4BACP,WAAW,CAAC;gCACX,IAAI,EAAE,QAAQ;gCACd,OAAO,EAAE,4CAA4C;6BACrD,CAAC,CAAC;wBACJ,CAAC;oBACF,CAAC;yBAAM,IAAI,GAAG,CAAC,YAAY,KAAK,YAAY,EAAE,CAAC;wBAC9C,MAAM,QAAQ,GAAG,oBAAoB,CAAC,gBAAgB,CACrD,GAAG,CAAC,UAAU,EACd;4BACC,MAAM,EAAE,GAAG,CAAC,eAAe,IAAI,OAAO;4BACtC,MAAM,EAAE,GAAG,CAAC,MAAM;4BAClB,UAAU,EAAE,MAAM;yBAClB,CACD,CAAC;wBACF,IAAI,CAAC,QAAQ,EAAE,CAAC;4BACf,SAAS,CACR,uDAAuD,GAAG,CAAC,UAAU,EAAE,EACvE,KAAK,CACL,CAAC;wBACH,CAAC;oBACF,CAAC;yBAAM,CAAC;wBACP,MAAM,QAAQ,GAAG,iBAAiB,CAAC,OAAO,CACzC,GAAG,CAAC,UAAU,EACd,GAAG,CAAC,OAAO,IAAI,EAAE,EACjB,GAAG,CAAC,QAAQ,IAAI,KAAK,CACrB,CAAC;wBACF,IAAI,CAAC,QAAQ,EAAE,CAAC;4BACf,SAAS,CACR,wDAAwD,GAAG,CAAC,UAAU,EAAE,EACxE,KAAK,CACL,CAAC;wBACH,CAAC;oBACF,CAAC;oBACD,4BAA4B,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;oBACzC,MAAM;gBAEP,KAAK,uBAAuB;oBAC3B,IACC,CAAC,KAAK,CAAC,YAAY,EAAE,kBAAkB,EAAE,QAAQ,CAAC,cAAc,CAAC,EAChE,CAAC;wBACF,SAAS,CACR,wDAAwD,EACxD,KAAK,CACL,CAAC;wBACF,MAAM;oBACP,CAAC;oBACD,MAAM,eAAe,CAAC,KAAK,CAAC;wBAC3B,UAAU,EAAE,GAAG,CAAC,UAAU;wBAC1B,OAAO,EAAE,GAAG,CAAC,OAAO;wBACpB,GAAG,EAAE,GAAG,CAAC,GAAG;wBACZ,GAAG,EAAE,GAAG,CAAC,GAAG;wBACZ,UAAU,EAAE,GAAG,CAAC,UAAU;wBAC1B,aAAa,EAAE,GAAG,CAAC,aAAa;wBAChC,WAAW,EAAE,GAAG,CAAC,WAAW;wBAC5B,OAAO,EAAE,GAAG,CAAC,OAAO;wBACpB,IAAI,EAAE,GAAG,CAAC,IAAI;wBACd,mBAAmB,EAAE,4BAA4B;qBACjD,CAAC,CAAC;oBACH,MAAM;gBAEP,KAAK,2BAA2B;oBAC/B,MAAM,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;oBAC3D,MAAM;gBAEP,KAAK,uBAAuB;oBAC3B,IACC,CAAC,KAAK,CAAC,YAAY,EAAE,kBAAkB,EAAE,QAAQ,CAAC,cAAc,CAAC,EAChE,CAAC;wBACF,SAAS,CACR,wDAAwD,EACxD,KAAK,CACL,CAAC;wBACF,MAAM;oBACP,CAAC;oBACD,MAAM,eAAe,CAAC,UAAU,CAC/B,GAAG,CAAC,UAAU,EACd,GAAG,CAAC,OAAO,EACX,GAAG,CAAC,GAAG,CACP,CAAC;oBACF,MAAM;gBAEP,KAAK,wBAAwB;oBAC5B,IACC,CAAC,KAAK,CAAC,YAAY,EAAE,kBAAkB,EAAE,QAAQ,CAAC,cAAc,CAAC,EAChE,CAAC;wBACF,SAAS,CACR,yDAAyD,EACzD,KAAK,CACL,CAAC;wBACF,MAAM;oBACP,CAAC;oBACD,MAAM,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;oBACpE,MAAM;gBAEP,KAAK,qBAAqB;oBACzB,IACC,CAAC,KAAK,CAAC,YAAY,EAAE,kBAAkB,EAAE,QAAQ,CAAC,aAAa,CAAC,EAC/D,CAAC;wBACF,SAAS,CACR,qDAAqD,EACrD,KAAK,CACL,CAAC;wBACF,MAAM;oBACP,CAAC;oBACD,CAAC;wBACA,MAAM,MAAM,GAAG,oBAAoB,CAAC;4BACnC,KAAK,EAAE,GAAG,CAAC,KAAK;4BAChB,GAAG,EAAE,GAAG,CAAC,GAAG;4BACZ,KAAK,EAAE,GAAG,CAAC,KAAK;yBAChB,CAAC,CAAC;wBACH,WAAW,CAAC;4BACX,IAAI,EAAE,6BAA6B;4BACnC,SAAS,EAAE,GAAG,CAAC,SAAS;4BACxB,KAAK,EAAE,MAAM,CAAC,KAAK;4BACnB,GAAG,EAAE,MAAM,CAAC,GAAG;4BACf,OAAO,EAAE,MAAM,CAAC,OAAO;4BACvB,SAAS,EAAE,MAAM,CAAC,SAAS;yBAC3B,CAAC,CAAC;oBACJ,CAAC;oBACD,MAAM;gBAEP,KAAK,mBAAmB;oBACvB,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,kBAAkB,EAAE,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;wBACpE,SAAS,CAAC,iDAAiD,EAAE,KAAK,CAAC,CAAC;wBACpE,MAAM;oBACP,CAAC;oBACD,CAAC;wBACA,IAAI,MAAqD,CAAC;wBAC1D,IAAI,CAAC;4BACJ,MAAM,GAAG,MAAM,iBAAiB,CAAC;gCAChC,IAAI,EAAE,GAAG,CAAC,IAAI;gCACd,GAAG,EAAE,GAAG,CAAC,GAAG;gCACZ,MAAM,EAAE,GAAG,CAAC,MAAM;gCAClB,KAAK,EAAE,GAAG,CAAC,KAAK;6BAChB,CAAC,CAAC;wBACJ,CAAC;wBAAC,OAAO,KAAK,EAAE,CAAC;4BAChB,MAAM,OAAO,GACZ,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;4BACxD,SAAS,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;4BACvD,MAAM;wBACP,CAAC;wBACD,WAAW,CAAC;4BACX,IAAI,EAAE,0BAA0B;4BAChC,OAAO,EAAE,GAAG,CAAC,OAAO;4BACpB,IAAI,EAAE,MAAM,CAAC,IAAI;4BACjB,aAAa,EAAE,MAAM,CAAC,aAAa;4BACnC,GAAG,EAAE,MAAM,CAAC,GAAG;4BACf,OAAO,EAAE,MAAM,CAAC,OAAO;4BACvB,UAAU,EAAE,MAAM,CAAC,UAAU;4BAC7B,QAAQ,EAAE,MAAM,CAAC,QAAQ;4BACzB,WAAW,EAAE,MAAM,CAAC,WAAW;4BAC/B,SAAS,EAAE,MAAM,CAAC,SAAS;yBAC3B,CAAC,CAAC;oBACJ,CAAC;oBACD,MAAM;gBAEP,KAAK,0BAA0B;oBAC9B,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,kBAAkB,EAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;wBACrE,SAAS,CACR,yDAAyD,EACzD,KAAK,CACL,CAAC;wBACF,MAAM;oBACP,CAAC;oBACD,MAAM,WAAW,CAAC,KAAK,CAAC;wBACvB,QAAQ,EAAE,GAAG,CAAC,QAAQ;wBACtB,QAAQ,EAAE,GAAG,CAAC,QAAQ;wBACtB,gBAAgB,EAAE,GAAG,CAAC,gBAAgB;wBACtC,gBAAgB,EAAE,GAAG,CAAC,gBAAgB;wBACtC,WAAW,EAAE,GAAG,CAAC,WAAW;wBAC5B,mBAAmB,EAAE,4BAA4B;qBACjD,CAAC,CAAC;oBACH,MAAM;gBAEP,KAAK,yBAAyB;oBAC7B,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,uBAAuB,CAAC,CAAC;oBACxD,MAAM;gBAEP,KAAK,UAAU;oBACd,2BAA2B,CAAC,mCAAmC,CAAC,CAAC;oBACjE,4BAA4B,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;oBACzC,MAAM,eAAe,CAAC,OAAO,CAC5B,mEAAmE,CACnE,CAAC;oBACF,WAAW,CAAC,OAAO,CAClB,8DAA8D,CAC9D,CAAC;oBACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBAChB,MAAM;YACR,CAAC;QACF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC3B,CAAC;IACF,CAAC,CAAC,CAAC;IAEH,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;QACpC,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACnB,yBAAyB,EAAE,CAAC;YAC5B,OAAO,EAAE,CAAC;QACX,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC","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 +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,QAqKxC"}
1
+ {"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../src/cli/help.ts"],"names":[],"mappings":"AAyBA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,QA4MxC"}
package/dist/cli/help.js CHANGED
@@ -83,6 +83,12 @@ export function printHelp(version) {
83
83
  # Use different model
84
84
  maestro --provider openai --model gpt-4o-mini "Help me refactor this code"
85
85
 
86
+ # Use Codex subscription models after \`maestro codex login\`
87
+ maestro --provider openai-codex --model gpt-5.5 "Plan this migration"
88
+
89
+ # Use EvalOps managed gateway models after \`maestro evalops login\`
90
+ maestro --provider evalops --model gpt-4o-mini "Say hello in one sentence"
91
+
86
92
  # Export a portable session log
87
93
  maestro export <session-id> ./session.jsonl --format jsonl
88
94
 
@@ -90,9 +96,23 @@ export function printHelp(version) {
90
96
  maestro export <session-id> ./session.json --format json --redact-secrets
91
97
 
92
98
  # Import a portable session log into this workspace
93
- maestro import ./session.json`)}`;
99
+ maestro import ./session.json
100
+
101
+ # Start a hosted EvalOps runner session and wait for attach readiness
102
+ maestro remote start --workspace ws_123 --repo evalops/foo --branch main --ttl 90m --wait --verify
103
+
104
+ # Run a single-session hosted runtime pod entrypoint
105
+ maestro hosted-runner --runner-session-id mrs_abc --workspace-root /workspace --listen 0.0.0.0:8080
106
+
107
+ # Show usage analytics for the last 7 days
108
+ maestro stats
109
+
110
+ # Show usage analytics for one session
111
+ maestro stats --session <session-id>`)}`;
94
112
  const env = `${sectionHeading("Environment Variables:")}${muted(` GEMINI_API_KEY - Google Gemini API key
95
113
  OPENAI_API_KEY - OpenAI API key
114
+ OPENAI_CODEX_TOKEN - OpenAI Codex ChatGPT access token
115
+ OPENAI_CODEX_ACCOUNT_ID - ChatGPT account id when using a raw Codex token
96
116
  ANTHROPIC_API_KEY - Anthropic API key
97
117
  CLAUDE_CODE_TOKEN - Claude Code access token for --auth claude
98
118
  ANTHROPIC_OAUTH_TOKEN - Alternate env for Claude Code bearer tokens
@@ -107,6 +127,10 @@ export function printHelp(version) {
107
127
  MAESTRO_MEMORY_TEAM_ID - Optional team scope for durable memory service
108
128
  MAESTRO_SHARED_MEMORY_BASE - Shared memory base URL (Cloudflare Durable Objects worker)
109
129
  MAESTRO_SHARED_MEMORY_API_KEY - API key for shared memory service
130
+ MAESTRO_REMOTE_RUNNER_URL - Hosted runner control-plane URL (default: https://runner.evalops.dev)
131
+ MAESTRO_REMOTE_RUNNER_TOKEN - Hosted runner bearer token override
132
+ MAESTRO_REMOTE_RUNNER_ORG_ID - EvalOps organization id for hosted runner sessions
133
+ MAESTRO_REMOTE_RUNNER_WORKSPACE_ID - EvalOps workspace id for hosted runner sessions
110
134
  CODING_AGENT_DIR - Legacy session directory override (fallback)`)}`;
111
135
  const execSection = `${sectionHeading("maestro exec")}${muted(` maestro exec "Summarize recent changes" --json
112
136
 
@@ -136,6 +160,15 @@ export function printHelp(version) {
136
160
  maestro memory audit <id> [n] Show recent sync audit entries
137
161
  maestro memory export <id> Export metrics log as JSONL
138
162
  maestro memory watch [id] [ms] Poll status/metrics continuously`)}`;
163
+ const remoteSection = `${sectionHeading("maestro remote")}${muted(` maestro remote start --workspace <id> --repo <repo> --branch <branch> [--ttl 90m] [--wait] [--verify]
164
+ maestro remote list --workspace <id> [--state running]
165
+ maestro remote attach <session-id> [--verify] [--print-env]
166
+ maestro remote extend <session-id> --ttl 2h
167
+ maestro remote stop <session-id> [--reason <text>]`)}`;
168
+ const hostedRunnerSection = `${sectionHeading("maestro hosted-runner")}${muted(` maestro hosted-runner --runner-session-id <id> --workspace-root <path> [--listen 0.0.0.0:8080]
169
+
170
+ Env mode:
171
+ MAESTRO_RUNNER_SESSION_ID=mrs_abc MAESTRO_WORKSPACE_ROOT=/workspace maestro hosted-runner`)}`;
139
172
  const sessionsSection = `${sectionHeading("Session Metadata")}${muted(` /session favorite|unfavorite Toggle favorite for current session
140
173
  /session summary "<text>" Save a manual summary for current session
141
174
  /sessions summarize <id> Auto-summarize a saved session`)}`;
@@ -169,6 +202,8 @@ export function printHelp(version) {
169
202
  webSection,
170
203
  portabilitySection,
171
204
  memorySection,
205
+ remoteSection,
206
+ hostedRunnerSection,
172
207
  sessionsSection,
173
208
  sessionsDiscovery,
174
209
  `${sectionHeading("Tips")}${badge("Need models?", "maestro models list", "info")}`,
@@ -1 +1 @@
1
- {"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/cli/help.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAE1E;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,SAAS,CAAC,OAAe;IACxC,MAAM,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,KAAK,CAC5C,IAAI,OAAO,gGAAgG,CAC3G,EAAE,CAAC;IACJ,MAAM,KAAK,GAAG,GAAG,cAAc,CAAC,OAAO,CAAC,GAAG,KAAK,CAC/C,iCAAiC,CACjC,EAAE,CAAC;IACJ,MAAM,OAAO,GAAG,GAAG,cAAc,CAAC,SAAS,CAAC,GAAG;QAC9C,4DAA4D;QAC5D,+DAA+D;QAC/D,iEAAiE;QACjE,2EAA2E;QAC3E,4FAA4F;QAC5F,wDAAwD;QACxD,0EAA0E;QAC1E,yEAAyE;QACzE,mEAAmE;QACnE,0EAA0E;QAC1E,+EAA+E;QAC/E,gFAAgF;QAChF,+EAA+E;QAC/E,mDAAmD;QACnD,oDAAoD;QACpD,mDAAmD;QACnD,wDAAwD;QACxD,0DAA0D;QAC1D,wCAAwC;KACxC;SACC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;SACjC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IACf,MAAM,QAAQ,GAAG,GAAG,cAAc,CAAC,UAAU,CAAC,GAAG,KAAK,CACrD;;;;;;;;;;;;;;;;;;;;;;gCAsB8B,CAC9B,EAAE,CAAC;IACJ,MAAM,GAAG,GAAG,GAAG,cAAc,CAAC,wBAAwB,CAAC,GAAG,KAAK,CAC9D;;;;;;;;;;;;;;;;yEAgBuE,CACvE,EAAE,CAAC;IACJ,MAAM,WAAW,GAAG,GAAG,cAAc,CAAC,cAAc,CAAC,GAAG,KAAK,CAC5D;;;;;;;;;oEASkE,CAClE,EAAE,CAAC;IACJ,MAAM,UAAU,GAAG,GAAG,cAAc,CAAC,aAAa,CAAC,GAAG,KAAK,CAC1D;;;;0BAIwB,CACxB,EAAE,CAAC;IACJ,MAAM,kBAAkB,GAAG,GAAG,cAAc,CAAC,qBAAqB,CAAC,GAAG,KAAK,CAC1E;;;;;;;+EAO6E,CAC7E,EAAE,CAAC;IACJ,MAAM,aAAa,GAAG,GAAG,cAAc,CAAC,gBAAgB,CAAC,GAAG,KAAK,CAChE;;;;mEAIiE,CACjE,EAAE,CAAC;IACJ,MAAM,eAAe,GAAG,GAAG,cAAc,CAAC,kBAAkB,CAAC,GAAG,KAAK,CACpE;;mEAEiE,CACjE,EAAE,CAAC;IACJ,MAAM,iBAAiB,GAAG,GAAG,cAAc,CAAC,kBAAkB,CAAC,GAAG,KAAK,CACtE;;2CAEyC,CACzC,EAAE,CAAC;IACJ,MAAM,KAAK,GAAG,GAAG,cAAc,CAAC,iBAAiB,CAAC,GAAG,KAAK,CACzD;;;;;;;;;;;;2FAYyF,CACzF,EAAE,CAAC;IAEJ,MAAM,gBAAgB,GAAG,GAAG,cAAc,CAAC,sBAAsB,CAAC,GAAG,KAAK,CACzE;;;mGAGiG,CACjG,EAAE,CAAC;IAEJ,OAAO,CAAC,GAAG,CACV;QACC,MAAM;QACN,KAAK;QACL,OAAO;QACP,QAAQ;QACR,GAAG;QACH,WAAW;QACX,UAAU;QACV,kBAAkB;QAClB,aAAa;QACb,eAAe;QACf,iBAAiB;QACjB,GAAG,cAAc,CAAC,MAAM,CAAC,GAAG,KAAK,CAChC,cAAc,EACd,qBAAqB,EACrB,MAAM,CACN,EAAE;QACH,gBAAgB;QAChB,KAAK;KACL,CAAC,IAAI,CAAC,MAAM,CAAC,CACd,CAAC;AACH,CAAC","sourcesContent":["/**\n * @fileoverview CLI Help Output Module\n *\n * This module generates and displays the `--help` output for the Maestro CLI.\n * It provides a comprehensive overview of:\n *\n * - **Usage syntax** and common invocation patterns\n * - **Command-line options** for provider, model, session management, etc.\n * - **Environment variables** for API keys and configuration\n * - **Available tools** and their capabilities\n * - **Subcommands** like `maestro exec` for headless execution\n * - **Session management** commands and workflows\n *\n * ## Styling\n *\n * The output uses the application's theme system for consistent terminal styling:\n * - `heading()` - Main title styling\n * - `sectionHeading()` - Section headers\n * - `muted()` - De-emphasized text for descriptions\n * - `badge()` - Highlighted tips and hints\n *\n * @module cli/help\n */\nimport { badge, heading, muted, sectionHeading } from \"../style/theme.js\";\n\n/**\n * Prints the complete CLI help message to stdout.\n *\n * This function is invoked when the user runs `maestro --help` or `maestro -h`.\n * It formats and displays all available options, commands, and usage examples\n * using the terminal theme for consistent styling.\n *\n * @param version - The current Maestro version string (e.g., \"1.2.3\")\n *\n * @example\n * ```typescript\n * import { printHelp } from \"./help.js\";\n * import { version } from \"../../package.json\";\n *\n * if (args.includes(\"--help\")) {\n * printHelp(version);\n * process.exit(0);\n * }\n * ```\n */\nexport function printHelp(version: string) {\n\tconst header = `${heading(\"Maestro\")} ${muted(\n\t\t`v${version} by EvalOps — AI coding assistant with read, list, search, diff, bash, edit, write, todo tools`,\n\t)}`;\n\tconst usage = `${sectionHeading(\"Usage\")}${muted(\n\t\t\"maestro [options] [messages...]\",\n\t)}`;\n\tconst options = `${sectionHeading(\"Options\")}${[\n\t\t\"--provider <name> Provider name (default: anthropic)\",\n\t\t\"-m, --model <id> Model ID (default: claude-sonnet-4-5)\",\n\t\t\"--task-budget <tokens> API-side Anthropic task budget in tokens\",\n\t\t\"--models <patterns> Comma-separated patterns for Ctrl+P model cycling\",\n\t\t\"--tools <names> Comma-separated tool names to enable (e.g., read,search,list,find)\",\n\t\t\"--api-key <key> API key (defaults to env vars)\",\n\t\t\"--system-prompt <text> System prompt (default: coding assistant prompt)\",\n\t\t\"--append-system-prompt <text> Append instructions to the system prompt\",\n\t\t\"--mode <mode> Output mode: text (default), json, or rpc\",\n\t\t\"--auth <mode> Credential mode: auto (default), api-key, claude\",\n\t\t\"--approval-mode <mode> Action approvals: prompt (default in TUI), auto, fail\",\n\t\t\"--sandbox <mode> Sandbox mode: docker, local, none (see docs/SAFETY.md)\",\n\t\t\"--port <n> Port for `maestro web` (defaults to PORT env or 8080)\",\n\t\t\"--continue, -c Continue previous session\",\n\t\t\"--resume, -r Select a session to resume\",\n\t\t\"--session <path> Use specific session file\",\n\t\t\"--no-session Don't save session (ephemeral)\",\n\t\t\"--safe-mode Enable extra safety restrictions\",\n\t\t\"--help, -h Show this help\",\n\t]\n\t\t.map((line) => ` ${muted(line)}`)\n\t\t.join(\"\\n\")}`;\n\tconst examples = `${sectionHeading(\"Examples\")}${muted(\n\t\t` # Interactive mode (no messages = interactive TUI)\n maestro\n\n # Single message\n maestro \"List all .ts files in src/\"\n\n # Multiple messages\n maestro \"Read package.json\" \"What dependencies do we have?\"\n\n # Continue previous session\n maestro --continue \"What did we discuss?\"\n\n # Use different model\n maestro --provider openai --model gpt-4o-mini \"Help me refactor this code\"\n\n # Export a portable session log\n maestro export <session-id> ./session.jsonl --format jsonl\n\n # Export a portable JSON archive with secret redaction\n maestro export <session-id> ./session.json --format json --redact-secrets\n\n # Import a portable session log into this workspace\n maestro import ./session.json`,\n\t)}`;\n\tconst env = `${sectionHeading(\"Environment Variables:\")}${muted(\n\t\t` GEMINI_API_KEY - Google Gemini API key\n OPENAI_API_KEY - OpenAI API key\n ANTHROPIC_API_KEY - Anthropic API key\n CLAUDE_CODE_TOKEN - Claude Code access token for --auth claude\n ANTHROPIC_OAUTH_TOKEN - Alternate env for Claude Code bearer tokens\n MAESTRO_AGENT_DIR - Session storage directory (default: ~/.maestro/agent)\n MAESTRO_SANDBOX_MODE - Sandbox mode: docker, local, none (default: none)\n MAESTRO_CHANGELOG - Set to off/false/hide/hidden/skip/0 to hide startup changelog banner\n MAESTRO_TUI_MINIMAL - Set to 1/true to disable animations and reduce TUI effects (SSH-friendly)\n MAESTRO_TUI_TOOL_MAX_CHARS - Max chars shown per tool output panel (0 = unlimited)\n MAESTRO_TUI_TOOL_MAX_LINES - Max lines shown per tool output panel (0 = unlimited)\n MAESTRO_MEMORY_BASE - Durable memory service base URL\n MAESTRO_MEMORY_ACCESS_TOKEN - Override bearer token for durable memory service\n MAESTRO_MEMORY_TEAM_ID - Optional team scope for durable memory service\n MAESTRO_SHARED_MEMORY_BASE - Shared memory base URL (Cloudflare Durable Objects worker)\n MAESTRO_SHARED_MEMORY_API_KEY - API key for shared memory service\n CODING_AGENT_DIR - Legacy session directory override (fallback)`,\n\t)}`;\n\tconst execSection = `${sectionHeading(\"maestro exec\")}${muted(\n\t\t` maestro exec \"Summarize recent changes\" --json\n\n Flags:\n --json Stream JSONL thread/turn events\n --output-schema <file|json> Validate final assistant JSON against a schema\n --output-last-message <path> Write the final assistant message to disk\n --full-auto | --read-only Force approval policy (auto or fail)\n --sandbox <mode> Run in sandbox: docker, local, none\n --resume <sessionId> Resume a prior exec session by id\n --last Resume the most recent exec session`,\n\t)}`;\n\tconst webSection = `${sectionHeading(\"maestro web\")}${muted(\n\t\t` # Start the bundled web UI + API server\n maestro web\n\n # Use a custom port\n maestro web --port 3000`,\n\t)}`;\n\tconst portabilitySection = `${sectionHeading(\"Session Portability\")}${muted(\n\t\t` maestro export <session-id> [output-path] --format json|jsonl [--redact-secrets]\n maestro import <file.json|file.jsonl>\n\n Notes:\n - json preserves the full session in a portable wrapper object\n - jsonl preserves the append-only session log verbatim unless redaction is requested\n - --redact-secrets scrubs detected credentials from exported payloads\n - import restores the session into the current workspace session directory`,\n\t)}`;\n\tconst memorySection = `${sectionHeading(\"maestro memory\")}${muted(\n\t\t` maestro memory [status] Show shared memory service status\n maestro memory session <id> Show per-session metrics\n maestro memory audit <id> [n] Show recent sync audit entries\n maestro memory export <id> Export metrics log as JSONL\n maestro memory watch [id] [ms] Poll status/metrics continuously`,\n\t)}`;\n\tconst sessionsSection = `${sectionHeading(\"Session Metadata\")}${muted(\n\t\t` /session favorite|unfavorite Toggle favorite for current session\n /session summary \"<text>\" Save a manual summary for current session\n /sessions summarize <id> Auto-summarize a saved session`,\n\t)}`;\n\tconst sessionsDiscovery = `${sectionHeading(\"Session Commands\")}${muted(\n\t\t` /session [info|favorite|unfavorite|summary \"<text>\"]\n /sessions [list|load <id>|favorite <id>|unfavorite <id>|summarize <id>]\n (Also available via TUI command palette)`,\n\t)}`;\n\tconst tools = `${sectionHeading(\"Available Tools\")}${muted(\n\t\t` read - Read file contents\n list - List files in a directory\n find - Fast file search using fd (glob patterns)\n search - Search files with ripgrep-style filtering\n parallel_ripgrep - Run multiple ripgrep patterns in parallel and merge line ranges\n diff - Show git diffs (workspace, staged, or ranges)\n bash - Execute bash commands\n edit - Edit files with find/replace\n write - Write files (creates/overwrites)\n todo - Create TodoWrite-style checklists\n\n Read-only tools: read,list,find,search,parallel_ripgrep,diff,status\n Example: maestro --tools read,list,find,search,parallel_ripgrep,diff \"Analyze this code\"`,\n\t)}`;\n\n\tconst frameworkSection = `${sectionHeading(\"Framework Preference\")}${muted(\n\t\t` /framework <id> Set default stack (fastapi, express, node)\n /framework <id> --workspace Set workspace-scoped default\n /framework list Show available options\n Precedence: policy (locked) > policy > env override > env default > workspace > user file > none`,\n\t)}`;\n\n\tconsole.log(\n\t\t[\n\t\t\theader,\n\t\t\tusage,\n\t\t\toptions,\n\t\t\texamples,\n\t\t\tenv,\n\t\t\texecSection,\n\t\t\twebSection,\n\t\t\tportabilitySection,\n\t\t\tmemorySection,\n\t\t\tsessionsSection,\n\t\t\tsessionsDiscovery,\n\t\t\t`${sectionHeading(\"Tips\")}${badge(\n\t\t\t\t\"Need models?\",\n\t\t\t\t\"maestro models list\",\n\t\t\t\t\"info\",\n\t\t\t)}`,\n\t\t\tframeworkSection,\n\t\t\ttools,\n\t\t].join(\"\\n\\n\"),\n\t);\n}\n"]}
1
+ {"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/cli/help.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @fileoverview CLI Help Output Module\n *\n * This module generates and displays the `--help` output for the Maestro CLI.\n * It provides a comprehensive overview of:\n *\n * - **Usage syntax** and common invocation patterns\n * - **Command-line options** for provider, model, session management, etc.\n * - **Environment variables** for API keys and configuration\n * - **Available tools** and their capabilities\n * - **Subcommands** like `maestro exec` for headless execution\n * - **Session management** commands and workflows\n *\n * ## Styling\n *\n * The output uses the application's theme system for consistent terminal styling:\n * - `heading()` - Main title styling\n * - `sectionHeading()` - Section headers\n * - `muted()` - De-emphasized text for descriptions\n * - `badge()` - Highlighted tips and hints\n *\n * @module cli/help\n */\nimport { badge, heading, muted, sectionHeading } from \"../style/theme.js\";\n\n/**\n * Prints the complete CLI help message to stdout.\n *\n * This function is invoked when the user runs `maestro --help` or `maestro -h`.\n * It formats and displays all available options, commands, and usage examples\n * using the terminal theme for consistent styling.\n *\n * @param version - The current Maestro version string (e.g., \"1.2.3\")\n *\n * @example\n * ```typescript\n * import { printHelp } from \"./help.js\";\n * import { version } from \"../../package.json\";\n *\n * if (args.includes(\"--help\")) {\n * printHelp(version);\n * process.exit(0);\n * }\n * ```\n */\nexport function printHelp(version: string) {\n\tconst header = `${heading(\"Maestro\")} ${muted(\n\t\t`v${version} by EvalOps — AI coding assistant with read, list, search, diff, bash, edit, write, todo tools`,\n\t)}`;\n\tconst usage = `${sectionHeading(\"Usage\")}${muted(\n\t\t\"maestro [options] [messages...]\",\n\t)}`;\n\tconst options = `${sectionHeading(\"Options\")}${[\n\t\t\"--provider <name> Provider name (default: anthropic)\",\n\t\t\"-m, --model <id> Model ID (default: claude-sonnet-4-5)\",\n\t\t\"--task-budget <tokens> API-side Anthropic task budget in tokens\",\n\t\t\"--models <patterns> Comma-separated patterns for Ctrl+P model cycling\",\n\t\t\"--tools <names> Comma-separated tool names to enable (e.g., read,search,list,find)\",\n\t\t\"--api-key <key> API key (defaults to env vars)\",\n\t\t\"--system-prompt <text> System prompt (default: coding assistant prompt)\",\n\t\t\"--append-system-prompt <text> Append instructions to the system prompt\",\n\t\t\"--mode <mode> Output mode: text (default), json, or rpc\",\n\t\t\"--auth <mode> Credential mode: auto (default), api-key, claude\",\n\t\t\"--approval-mode <mode> Action approvals: prompt (default in TUI), auto, fail\",\n\t\t\"--sandbox <mode> Sandbox mode: docker, local, none (see docs/SAFETY.md)\",\n\t\t\"--port <n> Port for `maestro web` (defaults to PORT env or 8080)\",\n\t\t\"--continue, -c Continue previous session\",\n\t\t\"--resume, -r Select a session to resume\",\n\t\t\"--session <path> Use specific session file\",\n\t\t\"--no-session Don't save session (ephemeral)\",\n\t\t\"--safe-mode Enable extra safety restrictions\",\n\t\t\"--help, -h Show this help\",\n\t]\n\t\t.map((line) => ` ${muted(line)}`)\n\t\t.join(\"\\n\")}`;\n\tconst examples = `${sectionHeading(\"Examples\")}${muted(\n\t\t` # Interactive mode (no messages = interactive TUI)\n maestro\n\n # Single message\n maestro \"List all .ts files in src/\"\n\n # Multiple messages\n maestro \"Read package.json\" \"What dependencies do we have?\"\n\n # Continue previous session\n maestro --continue \"What did we discuss?\"\n\n # Use different model\n maestro --provider openai --model gpt-4o-mini \"Help me refactor this code\"\n\n # Use Codex subscription models after \\`maestro codex login\\`\n maestro --provider openai-codex --model gpt-5.5 \"Plan this migration\"\n\n # Use EvalOps managed gateway models after \\`maestro evalops login\\`\n maestro --provider evalops --model gpt-4o-mini \"Say hello in one sentence\"\n\n # Export a portable session log\n maestro export <session-id> ./session.jsonl --format jsonl\n\n # Export a portable JSON archive with secret redaction\n maestro export <session-id> ./session.json --format json --redact-secrets\n\n # Import a portable session log into this workspace\n maestro import ./session.json\n\n # Start a hosted EvalOps runner session and wait for attach readiness\n maestro remote start --workspace ws_123 --repo evalops/foo --branch main --ttl 90m --wait --verify\n\n # Run a single-session hosted runtime pod entrypoint\n maestro hosted-runner --runner-session-id mrs_abc --workspace-root /workspace --listen 0.0.0.0:8080\n\n # Show usage analytics for the last 7 days\n maestro stats\n\n # Show usage analytics for one session\n maestro stats --session <session-id>`,\n\t)}`;\n\tconst env = `${sectionHeading(\"Environment Variables:\")}${muted(\n\t\t` GEMINI_API_KEY - Google Gemini API key\n OPENAI_API_KEY - OpenAI API key\n OPENAI_CODEX_TOKEN - OpenAI Codex ChatGPT access token\n OPENAI_CODEX_ACCOUNT_ID - ChatGPT account id when using a raw Codex token\n ANTHROPIC_API_KEY - Anthropic API key\n CLAUDE_CODE_TOKEN - Claude Code access token for --auth claude\n ANTHROPIC_OAUTH_TOKEN - Alternate env for Claude Code bearer tokens\n MAESTRO_AGENT_DIR - Session storage directory (default: ~/.maestro/agent)\n MAESTRO_SANDBOX_MODE - Sandbox mode: docker, local, none (default: none)\n MAESTRO_CHANGELOG - Set to off/false/hide/hidden/skip/0 to hide startup changelog banner\n MAESTRO_TUI_MINIMAL - Set to 1/true to disable animations and reduce TUI effects (SSH-friendly)\n MAESTRO_TUI_TOOL_MAX_CHARS - Max chars shown per tool output panel (0 = unlimited)\n MAESTRO_TUI_TOOL_MAX_LINES - Max lines shown per tool output panel (0 = unlimited)\n MAESTRO_MEMORY_BASE - Durable memory service base URL\n MAESTRO_MEMORY_ACCESS_TOKEN - Override bearer token for durable memory service\n MAESTRO_MEMORY_TEAM_ID - Optional team scope for durable memory service\n MAESTRO_SHARED_MEMORY_BASE - Shared memory base URL (Cloudflare Durable Objects worker)\n MAESTRO_SHARED_MEMORY_API_KEY - API key for shared memory service\n MAESTRO_REMOTE_RUNNER_URL - Hosted runner control-plane URL (default: https://runner.evalops.dev)\n MAESTRO_REMOTE_RUNNER_TOKEN - Hosted runner bearer token override\n MAESTRO_REMOTE_RUNNER_ORG_ID - EvalOps organization id for hosted runner sessions\n MAESTRO_REMOTE_RUNNER_WORKSPACE_ID - EvalOps workspace id for hosted runner sessions\n CODING_AGENT_DIR - Legacy session directory override (fallback)`,\n\t)}`;\n\tconst execSection = `${sectionHeading(\"maestro exec\")}${muted(\n\t\t` maestro exec \"Summarize recent changes\" --json\n\n Flags:\n --json Stream JSONL thread/turn events\n --output-schema <file|json> Validate final assistant JSON against a schema\n --output-last-message <path> Write the final assistant message to disk\n --full-auto | --read-only Force approval policy (auto or fail)\n --sandbox <mode> Run in sandbox: docker, local, none\n --resume <sessionId> Resume a prior exec session by id\n --last Resume the most recent exec session`,\n\t)}`;\n\tconst webSection = `${sectionHeading(\"maestro web\")}${muted(\n\t\t` # Start the bundled web UI + API server\n maestro web\n\n # Use a custom port\n maestro web --port 3000`,\n\t)}`;\n\tconst portabilitySection = `${sectionHeading(\"Session Portability\")}${muted(\n\t\t` maestro export <session-id> [output-path] --format json|jsonl [--redact-secrets]\n maestro import <file.json|file.jsonl>\n\n Notes:\n - json preserves the full session in a portable wrapper object\n - jsonl preserves the append-only session log verbatim unless redaction is requested\n - --redact-secrets scrubs detected credentials from exported payloads\n - import restores the session into the current workspace session directory`,\n\t)}`;\n\tconst memorySection = `${sectionHeading(\"maestro memory\")}${muted(\n\t\t` maestro memory [status] Show shared memory service status\n maestro memory session <id> Show per-session metrics\n maestro memory audit <id> [n] Show recent sync audit entries\n maestro memory export <id> Export metrics log as JSONL\n maestro memory watch [id] [ms] Poll status/metrics continuously`,\n\t)}`;\n\tconst remoteSection = `${sectionHeading(\"maestro remote\")}${muted(\n\t\t` maestro remote start --workspace <id> --repo <repo> --branch <branch> [--ttl 90m] [--wait] [--verify]\n maestro remote list --workspace <id> [--state running]\n maestro remote attach <session-id> [--verify] [--print-env]\n maestro remote extend <session-id> --ttl 2h\n maestro remote stop <session-id> [--reason <text>]`,\n\t)}`;\n\tconst hostedRunnerSection = `${sectionHeading(\"maestro hosted-runner\")}${muted(\n\t\t` maestro hosted-runner --runner-session-id <id> --workspace-root <path> [--listen 0.0.0.0:8080]\n\n Env mode:\n MAESTRO_RUNNER_SESSION_ID=mrs_abc MAESTRO_WORKSPACE_ROOT=/workspace maestro hosted-runner`,\n\t)}`;\n\tconst sessionsSection = `${sectionHeading(\"Session Metadata\")}${muted(\n\t\t` /session favorite|unfavorite Toggle favorite for current session\n /session summary \"<text>\" Save a manual summary for current session\n /sessions summarize <id> Auto-summarize a saved session`,\n\t)}`;\n\tconst sessionsDiscovery = `${sectionHeading(\"Session Commands\")}${muted(\n\t\t` /session [info|favorite|unfavorite|summary \"<text>\"]\n /sessions [list|load <id>|favorite <id>|unfavorite <id>|summarize <id>]\n (Also available via TUI command palette)`,\n\t)}`;\n\tconst tools = `${sectionHeading(\"Available Tools\")}${muted(\n\t\t` read - Read file contents\n list - List files in a directory\n find - Fast file search using fd (glob patterns)\n search - Search files with ripgrep-style filtering\n parallel_ripgrep - Run multiple ripgrep patterns in parallel and merge line ranges\n diff - Show git diffs (workspace, staged, or ranges)\n bash - Execute bash commands\n edit - Edit files with find/replace\n write - Write files (creates/overwrites)\n todo - Create TodoWrite-style checklists\n\n Read-only tools: read,list,find,search,parallel_ripgrep,diff,status\n Example: maestro --tools read,list,find,search,parallel_ripgrep,diff \"Analyze this code\"`,\n\t)}`;\n\n\tconst frameworkSection = `${sectionHeading(\"Framework Preference\")}${muted(\n\t\t` /framework <id> Set default stack (fastapi, express, node)\n /framework <id> --workspace Set workspace-scoped default\n /framework list Show available options\n Precedence: policy (locked) > policy > env override > env default > workspace > user file > none`,\n\t)}`;\n\n\tconsole.log(\n\t\t[\n\t\t\theader,\n\t\t\tusage,\n\t\t\toptions,\n\t\t\texamples,\n\t\t\tenv,\n\t\t\texecSection,\n\t\t\twebSection,\n\t\t\tportabilitySection,\n\t\t\tmemorySection,\n\t\t\tremoteSection,\n\t\t\thostedRunnerSection,\n\t\t\tsessionsSection,\n\t\t\tsessionsDiscovery,\n\t\t\t`${sectionHeading(\"Tips\")}${badge(\n\t\t\t\t\"Need models?\",\n\t\t\t\t\"maestro models list\",\n\t\t\t\t\"info\",\n\t\t\t)}`,\n\t\t\tframeworkSection,\n\t\t\ttools,\n\t\t].join(\"\\n\\n\"),\n\t);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"jsonl-writer.d.ts","sourceRoot":"","sources":["../../src/cli/jsonl-writer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,KAAK,EACX,UAAU,EAIV,MAAM,mBAAmB,CAAC;AAE3B,MAAM,MAAM,UAAU,GACnB;IACA,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,OAAO,GAAG,KAAK,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,IAAI,GAAG,OAAO,CAAC;CACvB,GACD;IACA,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,OAAO,GAAG,KAAK,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,MAAM,CAAC;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACb,GACD;IACA,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EACJ,eAAe,GACf,kBAAkB,GAClB,WAAW,GACX,aAAa,GACb,aAAa,GACb,UAAU,GACV,YAAY,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;CACd,GACD;IACA,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,IAAI,GAAG,OAAO,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CAClB,GACD;IACA,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEL,qBAAa,gBAAgB;IAE3B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBADN,OAAO,EAAE,OAAO,EAChB,MAAM,GAAE,QAAyB;IAGnD,IAAI,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;CAM7B;AA8BD,MAAM,WAAW,iBAAiB;IACjC,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC;IAChC,oBAAoB,IAAI,MAAM,CAAC;CAC/B;AAED,wBAAgB,uBAAuB,CACtC,MAAM,EAAE,gBAAgB,EACxB,UAAU,EAAE,MAAM,MAAM,GACtB,iBAAiB,CA+JnB;AAED,wBAAgB,YAAY,CAC3B,MAAM,EAAE,gBAAgB,EACxB,UAAU,EAAE,MAAM,MAAM,EACxB,IAAI,EAAE,MAAM,GACV,MAAM,CA0BR;AAED,wBAAgB,eAAe,CAC9B,MAAM,EAAE,gBAAgB,EACxB,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GACtE,IAAI,CAUN;AAED,wBAAgB,aAAa,CAC5B,MAAM,EAAE,gBAAgB,EACxB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,IAAI,GAAG,OAAO,EACtB,SAAS,CAAC,EAAE,MAAM,GAChB,IAAI,CASN"}
1
+ {"version":3,"file":"jsonl-writer.d.ts","sourceRoot":"","sources":["../../src/cli/jsonl-writer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,KAAK,EACX,UAAU,EAIV,MAAM,mBAAmB,CAAC;AAE3B,MAAM,MAAM,UAAU,GACnB;IACA,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,OAAO,GAAG,KAAK,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,IAAI,GAAG,OAAO,CAAC;CACvB,GACD;IACA,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,OAAO,GAAG,KAAK,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,MAAM,CAAC;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACb,GACD;IACA,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EACJ,eAAe,GACf,kBAAkB,GAClB,WAAW,GACX,aAAa,GACb,aAAa,GACb,UAAU,GACV,YAAY,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;CACd,GACD;IACA,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,IAAI,GAAG,OAAO,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CAClB,GACD;IACA,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEL,qBAAa,gBAAgB;IAE3B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBADN,OAAO,EAAE,OAAO,EAChB,MAAM,GAAE,QAAyB;IAGnD,IAAI,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;CAM7B;AA8BD,MAAM,WAAW,iBAAiB;IACjC,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC;IAChC,oBAAoB,IAAI,MAAM,CAAC;CAC/B;AAED,wBAAgB,uBAAuB,CACtC,MAAM,EAAE,gBAAgB,EACxB,UAAU,EAAE,MAAM,MAAM,GACtB,iBAAiB,CA4KnB;AAED,wBAAgB,YAAY,CAC3B,MAAM,EAAE,gBAAgB,EACxB,UAAU,EAAE,MAAM,MAAM,EACxB,IAAI,EAAE,MAAM,GACV,MAAM,CA0BR;AAED,wBAAgB,eAAe,CAC9B,MAAM,EAAE,gBAAgB,EACxB,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GACtE,IAAI,CAUN;AAED,wBAAgB,aAAa,CAC5B,MAAM,EAAE,gBAAgB,EACxB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,IAAI,GAAG,OAAO,EACtB,SAAS,CAAC,EAAE,MAAM,GAChB,IAAI,CASN"}
@@ -121,16 +121,29 @@ export function createAgentJsonlAdapter(writer, nextTurnId) {
121
121
  break;
122
122
  }
123
123
  case "tool_execution_end": {
124
+ const data = {
125
+ toolCallId: event.toolCallId,
126
+ toolName: event.toolName,
127
+ result: event.result,
128
+ isError: event.isError,
129
+ };
130
+ if (event.errorCode) {
131
+ data.errorCode = event.errorCode;
132
+ }
133
+ if (event.approvalRequestId) {
134
+ data.approvalRequestId = event.approvalRequestId;
135
+ }
136
+ if (event.governedOutcome) {
137
+ data.governedOutcome = event.governedOutcome;
138
+ }
139
+ if (event.skillMetadata) {
140
+ data.skillMetadata = event.skillMetadata;
141
+ }
124
142
  writer.emit({
125
143
  type: "item",
126
144
  subtype: "tool_result",
127
145
  timestamp: now(),
128
- data: {
129
- toolCallId: event.toolCallId,
130
- toolName: event.toolName,
131
- result: event.result,
132
- isError: event.isError,
133
- },
146
+ data,
134
147
  });
135
148
  break;
136
149
  }
@@ -1 +1 @@
1
- {"version":3,"file":"jsonl-writer.js","sourceRoot":"","sources":["../../src/cli/jsonl-writer.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Writable } from \"node:stream\";\nimport type {\n\tAgentEvent,\n\tAppMessage,\n\tAssistantMessage,\n\tTextContent,\n} from \"../agent/types.js\";\n\nexport type JsonlEvent =\n\t| {\n\t\t\ttype: \"thread\";\n\t\t\tphase: \"start\" | \"end\";\n\t\t\tthreadId: string;\n\t\t\tsessionId?: string;\n\t\t\ttimestamp: string;\n\t\t\tsandbox?: string;\n\t\t\tcwd?: string;\n\t\t\tstatus?: \"ok\" | \"error\";\n\t }\n\t| {\n\t\t\ttype: \"turn\";\n\t\t\tphase: \"start\" | \"end\";\n\t\t\tturnId: string;\n\t\t\trole: \"user\" | \"assistant\" | \"tool\";\n\t\t\ttimestamp: string;\n\t\t\ttext?: string;\n\t }\n\t| {\n\t\t\ttype: \"item\";\n\t\t\tsubtype:\n\t\t\t\t| \"message_delta\"\n\t\t\t\t| \"message_complete\"\n\t\t\t\t| \"tool_call\"\n\t\t\t\t| \"tool_result\"\n\t\t\t\t| \"tool_update\"\n\t\t\t\t| \"approval\"\n\t\t\t\t| \"tool_retry\";\n\t\t\tturnId?: string;\n\t\t\ttimestamp: string;\n\t\t\tdata?: unknown;\n\t }\n\t| {\n\t\t\ttype: \"done\";\n\t\t\tstatus: \"ok\" | \"error\";\n\t\t\ttimestamp: string;\n\t\t\tsessionId?: string;\n\t }\n\t| {\n\t\t\ttype: \"error\";\n\t\t\tmessage: string;\n\t\t\ttimestamp: string;\n\t\t\tstack?: string;\n\t };\n\nexport class JsonlEventWriter {\n\tconstructor(\n\t\tprivate readonly enabled: boolean,\n\t\tprivate readonly stream: Writable = process.stdout,\n\t) {}\n\n\temit(event: JsonlEvent): void {\n\t\tif (!this.enabled) {\n\t\t\treturn;\n\t\t}\n\t\tthis.stream.write(`${JSON.stringify(event)}\\n`);\n\t}\n}\n\nconst now = (): string => new Date().toISOString();\n\nconst isTextChunk = (chunk: unknown): chunk is TextContent =>\n\ttypeof chunk === \"object\" &&\n\tchunk !== null &&\n\t\"type\" in chunk &&\n\t(chunk as { type?: unknown }).type === \"text\" &&\n\t\"text\" in chunk &&\n\ttypeof (chunk as { text?: unknown }).text === \"string\";\n\nconst extractText = (message: AppMessage | undefined): string => {\n\tif (!message) return \"\";\n\tconst content = (message as { content?: unknown }).content;\n\tif (Array.isArray(content)) {\n\t\treturn content\n\t\t\t.filter(isTextChunk)\n\t\t\t.map((chunk) => chunk.text)\n\t\t\t.join(\"\");\n\t}\n\tif (typeof content === \"string\") {\n\t\treturn content;\n\t}\n\treturn \"\";\n};\n\nconst isAssistantMessage = (message: AppMessage): message is AssistantMessage =>\n\t(message as { role?: unknown }).role === \"assistant\";\n\nexport interface AgentJsonlAdapter {\n\thandle(event: AgentEvent): void;\n\tgetLastAssistantText(): string;\n}\n\nexport function createAgentJsonlAdapter(\n\twriter: JsonlEventWriter,\n\tnextTurnId: () => string,\n): AgentJsonlAdapter {\n\tlet currentAssistantTurn: string | null = null;\n\tlet lastAssistantText = \"\";\n\n\treturn {\n\t\thandle(event: AgentEvent) {\n\t\t\tswitch (event.type) {\n\t\t\t\tcase \"message_start\": {\n\t\t\t\t\tif (!isAssistantMessage(event.message)) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tcurrentAssistantTurn = nextTurnId();\n\t\t\t\t\twriter.emit({\n\t\t\t\t\t\ttype: \"turn\",\n\t\t\t\t\t\tphase: \"start\",\n\t\t\t\t\t\trole: \"assistant\",\n\t\t\t\t\t\tturnId: currentAssistantTurn,\n\t\t\t\t\t\ttimestamp: now(),\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase \"message_update\": {\n\t\t\t\t\tif (!isAssistantMessage(event.message)) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tif (!currentAssistantTurn) {\n\t\t\t\t\t\tcurrentAssistantTurn = nextTurnId();\n\t\t\t\t\t\twriter.emit({\n\t\t\t\t\t\t\ttype: \"turn\",\n\t\t\t\t\t\t\tphase: \"start\",\n\t\t\t\t\t\t\trole: \"assistant\",\n\t\t\t\t\t\t\tturnId: currentAssistantTurn,\n\t\t\t\t\t\t\ttimestamp: now(),\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\twriter.emit({\n\t\t\t\t\t\ttype: \"item\",\n\t\t\t\t\t\tsubtype: \"message_delta\",\n\t\t\t\t\t\tturnId: currentAssistantTurn,\n\t\t\t\t\t\ttimestamp: now(),\n\t\t\t\t\t\tdata: { text: extractText(event.message) },\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase \"message_end\": {\n\t\t\t\t\tif (!isAssistantMessage(event.message)) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tlastAssistantText = extractText(event.message);\n\t\t\t\t\tconst turnId = currentAssistantTurn ?? nextTurnId();\n\t\t\t\t\tconst data: Record<string, unknown> = {\n\t\t\t\t\t\ttext: extractText(event.message),\n\t\t\t\t\t};\n\t\t\t\t\tdata.usage = event.message.usage;\n\t\t\t\t\tdata.stopReason = event.message.stopReason;\n\t\t\t\t\tdata.model = event.message.model;\n\t\t\t\t\tdata.provider = event.message.provider;\n\t\t\t\t\tdata.api = event.message.api;\n\t\t\t\t\twriter.emit({\n\t\t\t\t\t\ttype: \"item\",\n\t\t\t\t\t\tsubtype: \"message_complete\",\n\t\t\t\t\t\tturnId,\n\t\t\t\t\t\ttimestamp: now(),\n\t\t\t\t\t\tdata,\n\t\t\t\t\t});\n\t\t\t\t\twriter.emit({\n\t\t\t\t\t\ttype: \"turn\",\n\t\t\t\t\t\tphase: \"end\",\n\t\t\t\t\t\tturnId,\n\t\t\t\t\t\trole: \"assistant\",\n\t\t\t\t\t\ttimestamp: now(),\n\t\t\t\t\t});\n\t\t\t\t\tcurrentAssistantTurn = null;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase \"tool_execution_start\": {\n\t\t\t\t\twriter.emit({\n\t\t\t\t\t\ttype: \"item\",\n\t\t\t\t\t\tsubtype: \"tool_call\",\n\t\t\t\t\t\ttimestamp: now(),\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\ttoolCallId: event.toolCallId,\n\t\t\t\t\t\t\ttoolName: event.toolName,\n\t\t\t\t\t\t\targs: event.args,\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\t\t\t\tcase \"tool_execution_end\": {\n\t\t\t\t\twriter.emit({\n\t\t\t\t\t\ttype: \"item\",\n\t\t\t\t\t\tsubtype: \"tool_result\",\n\t\t\t\t\t\ttimestamp: now(),\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\ttoolCallId: event.toolCallId,\n\t\t\t\t\t\t\ttoolName: event.toolName,\n\t\t\t\t\t\t\tresult: event.result,\n\t\t\t\t\t\t\tisError: event.isError,\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\t\t\t\tcase \"tool_execution_update\": {\n\t\t\t\t\twriter.emit({\n\t\t\t\t\t\ttype: \"item\",\n\t\t\t\t\t\tsubtype: \"tool_update\",\n\t\t\t\t\t\ttimestamp: now(),\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\ttoolCallId: event.toolCallId,\n\t\t\t\t\t\t\ttoolName: event.toolName,\n\t\t\t\t\t\t\tpartialResult: event.partialResult,\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\t\t\t\tcase \"action_approval_required\": {\n\t\t\t\t\twriter.emit({\n\t\t\t\t\t\ttype: \"item\",\n\t\t\t\t\t\tsubtype: \"approval\",\n\t\t\t\t\t\ttimestamp: now(),\n\t\t\t\t\t\tdata: { request: event.request },\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase \"action_approval_resolved\": {\n\t\t\t\t\twriter.emit({\n\t\t\t\t\t\ttype: \"item\",\n\t\t\t\t\t\tsubtype: \"approval\",\n\t\t\t\t\t\ttimestamp: now(),\n\t\t\t\t\t\tdata: { request: event.request, decision: event.decision },\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase \"tool_retry_required\": {\n\t\t\t\t\twriter.emit({\n\t\t\t\t\t\ttype: \"item\",\n\t\t\t\t\t\tsubtype: \"tool_retry\",\n\t\t\t\t\t\ttimestamp: now(),\n\t\t\t\t\t\tdata: { request: event.request },\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase \"tool_retry_resolved\": {\n\t\t\t\t\twriter.emit({\n\t\t\t\t\t\ttype: \"item\",\n\t\t\t\t\t\tsubtype: \"tool_retry\",\n\t\t\t\t\t\ttimestamp: now(),\n\t\t\t\t\t\tdata: { request: event.request, decision: event.decision },\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tdefault:\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t},\n\t\tgetLastAssistantText() {\n\t\t\treturn lastAssistantText;\n\t\t},\n\t};\n}\n\nexport function emitUserTurn(\n\twriter: JsonlEventWriter,\n\tnextTurnId: () => string,\n\ttext: string,\n): string {\n\tconst turnId = nextTurnId();\n\tconst stamp = now();\n\twriter.emit({\n\t\ttype: \"turn\",\n\t\tphase: \"start\",\n\t\tturnId,\n\t\trole: \"user\",\n\t\ttimestamp: stamp,\n\t\ttext,\n\t});\n\twriter.emit({\n\t\ttype: \"item\",\n\t\tsubtype: \"message_complete\",\n\t\tturnId,\n\t\ttimestamp: now(),\n\t\tdata: { text },\n\t});\n\twriter.emit({\n\t\ttype: \"turn\",\n\t\tphase: \"end\",\n\t\tturnId,\n\t\trole: \"user\",\n\t\ttimestamp: now(),\n\t});\n\treturn turnId;\n}\n\nexport function emitThreadStart(\n\twriter: JsonlEventWriter,\n\tthreadId: string,\n\toptions: { sandboxMode?: string; cwd?: string; sessionId?: string } = {},\n): void {\n\twriter.emit({\n\t\ttype: \"thread\",\n\t\tphase: \"start\",\n\t\tthreadId,\n\t\tsessionId: options.sessionId,\n\t\tsandbox: options.sandboxMode,\n\t\tcwd: options.cwd,\n\t\ttimestamp: now(),\n\t});\n}\n\nexport function emitThreadEnd(\n\twriter: JsonlEventWriter,\n\tthreadId: string,\n\tstatus: \"ok\" | \"error\",\n\tsessionId?: string,\n): void {\n\twriter.emit({\n\t\ttype: \"thread\",\n\t\tphase: \"end\",\n\t\tthreadId,\n\t\tsessionId,\n\t\tstatus,\n\t\ttimestamp: now(),\n\t});\n}\n"]}
1
+ {"version":3,"file":"jsonl-writer.js","sourceRoot":"","sources":["../../src/cli/jsonl-writer.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Writable } from \"node:stream\";\nimport type {\n\tAgentEvent,\n\tAppMessage,\n\tAssistantMessage,\n\tTextContent,\n} from \"../agent/types.js\";\n\nexport type JsonlEvent =\n\t| {\n\t\t\ttype: \"thread\";\n\t\t\tphase: \"start\" | \"end\";\n\t\t\tthreadId: string;\n\t\t\tsessionId?: string;\n\t\t\ttimestamp: string;\n\t\t\tsandbox?: string;\n\t\t\tcwd?: string;\n\t\t\tstatus?: \"ok\" | \"error\";\n\t }\n\t| {\n\t\t\ttype: \"turn\";\n\t\t\tphase: \"start\" | \"end\";\n\t\t\tturnId: string;\n\t\t\trole: \"user\" | \"assistant\" | \"tool\";\n\t\t\ttimestamp: string;\n\t\t\ttext?: string;\n\t }\n\t| {\n\t\t\ttype: \"item\";\n\t\t\tsubtype:\n\t\t\t\t| \"message_delta\"\n\t\t\t\t| \"message_complete\"\n\t\t\t\t| \"tool_call\"\n\t\t\t\t| \"tool_result\"\n\t\t\t\t| \"tool_update\"\n\t\t\t\t| \"approval\"\n\t\t\t\t| \"tool_retry\";\n\t\t\tturnId?: string;\n\t\t\ttimestamp: string;\n\t\t\tdata?: unknown;\n\t }\n\t| {\n\t\t\ttype: \"done\";\n\t\t\tstatus: \"ok\" | \"error\";\n\t\t\ttimestamp: string;\n\t\t\tsessionId?: string;\n\t }\n\t| {\n\t\t\ttype: \"error\";\n\t\t\tmessage: string;\n\t\t\ttimestamp: string;\n\t\t\tstack?: string;\n\t };\n\nexport class JsonlEventWriter {\n\tconstructor(\n\t\tprivate readonly enabled: boolean,\n\t\tprivate readonly stream: Writable = process.stdout,\n\t) {}\n\n\temit(event: JsonlEvent): void {\n\t\tif (!this.enabled) {\n\t\t\treturn;\n\t\t}\n\t\tthis.stream.write(`${JSON.stringify(event)}\\n`);\n\t}\n}\n\nconst now = (): string => new Date().toISOString();\n\nconst isTextChunk = (chunk: unknown): chunk is TextContent =>\n\ttypeof chunk === \"object\" &&\n\tchunk !== null &&\n\t\"type\" in chunk &&\n\t(chunk as { type?: unknown }).type === \"text\" &&\n\t\"text\" in chunk &&\n\ttypeof (chunk as { text?: unknown }).text === \"string\";\n\nconst extractText = (message: AppMessage | undefined): string => {\n\tif (!message) return \"\";\n\tconst content = (message as { content?: unknown }).content;\n\tif (Array.isArray(content)) {\n\t\treturn content\n\t\t\t.filter(isTextChunk)\n\t\t\t.map((chunk) => chunk.text)\n\t\t\t.join(\"\");\n\t}\n\tif (typeof content === \"string\") {\n\t\treturn content;\n\t}\n\treturn \"\";\n};\n\nconst isAssistantMessage = (message: AppMessage): message is AssistantMessage =>\n\t(message as { role?: unknown }).role === \"assistant\";\n\nexport interface AgentJsonlAdapter {\n\thandle(event: AgentEvent): void;\n\tgetLastAssistantText(): string;\n}\n\nexport function createAgentJsonlAdapter(\n\twriter: JsonlEventWriter,\n\tnextTurnId: () => string,\n): AgentJsonlAdapter {\n\tlet currentAssistantTurn: string | null = null;\n\tlet lastAssistantText = \"\";\n\n\treturn {\n\t\thandle(event: AgentEvent) {\n\t\t\tswitch (event.type) {\n\t\t\t\tcase \"message_start\": {\n\t\t\t\t\tif (!isAssistantMessage(event.message)) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tcurrentAssistantTurn = nextTurnId();\n\t\t\t\t\twriter.emit({\n\t\t\t\t\t\ttype: \"turn\",\n\t\t\t\t\t\tphase: \"start\",\n\t\t\t\t\t\trole: \"assistant\",\n\t\t\t\t\t\tturnId: currentAssistantTurn,\n\t\t\t\t\t\ttimestamp: now(),\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase \"message_update\": {\n\t\t\t\t\tif (!isAssistantMessage(event.message)) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tif (!currentAssistantTurn) {\n\t\t\t\t\t\tcurrentAssistantTurn = nextTurnId();\n\t\t\t\t\t\twriter.emit({\n\t\t\t\t\t\t\ttype: \"turn\",\n\t\t\t\t\t\t\tphase: \"start\",\n\t\t\t\t\t\t\trole: \"assistant\",\n\t\t\t\t\t\t\tturnId: currentAssistantTurn,\n\t\t\t\t\t\t\ttimestamp: now(),\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\twriter.emit({\n\t\t\t\t\t\ttype: \"item\",\n\t\t\t\t\t\tsubtype: \"message_delta\",\n\t\t\t\t\t\tturnId: currentAssistantTurn,\n\t\t\t\t\t\ttimestamp: now(),\n\t\t\t\t\t\tdata: { text: extractText(event.message) },\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase \"message_end\": {\n\t\t\t\t\tif (!isAssistantMessage(event.message)) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tlastAssistantText = extractText(event.message);\n\t\t\t\t\tconst turnId = currentAssistantTurn ?? nextTurnId();\n\t\t\t\t\tconst data: Record<string, unknown> = {\n\t\t\t\t\t\ttext: extractText(event.message),\n\t\t\t\t\t};\n\t\t\t\t\tdata.usage = event.message.usage;\n\t\t\t\t\tdata.stopReason = event.message.stopReason;\n\t\t\t\t\tdata.model = event.message.model;\n\t\t\t\t\tdata.provider = event.message.provider;\n\t\t\t\t\tdata.api = event.message.api;\n\t\t\t\t\twriter.emit({\n\t\t\t\t\t\ttype: \"item\",\n\t\t\t\t\t\tsubtype: \"message_complete\",\n\t\t\t\t\t\tturnId,\n\t\t\t\t\t\ttimestamp: now(),\n\t\t\t\t\t\tdata,\n\t\t\t\t\t});\n\t\t\t\t\twriter.emit({\n\t\t\t\t\t\ttype: \"turn\",\n\t\t\t\t\t\tphase: \"end\",\n\t\t\t\t\t\tturnId,\n\t\t\t\t\t\trole: \"assistant\",\n\t\t\t\t\t\ttimestamp: now(),\n\t\t\t\t\t});\n\t\t\t\t\tcurrentAssistantTurn = null;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase \"tool_execution_start\": {\n\t\t\t\t\twriter.emit({\n\t\t\t\t\t\ttype: \"item\",\n\t\t\t\t\t\tsubtype: \"tool_call\",\n\t\t\t\t\t\ttimestamp: now(),\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\ttoolCallId: event.toolCallId,\n\t\t\t\t\t\t\ttoolName: event.toolName,\n\t\t\t\t\t\t\targs: event.args,\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\t\t\t\tcase \"tool_execution_end\": {\n\t\t\t\t\tconst data: Record<string, unknown> = {\n\t\t\t\t\t\ttoolCallId: event.toolCallId,\n\t\t\t\t\t\ttoolName: event.toolName,\n\t\t\t\t\t\tresult: event.result,\n\t\t\t\t\t\tisError: event.isError,\n\t\t\t\t\t};\n\t\t\t\t\tif (event.errorCode) {\n\t\t\t\t\t\tdata.errorCode = event.errorCode;\n\t\t\t\t\t}\n\t\t\t\t\tif (event.approvalRequestId) {\n\t\t\t\t\t\tdata.approvalRequestId = event.approvalRequestId;\n\t\t\t\t\t}\n\t\t\t\t\tif (event.governedOutcome) {\n\t\t\t\t\t\tdata.governedOutcome = event.governedOutcome;\n\t\t\t\t\t}\n\t\t\t\t\tif (event.skillMetadata) {\n\t\t\t\t\t\tdata.skillMetadata = event.skillMetadata;\n\t\t\t\t\t}\n\t\t\t\t\twriter.emit({\n\t\t\t\t\t\ttype: \"item\",\n\t\t\t\t\t\tsubtype: \"tool_result\",\n\t\t\t\t\t\ttimestamp: now(),\n\t\t\t\t\t\tdata,\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase \"tool_execution_update\": {\n\t\t\t\t\twriter.emit({\n\t\t\t\t\t\ttype: \"item\",\n\t\t\t\t\t\tsubtype: \"tool_update\",\n\t\t\t\t\t\ttimestamp: now(),\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\ttoolCallId: event.toolCallId,\n\t\t\t\t\t\t\ttoolName: event.toolName,\n\t\t\t\t\t\t\tpartialResult: event.partialResult,\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\t\t\t\tcase \"action_approval_required\": {\n\t\t\t\t\twriter.emit({\n\t\t\t\t\t\ttype: \"item\",\n\t\t\t\t\t\tsubtype: \"approval\",\n\t\t\t\t\t\ttimestamp: now(),\n\t\t\t\t\t\tdata: { request: event.request },\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase \"action_approval_resolved\": {\n\t\t\t\t\twriter.emit({\n\t\t\t\t\t\ttype: \"item\",\n\t\t\t\t\t\tsubtype: \"approval\",\n\t\t\t\t\t\ttimestamp: now(),\n\t\t\t\t\t\tdata: { request: event.request, decision: event.decision },\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase \"tool_retry_required\": {\n\t\t\t\t\twriter.emit({\n\t\t\t\t\t\ttype: \"item\",\n\t\t\t\t\t\tsubtype: \"tool_retry\",\n\t\t\t\t\t\ttimestamp: now(),\n\t\t\t\t\t\tdata: { request: event.request },\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase \"tool_retry_resolved\": {\n\t\t\t\t\twriter.emit({\n\t\t\t\t\t\ttype: \"item\",\n\t\t\t\t\t\tsubtype: \"tool_retry\",\n\t\t\t\t\t\ttimestamp: now(),\n\t\t\t\t\t\tdata: { request: event.request, decision: event.decision },\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tdefault:\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t},\n\t\tgetLastAssistantText() {\n\t\t\treturn lastAssistantText;\n\t\t},\n\t};\n}\n\nexport function emitUserTurn(\n\twriter: JsonlEventWriter,\n\tnextTurnId: () => string,\n\ttext: string,\n): string {\n\tconst turnId = nextTurnId();\n\tconst stamp = now();\n\twriter.emit({\n\t\ttype: \"turn\",\n\t\tphase: \"start\",\n\t\tturnId,\n\t\trole: \"user\",\n\t\ttimestamp: stamp,\n\t\ttext,\n\t});\n\twriter.emit({\n\t\ttype: \"item\",\n\t\tsubtype: \"message_complete\",\n\t\tturnId,\n\t\ttimestamp: now(),\n\t\tdata: { text },\n\t});\n\twriter.emit({\n\t\ttype: \"turn\",\n\t\tphase: \"end\",\n\t\tturnId,\n\t\trole: \"user\",\n\t\ttimestamp: now(),\n\t});\n\treturn turnId;\n}\n\nexport function emitThreadStart(\n\twriter: JsonlEventWriter,\n\tthreadId: string,\n\toptions: { sandboxMode?: string; cwd?: string; sessionId?: string } = {},\n): void {\n\twriter.emit({\n\t\ttype: \"thread\",\n\t\tphase: \"start\",\n\t\tthreadId,\n\t\tsessionId: options.sessionId,\n\t\tsandbox: options.sandboxMode,\n\t\tcwd: options.cwd,\n\t\ttimestamp: now(),\n\t});\n}\n\nexport function emitThreadEnd(\n\twriter: JsonlEventWriter,\n\tthreadId: string,\n\tstatus: \"ok\" | \"error\",\n\tsessionId?: string,\n): void {\n\twriter.emit({\n\t\ttype: \"thread\",\n\t\tphase: \"end\",\n\t\tthreadId,\n\t\tsessionId,\n\t\tstatus,\n\t\ttimestamp: now(),\n\t});\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"client-tool-controller.d.ts","sourceRoot":"","sources":["../../../src/cli-tui/client-tools/client-tool-controller.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAGnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAEN,KAAK,qBAAqB,EAC1B,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,KAAK,EAEX,oBAAoB,EAEpB,MAAM,gCAAgC,CAAC;AAuFxC,UAAU,2BAA2B;IACpC,iBAAiB,EAAE,oBAAoB,CAAC;IACxC,EAAE,EAAE,GAAG,CAAC;IACR,MAAM,EAAE,YAAY,CAAC;IACrB,eAAe,EAAE,SAAS,CAAC;IAC3B,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,qBAAqB,KAAK,KAAK,CAAC;IAC7D,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACtD,qBAAqB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;CAC5E;AAunBD,qBAAa,oBAAoB;IAOpB,OAAO,CAAC,QAAQ,CAAC,OAAO;IANpC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqC;IAC3D,OAAO,CAAC,MAAM,CAA4C;IAC1D,OAAO,CAAC,KAAK,CAAsB;IACnC,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa;gBAEZ,OAAO,EAAE,2BAA2B;IAMjE,OAAO,IAAI,IAAI;IAIf,OAAO,CAAC,oBAAoB;IAmB5B,OAAO,CAAC,OAAO;IAiBf,OAAO,CAAC,YAAY;IAWpB,OAAO,CAAC,QAAQ;IAiBhB,OAAO,CAAC,WAAW;IAkBnB,OAAO,CAAC,kBAAkB;IA8E1B,OAAO,CAAC,yBAAyB;IA8GjC,OAAO,CAAC,mBAAmB;IA0G3B,OAAO,CAAC,gBAAgB;IAoBxB,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,SAAS;IAQjB,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,gBAAgB;CAUxB"}
1
+ {"version":3,"file":"client-tool-controller.d.ts","sourceRoot":"","sources":["../../../src/cli-tui/client-tools/client-tool-controller.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAGnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAEN,KAAK,qBAAqB,EAC1B,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,KAAK,EAEX,oBAAoB,EAEpB,MAAM,gCAAgC,CAAC;AAuFxC,UAAU,2BAA2B;IACpC,iBAAiB,EAAE,oBAAoB,CAAC;IACxC,EAAE,EAAE,GAAG,CAAC;IACR,MAAM,EAAE,YAAY,CAAC;IACrB,eAAe,EAAE,SAAS,CAAC;IAC3B,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,qBAAqB,KAAK,KAAK,CAAC;IAC7D,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACtD,qBAAqB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;CAC5E;AAqoBD,qBAAa,oBAAoB;IAOpB,OAAO,CAAC,QAAQ,CAAC,OAAO;IANpC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqC;IAC3D,OAAO,CAAC,MAAM,CAA4C;IAC1D,OAAO,CAAC,KAAK,CAAsB;IACnC,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa;gBAEZ,OAAO,EAAE,2BAA2B;IAMjE,OAAO,IAAI,IAAI;IAIf,OAAO,CAAC,oBAAoB;IAmB5B,OAAO,CAAC,OAAO;IAiBf,OAAO,CAAC,YAAY;IAWpB,OAAO,CAAC,QAAQ;IAiBhB,OAAO,CAAC,WAAW;IAkBnB,OAAO,CAAC,kBAAkB;IA8E1B,OAAO,CAAC,yBAAyB;IA8GjC,OAAO,CAAC,mBAAmB;IA0G3B,OAAO,CAAC,gBAAgB;IAoBxB,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,SAAS;IAQjB,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,gBAAgB;CAUxB"}
@@ -336,11 +336,15 @@ function formatQueueSuffix(queueLength) {
336
336
  : `${queueLength} more requests are queued behind this one.`;
337
337
  }
338
338
  function formatAskUserPrompt(question, index, total, queueLength) {
339
+ const optionLines = question.options.flatMap((option, optionIndex) => [
340
+ `${optionIndex + 1}. ${option.label}: ${option.description}`,
341
+ ...formatAskUserOptionPreview(option),
342
+ ]);
339
343
  const lines = [
340
344
  `Question ${index + 1} of ${total}`,
341
345
  `[${question.header}] ${question.question}`,
342
346
  "",
343
- ...question.options.map((option, optionIndex) => `${optionIndex + 1}. ${option.label}: ${option.description}`),
347
+ ...optionLines,
344
348
  `${question.options.length + 1}. Other: type your own answer directly`,
345
349
  "",
346
350
  question.multiSelect
@@ -354,6 +358,18 @@ function formatAskUserPrompt(question, index, total, queueLength) {
354
358
  }
355
359
  return lines.join("\n");
356
360
  }
361
+ function formatAskUserOptionPreview(option) {
362
+ if (!option.preview) {
363
+ return [];
364
+ }
365
+ const title = option.preview.title ? `: ${option.preview.title}` : "";
366
+ const lines = option.preview.body.split(/\r?\n/);
367
+ const bodyLines = lines.slice(0, 12).map((line) => ` ${line}`);
368
+ if (lines.length > bodyLines.length) {
369
+ bodyLines.push(" ...");
370
+ }
371
+ return [` Preview (${option.preview.kind}${title})`, ...bodyLines];
372
+ }
357
373
  function normalizeAskUserAnswer(answer) {
358
374
  const entries = (Array.isArray(answer) ? answer : [answer])
359
375
  .map((entry) => entry.trim())