@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":"policy.js","sourceRoot":"","sources":["../../src/safety/policy.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Enterprise Policy System - Access Control and Safety Enforcement\n *\n * This module implements enterprise-grade policy enforcement for the Composer CLI,\n * enabling organizations to control what tools, models, paths, and network hosts\n * can be accessed during agent execution.\n *\n * ## Policy File Location\n *\n * Policies are loaded from `~/.maestro/policy.json`. This file is typically\n * deployed by enterprise IT and should be protected with appropriate permissions.\n *\n * ## Policy Structure\n *\n * ```json\n * {\n * \"orgId\": \"org-12345\",\n * \"tools\": {\n * \"allowed\": [\"Read\", \"Grep\", \"Glob\"],\n * \"blocked\": [\"Bash\", \"Write\"]\n * },\n * \"models\": {\n * \"allowed\": [\"anthropic/claude-*\"],\n * \"blocked\": [\"openai/*\"]\n * },\n * \"paths\": {\n * \"allowed\": [\"/home/user/projects/**\"],\n * \"blocked\": [\"/etc/**\", \"/root/**\"]\n * },\n * \"network\": {\n * \"allowedHosts\": [\"api.github.com\"],\n * \"blockedHosts\": [\"*.internal.corp\"],\n * \"blockLocalhost\": true,\n * \"blockPrivateIPs\": true\n * },\n * \"limits\": {\n * \"maxTokensPerSession\": 100000,\n * \"maxSessionDurationMinutes\": 60,\n * \"maxConcurrentSessions\": 3\n * }\n * }\n * ```\n *\n * ## Rule Evaluation\n *\n * Policies use an allow/block list pattern with the following evaluation order:\n *\n * 1. If `blocked` list exists and matches → **DENY**\n * 2. If `allowed` list exists and doesn't match → **DENY**\n * 3. Otherwise → **ALLOW**\n *\n * This means:\n * - If only `allowed` is specified, everything else is blocked\n * - If only `blocked` is specified, everything else is allowed\n * - If both are specified, blocked takes precedence\n *\n * ## Pattern Matching\n *\n * Patterns support glob syntax via the `minimatch` library:\n *\n * | Pattern | Matches |\n * |---------------------|--------------------------------------|\n * | `*` | Any single segment |\n * | `**` | Any number of segments |\n * | `*.md` | Any file ending in .md |\n * | `src/** (all .ts)` | Any .ts file under src/ |\n *\n * ## Network Safety\n *\n * Network policies can block:\n * - Specific hosts by name or pattern\n * - Localhost (127.0.0.1, ::1)\n * - Private IP ranges (10.x, 172.16-31.x, 192.168.x)\n *\n * DNS resolution is performed to validate hosts before connection.\n *\n * ## Hot Reloading\n *\n * The policy file is watched for changes and automatically reloaded.\n * This enables policy updates without restarting active sessions.\n *\n * ## Error Handling\n *\n * Policy violations throw `PolicyError` which includes:\n * - The violated rule type (tool, model, path, network)\n * - A user-friendly error message\n * - Context about what was blocked\n *\n * @module safety/policy\n */\n\nimport {\n\ttype FSWatcher,\n\texistsSync,\n\tlstatSync,\n\treadFileSync,\n\twatch,\n} from \"node:fs\";\nimport { join, resolve } from \"node:path\";\nimport { Type } from \"@sinclair/typebox\";\nimport type { ActionApprovalContext } from \"../agent/action-approval.js\";\nimport { PATHS } from \"../config/constants.js\";\nimport { extractDependencies } from \"../utils/dependency-extractor.js\";\nimport { safeJsonParse } from \"../utils/json.js\";\nimport { createLogger } from \"../utils/logger.js\";\nimport { expandHomeDir, resolveRealPath } from \"../utils/path-matcher.js\";\nimport { compileTypeboxSchema } from \"../utils/typebox-ajv.js\";\nimport { dangerousPatterns as shellDangerousPatterns } from \"./bash-safety-analyzer.js\";\nimport { checkModelAccess } from \"./validators/model-policy-validator.js\";\nimport { checkNetworkPolicy } from \"./validators/network-policy-validator.js\";\nimport {\n\tcheckPathPolicy,\n\textractPolicyFilePaths,\n} from \"./validators/path-policy-validator.js\";\n\nconst logger = createLogger(\"safety:policy\");\n\n/**\n * Enterprise policy configuration interface.\n *\n * Defines all available policy controls that organizations can configure\n * to restrict agent behavior according to their security requirements.\n */\nexport interface EnterprisePolicy {\n\t/** Organization identifier for audit logging and policy association */\n\torgId?: string;\n\n\t/** Tool execution restrictions (e.g., block Bash, allow only Read) */\n\ttools?: {\n\t\t/** Whitelist of allowed tool names (glob patterns supported) */\n\t\tallowed?: string[];\n\t\t/** Blacklist of blocked tool names (takes precedence over allowed) */\n\t\tblocked?: string[];\n\t};\n\n\t/** Package/dependency installation restrictions */\n\tdependencies?: {\n\t\t/** Whitelist of allowed package patterns */\n\t\tallowed?: string[];\n\t\t/** Blacklist of blocked package patterns */\n\t\tblocked?: string[];\n\t};\n\n\t/** Model access restrictions (format: \"provider/model-id\") */\n\tmodels?: {\n\t\t/** Whitelist of allowed model patterns (e.g., \"anthropic/*\") */\n\t\tallowed?: string[];\n\t\t/** Blacklist of blocked model patterns */\n\t\tblocked?: string[];\n\t};\n\n\t/** File system path restrictions */\n\tpaths?: {\n\t\t/** Whitelist of allowed path patterns (e.g., \"/home/user/projects/**\") */\n\t\tallowed?: string[];\n\t\t/** Blacklist of blocked path patterns (e.g., \"/etc/**\") */\n\t\tblocked?: string[];\n\t};\n\n\t/** Network access restrictions */\n\tnetwork?: {\n\t\t/** Whitelist of allowed hostnames (e.g., \"api.github.com\") */\n\t\tallowedHosts?: string[];\n\t\t/** Blacklist of blocked hostnames (e.g., \"*.internal.corp\") */\n\t\tblockedHosts?: string[];\n\t\t/** Block access to localhost (127.0.0.1, ::1) */\n\t\tblockLocalhost?: boolean;\n\t\t/** Block access to private IP ranges (10.x, 172.16-31.x, 192.168.x) */\n\t\tblockPrivateIPs?: boolean;\n\t};\n\n\t/**\n\t * Session limits for resource control.\n\t *\n\t * NOTE: These are schema definitions for policy configuration.\n\t * Actual enforcement requires integration with the billing/token-tracker system.\n\t * Currently exposed via getPolicyLimits() for consumers that want to implement limits.\n\t */\n\tlimits?: {\n\t\t/** Maximum tokens per session before termination */\n\t\tmaxTokensPerSession?: number;\n\t\t/** Maximum session duration in minutes */\n\t\tmaxSessionDurationMinutes?: number;\n\t\t/** Maximum concurrent active sessions */\n\t\tmaxConcurrentSessions?: number;\n\t};\n}\n\nconst PolicySchema = Type.Object({\n\torgId: Type.Optional(Type.String()),\n\ttools: Type.Optional(\n\t\tType.Object({\n\t\t\tallowed: Type.Optional(Type.Array(Type.String())),\n\t\t\tblocked: Type.Optional(Type.Array(Type.String())),\n\t\t}),\n\t),\n\tdependencies: Type.Optional(\n\t\tType.Object({\n\t\t\tallowed: Type.Optional(Type.Array(Type.String())),\n\t\t\tblocked: Type.Optional(Type.Array(Type.String())),\n\t\t}),\n\t),\n\tmodels: Type.Optional(\n\t\tType.Object({\n\t\t\tallowed: Type.Optional(Type.Array(Type.String())),\n\t\t\tblocked: Type.Optional(Type.Array(Type.String())),\n\t\t}),\n\t),\n\tpaths: Type.Optional(\n\t\tType.Object({\n\t\t\tallowed: Type.Optional(Type.Array(Type.String())),\n\t\t\tblocked: Type.Optional(Type.Array(Type.String())),\n\t\t}),\n\t),\n\tnetwork: Type.Optional(\n\t\tType.Object({\n\t\t\tallowedHosts: Type.Optional(Type.Array(Type.String())),\n\t\t\tblockedHosts: Type.Optional(Type.Array(Type.String())),\n\t\t\tblockLocalhost: Type.Optional(Type.Boolean()),\n\t\t\tblockPrivateIPs: Type.Optional(Type.Boolean()),\n\t\t}),\n\t),\n\tlimits: Type.Optional(\n\t\tType.Object({\n\t\t\tmaxTokensPerSession: Type.Optional(Type.Number()),\n\t\t\tmaxSessionDurationMinutes: Type.Optional(Type.Number()),\n\t\t\tmaxConcurrentSessions: Type.Optional(Type.Number()),\n\t\t}),\n\t),\n});\n\nconst validatePolicy = compileTypeboxSchema(PolicySchema);\n\nconst getPolicyPath = (): string => join(PATHS.MAESTRO_HOME, \"policy.json\");\n\nlet cachedPolicy: EnterprisePolicy | null = null;\nlet policyWatcher: FSWatcher | undefined;\n\nfunction startPolicyWatcher() {\n\tif (policyWatcher) return;\n\n\ttry {\n\t\tconst policyPath = getPolicyPath();\n\t\t// Only watch if the file exists\n\t\tif (!existsSync(policyPath)) return;\n\n\t\tpolicyWatcher = watch(policyPath, (eventType) => {\n\t\t\tif (eventType === \"rename\") {\n\t\t\t\t// File deleted or renamed\n\t\t\t\tcachedPolicy = null;\n\t\t\t\tif (!existsSync(policyPath)) {\n\t\t\t\t\tpolicyWatcher?.close();\n\t\t\t\t\tpolicyWatcher = undefined;\n\t\t\t\t}\n\t\t\t} else if (eventType === \"change\") {\n\t\t\t\t// File modified - invalidate cache so next loadPolicy() reloads\n\t\t\t\t// We don't proactively reload here to avoid race conditions with partial writes\n\t\t\t\tcachedPolicy = null;\n\t\t\t}\n\t\t});\n\t\t// Prevent the watcher from keeping the process alive\n\t\tpolicyWatcher.unref();\n\t} catch (error) {\n\t\t// Ignore watcher errors (e.g. system limit reached)\n\t\t// We fall back to standard caching behavior\n\t}\n}\n\nexport function loadPolicy(force = false): EnterprisePolicy | null {\n\tconst policyPath = getPolicyPath();\n\t// Check if file exists first - if not, clear cache and return null\n\tif (!existsSync(policyPath)) {\n\t\tcachedPolicy = null;\n\t\tif (policyWatcher) {\n\t\t\tpolicyWatcher.close();\n\t\t\tpolicyWatcher = undefined;\n\t\t}\n\t\treturn null;\n\t}\n\n\tif (cachedPolicy && !force) {\n\t\treturn cachedPolicy;\n\t}\n\n\ttry {\n\t\tconst raw = readFileSync(policyPath, \"utf8\");\n\t\tconst result = safeJsonParse<EnterprisePolicy>(raw);\n\t\tif (result.success) {\n\t\t\tif (!validatePolicy(result.data)) {\n\t\t\t\t// Invalid schema - throw to block access (fail closed)\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Invalid schema: ${validatePolicy.errors?.map((e) => e.message).join(\", \")}`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tcachedPolicy = result.data;\n\t\t\tstartPolicyWatcher();\n\t\t\treturn cachedPolicy;\n\t\t}\n\t\t// Parse error - throw to block access (fail closed)\n\t\tthrow new Error(`JSON parse error: ${result.error.message}`);\n\t} catch (error) {\n\t\tlogger.error(\n\t\t\t\"Critical: Failed to load enterprise policy\",\n\t\t\terror instanceof Error ? error : new Error(String(error)),\n\t\t);\n\t\t// Throw to ensure we fail closed (block access) rather than treating as no policy\n\t\tthrow error;\n\t}\n}\n\nfunction getArgsObject(\n\tcontext: ActionApprovalContext,\n): Record<string, unknown> | null {\n\treturn context.args && typeof context.args === \"object\"\n\t\t? (context.args as Record<string, unknown>)\n\t\t: null;\n}\n\nfunction getStringArg(\n\tcontext: ActionApprovalContext,\n\tkey: string,\n): string | null {\n\tconst args = getArgsObject(context);\n\tif (!args) {\n\t\treturn null;\n\t}\n\tconst value = args[key];\n\treturn typeof value === \"string\" ? value : null;\n}\n\nfunction getCommandArg(context: ActionApprovalContext): string | null {\n\treturn getStringArg(context, \"command\");\n}\n\nexport async function checkPolicy(context: ActionApprovalContext): Promise<{\n\tallowed: boolean;\n\treason?: string;\n}> {\n\tlet policy: EnterprisePolicy | null;\n\ttry {\n\t\tpolicy = loadPolicy();\n\t} catch (error) {\n\t\treturn {\n\t\t\tallowed: false,\n\t\t\treason: `Enterprise policy error: ${error instanceof Error ? error.message : \"Unknown error\"}. Access blocked.`,\n\t\t};\n\t}\n\n\tif (!policy) {\n\t\treturn { allowed: true };\n\t}\n\n\t// 0. Organization Context Check\n\tif (\n\t\tpolicy.orgId &&\n\t\tcontext.user?.orgId &&\n\t\tpolicy.orgId !== context.user.orgId\n\t) {\n\t\tlogger.warn(\"Org mismatch, action blocked\", {\n\t\t\tpolicyOrgId: policy.orgId,\n\t\t\tuserOrgId: context.user.orgId,\n\t\t});\n\t\treturn {\n\t\t\tallowed: false,\n\t\t\treason: `Organization mismatch: This machine is managed by ${policy.orgId}, but you are signed in to ${context.user.orgId}.`,\n\t\t};\n\t}\n\n\t// 1. Tool Constraints\n\tif (policy.tools) {\n\t\tconst { allowed, blocked } = policy.tools;\n\t\tif (allowed && !allowed.includes(context.toolName)) {\n\t\t\treturn {\n\t\t\t\tallowed: false,\n\t\t\t\treason: `Tool \"${context.toolName}\" is not in the approved tools list.`,\n\t\t\t};\n\t\t}\n\t\tif (blocked?.includes(context.toolName)) {\n\t\t\treturn {\n\t\t\t\tallowed: false,\n\t\t\t\treason: `Tool \"${context.toolName}\" is explicitly blocked by enterprise policy.`,\n\t\t\t};\n\t\t}\n\t}\n\n\t// 2. Dangerous Patterns & Dependency Constraints\n\tif (context.toolName === \"bash\" || context.toolName === \"background_tasks\") {\n\t\tconst command = getCommandArg(context);\n\t\tif (command) {\n\t\t\t// Check for obfuscation and dangerous patterns\n\t\t\tconst obfuscationPatterns = [\n\t\t\t\tshellDangerousPatterns.base64Decode,\n\t\t\t\tshellDangerousPatterns.opensslEnc,\n\t\t\t\tshellDangerousPatterns.pythonEval,\n\t\t\t\tshellDangerousPatterns.perlEval,\n\t\t\t\tshellDangerousPatterns.nodeEval,\n\t\t\t\tshellDangerousPatterns.phpEval,\n\t\t\t\tshellDangerousPatterns.rubyEval,\n\t\t\t\tshellDangerousPatterns.evalCall,\n\t\t\t\tshellDangerousPatterns.execCall,\n\t\t\t];\n\t\t\tfor (const pattern of obfuscationPatterns) {\n\t\t\t\tif (pattern.test(command)) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tallowed: false,\n\t\t\t\t\t\treason:\n\t\t\t\t\t\t\t\"Command contains obfuscated or dangerous patterns (e.g. base64 decoding, inline code execution) which are blocked by enterprise policy.\",\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (policy.dependencies) {\n\t\t\t\tconst deps = extractDependencies(command);\n\n\t\t\t\t// Check for shell metacharacters in any package install command,\n\t\t\t\t// even when no explicit package names are extracted (e.g., \"npm install\").\n\t\t\t\t// This prevents bypass via \"npm install && rm -rf /\"\n\t\t\t\tconst isPackageInstallCommand =\n\t\t\t\t\t/(?:npm|yarn|pnpm|bun|pip|pip3|gem|cargo|go\\s+get|composer)\\s+(?:install|add|i\\b)/i.test(\n\t\t\t\t\t\tcommand,\n\t\t\t\t\t);\n\t\t\t\tif (\n\t\t\t\t\t(deps.length > 0 || isPackageInstallCommand) &&\n\t\t\t\t\t/[;&|`$()<>]/.test(command)\n\t\t\t\t) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tallowed: false,\n\t\t\t\t\t\treason:\n\t\t\t\t\t\t\t\"Command contains shell metacharacters which are not allowed by enterprise policy during package installation.\",\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tconst { allowed, blocked } = policy.dependencies;\n\n\t\t\t\tfor (const dep of deps) {\n\t\t\t\t\tif (allowed && !allowed.includes(dep)) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tallowed: false,\n\t\t\t\t\t\t\treason: `Dependency \"${dep}\" is not in the approved dependencies list.`,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\tif (blocked?.includes(dep)) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tallowed: false,\n\t\t\t\t\t\t\treason: `Dependency \"${dep}\" is explicitly blocked by enterprise policy.`,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 3. Path Constraints\n\tif (policy.paths) {\n\t\tconst filePaths = extractPolicyFilePaths(context);\n\t\tconst pathCheck = checkPathPolicy(filePaths, policy.paths);\n\t\tif (!pathCheck.allowed) {\n\t\t\treturn pathCheck;\n\t\t}\n\t}\n\n\t// 4. Network Constraints\n\tif (policy.network) {\n\t\tconst networkCheck = await checkNetworkPolicy(context, policy.network);\n\t\tif (!networkCheck.allowed) {\n\t\t\treturn networkCheck;\n\t\t}\n\t}\n\n\t// 5. Session Limits\n\tif (policy.limits && context.session) {\n\t\tconst { maxSessionDurationMinutes } = policy.limits;\n\t\tif (maxSessionDurationMinutes && maxSessionDurationMinutes > 0) {\n\t\t\tconst durationMinutes =\n\t\t\t\t(Date.now() - context.session.startedAt.getTime()) / 1000 / 60;\n\t\t\tif (durationMinutes > maxSessionDurationMinutes) {\n\t\t\t\treturn {\n\t\t\t\t\tallowed: false,\n\t\t\t\t\treason: `Session duration limit exceeded (${Math.floor(durationMinutes)}/${maxSessionDurationMinutes} minutes). Please start a new session.`,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { allowed: true };\n}\n\nexport class PolicyError extends Error {\n\tconstructor(message: string) {\n\t\tsuper(message);\n\t\tthis.name = \"PolicyError\";\n\t}\n}\n\n/**\n * Check if a model is allowed by policy\n * Called separately from tool checks since model selection happens at a different time\n */\nexport function checkModelPolicy(modelId: string): {\n\tallowed: boolean;\n\treason?: string;\n} {\n\tlet policy: EnterprisePolicy | null;\n\ttry {\n\t\tpolicy = loadPolicy();\n\t} catch (error) {\n\t\treturn {\n\t\t\tallowed: false,\n\t\t\treason: `Enterprise policy error: ${error instanceof Error ? error.message : \"Unknown error\"}. Model blocked.`,\n\t\t};\n\t}\n\n\tif (!policy?.models) {\n\t\treturn { allowed: true };\n\t}\n\n\treturn checkModelAccess(modelId, policy.models);\n}\n\n/**\n * Check if the current session has exceeded policy limits\n */\nexport function checkSessionLimits(\n\tsession: { startedAt: Date },\n\tusage?: { tokenCount?: number; activeSessionCount?: number },\n): {\n\tallowed: boolean;\n\treason?: string;\n} {\n\ttry {\n\t\tconst limits = getPolicyLimits();\n\t\tif (!limits) return { allowed: true };\n\n\t\t// Check duration limit\n\t\tif (\n\t\t\tlimits.maxSessionDurationMinutes &&\n\t\t\tlimits.maxSessionDurationMinutes > 0\n\t\t) {\n\t\t\tconst durationMinutes =\n\t\t\t\t(Date.now() - session.startedAt.getTime()) / 1000 / 60;\n\t\t\tif (durationMinutes > limits.maxSessionDurationMinutes) {\n\t\t\t\treturn {\n\t\t\t\t\tallowed: false,\n\t\t\t\t\treason: `Session duration limit exceeded (${Math.floor(durationMinutes)}/${limits.maxSessionDurationMinutes} minutes). Please start a new session.`,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\t// Check token limit\n\t\tif (limits.maxTokensPerSession && limits.maxTokensPerSession > 0) {\n\t\t\tif (usage?.tokenCount !== undefined) {\n\t\t\t\tif (usage.tokenCount > limits.maxTokensPerSession) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tallowed: false,\n\t\t\t\t\t\treason: `Session token limit exceeded (${usage.tokenCount}/${limits.maxTokensPerSession} tokens). Please start a new session.`,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Usage undefined but limit is set - should we block?\n\t\t\t\t// To be safe (fail-closed) for strict limits, we probably should if we can't verify compliance.\n\t\t\t\t// However, if usage is undefined because metrics are disabled/failing, this might be too aggressive.\n\t\t\t\t// Given user feedback \"Fail-Open Error Handling\", we should warn or block.\n\t\t\t\t// Let's block if we can't verify usage against a set limit.\n\t\t\t\treturn {\n\t\t\t\t\tallowed: false,\n\t\t\t\t\treason: `Session token limit is active (${limits.maxTokensPerSession}) but token usage data is unavailable. Access blocked for safety.`,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\t// Check concurrent sessions limit\n\t\tif (limits.maxConcurrentSessions && limits.maxConcurrentSessions > 0) {\n\t\t\tif (usage?.activeSessionCount !== undefined) {\n\t\t\t\tif (usage.activeSessionCount > limits.maxConcurrentSessions) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tallowed: false,\n\t\t\t\t\t\treason: `Concurrent session limit exceeded (${usage.activeSessionCount}/${limits.maxConcurrentSessions}). Please close existing sessions before starting a new one.`,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Same fail-closed logic for concurrent sessions\n\t\t\t\treturn {\n\t\t\t\t\tallowed: false,\n\t\t\t\t\treason: `Concurrent session limit is active (${limits.maxConcurrentSessions}) but session count data is unavailable. Access blocked for safety.`,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\treturn { allowed: true };\n\t} catch (error) {\n\t\treturn {\n\t\t\tallowed: false,\n\t\t\treason: `Policy error checking session limits: ${error}`,\n\t\t};\n\t}\n}\n\n/**\n * Get the current policy limits\n */\nexport function getPolicyLimits(): EnterprisePolicy[\"limits\"] | null {\n\t// Catch errors and return null (no limits) to prevent crashing callers.\n\t// Strict enforcement should rely on checkSessionLimits() which handles its own loading.\n\ttry {\n\t\tconst policy = loadPolicy();\n\t\treturn policy?.limits ?? null;\n\t} catch {\n\t\treturn null;\n\t}\n}\n\n/**\n * Get the full loaded policy (for admin UI display)\n */\nexport function getCurrentPolicy(): EnterprisePolicy | null {\n\ttry {\n\t\treturn loadPolicy();\n\t} catch {\n\t\treturn null;\n\t}\n}\n"]}
1
+ {"version":3,"file":"policy.js","sourceRoot":"","sources":["../../src/safety/policy.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Enterprise Policy System - Access Control and Safety Enforcement\n *\n * This module implements enterprise-grade policy enforcement for the Composer CLI,\n * enabling organizations to control what tools, models, paths, and network hosts\n * can be accessed during agent execution.\n *\n * ## Policy File Location\n *\n * Policies are loaded from `~/.maestro/policy.json` (or the legacy Composer\n * policy file as a fallback) and `.maestro/workspace.toml` in the current\n * workspace. The global JSON file is typically deployed by enterprise IT and\n * should be protected with appropriate permissions. Workspace TOML applies a\n * stricter project-specific layer.\n *\n * ## Policy Structure\n *\n * ```json\n * {\n * \"orgId\": \"org-12345\",\n * \"tools\": {\n * \"allowed\": [\"Read\", \"Grep\", \"Glob\"],\n * \"blocked\": [\"Bash\", \"Write\"]\n * },\n * \"models\": {\n * \"allowed\": [\"anthropic/claude-*\"],\n * \"blocked\": [\"openai/*\"]\n * },\n * \"paths\": {\n * \"allowed\": [\"/home/user/projects/**\"],\n * \"blocked\": [\"/etc/**\", \"/root/**\"]\n * },\n * \"network\": {\n * \"allowedHosts\": [\"api.github.com\"],\n * \"blockedHosts\": [\"*.internal.corp\"],\n * \"blockLocalhost\": true,\n * \"blockPrivateIPs\": true\n * },\n * \"limits\": {\n * \"maxTokensPerSession\": 100000,\n * \"maxSessionDurationMinutes\": 60,\n * \"maxConcurrentSessions\": 3\n * }\n * }\n * ```\n *\n * Workspace policies use TOML keys such as `allowed_models`, `blocked_tools`,\n * `file_boundaries`, and `max_tokens_per_session`.\n *\n * ## Rule Evaluation\n *\n * Policies use an allow/block list pattern with the following evaluation order:\n *\n * 1. If `blocked` list exists and matches → **DENY**\n * 2. If `allowed` list exists and doesn't match → **DENY**\n * 3. Otherwise → **ALLOW**\n *\n * This means:\n * - If only `allowed` is specified, everything else is blocked\n * - If only `blocked` is specified, everything else is allowed\n * - If both are specified, blocked takes precedence\n *\n * ## Pattern Matching\n *\n * Patterns support glob syntax via the `minimatch` library:\n *\n * | Pattern | Matches |\n * |---------------------|--------------------------------------|\n * | `*` | Any single segment |\n * | `**` | Any number of segments |\n * | `*.md` | Any file ending in .md |\n * | `src/** (all .ts)` | Any .ts file under src/ |\n *\n * ## Network Safety\n *\n * Network policies can block:\n * - Specific hosts by name or pattern\n * - Localhost (127.0.0.1, ::1)\n * - Private IP ranges (10.x, 172.16-31.x, 192.168.x)\n *\n * DNS resolution is performed to validate hosts before connection.\n *\n * ## Hot Reloading\n *\n * The policy file is watched for changes and automatically reloaded.\n * This enables policy updates without restarting active sessions.\n *\n * ## Error Handling\n *\n * Policy violations throw `PolicyError` which includes:\n * - The violated rule type (tool, model, path, network)\n * - A user-friendly error message\n * - Context about what was blocked\n *\n * @module safety/policy\n */\n\nimport {\n\ttype FSWatcher,\n\texistsSync,\n\tlstatSync,\n\treadFileSync,\n\twatch,\n} from \"node:fs\";\nimport { dirname, join, resolve } from \"node:path\";\nimport { Type } from \"@sinclair/typebox\";\nimport { parse as parseTOML } from \"smol-toml\";\nimport type { ActionApprovalContext } from \"../agent/action-approval.js\";\nimport { PATHS } from \"../config/constants.js\";\nimport { extractDependencies } from \"../utils/dependency-extractor.js\";\nimport { safeJsonParse } from \"../utils/json.js\";\nimport { createLogger } from \"../utils/logger.js\";\nimport { getHomeDir, resolveEnvPath } from \"../utils/path-expansion.js\";\nimport { expandHomeDir, resolveRealPath } from \"../utils/path-matcher.js\";\nimport { uniquePaths } from \"../utils/path-utils.js\";\nimport { compileTypeboxSchema } from \"../utils/typebox-ajv.js\";\nimport { dangerousPatterns as shellDangerousPatterns } from \"./bash-safety-analyzer.js\";\nimport { checkModelAccess } from \"./validators/model-policy-validator.js\";\nimport { checkNetworkPolicy } from \"./validators/network-policy-validator.js\";\nimport {\n\tcheckPathPolicy,\n\textractPolicyFilePaths,\n} from \"./validators/path-policy-validator.js\";\n\nconst logger = createLogger(\"safety:policy\");\n\n/**\n * Enterprise policy configuration interface.\n *\n * Defines all available policy controls that organizations can configure\n * to restrict agent behavior according to their security requirements.\n */\nexport interface EnterprisePolicy {\n\t/** Organization identifier for audit logging and policy association */\n\torgId?: string;\n\n\t/** Tool execution restrictions (e.g., block Bash, allow only Read) */\n\ttools?: {\n\t\t/** Whitelist of allowed tool names (glob patterns supported) */\n\t\tallowed?: string[];\n\t\t/** Blacklist of blocked tool names (takes precedence over allowed) */\n\t\tblocked?: string[];\n\t};\n\n\t/** Package/dependency installation restrictions */\n\tdependencies?: {\n\t\t/** Whitelist of allowed package patterns */\n\t\tallowed?: string[];\n\t\t/** Blacklist of blocked package patterns */\n\t\tblocked?: string[];\n\t};\n\n\t/** Model access restrictions (format: \"provider/model-id\") */\n\tmodels?: {\n\t\t/** Whitelist of allowed model patterns (e.g., \"anthropic/*\") */\n\t\tallowed?: string[];\n\t\t/** Blacklist of blocked model patterns */\n\t\tblocked?: string[];\n\t};\n\n\t/** Required skill names for workspace-controlled workflows */\n\tskills?: {\n\t\t/** Skills that must be available for this workspace */\n\t\trequired?: string[];\n\t};\n\n\t/** File system path restrictions */\n\tpaths?: {\n\t\t/** Whitelist of allowed path patterns (e.g., \"/home/user/projects/**\") */\n\t\tallowed?: string[];\n\t\t/** Blacklist of blocked path patterns (e.g., \"/etc/**\") */\n\t\tblocked?: string[];\n\t};\n\n\t/** Network access restrictions */\n\tnetwork?: {\n\t\t/** Whitelist of allowed hostnames (e.g., \"api.github.com\") */\n\t\tallowedHosts?: string[];\n\t\t/** Blacklist of blocked hostnames (e.g., \"*.internal.corp\") */\n\t\tblockedHosts?: string[];\n\t\t/** Block access to localhost (127.0.0.1, ::1) */\n\t\tblockLocalhost?: boolean;\n\t\t/** Block access to private IP ranges (10.x, 172.16-31.x, 192.168.x) */\n\t\tblockPrivateIPs?: boolean;\n\t};\n\n\t/**\n\t * Session limits for resource control.\n\t *\n\t * NOTE: These are schema definitions for policy configuration.\n\t * Actual enforcement requires integration with the billing/token-tracker system.\n\t * Currently exposed via getPolicyLimits() for consumers that want to implement limits.\n\t */\n\tlimits?: {\n\t\t/** Maximum tokens per session before termination */\n\t\tmaxTokensPerSession?: number;\n\t\t/** Maximum session duration in minutes */\n\t\tmaxSessionDurationMinutes?: number;\n\t\t/** Maximum concurrent active sessions */\n\t\tmaxConcurrentSessions?: number;\n\t};\n}\n\nconst PolicySchema = Type.Object({\n\torgId: Type.Optional(Type.String()),\n\ttools: Type.Optional(\n\t\tType.Object({\n\t\t\tallowed: Type.Optional(Type.Array(Type.String())),\n\t\t\tblocked: Type.Optional(Type.Array(Type.String())),\n\t\t}),\n\t),\n\tdependencies: Type.Optional(\n\t\tType.Object({\n\t\t\tallowed: Type.Optional(Type.Array(Type.String())),\n\t\t\tblocked: Type.Optional(Type.Array(Type.String())),\n\t\t}),\n\t),\n\tmodels: Type.Optional(\n\t\tType.Object({\n\t\t\tallowed: Type.Optional(Type.Array(Type.String())),\n\t\t\tblocked: Type.Optional(Type.Array(Type.String())),\n\t\t}),\n\t),\n\tskills: Type.Optional(\n\t\tType.Object({\n\t\t\trequired: Type.Optional(Type.Array(Type.String())),\n\t\t}),\n\t),\n\tpaths: Type.Optional(\n\t\tType.Object({\n\t\t\tallowed: Type.Optional(Type.Array(Type.String())),\n\t\t\tblocked: Type.Optional(Type.Array(Type.String())),\n\t\t}),\n\t),\n\tnetwork: Type.Optional(\n\t\tType.Object({\n\t\t\tallowedHosts: Type.Optional(Type.Array(Type.String())),\n\t\t\tblockedHosts: Type.Optional(Type.Array(Type.String())),\n\t\t\tblockLocalhost: Type.Optional(Type.Boolean()),\n\t\t\tblockPrivateIPs: Type.Optional(Type.Boolean()),\n\t\t}),\n\t),\n\tlimits: Type.Optional(\n\t\tType.Object({\n\t\t\tmaxTokensPerSession: Type.Optional(Type.Number()),\n\t\t\tmaxSessionDurationMinutes: Type.Optional(Type.Number()),\n\t\t\tmaxConcurrentSessions: Type.Optional(Type.Number()),\n\t\t}),\n\t),\n});\n\nconst validatePolicy = compileTypeboxSchema(PolicySchema);\n\ntype PolicyFormat = \"json\" | \"toml\";\ntype PolicyScope = \"user\" | \"workspace\";\ntype UnknownRecord = Record<string, unknown>;\n\ninterface PolicySource {\n\tpath: string;\n\tformat: PolicyFormat;\n\tscope: PolicyScope;\n}\n\nconst getUserPolicyPath = (): string => join(PATHS.MAESTRO_HOME, \"policy.json\");\nconst getLegacyUserPolicyPath = (): string =>\n\tjoin(getHomeDir(), \".composer\", \"policy.json\");\n\nfunction getUserPolicyPathCandidates(): string[] {\n\treturn uniquePaths([\n\t\tresolveEnvPath(process.env.MAESTRO_ENTERPRISE_POLICY_PATH),\n\t\tresolveEnvPath(process.env.MAESTRO_POLICY_PATH),\n\t\tgetUserPolicyPath(),\n\t\tgetLegacyUserPolicyPath(),\n\t]);\n}\n\nfunction getEffectiveUserPolicyPath(): string | null {\n\tconst candidates = getUserPolicyPathCandidates();\n\treturn candidates.find(isPolicyFile) ?? null;\n}\n\nconst isPolicyFile = (path: string): boolean => {\n\tif (!existsSync(path)) return false;\n\ttry {\n\t\treturn lstatSync(path).isFile();\n\t} catch {\n\t\treturn false;\n\t}\n};\n\nconst getWorkspacePolicyPath = (): string | null => {\n\tlet current = resolve(process.cwd());\n\twhile (true) {\n\t\tconst candidate = join(current, \".maestro\", \"workspace.toml\");\n\t\tif (isPolicyFile(candidate)) {\n\t\t\treturn candidate;\n\t\t}\n\t\tconst parent = dirname(current);\n\t\tif (parent === current) {\n\t\t\treturn null;\n\t\t}\n\t\tcurrent = parent;\n\t}\n};\n\nlet cachedPolicy: EnterprisePolicy | null = null;\nlet cachedPolicyKey: string | null = null;\nlet cachedPolicyLayers: EnterprisePolicy[] = [];\nlet policyWatchers: FSWatcher[] = [];\n\nfunction isRecord(value: unknown): value is UnknownRecord {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction getPolicySources(): PolicySource[] {\n\tconst sources: PolicySource[] = [];\n\tconst userPolicyPath = getEffectiveUserPolicyPath();\n\tif (userPolicyPath) {\n\t\tsources.push({ path: userPolicyPath, format: \"json\", scope: \"user\" });\n\t}\n\n\tconst workspacePolicyPath = getWorkspacePolicyPath();\n\tif (workspacePolicyPath) {\n\t\tsources.push({\n\t\t\tpath: workspacePolicyPath,\n\t\t\tformat: \"toml\",\n\t\t\tscope: \"workspace\",\n\t\t});\n\t}\n\treturn sources;\n}\n\nfunction getPolicyCacheKey(sources: PolicySource[]): string {\n\treturn sources\n\t\t.map((source) => `${source.scope}:${source.format}:${source.path}`)\n\t\t.join(\"|\");\n}\n\nfunction closePolicyWatchers() {\n\tfor (const watcher of policyWatchers) {\n\t\twatcher.close();\n\t}\n\tpolicyWatchers = [];\n}\n\nfunction startPolicyWatchers(sources: PolicySource[]) {\n\tif (policyWatchers.length > 0) return;\n\n\tfor (const source of sources) {\n\t\ttry {\n\t\t\t// Only watch if the file exists\n\t\t\tif (!isPolicyFile(source.path)) continue;\n\n\t\t\tconst watcher = watch(source.path, (eventType) => {\n\t\t\t\tif (eventType === \"rename\") {\n\t\t\t\t\t// File deleted or renamed\n\t\t\t\t\tcachedPolicy = null;\n\t\t\t\t\tcachedPolicyKey = null;\n\t\t\t\t\tif (!isPolicyFile(source.path)) {\n\t\t\t\t\t\tclosePolicyWatchers();\n\t\t\t\t\t}\n\t\t\t\t} else if (eventType === \"change\") {\n\t\t\t\t\t// File modified - invalidate cache so next loadPolicy() reloads\n\t\t\t\t\t// We don't proactively reload here to avoid race conditions with partial writes\n\t\t\t\t\tcachedPolicy = null;\n\t\t\t\t\tcachedPolicyKey = null;\n\t\t\t\t}\n\t\t\t});\n\t\t\t// Prevent the watcher from keeping the process alive\n\t\t\twatcher.unref();\n\t\t\tpolicyWatchers.push(watcher);\n\t\t} catch (error) {\n\t\t\t// Ignore watcher errors (e.g. system limit reached)\n\t\t\t// We fall back to standard caching behavior\n\t\t}\n\t}\n}\n\nfunction readStringArray(\n\tsource: UnknownRecord,\n\tkey: string,\n): string[] | undefined {\n\tif (!(key in source)) return undefined;\n\n\tconst value = source[key];\n\tif (\n\t\t!Array.isArray(value) ||\n\t\t!value.every((entry) => typeof entry === \"string\")\n\t) {\n\t\tthrow new Error(\n\t\t\t`Workspace policy key \"${key}\" must be an array of strings`,\n\t\t);\n\t}\n\treturn value;\n}\n\nfunction readOptionalString(\n\tsource: UnknownRecord,\n\tkey: string,\n): string | undefined {\n\tif (!(key in source)) return undefined;\n\n\tconst value = source[key];\n\tif (typeof value !== \"string\") {\n\t\tthrow new Error(`Workspace policy key \"${key}\" must be a string`);\n\t}\n\treturn value;\n}\n\nfunction readOptionalNumber(\n\tsource: UnknownRecord,\n\tkey: string,\n): number | undefined {\n\tif (!(key in source)) return undefined;\n\n\tconst value = source[key];\n\tif (typeof value !== \"number\") {\n\t\tthrow new Error(`Workspace policy key \"${key}\" must be a number`);\n\t}\n\treturn value;\n}\n\nfunction readOptionalBoolean(\n\tsource: UnknownRecord,\n\tkey: string,\n): boolean | undefined {\n\tif (!(key in source)) return undefined;\n\n\tconst value = source[key];\n\tif (typeof value !== \"boolean\") {\n\t\tthrow new Error(`Workspace policy key \"${key}\" must be a boolean`);\n\t}\n\treturn value;\n}\n\nfunction readOptionalRecord(\n\tsource: UnknownRecord,\n\tkey: string,\n): UnknownRecord | undefined {\n\tif (!(key in source)) return undefined;\n\n\tconst value = source[key];\n\tif (!isRecord(value)) {\n\t\tthrow new Error(`Workspace policy key \"${key}\" must be a table`);\n\t}\n\treturn value;\n}\n\nfunction selectWorkspacePolicyRoot(parsed: unknown): UnknownRecord {\n\tif (!isRecord(parsed)) {\n\t\tthrow new Error(\"Workspace policy must be a TOML table\");\n\t}\n\n\tconst nestedPolicy = parsed.policy;\n\tif (nestedPolicy === undefined) {\n\t\treturn parsed;\n\t}\n\tif (!isRecord(nestedPolicy)) {\n\t\tthrow new Error('Workspace policy key \"policy\" must be a table');\n\t}\n\treturn nestedPolicy;\n}\n\nfunction getWorkspaceStringArray(\n\tsource: UnknownRecord,\n\ttableName: string,\n\ttableKey: string,\n\tflatKey: string,\n): string[] | undefined {\n\tconst flatValue = readStringArray(source, flatKey);\n\tif (flatValue !== undefined) return flatValue;\n\n\tconst table = readOptionalRecord(source, tableName);\n\treturn table ? readStringArray(table, tableKey) : undefined;\n}\n\nfunction mapWorkspacePolicy(parsed: unknown): EnterprisePolicy {\n\tconst source = selectWorkspacePolicyRoot(parsed);\n\tconst policy: EnterprisePolicy = {};\n\n\tconst orgId = readOptionalString(source, \"org_id\");\n\tif (orgId !== undefined) {\n\t\tpolicy.orgId = orgId;\n\t}\n\n\tconst allowedTools = getWorkspaceStringArray(\n\t\tsource,\n\t\t\"tools\",\n\t\t\"allowed\",\n\t\t\"allowed_tools\",\n\t);\n\tconst blockedTools = getWorkspaceStringArray(\n\t\tsource,\n\t\t\"tools\",\n\t\t\"blocked\",\n\t\t\"blocked_tools\",\n\t);\n\tif (allowedTools !== undefined || blockedTools !== undefined) {\n\t\tpolicy.tools = {\n\t\t\t...(allowedTools !== undefined ? { allowed: allowedTools } : {}),\n\t\t\t...(blockedTools !== undefined ? { blocked: blockedTools } : {}),\n\t\t};\n\t}\n\n\tconst allowedModels = getWorkspaceStringArray(\n\t\tsource,\n\t\t\"models\",\n\t\t\"allowed\",\n\t\t\"allowed_models\",\n\t);\n\tconst blockedModels = getWorkspaceStringArray(\n\t\tsource,\n\t\t\"models\",\n\t\t\"blocked\",\n\t\t\"blocked_models\",\n\t);\n\tif (allowedModels !== undefined || blockedModels !== undefined) {\n\t\tpolicy.models = {\n\t\t\t...(allowedModels !== undefined ? { allowed: allowedModels } : {}),\n\t\t\t...(blockedModels !== undefined ? { blocked: blockedModels } : {}),\n\t\t};\n\t}\n\n\tconst fileBoundaries = getWorkspaceStringArray(\n\t\tsource,\n\t\t\"paths\",\n\t\t\"allowed\",\n\t\t\"file_boundaries\",\n\t);\n\tconst blockedPaths = getWorkspaceStringArray(\n\t\tsource,\n\t\t\"paths\",\n\t\t\"blocked\",\n\t\t\"blocked_paths\",\n\t);\n\tif (fileBoundaries !== undefined || blockedPaths !== undefined) {\n\t\tpolicy.paths = {\n\t\t\t...(fileBoundaries !== undefined ? { allowed: fileBoundaries } : {}),\n\t\t\t...(blockedPaths !== undefined ? { blocked: blockedPaths } : {}),\n\t\t};\n\t}\n\n\tconst allowedDependencies = getWorkspaceStringArray(\n\t\tsource,\n\t\t\"dependencies\",\n\t\t\"allowed\",\n\t\t\"allowed_dependencies\",\n\t);\n\tconst blockedDependencies = getWorkspaceStringArray(\n\t\tsource,\n\t\t\"dependencies\",\n\t\t\"blocked\",\n\t\t\"blocked_dependencies\",\n\t);\n\tif (allowedDependencies !== undefined || blockedDependencies !== undefined) {\n\t\tpolicy.dependencies = {\n\t\t\t...(allowedDependencies !== undefined\n\t\t\t\t? { allowed: allowedDependencies }\n\t\t\t\t: {}),\n\t\t\t...(blockedDependencies !== undefined\n\t\t\t\t? { blocked: blockedDependencies }\n\t\t\t\t: {}),\n\t\t};\n\t}\n\n\tconst requiredSkills = getWorkspaceStringArray(\n\t\tsource,\n\t\t\"skills\",\n\t\t\"required\",\n\t\t\"required_skills\",\n\t);\n\tif (requiredSkills !== undefined) {\n\t\tpolicy.skills = { required: requiredSkills };\n\t}\n\n\tconst network = readOptionalRecord(source, \"network\");\n\tif (network) {\n\t\tconst allowedHosts = readStringArray(network, \"allowed_hosts\");\n\t\tconst blockedHosts = readStringArray(network, \"blocked_hosts\");\n\t\tconst blockLocalhost = readOptionalBoolean(network, \"block_localhost\");\n\t\tconst blockPrivateIPs = readOptionalBoolean(network, \"block_private_ips\");\n\t\tif (\n\t\t\tallowedHosts !== undefined ||\n\t\t\tblockedHosts !== undefined ||\n\t\t\tblockLocalhost !== undefined ||\n\t\t\tblockPrivateIPs !== undefined\n\t\t) {\n\t\t\tpolicy.network = {\n\t\t\t\t...(allowedHosts !== undefined ? { allowedHosts } : {}),\n\t\t\t\t...(blockedHosts !== undefined ? { blockedHosts } : {}),\n\t\t\t\t...(blockLocalhost !== undefined ? { blockLocalhost } : {}),\n\t\t\t\t...(blockPrivateIPs !== undefined ? { blockPrivateIPs } : {}),\n\t\t\t};\n\t\t}\n\t}\n\n\tconst maxTokensPerSession = readOptionalNumber(\n\t\tsource,\n\t\t\"max_tokens_per_session\",\n\t);\n\tconst maxSessionDurationMinutes = readOptionalNumber(\n\t\tsource,\n\t\t\"max_session_duration_minutes\",\n\t);\n\tconst maxConcurrentSessions = readOptionalNumber(\n\t\tsource,\n\t\t\"max_concurrent_sessions\",\n\t);\n\tif (\n\t\tmaxTokensPerSession !== undefined ||\n\t\tmaxSessionDurationMinutes !== undefined ||\n\t\tmaxConcurrentSessions !== undefined\n\t) {\n\t\tpolicy.limits = {\n\t\t\t...(maxTokensPerSession !== undefined ? { maxTokensPerSession } : {}),\n\t\t\t...(maxSessionDurationMinutes !== undefined\n\t\t\t\t? { maxSessionDurationMinutes }\n\t\t\t\t: {}),\n\t\t\t...(maxConcurrentSessions !== undefined ? { maxConcurrentSessions } : {}),\n\t\t};\n\t}\n\n\treturn policy;\n}\n\nfunction uniqueUnion(\n\tleft: string[] | undefined,\n\tright: string[] | undefined,\n): string[] | undefined {\n\tconst values = [...(left ?? []), ...(right ?? [])];\n\treturn values.length > 0 ? [...new Set(values)] : undefined;\n}\n\nfunction minPositiveNumber(\n\tleft: number | undefined,\n\tright: number | undefined,\n): number | undefined {\n\tconst values = [left, right].filter(\n\t\t(value): value is number => value !== undefined && value > 0,\n\t);\n\tif (values.length === 0) {\n\t\treturn left ?? right;\n\t}\n\treturn Math.min(...values);\n}\n\nfunction mergeAllowedBlockedPolicy(\n\tuserPolicy: { allowed?: string[]; blocked?: string[] } | undefined,\n\tworkspacePolicy: { allowed?: string[]; blocked?: string[] } | undefined,\n): { allowed?: string[]; blocked?: string[] } | undefined {\n\tconst allowed = workspacePolicy?.allowed ?? userPolicy?.allowed;\n\tconst blocked = uniqueUnion(userPolicy?.blocked, workspacePolicy?.blocked);\n\tif (allowed === undefined && blocked === undefined) return undefined;\n\treturn {\n\t\t...(allowed !== undefined ? { allowed } : {}),\n\t\t...(blocked !== undefined ? { blocked } : {}),\n\t};\n}\n\nfunction mergeNetworkPolicy(\n\tuserPolicy: EnterprisePolicy[\"network\"],\n\tworkspacePolicy: EnterprisePolicy[\"network\"],\n): EnterprisePolicy[\"network\"] {\n\tconst allowedHosts =\n\t\tworkspacePolicy?.allowedHosts ?? userPolicy?.allowedHosts;\n\tconst blockedHosts = uniqueUnion(\n\t\tuserPolicy?.blockedHosts,\n\t\tworkspacePolicy?.blockedHosts,\n\t);\n\tconst blockLocalhost =\n\t\tuserPolicy?.blockLocalhost === true ||\n\t\tworkspacePolicy?.blockLocalhost === true;\n\tconst blockPrivateIPs =\n\t\tuserPolicy?.blockPrivateIPs === true ||\n\t\tworkspacePolicy?.blockPrivateIPs === true;\n\n\tif (\n\t\tallowedHosts === undefined &&\n\t\tblockedHosts === undefined &&\n\t\t!blockLocalhost &&\n\t\t!blockPrivateIPs\n\t) {\n\t\treturn undefined;\n\t}\n\n\treturn {\n\t\t...(allowedHosts !== undefined ? { allowedHosts } : {}),\n\t\t...(blockedHosts !== undefined ? { blockedHosts } : {}),\n\t\t...(blockLocalhost ? { blockLocalhost } : {}),\n\t\t...(blockPrivateIPs ? { blockPrivateIPs } : {}),\n\t};\n}\n\nfunction mergePolicyLimits(\n\tuserPolicy: EnterprisePolicy[\"limits\"],\n\tworkspacePolicy: EnterprisePolicy[\"limits\"],\n): EnterprisePolicy[\"limits\"] {\n\tconst maxTokensPerSession = minPositiveNumber(\n\t\tuserPolicy?.maxTokensPerSession,\n\t\tworkspacePolicy?.maxTokensPerSession,\n\t);\n\tconst maxSessionDurationMinutes = minPositiveNumber(\n\t\tuserPolicy?.maxSessionDurationMinutes,\n\t\tworkspacePolicy?.maxSessionDurationMinutes,\n\t);\n\tconst maxConcurrentSessions = minPositiveNumber(\n\t\tuserPolicy?.maxConcurrentSessions,\n\t\tworkspacePolicy?.maxConcurrentSessions,\n\t);\n\n\tif (\n\t\tmaxTokensPerSession === undefined &&\n\t\tmaxSessionDurationMinutes === undefined &&\n\t\tmaxConcurrentSessions === undefined\n\t) {\n\t\treturn undefined;\n\t}\n\n\treturn {\n\t\t...(maxTokensPerSession !== undefined ? { maxTokensPerSession } : {}),\n\t\t...(maxSessionDurationMinutes !== undefined\n\t\t\t? { maxSessionDurationMinutes }\n\t\t\t: {}),\n\t\t...(maxConcurrentSessions !== undefined ? { maxConcurrentSessions } : {}),\n\t};\n}\n\nfunction mergePolicies(\n\tuserPolicy: EnterprisePolicy | null,\n\tworkspacePolicy: EnterprisePolicy | null,\n): EnterprisePolicy | null {\n\tif (!userPolicy) return workspacePolicy;\n\tif (!workspacePolicy) return userPolicy;\n\n\tconst policy: EnterprisePolicy = {\n\t\t...(userPolicy.orgId || workspacePolicy.orgId\n\t\t\t? { orgId: workspacePolicy.orgId ?? userPolicy.orgId }\n\t\t\t: {}),\n\t};\n\n\tconst tools = mergeAllowedBlockedPolicy(\n\t\tuserPolicy.tools,\n\t\tworkspacePolicy.tools,\n\t);\n\tif (tools) policy.tools = tools;\n\n\tconst dependencies = mergeAllowedBlockedPolicy(\n\t\tuserPolicy.dependencies,\n\t\tworkspacePolicy.dependencies,\n\t);\n\tif (dependencies) policy.dependencies = dependencies;\n\n\tconst models = mergeAllowedBlockedPolicy(\n\t\tuserPolicy.models,\n\t\tworkspacePolicy.models,\n\t);\n\tif (models) policy.models = models;\n\n\tconst paths = mergeAllowedBlockedPolicy(\n\t\tuserPolicy.paths,\n\t\tworkspacePolicy.paths,\n\t);\n\tif (paths) policy.paths = paths;\n\n\tconst requiredSkills = uniqueUnion(\n\t\tuserPolicy.skills?.required,\n\t\tworkspacePolicy.skills?.required,\n\t);\n\tif (requiredSkills) {\n\t\tpolicy.skills = { required: requiredSkills };\n\t}\n\n\tconst network = mergeNetworkPolicy(\n\t\tuserPolicy.network,\n\t\tworkspacePolicy.network,\n\t);\n\tif (network) policy.network = network;\n\n\tconst limits = mergePolicyLimits(userPolicy.limits, workspacePolicy.limits);\n\tif (limits) policy.limits = limits;\n\n\treturn policy;\n}\n\nfunction validateLoadedPolicy(policy: EnterprisePolicy, sourcePath: string) {\n\tif (!validatePolicy(policy)) {\n\t\tthrow new Error(\n\t\t\t`Invalid schema in ${sourcePath}: ${validatePolicy.errors?.map((e) => e.message).join(\", \")}`,\n\t\t);\n\t}\n}\n\nfunction loadPolicySource(source: PolicySource): EnterprisePolicy {\n\tconst raw = readFileSync(source.path, \"utf8\");\n\tif (source.format === \"json\") {\n\t\tconst result = safeJsonParse<EnterprisePolicy>(raw);\n\t\tif (!result.success) {\n\t\t\tthrow new Error(\n\t\t\t\t`JSON parse error in ${source.path}: ${result.error.message}`,\n\t\t\t);\n\t\t}\n\t\tvalidateLoadedPolicy(result.data, source.path);\n\t\treturn result.data;\n\t}\n\n\tconst workspacePolicy = mapWorkspacePolicy(parseTOML(raw));\n\tvalidateLoadedPolicy(workspacePolicy, source.path);\n\treturn workspacePolicy;\n}\n\nexport function loadPolicy(force = false): EnterprisePolicy | null {\n\tconst sources = getPolicySources();\n\t// Check if file exists first - if not, clear cache and return null\n\tif (sources.length === 0) {\n\t\tcachedPolicy = null;\n\t\tcachedPolicyKey = null;\n\t\tcachedPolicyLayers = [];\n\t\tclosePolicyWatchers();\n\t\treturn null;\n\t}\n\n\tconst policyKey = getPolicyCacheKey(sources);\n\tif (cachedPolicy && cachedPolicyKey === policyKey && !force) {\n\t\treturn cachedPolicy;\n\t}\n\n\ttry {\n\t\tif (cachedPolicyKey !== policyKey) {\n\t\t\tclosePolicyWatchers();\n\t\t}\n\n\t\tlet userPolicy: EnterprisePolicy | null = null;\n\t\tlet workspacePolicy: EnterprisePolicy | null = null;\n\n\t\tfor (const source of sources) {\n\t\t\tconst loadedPolicy = loadPolicySource(source);\n\t\t\tif (source.scope === \"user\") {\n\t\t\t\tuserPolicy = loadedPolicy;\n\t\t\t} else {\n\t\t\t\tworkspacePolicy = loadedPolicy;\n\t\t\t}\n\t\t}\n\n\t\tcachedPolicy = mergePolicies(userPolicy, workspacePolicy);\n\t\tcachedPolicyLayers = [userPolicy, workspacePolicy].filter(\n\t\t\t(policy): policy is EnterprisePolicy => policy !== null,\n\t\t);\n\t\tcachedPolicyKey = policyKey;\n\t\tstartPolicyWatchers(sources);\n\t\treturn cachedPolicy;\n\t} catch (error) {\n\t\tlogger.error(\n\t\t\t\"Critical: Failed to load enterprise policy\",\n\t\t\terror instanceof Error ? error : new Error(String(error)),\n\t\t);\n\t\t// Throw to ensure we fail closed (block access) rather than treating as no policy\n\t\tthrow error;\n\t}\n}\n\nfunction getArgsObject(\n\tcontext: ActionApprovalContext,\n): Record<string, unknown> | null {\n\treturn context.args && typeof context.args === \"object\"\n\t\t? (context.args as Record<string, unknown>)\n\t\t: null;\n}\n\nfunction getStringArg(\n\tcontext: ActionApprovalContext,\n\tkey: string,\n): string | null {\n\tconst args = getArgsObject(context);\n\tif (!args) {\n\t\treturn null;\n\t}\n\tconst value = args[key];\n\treturn typeof value === \"string\" ? value : null;\n}\n\nfunction getCommandArg(context: ActionApprovalContext): string | null {\n\treturn getStringArg(context, \"command\");\n}\n\nfunction getEffectivePolicyLayers(\n\tpolicy: EnterprisePolicy,\n): EnterprisePolicy[] {\n\treturn cachedPolicyLayers.length > 0 ? cachedPolicyLayers : [policy];\n}\n\nfunction hasOwnKey(value: object, key: PropertyKey): boolean {\n\treturn Object.prototype.hasOwnProperty.call(value, key);\n}\n\nfunction isNonEmptyString(value: unknown): value is string {\n\treturn typeof value === \"string\" && value.trim().length > 0;\n}\n\nfunction hasActiveDurationLimit(policy: EnterprisePolicy): boolean {\n\tconst duration = policy.limits?.maxSessionDurationMinutes;\n\treturn (\n\t\ttypeof duration === \"number\" && Number.isFinite(duration) && duration > 0\n\t);\n}\n\nfunction validatePolicyContext(\n\tpolicy: EnterprisePolicy,\n\tcontext: ActionApprovalContext,\n): { allowed: false; reason: string } | null {\n\tif (!isNonEmptyString(context.toolName)) {\n\t\treturn {\n\t\t\tallowed: false,\n\t\t\treason: \"Policy evaluation context is missing required field: toolName.\",\n\t\t};\n\t}\n\n\tif (!hasOwnKey(context, \"args\")) {\n\t\treturn {\n\t\t\tallowed: false,\n\t\t\treason: \"Policy evaluation context is missing required field: args.\",\n\t\t};\n\t}\n\n\tif (context.user) {\n\t\tif (!isNonEmptyString(context.user.orgId)) {\n\t\t\treturn {\n\t\t\t\tallowed: false,\n\t\t\t\treason:\n\t\t\t\t\t\"Policy evaluation context has invalid user context: missing organization id.\",\n\t\t\t};\n\t\t}\n\t}\n\n\tif (\n\t\tisNonEmptyString(policy.orgId) &&\n\t\t!isNonEmptyString(context.user?.orgId)\n\t) {\n\t\treturn {\n\t\t\tallowed: false,\n\t\t\treason:\n\t\t\t\t\"Organization-bound policy requires user organization context. Access blocked.\",\n\t\t};\n\t}\n\n\tif (hasActiveDurationLimit(policy)) {\n\t\tconst startedAt = context.session?.startedAt;\n\t\tif (!(startedAt instanceof Date) || !Number.isFinite(startedAt.getTime())) {\n\t\t\treturn {\n\t\t\t\tallowed: false,\n\t\t\t\treason:\n\t\t\t\t\t\"Session duration policy requires session start context. Access blocked.\",\n\t\t\t};\n\t\t}\n\t}\n\n\treturn null;\n}\n\nexport async function checkPolicy(context: ActionApprovalContext): Promise<{\n\tallowed: boolean;\n\treason?: string;\n}> {\n\tlet policy: EnterprisePolicy | null;\n\ttry {\n\t\tpolicy = loadPolicy();\n\t} catch (error) {\n\t\treturn {\n\t\t\tallowed: false,\n\t\t\treason: `Enterprise policy error: ${error instanceof Error ? error.message : \"Unknown error\"}. Access blocked.`,\n\t\t};\n\t}\n\n\tif (!policy) {\n\t\treturn { allowed: true };\n\t}\n\n\tfor (const policyLayer of getEffectivePolicyLayers(policy)) {\n\t\tconst result = await checkPolicyLayer(policyLayer, context);\n\t\tif (!result.allowed) {\n\t\t\treturn result;\n\t\t}\n\t}\n\n\treturn { allowed: true };\n}\n\nasync function checkPolicyLayer(\n\tpolicy: EnterprisePolicy,\n\tcontext: ActionApprovalContext,\n): Promise<{\n\tallowed: boolean;\n\treason?: string;\n}> {\n\tconst contextValidation = validatePolicyContext(policy, context);\n\tif (contextValidation) {\n\t\treturn contextValidation;\n\t}\n\n\t// 0. Organization Context Check\n\tif (\n\t\tpolicy.orgId &&\n\t\tcontext.user?.orgId &&\n\t\tpolicy.orgId !== context.user.orgId\n\t) {\n\t\tlogger.warn(\"Org mismatch, action blocked\", {\n\t\t\tpolicyOrgId: policy.orgId,\n\t\t\tuserOrgId: context.user.orgId,\n\t\t});\n\t\treturn {\n\t\t\tallowed: false,\n\t\t\treason: `Organization mismatch: This machine is managed by ${policy.orgId}, but you are signed in to ${context.user.orgId}.`,\n\t\t};\n\t}\n\n\t// 1. Tool Constraints\n\tif (policy.tools) {\n\t\tconst { allowed, blocked } = policy.tools;\n\t\tif (allowed && !allowed.includes(context.toolName)) {\n\t\t\treturn {\n\t\t\t\tallowed: false,\n\t\t\t\treason: `Tool \"${context.toolName}\" is not in the approved tools list.`,\n\t\t\t};\n\t\t}\n\t\tif (blocked?.includes(context.toolName)) {\n\t\t\treturn {\n\t\t\t\tallowed: false,\n\t\t\t\treason: `Tool \"${context.toolName}\" is explicitly blocked by enterprise policy.`,\n\t\t\t};\n\t\t}\n\t}\n\n\t// 2. Dangerous Patterns & Dependency Constraints\n\tif (context.toolName === \"bash\" || context.toolName === \"background_tasks\") {\n\t\tconst command = getCommandArg(context);\n\t\tif (command) {\n\t\t\t// Check for obfuscation and dangerous patterns\n\t\t\tconst obfuscationPatterns = [\n\t\t\t\tshellDangerousPatterns.base64Decode,\n\t\t\t\tshellDangerousPatterns.opensslEnc,\n\t\t\t\tshellDangerousPatterns.pythonEval,\n\t\t\t\tshellDangerousPatterns.perlEval,\n\t\t\t\tshellDangerousPatterns.nodeEval,\n\t\t\t\tshellDangerousPatterns.phpEval,\n\t\t\t\tshellDangerousPatterns.rubyEval,\n\t\t\t\tshellDangerousPatterns.evalCall,\n\t\t\t\tshellDangerousPatterns.execCall,\n\t\t\t];\n\t\t\tfor (const pattern of obfuscationPatterns) {\n\t\t\t\tif (pattern.test(command)) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tallowed: false,\n\t\t\t\t\t\treason:\n\t\t\t\t\t\t\t\"Command contains obfuscated or dangerous patterns (e.g. base64 decoding, inline code execution) which are blocked by enterprise policy.\",\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (policy.dependencies) {\n\t\t\t\tconst deps = extractDependencies(command);\n\n\t\t\t\t// Check for shell metacharacters in any package install command,\n\t\t\t\t// even when no explicit package names are extracted (e.g., \"npm install\").\n\t\t\t\t// This prevents bypass via \"npm install && rm -rf /\"\n\t\t\t\tconst isPackageInstallCommand =\n\t\t\t\t\t/(?:npm|yarn|pnpm|bun|pip|pip3|gem|cargo|go\\s+get|composer)\\s+(?:install|add|i\\b)/i.test(\n\t\t\t\t\t\tcommand,\n\t\t\t\t\t);\n\t\t\t\tif (\n\t\t\t\t\t(deps.length > 0 || isPackageInstallCommand) &&\n\t\t\t\t\t/[;&|`$()<>]/.test(command)\n\t\t\t\t) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tallowed: false,\n\t\t\t\t\t\treason:\n\t\t\t\t\t\t\t\"Command contains shell metacharacters which are not allowed by enterprise policy during package installation.\",\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tconst { allowed, blocked } = policy.dependencies;\n\n\t\t\t\tfor (const dep of deps) {\n\t\t\t\t\tif (allowed && !allowed.includes(dep)) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tallowed: false,\n\t\t\t\t\t\t\treason: `Dependency \"${dep}\" is not in the approved dependencies list.`,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\tif (blocked?.includes(dep)) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tallowed: false,\n\t\t\t\t\t\t\treason: `Dependency \"${dep}\" is explicitly blocked by enterprise policy.`,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 3. Path Constraints\n\tif (policy.paths) {\n\t\tconst filePaths = extractPolicyFilePaths(context);\n\t\tconst pathCheck = checkPathPolicy(filePaths, policy.paths);\n\t\tif (!pathCheck.allowed) {\n\t\t\treturn pathCheck;\n\t\t}\n\t}\n\n\t// 4. Network Constraints\n\tif (policy.network) {\n\t\tconst networkCheck = await checkNetworkPolicy(context, policy.network);\n\t\tif (!networkCheck.allowed) {\n\t\t\treturn networkCheck;\n\t\t}\n\t}\n\n\t// 5. Session Limits\n\tif (policy.limits && context.session) {\n\t\tconst { maxSessionDurationMinutes } = policy.limits;\n\t\tif (maxSessionDurationMinutes && maxSessionDurationMinutes > 0) {\n\t\t\tconst durationMinutes =\n\t\t\t\t(Date.now() - context.session.startedAt.getTime()) / 1000 / 60;\n\t\t\tif (durationMinutes > maxSessionDurationMinutes) {\n\t\t\t\treturn {\n\t\t\t\t\tallowed: false,\n\t\t\t\t\treason: `Session duration limit exceeded (${Math.floor(durationMinutes)}/${maxSessionDurationMinutes} minutes). Please start a new session.`,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { allowed: true };\n}\n\nexport class PolicyError extends Error {\n\tconstructor(message: string) {\n\t\tsuper(message);\n\t\tthis.name = \"PolicyError\";\n\t}\n}\n\n/**\n * Check if a model is allowed by policy\n * Called separately from tool checks since model selection happens at a different time\n */\nexport function checkModelPolicy(modelId: string): {\n\tallowed: boolean;\n\treason?: string;\n} {\n\tlet policy: EnterprisePolicy | null;\n\ttry {\n\t\tpolicy = loadPolicy();\n\t} catch (error) {\n\t\treturn {\n\t\t\tallowed: false,\n\t\t\treason: `Enterprise policy error: ${error instanceof Error ? error.message : \"Unknown error\"}. Model blocked.`,\n\t\t};\n\t}\n\n\tif (!policy) {\n\t\treturn { allowed: true };\n\t}\n\n\tfor (const policyLayer of getEffectivePolicyLayers(policy)) {\n\t\tif (!policyLayer.models) {\n\t\t\tcontinue;\n\t\t}\n\t\tconst result = checkModelAccess(modelId, policyLayer.models);\n\t\tif (!result.allowed) {\n\t\t\treturn result;\n\t\t}\n\t}\n\n\treturn { allowed: true };\n}\n\n/**\n * Check if the current session has exceeded policy limits\n */\nexport function checkSessionLimits(\n\tsession: { startedAt: Date },\n\tusage?: { tokenCount?: number; activeSessionCount?: number },\n): {\n\tallowed: boolean;\n\treason?: string;\n} {\n\ttry {\n\t\tconst limits = getPolicyLimits();\n\t\tif (!limits) return { allowed: true };\n\n\t\t// Check duration limit\n\t\tif (\n\t\t\tlimits.maxSessionDurationMinutes &&\n\t\t\tlimits.maxSessionDurationMinutes > 0\n\t\t) {\n\t\t\tconst durationMinutes =\n\t\t\t\t(Date.now() - session.startedAt.getTime()) / 1000 / 60;\n\t\t\tif (durationMinutes > limits.maxSessionDurationMinutes) {\n\t\t\t\treturn {\n\t\t\t\t\tallowed: false,\n\t\t\t\t\treason: `Session duration limit exceeded (${Math.floor(durationMinutes)}/${limits.maxSessionDurationMinutes} minutes). Please start a new session.`,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\t// Check token limit\n\t\tif (limits.maxTokensPerSession && limits.maxTokensPerSession > 0) {\n\t\t\tif (usage?.tokenCount !== undefined) {\n\t\t\t\tif (usage.tokenCount > limits.maxTokensPerSession) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tallowed: false,\n\t\t\t\t\t\treason: `Session token limit exceeded (${usage.tokenCount}/${limits.maxTokensPerSession} tokens). Please start a new session.`,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Usage undefined but limit is set - should we block?\n\t\t\t\t// To be safe (fail-closed) for strict limits, we probably should if we can't verify compliance.\n\t\t\t\t// However, if usage is undefined because metrics are disabled/failing, this might be too aggressive.\n\t\t\t\t// Given user feedback \"Fail-Open Error Handling\", we should warn or block.\n\t\t\t\t// Let's block if we can't verify usage against a set limit.\n\t\t\t\treturn {\n\t\t\t\t\tallowed: false,\n\t\t\t\t\treason: `Session token limit is active (${limits.maxTokensPerSession}) but token usage data is unavailable. Access blocked for safety.`,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\t// Check concurrent sessions limit\n\t\tif (limits.maxConcurrentSessions && limits.maxConcurrentSessions > 0) {\n\t\t\tif (usage?.activeSessionCount !== undefined) {\n\t\t\t\tif (usage.activeSessionCount > limits.maxConcurrentSessions) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tallowed: false,\n\t\t\t\t\t\treason: `Concurrent session limit exceeded (${usage.activeSessionCount}/${limits.maxConcurrentSessions}). Please close existing sessions before starting a new one.`,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Same fail-closed logic for concurrent sessions\n\t\t\t\treturn {\n\t\t\t\t\tallowed: false,\n\t\t\t\t\treason: `Concurrent session limit is active (${limits.maxConcurrentSessions}) but session count data is unavailable. Access blocked for safety.`,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\treturn { allowed: true };\n\t} catch (error) {\n\t\treturn {\n\t\t\tallowed: false,\n\t\t\treason: `Policy error checking session limits: ${error}`,\n\t\t};\n\t}\n}\n\n/**\n * Get the current policy limits\n */\nexport function getPolicyLimits(): EnterprisePolicy[\"limits\"] | null {\n\t// Catch errors and return null (no limits) to prevent crashing callers.\n\t// Strict enforcement should rely on checkSessionLimits() which handles its own loading.\n\ttry {\n\t\tconst policy = loadPolicy();\n\t\treturn policy?.limits ?? null;\n\t} catch {\n\t\treturn null;\n\t}\n}\n\n/**\n * Get the full loaded policy (for admin UI display)\n */\nexport function getCurrentPolicy(): EnterprisePolicy | null {\n\ttry {\n\t\treturn loadPolicy();\n\t} catch {\n\t\treturn null;\n\t}\n}\n"]}
@@ -93,9 +93,19 @@ export declare const TodoInputSchema: import("@sinclair/typebox").TObject<{
93
93
  }>;
94
94
  export type TodoItem = Static<typeof TodoItemSchema>;
95
95
  export type TodoInput = Static<typeof TodoInputSchema>;
96
+ export declare const AskUserOptionPreviewSchema: import("@sinclair/typebox").TObject<{
97
+ kind: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"markdown">, import("@sinclair/typebox").TLiteral<"text">, import("@sinclair/typebox").TLiteral<"diff">]>;
98
+ title: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
99
+ body: import("@sinclair/typebox").TString;
100
+ }>;
96
101
  export declare const QuestionOptionSchema: import("@sinclair/typebox").TObject<{
97
102
  label: import("@sinclair/typebox").TString;
98
103
  description: import("@sinclair/typebox").TString;
104
+ preview: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
105
+ kind: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"markdown">, import("@sinclair/typebox").TLiteral<"text">, import("@sinclair/typebox").TLiteral<"diff">]>;
106
+ title: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
107
+ body: import("@sinclair/typebox").TString;
108
+ }>>;
99
109
  }>;
100
110
  export declare const QuestionSchema: import("@sinclair/typebox").TObject<{
101
111
  question: import("@sinclair/typebox").TString;
@@ -103,6 +113,11 @@ export declare const QuestionSchema: import("@sinclair/typebox").TObject<{
103
113
  options: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
104
114
  label: import("@sinclair/typebox").TString;
105
115
  description: import("@sinclair/typebox").TString;
116
+ preview: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
117
+ kind: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"markdown">, import("@sinclair/typebox").TLiteral<"text">, import("@sinclair/typebox").TLiteral<"diff">]>;
118
+ title: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
119
+ body: import("@sinclair/typebox").TString;
120
+ }>>;
106
121
  }>>;
107
122
  multiSelect: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
108
123
  }>;
@@ -113,11 +128,17 @@ export declare const AskUserInputSchema: import("@sinclair/typebox").TObject<{
113
128
  options: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
114
129
  label: import("@sinclair/typebox").TString;
115
130
  description: import("@sinclair/typebox").TString;
131
+ preview: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
132
+ kind: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"markdown">, import("@sinclair/typebox").TLiteral<"text">, import("@sinclair/typebox").TLiteral<"diff">]>;
133
+ title: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
134
+ body: import("@sinclair/typebox").TString;
135
+ }>>;
116
136
  }>>;
117
137
  multiSelect: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
118
138
  }>>;
119
139
  }>;
120
140
  export type AskUserQuestionOption = Static<typeof QuestionOptionSchema>;
141
+ export type AskUserOptionPreview = Static<typeof AskUserOptionPreviewSchema>;
121
142
  export type AskUserQuestion = Static<typeof QuestionSchema>;
122
143
  export type AskUserInput = Static<typeof AskUserInputSchema>;
123
144
  export declare const WebSearchInputSchema: import("@sinclair/typebox").TObject<{
@@ -1 +1 @@
1
- {"version":3,"file":"sdk-tools.d.ts","sourceRoot":"","sources":["../src/sdk-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,OAAO,EAAQ,MAAM,mBAAmB,CAAC;AAMpE,eAAO,MAAM,eAAe;;;;;;EAwC1B,CAAC;AAEH,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,eAAe,CAAC,CAAC;AAMvD,eAAO,MAAM,mBAAmB;;;EAW9B,CAAC;AAEH,eAAO,MAAM,eAAe;;;;;;;;;;;EA2C1B,CAAC;AAEH,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,eAAe,CAAC,CAAC;AAMvD,eAAO,MAAM,gBAAgB;;;EAQ3B,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAMzD,eAAO,MAAM,eAAe;;;;;EAuB1B,CAAC;AAEH,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,eAAe,CAAC,CAAC;AAMvD,eAAO,MAAM,iBAAiB;;;;;;;;;;EA0D5B,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAM3D,eAAO,MAAM,eAAe;;;EAU1B,CAAC;AAEH,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,eAAe,CAAC,CAAC;AAMvD,eAAO,MAAM,uBAAuB;;;;;;;EAiClC,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAMvE,eAAO,MAAM,cAAc;;;;EAoBzB,CAAC;AAEH,eAAO,MAAM,eAAe;;;;;;EAI1B,CAAC;AAEH,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,cAAc,CAAC,CAAC;AACrD,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,eAAe,CAAC,CAAC;AAMvD,eAAO,MAAM,oBAAoB;;;EAW/B,CAAC;AAEH,eAAO,MAAM,cAAc;;;;;;;;EAsBzB,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;;EAM7B,CAAC;AAEH,MAAM,MAAM,qBAAqB,GAAG,MAAM,CAAC,OAAO,oBAAoB,CAAC,CAAC;AACxE,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,cAAc,CAAC,CAAC;AAC5D,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAM7D,eAAO,MAAM,oBAAoB;;;;EAe/B,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAMjE,eAAO,MAAM,mBAAmB;;;EAQ9B,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAM/D,eAAO,MAAM,gBAAgB;;;;;;EA4B3B,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAMzD,MAAM,MAAM,gBAAgB,GACzB,SAAS,GACT,SAAS,GACT,UAAU,GACV,SAAS,GACT,WAAW,GACX,SAAS,GACT,iBAAiB,GACjB,SAAS,GACT,YAAY,GACZ,cAAc,GACd,aAAa,GACb,UAAU,CAAC;AAMd,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAa/C,CAAC;AAEF;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAEnE"}
1
+ {"version":3,"file":"sdk-tools.d.ts","sourceRoot":"","sources":["../src/sdk-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,OAAO,EAAQ,MAAM,mBAAmB,CAAC;AAMpE,eAAO,MAAM,eAAe;;;;;;EAwC1B,CAAC;AAEH,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,eAAe,CAAC,CAAC;AAMvD,eAAO,MAAM,mBAAmB;;;EAW9B,CAAC;AAEH,eAAO,MAAM,eAAe;;;;;;;;;;;EA2C1B,CAAC;AAEH,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,eAAe,CAAC,CAAC;AAMvD,eAAO,MAAM,gBAAgB;;;EAQ3B,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAMzD,eAAO,MAAM,eAAe;;;;;EAuB1B,CAAC;AAEH,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,eAAe,CAAC,CAAC;AAMvD,eAAO,MAAM,iBAAiB;;;;;;;;;;EA0D5B,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAM3D,eAAO,MAAM,eAAe;;;EAU1B,CAAC;AAEH,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,eAAe,CAAC,CAAC;AAMvD,eAAO,MAAM,uBAAuB;;;;;;;EAiClC,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAMvE,eAAO,MAAM,cAAc;;;;EAoBzB,CAAC;AAEH,eAAO,MAAM,eAAe;;;;;;EAI1B,CAAC;AAEH,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,cAAc,CAAC,CAAC;AACrD,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,eAAe,CAAC,CAAC;AAMvD,eAAO,MAAM,0BAA0B;;;;EAoBrC,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;;EAY/B,CAAC;AAEH,eAAO,MAAM,cAAc;;;;;;;;;;;;;EAsBzB,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;EAM7B,CAAC;AAEH,MAAM,MAAM,qBAAqB,GAAG,MAAM,CAAC,OAAO,oBAAoB,CAAC,CAAC;AACxE,MAAM,MAAM,oBAAoB,GAAG,MAAM,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAC7E,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,cAAc,CAAC,CAAC;AAC5D,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAM7D,eAAO,MAAM,oBAAoB;;;;EAe/B,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAMjE,eAAO,MAAM,mBAAmB;;;EAQ9B,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAM/D,eAAO,MAAM,gBAAgB;;;;;;EA4B3B,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAMzD,MAAM,MAAM,gBAAgB,GACzB,SAAS,GACT,SAAS,GACT,UAAU,GACV,SAAS,GACT,WAAW,GACX,SAAS,GACT,iBAAiB,GACjB,SAAS,GACT,YAAY,GACZ,cAAc,GACd,aAAa,GACb,UAAU,CAAC;AAMd,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAa/C,CAAC;AAEF;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAEnE"}
package/dist/sdk-tools.js CHANGED
@@ -233,6 +233,21 @@ export const TodoInputSchema = Type.Object({
233
233
  // ============================================================================
234
234
  // Ask User Tool
235
235
  // ============================================================================
236
+ export const AskUserOptionPreviewSchema = Type.Object({
237
+ kind: Type.Union([Type.Literal("markdown"), Type.Literal("text"), Type.Literal("diff")], {
238
+ description: "Preview format. Raw HTML is intentionally unsupported; use markdown, text, or diff.",
239
+ }),
240
+ title: Type.Optional(Type.String({
241
+ description: "Optional short preview title.",
242
+ minLength: 1,
243
+ maxLength: 80,
244
+ })),
245
+ body: Type.String({
246
+ description: "Preview content shown with the option.",
247
+ minLength: 1,
248
+ maxLength: 12_000,
249
+ }),
250
+ });
236
251
  export const QuestionOptionSchema = Type.Object({
237
252
  label: Type.String({
238
253
  description: "Display text for this option (1-5 words)",
@@ -244,6 +259,7 @@ export const QuestionOptionSchema = Type.Object({
244
259
  minLength: 1,
245
260
  maxLength: 200,
246
261
  }),
262
+ preview: Type.Optional(AskUserOptionPreviewSchema),
247
263
  });
248
264
  export const QuestionSchema = Type.Object({
249
265
  question: Type.String({
@@ -1 +1 @@
1
- {"version":3,"file":"sdk-tools.js","sourceRoot":"","sources":["../src/sdk-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAA6B,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAEpE,+EAA+E;AAC/E,YAAY;AACZ,+EAA+E;AAE/E,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC;IAC1C,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC;QACjB,WAAW,EAAE,iDAAiD;QAC9D,SAAS,EAAE,CAAC;KACZ,CAAC;IACF,MAAM,EAAE,IAAI,CAAC,QAAQ,CACpB,IAAI,CAAC,OAAO,CAAC;QACZ,WAAW,EAAE,+CAA+C;QAC5D,OAAO,EAAE,CAAC;KACV,CAAC,CACF;IACD,KAAK,EAAE,IAAI,CAAC,QAAQ,CACnB,IAAI,CAAC,OAAO,CAAC;QACZ,WAAW,EAAE,iCAAiC;QAC9C,OAAO,EAAE,CAAC;KACV,CAAC,CACF;IACD,IAAI,EAAE,IAAI,CAAC,QAAQ,CAClB,IAAI,CAAC,KAAK,CACT,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EACpE;QACC,WAAW,EAAE,2CAA2C;QACxD,OAAO,EAAE,QAAQ;KACjB,CACD,CACD;IACD,QAAQ,EAAE,IAAI,CAAC,QAAQ,CACtB,IAAI,CAAC,KAAK,CACT;QACC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;QACrB,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;QACxB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;QACtB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;KACrB,EACD;QACC,WAAW,EAAE,4BAA4B;QACzC,OAAO,EAAE,OAAO;KAChB,CACD,CACD;CACD,CAAC,CAAC;AAIH,+EAA+E;AAC/E,YAAY;AACZ,+EAA+E;AAE/E,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC;IAC9C,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC;QACpB,WAAW,EAAE,gCAAgC;QAC7C,SAAS,EAAE,CAAC;KACZ,CAAC;IACF,OAAO,EAAE,IAAI,CAAC,QAAQ,CACrB,IAAI,CAAC,MAAM,CAAC;QACX,WAAW,EAAE,mDAAmD;QAChE,OAAO,EAAE,EAAE;KACX,CAAC,CACF;CACD,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC;IAC1C,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC;QACjB,WAAW,EAAE,0BAA0B;QACvC,SAAS,EAAE,CAAC;KACZ,CAAC;IACF,OAAO,EAAE,IAAI,CAAC,QAAQ,CACrB,IAAI,CAAC,MAAM,CAAC;QACX,WAAW,EAAE,gCAAgC;QAC7C,SAAS,EAAE,CAAC;KACZ,CAAC,CACF;IACD,OAAO,EAAE,IAAI,CAAC,QAAQ,CACrB,IAAI,CAAC,MAAM,CAAC;QACX,WAAW,EAAE,uCAAuC;QACpD,OAAO,EAAE,EAAE;KACX,CAAC,CACF;IACD,KAAK,EAAE,IAAI,CAAC,QAAQ,CACnB,IAAI,CAAC,KAAK,CAAC,mBAAmB,EAAE;QAC/B,WAAW,EAAE,sCAAsC;QACnD,QAAQ,EAAE,CAAC;QACX,QAAQ,EAAE,EAAE;KACZ,CAAC,CACF;IACD,UAAU,EAAE,IAAI,CAAC,QAAQ,CACxB,IAAI,CAAC,OAAO,CAAC;QACZ,WAAW,EAAE,yBAAyB;QACtC,OAAO,EAAE,KAAK;KACd,CAAC,CACF;IACD,UAAU,EAAE,IAAI,CAAC,QAAQ,CACxB,IAAI,CAAC,OAAO,CAAC;QACZ,WAAW,EAAE,uCAAuC;QACpD,OAAO,EAAE,CAAC;QACV,OAAO,EAAE,CAAC;KACV,CAAC,CACF;IACD,MAAM,EAAE,IAAI,CAAC,QAAQ,CACpB,IAAI,CAAC,OAAO,CAAC;QACZ,WAAW,EAAE,iCAAiC;QAC9C,OAAO,EAAE,KAAK;KACd,CAAC,CACF;CACD,CAAC,CAAC;AAIH,+EAA+E;AAC/E,aAAa;AACb,+EAA+E;AAE/E,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC;IAC3C,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC;QACjB,WAAW,EAAE,2BAA2B;QACxC,SAAS,EAAE,CAAC;KACZ,CAAC;IACF,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC;QACpB,WAAW,EAAE,8BAA8B;KAC3C,CAAC;CACF,CAAC,CAAC;AAIH,+EAA+E;AAC/E,YAAY;AACZ,+EAA+E;AAE/E,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC;IAC1C,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC;QACpB,WAAW,EAAE,wBAAwB;QACrC,SAAS,EAAE,CAAC;KACZ,CAAC;IACF,OAAO,EAAE,IAAI,CAAC,QAAQ,CACrB,IAAI,CAAC,OAAO,CAAC;QACZ,WAAW,EAAE,sCAAsC;QACnD,OAAO,EAAE,CAAC;QACV,OAAO,EAAE,MAAM;KACf,CAAC,CACF;IACD,WAAW,EAAE,IAAI,CAAC,QAAQ,CACzB,IAAI,CAAC,MAAM,CAAC;QACX,WAAW,EAAE,0DAA0D;KACvE,CAAC,CACF;IACD,eAAe,EAAE,IAAI,CAAC,QAAQ,CAC7B,IAAI,CAAC,OAAO,CAAC;QACZ,WAAW,EAAE,2BAA2B;QACxC,OAAO,EAAE,KAAK;KACd,CAAC,CACF;CACD,CAAC,CAAC;AAIH,+EAA+E;AAC/E,qBAAqB;AACrB,+EAA+E;AAE/E,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC;IAC5C,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC;QACpB,WAAW,EAAE,0CAA0C;QACvD,SAAS,EAAE,CAAC;KACZ,CAAC;IACF,IAAI,EAAE,IAAI,CAAC,QAAQ,CAClB,IAAI,CAAC,MAAM,CAAC;QACX,WAAW,EAAE,gCAAgC;KAC7C,CAAC,CACF;IACD,IAAI,EAAE,IAAI,CAAC,QAAQ,CAClB,IAAI,CAAC,MAAM,CAAC;QACX,WAAW,EAAE,2DAA2D;KACxE,CAAC,CACF;IACD,UAAU,EAAE,IAAI,CAAC,QAAQ,CACxB,IAAI,CAAC,KAAK,CACT;QACC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;QACvB,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC;QAClC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;KACrB,EACD;QACC,WAAW,EAAE,aAAa;QAC1B,OAAO,EAAE,oBAAoB;KAC7B,CACD,CACD;IACD,aAAa,EAAE,IAAI,CAAC,QAAQ,CAC3B,IAAI,CAAC,OAAO,CAAC;QACZ,WAAW,EAAE,oCAAoC;QACjD,OAAO,EAAE,CAAC;KACV,CAAC,CACF;IACD,YAAY,EAAE,IAAI,CAAC,QAAQ,CAC1B,IAAI,CAAC,OAAO,CAAC;QACZ,WAAW,EAAE,mCAAmC;QAChD,OAAO,EAAE,CAAC;KACV,CAAC,CACF;IACD,eAAe,EAAE,IAAI,CAAC,QAAQ,CAC7B,IAAI,CAAC,OAAO,CAAC;QACZ,WAAW,EAAE,yBAAyB;QACtC,OAAO,EAAE,KAAK;KACd,CAAC,CACF;IACD,SAAS,EAAE,IAAI,CAAC,QAAQ,CACvB,IAAI,CAAC,OAAO,CAAC;QACZ,WAAW,EAAE,iCAAiC;QAC9C,OAAO,EAAE,CAAC;KACV,CAAC,CACF;IACD,SAAS,EAAE,IAAI,CAAC,QAAQ,CACvB,IAAI,CAAC,OAAO,CAAC;QACZ,WAAW,EAAE,uBAAuB;QACpC,OAAO,EAAE,KAAK;KACd,CAAC,CACF;CACD,CAAC,CAAC;AAIH,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC;IAC1C,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC;QACpB,WAAW,EAAE,+CAA+C;QAC5D,SAAS,EAAE,CAAC;KACZ,CAAC;IACF,IAAI,EAAE,IAAI,CAAC,QAAQ,CAClB,IAAI,CAAC,MAAM,CAAC;QACX,WAAW,EAAE,wBAAwB;KACrC,CAAC,CACF;CACD,CAAC,CAAC;AAIH,+EAA+E;AAC/E,qBAAqB;AACrB,+EAA+E;AAE/E,MAAM,CAAC,MAAM,uBAAuB,GAAG,IAAI,CAAC,MAAM,CAAC;IAClD,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC;QACjB,WAAW,EAAE,4CAA4C;QACzD,SAAS,EAAE,CAAC;KACZ,CAAC;IACF,MAAM,EAAE,IAAI,CAAC,QAAQ,CACpB,IAAI,CAAC,MAAM,CAAC;QACX,WAAW,EAAE,iBAAiB;KAC9B,CAAC,CACF;IACD,SAAS,EAAE,IAAI,CAAC,QAAQ,CACvB,IAAI,CAAC,OAAO,CAAC;QACZ,WAAW,EAAE,8BAA8B;QAC3C,OAAO,EAAE,CAAC;KACV,CAAC,CACF;IACD,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC;QACtB,WAAW,EAAE,iCAAiC;KAC9C,CAAC;IACF,QAAQ,EAAE,IAAI,CAAC,QAAQ,CACtB,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE;QAC5D,WAAW,EAAE,WAAW;KACxB,CAAC,CACF;IACD,QAAQ,EAAE,IAAI,CAAC,QAAQ,CACtB,IAAI,CAAC,KAAK,CACT,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EACzE;QACC,WAAW,EAAE,WAAW;QACxB,OAAO,EAAE,SAAS;KAClB,CACD,CACD;CACD,CAAC,CAAC;AAIH,+EAA+E;AAC/E,YAAY;AACZ,+EAA+E;AAE/E,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC;IACzC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC;QACpB,WAAW,EAAE,sBAAsB;QACnC,SAAS,EAAE,CAAC;KACZ,CAAC;IACF,MAAM,EAAE,IAAI,CAAC,KAAK,CACjB;QACC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;QACvB,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;QAC3B,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;KACzB,EACD;QACC,WAAW,EAAE,aAAa;KAC1B,CACD;IACD,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC;QACvB,WAAW,EACV,wEAAwE;QACzE,SAAS,EAAE,CAAC;KACZ,CAAC;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC;IAC1C,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE;QACjC,WAAW,EAAE,uBAAuB;KACpC,CAAC;CACF,CAAC,CAAC;AAKH,+EAA+E;AAC/E,gBAAgB;AAChB,+EAA+E;AAE/E,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,CAAC,MAAM,CAAC;IAC/C,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC;QAClB,WAAW,EAAE,0CAA0C;QACvD,SAAS,EAAE,CAAC;QACZ,SAAS,EAAE,EAAE;KACb,CAAC;IACF,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC;QACxB,WAAW,EAAE,uCAAuC;QACpD,SAAS,EAAE,CAAC;QACZ,SAAS,EAAE,GAAG;KACd,CAAC;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC;IACzC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC;QACrB,WAAW,EAAE,8BAA8B;QAC3C,SAAS,EAAE,CAAC;QACZ,SAAS,EAAE,GAAG;KACd,CAAC;IACF,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;QACnB,WAAW,EAAE,4BAA4B;QACzC,SAAS,EAAE,CAAC;QACZ,SAAS,EAAE,EAAE;KACb,CAAC;IACF,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,oBAAoB,EAAE;QACzC,WAAW,EAAE,iCAAiC;QAC9C,QAAQ,EAAE,CAAC;QACX,QAAQ,EAAE,CAAC;KACX,CAAC;IACF,WAAW,EAAE,IAAI,CAAC,QAAQ,CACzB,IAAI,CAAC,OAAO,CAAC;QACZ,WAAW,EAAE,kCAAkC;QAC/C,OAAO,EAAE,KAAK;KACd,CAAC,CACF;CACD,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC;IAC7C,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE;QACrC,WAAW,EAAE,wBAAwB;QACrC,QAAQ,EAAE,CAAC;QACX,QAAQ,EAAE,CAAC;KACX,CAAC;CACF,CAAC,CAAC;AAMH,+EAA+E;AAC/E,kBAAkB;AAClB,+EAA+E;AAE/E,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,CAAC,MAAM,CAAC;IAC/C,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC;QAClB,WAAW,EAAE,kBAAkB;QAC/B,SAAS,EAAE,CAAC;KACZ,CAAC;IACF,cAAc,EAAE,IAAI,CAAC,QAAQ,CAC5B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE;QACzB,WAAW,EAAE,yCAAyC;KACtD,CAAC,CACF;IACD,cAAc,EAAE,IAAI,CAAC,QAAQ,CAC5B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE;QACzB,WAAW,EAAE,oCAAoC;KACjD,CAAC,CACF;CACD,CAAC,CAAC;AAIH,+EAA+E;AAC/E,iBAAiB;AACjB,+EAA+E;AAE/E,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC;IAC9C,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC;QAChB,WAAW,EAAE,+BAA+B;QAC5C,MAAM,EAAE,KAAK;KACb,CAAC;IACF,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;QACnB,WAAW,EAAE,sCAAsC;KACnD,CAAC;CACF,CAAC,CAAC;AAIH,+EAA+E;AAC/E,kBAAkB;AAClB,+EAA+E;AAE/E,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC;IAC3C,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC;QACxB,WAAW,EAAE,0CAA0C;QACvD,SAAS,EAAE,CAAC;KACZ,CAAC;IACF,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;QACnB,WAAW,EAAE,mCAAmC;QAChD,SAAS,EAAE,CAAC;KACZ,CAAC;IACF,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC;QACzB,WAAW,EACV,0EAA0E;KAC3E,CAAC;IACF,KAAK,EAAE,IAAI,CAAC,QAAQ,CACnB,IAAI,CAAC,KAAK,CACT,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EACrE;QACC,WAAW,EACV,+EAA+E;KAChF,CACD,CACD;IACD,MAAM,EAAE,IAAI,CAAC,QAAQ,CACpB,IAAI,CAAC,MAAM,CAAC;QACX,WAAW,EACV,+IAA+I;KAChJ,CAAC,CACF;CACD,CAAC,CAAC;AAsBH,+EAA+E;AAC/E,kBAAkB;AAClB,+EAA+E;AAE/E,MAAM,CAAC,MAAM,WAAW,GAA4B;IACnD,IAAI,EAAE,eAAe;IACrB,IAAI,EAAE,eAAe;IACrB,KAAK,EAAE,gBAAgB;IACvB,IAAI,EAAE,eAAe;IACrB,MAAM,EAAE,iBAAiB;IACzB,IAAI,EAAE,eAAe;IACrB,aAAa,EAAE,uBAAuB;IACtC,IAAI,EAAE,eAAe;IACrB,QAAQ,EAAE,kBAAkB;IAC5B,SAAS,EAAE,oBAAoB;IAC/B,QAAQ,EAAE,mBAAmB;IAC7B,KAAK,EAAE,gBAAgB;CACvB,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,QAAgB;IAC7C,OAAO,WAAW,CAAC,QAAQ,CAAC,CAAC;AAC9B,CAAC","sourcesContent":["/**\n * SDK Tool Types Export\n *\n * This file exports TypeBox schemas and TypeScript types for all built-in tools,\n * enabling type-safe tool integration for SDK consumers.\n *\n * @example\n * ```typescript\n * import type { ReadInput, EditInput, BashInput } from '@evalops/composer/sdk-tools';\n *\n * const readParams: ReadInput = {\n * path: '/path/to/file',\n * offset: 1,\n * limit: 100\n * };\n * ```\n */\n\nimport { type Static, type TSchema, Type } from \"@sinclair/typebox\";\n\n// ============================================================================\n// Read Tool\n// ============================================================================\n\nexport const ReadInputSchema = Type.Object({\n\tpath: Type.String({\n\t\tdescription: \"Path to the file to read (relative or absolute)\",\n\t\tminLength: 1,\n\t}),\n\toffset: Type.Optional(\n\t\tType.Integer({\n\t\t\tdescription: \"Line number to start reading from (1-indexed)\",\n\t\t\tminimum: 1,\n\t\t}),\n\t),\n\tlimit: Type.Optional(\n\t\tType.Integer({\n\t\t\tdescription: \"Maximum number of lines to read\",\n\t\t\tminimum: 1,\n\t\t}),\n\t),\n\tmode: Type.Optional(\n\t\tType.Union(\n\t\t\t[Type.Literal(\"normal\"), Type.Literal(\"head\"), Type.Literal(\"tail\")],\n\t\t\t{\n\t\t\t\tdescription: 'Reading mode: \"normal\", \"head\", or \"tail\"',\n\t\t\t\tdefault: \"normal\",\n\t\t\t},\n\t\t),\n\t),\n\tencoding: Type.Optional(\n\t\tType.Union(\n\t\t\t[\n\t\t\t\tType.Literal(\"utf-8\"),\n\t\t\t\tType.Literal(\"utf-16le\"),\n\t\t\t\tType.Literal(\"latin1\"),\n\t\t\t\tType.Literal(\"ascii\"),\n\t\t\t],\n\t\t\t{\n\t\t\t\tdescription: \"Text encoding for the file\",\n\t\t\t\tdefault: \"utf-8\",\n\t\t\t},\n\t\t),\n\t),\n});\n\nexport type ReadInput = Static<typeof ReadInputSchema>;\n\n// ============================================================================\n// Edit Tool\n// ============================================================================\n\nexport const EditOperationSchema = Type.Object({\n\toldText: Type.String({\n\t\tdescription: \"Exact text to find and replace\",\n\t\tminLength: 1,\n\t}),\n\tnewText: Type.Optional(\n\t\tType.String({\n\t\t\tdescription: \"Replacement text (omit or empty string to delete)\",\n\t\t\tdefault: \"\",\n\t\t}),\n\t),\n});\n\nexport const EditInputSchema = Type.Object({\n\tpath: Type.String({\n\t\tdescription: \"Path to the file to edit\",\n\t\tminLength: 1,\n\t}),\n\toldText: Type.Optional(\n\t\tType.String({\n\t\t\tdescription: \"Exact text to find and replace\",\n\t\t\tminLength: 1,\n\t\t}),\n\t),\n\tnewText: Type.Optional(\n\t\tType.String({\n\t\t\tdescription: \"New text to replace the old text with\",\n\t\t\tdefault: \"\",\n\t\t}),\n\t),\n\tedits: Type.Optional(\n\t\tType.Array(EditOperationSchema, {\n\t\t\tdescription: \"Multiple edits to apply sequentially\",\n\t\t\tminItems: 1,\n\t\t\tmaxItems: 50,\n\t\t}),\n\t),\n\treplaceAll: Type.Optional(\n\t\tType.Boolean({\n\t\t\tdescription: \"Replace all occurrences\",\n\t\t\tdefault: false,\n\t\t}),\n\t),\n\toccurrence: Type.Optional(\n\t\tType.Integer({\n\t\t\tdescription: \"Which occurrence to replace (1-based)\",\n\t\t\tminimum: 1,\n\t\t\tdefault: 1,\n\t\t}),\n\t),\n\tdryRun: Type.Optional(\n\t\tType.Boolean({\n\t\t\tdescription: \"Preview without writing changes\",\n\t\t\tdefault: false,\n\t\t}),\n\t),\n});\n\nexport type EditInput = Static<typeof EditInputSchema>;\n\n// ============================================================================\n// Write Tool\n// ============================================================================\n\nexport const WriteInputSchema = Type.Object({\n\tpath: Type.String({\n\t\tdescription: \"Path to the file to write\",\n\t\tminLength: 1,\n\t}),\n\tcontent: Type.String({\n\t\tdescription: \"Content to write to the file\",\n\t}),\n});\n\nexport type WriteInput = Static<typeof WriteInputSchema>;\n\n// ============================================================================\n// Bash Tool\n// ============================================================================\n\nexport const BashInputSchema = Type.Object({\n\tcommand: Type.String({\n\t\tdescription: \"The command to execute\",\n\t\tminLength: 1,\n\t}),\n\ttimeout: Type.Optional(\n\t\tType.Integer({\n\t\t\tdescription: \"Timeout in milliseconds (max 600000)\",\n\t\t\tminimum: 1,\n\t\t\tmaximum: 600000,\n\t\t}),\n\t),\n\tdescription: Type.Optional(\n\t\tType.String({\n\t\t\tdescription: \"Clear description of what this command does (5-10 words)\",\n\t\t}),\n\t),\n\trunInBackground: Type.Optional(\n\t\tType.Boolean({\n\t\t\tdescription: \"Run command in background\",\n\t\t\tdefault: false,\n\t\t}),\n\t),\n});\n\nexport type BashInput = Static<typeof BashInputSchema>;\n\n// ============================================================================\n// Search (Grep) Tool\n// ============================================================================\n\nexport const SearchInputSchema = Type.Object({\n\tpattern: Type.String({\n\t\tdescription: \"Regular expression pattern to search for\",\n\t\tminLength: 1,\n\t}),\n\tpath: Type.Optional(\n\t\tType.String({\n\t\t\tdescription: \"File or directory to search in\",\n\t\t}),\n\t),\n\tglob: Type.Optional(\n\t\tType.String({\n\t\t\tdescription: 'Glob pattern to filter files (e.g., \"*.js\", \"*.{ts,tsx}\")',\n\t\t}),\n\t),\n\toutputMode: Type.Optional(\n\t\tType.Union(\n\t\t\t[\n\t\t\t\tType.Literal(\"content\"),\n\t\t\t\tType.Literal(\"files_with_matches\"),\n\t\t\t\tType.Literal(\"count\"),\n\t\t\t],\n\t\t\t{\n\t\t\t\tdescription: \"Output mode\",\n\t\t\t\tdefault: \"files_with_matches\",\n\t\t\t},\n\t\t),\n\t),\n\tcontextBefore: Type.Optional(\n\t\tType.Integer({\n\t\t\tdescription: \"Lines of context before each match\",\n\t\t\tminimum: 0,\n\t\t}),\n\t),\n\tcontextAfter: Type.Optional(\n\t\tType.Integer({\n\t\t\tdescription: \"Lines of context after each match\",\n\t\t\tminimum: 0,\n\t\t}),\n\t),\n\tcaseInsensitive: Type.Optional(\n\t\tType.Boolean({\n\t\t\tdescription: \"Case insensitive search\",\n\t\t\tdefault: false,\n\t\t}),\n\t),\n\theadLimit: Type.Optional(\n\t\tType.Integer({\n\t\t\tdescription: \"Limit output to first N entries\",\n\t\t\tminimum: 1,\n\t\t}),\n\t),\n\tmultiline: Type.Optional(\n\t\tType.Boolean({\n\t\t\tdescription: \"Enable multiline mode\",\n\t\t\tdefault: false,\n\t\t}),\n\t),\n});\n\nexport type SearchInput = Static<typeof SearchInputSchema>;\n\n// ============================================================================\n// List (Glob) Tool\n// ============================================================================\n\nexport const ListInputSchema = Type.Object({\n\tpattern: Type.String({\n\t\tdescription: 'Glob pattern to match files (e.g., \"**/*.ts\")',\n\t\tminLength: 1,\n\t}),\n\tpath: Type.Optional(\n\t\tType.String({\n\t\t\tdescription: \"Directory to search in\",\n\t\t}),\n\t),\n});\n\nexport type ListInput = Static<typeof ListInputSchema>;\n\n// ============================================================================\n// Notebook Edit Tool\n// ============================================================================\n\nexport const NotebookEditInputSchema = Type.Object({\n\tpath: Type.String({\n\t\tdescription: \"Path to the Jupyter notebook file (.ipynb)\",\n\t\tminLength: 1,\n\t}),\n\tcellId: Type.Optional(\n\t\tType.String({\n\t\t\tdescription: \"Cell ID to edit\",\n\t\t}),\n\t),\n\tcellIndex: Type.Optional(\n\t\tType.Integer({\n\t\t\tdescription: \"Cell index (0-based) to edit\",\n\t\t\tminimum: 0,\n\t\t}),\n\t),\n\tnewSource: Type.String({\n\t\tdescription: \"New source content for the cell\",\n\t}),\n\tcellType: Type.Optional(\n\t\tType.Union([Type.Literal(\"code\"), Type.Literal(\"markdown\")], {\n\t\t\tdescription: \"Cell type\",\n\t\t}),\n\t),\n\teditMode: Type.Optional(\n\t\tType.Union(\n\t\t\t[Type.Literal(\"replace\"), Type.Literal(\"insert\"), Type.Literal(\"delete\")],\n\t\t\t{\n\t\t\t\tdescription: \"Edit mode\",\n\t\t\t\tdefault: \"replace\",\n\t\t\t},\n\t\t),\n\t),\n});\n\nexport type NotebookEditInput = Static<typeof NotebookEditInputSchema>;\n\n// ============================================================================\n// Todo Tool\n// ============================================================================\n\nexport const TodoItemSchema = Type.Object({\n\tcontent: Type.String({\n\t\tdescription: \"The task description\",\n\t\tminLength: 1,\n\t}),\n\tstatus: Type.Union(\n\t\t[\n\t\t\tType.Literal(\"pending\"),\n\t\t\tType.Literal(\"in_progress\"),\n\t\t\tType.Literal(\"completed\"),\n\t\t],\n\t\t{\n\t\t\tdescription: \"Task status\",\n\t\t},\n\t),\n\tactiveForm: Type.String({\n\t\tdescription:\n\t\t\t'Present continuous form shown during execution (e.g., \"Running tests\")',\n\t\tminLength: 1,\n\t}),\n});\n\nexport const TodoInputSchema = Type.Object({\n\ttodos: Type.Array(TodoItemSchema, {\n\t\tdescription: \"The updated todo list\",\n\t}),\n});\n\nexport type TodoItem = Static<typeof TodoItemSchema>;\nexport type TodoInput = Static<typeof TodoInputSchema>;\n\n// ============================================================================\n// Ask User Tool\n// ============================================================================\n\nexport const QuestionOptionSchema = Type.Object({\n\tlabel: Type.String({\n\t\tdescription: \"Display text for this option (1-5 words)\",\n\t\tminLength: 1,\n\t\tmaxLength: 50,\n\t}),\n\tdescription: Type.String({\n\t\tdescription: \"Explanation of what this option means\",\n\t\tminLength: 1,\n\t\tmaxLength: 200,\n\t}),\n});\n\nexport const QuestionSchema = Type.Object({\n\tquestion: Type.String({\n\t\tdescription: \"The complete question to ask\",\n\t\tminLength: 5,\n\t\tmaxLength: 500,\n\t}),\n\theader: Type.String({\n\t\tdescription: \"Short label (max 12 chars)\",\n\t\tminLength: 1,\n\t\tmaxLength: 12,\n\t}),\n\toptions: Type.Array(QuestionOptionSchema, {\n\t\tdescription: \"Available choices (2-4 options)\",\n\t\tminItems: 2,\n\t\tmaxItems: 4,\n\t}),\n\tmultiSelect: Type.Optional(\n\t\tType.Boolean({\n\t\t\tdescription: \"Allow selecting multiple options\",\n\t\t\tdefault: false,\n\t\t}),\n\t),\n});\n\nexport const AskUserInputSchema = Type.Object({\n\tquestions: Type.Array(QuestionSchema, {\n\t\tdescription: \"Questions to ask (1-4)\",\n\t\tminItems: 1,\n\t\tmaxItems: 4,\n\t}),\n});\n\nexport type AskUserQuestionOption = Static<typeof QuestionOptionSchema>;\nexport type AskUserQuestion = Static<typeof QuestionSchema>;\nexport type AskUserInput = Static<typeof AskUserInputSchema>;\n\n// ============================================================================\n// Web Search Tool\n// ============================================================================\n\nexport const WebSearchInputSchema = Type.Object({\n\tquery: Type.String({\n\t\tdescription: \"The search query\",\n\t\tminLength: 2,\n\t}),\n\tallowedDomains: Type.Optional(\n\t\tType.Array(Type.String(), {\n\t\t\tdescription: \"Only include results from these domains\",\n\t\t}),\n\t),\n\tblockedDomains: Type.Optional(\n\t\tType.Array(Type.String(), {\n\t\t\tdescription: \"Exclude results from these domains\",\n\t\t}),\n\t),\n});\n\nexport type WebSearchInput = Static<typeof WebSearchInputSchema>;\n\n// ============================================================================\n// Web Fetch Tool\n// ============================================================================\n\nexport const WebFetchInputSchema = Type.Object({\n\turl: Type.String({\n\t\tdescription: \"The URL to fetch content from\",\n\t\tformat: \"uri\",\n\t}),\n\tprompt: Type.String({\n\t\tdescription: \"Prompt to run on the fetched content\",\n\t}),\n});\n\nexport type WebFetchInput = Static<typeof WebFetchInputSchema>;\n\n// ============================================================================\n// Agent/Task Tool\n// ============================================================================\n\nexport const AgentInputSchema = Type.Object({\n\tdescription: Type.String({\n\t\tdescription: \"Short (3-5 word) description of the task\",\n\t\tminLength: 1,\n\t}),\n\tprompt: Type.String({\n\t\tdescription: \"The task for the agent to perform\",\n\t\tminLength: 1,\n\t}),\n\tsubagentType: Type.String({\n\t\tdescription:\n\t\t\t\"The type of specialized agent to use (e.g., 'explore', 'plan', 'review')\",\n\t}),\n\tmodel: Type.Optional(\n\t\tType.Union(\n\t\t\t[Type.Literal(\"sonnet\"), Type.Literal(\"opus\"), Type.Literal(\"haiku\")],\n\t\t\t{\n\t\t\t\tdescription:\n\t\t\t\t\t\"Model to use for this agent. Prefer 'haiku' for quick, straightforward tasks.\",\n\t\t\t},\n\t\t),\n\t),\n\tresume: Type.Optional(\n\t\tType.String({\n\t\t\tdescription:\n\t\t\t\t\"Agent transcript ID to resume from. If provided, the agent will continue from the previous execution, building on prior context and analysis.\",\n\t\t}),\n\t),\n});\n\nexport type AgentInput = Static<typeof AgentInputSchema>;\n\n// ============================================================================\n// All Tool Input Types Union\n// ============================================================================\n\nexport type ToolInputSchemas =\n\t| ReadInput\n\t| EditInput\n\t| WriteInput\n\t| BashInput\n\t| SearchInput\n\t| ListInput\n\t| NotebookEditInput\n\t| TodoInput\n\t| AskUserInput\n\t| WebSearchInput\n\t| WebFetchInput\n\t| AgentInput;\n\n// ============================================================================\n// Schema Registry\n// ============================================================================\n\nexport const toolSchemas: Record<string, TSchema> = {\n\tread: ReadInputSchema,\n\tedit: EditInputSchema,\n\twrite: WriteInputSchema,\n\tbash: BashInputSchema,\n\tsearch: SearchInputSchema,\n\tlist: ListInputSchema,\n\tnotebook_edit: NotebookEditInputSchema,\n\ttodo: TodoInputSchema,\n\task_user: AskUserInputSchema,\n\twebsearch: WebSearchInputSchema,\n\twebfetch: WebFetchInputSchema,\n\tagent: AgentInputSchema,\n};\n\n/**\n * Get the TypeBox schema for a tool by name.\n */\nexport function getToolSchema(toolName: string): TSchema | undefined {\n\treturn toolSchemas[toolName];\n}\n"]}
1
+ {"version":3,"file":"sdk-tools.js","sourceRoot":"","sources":["../src/sdk-tools.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * SDK Tool Types Export\n *\n * This file exports TypeBox schemas and TypeScript types for all built-in tools,\n * enabling type-safe tool integration for SDK consumers.\n *\n * @example\n * ```typescript\n * import type { ReadInput, EditInput, BashInput } from '@evalops/composer/sdk-tools';\n *\n * const readParams: ReadInput = {\n * path: '/path/to/file',\n * offset: 1,\n * limit: 100\n * };\n * ```\n */\n\nimport { type Static, type TSchema, Type } from \"@sinclair/typebox\";\n\n// ============================================================================\n// Read Tool\n// ============================================================================\n\nexport const ReadInputSchema = Type.Object({\n\tpath: Type.String({\n\t\tdescription: \"Path to the file to read (relative or absolute)\",\n\t\tminLength: 1,\n\t}),\n\toffset: Type.Optional(\n\t\tType.Integer({\n\t\t\tdescription: \"Line number to start reading from (1-indexed)\",\n\t\t\tminimum: 1,\n\t\t}),\n\t),\n\tlimit: Type.Optional(\n\t\tType.Integer({\n\t\t\tdescription: \"Maximum number of lines to read\",\n\t\t\tminimum: 1,\n\t\t}),\n\t),\n\tmode: Type.Optional(\n\t\tType.Union(\n\t\t\t[Type.Literal(\"normal\"), Type.Literal(\"head\"), Type.Literal(\"tail\")],\n\t\t\t{\n\t\t\t\tdescription: 'Reading mode: \"normal\", \"head\", or \"tail\"',\n\t\t\t\tdefault: \"normal\",\n\t\t\t},\n\t\t),\n\t),\n\tencoding: Type.Optional(\n\t\tType.Union(\n\t\t\t[\n\t\t\t\tType.Literal(\"utf-8\"),\n\t\t\t\tType.Literal(\"utf-16le\"),\n\t\t\t\tType.Literal(\"latin1\"),\n\t\t\t\tType.Literal(\"ascii\"),\n\t\t\t],\n\t\t\t{\n\t\t\t\tdescription: \"Text encoding for the file\",\n\t\t\t\tdefault: \"utf-8\",\n\t\t\t},\n\t\t),\n\t),\n});\n\nexport type ReadInput = Static<typeof ReadInputSchema>;\n\n// ============================================================================\n// Edit Tool\n// ============================================================================\n\nexport const EditOperationSchema = Type.Object({\n\toldText: Type.String({\n\t\tdescription: \"Exact text to find and replace\",\n\t\tminLength: 1,\n\t}),\n\tnewText: Type.Optional(\n\t\tType.String({\n\t\t\tdescription: \"Replacement text (omit or empty string to delete)\",\n\t\t\tdefault: \"\",\n\t\t}),\n\t),\n});\n\nexport const EditInputSchema = Type.Object({\n\tpath: Type.String({\n\t\tdescription: \"Path to the file to edit\",\n\t\tminLength: 1,\n\t}),\n\toldText: Type.Optional(\n\t\tType.String({\n\t\t\tdescription: \"Exact text to find and replace\",\n\t\t\tminLength: 1,\n\t\t}),\n\t),\n\tnewText: Type.Optional(\n\t\tType.String({\n\t\t\tdescription: \"New text to replace the old text with\",\n\t\t\tdefault: \"\",\n\t\t}),\n\t),\n\tedits: Type.Optional(\n\t\tType.Array(EditOperationSchema, {\n\t\t\tdescription: \"Multiple edits to apply sequentially\",\n\t\t\tminItems: 1,\n\t\t\tmaxItems: 50,\n\t\t}),\n\t),\n\treplaceAll: Type.Optional(\n\t\tType.Boolean({\n\t\t\tdescription: \"Replace all occurrences\",\n\t\t\tdefault: false,\n\t\t}),\n\t),\n\toccurrence: Type.Optional(\n\t\tType.Integer({\n\t\t\tdescription: \"Which occurrence to replace (1-based)\",\n\t\t\tminimum: 1,\n\t\t\tdefault: 1,\n\t\t}),\n\t),\n\tdryRun: Type.Optional(\n\t\tType.Boolean({\n\t\t\tdescription: \"Preview without writing changes\",\n\t\t\tdefault: false,\n\t\t}),\n\t),\n});\n\nexport type EditInput = Static<typeof EditInputSchema>;\n\n// ============================================================================\n// Write Tool\n// ============================================================================\n\nexport const WriteInputSchema = Type.Object({\n\tpath: Type.String({\n\t\tdescription: \"Path to the file to write\",\n\t\tminLength: 1,\n\t}),\n\tcontent: Type.String({\n\t\tdescription: \"Content to write to the file\",\n\t}),\n});\n\nexport type WriteInput = Static<typeof WriteInputSchema>;\n\n// ============================================================================\n// Bash Tool\n// ============================================================================\n\nexport const BashInputSchema = Type.Object({\n\tcommand: Type.String({\n\t\tdescription: \"The command to execute\",\n\t\tminLength: 1,\n\t}),\n\ttimeout: Type.Optional(\n\t\tType.Integer({\n\t\t\tdescription: \"Timeout in milliseconds (max 600000)\",\n\t\t\tminimum: 1,\n\t\t\tmaximum: 600000,\n\t\t}),\n\t),\n\tdescription: Type.Optional(\n\t\tType.String({\n\t\t\tdescription: \"Clear description of what this command does (5-10 words)\",\n\t\t}),\n\t),\n\trunInBackground: Type.Optional(\n\t\tType.Boolean({\n\t\t\tdescription: \"Run command in background\",\n\t\t\tdefault: false,\n\t\t}),\n\t),\n});\n\nexport type BashInput = Static<typeof BashInputSchema>;\n\n// ============================================================================\n// Search (Grep) Tool\n// ============================================================================\n\nexport const SearchInputSchema = Type.Object({\n\tpattern: Type.String({\n\t\tdescription: \"Regular expression pattern to search for\",\n\t\tminLength: 1,\n\t}),\n\tpath: Type.Optional(\n\t\tType.String({\n\t\t\tdescription: \"File or directory to search in\",\n\t\t}),\n\t),\n\tglob: Type.Optional(\n\t\tType.String({\n\t\t\tdescription: 'Glob pattern to filter files (e.g., \"*.js\", \"*.{ts,tsx}\")',\n\t\t}),\n\t),\n\toutputMode: Type.Optional(\n\t\tType.Union(\n\t\t\t[\n\t\t\t\tType.Literal(\"content\"),\n\t\t\t\tType.Literal(\"files_with_matches\"),\n\t\t\t\tType.Literal(\"count\"),\n\t\t\t],\n\t\t\t{\n\t\t\t\tdescription: \"Output mode\",\n\t\t\t\tdefault: \"files_with_matches\",\n\t\t\t},\n\t\t),\n\t),\n\tcontextBefore: Type.Optional(\n\t\tType.Integer({\n\t\t\tdescription: \"Lines of context before each match\",\n\t\t\tminimum: 0,\n\t\t}),\n\t),\n\tcontextAfter: Type.Optional(\n\t\tType.Integer({\n\t\t\tdescription: \"Lines of context after each match\",\n\t\t\tminimum: 0,\n\t\t}),\n\t),\n\tcaseInsensitive: Type.Optional(\n\t\tType.Boolean({\n\t\t\tdescription: \"Case insensitive search\",\n\t\t\tdefault: false,\n\t\t}),\n\t),\n\theadLimit: Type.Optional(\n\t\tType.Integer({\n\t\t\tdescription: \"Limit output to first N entries\",\n\t\t\tminimum: 1,\n\t\t}),\n\t),\n\tmultiline: Type.Optional(\n\t\tType.Boolean({\n\t\t\tdescription: \"Enable multiline mode\",\n\t\t\tdefault: false,\n\t\t}),\n\t),\n});\n\nexport type SearchInput = Static<typeof SearchInputSchema>;\n\n// ============================================================================\n// List (Glob) Tool\n// ============================================================================\n\nexport const ListInputSchema = Type.Object({\n\tpattern: Type.String({\n\t\tdescription: 'Glob pattern to match files (e.g., \"**/*.ts\")',\n\t\tminLength: 1,\n\t}),\n\tpath: Type.Optional(\n\t\tType.String({\n\t\t\tdescription: \"Directory to search in\",\n\t\t}),\n\t),\n});\n\nexport type ListInput = Static<typeof ListInputSchema>;\n\n// ============================================================================\n// Notebook Edit Tool\n// ============================================================================\n\nexport const NotebookEditInputSchema = Type.Object({\n\tpath: Type.String({\n\t\tdescription: \"Path to the Jupyter notebook file (.ipynb)\",\n\t\tminLength: 1,\n\t}),\n\tcellId: Type.Optional(\n\t\tType.String({\n\t\t\tdescription: \"Cell ID to edit\",\n\t\t}),\n\t),\n\tcellIndex: Type.Optional(\n\t\tType.Integer({\n\t\t\tdescription: \"Cell index (0-based) to edit\",\n\t\t\tminimum: 0,\n\t\t}),\n\t),\n\tnewSource: Type.String({\n\t\tdescription: \"New source content for the cell\",\n\t}),\n\tcellType: Type.Optional(\n\t\tType.Union([Type.Literal(\"code\"), Type.Literal(\"markdown\")], {\n\t\t\tdescription: \"Cell type\",\n\t\t}),\n\t),\n\teditMode: Type.Optional(\n\t\tType.Union(\n\t\t\t[Type.Literal(\"replace\"), Type.Literal(\"insert\"), Type.Literal(\"delete\")],\n\t\t\t{\n\t\t\t\tdescription: \"Edit mode\",\n\t\t\t\tdefault: \"replace\",\n\t\t\t},\n\t\t),\n\t),\n});\n\nexport type NotebookEditInput = Static<typeof NotebookEditInputSchema>;\n\n// ============================================================================\n// Todo Tool\n// ============================================================================\n\nexport const TodoItemSchema = Type.Object({\n\tcontent: Type.String({\n\t\tdescription: \"The task description\",\n\t\tminLength: 1,\n\t}),\n\tstatus: Type.Union(\n\t\t[\n\t\t\tType.Literal(\"pending\"),\n\t\t\tType.Literal(\"in_progress\"),\n\t\t\tType.Literal(\"completed\"),\n\t\t],\n\t\t{\n\t\t\tdescription: \"Task status\",\n\t\t},\n\t),\n\tactiveForm: Type.String({\n\t\tdescription:\n\t\t\t'Present continuous form shown during execution (e.g., \"Running tests\")',\n\t\tminLength: 1,\n\t}),\n});\n\nexport const TodoInputSchema = Type.Object({\n\ttodos: Type.Array(TodoItemSchema, {\n\t\tdescription: \"The updated todo list\",\n\t}),\n});\n\nexport type TodoItem = Static<typeof TodoItemSchema>;\nexport type TodoInput = Static<typeof TodoInputSchema>;\n\n// ============================================================================\n// Ask User Tool\n// ============================================================================\n\nexport const AskUserOptionPreviewSchema = Type.Object({\n\tkind: Type.Union(\n\t\t[Type.Literal(\"markdown\"), Type.Literal(\"text\"), Type.Literal(\"diff\")],\n\t\t{\n\t\t\tdescription:\n\t\t\t\t\"Preview format. Raw HTML is intentionally unsupported; use markdown, text, or diff.\",\n\t\t},\n\t),\n\ttitle: Type.Optional(\n\t\tType.String({\n\t\t\tdescription: \"Optional short preview title.\",\n\t\t\tminLength: 1,\n\t\t\tmaxLength: 80,\n\t\t}),\n\t),\n\tbody: Type.String({\n\t\tdescription: \"Preview content shown with the option.\",\n\t\tminLength: 1,\n\t\tmaxLength: 12_000,\n\t}),\n});\n\nexport const QuestionOptionSchema = Type.Object({\n\tlabel: Type.String({\n\t\tdescription: \"Display text for this option (1-5 words)\",\n\t\tminLength: 1,\n\t\tmaxLength: 50,\n\t}),\n\tdescription: Type.String({\n\t\tdescription: \"Explanation of what this option means\",\n\t\tminLength: 1,\n\t\tmaxLength: 200,\n\t}),\n\tpreview: Type.Optional(AskUserOptionPreviewSchema),\n});\n\nexport const QuestionSchema = Type.Object({\n\tquestion: Type.String({\n\t\tdescription: \"The complete question to ask\",\n\t\tminLength: 5,\n\t\tmaxLength: 500,\n\t}),\n\theader: Type.String({\n\t\tdescription: \"Short label (max 12 chars)\",\n\t\tminLength: 1,\n\t\tmaxLength: 12,\n\t}),\n\toptions: Type.Array(QuestionOptionSchema, {\n\t\tdescription: \"Available choices (2-4 options)\",\n\t\tminItems: 2,\n\t\tmaxItems: 4,\n\t}),\n\tmultiSelect: Type.Optional(\n\t\tType.Boolean({\n\t\t\tdescription: \"Allow selecting multiple options\",\n\t\t\tdefault: false,\n\t\t}),\n\t),\n});\n\nexport const AskUserInputSchema = Type.Object({\n\tquestions: Type.Array(QuestionSchema, {\n\t\tdescription: \"Questions to ask (1-4)\",\n\t\tminItems: 1,\n\t\tmaxItems: 4,\n\t}),\n});\n\nexport type AskUserQuestionOption = Static<typeof QuestionOptionSchema>;\nexport type AskUserOptionPreview = Static<typeof AskUserOptionPreviewSchema>;\nexport type AskUserQuestion = Static<typeof QuestionSchema>;\nexport type AskUserInput = Static<typeof AskUserInputSchema>;\n\n// ============================================================================\n// Web Search Tool\n// ============================================================================\n\nexport const WebSearchInputSchema = Type.Object({\n\tquery: Type.String({\n\t\tdescription: \"The search query\",\n\t\tminLength: 2,\n\t}),\n\tallowedDomains: Type.Optional(\n\t\tType.Array(Type.String(), {\n\t\t\tdescription: \"Only include results from these domains\",\n\t\t}),\n\t),\n\tblockedDomains: Type.Optional(\n\t\tType.Array(Type.String(), {\n\t\t\tdescription: \"Exclude results from these domains\",\n\t\t}),\n\t),\n});\n\nexport type WebSearchInput = Static<typeof WebSearchInputSchema>;\n\n// ============================================================================\n// Web Fetch Tool\n// ============================================================================\n\nexport const WebFetchInputSchema = Type.Object({\n\turl: Type.String({\n\t\tdescription: \"The URL to fetch content from\",\n\t\tformat: \"uri\",\n\t}),\n\tprompt: Type.String({\n\t\tdescription: \"Prompt to run on the fetched content\",\n\t}),\n});\n\nexport type WebFetchInput = Static<typeof WebFetchInputSchema>;\n\n// ============================================================================\n// Agent/Task Tool\n// ============================================================================\n\nexport const AgentInputSchema = Type.Object({\n\tdescription: Type.String({\n\t\tdescription: \"Short (3-5 word) description of the task\",\n\t\tminLength: 1,\n\t}),\n\tprompt: Type.String({\n\t\tdescription: \"The task for the agent to perform\",\n\t\tminLength: 1,\n\t}),\n\tsubagentType: Type.String({\n\t\tdescription:\n\t\t\t\"The type of specialized agent to use (e.g., 'explore', 'plan', 'review')\",\n\t}),\n\tmodel: Type.Optional(\n\t\tType.Union(\n\t\t\t[Type.Literal(\"sonnet\"), Type.Literal(\"opus\"), Type.Literal(\"haiku\")],\n\t\t\t{\n\t\t\t\tdescription:\n\t\t\t\t\t\"Model to use for this agent. Prefer 'haiku' for quick, straightforward tasks.\",\n\t\t\t},\n\t\t),\n\t),\n\tresume: Type.Optional(\n\t\tType.String({\n\t\t\tdescription:\n\t\t\t\t\"Agent transcript ID to resume from. If provided, the agent will continue from the previous execution, building on prior context and analysis.\",\n\t\t}),\n\t),\n});\n\nexport type AgentInput = Static<typeof AgentInputSchema>;\n\n// ============================================================================\n// All Tool Input Types Union\n// ============================================================================\n\nexport type ToolInputSchemas =\n\t| ReadInput\n\t| EditInput\n\t| WriteInput\n\t| BashInput\n\t| SearchInput\n\t| ListInput\n\t| NotebookEditInput\n\t| TodoInput\n\t| AskUserInput\n\t| WebSearchInput\n\t| WebFetchInput\n\t| AgentInput;\n\n// ============================================================================\n// Schema Registry\n// ============================================================================\n\nexport const toolSchemas: Record<string, TSchema> = {\n\tread: ReadInputSchema,\n\tedit: EditInputSchema,\n\twrite: WriteInputSchema,\n\tbash: BashInputSchema,\n\tsearch: SearchInputSchema,\n\tlist: ListInputSchema,\n\tnotebook_edit: NotebookEditInputSchema,\n\ttodo: TodoInputSchema,\n\task_user: AskUserInputSchema,\n\twebsearch: WebSearchInputSchema,\n\twebfetch: WebFetchInputSchema,\n\tagent: AgentInputSchema,\n};\n\n/**\n * Get the TypeBox schema for a tool by name.\n */\nexport function getToolSchema(toolName: string): TSchema | undefined {\n\treturn toolSchemas[toolName];\n}\n"]}
@@ -12,9 +12,33 @@ export interface WebServerConfig {
12
12
  defaultApprovalMode: ApprovalMode;
13
13
  defaultProvider: string;
14
14
  defaultModelId: string;
15
+ hostedRunner?: HostedRunnerContext;
16
+ }
17
+ export interface HostedRunnerContext {
18
+ enabled: true;
19
+ runnerSessionId: string;
20
+ ownerInstanceId?: string;
21
+ workspaceRoot: string;
22
+ snapshotRoot?: string;
23
+ listenHost?: string;
24
+ listenPort?: number;
25
+ workspaceId?: string;
26
+ agentRunId?: string;
27
+ attachAudience?: string;
28
+ configuredMaestroSessionId?: string;
29
+ activeMaestroSessionId?: string;
30
+ draining?: boolean;
31
+ lastDrain?: {
32
+ status: string;
33
+ manifestPath: string;
34
+ drainedAt: string;
35
+ reason?: string;
36
+ requestedBy?: string;
37
+ };
15
38
  }
16
39
  export interface WebServerServices {
17
40
  createAgent: (model: RegisteredModel, thinking: ThinkingLevel, approval: ApprovalMode, options?: {
41
+ cwd?: string;
18
42
  enableClientTools?: boolean;
19
43
  useClientAskUser?: boolean;
20
44
  includeVscodeTools?: boolean;
@@ -25,6 +49,7 @@ export interface WebServerServices {
25
49
  toolRetryService?: ToolRetryService;
26
50
  }) => Promise<Agent>;
27
51
  createBackgroundAgent: (model: RegisteredModel, options?: {
52
+ cwd?: string;
28
53
  systemPrompt?: string;
29
54
  }) => Promise<Agent>;
30
55
  getRegisteredModel: (input: string | null | undefined) => Promise<RegisteredModel>;
@@ -1 +1 @@
1
- {"version":3,"file":"app-context.d.ts","sourceRoot":"","sources":["../../src/server/app-context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACX,qBAAqB,EACrB,YAAY,EACZ,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AACxE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAE5E,MAAM,WAAW,eAAe;IAC/B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,YAAY,CAAC;IAClC,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,iBAAiB;IACjC,WAAW,EAAE,CACZ,KAAK,EAAE,eAAe,EACtB,QAAQ,EAAE,aAAa,EACvB,QAAQ,EAAE,YAAY,EACtB,OAAO,CAAC,EAAE;QACT,iBAAiB,CAAC,EAAE,OAAO,CAAC;QAC5B,gBAAgB,CAAC,EAAE,OAAO,CAAC;QAC3B,kBAAkB,CAAC,EAAE,OAAO,CAAC;QAC7B,qBAAqB,CAAC,EAAE,OAAO,CAAC;QAChC,qBAAqB,CAAC,EAAE,OAAO,CAAC;QAChC,eAAe,CAAC,EAAE,qBAAqB,CAAC;QACxC,iBAAiB,CAAC,EAAE,0BAA0B,CAAC;QAC/C,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;KACpC,KACG,OAAO,CAAC,KAAK,CAAC,CAAC;IACpB,qBAAqB,EAAE,CACtB,KAAK,EAAE,eAAe,EACtB,OAAO,CAAC,EAAE;QACT,YAAY,CAAC,EAAE,MAAM,CAAC;KACtB,KACG,OAAO,CAAC,KAAK,CAAC,CAAC;IACpB,kBAAkB,EAAE,CACnB,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,KAC5B,OAAO,CAAC,eAAe,CAAC,CAAC;IAC9B,mBAAmB,EAAE,MAAM;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IACjE,gBAAgB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;IAChE,iBAAiB,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;IACpD,UAAU,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IAChC,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC3C,sBAAsB,EAAE,sBAAsB,CAAC;CAC/C;AAED,MAAM,MAAM,gBAAgB,GAAG,eAAe,GAAG,iBAAiB,CAAC"}
1
+ {"version":3,"file":"app-context.d.ts","sourceRoot":"","sources":["../../src/server/app-context.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"app-context.js","sourceRoot":"","sources":["../../src/server/app-context.ts"],"names":[],"mappings":"","sourcesContent":["import type { IncomingMessage, ServerResponse } from \"node:http\";\nimport type {\n\tActionApprovalService,\n\tApprovalMode,\n} from \"../agent/action-approval.js\";\nimport type { Agent } from \"../agent/index.js\";\nimport type { ToolRetryService } from \"../agent/tool-retry.js\";\nimport type { ClientToolExecutionService } from \"../agent/transport.js\";\nimport type { ThinkingLevel } from \"../agent/types.js\";\nimport type { RegisteredModel } from \"../models/registry.js\";\nimport type { AuthCredential } from \"../providers/auth.js\";\nimport type { HeadlessRuntimeService } from \"./headless-runtime-service.js\";\n\nexport interface WebServerConfig {\n\tcorsHeaders: Record<string, string>;\n\tstaticMaxAge: number;\n\tdefaultApprovalMode: ApprovalMode;\n\tdefaultProvider: string;\n\tdefaultModelId: string;\n}\n\nexport interface WebServerServices {\n\tcreateAgent: (\n\t\tmodel: RegisteredModel,\n\t\tthinking: ThinkingLevel,\n\t\tapproval: ApprovalMode,\n\t\toptions?: {\n\t\t\tenableClientTools?: boolean;\n\t\t\tuseClientAskUser?: boolean;\n\t\t\tincludeVscodeTools?: boolean;\n\t\t\tincludeJetBrainsTools?: boolean;\n\t\t\tincludeConductorTools?: boolean;\n\t\t\tapprovalService?: ActionApprovalService;\n\t\t\tclientToolService?: ClientToolExecutionService;\n\t\t\ttoolRetryService?: ToolRetryService;\n\t\t},\n\t) => Promise<Agent>;\n\tcreateBackgroundAgent: (\n\t\tmodel: RegisteredModel,\n\t\toptions?: {\n\t\t\tsystemPrompt?: string;\n\t\t},\n\t) => Promise<Agent>;\n\tgetRegisteredModel: (\n\t\tinput: string | null | undefined,\n\t) => Promise<RegisteredModel>;\n\tgetCurrentSelection: () => { provider: string; modelId: string };\n\tensureCredential: (provider: string) => Promise<AuthCredential>;\n\tsetModelSelection: (model: RegisteredModel) => void;\n\tacquireSse: () => symbol | null;\n\treleaseSse: (token: symbol | null) => void;\n\theadlessRuntimeService: HeadlessRuntimeService;\n}\n\nexport type WebServerContext = WebServerConfig & WebServerServices;\n"]}
1
+ {"version":3,"file":"app-context.js","sourceRoot":"","sources":["../../src/server/app-context.ts"],"names":[],"mappings":"","sourcesContent":["import type { IncomingMessage, ServerResponse } from \"node:http\";\nimport type {\n\tActionApprovalService,\n\tApprovalMode,\n} from \"../agent/action-approval.js\";\nimport type { Agent } from \"../agent/index.js\";\nimport type { ToolRetryService } from \"../agent/tool-retry.js\";\nimport type { ClientToolExecutionService } from \"../agent/transport.js\";\nimport type { ThinkingLevel } from \"../agent/types.js\";\nimport type { RegisteredModel } from \"../models/registry.js\";\nimport type { AuthCredential } from \"../providers/auth.js\";\nimport type { HeadlessRuntimeService } from \"./headless-runtime-service.js\";\n\nexport interface WebServerConfig {\n\tcorsHeaders: Record<string, string>;\n\tstaticMaxAge: number;\n\tdefaultApprovalMode: ApprovalMode;\n\tdefaultProvider: string;\n\tdefaultModelId: string;\n\thostedRunner?: HostedRunnerContext;\n}\n\nexport interface HostedRunnerContext {\n\tenabled: true;\n\trunnerSessionId: string;\n\townerInstanceId?: string;\n\tworkspaceRoot: string;\n\tsnapshotRoot?: string;\n\tlistenHost?: string;\n\tlistenPort?: number;\n\tworkspaceId?: string;\n\tagentRunId?: string;\n\tattachAudience?: string;\n\tconfiguredMaestroSessionId?: string;\n\tactiveMaestroSessionId?: string;\n\tdraining?: boolean;\n\tlastDrain?: {\n\t\tstatus: string;\n\t\tmanifestPath: string;\n\t\tdrainedAt: string;\n\t\treason?: string;\n\t\trequestedBy?: string;\n\t};\n}\n\nexport interface WebServerServices {\n\tcreateAgent: (\n\t\tmodel: RegisteredModel,\n\t\tthinking: ThinkingLevel,\n\t\tapproval: ApprovalMode,\n\t\toptions?: {\n\t\t\tcwd?: string;\n\t\t\tenableClientTools?: boolean;\n\t\t\tuseClientAskUser?: boolean;\n\t\t\tincludeVscodeTools?: boolean;\n\t\t\tincludeJetBrainsTools?: boolean;\n\t\t\tincludeConductorTools?: boolean;\n\t\t\tapprovalService?: ActionApprovalService;\n\t\t\tclientToolService?: ClientToolExecutionService;\n\t\t\ttoolRetryService?: ToolRetryService;\n\t\t},\n\t) => Promise<Agent>;\n\tcreateBackgroundAgent: (\n\t\tmodel: RegisteredModel,\n\t\toptions?: {\n\t\t\tcwd?: string;\n\t\t\tsystemPrompt?: string;\n\t\t},\n\t) => Promise<Agent>;\n\tgetRegisteredModel: (\n\t\tinput: string | null | undefined,\n\t) => Promise<RegisteredModel>;\n\tgetCurrentSelection: () => { provider: string; modelId: string };\n\tensureCredential: (provider: string) => Promise<AuthCredential>;\n\tsetModelSelection: (model: RegisteredModel) => void;\n\tacquireSse: () => symbol | null;\n\treleaseSse: (token: symbol | null) => void;\n\theadlessRuntimeService: HeadlessRuntimeService;\n}\n\nexport type WebServerContext = WebServerConfig & WebServerServices;\n"]}
@@ -1,12 +1,11 @@
1
- import { type ActionApprovalDecision, type ActionApprovalRequest, ActionApprovalService } from "../agent/action-approval.js";
2
- type SessionIdProvider = string | (() => string | undefined);
3
- export declare class ServerRequestActionApprovalService extends ActionApprovalService {
4
- private readonly sessionIdProvider?;
5
- constructor(mode?: ConstructorParameters<typeof ActionApprovalService>[0], sessionIdProvider?: SessionIdProvider | undefined);
6
- requestApproval(request: ActionApprovalRequest, signal?: AbortSignal): Promise<ActionApprovalDecision>;
7
- private getSessionId;
1
+ import type { ActionApprovalRequest, ApprovalMode } from "../agent/action-approval.js";
2
+ import { PlatformBackedActionApprovalService, type SessionIdProvider } from "../approvals/platform-action-approval.js";
3
+ import type { ApprovalsServiceConfig } from "../approvals/service-client.js";
4
+ export declare class ServerRequestActionApprovalService extends PlatformBackedActionApprovalService {
5
+ constructor(mode?: ApprovalMode, sessionIdProvider?: SessionIdProvider, approvalsServiceConfig?: ApprovalsServiceConfig | false);
6
+ protected onPendingApprovalRegistered(sessionId: string | undefined, request: ActionApprovalRequest): void;
7
+ protected onPendingApprovalSettled(request: ActionApprovalRequest): void;
8
8
  }
9
9
  export declare class WebActionApprovalService extends ServerRequestActionApprovalService {
10
10
  }
11
- export {};
12
11
  //# sourceMappingURL=approval-service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"approval-service.d.ts","sourceRoot":"","sources":["../../src/server/approval-service.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAC1B,qBAAqB,EACrB,MAAM,6BAA6B,CAAC;AAGrC,KAAK,iBAAiB,GAAG,MAAM,GAAG,CAAC,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC;AAE7D,qBAAa,kCAAmC,SAAQ,qBAAqB;IAG3E,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC;gBADnC,IAAI,CAAC,EAAE,qBAAqB,CAAC,OAAO,qBAAqB,CAAC,CAAC,CAAC,CAAC,EAC5C,iBAAiB,CAAC,EAAE,iBAAiB,YAAA;IAKxC,eAAe,CAC7B,OAAO,EAAE,qBAAqB,EAC9B,MAAM,CAAC,EAAE,WAAW,GAClB,OAAO,CAAC,sBAAsB,CAAC;IAelC,OAAO,CAAC,YAAY;CAMpB;AAED,qBAAa,wBAAyB,SAAQ,kCAAkC;CAAG"}
1
+ {"version":3,"file":"approval-service.d.ts","sourceRoot":"","sources":["../../src/server/approval-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,qBAAqB,EACrB,YAAY,EACZ,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACN,mCAAmC,EACnC,KAAK,iBAAiB,EACtB,MAAM,0CAA0C,CAAC;AAClD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAG7E,qBAAa,kCAAmC,SAAQ,mCAAmC;gBAEzF,IAAI,CAAC,EAAE,YAAY,EACnB,iBAAiB,CAAC,EAAE,iBAAiB,EACrC,sBAAsB,CAAC,EAAE,sBAAsB,GAAG,KAAK;cAKrC,2BAA2B,CAC7C,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,OAAO,EAAE,qBAAqB,GAC5B,IAAI;cAQY,wBAAwB,CAC1C,OAAO,EAAE,qBAAqB,GAC5B,IAAI;CAGP;AAED,qBAAa,wBAAyB,SAAQ,kCAAkC;CAAG"}
@@ -1,30 +1,18 @@
1
- import { ActionApprovalService, } from "../agent/action-approval.js";
1
+ import { PlatformBackedActionApprovalService, } from "../approvals/platform-action-approval.js";
2
2
  import { serverRequestManager } from "./server-request-manager.js";
3
- export class ServerRequestActionApprovalService extends ActionApprovalService {
4
- constructor(mode, sessionIdProvider) {
5
- super(mode);
6
- this.sessionIdProvider = sessionIdProvider;
3
+ export class ServerRequestActionApprovalService extends PlatformBackedActionApprovalService {
4
+ constructor(mode, sessionIdProvider, approvalsServiceConfig) {
5
+ super(mode, { sessionIdProvider, approvalsServiceConfig });
7
6
  }
8
- async requestApproval(request, signal) {
9
- if (this.requiresUserInteraction()) {
10
- serverRequestManager.registerApproval({
11
- sessionId: this.getSessionId(),
12
- request,
13
- service: this,
14
- });
15
- }
16
- try {
17
- return await super.requestApproval(request, signal);
18
- }
19
- finally {
20
- serverRequestManager.unregister(request.id);
21
- }
7
+ onPendingApprovalRegistered(sessionId, request) {
8
+ serverRequestManager.registerApproval({
9
+ sessionId,
10
+ request,
11
+ service: this,
12
+ });
22
13
  }
23
- getSessionId() {
24
- if (typeof this.sessionIdProvider === "function") {
25
- return this.sessionIdProvider();
26
- }
27
- return this.sessionIdProvider;
14
+ onPendingApprovalSettled(request) {
15
+ serverRequestManager.unregister(request.id);
28
16
  }
29
17
  }
30
18
  export class WebActionApprovalService extends ServerRequestActionApprovalService {