@evalops/maestro 0.10.18 → 0.10.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (922) hide show
  1. package/README.md +56 -1
  2. package/dist/agent/action-approval.d.ts +12 -2
  3. package/dist/agent/action-approval.d.ts.map +1 -1
  4. package/dist/agent/action-approval.js +19 -32
  5. package/dist/agent/action-approval.js.map +1 -1
  6. package/dist/agent/agent.d.ts +1 -0
  7. package/dist/agent/agent.d.ts.map +1 -1
  8. package/dist/agent/agent.js +26 -0
  9. package/dist/agent/agent.js.map +1 -1
  10. package/dist/agent/compaction.d.ts +2 -0
  11. package/dist/agent/compaction.d.ts.map +1 -1
  12. package/dist/agent/compaction.js +4 -2
  13. package/dist/agent/compaction.js.map +1 -1
  14. package/dist/agent/index.d.ts +1 -1
  15. package/dist/agent/index.d.ts.map +1 -1
  16. package/dist/agent/index.js +1 -1
  17. package/dist/agent/index.js.map +1 -1
  18. package/dist/agent/modes.d.ts +56 -4
  19. package/dist/agent/modes.d.ts.map +1 -1
  20. package/dist/agent/modes.js +163 -2
  21. package/dist/agent/modes.js.map +1 -1
  22. package/dist/agent/prompt-recovery.d.ts.map +1 -1
  23. package/dist/agent/prompt-recovery.js +1 -3
  24. package/dist/agent/prompt-recovery.js.map +1 -1
  25. package/dist/agent/providers/anthropic.d.ts.map +1 -1
  26. package/dist/agent/providers/anthropic.js +9 -1
  27. package/dist/agent/providers/anthropic.js.map +1 -1
  28. package/dist/agent/providers/codex-app-server.d.ts +12 -0
  29. package/dist/agent/providers/codex-app-server.d.ts.map +1 -0
  30. package/dist/agent/providers/codex-app-server.js +788 -0
  31. package/dist/agent/providers/codex-app-server.js.map +1 -0
  32. package/dist/agent/providers/google-gemini-cli.js +14 -3
  33. package/dist/agent/providers/google.js +22 -3
  34. package/dist/agent/providers/scripted.d.ts +11 -0
  35. package/dist/agent/providers/scripted.d.ts.map +1 -0
  36. package/dist/agent/providers/scripted.js +399 -0
  37. package/dist/agent/providers/scripted.js.map +1 -0
  38. package/dist/agent/providers/vertex.js +14 -3
  39. package/dist/agent/scenario-source.d.ts +19 -0
  40. package/dist/agent/scenario-source.d.ts.map +1 -0
  41. package/dist/agent/scenario-source.js +112 -0
  42. package/dist/agent/scenario-source.js.map +1 -0
  43. package/dist/agent/subagent-specs.d.ts +1 -1
  44. package/dist/agent/subagent-specs.js +1 -1
  45. package/dist/agent/subagent-specs.js.map +1 -1
  46. package/dist/agent/swarm/executor.d.ts +25 -0
  47. package/dist/agent/swarm/executor.d.ts.map +1 -1
  48. package/dist/agent/swarm/executor.js +795 -20
  49. package/dist/agent/swarm/executor.js.map +1 -1
  50. package/dist/agent/swarm/runtime-events.d.ts +11 -0
  51. package/dist/agent/swarm/runtime-events.d.ts.map +1 -0
  52. package/dist/agent/swarm/runtime-events.js +26 -0
  53. package/dist/agent/swarm/runtime-events.js.map +1 -0
  54. package/dist/agent/swarm/types.d.ts +78 -0
  55. package/dist/agent/swarm/types.d.ts.map +1 -1
  56. package/dist/agent/swarm/types.js.map +1 -1
  57. package/dist/agent/tracing.d.ts +1 -1
  58. package/dist/agent/tracing.d.ts.map +1 -1
  59. package/dist/agent/tracing.js +17 -9
  60. package/dist/agent/tracing.js.map +1 -1
  61. package/dist/agent/transport/create-provider-stream.d.ts.map +1 -1
  62. package/dist/agent/transport/create-provider-stream.js +14 -0
  63. package/dist/agent/transport/create-provider-stream.js.map +1 -1
  64. package/dist/agent/transport/stable-stringify.d.ts +2 -0
  65. package/dist/agent/transport/stable-stringify.d.ts.map +1 -0
  66. package/dist/agent/transport/stable-stringify.js +14 -0
  67. package/dist/agent/transport/stable-stringify.js.map +1 -0
  68. package/dist/agent/transport/tool-execution-bridge.d.ts.map +1 -1
  69. package/dist/agent/transport/tool-execution-bridge.js +2 -15
  70. package/dist/agent/transport/tool-execution-bridge.js.map +1 -1
  71. package/dist/agent/transport/tool-safety-pipeline.d.ts +5 -1
  72. package/dist/agent/transport/tool-safety-pipeline.d.ts.map +1 -1
  73. package/dist/agent/transport/tool-safety-pipeline.js +184 -36
  74. package/dist/agent/transport/tool-safety-pipeline.js.map +1 -1
  75. package/dist/agent/transport.d.ts +8 -0
  76. package/dist/agent/transport.d.ts.map +1 -1
  77. package/dist/agent/transport.js +1613 -68
  78. package/dist/agent/transport.js.map +1 -1
  79. package/dist/agent/types.d.ts +170 -2
  80. package/dist/agent/types.d.ts.map +1 -1
  81. package/dist/agent/types.js.map +1 -1
  82. package/dist/api/enterprise-routes.d.ts.map +1 -1
  83. package/dist/api/enterprise-routes.js +34 -3
  84. package/dist/api/enterprise-routes.js.map +1 -1
  85. package/dist/app-server/in-process-client.d.ts +32 -0
  86. package/dist/app-server/in-process-client.d.ts.map +1 -0
  87. package/dist/app-server/in-process-client.js +73 -0
  88. package/dist/app-server/in-process-client.js.map +1 -0
  89. package/dist/app-server/session-api.d.ts +36 -0
  90. package/dist/app-server/session-api.d.ts.map +1 -0
  91. package/dist/app-server/session-api.js +713 -0
  92. package/dist/app-server/session-api.js.map +1 -0
  93. package/dist/approvals/platform-action-approval.d.ts +3 -1
  94. package/dist/approvals/platform-action-approval.d.ts.map +1 -1
  95. package/dist/approvals/platform-action-approval.js +16 -9
  96. package/dist/approvals/platform-action-approval.js.map +1 -1
  97. package/dist/approvals/service-client.d.ts.map +1 -1
  98. package/dist/approvals/service-client.js +7 -7
  99. package/dist/approvals/service-client.js.map +1 -1
  100. package/dist/audit/logger.d.ts +4 -4
  101. package/dist/bootstrap/agent-creation-setup.d.ts +4 -0
  102. package/dist/bootstrap/agent-creation-setup.d.ts.map +1 -1
  103. package/dist/bootstrap/agent-creation-setup.js +3 -1
  104. package/dist/bootstrap/agent-creation-setup.js.map +1 -1
  105. package/dist/bootstrap/auth-setup.js +1 -1
  106. package/dist/bootstrap/auth-setup.js.map +1 -1
  107. package/dist/bootstrap/event-subscriptions-setup.d.ts +6 -0
  108. package/dist/bootstrap/event-subscriptions-setup.d.ts.map +1 -1
  109. package/dist/bootstrap/event-subscriptions-setup.js +26 -2
  110. package/dist/bootstrap/event-subscriptions-setup.js.map +1 -1
  111. package/dist/bootstrap/model-resolution-setup.d.ts.map +1 -1
  112. package/dist/bootstrap/model-resolution-setup.js +4 -1
  113. package/dist/bootstrap/model-resolution-setup.js.map +1 -1
  114. package/dist/bootstrap/tools-setup.d.ts +2 -1
  115. package/dist/bootstrap/tools-setup.d.ts.map +1 -1
  116. package/dist/bootstrap/tools-setup.js +5 -1
  117. package/dist/bootstrap/tools-setup.js.map +1 -1
  118. package/dist/cli/args.d.ts +9 -1
  119. package/dist/cli/args.d.ts.map +1 -1
  120. package/dist/cli/args.js +130 -5
  121. package/dist/cli/args.js.map +1 -1
  122. package/dist/cli/commands/a2a.d.ts +9 -0
  123. package/dist/cli/commands/a2a.d.ts.map +1 -0
  124. package/dist/cli/commands/a2a.js +1714 -0
  125. package/dist/cli/commands/a2a.js.map +1 -0
  126. package/dist/cli/commands/agents.d.ts +16 -2
  127. package/dist/cli/commands/agents.d.ts.map +1 -1
  128. package/dist/cli/commands/agents.js +223 -35
  129. package/dist/cli/commands/agents.js.map +1 -1
  130. package/dist/cli/commands/codex.d.ts +1 -1
  131. package/dist/cli/commands/codex.d.ts.map +1 -1
  132. package/dist/cli/commands/codex.js +145 -39
  133. package/dist/cli/commands/codex.js.map +1 -1
  134. package/dist/cli/commands/context.d.ts +10 -0
  135. package/dist/cli/commands/context.d.ts.map +1 -0
  136. package/dist/cli/commands/context.js +176 -0
  137. package/dist/cli/commands/context.js.map +1 -0
  138. package/dist/cli/commands/hosted-runner.d.ts +1 -0
  139. package/dist/cli/commands/hosted-runner.d.ts.map +1 -1
  140. package/dist/cli/commands/hosted-runner.js +9 -1
  141. package/dist/cli/commands/hosted-runner.js.map +1 -1
  142. package/dist/cli/commands/modes.d.ts +8 -0
  143. package/dist/cli/commands/modes.d.ts.map +1 -0
  144. package/dist/cli/commands/modes.js +151 -0
  145. package/dist/cli/commands/modes.js.map +1 -0
  146. package/dist/cli/commands/operating-plane.d.ts +14 -0
  147. package/dist/cli/commands/operating-plane.d.ts.map +1 -0
  148. package/dist/cli/commands/operating-plane.js +160 -0
  149. package/dist/cli/commands/operating-plane.js.map +1 -0
  150. package/dist/cli/commands/run.d.ts +87 -0
  151. package/dist/cli/commands/run.d.ts.map +1 -0
  152. package/dist/cli/commands/run.js +356 -0
  153. package/dist/cli/commands/run.js.map +1 -0
  154. package/dist/cli/commands/scenario.d.ts +7 -0
  155. package/dist/cli/commands/scenario.d.ts.map +1 -0
  156. package/dist/cli/commands/scenario.js +195 -0
  157. package/dist/cli/commands/scenario.js.map +1 -0
  158. package/dist/cli/commands/skill.d.ts +7 -0
  159. package/dist/cli/commands/skill.d.ts.map +1 -0
  160. package/dist/cli/commands/skill.js +286 -0
  161. package/dist/cli/commands/skill.js.map +1 -0
  162. package/dist/cli/headless-protocol.d.ts +55 -1
  163. package/dist/cli/headless-protocol.d.ts.map +1 -1
  164. package/dist/cli/headless-protocol.js +446 -7
  165. package/dist/cli/headless-protocol.js.map +1 -1
  166. package/dist/cli/headless-runtime-selection.d.ts +38 -0
  167. package/dist/cli/headless-runtime-selection.d.ts.map +1 -0
  168. package/dist/cli/headless-runtime-selection.js +48 -0
  169. package/dist/cli/headless-runtime-selection.js.map +1 -0
  170. package/dist/cli/headless.d.ts +5 -1
  171. package/dist/cli/headless.d.ts.map +1 -1
  172. package/dist/cli/headless.js +11 -1
  173. package/dist/cli/headless.js.map +1 -1
  174. package/dist/cli/help.d.ts +3 -1
  175. package/dist/cli/help.d.ts.map +1 -1
  176. package/dist/cli/help.js +135 -30
  177. package/dist/cli/help.js.map +1 -1
  178. package/dist/cli/system-prompt.d.ts +22 -4
  179. package/dist/cli/system-prompt.d.ts.map +1 -1
  180. package/dist/cli/system-prompt.js +224 -127
  181. package/dist/cli/system-prompt.js.map +1 -1
  182. package/dist/cli-tui/commands/a2a-handlers.d.ts +7 -0
  183. package/dist/cli-tui/commands/a2a-handlers.d.ts.map +1 -0
  184. package/dist/cli-tui/commands/a2a-handlers.js +160 -0
  185. package/dist/cli-tui/commands/a2a-handlers.js.map +1 -0
  186. package/dist/cli-tui/commands/command-catalog.d.ts.map +1 -1
  187. package/dist/cli-tui/commands/command-catalog.js +15 -0
  188. package/dist/cli-tui/commands/command-catalog.js.map +1 -1
  189. package/dist/cli-tui/commands/command-registry-adapter.js +10 -1
  190. package/dist/cli-tui/commands/command-registry-adapter.js.map +1 -1
  191. package/dist/cli-tui/commands/handlers/mode-handler.d.ts.map +1 -1
  192. package/dist/cli-tui/commands/handlers/mode-handler.js +22 -10
  193. package/dist/cli-tui/commands/handlers/mode-handler.js.map +1 -1
  194. package/dist/cli-tui/commands/mcp-handlers.d.ts.map +1 -1
  195. package/dist/cli-tui/commands/mcp-handlers.js +6 -5
  196. package/dist/cli-tui/commands/mcp-handlers.js.map +1 -1
  197. package/dist/cli-tui/commands/types.d.ts +1 -0
  198. package/dist/cli-tui/commands/types.d.ts.map +1 -1
  199. package/dist/cli-tui/commands/types.js.map +1 -1
  200. package/dist/cli-tui/commands/utility-handlers.d.ts +4 -0
  201. package/dist/cli-tui/commands/utility-handlers.d.ts.map +1 -1
  202. package/dist/cli-tui/commands/utility-handlers.js +45 -6
  203. package/dist/cli-tui/commands/utility-handlers.js.map +1 -1
  204. package/dist/cli-tui/run/run-shell-command.d.ts.map +1 -1
  205. package/dist/cli-tui/run/run-shell-command.js +14 -5
  206. package/dist/cli-tui/run/run-shell-command.js.map +1 -1
  207. package/dist/cli-tui/run/streaming-shell-command.d.ts.map +1 -1
  208. package/dist/cli-tui/run/streaming-shell-command.js +14 -5
  209. package/dist/cli-tui/run/streaming-shell-command.js.map +1 -1
  210. package/dist/cli-tui/selectors/model-selector.d.ts +1 -0
  211. package/dist/cli-tui/selectors/model-selector.d.ts.map +1 -1
  212. package/dist/cli-tui/selectors/model-selector.js +6 -2
  213. package/dist/cli-tui/selectors/model-selector.js.map +1 -1
  214. package/dist/cli-tui/tui-renderer/command-registry-options.d.ts.map +1 -1
  215. package/dist/cli-tui/tui-renderer/command-registry-options.js +5 -0
  216. package/dist/cli-tui/tui-renderer/command-registry-options.js.map +1 -1
  217. package/dist/cli-tui/utils/commands/review-prompt.d.ts +1 -1
  218. package/dist/cli-tui/utils/commands/review-prompt.d.ts.map +1 -1
  219. package/dist/cli-tui/utils/commands/review-prompt.js +8 -3
  220. package/dist/cli-tui/utils/commands/review-prompt.js.map +1 -1
  221. package/dist/cli-tui/utils/runtime-badges.d.ts +1 -0
  222. package/dist/cli-tui/utils/runtime-badges.d.ts.map +1 -1
  223. package/dist/cli-tui/utils/runtime-badges.js +7 -0
  224. package/dist/cli-tui/utils/runtime-badges.js.map +1 -1
  225. package/dist/cli-tui/utils/text-formatting.d.ts +1 -0
  226. package/dist/cli-tui/utils/text-formatting.d.ts.map +1 -1
  227. package/dist/cli-tui/utils/text-formatting.js +5 -0
  228. package/dist/cli-tui/utils/text-formatting.js.map +1 -1
  229. package/dist/cli.js +49158 -26161
  230. package/dist/cli.js.map +1 -1
  231. package/dist/codex/app-server-client.d.ts +139 -0
  232. package/dist/codex/app-server-client.d.ts.map +1 -0
  233. package/dist/codex/app-server-client.js +352 -0
  234. package/dist/codex/app-server-client.js.map +1 -0
  235. package/dist/codex/compatibility.d.ts +48 -0
  236. package/dist/codex/compatibility.d.ts.map +1 -0
  237. package/dist/codex/compatibility.js +344 -0
  238. package/dist/codex/compatibility.js.map +1 -0
  239. package/dist/codex/subagent-dispatch-table.d.ts +66 -0
  240. package/dist/codex/subagent-dispatch-table.d.ts.map +1 -0
  241. package/dist/codex/subagent-dispatch-table.js +127 -0
  242. package/dist/codex/subagent-dispatch-table.js.map +1 -0
  243. package/dist/codex/subagent-workgraph.d.ts +56 -0
  244. package/dist/codex/subagent-workgraph.d.ts.map +1 -0
  245. package/dist/codex/subagent-workgraph.js +89 -0
  246. package/dist/codex/subagent-workgraph.js.map +1 -0
  247. package/dist/config/constants.d.ts +3 -1
  248. package/dist/config/constants.d.ts.map +1 -1
  249. package/dist/config/constants.js +9 -0
  250. package/dist/config/constants.js.map +1 -1
  251. package/dist/config/feature-flags.d.ts +10 -1
  252. package/dist/config/feature-flags.d.ts.map +1 -1
  253. package/dist/config/feature-flags.js +17 -6
  254. package/dist/config/feature-flags.js.map +1 -1
  255. package/dist/config/index.d.ts +1 -1
  256. package/dist/config/index.d.ts.map +1 -1
  257. package/dist/config/index.js +1 -1
  258. package/dist/config/index.js.map +1 -1
  259. package/dist/config/toml-config.d.ts +32 -0
  260. package/dist/config/toml-config.d.ts.map +1 -1
  261. package/dist/config/toml-config.js +152 -43
  262. package/dist/config/toml-config.js.map +1 -1
  263. package/dist/connectors/service-client.d.ts.map +1 -1
  264. package/dist/connectors/service-client.js +4 -7
  265. package/dist/connectors/service-client.js.map +1 -1
  266. package/dist/context/manifest-types.d.ts +59 -0
  267. package/dist/context/manifest-types.d.ts.map +1 -0
  268. package/dist/context/manifest-types.js +2 -0
  269. package/dist/context/manifest-types.js.map +1 -0
  270. package/dist/context/manifest.d.ts +16 -0
  271. package/dist/context/manifest.d.ts.map +1 -0
  272. package/dist/context/manifest.js +503 -0
  273. package/dist/context/manifest.js.map +1 -0
  274. package/dist/db/schema.d.ts +10 -1
  275. package/dist/db/schema.d.ts.map +1 -1
  276. package/dist/db/schema.js.map +1 -1
  277. package/dist/evalops/env-aliases.d.ts +13 -0
  278. package/dist/evalops/env-aliases.d.ts.map +1 -0
  279. package/dist/evalops/env-aliases.js +60 -0
  280. package/dist/evalops/env-aliases.js.map +1 -0
  281. package/dist/evalops/managed-context.d.ts.map +1 -1
  282. package/dist/evalops/managed-context.js +28 -62
  283. package/dist/evalops/managed-context.js.map +1 -1
  284. package/dist/guardian/config.d.ts.map +1 -1
  285. package/dist/guardian/config.js +1 -0
  286. package/dist/guardian/config.js.map +1 -1
  287. package/dist/guardian/runner.d.ts +2 -0
  288. package/dist/guardian/runner.d.ts.map +1 -1
  289. package/dist/guardian/runner.js +105 -2
  290. package/dist/guardian/runner.js.map +1 -1
  291. package/dist/guardian/types.d.ts +1 -0
  292. package/dist/guardian/types.d.ts.map +1 -1
  293. package/dist/guardian/types.js.map +1 -1
  294. package/dist/index.d.ts +5 -1
  295. package/dist/index.d.ts.map +1 -1
  296. package/dist/index.js +5 -1
  297. package/dist/index.js.map +1 -1
  298. package/dist/main.d.ts.map +1 -1
  299. package/dist/main.js +267 -55
  300. package/dist/main.js.map +1 -1
  301. package/dist/mcp/config.d.ts.map +1 -1
  302. package/dist/mcp/config.js +89 -7
  303. package/dist/mcp/config.js.map +1 -1
  304. package/dist/mcp/manager.d.ts +5 -1
  305. package/dist/mcp/manager.d.ts.map +1 -1
  306. package/dist/mcp/manager.js +159 -4
  307. package/dist/mcp/manager.js.map +1 -1
  308. package/dist/mcp/platform-plugin.d.ts.map +1 -1
  309. package/dist/mcp/platform-plugin.js +9 -26
  310. package/dist/mcp/platform-plugin.js.map +1 -1
  311. package/dist/mcp/schema.d.ts +15 -0
  312. package/dist/mcp/schema.d.ts.map +1 -1
  313. package/dist/mcp/schema.js +24 -0
  314. package/dist/mcp/schema.js.map +1 -1
  315. package/dist/mcp/tool-bridge.d.ts +39 -10
  316. package/dist/mcp/tool-bridge.d.ts.map +1 -1
  317. package/dist/mcp/tool-bridge.js +101 -24
  318. package/dist/mcp/tool-bridge.js.map +1 -1
  319. package/dist/mcp/types.d.ts +27 -0
  320. package/dist/mcp/types.d.ts.map +1 -1
  321. package/dist/mcp/types.js.map +1 -1
  322. package/dist/mcp/workspace-trust.d.ts +10 -0
  323. package/dist/mcp/workspace-trust.d.ts.map +1 -0
  324. package/dist/mcp/workspace-trust.js +295 -0
  325. package/dist/mcp/workspace-trust.js.map +1 -0
  326. package/dist/memory/service-client.d.ts +1 -0
  327. package/dist/memory/service-client.d.ts.map +1 -1
  328. package/dist/memory/service-client.js +194 -9
  329. package/dist/memory/service-client.js.map +1 -1
  330. package/dist/models/builtin.d.ts.map +1 -1
  331. package/dist/models/builtin.js +66 -25
  332. package/dist/models/builtin.js.map +1 -1
  333. package/dist/models/config-loader.d.ts +10 -10
  334. package/dist/models/config-loader.d.ts.map +1 -1
  335. package/dist/models/config-loader.js +2 -0
  336. package/dist/models/config-loader.js.map +1 -1
  337. package/dist/models/registry.d.ts +1 -0
  338. package/dist/models/registry.d.ts.map +1 -1
  339. package/dist/models/registry.js +1 -0
  340. package/dist/models/registry.js.map +1 -1
  341. package/dist/oauth/device-identity.d.ts.map +1 -1
  342. package/dist/oauth/device-identity.js +1 -3
  343. package/dist/oauth/device-identity.js.map +1 -1
  344. package/dist/oauth/evalops.d.ts.map +1 -1
  345. package/dist/oauth/evalops.js +2 -5
  346. package/dist/oauth/evalops.js.map +1 -1
  347. package/dist/opentelemetry.d.ts.map +1 -1
  348. package/dist/opentelemetry.js +12 -12
  349. package/dist/opentelemetry.js.map +1 -1
  350. package/dist/package-version.d.ts +2 -0
  351. package/dist/package-version.d.ts.map +1 -0
  352. package/dist/package-version.js +11 -0
  353. package/dist/package-version.js.map +1 -0
  354. package/dist/packages/constants.d.ts +3 -0
  355. package/dist/packages/constants.d.ts.map +1 -0
  356. package/dist/packages/constants.js +3 -0
  357. package/dist/packages/constants.js.map +1 -0
  358. package/dist/packages/inspection.d.ts.map +1 -1
  359. package/dist/packages/inspection.js +2 -1
  360. package/dist/packages/inspection.js.map +1 -1
  361. package/dist/packages/search.d.ts.map +1 -1
  362. package/dist/packages/search.js +1 -1
  363. package/dist/packages/search.js.map +1 -1
  364. package/dist/platform/a2a-capability-market.d.ts +21 -0
  365. package/dist/platform/a2a-capability-market.d.ts.map +1 -0
  366. package/dist/platform/a2a-capability-market.js +176 -0
  367. package/dist/platform/a2a-capability-market.js.map +1 -0
  368. package/dist/platform/a2a-client.d.ts +119 -0
  369. package/dist/platform/a2a-client.d.ts.map +1 -1
  370. package/dist/platform/a2a-client.js +413 -24
  371. package/dist/platform/a2a-client.js.map +1 -1
  372. package/dist/platform/a2a-fleet.d.ts +41 -0
  373. package/dist/platform/a2a-fleet.d.ts.map +1 -0
  374. package/dist/platform/a2a-fleet.js +109 -0
  375. package/dist/platform/a2a-fleet.js.map +1 -0
  376. package/dist/platform/a2a-maestro-peer.d.ts +20 -0
  377. package/dist/platform/a2a-maestro-peer.d.ts.map +1 -0
  378. package/dist/platform/a2a-maestro-peer.js +176 -0
  379. package/dist/platform/a2a-maestro-peer.js.map +1 -0
  380. package/dist/platform/a2a-peer-pairing.d.ts +107 -0
  381. package/dist/platform/a2a-peer-pairing.d.ts.map +1 -0
  382. package/dist/platform/a2a-peer-pairing.js +489 -0
  383. package/dist/platform/a2a-peer-pairing.js.map +1 -0
  384. package/dist/platform/a2a-peer-registry.d.ts +68 -0
  385. package/dist/platform/a2a-peer-registry.d.ts.map +1 -0
  386. package/dist/platform/a2a-peer-registry.js +320 -0
  387. package/dist/platform/a2a-peer-registry.js.map +1 -0
  388. package/dist/platform/a2a-task-ledger.d.ts +86 -0
  389. package/dist/platform/a2a-task-ledger.d.ts.map +1 -0
  390. package/dist/platform/a2a-task-ledger.js +546 -0
  391. package/dist/platform/a2a-task-ledger.js.map +1 -0
  392. package/dist/platform/a2a-work-graph.d.ts +43 -0
  393. package/dist/platform/a2a-work-graph.d.ts.map +1 -0
  394. package/dist/platform/a2a-work-graph.js +267 -0
  395. package/dist/platform/a2a-work-graph.js.map +1 -0
  396. package/dist/platform/agent-registry-client.d.ts +327 -0
  397. package/dist/platform/agent-registry-client.d.ts.map +1 -0
  398. package/dist/platform/agent-registry-client.js +803 -0
  399. package/dist/platform/agent-registry-client.js.map +1 -0
  400. package/dist/platform/agent-runtime-client.d.ts +135 -1
  401. package/dist/platform/agent-runtime-client.d.ts.map +1 -1
  402. package/dist/platform/agent-runtime-client.js +467 -10
  403. package/dist/platform/agent-runtime-client.js.map +1 -1
  404. package/dist/platform/cerebro-facts-client.d.ts.map +1 -1
  405. package/dist/platform/cerebro-facts-client.js +4 -7
  406. package/dist/platform/cerebro-facts-client.js.map +1 -1
  407. package/dist/platform/client.d.ts.map +1 -1
  408. package/dist/platform/client.js +3 -12
  409. package/dist/platform/client.js.map +1 -1
  410. package/dist/platform/core-services.d.ts +68 -0
  411. package/dist/platform/core-services.d.ts.map +1 -1
  412. package/dist/platform/core-services.js +68 -0
  413. package/dist/platform/core-services.js.map +1 -1
  414. package/dist/platform/fermata-eval-client.d.ts +195 -0
  415. package/dist/platform/fermata-eval-client.d.ts.map +1 -0
  416. package/dist/platform/fermata-eval-client.js +146 -0
  417. package/dist/platform/fermata-eval-client.js.map +1 -0
  418. package/dist/platform/fermata-scenario-suite.d.ts +99 -0
  419. package/dist/platform/fermata-scenario-suite.d.ts.map +1 -0
  420. package/dist/platform/fermata-scenario-suite.js +459 -0
  421. package/dist/platform/fermata-scenario-suite.js.map +1 -0
  422. package/dist/platform/maestro-timeline-client.d.ts.map +1 -1
  423. package/dist/platform/maestro-timeline-client.js +5 -11
  424. package/dist/platform/maestro-timeline-client.js.map +1 -1
  425. package/dist/platform/operating-plane-client.d.ts +156 -0
  426. package/dist/platform/operating-plane-client.d.ts.map +1 -0
  427. package/dist/platform/operating-plane-client.js +131 -0
  428. package/dist/platform/operating-plane-client.js.map +1 -0
  429. package/dist/platform/operating-plane-summary.d.ts +47 -0
  430. package/dist/platform/operating-plane-summary.d.ts.map +1 -0
  431. package/dist/platform/operating-plane-summary.js +209 -0
  432. package/dist/platform/operating-plane-summary.js.map +1 -0
  433. package/dist/platform/tool-execution-client.d.ts.map +1 -1
  434. package/dist/platform/tool-execution-client.js +4 -11
  435. package/dist/platform/tool-execution-client.js.map +1 -1
  436. package/dist/prompts/service-client.d.ts.map +1 -1
  437. package/dist/prompts/service-client.js +3 -5
  438. package/dist/prompts/service-client.js.map +1 -1
  439. package/dist/prompts/system-prompt.d.ts +3 -0
  440. package/dist/prompts/system-prompt.d.ts.map +1 -1
  441. package/dist/prompts/system-prompt.js +13 -3
  442. package/dist/prompts/system-prompt.js.map +1 -1
  443. package/dist/prompts/types.d.ts +2 -0
  444. package/dist/prompts/types.d.ts.map +1 -1
  445. package/dist/prompts/types.js.map +1 -1
  446. package/dist/providers/api-keys.d.ts +1 -1
  447. package/dist/providers/api-keys.d.ts.map +1 -1
  448. package/dist/providers/api-keys.js +2 -1
  449. package/dist/providers/api-keys.js.map +1 -1
  450. package/dist/providers/auth.d.ts.map +1 -1
  451. package/dist/providers/auth.js +48 -25
  452. package/dist/providers/auth.js.map +1 -1
  453. package/dist/remote-runner/attach-client.d.ts.map +1 -1
  454. package/dist/remote-runner/attach-client.js +1 -0
  455. package/dist/remote-runner/attach-client.js.map +1 -1
  456. package/dist/remote-runner/client.d.ts.map +1 -1
  457. package/dist/remote-runner/client.js +4 -7
  458. package/dist/remote-runner/client.js.map +1 -1
  459. package/dist/rpc/rpc-types.d.ts.map +1 -1
  460. package/dist/rpc/rpc-types.js +1 -0
  461. package/dist/rpc/rpc-types.js.map +1 -1
  462. package/dist/safety/action-firewall.d.ts.map +1 -1
  463. package/dist/safety/action-firewall.js +69 -6
  464. package/dist/safety/action-firewall.js.map +1 -1
  465. package/dist/safety/attack-patterns.d.ts.map +1 -1
  466. package/dist/safety/attack-patterns.js +31 -14
  467. package/dist/safety/attack-patterns.js.map +1 -1
  468. package/dist/safety/bash-parser.d.ts.map +1 -1
  469. package/dist/safety/bash-parser.js +4 -3
  470. package/dist/safety/bash-parser.js.map +1 -1
  471. package/dist/safety/execpolicy.d.ts +15 -3
  472. package/dist/safety/execpolicy.d.ts.map +1 -1
  473. package/dist/safety/execpolicy.js +248 -37
  474. package/dist/safety/execpolicy.js.map +1 -1
  475. package/dist/safety/governance-service-client.d.ts.map +1 -1
  476. package/dist/safety/governance-service-client.js +4 -7
  477. package/dist/safety/governance-service-client.js.map +1 -1
  478. package/dist/safety/guarded-files.d.ts +34 -0
  479. package/dist/safety/guarded-files.d.ts.map +1 -0
  480. package/dist/safety/guarded-files.js +372 -0
  481. package/dist/safety/guarded-files.js.map +1 -0
  482. package/dist/safety/loop-detector.d.ts.map +1 -1
  483. package/dist/safety/loop-detector.js +6 -1
  484. package/dist/safety/loop-detector.js.map +1 -1
  485. package/dist/safety/permission-profile.d.ts +47 -0
  486. package/dist/safety/permission-profile.d.ts.map +1 -0
  487. package/dist/safety/permission-profile.js +349 -0
  488. package/dist/safety/permission-profile.js.map +1 -0
  489. package/dist/safety/safety-middleware.d.ts +5 -1
  490. package/dist/safety/safety-middleware.d.ts.map +1 -1
  491. package/dist/safety/safety-middleware.js +3 -2
  492. package/dist/safety/safety-middleware.js.map +1 -1
  493. package/dist/safety/suspicious-patterns.d.ts.map +1 -1
  494. package/dist/safety/suspicious-patterns.js +12 -7
  495. package/dist/safety/suspicious-patterns.js.map +1 -1
  496. package/dist/safety/tool-categorization.js +1 -1
  497. package/dist/safety/tool-categorization.js.map +1 -1
  498. package/dist/safety/validators/path-policy-validator.d.ts.map +1 -1
  499. package/dist/safety/validators/path-policy-validator.js +7 -0
  500. package/dist/safety/validators/path-policy-validator.js.map +1 -1
  501. package/dist/sandbox/index.d.ts +6 -1
  502. package/dist/sandbox/index.d.ts.map +1 -1
  503. package/dist/sandbox/index.js +30 -4
  504. package/dist/sandbox/index.js.map +1 -1
  505. package/dist/sandbox/native-sandbox.d.ts +3 -0
  506. package/dist/sandbox/native-sandbox.d.ts.map +1 -1
  507. package/dist/sandbox/native-sandbox.js +139 -18
  508. package/dist/sandbox/native-sandbox.js.map +1 -1
  509. package/dist/sentry.d.ts +17 -0
  510. package/dist/sentry.d.ts.map +1 -0
  511. package/dist/sentry.js +91 -0
  512. package/dist/sentry.js.map +1 -0
  513. package/dist/server/agent-runtime-ledger.d.ts +141 -0
  514. package/dist/server/agent-runtime-ledger.d.ts.map +1 -0
  515. package/dist/server/agent-runtime-ledger.js +334 -0
  516. package/dist/server/agent-runtime-ledger.js.map +1 -0
  517. package/dist/server/agent-trajectory-inspection.d.ts +104 -0
  518. package/dist/server/agent-trajectory-inspection.d.ts.map +1 -0
  519. package/dist/server/agent-trajectory-inspection.js +168 -0
  520. package/dist/server/agent-trajectory-inspection.js.map +1 -0
  521. package/dist/server/agent-trajectory-replay.d.ts +56 -0
  522. package/dist/server/agent-trajectory-replay.d.ts.map +1 -0
  523. package/dist/server/agent-trajectory-replay.js +214 -0
  524. package/dist/server/agent-trajectory-replay.js.map +1 -0
  525. package/dist/server/agent-trajectory-scenarios.d.ts +109 -0
  526. package/dist/server/agent-trajectory-scenarios.d.ts.map +1 -0
  527. package/dist/server/agent-trajectory-scenarios.js +822 -0
  528. package/dist/server/agent-trajectory-scenarios.js.map +1 -0
  529. package/dist/server/agent-trajectory-scorers.d.ts +61 -0
  530. package/dist/server/agent-trajectory-scorers.d.ts.map +1 -0
  531. package/dist/server/agent-trajectory-scorers.js +162 -0
  532. package/dist/server/agent-trajectory-scorers.js.map +1 -0
  533. package/dist/server/agent-trajectory-validation.d.ts +7 -0
  534. package/dist/server/agent-trajectory-validation.d.ts.map +1 -0
  535. package/dist/server/agent-trajectory-validation.js +101 -0
  536. package/dist/server/agent-trajectory-validation.js.map +1 -0
  537. package/dist/server/agent-trajectory.d.ts +50 -0
  538. package/dist/server/agent-trajectory.d.ts.map +1 -0
  539. package/dist/server/agent-trajectory.js +159 -0
  540. package/dist/server/agent-trajectory.js.map +1 -0
  541. package/dist/server/app-context.d.ts +18 -0
  542. package/dist/server/app-context.d.ts.map +1 -1
  543. package/dist/server/app-context.js.map +1 -1
  544. package/dist/server/handlers/headless-sessions.d.ts.map +1 -1
  545. package/dist/server/handlers/headless-sessions.js +64 -27
  546. package/dist/server/handlers/headless-sessions.js.map +1 -1
  547. package/dist/server/handlers/health.d.ts +6 -0
  548. package/dist/server/handlers/health.d.ts.map +1 -1
  549. package/dist/server/handlers/health.js +6 -0
  550. package/dist/server/handlers/health.js.map +1 -1
  551. package/dist/server/handlers/hosted-runner-drain.d.ts +69 -1
  552. package/dist/server/handlers/hosted-runner-drain.d.ts.map +1 -1
  553. package/dist/server/handlers/hosted-runner-drain.js +309 -18
  554. package/dist/server/handlers/hosted-runner-drain.js.map +1 -1
  555. package/dist/server/handlers/hosted-runner-identity.d.ts +16 -0
  556. package/dist/server/handlers/hosted-runner-identity.d.ts.map +1 -1
  557. package/dist/server/handlers/hosted-runner-identity.js +43 -0
  558. package/dist/server/handlers/hosted-runner-identity.js.map +1 -1
  559. package/dist/server/handlers/mode.d.ts.map +1 -1
  560. package/dist/server/handlers/mode.js +3 -1
  561. package/dist/server/handlers/mode.js.map +1 -1
  562. package/dist/server/handlers/pending-requests.d.ts.map +1 -1
  563. package/dist/server/handlers/pending-requests.js +336 -51
  564. package/dist/server/handlers/pending-requests.js.map +1 -1
  565. package/dist/server/handlers/platform-a2a-push.d.ts +6 -0
  566. package/dist/server/handlers/platform-a2a-push.d.ts.map +1 -0
  567. package/dist/server/handlers/platform-a2a-push.js +136 -0
  568. package/dist/server/handlers/platform-a2a-push.js.map +1 -0
  569. package/dist/server/handlers/sessions.d.ts.map +1 -1
  570. package/dist/server/handlers/sessions.js +21 -1
  571. package/dist/server/handlers/sessions.js.map +1 -1
  572. package/dist/server/headless-runtime-service.d.ts +9 -2
  573. package/dist/server/headless-runtime-service.d.ts.map +1 -1
  574. package/dist/server/headless-runtime-service.js +39 -0
  575. package/dist/server/headless-runtime-service.js.map +1 -1
  576. package/dist/server/hosted-agent-runtime-progress.d.ts +144 -0
  577. package/dist/server/hosted-agent-runtime-progress.d.ts.map +1 -0
  578. package/dist/server/hosted-agent-runtime-progress.js +1650 -0
  579. package/dist/server/hosted-agent-runtime-progress.js.map +1 -0
  580. package/dist/server/hosted-runner-lease.d.ts +41 -0
  581. package/dist/server/hosted-runner-lease.d.ts.map +1 -0
  582. package/dist/server/hosted-runner-lease.js +140 -0
  583. package/dist/server/hosted-runner-lease.js.map +1 -0
  584. package/dist/server/hosted-session-manager.d.ts +16 -8
  585. package/dist/server/hosted-session-manager.d.ts.map +1 -1
  586. package/dist/server/hosted-session-manager.js +98 -76
  587. package/dist/server/hosted-session-manager.js.map +1 -1
  588. package/dist/server/junit-xml.d.ts +2 -0
  589. package/dist/server/junit-xml.d.ts.map +1 -0
  590. package/dist/server/junit-xml.js +9 -0
  591. package/dist/server/junit-xml.js.map +1 -0
  592. package/dist/server/routes.d.ts.map +1 -1
  593. package/dist/server/routes.js +6 -0
  594. package/dist/server/routes.js.map +1 -1
  595. package/dist/server/scenario-recorder.d.ts +56 -0
  596. package/dist/server/scenario-recorder.d.ts.map +1 -0
  597. package/dist/server/scenario-recorder.js +109 -0
  598. package/dist/server/scenario-recorder.js.map +1 -0
  599. package/dist/server/scripted-scenario-runner.d.ts +46 -0
  600. package/dist/server/scripted-scenario-runner.d.ts.map +1 -0
  601. package/dist/server/scripted-scenario-runner.js +190 -0
  602. package/dist/server/scripted-scenario-runner.js.map +1 -0
  603. package/dist/server/server-middlewares.d.ts +6 -2
  604. package/dist/server/server-middlewares.d.ts.map +1 -1
  605. package/dist/server/server-middlewares.js +8 -2
  606. package/dist/server/server-middlewares.js.map +1 -1
  607. package/dist/server/server-request-manager.d.ts +9 -1
  608. package/dist/server/server-request-manager.d.ts.map +1 -1
  609. package/dist/server/server-request-manager.js +49 -4
  610. package/dist/server/server-request-manager.js.map +1 -1
  611. package/dist/services/intelligent-router/service.d.ts +2 -0
  612. package/dist/services/intelligent-router/service.d.ts.map +1 -1
  613. package/dist/services/intelligent-router/service.js +4 -0
  614. package/dist/services/intelligent-router/service.js.map +1 -1
  615. package/dist/services/service-authority.d.ts +25 -0
  616. package/dist/services/service-authority.d.ts.map +1 -0
  617. package/dist/services/service-authority.js +143 -0
  618. package/dist/services/service-authority.js.map +1 -0
  619. package/dist/services/workspace-config/service.d.ts +2 -0
  620. package/dist/services/workspace-config/service.d.ts.map +1 -1
  621. package/dist/services/workspace-config/service.js +4 -0
  622. package/dist/services/workspace-config/service.js.map +1 -1
  623. package/dist/session/manager.d.ts +8 -2
  624. package/dist/session/manager.d.ts.map +1 -1
  625. package/dist/session/manager.js +19 -4
  626. package/dist/session/manager.js.map +1 -1
  627. package/dist/session/session-branch.d.ts.map +1 -1
  628. package/dist/session/session-branch.js +5 -1
  629. package/dist/session/session-branch.js.map +1 -1
  630. package/dist/session/session-catalog.d.ts +7 -2
  631. package/dist/session/session-catalog.d.ts.map +1 -1
  632. package/dist/session/session-catalog.js +13 -2
  633. package/dist/session/session-catalog.js.map +1 -1
  634. package/dist/session/session-context.d.ts +6 -2
  635. package/dist/session/session-context.d.ts.map +1 -1
  636. package/dist/session/session-context.js +44 -4
  637. package/dist/session/session-context.js.map +1 -1
  638. package/dist/session/session-graph-projection.d.ts +32 -0
  639. package/dist/session/session-graph-projection.d.ts.map +1 -0
  640. package/dist/session/session-graph-projection.js +133 -0
  641. package/dist/session/session-graph-projection.js.map +1 -0
  642. package/dist/session/types.d.ts +18 -0
  643. package/dist/session/types.d.ts.map +1 -1
  644. package/dist/session/types.js +8 -0
  645. package/dist/session/types.js.map +1 -1
  646. package/dist/session/wire-format.generated.d.ts +3 -0
  647. package/dist/session/wire-format.generated.d.ts.map +1 -1
  648. package/dist/session/wire-format.generated.js +20 -0
  649. package/dist/session/wire-format.generated.js.map +1 -1
  650. package/dist/skills/eval-harness.d.ts +38 -0
  651. package/dist/skills/eval-harness.d.ts.map +1 -0
  652. package/dist/skills/eval-harness.js +112 -0
  653. package/dist/skills/eval-harness.js.map +1 -0
  654. package/dist/skills/index.d.ts +5 -1
  655. package/dist/skills/index.d.ts.map +1 -1
  656. package/dist/skills/index.js +5 -1
  657. package/dist/skills/index.js.map +1 -1
  658. package/dist/skills/linter.d.ts +36 -0
  659. package/dist/skills/linter.d.ts.map +1 -0
  660. package/dist/skills/linter.js +398 -0
  661. package/dist/skills/linter.js.map +1 -0
  662. package/dist/skills/loader.d.ts +36 -6
  663. package/dist/skills/loader.d.ts.map +1 -1
  664. package/dist/skills/loader.js +169 -86
  665. package/dist/skills/loader.js.map +1 -1
  666. package/dist/skills/package-contract.d.ts +45 -0
  667. package/dist/skills/package-contract.d.ts.map +1 -0
  668. package/dist/skills/package-contract.js +153 -0
  669. package/dist/skills/package-contract.js.map +1 -0
  670. package/dist/skills/runtime-activation.d.ts +68 -0
  671. package/dist/skills/runtime-activation.d.ts.map +1 -0
  672. package/dist/skills/runtime-activation.js +228 -0
  673. package/dist/skills/runtime-activation.js.map +1 -0
  674. package/dist/skills/service-client.d.ts.map +1 -1
  675. package/dist/skills/service-client.js +3 -4
  676. package/dist/skills/service-client.js.map +1 -1
  677. package/dist/skills/tool.d.ts.map +1 -1
  678. package/dist/skills/tool.js +2 -0
  679. package/dist/skills/tool.js.map +1 -1
  680. package/dist/skills/types.d.ts +14 -0
  681. package/dist/skills/types.d.ts.map +1 -1
  682. package/dist/skills/types.js.map +1 -1
  683. package/dist/telemetry/agent-operating-plane-context.d.ts +24 -0
  684. package/dist/telemetry/agent-operating-plane-context.d.ts.map +1 -0
  685. package/dist/telemetry/agent-operating-plane-context.js +54 -0
  686. package/dist/telemetry/agent-operating-plane-context.js.map +1 -0
  687. package/dist/telemetry/beacon.d.ts +24 -0
  688. package/dist/telemetry/beacon.d.ts.map +1 -0
  689. package/dist/telemetry/beacon.js +115 -0
  690. package/dist/telemetry/beacon.js.map +1 -0
  691. package/dist/telemetry/cli-command-aggregator.d.ts +36 -0
  692. package/dist/telemetry/cli-command-aggregator.d.ts.map +1 -0
  693. package/dist/telemetry/cli-command-aggregator.js +251 -0
  694. package/dist/telemetry/cli-command-aggregator.js.map +1 -0
  695. package/dist/telemetry/cli-startup.d.ts +21 -0
  696. package/dist/telemetry/cli-startup.d.ts.map +1 -0
  697. package/dist/telemetry/cli-startup.js +83 -0
  698. package/dist/telemetry/cli-startup.js.map +1 -0
  699. package/dist/telemetry/disablement.d.ts +13 -0
  700. package/dist/telemetry/disablement.d.ts.map +1 -0
  701. package/dist/telemetry/disablement.js +19 -0
  702. package/dist/telemetry/disablement.js.map +1 -0
  703. package/dist/telemetry/index.d.ts +6 -2
  704. package/dist/telemetry/index.d.ts.map +1 -1
  705. package/dist/telemetry/index.js +6 -2
  706. package/dist/telemetry/index.js.map +1 -1
  707. package/dist/telemetry/maestro-event-bus.d.ts +52 -0
  708. package/dist/telemetry/maestro-event-bus.d.ts.map +1 -1
  709. package/dist/telemetry/maestro-event-bus.js +179 -3
  710. package/dist/telemetry/maestro-event-bus.js.map +1 -1
  711. package/dist/telemetry/maestro-event-catalog.d.ts +3 -1
  712. package/dist/telemetry/maestro-event-catalog.d.ts.map +1 -1
  713. package/dist/telemetry/maestro-event-catalog.js +2 -0
  714. package/dist/telemetry/maestro-event-catalog.js.map +1 -1
  715. package/dist/telemetry/maestro-platform-replay-fixture.d.ts.map +1 -1
  716. package/dist/telemetry/maestro-platform-replay-fixture.js +74 -9
  717. package/dist/telemetry/maestro-platform-replay-fixture.js.map +1 -1
  718. package/dist/telemetry/maestro-publisher-conformance-fixture.d.ts +1 -1
  719. package/dist/telemetry/maestro-publisher-conformance-fixture.d.ts.map +1 -1
  720. package/dist/telemetry/maestro-publisher-conformance-fixture.js +46 -11
  721. package/dist/telemetry/maestro-publisher-conformance-fixture.js.map +1 -1
  722. package/dist/telemetry/mcp-beacon.d.ts +20 -0
  723. package/dist/telemetry/mcp-beacon.d.ts.map +1 -0
  724. package/dist/telemetry/mcp-beacon.js +54 -0
  725. package/dist/telemetry/mcp-beacon.js.map +1 -0
  726. package/dist/telemetry/metadata-normalization.d.ts +7 -0
  727. package/dist/telemetry/metadata-normalization.d.ts.map +1 -0
  728. package/dist/telemetry/metadata-normalization.js +189 -0
  729. package/dist/telemetry/metadata-normalization.js.map +1 -0
  730. package/dist/telemetry/meter-service-client.d.ts.map +1 -1
  731. package/dist/telemetry/meter-service-client.js +5 -10
  732. package/dist/telemetry/meter-service-client.js.map +1 -1
  733. package/dist/telemetry/metrics.d.ts +123 -0
  734. package/dist/telemetry/metrics.d.ts.map +1 -0
  735. package/dist/telemetry/metrics.js +184 -0
  736. package/dist/telemetry/metrics.js.map +1 -0
  737. package/dist/telemetry/turn-tracker.d.ts +1 -0
  738. package/dist/telemetry/turn-tracker.d.ts.map +1 -1
  739. package/dist/telemetry/turn-tracker.js +22 -1
  740. package/dist/telemetry/turn-tracker.js.map +1 -1
  741. package/dist/telemetry/wide-events.d.ts +31 -1
  742. package/dist/telemetry/wide-events.d.ts.map +1 -1
  743. package/dist/telemetry/wide-events.js +229 -1
  744. package/dist/telemetry/wide-events.js.map +1 -1
  745. package/dist/telemetry.d.ts +39 -3
  746. package/dist/telemetry.d.ts.map +1 -1
  747. package/dist/telemetry.js +160 -3
  748. package/dist/telemetry.js.map +1 -1
  749. package/dist/testing/test-verification-hook.d.ts.map +1 -1
  750. package/dist/testing/test-verification-hook.js +34 -21
  751. package/dist/testing/test-verification-hook.js.map +1 -1
  752. package/dist/tools/apply-patch-parser.d.ts +26 -0
  753. package/dist/tools/apply-patch-parser.d.ts.map +1 -0
  754. package/dist/tools/apply-patch-parser.js +146 -0
  755. package/dist/tools/apply-patch-parser.js.map +1 -0
  756. package/dist/tools/apply-patch.d.ts +42 -0
  757. package/dist/tools/apply-patch.d.ts.map +1 -0
  758. package/dist/tools/apply-patch.js +648 -0
  759. package/dist/tools/apply-patch.js.map +1 -0
  760. package/dist/tools/ask-user.d.ts +1 -0
  761. package/dist/tools/ask-user.d.ts.map +1 -1
  762. package/dist/tools/background/tool-handler.d.ts +1 -0
  763. package/dist/tools/background/tool-handler.d.ts.map +1 -1
  764. package/dist/tools/bash.d.ts +1 -0
  765. package/dist/tools/bash.d.ts.map +1 -1
  766. package/dist/tools/codesearch.d.ts +1 -0
  767. package/dist/tools/codesearch.d.ts.map +1 -1
  768. package/dist/tools/conductor-client.d.ts +1 -0
  769. package/dist/tools/conductor-client.d.ts.map +1 -1
  770. package/dist/tools/conductor-client.js +63 -0
  771. package/dist/tools/conductor-client.js.map +1 -1
  772. package/dist/tools/diff.d.ts +1 -0
  773. package/dist/tools/diff.d.ts.map +1 -1
  774. package/dist/tools/edit.d.ts +1 -0
  775. package/dist/tools/edit.d.ts.map +1 -1
  776. package/dist/tools/extract-document.d.ts +1 -0
  777. package/dist/tools/extract-document.d.ts.map +1 -1
  778. package/dist/tools/find.d.ts +10 -0
  779. package/dist/tools/find.d.ts.map +1 -1
  780. package/dist/tools/find.js +236 -27
  781. package/dist/tools/find.js.map +1 -1
  782. package/dist/tools/gh.d.ts +3 -0
  783. package/dist/tools/gh.d.ts.map +1 -1
  784. package/dist/tools/index.d.ts +50 -0
  785. package/dist/tools/index.d.ts.map +1 -1
  786. package/dist/tools/index.js +4 -0
  787. package/dist/tools/index.js.map +1 -1
  788. package/dist/tools/list.d.ts +1 -0
  789. package/dist/tools/list.d.ts.map +1 -1
  790. package/dist/tools/notebook.d.ts +1 -0
  791. package/dist/tools/notebook.d.ts.map +1 -1
  792. package/dist/tools/oracle.d.ts +1 -0
  793. package/dist/tools/oracle.d.ts.map +1 -1
  794. package/dist/tools/oracle.js +17 -32
  795. package/dist/tools/oracle.js.map +1 -1
  796. package/dist/tools/parallel-execution.d.ts +13 -2
  797. package/dist/tools/parallel-execution.d.ts.map +1 -1
  798. package/dist/tools/parallel-execution.js +178 -7
  799. package/dist/tools/parallel-execution.js.map +1 -1
  800. package/dist/tools/parallel-ripgrep.d.ts +1 -0
  801. package/dist/tools/parallel-ripgrep.d.ts.map +1 -1
  802. package/dist/tools/pipeline.d.ts +4 -0
  803. package/dist/tools/pipeline.d.ts.map +1 -1
  804. package/dist/tools/read.d.ts +1 -0
  805. package/dist/tools/read.d.ts.map +1 -1
  806. package/dist/tools/search.d.ts +1 -0
  807. package/dist/tools/search.d.ts.map +1 -1
  808. package/dist/tools/status.d.ts +1 -0
  809. package/dist/tools/status.d.ts.map +1 -1
  810. package/dist/tools/todo.d.ts +1 -0
  811. package/dist/tools/todo.d.ts.map +1 -1
  812. package/dist/tools/tool-dsl.d.ts +5 -1
  813. package/dist/tools/tool-dsl.d.ts.map +1 -1
  814. package/dist/tools/tool-dsl.js +1 -0
  815. package/dist/tools/tool-dsl.js.map +1 -1
  816. package/dist/tools/tool-result-cache.d.ts.map +1 -1
  817. package/dist/tools/tool-result-cache.js +1 -0
  818. package/dist/tools/tool-result-cache.js.map +1 -1
  819. package/dist/tools/typebox-tool.d.ts.map +1 -1
  820. package/dist/tools/typebox-tool.js +3 -0
  821. package/dist/tools/typebox-tool.js.map +1 -1
  822. package/dist/tools/webfetch.d.ts +1 -0
  823. package/dist/tools/webfetch.d.ts.map +1 -1
  824. package/dist/tools/websearch.d.ts +1 -0
  825. package/dist/tools/websearch.d.ts.map +1 -1
  826. package/dist/tools/write.d.ts +1 -0
  827. package/dist/tools/write.d.ts.map +1 -1
  828. package/dist/utils/abort-error.d.ts +2 -0
  829. package/dist/utils/abort-error.d.ts.map +1 -0
  830. package/dist/utils/abort-error.js +7 -0
  831. package/dist/utils/abort-error.js.map +1 -0
  832. package/dist/utils/downstream.d.ts.map +1 -1
  833. package/dist/utils/downstream.js +4 -0
  834. package/dist/utils/downstream.js.map +1 -1
  835. package/dist/utils/logger.d.ts +3 -0
  836. package/dist/utils/logger.d.ts.map +1 -1
  837. package/dist/utils/logger.js +14 -3
  838. package/dist/utils/logger.js.map +1 -1
  839. package/dist/utils/path-containment.d.ts +2 -0
  840. package/dist/utils/path-containment.d.ts.map +1 -0
  841. package/dist/utils/path-containment.js +14 -0
  842. package/dist/utils/path-containment.js.map +1 -0
  843. package/dist/utils/prompt-safe-text.d.ts +7 -0
  844. package/dist/utils/prompt-safe-text.d.ts.map +1 -0
  845. package/dist/utils/prompt-safe-text.js +44 -0
  846. package/dist/utils/prompt-safe-text.js.map +1 -0
  847. package/dist/version.json +2 -2
  848. package/dist/web-server.d.ts.map +1 -1
  849. package/dist/web-server.js +32 -7
  850. package/dist/web-server.js.map +1 -1
  851. package/dist/workspace/root-resolver.d.ts +4 -1
  852. package/dist/workspace/root-resolver.d.ts.map +1 -1
  853. package/dist/workspace/root-resolver.js +16 -6
  854. package/dist/workspace/root-resolver.js.map +1 -1
  855. package/node_modules/@evalops/contracts/dist/advisor-effort.d.ts +8 -0
  856. package/node_modules/@evalops/contracts/dist/advisor-effort.d.ts.map +1 -0
  857. package/node_modules/@evalops/contracts/dist/advisor-effort.js +35 -0
  858. package/node_modules/@evalops/contracts/dist/advisor-effort.js.map +1 -0
  859. package/node_modules/@evalops/contracts/dist/delegation-prompt.d.ts +10 -0
  860. package/node_modules/@evalops/contracts/dist/delegation-prompt.d.ts.map +1 -0
  861. package/node_modules/@evalops/contracts/dist/delegation-prompt.js +48 -0
  862. package/node_modules/@evalops/contracts/dist/delegation-prompt.js.map +1 -0
  863. package/node_modules/@evalops/contracts/dist/guarded-files-settings.d.ts +20 -0
  864. package/node_modules/@evalops/contracts/dist/guarded-files-settings.d.ts.map +1 -0
  865. package/node_modules/@evalops/contracts/dist/guarded-files-settings.js +147 -0
  866. package/node_modules/@evalops/contracts/dist/guarded-files-settings.js.map +1 -0
  867. package/node_modules/@evalops/contracts/dist/headless-protocol-generated.d.ts +2 -0
  868. package/node_modules/@evalops/contracts/dist/headless-protocol-generated.d.ts.map +1 -1
  869. package/node_modules/@evalops/contracts/dist/headless-protocol-generated.js +1 -0
  870. package/node_modules/@evalops/contracts/dist/headless-protocol-generated.js.map +1 -1
  871. package/node_modules/@evalops/contracts/dist/headless-protocol-schemas.generated.d.ts +280 -5
  872. package/node_modules/@evalops/contracts/dist/headless-protocol-schemas.generated.d.ts.map +1 -1
  873. package/node_modules/@evalops/contracts/dist/headless-protocol-schemas.generated.js +36 -1
  874. package/node_modules/@evalops/contracts/dist/headless-protocol-schemas.generated.js.map +1 -1
  875. package/node_modules/@evalops/contracts/dist/index.d.ts +15 -1
  876. package/node_modules/@evalops/contracts/dist/index.d.ts.map +1 -1
  877. package/node_modules/@evalops/contracts/dist/index.js +6 -0
  878. package/node_modules/@evalops/contracts/dist/index.js.map +1 -1
  879. package/node_modules/@evalops/contracts/dist/maestro-app-server.d.ts +593 -0
  880. package/node_modules/@evalops/contracts/dist/maestro-app-server.d.ts.map +1 -0
  881. package/node_modules/@evalops/contracts/dist/maestro-app-server.js +218 -0
  882. package/node_modules/@evalops/contracts/dist/maestro-app-server.js.map +1 -0
  883. package/node_modules/@evalops/contracts/dist/proto/maestro/v1/headless_pb.d.ts +91 -0
  884. package/node_modules/@evalops/contracts/dist/proto/maestro/v1/headless_pb.d.ts.map +1 -1
  885. package/node_modules/@evalops/contracts/dist/proto/maestro/v1/headless_pb.js +92 -61
  886. package/node_modules/@evalops/contracts/dist/proto/maestro/v1/headless_pb.js.map +1 -1
  887. package/node_modules/@evalops/contracts/dist/runtime-app-server.d.ts +3 -0
  888. package/node_modules/@evalops/contracts/dist/runtime-app-server.d.ts.map +1 -1
  889. package/node_modules/@evalops/contracts/dist/runtime-constraints.d.ts +28 -0
  890. package/node_modules/@evalops/contracts/dist/runtime-constraints.d.ts.map +1 -0
  891. package/node_modules/@evalops/contracts/dist/runtime-constraints.js +71 -0
  892. package/node_modules/@evalops/contracts/dist/runtime-constraints.js.map +1 -0
  893. package/node_modules/@evalops/contracts/dist/runtime-server-request.d.ts +7 -0
  894. package/node_modules/@evalops/contracts/dist/runtime-server-request.d.ts.map +1 -1
  895. package/node_modules/@evalops/contracts/dist/runtime-server-request.js +2 -0
  896. package/node_modules/@evalops/contracts/dist/runtime-server-request.js.map +1 -1
  897. package/node_modules/@evalops/contracts/dist/scenario.d.ts +191 -0
  898. package/node_modules/@evalops/contracts/dist/scenario.d.ts.map +1 -0
  899. package/node_modules/@evalops/contracts/dist/scenario.js +4 -0
  900. package/node_modules/@evalops/contracts/dist/scenario.js.map +1 -0
  901. package/node_modules/@evalops/contracts/dist/schemas.d.ts +17 -3
  902. package/node_modules/@evalops/contracts/dist/schemas.d.ts.map +1 -1
  903. package/node_modules/@evalops/contracts/dist/schemas.js +16 -0
  904. package/node_modules/@evalops/contracts/dist/schemas.js.map +1 -1
  905. package/node_modules/@evalops/contracts/package.json +1 -1
  906. package/node_modules/@evalops/tui/package.json +1 -1
  907. package/package.json +41 -7
  908. package/skills/incident-triage/SKILL.md +40 -0
  909. package/skills/incident-triage/mcp.json +14 -0
  910. package/skills/incident-triage/reference/triage.md +20 -0
  911. package/skills/incident-triage/toolbox/incident-timeline +22 -0
  912. package/skills/incident-triage/toolbox/incident-timeline.cmd +16 -0
  913. package/skills/pr-review/SKILL.md +40 -0
  914. package/skills/pr-review/mcp.json +14 -0
  915. package/skills/pr-review/reference/rubric.md +20 -0
  916. package/skills/pr-review/toolbox/review-summary +20 -0
  917. package/skills/pr-review/toolbox/review-summary.cmd +14 -0
  918. package/skills/release-verification/SKILL.md +40 -0
  919. package/skills/release-verification/mcp.json +15 -0
  920. package/skills/release-verification/reference/checklist.md +21 -0
  921. package/skills/release-verification/toolbox/release-readiness +18 -0
  922. package/skills/release-verification/toolbox/release-readiness.cmd +12 -0
@@ -0,0 +1,56 @@
1
+ export declare const CODEX_SUBAGENT_TOOL_PREFIX = "codex.subagent.";
2
+ export declare const CODEX_THREAD_CHILD_RUN_PREFIX = "codex-thread:";
3
+ export declare const CODEX_SUBAGENT_WORK_GRAPH_SCHEMA = "evalops.maestro.codex.subagent-workgraph.v1";
4
+ export type CodexSubagentCanonicalTool = "spawnAgent" | "sendInput" | "resumeAgent" | "wait" | "closeAgent";
5
+ export interface CodexSubagentLifecycleOperation {
6
+ tool: CodexSubagentCanonicalTool;
7
+ operation: string;
8
+ aliases: readonly string[];
9
+ activeStatus: string;
10
+ terminalSuccessStatus: string;
11
+ nextAction: string;
12
+ }
13
+ export declare const CODEX_SUBAGENT_LIFECYCLE_OPERATIONS: readonly [{
14
+ readonly tool: "spawnAgent";
15
+ readonly operation: "spawn_agent";
16
+ readonly aliases: readonly ["spawnAgent", "spawn_agent"];
17
+ readonly activeStatus: "waiting_for_restore";
18
+ readonly terminalSuccessStatus: "spawned";
19
+ readonly nextAction: "wait for child agent initialization or completion";
20
+ }, {
21
+ readonly tool: "sendInput";
22
+ readonly operation: "send_input";
23
+ readonly aliases: readonly ["sendInput", "send_input"];
24
+ readonly activeStatus: "waiting_for_input_ack";
25
+ readonly terminalSuccessStatus: "acknowledged";
26
+ readonly nextAction: "wait for child agent response";
27
+ }, {
28
+ readonly tool: "resumeAgent";
29
+ readonly operation: "resume_agent";
30
+ readonly aliases: readonly ["resumeAgent", "resumeSubagent", "resume_agent", "resume_subagent"];
31
+ readonly activeStatus: "restoring";
32
+ readonly terminalSuccessStatus: "resumed";
33
+ readonly nextAction: "wait for resumed child agent response";
34
+ }, {
35
+ readonly tool: "wait";
36
+ readonly operation: "wait_agent";
37
+ readonly aliases: readonly ["wait", "waitAgent", "wait_agent"];
38
+ readonly activeStatus: "wait_pending";
39
+ readonly terminalSuccessStatus: "completed";
40
+ readonly nextAction: "wait for selected child agents";
41
+ }, {
42
+ readonly tool: "closeAgent";
43
+ readonly operation: "close_agent";
44
+ readonly aliases: readonly ["closeAgent", "close_agent"];
45
+ readonly activeStatus: "waiting_for_close";
46
+ readonly terminalSuccessStatus: "closed";
47
+ readonly nextAction: "confirm child agent shutdown";
48
+ }];
49
+ export declare function codexSubagentLifecycleOperation(value: string | undefined): CodexSubagentLifecycleOperation | undefined;
50
+ export declare function canonicalCodexSubagentTool(value: string | undefined): CodexSubagentCanonicalTool | undefined;
51
+ export declare function codexSubagentOperationName(value: string | undefined): string | undefined;
52
+ export declare function codexSubagentActiveStatus(value: string | undefined): string | undefined;
53
+ export declare function codexSubagentTerminalSuccessStatus(value: string | undefined): string | undefined;
54
+ export declare function codexSubagentNextAction(value: string | undefined): string | undefined;
55
+ export declare function codexSubagentLifecycleOperationForTool(tool: CodexSubagentCanonicalTool): CodexSubagentLifecycleOperation;
56
+ //# sourceMappingURL=subagent-workgraph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subagent-workgraph.d.ts","sourceRoot":"","sources":["../../src/codex/subagent-workgraph.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,0BAA0B,oBAAoB,CAAC;AAC5D,eAAO,MAAM,6BAA6B,kBAAkB,CAAC;AAC7D,eAAO,MAAM,gCAAgC,gDACC,CAAC;AAE/C,MAAM,MAAM,0BAA0B,GACnC,YAAY,GACZ,WAAW,GACX,aAAa,GACb,MAAM,GACN,YAAY,CAAC;AAEhB,MAAM,WAAW,+BAA+B;IAC/C,IAAI,EAAE,0BAA0B,CAAC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,UAAU,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,mCAAmC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8Ce,CAAC;AA0BhE,wBAAgB,+BAA+B,CAC9C,KAAK,EAAE,MAAM,GAAG,SAAS,GACvB,+BAA+B,GAAG,SAAS,CAE7C;AAED,wBAAgB,0BAA0B,CACzC,KAAK,EAAE,MAAM,GAAG,SAAS,GACvB,0BAA0B,GAAG,SAAS,CAExC;AAED,wBAAgB,0BAA0B,CACzC,KAAK,EAAE,MAAM,GAAG,SAAS,GACvB,MAAM,GAAG,SAAS,CAEpB;AAED,wBAAgB,yBAAyB,CACxC,KAAK,EAAE,MAAM,GAAG,SAAS,GACvB,MAAM,GAAG,SAAS,CAEpB;AAED,wBAAgB,kCAAkC,CACjD,KAAK,EAAE,MAAM,GAAG,SAAS,GACvB,MAAM,GAAG,SAAS,CAEpB;AAED,wBAAgB,uBAAuB,CACtC,KAAK,EAAE,MAAM,GAAG,SAAS,GACvB,MAAM,GAAG,SAAS,CAEpB;AAED,wBAAgB,sCAAsC,CACrD,IAAI,EAAE,0BAA0B,GAC9B,+BAA+B,CAMjC"}
@@ -0,0 +1,89 @@
1
+ export const CODEX_SUBAGENT_TOOL_PREFIX = "codex.subagent.";
2
+ export const CODEX_THREAD_CHILD_RUN_PREFIX = "codex-thread:";
3
+ export const CODEX_SUBAGENT_WORK_GRAPH_SCHEMA = "evalops.maestro.codex.subagent-workgraph.v1";
4
+ export const CODEX_SUBAGENT_LIFECYCLE_OPERATIONS = [
5
+ {
6
+ tool: "spawnAgent",
7
+ operation: "spawn_agent",
8
+ aliases: ["spawnAgent", "spawn_agent"],
9
+ activeStatus: "waiting_for_restore",
10
+ terminalSuccessStatus: "spawned",
11
+ nextAction: "wait for child agent initialization or completion",
12
+ },
13
+ {
14
+ tool: "sendInput",
15
+ operation: "send_input",
16
+ aliases: ["sendInput", "send_input"],
17
+ activeStatus: "waiting_for_input_ack",
18
+ terminalSuccessStatus: "acknowledged",
19
+ nextAction: "wait for child agent response",
20
+ },
21
+ {
22
+ tool: "resumeAgent",
23
+ operation: "resume_agent",
24
+ aliases: [
25
+ "resumeAgent",
26
+ "resumeSubagent",
27
+ "resume_agent",
28
+ "resume_subagent",
29
+ ],
30
+ activeStatus: "restoring",
31
+ terminalSuccessStatus: "resumed",
32
+ nextAction: "wait for resumed child agent response",
33
+ },
34
+ {
35
+ tool: "wait",
36
+ operation: "wait_agent",
37
+ aliases: ["wait", "waitAgent", "wait_agent"],
38
+ activeStatus: "wait_pending",
39
+ terminalSuccessStatus: "completed",
40
+ nextAction: "wait for selected child agents",
41
+ },
42
+ {
43
+ tool: "closeAgent",
44
+ operation: "close_agent",
45
+ aliases: ["closeAgent", "close_agent"],
46
+ activeStatus: "waiting_for_close",
47
+ terminalSuccessStatus: "closed",
48
+ nextAction: "confirm child agent shutdown",
49
+ },
50
+ ];
51
+ const operationByAlias = new Map();
52
+ const operationByCanonicalTool = new Map();
53
+ for (const operation of CODEX_SUBAGENT_LIFECYCLE_OPERATIONS) {
54
+ operationByCanonicalTool.set(operation.tool, operation);
55
+ operationByAlias.set(operation.tool, operation);
56
+ operationByAlias.set(operation.operation, operation);
57
+ operationByAlias.set(`${CODEX_SUBAGENT_TOOL_PREFIX}${operation.tool}`, operation);
58
+ operationByAlias.set(`${CODEX_SUBAGENT_TOOL_PREFIX}${operation.operation}`, operation);
59
+ for (const alias of operation.aliases) {
60
+ operationByAlias.set(alias, operation);
61
+ operationByAlias.set(`${CODEX_SUBAGENT_TOOL_PREFIX}${alias}`, operation);
62
+ }
63
+ }
64
+ export function codexSubagentLifecycleOperation(value) {
65
+ return value ? operationByAlias.get(value) : undefined;
66
+ }
67
+ export function canonicalCodexSubagentTool(value) {
68
+ return codexSubagentLifecycleOperation(value)?.tool;
69
+ }
70
+ export function codexSubagentOperationName(value) {
71
+ return codexSubagentLifecycleOperation(value)?.operation;
72
+ }
73
+ export function codexSubagentActiveStatus(value) {
74
+ return codexSubagentLifecycleOperation(value)?.activeStatus;
75
+ }
76
+ export function codexSubagentTerminalSuccessStatus(value) {
77
+ return codexSubagentLifecycleOperation(value)?.terminalSuccessStatus;
78
+ }
79
+ export function codexSubagentNextAction(value) {
80
+ return codexSubagentLifecycleOperation(value)?.nextAction;
81
+ }
82
+ export function codexSubagentLifecycleOperationForTool(tool) {
83
+ const operation = operationByCanonicalTool.get(tool);
84
+ if (!operation) {
85
+ throw new Error(`Unknown Codex subagent tool ${tool}`);
86
+ }
87
+ return operation;
88
+ }
89
+ //# sourceMappingURL=subagent-workgraph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subagent-workgraph.js","sourceRoot":"","sources":["../../src/codex/subagent-workgraph.ts"],"names":[],"mappings":"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","sourcesContent":["export const CODEX_SUBAGENT_TOOL_PREFIX = \"codex.subagent.\";\nexport const CODEX_THREAD_CHILD_RUN_PREFIX = \"codex-thread:\";\nexport const CODEX_SUBAGENT_WORK_GRAPH_SCHEMA =\n\t\"evalops.maestro.codex.subagent-workgraph.v1\";\n\nexport type CodexSubagentCanonicalTool =\n\t| \"spawnAgent\"\n\t| \"sendInput\"\n\t| \"resumeAgent\"\n\t| \"wait\"\n\t| \"closeAgent\";\n\nexport interface CodexSubagentLifecycleOperation {\n\ttool: CodexSubagentCanonicalTool;\n\toperation: string;\n\taliases: readonly string[];\n\tactiveStatus: string;\n\tterminalSuccessStatus: string;\n\tnextAction: string;\n}\n\nexport const CODEX_SUBAGENT_LIFECYCLE_OPERATIONS = [\n\t{\n\t\ttool: \"spawnAgent\",\n\t\toperation: \"spawn_agent\",\n\t\taliases: [\"spawnAgent\", \"spawn_agent\"],\n\t\tactiveStatus: \"waiting_for_restore\",\n\t\tterminalSuccessStatus: \"spawned\",\n\t\tnextAction: \"wait for child agent initialization or completion\",\n\t},\n\t{\n\t\ttool: \"sendInput\",\n\t\toperation: \"send_input\",\n\t\taliases: [\"sendInput\", \"send_input\"],\n\t\tactiveStatus: \"waiting_for_input_ack\",\n\t\tterminalSuccessStatus: \"acknowledged\",\n\t\tnextAction: \"wait for child agent response\",\n\t},\n\t{\n\t\ttool: \"resumeAgent\",\n\t\toperation: \"resume_agent\",\n\t\taliases: [\n\t\t\t\"resumeAgent\",\n\t\t\t\"resumeSubagent\",\n\t\t\t\"resume_agent\",\n\t\t\t\"resume_subagent\",\n\t\t],\n\t\tactiveStatus: \"restoring\",\n\t\tterminalSuccessStatus: \"resumed\",\n\t\tnextAction: \"wait for resumed child agent response\",\n\t},\n\t{\n\t\ttool: \"wait\",\n\t\toperation: \"wait_agent\",\n\t\taliases: [\"wait\", \"waitAgent\", \"wait_agent\"],\n\t\tactiveStatus: \"wait_pending\",\n\t\tterminalSuccessStatus: \"completed\",\n\t\tnextAction: \"wait for selected child agents\",\n\t},\n\t{\n\t\ttool: \"closeAgent\",\n\t\toperation: \"close_agent\",\n\t\taliases: [\"closeAgent\", \"close_agent\"],\n\t\tactiveStatus: \"waiting_for_close\",\n\t\tterminalSuccessStatus: \"closed\",\n\t\tnextAction: \"confirm child agent shutdown\",\n\t},\n] as const satisfies readonly CodexSubagentLifecycleOperation[];\n\nconst operationByAlias = new Map<string, CodexSubagentLifecycleOperation>();\nconst operationByCanonicalTool = new Map<\n\tCodexSubagentCanonicalTool,\n\tCodexSubagentLifecycleOperation\n>();\n\nfor (const operation of CODEX_SUBAGENT_LIFECYCLE_OPERATIONS) {\n\toperationByCanonicalTool.set(operation.tool, operation);\n\toperationByAlias.set(operation.tool, operation);\n\toperationByAlias.set(operation.operation, operation);\n\toperationByAlias.set(\n\t\t`${CODEX_SUBAGENT_TOOL_PREFIX}${operation.tool}`,\n\t\toperation,\n\t);\n\toperationByAlias.set(\n\t\t`${CODEX_SUBAGENT_TOOL_PREFIX}${operation.operation}`,\n\t\toperation,\n\t);\n\tfor (const alias of operation.aliases) {\n\t\toperationByAlias.set(alias, operation);\n\t\toperationByAlias.set(`${CODEX_SUBAGENT_TOOL_PREFIX}${alias}`, operation);\n\t}\n}\n\nexport function codexSubagentLifecycleOperation(\n\tvalue: string | undefined,\n): CodexSubagentLifecycleOperation | undefined {\n\treturn value ? operationByAlias.get(value) : undefined;\n}\n\nexport function canonicalCodexSubagentTool(\n\tvalue: string | undefined,\n): CodexSubagentCanonicalTool | undefined {\n\treturn codexSubagentLifecycleOperation(value)?.tool;\n}\n\nexport function codexSubagentOperationName(\n\tvalue: string | undefined,\n): string | undefined {\n\treturn codexSubagentLifecycleOperation(value)?.operation;\n}\n\nexport function codexSubagentActiveStatus(\n\tvalue: string | undefined,\n): string | undefined {\n\treturn codexSubagentLifecycleOperation(value)?.activeStatus;\n}\n\nexport function codexSubagentTerminalSuccessStatus(\n\tvalue: string | undefined,\n): string | undefined {\n\treturn codexSubagentLifecycleOperation(value)?.terminalSuccessStatus;\n}\n\nexport function codexSubagentNextAction(\n\tvalue: string | undefined,\n): string | undefined {\n\treturn codexSubagentLifecycleOperation(value)?.nextAction;\n}\n\nexport function codexSubagentLifecycleOperationForTool(\n\ttool: CodexSubagentCanonicalTool,\n): CodexSubagentLifecycleOperation {\n\tconst operation = operationByCanonicalTool.get(tool);\n\tif (!operation) {\n\t\tthrow new Error(`Unknown Codex subagent tool ${tool}`);\n\t}\n\treturn operation;\n}\n"]}
@@ -46,6 +46,8 @@ export declare const PATHS: {
46
46
  readonly TOOL_FAILURE_LOG: string;
47
47
  /** Project MCP approval decisions */
48
48
  readonly MCP_PROJECT_APPROVALS_FILE: string;
49
+ /** Per-workspace MCP invocation trust decisions */
50
+ readonly MCP_WORKSPACE_TRUST_FILE: string;
49
51
  /** Project onboarding state */
50
52
  readonly PROJECT_ONBOARDING_FILE: string;
51
53
  /** TUI keybinding overrides */
@@ -71,7 +73,7 @@ export declare const PATHS: {
71
73
  /** Cost tracking database path */
72
74
  readonly COST_DB: string;
73
75
  /** Agent context files */
74
- readonly AGENT_CONTEXT_FILES: readonly ["AGENTS.override.md", "AGENTS.md", "AGENT.md", "CLAUDE.md"];
76
+ readonly AGENT_CONTEXT_FILES: readonly ["AGENTS.override.md", "AGENTS.md", "Agents.md", "agents.md", "AGENT.md", "Agent.md", "agent.md", "CLAUDE.md"];
75
77
  };
76
78
  /**
77
79
  * API and network configuration
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/config/constants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,eAAO,MAAM,eAAe,QAAO,MACwC,CAAC;AAE5E,eAAO,MAAM,WAAW,QAAO,MAM9B,CAAC;AASF;;GAEG;AACH,eAAO,MAAM,cAAc;IAC1B,0DAA0D;;IAK1D,qCAAqC;0BAClB,MAAM;IAMzB,iFAAiF;;IAEjF,uDAAuD;;CAK9C,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,WAAW;IACvB,0DAA0D;;IAK1D,sCAAsC;;IAEtC,+CAA+C;;CAEtC,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,KAAK;IACjB,8BAA8B;2BACV,MAAM;IAG1B,2BAA2B;yBACT,MAAM;IAMxB,+BAA+B;yBACb,MAAM;IAMxB,8BAA8B;4BACT,MAAM;IAM3B,iCAAiC;+BACT,MAAM;IAG9B,qCAAqC;yCACH,MAAM;IAMxC,+BAA+B;sCACA,MAAM;IAMrC,+BAA+B;mCACH,MAAM;IAMlC,oCAAoC;sCACL,MAAM;IAGrC,yBAAyB;4BACJ,MAAM;IAM3B,8BAA8B;iCACJ,MAAM;IAMhC,gCAAgC;mCACJ,MAAM;IAMlC,6BAA6B;gCACJ,MAAM;IAM/B,+BAA+B;kCACJ,MAAM;IAMjC,6BAA6B;gCACJ,MAAM;IAM/B,8BAA8B;wBACb,MAAM;IAGvB,8BAA8B;gCACL,MAAM;IAM/B,kCAAkC;sBACnB,MAAM;IAMrB,0BAA0B;;CAOjB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,UAAU;IACtB,0DAA0D;;IAK1D,oCAAoC;;CAI3B,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,MAAM;IAClB,2CAA2C;;IAK3C,uCAAuC;;IAKvC,iDAAiD;;IAEjD,kCAAkC;;CAEzB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,QAAQ;IACpB,wDAAwD;;IAExD,2DAA2D;;IAE3D,uBAAuB;;IAEvB,6BAA6B;;IAE7B,6BAA6B;;IAE7B,0CAA0C;;CAEjC,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,UAAU;IACtB,kDAAkD;;CAuBzC,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,MAAM;;;;;;;CAOT,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/config/constants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,eAAO,MAAM,eAAe,QAAO,MACwC,CAAC;AAE5E,eAAO,MAAM,WAAW,QAAO,MAM9B,CAAC;AASF;;GAEG;AACH,eAAO,MAAM,cAAc;IAC1B,0DAA0D;;IAK1D,qCAAqC;0BAClB,MAAM;IAMzB,iFAAiF;;IAEjF,uDAAuD;;CAK9C,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,WAAW;IACvB,0DAA0D;;IAK1D,sCAAsC;;IAEtC,+CAA+C;;CAEtC,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,KAAK;IACjB,8BAA8B;2BACV,MAAM;IAG1B,2BAA2B;yBACT,MAAM;IAMxB,+BAA+B;yBACb,MAAM;IAMxB,8BAA8B;4BACT,MAAM;IAM3B,iCAAiC;+BACT,MAAM;IAG9B,qCAAqC;yCACH,MAAM;IAMxC,mDAAmD;uCACnB,MAAM;IAMtC,+BAA+B;sCACA,MAAM;IAMrC,+BAA+B;mCACH,MAAM;IAMlC,oCAAoC;sCACL,MAAM;IAGrC,yBAAyB;4BACJ,MAAM;IAM3B,8BAA8B;iCACJ,MAAM;IAMhC,gCAAgC;mCACJ,MAAM;IAMlC,6BAA6B;gCACJ,MAAM;IAM/B,+BAA+B;kCACJ,MAAM;IAMjC,6BAA6B;gCACJ,MAAM;IAM/B,8BAA8B;wBACb,MAAM;IAGvB,8BAA8B;gCACL,MAAM;IAM/B,kCAAkC;sBACnB,MAAM;IAMrB,0BAA0B;;CAWjB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,UAAU;IACtB,0DAA0D;;IAK1D,oCAAoC;;CAI3B,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,MAAM;IAClB,2CAA2C;;IAK3C,uCAAuC;;IAKvC,iDAAiD;;IAEjD,kCAAkC;;CAEzB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,QAAQ;IACpB,wDAAwD;;IAExD,2DAA2D;;IAE3D,uBAAuB;;IAEvB,6BAA6B;;IAE7B,6BAA6B;;IAE7B,0CAA0C;;CAEjC,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,UAAU;IACtB,kDAAkD;;CAuBzC,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,MAAM;;;;;;;CAOT,CAAC"}
@@ -79,6 +79,11 @@ export const PATHS = {
79
79
  return (resolveEnvPath(process.env.MAESTRO_MCP_PROJECT_APPROVALS_FILE) ??
80
80
  join(getComposerHome(), "mcp-project-approvals.json"));
81
81
  },
82
+ /** Per-workspace MCP invocation trust decisions */
83
+ get MCP_WORKSPACE_TRUST_FILE() {
84
+ return (resolveEnvPath(process.env.MAESTRO_MCP_WORKSPACE_TRUST_FILE) ??
85
+ join(getComposerHome(), "mcp-workspace-trust.json"));
86
+ },
82
87
  /** Project onboarding state */
83
88
  get PROJECT_ONBOARDING_FILE() {
84
89
  return (resolveEnvPath(process.env.MAESTRO_PROJECT_ONBOARDING_FILE) ??
@@ -141,7 +146,11 @@ export const PATHS = {
141
146
  AGENT_CONTEXT_FILES: [
142
147
  "AGENTS.override.md",
143
148
  "AGENTS.md",
149
+ "Agents.md",
150
+ "agents.md",
144
151
  "AGENT.md",
152
+ "Agent.md",
153
+ "agent.md",
145
154
  "CLAUDE.md",
146
155
  ],
147
156
  };
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/config/constants.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Centralized configuration constants for Composer CLI.\n *\n * This module consolidates magic numbers, default values, and paths\n * to improve maintainability and allow environment-based overrides.\n */\n\nimport { join, resolve } from \"node:path\";\nimport { getHomeDir, resolveEnvPath } from \"../utils/path-expansion.js\";\n\nexport const getComposerHome = (): string =>\n\tresolveEnvPath(process.env.MAESTRO_HOME) ?? join(getHomeDir(), \".maestro\");\n\nexport const getAgentDir = (): string => {\n\tconst envAgentDir =\n\t\tresolveEnvPath(process.env.MAESTRO_AGENT_DIR) ??\n\t\tresolveEnvPath(process.env.PLAYWRIGHT_AGENT_DIR) ??\n\t\tresolveEnvPath(process.env.CODING_AGENT_DIR);\n\treturn envAgentDir || join(getComposerHome(), \"agent\");\n};\n\n/** Parse an int env var, returning `fallback` only when the value is NaN. */\nfunction intEnv(raw: string | undefined, fallback: number): number {\n\tif (raw === undefined) return fallback;\n\tconst n = Number.parseInt(raw, 10);\n\treturn Number.isNaN(n) ? fallback : n;\n}\n\n/**\n * Session management configuration\n */\nexport const SESSION_CONFIG = {\n\t/** Number of entries to buffer before flushing to disk */\n\tWRITE_BATCH_SIZE: Number.parseInt(\n\t\tprocess.env.MAESTRO_SESSION_BATCH_SIZE ?? \"25\",\n\t\t10,\n\t),\n\t/** Default session directory path */\n\tget DEFAULT_DIR(): string {\n\t\treturn (\n\t\t\tresolveEnvPath(process.env.MAESTRO_SESSION_DIR) ??\n\t\t\tjoin(getAgentDir(), \"sessions\")\n\t\t);\n\t},\n\t/** Maximum number of sessions to retain per working directory (0 = unlimited) */\n\tMAX_SESSIONS: Math.max(0, intEnv(process.env.MAESTRO_MAX_SESSIONS, 100)),\n\t/** Maximum age for sessions in days (0 = unlimited) */\n\tMAX_SESSION_AGE_DAYS: Math.max(\n\t\t0,\n\t\tintEnv(process.env.MAESTRO_MAX_SESSION_AGE_DAYS, 90),\n\t),\n} as const;\n\n/**\n * Tool execution configuration\n */\nexport const TOOL_CONFIG = {\n\t/** Default timeout for bash commands (in milliseconds) */\n\tBASH_DEFAULT_TIMEOUT_MS: Number.parseInt(\n\t\tprocess.env.MAESTRO_BASH_TIMEOUT_MS ?? \"90000\",\n\t\t10,\n\t),\n\t/** Default file read limit (lines) */\n\tREAD_DEFAULT_LIMIT: 2400,\n\t/** Maximum context lines for search results */\n\tSEARCH_MAX_CONTEXT_LINES: 5,\n} as const;\n\n/**\n * Storage paths configuration\n */\nexport const PATHS = {\n\t/** Composer home directory */\n\tget MAESTRO_HOME(): string {\n\t\treturn getComposerHome();\n\t},\n\t/** Todo store file path */\n\tget TODO_STORE(): string {\n\t\treturn (\n\t\t\tresolveEnvPath(process.env.MAESTRO_TODO_FILE) ??\n\t\t\tjoin(getComposerHome(), \"todos.json\")\n\t\t);\n\t},\n\t/** Usage tracking file path */\n\tget USAGE_FILE(): string {\n\t\treturn (\n\t\t\tresolveEnvPath(process.env.MAESTRO_USAGE_FILE) ??\n\t\t\tjoin(getComposerHome(), \"usage.json\")\n\t\t);\n\t},\n\t/** Telemetry log file path */\n\tget TELEMETRY_LOG(): string {\n\t\treturn (\n\t\t\tresolveEnvPath(process.env.MAESTRO_TELEMETRY_FILE) ??\n\t\t\tjoin(getComposerHome(), \"telemetry.log\")\n\t\t);\n\t},\n\t/** Tool failure log file path */\n\tget TOOL_FAILURE_LOG(): string {\n\t\treturn join(getComposerHome(), \"tool-failures.log\");\n\t},\n\t/** Project MCP approval decisions */\n\tget MCP_PROJECT_APPROVALS_FILE(): string {\n\t\treturn (\n\t\t\tresolveEnvPath(process.env.MAESTRO_MCP_PROJECT_APPROVALS_FILE) ??\n\t\t\tjoin(getComposerHome(), \"mcp-project-approvals.json\")\n\t\t);\n\t},\n\t/** Project onboarding state */\n\tget PROJECT_ONBOARDING_FILE(): string {\n\t\treturn (\n\t\t\tresolveEnvPath(process.env.MAESTRO_PROJECT_ONBOARDING_FILE) ??\n\t\t\tjoin(getComposerHome(), \"project-onboarding.json\")\n\t\t);\n\t},\n\t/** TUI keybinding overrides */\n\tget TUI_KEYBINDINGS_FILE(): string {\n\t\treturn (\n\t\t\tresolveEnvPath(process.env.MAESTRO_KEYBINDINGS_FILE) ??\n\t\t\tjoin(getComposerHome(), \"keybindings.json\")\n\t\t);\n\t},\n\t/** Background task log directory */\n\tget BACKGROUND_TASK_LOG_DIR(): string {\n\t\treturn join(getComposerHome(), \"background-tasks\");\n\t},\n\t/** UI state file path */\n\tget UI_STATE_FILE(): string {\n\t\treturn (\n\t\t\tresolveEnvPath(process.env.MAESTRO_UI_STATE) ??\n\t\t\tresolve(getAgentDir(), \"ui-state.json\")\n\t\t);\n\t},\n\t/** Command prefs file path */\n\tget COMMAND_PREFS_FILE(): string {\n\t\treturn (\n\t\t\tresolveEnvPath(process.env.MAESTRO_COMMAND_PREFS) ??\n\t\t\tresolve(getAgentDir(), \"command-prefs.json\")\n\t\t);\n\t},\n\t/** TUI tip history file path */\n\tget TUI_TIP_HISTORY_FILE(): string {\n\t\treturn (\n\t\t\tresolveEnvPath(process.env.MAESTRO_TUI_TIP_HISTORY_FILE) ??\n\t\t\tjoin(getComposerHome(), \"tips-history.json\")\n\t\t);\n\t},\n\t/** Bash history file path */\n\tget BASH_HISTORY_FILE(): string {\n\t\treturn (\n\t\t\tresolveEnvPath(process.env.MAESTRO_BASH_HISTORY) ??\n\t\t\tjoin(getComposerHome(), \"bash-history.json\")\n\t\t);\n\t},\n\t/** Prompt history file path */\n\tget PROMPT_HISTORY_FILE(): string {\n\t\treturn (\n\t\t\tresolveEnvPath(process.env.MAESTRO_PROMPT_HISTORY_FILE) ??\n\t\t\tjoin(getComposerHome(), \"history\", \"prompts.jsonl\")\n\t\t);\n\t},\n\t/** Tool history file path */\n\tget TOOL_HISTORY_FILE(): string {\n\t\treturn (\n\t\t\tresolveEnvPath(process.env.MAESTRO_TOOL_HISTORY_FILE) ??\n\t\t\tjoin(getComposerHome(), \"history\", \"tools.jsonl\")\n\t\t);\n\t},\n\t/** Tools install directory */\n\tget TOOLS_DIR(): string {\n\t\treturn join(getComposerHome(), \"tools\");\n\t},\n\t/** Package cache directory */\n\tget PACKAGE_CACHE_DIR(): string {\n\t\treturn (\n\t\t\tresolveEnvPath(process.env.MAESTRO_PACKAGE_CACHE_DIR) ??\n\t\t\tjoin(getComposerHome(), \"packages\")\n\t\t);\n\t},\n\t/** Cost tracking database path */\n\tget COST_DB(): string {\n\t\treturn (\n\t\t\tresolveEnvPath(process.env.MAESTRO_COST_DB) ??\n\t\t\tjoin(getComposerHome(), \"costs.db\")\n\t\t);\n\t},\n\t/** Agent context files */\n\tAGENT_CONTEXT_FILES: [\n\t\t\"AGENTS.override.md\",\n\t\t\"AGENTS.md\",\n\t\t\"AGENT.md\",\n\t\t\"CLAUDE.md\",\n\t] as const,\n} as const;\n\n/**\n * API and network configuration\n */\nexport const API_CONFIG = {\n\t/** Request timeout for LLM API calls (in milliseconds) */\n\tREQUEST_TIMEOUT_MS: Number.parseInt(\n\t\tprocess.env.MAESTRO_API_TIMEOUT_MS ?? \"120000\",\n\t\t10,\n\t),\n\t/** Telemetry sampling rate (0-1) */\n\tTELEMETRY_SAMPLE_RATE: Number.parseFloat(\n\t\tprocess.env.MAESTRO_TELEMETRY_SAMPLE ?? \"1.0\",\n\t),\n} as const;\n\n/**\n * Performance and limits configuration\n */\nexport const LIMITS = {\n\t/** Maximum file size to read (in bytes) */\n\tMAX_FILE_SIZE_BYTES: Number.parseInt(\n\t\tprocess.env.MAESTRO_MAX_FILE_SIZE ?? \"10485760\", // 10MB\n\t\t10,\n\t),\n\t/** Maximum number of search results */\n\tMAX_SEARCH_RESULTS: Number.parseInt(\n\t\tprocess.env.MAESTRO_MAX_SEARCH_RESULTS ?? \"1000\",\n\t\t10,\n\t),\n\t/** Maximum command output length (characters) */\n\tMAX_COMMAND_OUTPUT: 40_000,\n\t/** Test timeout (milliseconds) */\n\tTEST_TIMEOUT_MS: 30_000,\n} as const;\n\n/**\n * Feature flags and mode toggles\n */\nexport const FEATURES = {\n\t/** Enable safe mode (requires plan before mutations) */\n\tSAFE_MODE: process.env.MAESTRO_SAFE_MODE === \"1\",\n\t/** Enable plan mode (ask before mutations via approval) */\n\tPLAN_MODE: process.env.MAESTRO_PLAN_MODE === \"1\",\n\t/** Enable telemetry */\n\tTELEMETRY_ENABLED: process.env.MAESTRO_TELEMETRY === \"true\",\n\t/** Telemetry endpoint URL */\n\tTELEMETRY_ENDPOINT: process.env.MAESTRO_TELEMETRY_ENDPOINT,\n\t/** Enable LSP integration */\n\tLSP_ENABLED: process.env.MAESTRO_LSP_ENABLED !== \"0\",\n\t/** Auto-start LSP servers when enabled */\n\tLSP_AUTOSTART: process.env.MAESTRO_LSP_AUTOSTART === \"1\",\n} as const;\n\n/**\n * Validation helpers\n */\nexport const VALIDATION = {\n\t/** File extensions considered safe for reading */\n\tSAFE_FILE_EXTENSIONS: new Set([\n\t\t\".ts\",\n\t\t\".js\",\n\t\t\".tsx\",\n\t\t\".jsx\",\n\t\t\".json\",\n\t\t\".md\",\n\t\t\".txt\",\n\t\t\".yml\",\n\t\t\".yaml\",\n\t\t\".toml\",\n\t\t\".xml\",\n\t\t\".html\",\n\t\t\".css\",\n\t\t\".py\",\n\t\t\".go\",\n\t\t\".rs\",\n\t\t\".java\",\n\t\t\".c\",\n\t\t\".cpp\",\n\t\t\".h\",\n\t]),\n} as const;\n\n/**\n * Error messages\n */\nexport const ERRORS = {\n\tSESSION_WRITE_FAILED: \"Failed to write session data\",\n\tSESSION_READ_FAILED: \"Failed to read session file\",\n\tTOOL_TIMEOUT: \"Tool execution timed out\",\n\tINVALID_PATH: \"Invalid or unsafe file path\",\n\tFILE_TOO_LARGE: \"File size exceeds maximum allowed limit\",\n\tTOOL_NOT_FOUND: \"Requested tool not found\",\n} as const;\n"]}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/config/constants.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Centralized configuration constants for Composer CLI.\n *\n * This module consolidates magic numbers, default values, and paths\n * to improve maintainability and allow environment-based overrides.\n */\n\nimport { join, resolve } from \"node:path\";\nimport { getHomeDir, resolveEnvPath } from \"../utils/path-expansion.js\";\n\nexport const getComposerHome = (): string =>\n\tresolveEnvPath(process.env.MAESTRO_HOME) ?? join(getHomeDir(), \".maestro\");\n\nexport const getAgentDir = (): string => {\n\tconst envAgentDir =\n\t\tresolveEnvPath(process.env.MAESTRO_AGENT_DIR) ??\n\t\tresolveEnvPath(process.env.PLAYWRIGHT_AGENT_DIR) ??\n\t\tresolveEnvPath(process.env.CODING_AGENT_DIR);\n\treturn envAgentDir || join(getComposerHome(), \"agent\");\n};\n\n/** Parse an int env var, returning `fallback` only when the value is NaN. */\nfunction intEnv(raw: string | undefined, fallback: number): number {\n\tif (raw === undefined) return fallback;\n\tconst n = Number.parseInt(raw, 10);\n\treturn Number.isNaN(n) ? fallback : n;\n}\n\n/**\n * Session management configuration\n */\nexport const SESSION_CONFIG = {\n\t/** Number of entries to buffer before flushing to disk */\n\tWRITE_BATCH_SIZE: Number.parseInt(\n\t\tprocess.env.MAESTRO_SESSION_BATCH_SIZE ?? \"25\",\n\t\t10,\n\t),\n\t/** Default session directory path */\n\tget DEFAULT_DIR(): string {\n\t\treturn (\n\t\t\tresolveEnvPath(process.env.MAESTRO_SESSION_DIR) ??\n\t\t\tjoin(getAgentDir(), \"sessions\")\n\t\t);\n\t},\n\t/** Maximum number of sessions to retain per working directory (0 = unlimited) */\n\tMAX_SESSIONS: Math.max(0, intEnv(process.env.MAESTRO_MAX_SESSIONS, 100)),\n\t/** Maximum age for sessions in days (0 = unlimited) */\n\tMAX_SESSION_AGE_DAYS: Math.max(\n\t\t0,\n\t\tintEnv(process.env.MAESTRO_MAX_SESSION_AGE_DAYS, 90),\n\t),\n} as const;\n\n/**\n * Tool execution configuration\n */\nexport const TOOL_CONFIG = {\n\t/** Default timeout for bash commands (in milliseconds) */\n\tBASH_DEFAULT_TIMEOUT_MS: Number.parseInt(\n\t\tprocess.env.MAESTRO_BASH_TIMEOUT_MS ?? \"90000\",\n\t\t10,\n\t),\n\t/** Default file read limit (lines) */\n\tREAD_DEFAULT_LIMIT: 2400,\n\t/** Maximum context lines for search results */\n\tSEARCH_MAX_CONTEXT_LINES: 5,\n} as const;\n\n/**\n * Storage paths configuration\n */\nexport const PATHS = {\n\t/** Composer home directory */\n\tget MAESTRO_HOME(): string {\n\t\treturn getComposerHome();\n\t},\n\t/** Todo store file path */\n\tget TODO_STORE(): string {\n\t\treturn (\n\t\t\tresolveEnvPath(process.env.MAESTRO_TODO_FILE) ??\n\t\t\tjoin(getComposerHome(), \"todos.json\")\n\t\t);\n\t},\n\t/** Usage tracking file path */\n\tget USAGE_FILE(): string {\n\t\treturn (\n\t\t\tresolveEnvPath(process.env.MAESTRO_USAGE_FILE) ??\n\t\t\tjoin(getComposerHome(), \"usage.json\")\n\t\t);\n\t},\n\t/** Telemetry log file path */\n\tget TELEMETRY_LOG(): string {\n\t\treturn (\n\t\t\tresolveEnvPath(process.env.MAESTRO_TELEMETRY_FILE) ??\n\t\t\tjoin(getComposerHome(), \"telemetry.log\")\n\t\t);\n\t},\n\t/** Tool failure log file path */\n\tget TOOL_FAILURE_LOG(): string {\n\t\treturn join(getComposerHome(), \"tool-failures.log\");\n\t},\n\t/** Project MCP approval decisions */\n\tget MCP_PROJECT_APPROVALS_FILE(): string {\n\t\treturn (\n\t\t\tresolveEnvPath(process.env.MAESTRO_MCP_PROJECT_APPROVALS_FILE) ??\n\t\t\tjoin(getComposerHome(), \"mcp-project-approvals.json\")\n\t\t);\n\t},\n\t/** Per-workspace MCP invocation trust decisions */\n\tget MCP_WORKSPACE_TRUST_FILE(): string {\n\t\treturn (\n\t\t\tresolveEnvPath(process.env.MAESTRO_MCP_WORKSPACE_TRUST_FILE) ??\n\t\t\tjoin(getComposerHome(), \"mcp-workspace-trust.json\")\n\t\t);\n\t},\n\t/** Project onboarding state */\n\tget PROJECT_ONBOARDING_FILE(): string {\n\t\treturn (\n\t\t\tresolveEnvPath(process.env.MAESTRO_PROJECT_ONBOARDING_FILE) ??\n\t\t\tjoin(getComposerHome(), \"project-onboarding.json\")\n\t\t);\n\t},\n\t/** TUI keybinding overrides */\n\tget TUI_KEYBINDINGS_FILE(): string {\n\t\treturn (\n\t\t\tresolveEnvPath(process.env.MAESTRO_KEYBINDINGS_FILE) ??\n\t\t\tjoin(getComposerHome(), \"keybindings.json\")\n\t\t);\n\t},\n\t/** Background task log directory */\n\tget BACKGROUND_TASK_LOG_DIR(): string {\n\t\treturn join(getComposerHome(), \"background-tasks\");\n\t},\n\t/** UI state file path */\n\tget UI_STATE_FILE(): string {\n\t\treturn (\n\t\t\tresolveEnvPath(process.env.MAESTRO_UI_STATE) ??\n\t\t\tresolve(getAgentDir(), \"ui-state.json\")\n\t\t);\n\t},\n\t/** Command prefs file path */\n\tget COMMAND_PREFS_FILE(): string {\n\t\treturn (\n\t\t\tresolveEnvPath(process.env.MAESTRO_COMMAND_PREFS) ??\n\t\t\tresolve(getAgentDir(), \"command-prefs.json\")\n\t\t);\n\t},\n\t/** TUI tip history file path */\n\tget TUI_TIP_HISTORY_FILE(): string {\n\t\treturn (\n\t\t\tresolveEnvPath(process.env.MAESTRO_TUI_TIP_HISTORY_FILE) ??\n\t\t\tjoin(getComposerHome(), \"tips-history.json\")\n\t\t);\n\t},\n\t/** Bash history file path */\n\tget BASH_HISTORY_FILE(): string {\n\t\treturn (\n\t\t\tresolveEnvPath(process.env.MAESTRO_BASH_HISTORY) ??\n\t\t\tjoin(getComposerHome(), \"bash-history.json\")\n\t\t);\n\t},\n\t/** Prompt history file path */\n\tget PROMPT_HISTORY_FILE(): string {\n\t\treturn (\n\t\t\tresolveEnvPath(process.env.MAESTRO_PROMPT_HISTORY_FILE) ??\n\t\t\tjoin(getComposerHome(), \"history\", \"prompts.jsonl\")\n\t\t);\n\t},\n\t/** Tool history file path */\n\tget TOOL_HISTORY_FILE(): string {\n\t\treturn (\n\t\t\tresolveEnvPath(process.env.MAESTRO_TOOL_HISTORY_FILE) ??\n\t\t\tjoin(getComposerHome(), \"history\", \"tools.jsonl\")\n\t\t);\n\t},\n\t/** Tools install directory */\n\tget TOOLS_DIR(): string {\n\t\treturn join(getComposerHome(), \"tools\");\n\t},\n\t/** Package cache directory */\n\tget PACKAGE_CACHE_DIR(): string {\n\t\treturn (\n\t\t\tresolveEnvPath(process.env.MAESTRO_PACKAGE_CACHE_DIR) ??\n\t\t\tjoin(getComposerHome(), \"packages\")\n\t\t);\n\t},\n\t/** Cost tracking database path */\n\tget COST_DB(): string {\n\t\treturn (\n\t\t\tresolveEnvPath(process.env.MAESTRO_COST_DB) ??\n\t\t\tjoin(getComposerHome(), \"costs.db\")\n\t\t);\n\t},\n\t/** Agent context files */\n\tAGENT_CONTEXT_FILES: [\n\t\t\"AGENTS.override.md\",\n\t\t\"AGENTS.md\",\n\t\t\"Agents.md\",\n\t\t\"agents.md\",\n\t\t\"AGENT.md\",\n\t\t\"Agent.md\",\n\t\t\"agent.md\",\n\t\t\"CLAUDE.md\",\n\t] as const,\n} as const;\n\n/**\n * API and network configuration\n */\nexport const API_CONFIG = {\n\t/** Request timeout for LLM API calls (in milliseconds) */\n\tREQUEST_TIMEOUT_MS: Number.parseInt(\n\t\tprocess.env.MAESTRO_API_TIMEOUT_MS ?? \"120000\",\n\t\t10,\n\t),\n\t/** Telemetry sampling rate (0-1) */\n\tTELEMETRY_SAMPLE_RATE: Number.parseFloat(\n\t\tprocess.env.MAESTRO_TELEMETRY_SAMPLE ?? \"1.0\",\n\t),\n} as const;\n\n/**\n * Performance and limits configuration\n */\nexport const LIMITS = {\n\t/** Maximum file size to read (in bytes) */\n\tMAX_FILE_SIZE_BYTES: Number.parseInt(\n\t\tprocess.env.MAESTRO_MAX_FILE_SIZE ?? \"10485760\", // 10MB\n\t\t10,\n\t),\n\t/** Maximum number of search results */\n\tMAX_SEARCH_RESULTS: Number.parseInt(\n\t\tprocess.env.MAESTRO_MAX_SEARCH_RESULTS ?? \"1000\",\n\t\t10,\n\t),\n\t/** Maximum command output length (characters) */\n\tMAX_COMMAND_OUTPUT: 40_000,\n\t/** Test timeout (milliseconds) */\n\tTEST_TIMEOUT_MS: 30_000,\n} as const;\n\n/**\n * Feature flags and mode toggles\n */\nexport const FEATURES = {\n\t/** Enable safe mode (requires plan before mutations) */\n\tSAFE_MODE: process.env.MAESTRO_SAFE_MODE === \"1\",\n\t/** Enable plan mode (ask before mutations via approval) */\n\tPLAN_MODE: process.env.MAESTRO_PLAN_MODE === \"1\",\n\t/** Enable telemetry */\n\tTELEMETRY_ENABLED: process.env.MAESTRO_TELEMETRY === \"true\",\n\t/** Telemetry endpoint URL */\n\tTELEMETRY_ENDPOINT: process.env.MAESTRO_TELEMETRY_ENDPOINT,\n\t/** Enable LSP integration */\n\tLSP_ENABLED: process.env.MAESTRO_LSP_ENABLED !== \"0\",\n\t/** Auto-start LSP servers when enabled */\n\tLSP_AUTOSTART: process.env.MAESTRO_LSP_AUTOSTART === \"1\",\n} as const;\n\n/**\n * Validation helpers\n */\nexport const VALIDATION = {\n\t/** File extensions considered safe for reading */\n\tSAFE_FILE_EXTENSIONS: new Set([\n\t\t\".ts\",\n\t\t\".js\",\n\t\t\".tsx\",\n\t\t\".jsx\",\n\t\t\".json\",\n\t\t\".md\",\n\t\t\".txt\",\n\t\t\".yml\",\n\t\t\".yaml\",\n\t\t\".toml\",\n\t\t\".xml\",\n\t\t\".html\",\n\t\t\".css\",\n\t\t\".py\",\n\t\t\".go\",\n\t\t\".rs\",\n\t\t\".java\",\n\t\t\".c\",\n\t\t\".cpp\",\n\t\t\".h\",\n\t]),\n} as const;\n\n/**\n * Error messages\n */\nexport const ERRORS = {\n\tSESSION_WRITE_FAILED: \"Failed to write session data\",\n\tSESSION_READ_FAILED: \"Failed to read session file\",\n\tTOOL_TIMEOUT: \"Tool execution timed out\",\n\tINVALID_PATH: \"Invalid or unsafe file path\",\n\tFILE_TOO_LARGE: \"File size exceeds maximum allowed limit\",\n\tTOOL_NOT_FOUND: \"Requested tool not found\",\n} as const;\n"]}
@@ -1,7 +1,12 @@
1
+ type FeatureFlagEnv = {
2
+ EVALOPS_FEATURE_FLAGS_PATH?: string | undefined;
3
+ };
1
4
  export declare const MAESTRO_EVALOPS_MANAGED_KILL_SWITCH = "platform.kill_switches.maestro.evalops_managed";
2
5
  export declare const MAESTRO_AUTONOMOUS_ACTIONS_KILL_SWITCH = "platform.kill_switches.maestro.autonomous_actions";
3
6
  export declare const MAESTRO_PLATFORM_RUNTIME_BRIDGE_KILL_SWITCH = "platform.kill_switches.maestro.platform_runtime_bridge";
7
+ export declare const MAESTRO_PLATFORM_EVENTS_KILL_SWITCH = "platform.kill_switches.maestro.platform_events";
4
8
  export declare const MAESTRO_DRAFT_AND_CONFIRM_DEFAULT_FLAG = "maestro.agent_authority.draft_and_confirm_default";
9
+ export declare const MAESTRO_PLATFORM_EVENTS_PUBLISHER_FLAG = "maestro.platform_events.publisher_enabled";
5
10
  export declare const MAESTRO_PLATFORM_RUNTIME_AGENT_RUNTIME_OBSERVE_FLAG = "maestro.platform_runtime.agent_runtime_observe";
6
11
  export declare const MAESTRO_PLATFORM_RUNTIME_TOOL_EXECUTION_BRIDGE_FLAG = "maestro.platform_runtime.tool_execution_bridge";
7
12
  export type FeatureFlagDecision = {
@@ -37,10 +42,13 @@ export type FeatureFlagRemoteOptions = {
37
42
  headers?: Record<string, string>;
38
43
  timeoutMs?: number;
39
44
  };
40
- export declare function isFeatureFlagEnabled(key: string): boolean;
45
+ export declare function isFeatureFlagSnapshotConfigured(env?: FeatureFlagEnv): boolean;
46
+ export declare function isFeatureFlagEnabled(key: string, env?: FeatureFlagEnv): boolean;
41
47
  export declare function areAutonomousActionsDisabled(): boolean;
42
48
  export declare function isDraftAndConfirmDefaultEnabled(): boolean;
43
49
  export declare function isPlatformRuntimeBridgeDisabled(): boolean;
50
+ export declare function areMaestroPlatformEventsDisabled(env?: FeatureFlagEnv): boolean;
51
+ export declare function isMaestroPlatformEventsPublisherEnabled(env?: FeatureFlagEnv): boolean;
44
52
  export declare function isPlatformRuntimeObserveEnabled(): boolean;
45
53
  export declare function isPlatformToolExecutionBridgeEnabled(): boolean;
46
54
  export declare function evaluateFeatureFlag(key: string, context: FeatureFlagRequestContext, defaultValue?: boolean, options?: FeatureFlagRemoteOptions): Promise<FeatureFlagDecision>;
@@ -49,4 +57,5 @@ export declare function assignExperiment(experimentId: string, context: FeatureF
49
57
  recordExposure?: boolean;
50
58
  }): Promise<ExperimentAssignment>;
51
59
  export declare function resetFeatureFlagCacheForTests(): void;
60
+ export {};
52
61
  //# sourceMappingURL=feature-flags.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"feature-flags.d.ts","sourceRoot":"","sources":["../../src/config/feature-flags.ts"],"names":[],"mappings":"AAsBA,eAAO,MAAM,mCAAmC,mDACC,CAAC;AAClD,eAAO,MAAM,sCAAsC,sDACC,CAAC;AACrD,eAAO,MAAM,2CAA2C,2DACC,CAAC;AAC1D,eAAO,MAAM,sCAAsC,sDACC,CAAC;AACrD,eAAO,MAAM,mDAAmD,mDACf,CAAC;AAClD,eAAO,MAAM,mDAAmD,mDACf,CAAC;AAElD,MAAM,MAAM,mBAAmB,GAAG;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IAClC,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACvC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;IAC1E,OAAO,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AA0EF,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAczD;AAED,wBAAgB,4BAA4B,IAAI,OAAO,CAEtD;AAED,wBAAgB,+BAA+B,IAAI,OAAO,CAEzD;AAED,wBAAgB,+BAA+B,IAAI,OAAO,CAEzD;AAED,wBAAgB,+BAA+B,IAAI,OAAO,CAIzD;AAED,wBAAgB,oCAAoC,IAAI,OAAO,CAI9D;AAED,wBAAsB,mBAAmB,CACxC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,yBAAyB,EAClC,YAAY,UAAQ,EACpB,OAAO,GAAE,wBAA6B,GACpC,OAAO,CAAC,mBAAmB,CAAC,CAkE9B;AAED,wBAAsB,gBAAgB,CACrC,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,yBAAyB,EAClC,OAAO,GAAE,wBAAwB,GAAG;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,cAAc,CAAC,EAAE,OAAO,CAAC;CACpB,GACJ,OAAO,CAAC,oBAAoB,CAAC,CAqE/B;AAuID,wBAAgB,6BAA6B,IAAI,IAAI,CAIpD"}
1
+ {"version":3,"file":"feature-flags.d.ts","sourceRoot":"","sources":["../../src/config/feature-flags.ts"],"names":[],"mappings":"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"}
@@ -5,14 +5,16 @@ const featureFlagCache = {
5
5
  export const MAESTRO_EVALOPS_MANAGED_KILL_SWITCH = "platform.kill_switches.maestro.evalops_managed";
6
6
  export const MAESTRO_AUTONOMOUS_ACTIONS_KILL_SWITCH = "platform.kill_switches.maestro.autonomous_actions";
7
7
  export const MAESTRO_PLATFORM_RUNTIME_BRIDGE_KILL_SWITCH = "platform.kill_switches.maestro.platform_runtime_bridge";
8
+ export const MAESTRO_PLATFORM_EVENTS_KILL_SWITCH = "platform.kill_switches.maestro.platform_events";
8
9
  export const MAESTRO_DRAFT_AND_CONFIRM_DEFAULT_FLAG = "maestro.agent_authority.draft_and_confirm_default";
10
+ export const MAESTRO_PLATFORM_EVENTS_PUBLISHER_FLAG = "maestro.platform_events.publisher_enabled";
9
11
  export const MAESTRO_PLATFORM_RUNTIME_AGENT_RUNTIME_OBSERVE_FLAG = "maestro.platform_runtime.agent_runtime_observe";
10
12
  export const MAESTRO_PLATFORM_RUNTIME_TOOL_EXECUTION_BRIDGE_FLAG = "maestro.platform_runtime.tool_execution_bridge";
11
13
  const DEFAULT_IN_CLUSTER_FLAG_CONTROL_URL = "http://flag-control-service.evalops.svc.cluster.local:8080";
12
14
  const DEFAULT_OUT_OF_CLUSTER_FLAG_CONTROL_URL = "https://flags.internal.evalops.dev";
13
15
  const DEFAULT_REMOTE_TIMEOUT_MS = 2_000;
14
- function getFeatureFlagsPath() {
15
- const configured = process.env.EVALOPS_FEATURE_FLAGS_PATH?.trim();
16
+ function getFeatureFlagsPath(env = process.env) {
17
+ const configured = env.EVALOPS_FEATURE_FLAGS_PATH?.trim();
16
18
  return configured ? configured : undefined;
17
19
  }
18
20
  function getFeatureFlagRemoteBaseUrl() {
@@ -32,8 +34,8 @@ function getFeatureFlagRemoteHeaders(headers) {
32
34
  }
33
35
  return merged;
34
36
  }
35
- function readFeatureFlagSnapshot() {
36
- const path = getFeatureFlagsPath();
37
+ function readFeatureFlagSnapshot(env = process.env) {
38
+ const path = getFeatureFlagsPath(env);
37
39
  if (!path) {
38
40
  featureFlagCache.lastKnownSnapshot = null;
39
41
  featureFlagCache.lastPath = undefined;
@@ -61,12 +63,15 @@ function readFeatureFlagSnapshot() {
61
63
  return featureFlagCache.lastKnownSnapshot;
62
64
  }
63
65
  }
64
- export function isFeatureFlagEnabled(key) {
66
+ export function isFeatureFlagSnapshotConfigured(env = process.env) {
67
+ return getFeatureFlagsPath(env) !== undefined;
68
+ }
69
+ export function isFeatureFlagEnabled(key, env = process.env) {
65
70
  const normalizedKey = key.trim();
66
71
  if (!normalizedKey) {
67
72
  return false;
68
73
  }
69
- const snapshot = readFeatureFlagSnapshot();
74
+ const snapshot = readFeatureFlagSnapshot(env);
70
75
  if (!snapshot?.flags?.length) {
71
76
  return false;
72
77
  }
@@ -81,6 +86,12 @@ export function isDraftAndConfirmDefaultEnabled() {
81
86
  export function isPlatformRuntimeBridgeDisabled() {
82
87
  return isFeatureFlagEnabled(MAESTRO_PLATFORM_RUNTIME_BRIDGE_KILL_SWITCH);
83
88
  }
89
+ export function areMaestroPlatformEventsDisabled(env = process.env) {
90
+ return isFeatureFlagEnabled(MAESTRO_PLATFORM_EVENTS_KILL_SWITCH, env);
91
+ }
92
+ export function isMaestroPlatformEventsPublisherEnabled(env = process.env) {
93
+ return isFeatureFlagEnabled(MAESTRO_PLATFORM_EVENTS_PUBLISHER_FLAG, env);
94
+ }
84
95
  export function isPlatformRuntimeObserveEnabled() {
85
96
  return isFeatureFlagEnabled(MAESTRO_PLATFORM_RUNTIME_AGENT_RUNTIME_OBSERVE_FLAG);
86
97
  }
@@ -1 +1 @@
1
- {"version":3,"file":"feature-flags.js","sourceRoot":"","sources":["../../src/config/feature-flags.ts"],"names":[],"mappings":"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","sourcesContent":["import { readFileSync, statSync } from \"node:fs\";\n\ntype FeatureFlag = {\n\tenabled?: boolean;\n\tkey?: string;\n};\n\ntype FeatureFlagSnapshot = {\n\tflags?: FeatureFlag[];\n\tschema_version?: number;\n};\n\ntype FeatureFlagCache = {\n\tlastKnownSnapshot: FeatureFlagSnapshot | null;\n\tlastPath?: string;\n\tlastStatMtimeMs?: number;\n};\n\nconst featureFlagCache: FeatureFlagCache = {\n\tlastKnownSnapshot: null,\n};\n\nexport const MAESTRO_EVALOPS_MANAGED_KILL_SWITCH =\n\t\"platform.kill_switches.maestro.evalops_managed\";\nexport const MAESTRO_AUTONOMOUS_ACTIONS_KILL_SWITCH =\n\t\"platform.kill_switches.maestro.autonomous_actions\";\nexport const MAESTRO_PLATFORM_RUNTIME_BRIDGE_KILL_SWITCH =\n\t\"platform.kill_switches.maestro.platform_runtime_bridge\";\nexport const MAESTRO_DRAFT_AND_CONFIRM_DEFAULT_FLAG =\n\t\"maestro.agent_authority.draft_and_confirm_default\";\nexport const MAESTRO_PLATFORM_RUNTIME_AGENT_RUNTIME_OBSERVE_FLAG =\n\t\"maestro.platform_runtime.agent_runtime_observe\";\nexport const MAESTRO_PLATFORM_RUNTIME_TOOL_EXECUTION_BRIDGE_FLAG =\n\t\"maestro.platform_runtime.tool_execution_bridge\";\n\nexport type FeatureFlagDecision = {\n\tkey: string;\n\tmetadata: Record<string, unknown>;\n\treason: string;\n\tvalue: boolean;\n\tvariant: string;\n};\n\nexport type ExperimentAssignment = {\n\tassigned: boolean;\n\tbucket: number;\n\texperimentId: string;\n\texposureRecorded: boolean;\n\tflagKey: string;\n\tholdoutId?: string;\n\tinHoldout: boolean;\n\tlayerId?: string;\n\tmetadata: Record<string, unknown>;\n\tnamespaceEnd: number;\n\tnamespaceStart: number;\n\treason: string;\n\tsubject: string;\n\tvariant: string;\n\tvariantBucket: number;\n};\n\nexport type FeatureFlagRequestContext = {\n\tattributes?: Record<string, string | number | boolean | null | undefined>;\n\tsubject: string;\n};\n\nexport type FeatureFlagRemoteOptions = {\n\tbaseUrl?: string;\n\theaders?: Record<string, string>;\n\ttimeoutMs?: number;\n};\n\nconst DEFAULT_IN_CLUSTER_FLAG_CONTROL_URL =\n\t\"http://flag-control-service.evalops.svc.cluster.local:8080\";\nconst DEFAULT_OUT_OF_CLUSTER_FLAG_CONTROL_URL =\n\t\"https://flags.internal.evalops.dev\";\nconst DEFAULT_REMOTE_TIMEOUT_MS = 2_000;\n\nfunction getFeatureFlagsPath(): string | undefined {\n\tconst configured = process.env.EVALOPS_FEATURE_FLAGS_PATH?.trim();\n\treturn configured ? configured : undefined;\n}\n\nfunction getFeatureFlagRemoteBaseUrl(): string {\n\treturn (\n\t\tprocess.env.EVALOPS_FEATURE_FLAGS_URL?.trim() ||\n\t\tprocess.env.EVALOPS_FLAG_CONTROL_URL?.trim() ||\n\t\t(process.env.KUBERNETES_SERVICE_HOST\n\t\t\t? DEFAULT_IN_CLUSTER_FLAG_CONTROL_URL\n\t\t\t: DEFAULT_OUT_OF_CLUSTER_FLAG_CONTROL_URL)\n\t).replace(/\\/+$/, \"\");\n}\n\nfunction getFeatureFlagRemoteHeaders(\n\theaders?: Record<string, string>,\n): Record<string, string> {\n\tconst merged: Record<string, string> = { ...(headers ?? {}) };\n\tconst token =\n\t\tprocess.env.EVALOPS_FEATURE_FLAGS_BEARER_TOKEN?.trim() ||\n\t\tprocess.env.EVALOPS_FLAG_CONTROL_BEARER_TOKEN?.trim();\n\tconst hasAuthorization = Object.keys(merged).some(\n\t\t(key) => key.toLowerCase() === \"authorization\",\n\t);\n\tif (token && !hasAuthorization) {\n\t\tmerged.Authorization = `Bearer ${token}`;\n\t}\n\treturn merged;\n}\n\nfunction readFeatureFlagSnapshot(): FeatureFlagSnapshot | null {\n\tconst path = getFeatureFlagsPath();\n\tif (!path) {\n\t\tfeatureFlagCache.lastKnownSnapshot = null;\n\t\tfeatureFlagCache.lastPath = undefined;\n\t\tfeatureFlagCache.lastStatMtimeMs = undefined;\n\t\treturn null;\n\t}\n\n\ttry {\n\t\tconst stats = statSync(path);\n\t\tif (\n\t\t\tfeatureFlagCache.lastPath === path &&\n\t\t\tfeatureFlagCache.lastStatMtimeMs === stats.mtimeMs\n\t\t) {\n\t\t\treturn featureFlagCache.lastKnownSnapshot;\n\t\t}\n\n\t\tconst snapshot = JSON.parse(\n\t\t\treadFileSync(path, \"utf8\"),\n\t\t) as FeatureFlagSnapshot;\n\t\tfeatureFlagCache.lastKnownSnapshot = snapshot;\n\t\tfeatureFlagCache.lastPath = path;\n\t\tfeatureFlagCache.lastStatMtimeMs = stats.mtimeMs;\n\t\treturn snapshot;\n\t} catch {\n\t\tif (featureFlagCache.lastPath !== path) {\n\t\t\tfeatureFlagCache.lastKnownSnapshot = null;\n\t\t}\n\t\tfeatureFlagCache.lastPath = path;\n\t\tfeatureFlagCache.lastStatMtimeMs = undefined;\n\t\treturn featureFlagCache.lastKnownSnapshot;\n\t}\n}\n\nexport function isFeatureFlagEnabled(key: string): boolean {\n\tconst normalizedKey = key.trim();\n\tif (!normalizedKey) {\n\t\treturn false;\n\t}\n\n\tconst snapshot = readFeatureFlagSnapshot();\n\tif (!snapshot?.flags?.length) {\n\t\treturn false;\n\t}\n\n\treturn snapshot.flags.some(\n\t\t(flag) => flag?.key?.trim() === normalizedKey && flag.enabled === true,\n\t);\n}\n\nexport function areAutonomousActionsDisabled(): boolean {\n\treturn isFeatureFlagEnabled(MAESTRO_AUTONOMOUS_ACTIONS_KILL_SWITCH);\n}\n\nexport function isDraftAndConfirmDefaultEnabled(): boolean {\n\treturn isFeatureFlagEnabled(MAESTRO_DRAFT_AND_CONFIRM_DEFAULT_FLAG);\n}\n\nexport function isPlatformRuntimeBridgeDisabled(): boolean {\n\treturn isFeatureFlagEnabled(MAESTRO_PLATFORM_RUNTIME_BRIDGE_KILL_SWITCH);\n}\n\nexport function isPlatformRuntimeObserveEnabled(): boolean {\n\treturn isFeatureFlagEnabled(\n\t\tMAESTRO_PLATFORM_RUNTIME_AGENT_RUNTIME_OBSERVE_FLAG,\n\t);\n}\n\nexport function isPlatformToolExecutionBridgeEnabled(): boolean {\n\treturn isFeatureFlagEnabled(\n\t\tMAESTRO_PLATFORM_RUNTIME_TOOL_EXECUTION_BRIDGE_FLAG,\n\t);\n}\n\nexport async function evaluateFeatureFlag(\n\tkey: string,\n\tcontext: FeatureFlagRequestContext,\n\tdefaultValue = false,\n\toptions: FeatureFlagRemoteOptions = {},\n): Promise<FeatureFlagDecision> {\n\tconst normalizedKey = key.trim();\n\tif (!normalizedKey) {\n\t\treturn fallbackDecision(\n\t\t\tnormalizedKey,\n\t\t\tcontext,\n\t\t\tdefaultValue,\n\t\t\t\"missing_key\",\n\t\t);\n\t}\n\n\ttry {\n\t\tconst response = await postJSON(\n\t\t\t`${remoteBaseUrl(options)}/ofrep/v1/evaluate/flags/${encodeURIComponent(normalizedKey)}`,\n\t\t\tJSON.stringify({ context: remoteContext(context) }),\n\t\t\toptions,\n\t\t);\n\t\tif (response.status === 404) {\n\t\t\treturn fallbackDecision(\n\t\t\t\tnormalizedKey,\n\t\t\t\tcontext,\n\t\t\t\tdefaultValue,\n\t\t\t\t\"not_found\",\n\t\t\t);\n\t\t}\n\t\tif (!response.ok) {\n\t\t\treturn fallbackDecision(\n\t\t\t\tnormalizedKey,\n\t\t\t\tcontext,\n\t\t\t\tdefaultValue,\n\t\t\t\t`remote_status_${response.status}`,\n\t\t\t);\n\t\t}\n\n\t\tconst payload = (await response.json()) as {\n\t\t\tkey?: string;\n\t\t\tmetadata?: Record<string, unknown>;\n\t\t\treason?: string;\n\t\t\tvalue?: unknown;\n\t\t\tvariant?: string;\n\t\t};\n\t\tif (typeof payload.value !== \"boolean\") {\n\t\t\treturn fallbackDecision(\n\t\t\t\tnormalizedKey,\n\t\t\t\tcontext,\n\t\t\t\tdefaultValue,\n\t\t\t\t\"invalid_remote_value\",\n\t\t\t);\n\t\t}\n\t\tconst metadata = getRecord(payload.metadata);\n\t\treturn {\n\t\t\tkey: payload.key?.trim() || normalizedKey,\n\t\t\tmetadata,\n\t\t\treason:\n\t\t\t\tgetString(metadata.flag_reason) || payload.reason?.trim() || \"remote\",\n\t\t\tvalue: payload.value,\n\t\t\tvariant: payload.variant?.trim() || booleanVariant(payload.value),\n\t\t};\n\t} catch (error) {\n\t\treturn fallbackDecision(\n\t\t\tnormalizedKey,\n\t\t\tcontext,\n\t\t\tdefaultValue,\n\t\t\terror instanceof Error ? error.message : \"remote_error\",\n\t\t);\n\t}\n}\n\nexport async function assignExperiment(\n\texperimentId: string,\n\tcontext: FeatureFlagRequestContext,\n\toptions: FeatureFlagRemoteOptions & {\n\t\tmetadata?: Record<string, unknown>;\n\t\trecordExposure?: boolean;\n\t} = {},\n): Promise<ExperimentAssignment> {\n\tconst normalizedExperimentId = experimentId.trim();\n\tif (!normalizedExperimentId) {\n\t\treturn missingAssignment(\n\t\t\tnormalizedExperimentId,\n\t\t\tcontext,\n\t\t\t\"missing_experiment_id\",\n\t\t);\n\t}\n\tconst subject = context.subject.trim();\n\tif (!subject) {\n\t\treturn missingAssignment(\n\t\t\tnormalizedExperimentId,\n\t\t\tcontext,\n\t\t\t\"missing_subject\",\n\t\t);\n\t}\n\n\ttry {\n\t\tconst response = await postJSON(\n\t\t\t`${remoteBaseUrl(options)}/api/experiments/${encodeURIComponent(normalizedExperimentId)}/assign`,\n\t\t\tJSON.stringify({\n\t\t\t\tcontext: remoteContext(context),\n\t\t\t\tmetadata: options.metadata ?? {},\n\t\t\t\trecord_exposure: options.recordExposure,\n\t\t\t\tsubject,\n\t\t\t}),\n\t\t\toptions,\n\t\t);\n\t\tif (response.status === 404) {\n\t\t\treturn missingAssignment(\n\t\t\t\tnormalizedExperimentId,\n\t\t\t\tcontext,\n\t\t\t\t\"missing_experiment\",\n\t\t\t);\n\t\t}\n\t\tif (!response.ok) {\n\t\t\treturn missingAssignment(\n\t\t\t\tnormalizedExperimentId,\n\t\t\t\tcontext,\n\t\t\t\t`remote_status_${response.status}`,\n\t\t\t);\n\t\t}\n\n\t\tconst payload = (await response.json()) as Record<string, unknown>;\n\t\treturn {\n\t\t\tassigned: payload.assigned === true,\n\t\t\tbucket: getNumber(payload.bucket),\n\t\t\texperimentId: getString(payload.experiment_id) || normalizedExperimentId,\n\t\t\texposureRecorded: payload.exposure_recorded === true,\n\t\t\tflagKey: getString(payload.flag_key),\n\t\t\tholdoutId: getString(payload.holdout_id) || undefined,\n\t\t\tinHoldout: payload.in_holdout === true,\n\t\t\tlayerId: getString(payload.layer_id) || undefined,\n\t\t\tmetadata: getRecord(payload.metadata),\n\t\t\tnamespaceEnd: getNumber(payload.namespace_end),\n\t\t\tnamespaceStart: getNumber(payload.namespace_start),\n\t\t\treason: getString(payload.reason) || \"remote\",\n\t\t\tsubject: getString(payload.subject) || subject,\n\t\t\tvariant: getString(payload.variant),\n\t\t\tvariantBucket: getNumber(payload.variant_bucket),\n\t\t};\n\t} catch (error) {\n\t\treturn missingAssignment(\n\t\t\tnormalizedExperimentId,\n\t\t\tcontext,\n\t\t\terror instanceof Error ? error.message : \"remote_error\",\n\t\t);\n\t}\n}\n\nfunction remoteBaseUrl(options: FeatureFlagRemoteOptions): string {\n\tconst configured = options.baseUrl?.trim().replace(/\\/+$/, \"\");\n\treturn configured || getFeatureFlagRemoteBaseUrl();\n}\n\nfunction remoteContext(\n\tcontext: FeatureFlagRequestContext,\n): Record<string, string | number | boolean> {\n\tconst remote: Record<string, string | number | boolean> = {};\n\tfor (const [key, value] of Object.entries(context.attributes ?? {})) {\n\t\tconst normalizedKey = key.trim();\n\t\tif (!normalizedKey || value == null) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (normalizedKey === \"subject\" || normalizedKey === \"targetingKey\") {\n\t\t\tcontinue;\n\t\t}\n\t\tif (typeof value === \"string\") {\n\t\t\tconst normalizedValue = value.trim();\n\t\t\tif (normalizedValue) {\n\t\t\t\tremote[normalizedKey] = normalizedValue;\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\t\tremote[normalizedKey] = value;\n\t}\n\tconst subject = context.subject.trim();\n\tif (subject) {\n\t\tremote.subject = subject;\n\t\tremote.targetingKey = subject;\n\t}\n\treturn remote;\n}\n\nfunction remoteTimeoutMs(\n\toptions: FeatureFlagRemoteOptions,\n): number | undefined {\n\tif (options.timeoutMs == null) {\n\t\treturn DEFAULT_REMOTE_TIMEOUT_MS;\n\t}\n\tif (!Number.isFinite(options.timeoutMs) || options.timeoutMs <= 0) {\n\t\treturn undefined;\n\t}\n\treturn Math.max(1, Math.trunc(options.timeoutMs));\n}\n\nasync function postJSON(\n\turl: string,\n\tbody: string,\n\toptions: FeatureFlagRemoteOptions,\n): Promise<Response> {\n\tconst controller = new AbortController();\n\tconst timeoutMs = remoteTimeoutMs(options);\n\tlet timeout: ReturnType<typeof setTimeout> | undefined;\n\tif (timeoutMs != null) {\n\t\ttimeout = setTimeout(() => controller.abort(), timeoutMs);\n\t}\n\ttry {\n\t\treturn await fetch(url, {\n\t\t\tbody,\n\t\t\theaders: {\n\t\t\t\taccept: \"application/json\",\n\t\t\t\t\"content-type\": \"application/json\",\n\t\t\t\t...getFeatureFlagRemoteHeaders(options.headers),\n\t\t\t},\n\t\t\tmethod: \"POST\",\n\t\t\tsignal: controller.signal,\n\t\t});\n\t} finally {\n\t\tif (timeout != null) {\n\t\t\tclearTimeout(timeout);\n\t\t}\n\t}\n}\n\nfunction fallbackDecision(\n\tkey: string,\n\tcontext: FeatureFlagRequestContext,\n\tdefaultValue: boolean,\n\treason: string,\n): FeatureFlagDecision {\n\treturn {\n\t\tkey,\n\t\tmetadata: {\n\t\t\tfallback_used: true,\n\t\t\tflag_subject: context.subject.trim(),\n\t\t},\n\t\treason,\n\t\tvalue: defaultValue,\n\t\tvariant: booleanVariant(defaultValue),\n\t};\n}\n\nfunction missingAssignment(\n\texperimentId: string,\n\tcontext: FeatureFlagRequestContext,\n\treason: string,\n): ExperimentAssignment {\n\treturn {\n\t\tassigned: false,\n\t\tbucket: 0,\n\t\texperimentId,\n\t\texposureRecorded: false,\n\t\tflagKey: \"\",\n\t\tinHoldout: false,\n\t\tmetadata: { fallback_used: true },\n\t\tnamespaceEnd: 0,\n\t\tnamespaceStart: 0,\n\t\treason,\n\t\tsubject: context.subject.trim(),\n\t\tvariant: \"\",\n\t\tvariantBucket: 0,\n\t};\n}\n\nfunction booleanVariant(value: boolean): string {\n\treturn value ? \"true\" : \"false\";\n}\n\nfunction getRecord(value: unknown): Record<string, unknown> {\n\treturn value != null && typeof value === \"object\" && !Array.isArray(value)\n\t\t? (value as Record<string, unknown>)\n\t\t: {};\n}\n\nfunction getString(value: unknown): string {\n\treturn typeof value === \"string\" ? value.trim() : \"\";\n}\n\nfunction getNumber(value: unknown): number {\n\treturn typeof value === \"number\" && Number.isFinite(value) ? value : 0;\n}\n\nexport function resetFeatureFlagCacheForTests(): void {\n\tfeatureFlagCache.lastKnownSnapshot = null;\n\tfeatureFlagCache.lastPath = undefined;\n\tfeatureFlagCache.lastStatMtimeMs = undefined;\n}\n"]}
1
+ {"version":3,"file":"feature-flags.js","sourceRoot":"","sources":["../../src/config/feature-flags.ts"],"names":[],"mappings":"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","sourcesContent":["import { readFileSync, statSync } from \"node:fs\";\n\ntype FeatureFlag = {\n\tenabled?: boolean;\n\tkey?: string;\n};\n\ntype FeatureFlagSnapshot = {\n\tflags?: FeatureFlag[];\n\tschema_version?: number;\n};\n\ntype FeatureFlagCache = {\n\tlastKnownSnapshot: FeatureFlagSnapshot | null;\n\tlastPath?: string;\n\tlastStatMtimeMs?: number;\n};\n\nconst featureFlagCache: FeatureFlagCache = {\n\tlastKnownSnapshot: null,\n};\n\ntype FeatureFlagEnv = {\n\tEVALOPS_FEATURE_FLAGS_PATH?: string | undefined;\n};\n\nexport const MAESTRO_EVALOPS_MANAGED_KILL_SWITCH =\n\t\"platform.kill_switches.maestro.evalops_managed\";\nexport const MAESTRO_AUTONOMOUS_ACTIONS_KILL_SWITCH =\n\t\"platform.kill_switches.maestro.autonomous_actions\";\nexport const MAESTRO_PLATFORM_RUNTIME_BRIDGE_KILL_SWITCH =\n\t\"platform.kill_switches.maestro.platform_runtime_bridge\";\nexport const MAESTRO_PLATFORM_EVENTS_KILL_SWITCH =\n\t\"platform.kill_switches.maestro.platform_events\";\nexport const MAESTRO_DRAFT_AND_CONFIRM_DEFAULT_FLAG =\n\t\"maestro.agent_authority.draft_and_confirm_default\";\nexport const MAESTRO_PLATFORM_EVENTS_PUBLISHER_FLAG =\n\t\"maestro.platform_events.publisher_enabled\";\nexport const MAESTRO_PLATFORM_RUNTIME_AGENT_RUNTIME_OBSERVE_FLAG =\n\t\"maestro.platform_runtime.agent_runtime_observe\";\nexport const MAESTRO_PLATFORM_RUNTIME_TOOL_EXECUTION_BRIDGE_FLAG =\n\t\"maestro.platform_runtime.tool_execution_bridge\";\n\nexport type FeatureFlagDecision = {\n\tkey: string;\n\tmetadata: Record<string, unknown>;\n\treason: string;\n\tvalue: boolean;\n\tvariant: string;\n};\n\nexport type ExperimentAssignment = {\n\tassigned: boolean;\n\tbucket: number;\n\texperimentId: string;\n\texposureRecorded: boolean;\n\tflagKey: string;\n\tholdoutId?: string;\n\tinHoldout: boolean;\n\tlayerId?: string;\n\tmetadata: Record<string, unknown>;\n\tnamespaceEnd: number;\n\tnamespaceStart: number;\n\treason: string;\n\tsubject: string;\n\tvariant: string;\n\tvariantBucket: number;\n};\n\nexport type FeatureFlagRequestContext = {\n\tattributes?: Record<string, string | number | boolean | null | undefined>;\n\tsubject: string;\n};\n\nexport type FeatureFlagRemoteOptions = {\n\tbaseUrl?: string;\n\theaders?: Record<string, string>;\n\ttimeoutMs?: number;\n};\n\nconst DEFAULT_IN_CLUSTER_FLAG_CONTROL_URL =\n\t\"http://flag-control-service.evalops.svc.cluster.local:8080\";\nconst DEFAULT_OUT_OF_CLUSTER_FLAG_CONTROL_URL =\n\t\"https://flags.internal.evalops.dev\";\nconst DEFAULT_REMOTE_TIMEOUT_MS = 2_000;\n\nfunction getFeatureFlagsPath(\n\tenv: FeatureFlagEnv = process.env,\n): string | undefined {\n\tconst configured = env.EVALOPS_FEATURE_FLAGS_PATH?.trim();\n\treturn configured ? configured : undefined;\n}\n\nfunction getFeatureFlagRemoteBaseUrl(): string {\n\treturn (\n\t\tprocess.env.EVALOPS_FEATURE_FLAGS_URL?.trim() ||\n\t\tprocess.env.EVALOPS_FLAG_CONTROL_URL?.trim() ||\n\t\t(process.env.KUBERNETES_SERVICE_HOST\n\t\t\t? DEFAULT_IN_CLUSTER_FLAG_CONTROL_URL\n\t\t\t: DEFAULT_OUT_OF_CLUSTER_FLAG_CONTROL_URL)\n\t).replace(/\\/+$/, \"\");\n}\n\nfunction getFeatureFlagRemoteHeaders(\n\theaders?: Record<string, string>,\n): Record<string, string> {\n\tconst merged: Record<string, string> = { ...(headers ?? {}) };\n\tconst token =\n\t\tprocess.env.EVALOPS_FEATURE_FLAGS_BEARER_TOKEN?.trim() ||\n\t\tprocess.env.EVALOPS_FLAG_CONTROL_BEARER_TOKEN?.trim();\n\tconst hasAuthorization = Object.keys(merged).some(\n\t\t(key) => key.toLowerCase() === \"authorization\",\n\t);\n\tif (token && !hasAuthorization) {\n\t\tmerged.Authorization = `Bearer ${token}`;\n\t}\n\treturn merged;\n}\n\nfunction readFeatureFlagSnapshot(\n\tenv: FeatureFlagEnv = process.env,\n): FeatureFlagSnapshot | null {\n\tconst path = getFeatureFlagsPath(env);\n\tif (!path) {\n\t\tfeatureFlagCache.lastKnownSnapshot = null;\n\t\tfeatureFlagCache.lastPath = undefined;\n\t\tfeatureFlagCache.lastStatMtimeMs = undefined;\n\t\treturn null;\n\t}\n\n\ttry {\n\t\tconst stats = statSync(path);\n\t\tif (\n\t\t\tfeatureFlagCache.lastPath === path &&\n\t\t\tfeatureFlagCache.lastStatMtimeMs === stats.mtimeMs\n\t\t) {\n\t\t\treturn featureFlagCache.lastKnownSnapshot;\n\t\t}\n\n\t\tconst snapshot = JSON.parse(\n\t\t\treadFileSync(path, \"utf8\"),\n\t\t) as FeatureFlagSnapshot;\n\t\tfeatureFlagCache.lastKnownSnapshot = snapshot;\n\t\tfeatureFlagCache.lastPath = path;\n\t\tfeatureFlagCache.lastStatMtimeMs = stats.mtimeMs;\n\t\treturn snapshot;\n\t} catch {\n\t\tif (featureFlagCache.lastPath !== path) {\n\t\t\tfeatureFlagCache.lastKnownSnapshot = null;\n\t\t}\n\t\tfeatureFlagCache.lastPath = path;\n\t\tfeatureFlagCache.lastStatMtimeMs = undefined;\n\t\treturn featureFlagCache.lastKnownSnapshot;\n\t}\n}\n\nexport function isFeatureFlagSnapshotConfigured(\n\tenv: FeatureFlagEnv = process.env,\n): boolean {\n\treturn getFeatureFlagsPath(env) !== undefined;\n}\n\nexport function isFeatureFlagEnabled(\n\tkey: string,\n\tenv: FeatureFlagEnv = process.env,\n): boolean {\n\tconst normalizedKey = key.trim();\n\tif (!normalizedKey) {\n\t\treturn false;\n\t}\n\n\tconst snapshot = readFeatureFlagSnapshot(env);\n\tif (!snapshot?.flags?.length) {\n\t\treturn false;\n\t}\n\n\treturn snapshot.flags.some(\n\t\t(flag) => flag?.key?.trim() === normalizedKey && flag.enabled === true,\n\t);\n}\n\nexport function areAutonomousActionsDisabled(): boolean {\n\treturn isFeatureFlagEnabled(MAESTRO_AUTONOMOUS_ACTIONS_KILL_SWITCH);\n}\n\nexport function isDraftAndConfirmDefaultEnabled(): boolean {\n\treturn isFeatureFlagEnabled(MAESTRO_DRAFT_AND_CONFIRM_DEFAULT_FLAG);\n}\n\nexport function isPlatformRuntimeBridgeDisabled(): boolean {\n\treturn isFeatureFlagEnabled(MAESTRO_PLATFORM_RUNTIME_BRIDGE_KILL_SWITCH);\n}\n\nexport function areMaestroPlatformEventsDisabled(\n\tenv: FeatureFlagEnv = process.env,\n): boolean {\n\treturn isFeatureFlagEnabled(MAESTRO_PLATFORM_EVENTS_KILL_SWITCH, env);\n}\n\nexport function isMaestroPlatformEventsPublisherEnabled(\n\tenv: FeatureFlagEnv = process.env,\n): boolean {\n\treturn isFeatureFlagEnabled(MAESTRO_PLATFORM_EVENTS_PUBLISHER_FLAG, env);\n}\n\nexport function isPlatformRuntimeObserveEnabled(): boolean {\n\treturn isFeatureFlagEnabled(\n\t\tMAESTRO_PLATFORM_RUNTIME_AGENT_RUNTIME_OBSERVE_FLAG,\n\t);\n}\n\nexport function isPlatformToolExecutionBridgeEnabled(): boolean {\n\treturn isFeatureFlagEnabled(\n\t\tMAESTRO_PLATFORM_RUNTIME_TOOL_EXECUTION_BRIDGE_FLAG,\n\t);\n}\n\nexport async function evaluateFeatureFlag(\n\tkey: string,\n\tcontext: FeatureFlagRequestContext,\n\tdefaultValue = false,\n\toptions: FeatureFlagRemoteOptions = {},\n): Promise<FeatureFlagDecision> {\n\tconst normalizedKey = key.trim();\n\tif (!normalizedKey) {\n\t\treturn fallbackDecision(\n\t\t\tnormalizedKey,\n\t\t\tcontext,\n\t\t\tdefaultValue,\n\t\t\t\"missing_key\",\n\t\t);\n\t}\n\n\ttry {\n\t\tconst response = await postJSON(\n\t\t\t`${remoteBaseUrl(options)}/ofrep/v1/evaluate/flags/${encodeURIComponent(normalizedKey)}`,\n\t\t\tJSON.stringify({ context: remoteContext(context) }),\n\t\t\toptions,\n\t\t);\n\t\tif (response.status === 404) {\n\t\t\treturn fallbackDecision(\n\t\t\t\tnormalizedKey,\n\t\t\t\tcontext,\n\t\t\t\tdefaultValue,\n\t\t\t\t\"not_found\",\n\t\t\t);\n\t\t}\n\t\tif (!response.ok) {\n\t\t\treturn fallbackDecision(\n\t\t\t\tnormalizedKey,\n\t\t\t\tcontext,\n\t\t\t\tdefaultValue,\n\t\t\t\t`remote_status_${response.status}`,\n\t\t\t);\n\t\t}\n\n\t\tconst payload = (await response.json()) as {\n\t\t\tkey?: string;\n\t\t\tmetadata?: Record<string, unknown>;\n\t\t\treason?: string;\n\t\t\tvalue?: unknown;\n\t\t\tvariant?: string;\n\t\t};\n\t\tif (typeof payload.value !== \"boolean\") {\n\t\t\treturn fallbackDecision(\n\t\t\t\tnormalizedKey,\n\t\t\t\tcontext,\n\t\t\t\tdefaultValue,\n\t\t\t\t\"invalid_remote_value\",\n\t\t\t);\n\t\t}\n\t\tconst metadata = getRecord(payload.metadata);\n\t\treturn {\n\t\t\tkey: payload.key?.trim() || normalizedKey,\n\t\t\tmetadata,\n\t\t\treason:\n\t\t\t\tgetString(metadata.flag_reason) || payload.reason?.trim() || \"remote\",\n\t\t\tvalue: payload.value,\n\t\t\tvariant: payload.variant?.trim() || booleanVariant(payload.value),\n\t\t};\n\t} catch (error) {\n\t\treturn fallbackDecision(\n\t\t\tnormalizedKey,\n\t\t\tcontext,\n\t\t\tdefaultValue,\n\t\t\terror instanceof Error ? error.message : \"remote_error\",\n\t\t);\n\t}\n}\n\nexport async function assignExperiment(\n\texperimentId: string,\n\tcontext: FeatureFlagRequestContext,\n\toptions: FeatureFlagRemoteOptions & {\n\t\tmetadata?: Record<string, unknown>;\n\t\trecordExposure?: boolean;\n\t} = {},\n): Promise<ExperimentAssignment> {\n\tconst normalizedExperimentId = experimentId.trim();\n\tif (!normalizedExperimentId) {\n\t\treturn missingAssignment(\n\t\t\tnormalizedExperimentId,\n\t\t\tcontext,\n\t\t\t\"missing_experiment_id\",\n\t\t);\n\t}\n\tconst subject = context.subject.trim();\n\tif (!subject) {\n\t\treturn missingAssignment(\n\t\t\tnormalizedExperimentId,\n\t\t\tcontext,\n\t\t\t\"missing_subject\",\n\t\t);\n\t}\n\n\ttry {\n\t\tconst response = await postJSON(\n\t\t\t`${remoteBaseUrl(options)}/api/experiments/${encodeURIComponent(normalizedExperimentId)}/assign`,\n\t\t\tJSON.stringify({\n\t\t\t\tcontext: remoteContext(context),\n\t\t\t\tmetadata: options.metadata ?? {},\n\t\t\t\trecord_exposure: options.recordExposure,\n\t\t\t\tsubject,\n\t\t\t}),\n\t\t\toptions,\n\t\t);\n\t\tif (response.status === 404) {\n\t\t\treturn missingAssignment(\n\t\t\t\tnormalizedExperimentId,\n\t\t\t\tcontext,\n\t\t\t\t\"missing_experiment\",\n\t\t\t);\n\t\t}\n\t\tif (!response.ok) {\n\t\t\treturn missingAssignment(\n\t\t\t\tnormalizedExperimentId,\n\t\t\t\tcontext,\n\t\t\t\t`remote_status_${response.status}`,\n\t\t\t);\n\t\t}\n\n\t\tconst payload = (await response.json()) as Record<string, unknown>;\n\t\treturn {\n\t\t\tassigned: payload.assigned === true,\n\t\t\tbucket: getNumber(payload.bucket),\n\t\t\texperimentId: getString(payload.experiment_id) || normalizedExperimentId,\n\t\t\texposureRecorded: payload.exposure_recorded === true,\n\t\t\tflagKey: getString(payload.flag_key),\n\t\t\tholdoutId: getString(payload.holdout_id) || undefined,\n\t\t\tinHoldout: payload.in_holdout === true,\n\t\t\tlayerId: getString(payload.layer_id) || undefined,\n\t\t\tmetadata: getRecord(payload.metadata),\n\t\t\tnamespaceEnd: getNumber(payload.namespace_end),\n\t\t\tnamespaceStart: getNumber(payload.namespace_start),\n\t\t\treason: getString(payload.reason) || \"remote\",\n\t\t\tsubject: getString(payload.subject) || subject,\n\t\t\tvariant: getString(payload.variant),\n\t\t\tvariantBucket: getNumber(payload.variant_bucket),\n\t\t};\n\t} catch (error) {\n\t\treturn missingAssignment(\n\t\t\tnormalizedExperimentId,\n\t\t\tcontext,\n\t\t\terror instanceof Error ? error.message : \"remote_error\",\n\t\t);\n\t}\n}\n\nfunction remoteBaseUrl(options: FeatureFlagRemoteOptions): string {\n\tconst configured = options.baseUrl?.trim().replace(/\\/+$/, \"\");\n\treturn configured || getFeatureFlagRemoteBaseUrl();\n}\n\nfunction remoteContext(\n\tcontext: FeatureFlagRequestContext,\n): Record<string, string | number | boolean> {\n\tconst remote: Record<string, string | number | boolean> = {};\n\tfor (const [key, value] of Object.entries(context.attributes ?? {})) {\n\t\tconst normalizedKey = key.trim();\n\t\tif (!normalizedKey || value == null) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (normalizedKey === \"subject\" || normalizedKey === \"targetingKey\") {\n\t\t\tcontinue;\n\t\t}\n\t\tif (typeof value === \"string\") {\n\t\t\tconst normalizedValue = value.trim();\n\t\t\tif (normalizedValue) {\n\t\t\t\tremote[normalizedKey] = normalizedValue;\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\t\tremote[normalizedKey] = value;\n\t}\n\tconst subject = context.subject.trim();\n\tif (subject) {\n\t\tremote.subject = subject;\n\t\tremote.targetingKey = subject;\n\t}\n\treturn remote;\n}\n\nfunction remoteTimeoutMs(\n\toptions: FeatureFlagRemoteOptions,\n): number | undefined {\n\tif (options.timeoutMs == null) {\n\t\treturn DEFAULT_REMOTE_TIMEOUT_MS;\n\t}\n\tif (!Number.isFinite(options.timeoutMs) || options.timeoutMs <= 0) {\n\t\treturn undefined;\n\t}\n\treturn Math.max(1, Math.trunc(options.timeoutMs));\n}\n\nasync function postJSON(\n\turl: string,\n\tbody: string,\n\toptions: FeatureFlagRemoteOptions,\n): Promise<Response> {\n\tconst controller = new AbortController();\n\tconst timeoutMs = remoteTimeoutMs(options);\n\tlet timeout: ReturnType<typeof setTimeout> | undefined;\n\tif (timeoutMs != null) {\n\t\ttimeout = setTimeout(() => controller.abort(), timeoutMs);\n\t}\n\ttry {\n\t\treturn await fetch(url, {\n\t\t\tbody,\n\t\t\theaders: {\n\t\t\t\taccept: \"application/json\",\n\t\t\t\t\"content-type\": \"application/json\",\n\t\t\t\t...getFeatureFlagRemoteHeaders(options.headers),\n\t\t\t},\n\t\t\tmethod: \"POST\",\n\t\t\tsignal: controller.signal,\n\t\t});\n\t} finally {\n\t\tif (timeout != null) {\n\t\t\tclearTimeout(timeout);\n\t\t}\n\t}\n}\n\nfunction fallbackDecision(\n\tkey: string,\n\tcontext: FeatureFlagRequestContext,\n\tdefaultValue: boolean,\n\treason: string,\n): FeatureFlagDecision {\n\treturn {\n\t\tkey,\n\t\tmetadata: {\n\t\t\tfallback_used: true,\n\t\t\tflag_subject: context.subject.trim(),\n\t\t},\n\t\treason,\n\t\tvalue: defaultValue,\n\t\tvariant: booleanVariant(defaultValue),\n\t};\n}\n\nfunction missingAssignment(\n\texperimentId: string,\n\tcontext: FeatureFlagRequestContext,\n\treason: string,\n): ExperimentAssignment {\n\treturn {\n\t\tassigned: false,\n\t\tbucket: 0,\n\t\texperimentId,\n\t\texposureRecorded: false,\n\t\tflagKey: \"\",\n\t\tinHoldout: false,\n\t\tmetadata: { fallback_used: true },\n\t\tnamespaceEnd: 0,\n\t\tnamespaceStart: 0,\n\t\treason,\n\t\tsubject: context.subject.trim(),\n\t\tvariant: \"\",\n\t\tvariantBucket: 0,\n\t};\n}\n\nfunction booleanVariant(value: boolean): string {\n\treturn value ? \"true\" : \"false\";\n}\n\nfunction getRecord(value: unknown): Record<string, unknown> {\n\treturn value != null && typeof value === \"object\" && !Array.isArray(value)\n\t\t? (value as Record<string, unknown>)\n\t\t: {};\n}\n\nfunction getString(value: unknown): string {\n\treturn typeof value === \"string\" ? value.trim() : \"\";\n}\n\nfunction getNumber(value: unknown): number {\n\treturn typeof value === \"number\" && Number.isFinite(value) ? value : 0;\n}\n\nexport function resetFeatureFlagCacheForTests(): void {\n\tfeatureFlagCache.lastKnownSnapshot = null;\n\tfeatureFlagCache.lastPath = undefined;\n\tfeatureFlagCache.lastStatMtimeMs = undefined;\n}\n"]}
@@ -11,5 +11,5 @@
11
11
  * 5. Global config.toml (~/.maestro/config.toml)
12
12
  * 6. Built-in defaults
13
13
  */
14
- export { addConfiguredPackageSpecToConfig, removeConfiguredPackageSpecFromConfig, getWritablePackageConfigPath, loadConfig, loadConfiguredPackageSpecs, clearConfigCache, getAvailableProfiles, getConfigSummary, parseCliOverride, applyCliOverride, DEFAULT_CONFIG, resolveLoadedAppendSystemPromptPath, resolveProjectDocCandidateFilenames, resolvePromptLoadedProjectDocPaths, type ComposerConfig, type ConfiguredPackageSpec, type WritablePackageScope, type ApprovalPolicy, type SandboxMode, type ReasoningEffort, type ModelProviderConfig, type McpServerConfig, type FeaturesConfig, type ToolsConfig, type OtelConfig, type HistoryConfig, type TuiConfig, type ShellEnvironmentPolicy, type SandboxWorkspaceWriteConfig, type ProfileConfig, } from "./toml-config.js";
14
+ export { addConfiguredPackageSpecToConfig, removeConfiguredPackageSpecFromConfig, getWritablePackageConfigPath, loadConfig, loadConfiguredPackageSpecs, clearConfigCache, getAvailableProfiles, getConfigSummary, parseCliOverride, applyCliOverride, DEFAULT_CONFIG, loadPromptProjectDocManifest, resolveLoadedAppendSystemPromptPath, resolveProjectDocCandidateFilenames, resolveProjectDocGlobalDirectories, resolvePromptLoadedProjectDocPaths, type ComposerConfig, type ConfiguredPackageSpec, type WritablePackageScope, type ApprovalPolicy, type SandboxMode, type ReasoningEffort, type ModelProviderConfig, type McpServerConfig, type FeaturesConfig, type ToolsConfig, type OtelConfig, type HistoryConfig, type TuiConfig, type ShellEnvironmentPolicy, type SandboxWorkspaceWriteConfig, type ProfileConfig, type PromptProjectDocManifest, type PromptProjectDocManifestEntry, type PromptProjectDocDiagnostic, type PromptProjectDocSourceKind, } from "./toml-config.js";
15
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EACN,gCAAgC,EAChC,qCAAqC,EACrC,4BAA4B,EAC5B,UAAU,EACV,0BAA0B,EAC1B,gBAAgB,EAChB,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,mCAAmC,EACnC,mCAAmC,EACnC,kCAAkC,EAClC,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,SAAS,EACd,KAAK,sBAAsB,EAC3B,KAAK,2BAA2B,EAChC,KAAK,aAAa,GAClB,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EACN,gCAAgC,EAChC,qCAAqC,EACrC,4BAA4B,EAC5B,UAAU,EACV,0BAA0B,EAC1B,gBAAgB,EAChB,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,4BAA4B,EAC5B,mCAAmC,EACnC,mCAAmC,EACnC,kCAAkC,EAClC,kCAAkC,EAClC,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,SAAS,EACd,KAAK,sBAAsB,EAC3B,KAAK,2BAA2B,EAChC,KAAK,aAAa,EAClB,KAAK,wBAAwB,EAC7B,KAAK,6BAA6B,EAClC,KAAK,0BAA0B,EAC/B,KAAK,0BAA0B,GAC/B,MAAM,kBAAkB,CAAC"}
@@ -11,5 +11,5 @@
11
11
  * 5. Global config.toml (~/.maestro/config.toml)
12
12
  * 6. Built-in defaults
13
13
  */
14
- export { addConfiguredPackageSpecToConfig, removeConfiguredPackageSpecFromConfig, getWritablePackageConfigPath, loadConfig, loadConfiguredPackageSpecs, clearConfigCache, getAvailableProfiles, getConfigSummary, parseCliOverride, applyCliOverride, DEFAULT_CONFIG, resolveLoadedAppendSystemPromptPath, resolveProjectDocCandidateFilenames, resolvePromptLoadedProjectDocPaths, } from "./toml-config.js";
14
+ export { addConfiguredPackageSpecToConfig, removeConfiguredPackageSpecFromConfig, getWritablePackageConfigPath, loadConfig, loadConfiguredPackageSpecs, clearConfigCache, getAvailableProfiles, getConfigSummary, parseCliOverride, applyCliOverride, DEFAULT_CONFIG, loadPromptProjectDocManifest, resolveLoadedAppendSystemPromptPath, resolveProjectDocCandidateFilenames, resolveProjectDocGlobalDirectories, resolvePromptLoadedProjectDocPaths, } from "./toml-config.js";
15
15
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EACN,gCAAgC,EAChC,qCAAqC,EACrC,4BAA4B,EAC5B,UAAU,EACV,0BAA0B,EAC1B,gBAAgB,EAChB,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,mCAAmC,EACnC,mCAAmC,EACnC,kCAAkC,GAiBlC,MAAM,kBAAkB,CAAC","sourcesContent":["/**\n * Configuration Module\n *\n * Unified configuration access for Composer. Combines multiple configuration\n * sources with a clear precedence order:\n *\n * 1. CLI flags (--model, --config key=value, --profile)\n * 2. Environment variables (MAESTRO_*)\n * 3. Active TOML profile settings\n * 4. Project config.toml (.maestro/config.toml)\n * 5. Global config.toml (~/.maestro/config.toml)\n * 6. Built-in defaults\n */\n\nexport {\n\taddConfiguredPackageSpecToConfig,\n\tremoveConfiguredPackageSpecFromConfig,\n\tgetWritablePackageConfigPath,\n\tloadConfig,\n\tloadConfiguredPackageSpecs,\n\tclearConfigCache,\n\tgetAvailableProfiles,\n\tgetConfigSummary,\n\tparseCliOverride,\n\tapplyCliOverride,\n\tDEFAULT_CONFIG,\n\tresolveLoadedAppendSystemPromptPath,\n\tresolveProjectDocCandidateFilenames,\n\tresolvePromptLoadedProjectDocPaths,\n\ttype ComposerConfig,\n\ttype ConfiguredPackageSpec,\n\ttype WritablePackageScope,\n\ttype ApprovalPolicy,\n\ttype SandboxMode,\n\ttype ReasoningEffort,\n\ttype ModelProviderConfig,\n\ttype McpServerConfig,\n\ttype FeaturesConfig,\n\ttype ToolsConfig,\n\ttype OtelConfig,\n\ttype HistoryConfig,\n\ttype TuiConfig,\n\ttype ShellEnvironmentPolicy,\n\ttype SandboxWorkspaceWriteConfig,\n\ttype ProfileConfig,\n} from \"./toml-config.js\";\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EACN,gCAAgC,EAChC,qCAAqC,EACrC,4BAA4B,EAC5B,UAAU,EACV,0BAA0B,EAC1B,gBAAgB,EAChB,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,4BAA4B,EAC5B,mCAAmC,EACnC,mCAAmC,EACnC,kCAAkC,EAClC,kCAAkC,GAqBlC,MAAM,kBAAkB,CAAC","sourcesContent":["/**\n * Configuration Module\n *\n * Unified configuration access for Composer. Combines multiple configuration\n * sources with a clear precedence order:\n *\n * 1. CLI flags (--model, --config key=value, --profile)\n * 2. Environment variables (MAESTRO_*)\n * 3. Active TOML profile settings\n * 4. Project config.toml (.maestro/config.toml)\n * 5. Global config.toml (~/.maestro/config.toml)\n * 6. Built-in defaults\n */\n\nexport {\n\taddConfiguredPackageSpecToConfig,\n\tremoveConfiguredPackageSpecFromConfig,\n\tgetWritablePackageConfigPath,\n\tloadConfig,\n\tloadConfiguredPackageSpecs,\n\tclearConfigCache,\n\tgetAvailableProfiles,\n\tgetConfigSummary,\n\tparseCliOverride,\n\tapplyCliOverride,\n\tDEFAULT_CONFIG,\n\tloadPromptProjectDocManifest,\n\tresolveLoadedAppendSystemPromptPath,\n\tresolveProjectDocCandidateFilenames,\n\tresolveProjectDocGlobalDirectories,\n\tresolvePromptLoadedProjectDocPaths,\n\ttype ComposerConfig,\n\ttype ConfiguredPackageSpec,\n\ttype WritablePackageScope,\n\ttype ApprovalPolicy,\n\ttype SandboxMode,\n\ttype ReasoningEffort,\n\ttype ModelProviderConfig,\n\ttype McpServerConfig,\n\ttype FeaturesConfig,\n\ttype ToolsConfig,\n\ttype OtelConfig,\n\ttype HistoryConfig,\n\ttype TuiConfig,\n\ttype ShellEnvironmentPolicy,\n\ttype SandboxWorkspaceWriteConfig,\n\ttype ProfileConfig,\n\ttype PromptProjectDocManifest,\n\ttype PromptProjectDocManifestEntry,\n\ttype PromptProjectDocDiagnostic,\n\ttype PromptProjectDocSourceKind,\n} from \"./toml-config.js\";\n"]}
@@ -171,6 +171,38 @@ export interface RemoveConfiguredPackageSpecOptions {
171
171
  }
172
172
  export declare const DEFAULT_CONFIG: ComposerConfig;
173
173
  export declare function resolveProjectDocCandidateFilenames(config?: ComposerConfig): string[];
174
+ export type PromptProjectDocSourceKind = "global" | "project";
175
+ export type PromptProjectDocDiagnosticSeverity = "info" | "warning";
176
+ export interface PromptProjectDocManifestEntry {
177
+ path: string;
178
+ sourceKind: PromptProjectDocSourceKind;
179
+ scopeDir: string;
180
+ candidateName: string;
181
+ bytesRead: number;
182
+ truncated: boolean;
183
+ contentHash: string;
184
+ precedenceIndex: number;
185
+ content: string;
186
+ originalSize?: number;
187
+ maxBytes?: number;
188
+ }
189
+ export interface PromptProjectDocDiagnostic {
190
+ code: "budget_exhausted" | "duplicate_skipped" | "multiple_instruction_layers" | "read_failed" | "truncated";
191
+ severity: PromptProjectDocDiagnosticSeverity;
192
+ message: string;
193
+ path?: string;
194
+ scopeDir?: string;
195
+ }
196
+ export interface PromptProjectDocManifest {
197
+ cwd: string;
198
+ candidates: string[];
199
+ maxBytes?: number;
200
+ bytesRead: number;
201
+ entries: PromptProjectDocManifestEntry[];
202
+ diagnostics: PromptProjectDocDiagnostic[];
203
+ }
204
+ export declare function resolveProjectDocGlobalDirectories(): string[];
205
+ export declare function loadPromptProjectDocManifest(cwdOverride?: string, config?: ComposerConfig): PromptProjectDocManifest;
174
206
  export declare function resolvePromptLoadedProjectDocPaths(cwdOverride?: string, config?: ComposerConfig): string[];
175
207
  export declare function resolveLoadedAppendSystemPromptPath(cwdOverride?: string): string | null;
176
208
  export declare function getWritablePackageConfigPath(scope: WritablePackageScope, workspaceDir?: string): string;