@evalops/maestro 0.10.17 → 0.10.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (930) hide show
  1. package/README.md +56 -1
  2. package/dist/agent/action-approval.d.ts +12 -2
  3. package/dist/agent/action-approval.d.ts.map +1 -1
  4. package/dist/agent/action-approval.js +19 -32
  5. package/dist/agent/action-approval.js.map +1 -1
  6. package/dist/agent/agent.d.ts +1 -0
  7. package/dist/agent/agent.d.ts.map +1 -1
  8. package/dist/agent/agent.js +26 -0
  9. package/dist/agent/agent.js.map +1 -1
  10. package/dist/agent/compaction.d.ts +2 -0
  11. package/dist/agent/compaction.d.ts.map +1 -1
  12. package/dist/agent/compaction.js +4 -2
  13. package/dist/agent/compaction.js.map +1 -1
  14. package/dist/agent/index.d.ts +1 -1
  15. package/dist/agent/index.d.ts.map +1 -1
  16. package/dist/agent/index.js +1 -1
  17. package/dist/agent/index.js.map +1 -1
  18. package/dist/agent/modes.d.ts +56 -4
  19. package/dist/agent/modes.d.ts.map +1 -1
  20. package/dist/agent/modes.js +163 -2
  21. package/dist/agent/modes.js.map +1 -1
  22. package/dist/agent/prompt-recovery.d.ts.map +1 -1
  23. package/dist/agent/prompt-recovery.js +1 -3
  24. package/dist/agent/prompt-recovery.js.map +1 -1
  25. package/dist/agent/providers/anthropic.d.ts.map +1 -1
  26. package/dist/agent/providers/anthropic.js +9 -1
  27. package/dist/agent/providers/anthropic.js.map +1 -1
  28. package/dist/agent/providers/codex-app-server.d.ts +12 -0
  29. package/dist/agent/providers/codex-app-server.d.ts.map +1 -0
  30. package/dist/agent/providers/codex-app-server.js +788 -0
  31. package/dist/agent/providers/codex-app-server.js.map +1 -0
  32. package/dist/agent/providers/google-gemini-cli.js +14 -3
  33. package/dist/agent/providers/google.js +22 -3
  34. package/dist/agent/providers/scripted.d.ts +11 -0
  35. package/dist/agent/providers/scripted.d.ts.map +1 -0
  36. package/dist/agent/providers/scripted.js +399 -0
  37. package/dist/agent/providers/scripted.js.map +1 -0
  38. package/dist/agent/providers/vertex.js +14 -3
  39. package/dist/agent/scenario-source.d.ts +19 -0
  40. package/dist/agent/scenario-source.d.ts.map +1 -0
  41. package/dist/agent/scenario-source.js +112 -0
  42. package/dist/agent/scenario-source.js.map +1 -0
  43. package/dist/agent/subagent-specs.d.ts +1 -1
  44. package/dist/agent/subagent-specs.js +1 -1
  45. package/dist/agent/subagent-specs.js.map +1 -1
  46. package/dist/agent/swarm/executor.d.ts +25 -0
  47. package/dist/agent/swarm/executor.d.ts.map +1 -1
  48. package/dist/agent/swarm/executor.js +795 -20
  49. package/dist/agent/swarm/executor.js.map +1 -1
  50. package/dist/agent/swarm/runtime-events.d.ts +11 -0
  51. package/dist/agent/swarm/runtime-events.d.ts.map +1 -0
  52. package/dist/agent/swarm/runtime-events.js +26 -0
  53. package/dist/agent/swarm/runtime-events.js.map +1 -0
  54. package/dist/agent/swarm/types.d.ts +78 -0
  55. package/dist/agent/swarm/types.d.ts.map +1 -1
  56. package/dist/agent/swarm/types.js.map +1 -1
  57. package/dist/agent/tracing.d.ts +1 -1
  58. package/dist/agent/tracing.d.ts.map +1 -1
  59. package/dist/agent/tracing.js +17 -9
  60. package/dist/agent/tracing.js.map +1 -1
  61. package/dist/agent/transport/create-provider-stream.d.ts.map +1 -1
  62. package/dist/agent/transport/create-provider-stream.js +14 -0
  63. package/dist/agent/transport/create-provider-stream.js.map +1 -1
  64. package/dist/agent/transport/stable-stringify.d.ts +2 -0
  65. package/dist/agent/transport/stable-stringify.d.ts.map +1 -0
  66. package/dist/agent/transport/stable-stringify.js +14 -0
  67. package/dist/agent/transport/stable-stringify.js.map +1 -0
  68. package/dist/agent/transport/tool-execution-bridge.d.ts.map +1 -1
  69. package/dist/agent/transport/tool-execution-bridge.js +2 -15
  70. package/dist/agent/transport/tool-execution-bridge.js.map +1 -1
  71. package/dist/agent/transport/tool-safety-pipeline.d.ts +5 -1
  72. package/dist/agent/transport/tool-safety-pipeline.d.ts.map +1 -1
  73. package/dist/agent/transport/tool-safety-pipeline.js +184 -36
  74. package/dist/agent/transport/tool-safety-pipeline.js.map +1 -1
  75. package/dist/agent/transport.d.ts +8 -0
  76. package/dist/agent/transport.d.ts.map +1 -1
  77. package/dist/agent/transport.js +1613 -68
  78. package/dist/agent/transport.js.map +1 -1
  79. package/dist/agent/types.d.ts +170 -2
  80. package/dist/agent/types.d.ts.map +1 -1
  81. package/dist/agent/types.js.map +1 -1
  82. package/dist/api/enterprise-routes.d.ts.map +1 -1
  83. package/dist/api/enterprise-routes.js +34 -3
  84. package/dist/api/enterprise-routes.js.map +1 -1
  85. package/dist/app-server/in-process-client.d.ts +32 -0
  86. package/dist/app-server/in-process-client.d.ts.map +1 -0
  87. package/dist/app-server/in-process-client.js +73 -0
  88. package/dist/app-server/in-process-client.js.map +1 -0
  89. package/dist/app-server/session-api.d.ts +36 -0
  90. package/dist/app-server/session-api.d.ts.map +1 -0
  91. package/dist/app-server/session-api.js +713 -0
  92. package/dist/app-server/session-api.js.map +1 -0
  93. package/dist/approvals/platform-action-approval.d.ts +3 -1
  94. package/dist/approvals/platform-action-approval.d.ts.map +1 -1
  95. package/dist/approvals/platform-action-approval.js +16 -9
  96. package/dist/approvals/platform-action-approval.js.map +1 -1
  97. package/dist/approvals/service-client.d.ts.map +1 -1
  98. package/dist/approvals/service-client.js +7 -7
  99. package/dist/approvals/service-client.js.map +1 -1
  100. package/dist/audit/logger.d.ts +4 -4
  101. package/dist/bootstrap/agent-creation-setup.d.ts +4 -0
  102. package/dist/bootstrap/agent-creation-setup.d.ts.map +1 -1
  103. package/dist/bootstrap/agent-creation-setup.js +3 -1
  104. package/dist/bootstrap/agent-creation-setup.js.map +1 -1
  105. package/dist/bootstrap/auth-setup.js +1 -1
  106. package/dist/bootstrap/auth-setup.js.map +1 -1
  107. package/dist/bootstrap/event-subscriptions-setup.d.ts +6 -0
  108. package/dist/bootstrap/event-subscriptions-setup.d.ts.map +1 -1
  109. package/dist/bootstrap/event-subscriptions-setup.js +26 -2
  110. package/dist/bootstrap/event-subscriptions-setup.js.map +1 -1
  111. package/dist/bootstrap/model-resolution-setup.d.ts.map +1 -1
  112. package/dist/bootstrap/model-resolution-setup.js +4 -1
  113. package/dist/bootstrap/model-resolution-setup.js.map +1 -1
  114. package/dist/bootstrap/tools-setup.d.ts +2 -1
  115. package/dist/bootstrap/tools-setup.d.ts.map +1 -1
  116. package/dist/bootstrap/tools-setup.js +5 -1
  117. package/dist/bootstrap/tools-setup.js.map +1 -1
  118. package/dist/cli/args.d.ts +9 -1
  119. package/dist/cli/args.d.ts.map +1 -1
  120. package/dist/cli/args.js +130 -5
  121. package/dist/cli/args.js.map +1 -1
  122. package/dist/cli/commands/a2a.d.ts +9 -0
  123. package/dist/cli/commands/a2a.d.ts.map +1 -0
  124. package/dist/cli/commands/a2a.js +1714 -0
  125. package/dist/cli/commands/a2a.js.map +1 -0
  126. package/dist/cli/commands/agents.d.ts +16 -2
  127. package/dist/cli/commands/agents.d.ts.map +1 -1
  128. package/dist/cli/commands/agents.js +223 -35
  129. package/dist/cli/commands/agents.js.map +1 -1
  130. package/dist/cli/commands/codex.d.ts +1 -1
  131. package/dist/cli/commands/codex.d.ts.map +1 -1
  132. package/dist/cli/commands/codex.js +145 -39
  133. package/dist/cli/commands/codex.js.map +1 -1
  134. package/dist/cli/commands/context.d.ts +10 -0
  135. package/dist/cli/commands/context.d.ts.map +1 -0
  136. package/dist/cli/commands/context.js +176 -0
  137. package/dist/cli/commands/context.js.map +1 -0
  138. package/dist/cli/commands/hosted-runner.d.ts +1 -0
  139. package/dist/cli/commands/hosted-runner.d.ts.map +1 -1
  140. package/dist/cli/commands/hosted-runner.js +9 -1
  141. package/dist/cli/commands/hosted-runner.js.map +1 -1
  142. package/dist/cli/commands/init.d.ts.map +1 -1
  143. package/dist/cli/commands/init.js +6 -0
  144. package/dist/cli/commands/init.js.map +1 -1
  145. package/dist/cli/commands/modes.d.ts +8 -0
  146. package/dist/cli/commands/modes.d.ts.map +1 -0
  147. package/dist/cli/commands/modes.js +151 -0
  148. package/dist/cli/commands/modes.js.map +1 -0
  149. package/dist/cli/commands/operating-plane.d.ts +14 -0
  150. package/dist/cli/commands/operating-plane.d.ts.map +1 -0
  151. package/dist/cli/commands/operating-plane.js +160 -0
  152. package/dist/cli/commands/operating-plane.js.map +1 -0
  153. package/dist/cli/commands/run.d.ts +87 -0
  154. package/dist/cli/commands/run.d.ts.map +1 -0
  155. package/dist/cli/commands/run.js +356 -0
  156. package/dist/cli/commands/run.js.map +1 -0
  157. package/dist/cli/commands/scenario.d.ts +7 -0
  158. package/dist/cli/commands/scenario.d.ts.map +1 -0
  159. package/dist/cli/commands/scenario.js +195 -0
  160. package/dist/cli/commands/scenario.js.map +1 -0
  161. package/dist/cli/commands/skill.d.ts +7 -0
  162. package/dist/cli/commands/skill.d.ts.map +1 -0
  163. package/dist/cli/commands/skill.js +286 -0
  164. package/dist/cli/commands/skill.js.map +1 -0
  165. package/dist/cli/headless-protocol.d.ts +55 -1
  166. package/dist/cli/headless-protocol.d.ts.map +1 -1
  167. package/dist/cli/headless-protocol.js +446 -7
  168. package/dist/cli/headless-protocol.js.map +1 -1
  169. package/dist/cli/headless-runtime-selection.d.ts +38 -0
  170. package/dist/cli/headless-runtime-selection.d.ts.map +1 -0
  171. package/dist/cli/headless-runtime-selection.js +48 -0
  172. package/dist/cli/headless-runtime-selection.js.map +1 -0
  173. package/dist/cli/headless.d.ts +5 -1
  174. package/dist/cli/headless.d.ts.map +1 -1
  175. package/dist/cli/headless.js +11 -1
  176. package/dist/cli/headless.js.map +1 -1
  177. package/dist/cli/help.d.ts +3 -1
  178. package/dist/cli/help.d.ts.map +1 -1
  179. package/dist/cli/help.js +136 -30
  180. package/dist/cli/help.js.map +1 -1
  181. package/dist/cli/system-prompt.d.ts +22 -4
  182. package/dist/cli/system-prompt.d.ts.map +1 -1
  183. package/dist/cli/system-prompt.js +224 -127
  184. package/dist/cli/system-prompt.js.map +1 -1
  185. package/dist/cli-tui/commands/a2a-handlers.d.ts +7 -0
  186. package/dist/cli-tui/commands/a2a-handlers.d.ts.map +1 -0
  187. package/dist/cli-tui/commands/a2a-handlers.js +160 -0
  188. package/dist/cli-tui/commands/a2a-handlers.js.map +1 -0
  189. package/dist/cli-tui/commands/command-catalog.d.ts.map +1 -1
  190. package/dist/cli-tui/commands/command-catalog.js +15 -0
  191. package/dist/cli-tui/commands/command-catalog.js.map +1 -1
  192. package/dist/cli-tui/commands/command-registry-adapter.js +10 -1
  193. package/dist/cli-tui/commands/command-registry-adapter.js.map +1 -1
  194. package/dist/cli-tui/commands/handlers/mode-handler.d.ts.map +1 -1
  195. package/dist/cli-tui/commands/handlers/mode-handler.js +22 -10
  196. package/dist/cli-tui/commands/handlers/mode-handler.js.map +1 -1
  197. package/dist/cli-tui/commands/mcp-handlers.d.ts.map +1 -1
  198. package/dist/cli-tui/commands/mcp-handlers.js +6 -5
  199. package/dist/cli-tui/commands/mcp-handlers.js.map +1 -1
  200. package/dist/cli-tui/commands/types.d.ts +1 -0
  201. package/dist/cli-tui/commands/types.d.ts.map +1 -1
  202. package/dist/cli-tui/commands/types.js.map +1 -1
  203. package/dist/cli-tui/commands/utility-handlers.d.ts +4 -0
  204. package/dist/cli-tui/commands/utility-handlers.d.ts.map +1 -1
  205. package/dist/cli-tui/commands/utility-handlers.js +45 -6
  206. package/dist/cli-tui/commands/utility-handlers.js.map +1 -1
  207. package/dist/cli-tui/run/run-shell-command.d.ts.map +1 -1
  208. package/dist/cli-tui/run/run-shell-command.js +14 -5
  209. package/dist/cli-tui/run/run-shell-command.js.map +1 -1
  210. package/dist/cli-tui/run/streaming-shell-command.d.ts.map +1 -1
  211. package/dist/cli-tui/run/streaming-shell-command.js +14 -5
  212. package/dist/cli-tui/run/streaming-shell-command.js.map +1 -1
  213. package/dist/cli-tui/selectors/model-selector.d.ts +1 -0
  214. package/dist/cli-tui/selectors/model-selector.d.ts.map +1 -1
  215. package/dist/cli-tui/selectors/model-selector.js +6 -2
  216. package/dist/cli-tui/selectors/model-selector.js.map +1 -1
  217. package/dist/cli-tui/tui-renderer/command-registry-options.d.ts.map +1 -1
  218. package/dist/cli-tui/tui-renderer/command-registry-options.js +5 -0
  219. package/dist/cli-tui/tui-renderer/command-registry-options.js.map +1 -1
  220. package/dist/cli-tui/utils/commands/review-prompt.d.ts +1 -1
  221. package/dist/cli-tui/utils/commands/review-prompt.d.ts.map +1 -1
  222. package/dist/cli-tui/utils/commands/review-prompt.js +8 -3
  223. package/dist/cli-tui/utils/commands/review-prompt.js.map +1 -1
  224. package/dist/cli-tui/utils/runtime-badges.d.ts +1 -0
  225. package/dist/cli-tui/utils/runtime-badges.d.ts.map +1 -1
  226. package/dist/cli-tui/utils/runtime-badges.js +7 -0
  227. package/dist/cli-tui/utils/runtime-badges.js.map +1 -1
  228. package/dist/cli-tui/utils/text-formatting.d.ts +1 -0
  229. package/dist/cli-tui/utils/text-formatting.d.ts.map +1 -1
  230. package/dist/cli-tui/utils/text-formatting.js +5 -0
  231. package/dist/cli-tui/utils/text-formatting.js.map +1 -1
  232. package/dist/cli.js +49209 -26165
  233. package/dist/cli.js.map +1 -1
  234. package/dist/codex/app-server-client.d.ts +139 -0
  235. package/dist/codex/app-server-client.d.ts.map +1 -0
  236. package/dist/codex/app-server-client.js +352 -0
  237. package/dist/codex/app-server-client.js.map +1 -0
  238. package/dist/codex/compatibility.d.ts +48 -0
  239. package/dist/codex/compatibility.d.ts.map +1 -0
  240. package/dist/codex/compatibility.js +344 -0
  241. package/dist/codex/compatibility.js.map +1 -0
  242. package/dist/codex/subagent-dispatch-table.d.ts +66 -0
  243. package/dist/codex/subagent-dispatch-table.d.ts.map +1 -0
  244. package/dist/codex/subagent-dispatch-table.js +127 -0
  245. package/dist/codex/subagent-dispatch-table.js.map +1 -0
  246. package/dist/codex/subagent-workgraph.d.ts +56 -0
  247. package/dist/codex/subagent-workgraph.d.ts.map +1 -0
  248. package/dist/codex/subagent-workgraph.js +89 -0
  249. package/dist/codex/subagent-workgraph.js.map +1 -0
  250. package/dist/config/constants.d.ts +3 -1
  251. package/dist/config/constants.d.ts.map +1 -1
  252. package/dist/config/constants.js +9 -0
  253. package/dist/config/constants.js.map +1 -1
  254. package/dist/config/feature-flags.d.ts +10 -1
  255. package/dist/config/feature-flags.d.ts.map +1 -1
  256. package/dist/config/feature-flags.js +17 -6
  257. package/dist/config/feature-flags.js.map +1 -1
  258. package/dist/config/index.d.ts +1 -1
  259. package/dist/config/index.d.ts.map +1 -1
  260. package/dist/config/index.js +1 -1
  261. package/dist/config/index.js.map +1 -1
  262. package/dist/config/toml-config.d.ts +32 -0
  263. package/dist/config/toml-config.d.ts.map +1 -1
  264. package/dist/config/toml-config.js +152 -43
  265. package/dist/config/toml-config.js.map +1 -1
  266. package/dist/connectors/service-client.d.ts.map +1 -1
  267. package/dist/connectors/service-client.js +4 -7
  268. package/dist/connectors/service-client.js.map +1 -1
  269. package/dist/context/manifest-types.d.ts +59 -0
  270. package/dist/context/manifest-types.d.ts.map +1 -0
  271. package/dist/context/manifest-types.js +2 -0
  272. package/dist/context/manifest-types.js.map +1 -0
  273. package/dist/context/manifest.d.ts +16 -0
  274. package/dist/context/manifest.d.ts.map +1 -0
  275. package/dist/context/manifest.js +503 -0
  276. package/dist/context/manifest.js.map +1 -0
  277. package/dist/db/schema.d.ts +10 -1
  278. package/dist/db/schema.d.ts.map +1 -1
  279. package/dist/db/schema.js.map +1 -1
  280. package/dist/evalops/agent-bootstrap.d.ts +1 -0
  281. package/dist/evalops/agent-bootstrap.d.ts.map +1 -1
  282. package/dist/evalops/agent-bootstrap.js +41 -1
  283. package/dist/evalops/agent-bootstrap.js.map +1 -1
  284. package/dist/evalops/env-aliases.d.ts +13 -0
  285. package/dist/evalops/env-aliases.d.ts.map +1 -0
  286. package/dist/evalops/env-aliases.js +60 -0
  287. package/dist/evalops/env-aliases.js.map +1 -0
  288. package/dist/evalops/managed-context.d.ts.map +1 -1
  289. package/dist/evalops/managed-context.js +28 -62
  290. package/dist/evalops/managed-context.js.map +1 -1
  291. package/dist/guardian/config.d.ts.map +1 -1
  292. package/dist/guardian/config.js +1 -0
  293. package/dist/guardian/config.js.map +1 -1
  294. package/dist/guardian/runner.d.ts +2 -0
  295. package/dist/guardian/runner.d.ts.map +1 -1
  296. package/dist/guardian/runner.js +105 -2
  297. package/dist/guardian/runner.js.map +1 -1
  298. package/dist/guardian/types.d.ts +1 -0
  299. package/dist/guardian/types.d.ts.map +1 -1
  300. package/dist/guardian/types.js.map +1 -1
  301. package/dist/index.d.ts +6 -1
  302. package/dist/index.d.ts.map +1 -1
  303. package/dist/index.js +6 -1
  304. package/dist/index.js.map +1 -1
  305. package/dist/main.d.ts.map +1 -1
  306. package/dist/main.js +267 -55
  307. package/dist/main.js.map +1 -1
  308. package/dist/mcp/config.d.ts.map +1 -1
  309. package/dist/mcp/config.js +89 -7
  310. package/dist/mcp/config.js.map +1 -1
  311. package/dist/mcp/manager.d.ts +5 -1
  312. package/dist/mcp/manager.d.ts.map +1 -1
  313. package/dist/mcp/manager.js +159 -4
  314. package/dist/mcp/manager.js.map +1 -1
  315. package/dist/mcp/platform-plugin.d.ts.map +1 -1
  316. package/dist/mcp/platform-plugin.js +9 -26
  317. package/dist/mcp/platform-plugin.js.map +1 -1
  318. package/dist/mcp/schema.d.ts +15 -0
  319. package/dist/mcp/schema.d.ts.map +1 -1
  320. package/dist/mcp/schema.js +24 -0
  321. package/dist/mcp/schema.js.map +1 -1
  322. package/dist/mcp/tool-bridge.d.ts +39 -10
  323. package/dist/mcp/tool-bridge.d.ts.map +1 -1
  324. package/dist/mcp/tool-bridge.js +101 -24
  325. package/dist/mcp/tool-bridge.js.map +1 -1
  326. package/dist/mcp/types.d.ts +27 -0
  327. package/dist/mcp/types.d.ts.map +1 -1
  328. package/dist/mcp/types.js.map +1 -1
  329. package/dist/mcp/workspace-trust.d.ts +10 -0
  330. package/dist/mcp/workspace-trust.d.ts.map +1 -0
  331. package/dist/mcp/workspace-trust.js +295 -0
  332. package/dist/mcp/workspace-trust.js.map +1 -0
  333. package/dist/memory/service-client.d.ts +1 -0
  334. package/dist/memory/service-client.d.ts.map +1 -1
  335. package/dist/memory/service-client.js +194 -9
  336. package/dist/memory/service-client.js.map +1 -1
  337. package/dist/models/builtin.d.ts.map +1 -1
  338. package/dist/models/builtin.js +66 -25
  339. package/dist/models/builtin.js.map +1 -1
  340. package/dist/models/config-loader.d.ts +10 -10
  341. package/dist/models/config-loader.d.ts.map +1 -1
  342. package/dist/models/config-loader.js +2 -0
  343. package/dist/models/config-loader.js.map +1 -1
  344. package/dist/models/registry.d.ts +1 -0
  345. package/dist/models/registry.d.ts.map +1 -1
  346. package/dist/models/registry.js +1 -0
  347. package/dist/models/registry.js.map +1 -1
  348. package/dist/oauth/device-identity.d.ts.map +1 -1
  349. package/dist/oauth/device-identity.js +1 -3
  350. package/dist/oauth/device-identity.js.map +1 -1
  351. package/dist/oauth/evalops.d.ts.map +1 -1
  352. package/dist/oauth/evalops.js +2 -5
  353. package/dist/oauth/evalops.js.map +1 -1
  354. package/dist/opentelemetry.d.ts.map +1 -1
  355. package/dist/opentelemetry.js +12 -12
  356. package/dist/opentelemetry.js.map +1 -1
  357. package/dist/package-version.d.ts +2 -0
  358. package/dist/package-version.d.ts.map +1 -0
  359. package/dist/package-version.js +11 -0
  360. package/dist/package-version.js.map +1 -0
  361. package/dist/packages/constants.d.ts +3 -0
  362. package/dist/packages/constants.d.ts.map +1 -0
  363. package/dist/packages/constants.js +3 -0
  364. package/dist/packages/constants.js.map +1 -0
  365. package/dist/packages/inspection.d.ts.map +1 -1
  366. package/dist/packages/inspection.js +2 -1
  367. package/dist/packages/inspection.js.map +1 -1
  368. package/dist/packages/search.d.ts.map +1 -1
  369. package/dist/packages/search.js +1 -1
  370. package/dist/packages/search.js.map +1 -1
  371. package/dist/platform/a2a-capability-market.d.ts +21 -0
  372. package/dist/platform/a2a-capability-market.d.ts.map +1 -0
  373. package/dist/platform/a2a-capability-market.js +176 -0
  374. package/dist/platform/a2a-capability-market.js.map +1 -0
  375. package/dist/platform/a2a-client.d.ts +217 -0
  376. package/dist/platform/a2a-client.d.ts.map +1 -0
  377. package/dist/platform/a2a-client.js +589 -0
  378. package/dist/platform/a2a-client.js.map +1 -0
  379. package/dist/platform/a2a-fleet.d.ts +41 -0
  380. package/dist/platform/a2a-fleet.d.ts.map +1 -0
  381. package/dist/platform/a2a-fleet.js +109 -0
  382. package/dist/platform/a2a-fleet.js.map +1 -0
  383. package/dist/platform/a2a-maestro-peer.d.ts +20 -0
  384. package/dist/platform/a2a-maestro-peer.d.ts.map +1 -0
  385. package/dist/platform/a2a-maestro-peer.js +176 -0
  386. package/dist/platform/a2a-maestro-peer.js.map +1 -0
  387. package/dist/platform/a2a-peer-pairing.d.ts +107 -0
  388. package/dist/platform/a2a-peer-pairing.d.ts.map +1 -0
  389. package/dist/platform/a2a-peer-pairing.js +489 -0
  390. package/dist/platform/a2a-peer-pairing.js.map +1 -0
  391. package/dist/platform/a2a-peer-registry.d.ts +68 -0
  392. package/dist/platform/a2a-peer-registry.d.ts.map +1 -0
  393. package/dist/platform/a2a-peer-registry.js +320 -0
  394. package/dist/platform/a2a-peer-registry.js.map +1 -0
  395. package/dist/platform/a2a-task-ledger.d.ts +86 -0
  396. package/dist/platform/a2a-task-ledger.d.ts.map +1 -0
  397. package/dist/platform/a2a-task-ledger.js +546 -0
  398. package/dist/platform/a2a-task-ledger.js.map +1 -0
  399. package/dist/platform/a2a-work-graph.d.ts +43 -0
  400. package/dist/platform/a2a-work-graph.d.ts.map +1 -0
  401. package/dist/platform/a2a-work-graph.js +267 -0
  402. package/dist/platform/a2a-work-graph.js.map +1 -0
  403. package/dist/platform/agent-registry-client.d.ts +327 -0
  404. package/dist/platform/agent-registry-client.d.ts.map +1 -0
  405. package/dist/platform/agent-registry-client.js +803 -0
  406. package/dist/platform/agent-registry-client.js.map +1 -0
  407. package/dist/platform/agent-runtime-client.d.ts +135 -1
  408. package/dist/platform/agent-runtime-client.d.ts.map +1 -1
  409. package/dist/platform/agent-runtime-client.js +467 -10
  410. package/dist/platform/agent-runtime-client.js.map +1 -1
  411. package/dist/platform/cerebro-facts-client.d.ts.map +1 -1
  412. package/dist/platform/cerebro-facts-client.js +4 -7
  413. package/dist/platform/cerebro-facts-client.js.map +1 -1
  414. package/dist/platform/client.d.ts +2 -0
  415. package/dist/platform/client.d.ts.map +1 -1
  416. package/dist/platform/client.js +7 -14
  417. package/dist/platform/client.js.map +1 -1
  418. package/dist/platform/core-services.d.ts +68 -0
  419. package/dist/platform/core-services.d.ts.map +1 -1
  420. package/dist/platform/core-services.js +68 -0
  421. package/dist/platform/core-services.js.map +1 -1
  422. package/dist/platform/fermata-eval-client.d.ts +195 -0
  423. package/dist/platform/fermata-eval-client.d.ts.map +1 -0
  424. package/dist/platform/fermata-eval-client.js +146 -0
  425. package/dist/platform/fermata-eval-client.js.map +1 -0
  426. package/dist/platform/fermata-scenario-suite.d.ts +99 -0
  427. package/dist/platform/fermata-scenario-suite.d.ts.map +1 -0
  428. package/dist/platform/fermata-scenario-suite.js +459 -0
  429. package/dist/platform/fermata-scenario-suite.js.map +1 -0
  430. package/dist/platform/maestro-timeline-client.d.ts.map +1 -1
  431. package/dist/platform/maestro-timeline-client.js +5 -11
  432. package/dist/platform/maestro-timeline-client.js.map +1 -1
  433. package/dist/platform/operating-plane-client.d.ts +156 -0
  434. package/dist/platform/operating-plane-client.d.ts.map +1 -0
  435. package/dist/platform/operating-plane-client.js +131 -0
  436. package/dist/platform/operating-plane-client.js.map +1 -0
  437. package/dist/platform/operating-plane-summary.d.ts +47 -0
  438. package/dist/platform/operating-plane-summary.d.ts.map +1 -0
  439. package/dist/platform/operating-plane-summary.js +209 -0
  440. package/dist/platform/operating-plane-summary.js.map +1 -0
  441. package/dist/platform/tool-execution-client.d.ts.map +1 -1
  442. package/dist/platform/tool-execution-client.js +4 -11
  443. package/dist/platform/tool-execution-client.js.map +1 -1
  444. package/dist/prompts/service-client.d.ts.map +1 -1
  445. package/dist/prompts/service-client.js +3 -5
  446. package/dist/prompts/service-client.js.map +1 -1
  447. package/dist/prompts/system-prompt.d.ts +3 -0
  448. package/dist/prompts/system-prompt.d.ts.map +1 -1
  449. package/dist/prompts/system-prompt.js +13 -3
  450. package/dist/prompts/system-prompt.js.map +1 -1
  451. package/dist/prompts/types.d.ts +2 -0
  452. package/dist/prompts/types.d.ts.map +1 -1
  453. package/dist/prompts/types.js.map +1 -1
  454. package/dist/providers/api-keys.d.ts +1 -1
  455. package/dist/providers/api-keys.d.ts.map +1 -1
  456. package/dist/providers/api-keys.js +2 -1
  457. package/dist/providers/api-keys.js.map +1 -1
  458. package/dist/providers/auth.d.ts.map +1 -1
  459. package/dist/providers/auth.js +48 -25
  460. package/dist/providers/auth.js.map +1 -1
  461. package/dist/remote-runner/attach-client.d.ts.map +1 -1
  462. package/dist/remote-runner/attach-client.js +1 -0
  463. package/dist/remote-runner/attach-client.js.map +1 -1
  464. package/dist/remote-runner/client.d.ts.map +1 -1
  465. package/dist/remote-runner/client.js +4 -7
  466. package/dist/remote-runner/client.js.map +1 -1
  467. package/dist/rpc/rpc-types.d.ts.map +1 -1
  468. package/dist/rpc/rpc-types.js +1 -0
  469. package/dist/rpc/rpc-types.js.map +1 -1
  470. package/dist/safety/action-firewall.d.ts.map +1 -1
  471. package/dist/safety/action-firewall.js +69 -6
  472. package/dist/safety/action-firewall.js.map +1 -1
  473. package/dist/safety/attack-patterns.d.ts.map +1 -1
  474. package/dist/safety/attack-patterns.js +31 -14
  475. package/dist/safety/attack-patterns.js.map +1 -1
  476. package/dist/safety/bash-parser.d.ts.map +1 -1
  477. package/dist/safety/bash-parser.js +4 -3
  478. package/dist/safety/bash-parser.js.map +1 -1
  479. package/dist/safety/execpolicy.d.ts +15 -3
  480. package/dist/safety/execpolicy.d.ts.map +1 -1
  481. package/dist/safety/execpolicy.js +248 -37
  482. package/dist/safety/execpolicy.js.map +1 -1
  483. package/dist/safety/governance-service-client.d.ts.map +1 -1
  484. package/dist/safety/governance-service-client.js +4 -7
  485. package/dist/safety/governance-service-client.js.map +1 -1
  486. package/dist/safety/guarded-files.d.ts +34 -0
  487. package/dist/safety/guarded-files.d.ts.map +1 -0
  488. package/dist/safety/guarded-files.js +372 -0
  489. package/dist/safety/guarded-files.js.map +1 -0
  490. package/dist/safety/loop-detector.d.ts.map +1 -1
  491. package/dist/safety/loop-detector.js +6 -1
  492. package/dist/safety/loop-detector.js.map +1 -1
  493. package/dist/safety/permission-profile.d.ts +47 -0
  494. package/dist/safety/permission-profile.d.ts.map +1 -0
  495. package/dist/safety/permission-profile.js +349 -0
  496. package/dist/safety/permission-profile.js.map +1 -0
  497. package/dist/safety/safety-middleware.d.ts +5 -1
  498. package/dist/safety/safety-middleware.d.ts.map +1 -1
  499. package/dist/safety/safety-middleware.js +3 -2
  500. package/dist/safety/safety-middleware.js.map +1 -1
  501. package/dist/safety/suspicious-patterns.d.ts.map +1 -1
  502. package/dist/safety/suspicious-patterns.js +12 -7
  503. package/dist/safety/suspicious-patterns.js.map +1 -1
  504. package/dist/safety/tool-categorization.js +1 -1
  505. package/dist/safety/tool-categorization.js.map +1 -1
  506. package/dist/safety/validators/path-policy-validator.d.ts.map +1 -1
  507. package/dist/safety/validators/path-policy-validator.js +7 -0
  508. package/dist/safety/validators/path-policy-validator.js.map +1 -1
  509. package/dist/sandbox/index.d.ts +6 -1
  510. package/dist/sandbox/index.d.ts.map +1 -1
  511. package/dist/sandbox/index.js +30 -4
  512. package/dist/sandbox/index.js.map +1 -1
  513. package/dist/sandbox/native-sandbox.d.ts +3 -0
  514. package/dist/sandbox/native-sandbox.d.ts.map +1 -1
  515. package/dist/sandbox/native-sandbox.js +139 -18
  516. package/dist/sandbox/native-sandbox.js.map +1 -1
  517. package/dist/sentry.d.ts +17 -0
  518. package/dist/sentry.d.ts.map +1 -0
  519. package/dist/sentry.js +91 -0
  520. package/dist/sentry.js.map +1 -0
  521. package/dist/server/agent-runtime-ledger.d.ts +141 -0
  522. package/dist/server/agent-runtime-ledger.d.ts.map +1 -0
  523. package/dist/server/agent-runtime-ledger.js +334 -0
  524. package/dist/server/agent-runtime-ledger.js.map +1 -0
  525. package/dist/server/agent-trajectory-inspection.d.ts +104 -0
  526. package/dist/server/agent-trajectory-inspection.d.ts.map +1 -0
  527. package/dist/server/agent-trajectory-inspection.js +168 -0
  528. package/dist/server/agent-trajectory-inspection.js.map +1 -0
  529. package/dist/server/agent-trajectory-replay.d.ts +56 -0
  530. package/dist/server/agent-trajectory-replay.d.ts.map +1 -0
  531. package/dist/server/agent-trajectory-replay.js +214 -0
  532. package/dist/server/agent-trajectory-replay.js.map +1 -0
  533. package/dist/server/agent-trajectory-scenarios.d.ts +109 -0
  534. package/dist/server/agent-trajectory-scenarios.d.ts.map +1 -0
  535. package/dist/server/agent-trajectory-scenarios.js +822 -0
  536. package/dist/server/agent-trajectory-scenarios.js.map +1 -0
  537. package/dist/server/agent-trajectory-scorers.d.ts +61 -0
  538. package/dist/server/agent-trajectory-scorers.d.ts.map +1 -0
  539. package/dist/server/agent-trajectory-scorers.js +162 -0
  540. package/dist/server/agent-trajectory-scorers.js.map +1 -0
  541. package/dist/server/agent-trajectory-validation.d.ts +7 -0
  542. package/dist/server/agent-trajectory-validation.d.ts.map +1 -0
  543. package/dist/server/agent-trajectory-validation.js +101 -0
  544. package/dist/server/agent-trajectory-validation.js.map +1 -0
  545. package/dist/server/agent-trajectory.d.ts +50 -0
  546. package/dist/server/agent-trajectory.d.ts.map +1 -0
  547. package/dist/server/agent-trajectory.js +159 -0
  548. package/dist/server/agent-trajectory.js.map +1 -0
  549. package/dist/server/app-context.d.ts +18 -0
  550. package/dist/server/app-context.d.ts.map +1 -1
  551. package/dist/server/app-context.js.map +1 -1
  552. package/dist/server/handlers/headless-sessions.d.ts.map +1 -1
  553. package/dist/server/handlers/headless-sessions.js +64 -27
  554. package/dist/server/handlers/headless-sessions.js.map +1 -1
  555. package/dist/server/handlers/health.d.ts +6 -0
  556. package/dist/server/handlers/health.d.ts.map +1 -1
  557. package/dist/server/handlers/health.js +6 -0
  558. package/dist/server/handlers/health.js.map +1 -1
  559. package/dist/server/handlers/hosted-runner-drain.d.ts +69 -1
  560. package/dist/server/handlers/hosted-runner-drain.d.ts.map +1 -1
  561. package/dist/server/handlers/hosted-runner-drain.js +309 -18
  562. package/dist/server/handlers/hosted-runner-drain.js.map +1 -1
  563. package/dist/server/handlers/hosted-runner-identity.d.ts +16 -0
  564. package/dist/server/handlers/hosted-runner-identity.d.ts.map +1 -1
  565. package/dist/server/handlers/hosted-runner-identity.js +43 -0
  566. package/dist/server/handlers/hosted-runner-identity.js.map +1 -1
  567. package/dist/server/handlers/mode.d.ts.map +1 -1
  568. package/dist/server/handlers/mode.js +3 -1
  569. package/dist/server/handlers/mode.js.map +1 -1
  570. package/dist/server/handlers/pending-requests.d.ts.map +1 -1
  571. package/dist/server/handlers/pending-requests.js +336 -51
  572. package/dist/server/handlers/pending-requests.js.map +1 -1
  573. package/dist/server/handlers/platform-a2a-push.d.ts +6 -0
  574. package/dist/server/handlers/platform-a2a-push.d.ts.map +1 -0
  575. package/dist/server/handlers/platform-a2a-push.js +136 -0
  576. package/dist/server/handlers/platform-a2a-push.js.map +1 -0
  577. package/dist/server/handlers/sessions.d.ts.map +1 -1
  578. package/dist/server/handlers/sessions.js +21 -1
  579. package/dist/server/handlers/sessions.js.map +1 -1
  580. package/dist/server/headless-runtime-service.d.ts +9 -2
  581. package/dist/server/headless-runtime-service.d.ts.map +1 -1
  582. package/dist/server/headless-runtime-service.js +39 -0
  583. package/dist/server/headless-runtime-service.js.map +1 -1
  584. package/dist/server/hosted-agent-runtime-progress.d.ts +144 -0
  585. package/dist/server/hosted-agent-runtime-progress.d.ts.map +1 -0
  586. package/dist/server/hosted-agent-runtime-progress.js +1650 -0
  587. package/dist/server/hosted-agent-runtime-progress.js.map +1 -0
  588. package/dist/server/hosted-runner-lease.d.ts +41 -0
  589. package/dist/server/hosted-runner-lease.d.ts.map +1 -0
  590. package/dist/server/hosted-runner-lease.js +140 -0
  591. package/dist/server/hosted-runner-lease.js.map +1 -0
  592. package/dist/server/hosted-session-manager.d.ts +16 -8
  593. package/dist/server/hosted-session-manager.d.ts.map +1 -1
  594. package/dist/server/hosted-session-manager.js +98 -76
  595. package/dist/server/hosted-session-manager.js.map +1 -1
  596. package/dist/server/junit-xml.d.ts +2 -0
  597. package/dist/server/junit-xml.d.ts.map +1 -0
  598. package/dist/server/junit-xml.js +9 -0
  599. package/dist/server/junit-xml.js.map +1 -0
  600. package/dist/server/routes.d.ts.map +1 -1
  601. package/dist/server/routes.js +6 -0
  602. package/dist/server/routes.js.map +1 -1
  603. package/dist/server/scenario-recorder.d.ts +56 -0
  604. package/dist/server/scenario-recorder.d.ts.map +1 -0
  605. package/dist/server/scenario-recorder.js +109 -0
  606. package/dist/server/scenario-recorder.js.map +1 -0
  607. package/dist/server/scripted-scenario-runner.d.ts +46 -0
  608. package/dist/server/scripted-scenario-runner.d.ts.map +1 -0
  609. package/dist/server/scripted-scenario-runner.js +190 -0
  610. package/dist/server/scripted-scenario-runner.js.map +1 -0
  611. package/dist/server/server-middlewares.d.ts +6 -2
  612. package/dist/server/server-middlewares.d.ts.map +1 -1
  613. package/dist/server/server-middlewares.js +8 -2
  614. package/dist/server/server-middlewares.js.map +1 -1
  615. package/dist/server/server-request-manager.d.ts +9 -1
  616. package/dist/server/server-request-manager.d.ts.map +1 -1
  617. package/dist/server/server-request-manager.js +49 -4
  618. package/dist/server/server-request-manager.js.map +1 -1
  619. package/dist/services/intelligent-router/service.d.ts +2 -0
  620. package/dist/services/intelligent-router/service.d.ts.map +1 -1
  621. package/dist/services/intelligent-router/service.js +4 -0
  622. package/dist/services/intelligent-router/service.js.map +1 -1
  623. package/dist/services/service-authority.d.ts +25 -0
  624. package/dist/services/service-authority.d.ts.map +1 -0
  625. package/dist/services/service-authority.js +143 -0
  626. package/dist/services/service-authority.js.map +1 -0
  627. package/dist/services/workspace-config/service.d.ts +2 -0
  628. package/dist/services/workspace-config/service.d.ts.map +1 -1
  629. package/dist/services/workspace-config/service.js +4 -0
  630. package/dist/services/workspace-config/service.js.map +1 -1
  631. package/dist/session/manager.d.ts +8 -2
  632. package/dist/session/manager.d.ts.map +1 -1
  633. package/dist/session/manager.js +19 -4
  634. package/dist/session/manager.js.map +1 -1
  635. package/dist/session/session-branch.d.ts.map +1 -1
  636. package/dist/session/session-branch.js +5 -1
  637. package/dist/session/session-branch.js.map +1 -1
  638. package/dist/session/session-catalog.d.ts +7 -2
  639. package/dist/session/session-catalog.d.ts.map +1 -1
  640. package/dist/session/session-catalog.js +13 -2
  641. package/dist/session/session-catalog.js.map +1 -1
  642. package/dist/session/session-context.d.ts +6 -2
  643. package/dist/session/session-context.d.ts.map +1 -1
  644. package/dist/session/session-context.js +44 -4
  645. package/dist/session/session-context.js.map +1 -1
  646. package/dist/session/session-graph-projection.d.ts +32 -0
  647. package/dist/session/session-graph-projection.d.ts.map +1 -0
  648. package/dist/session/session-graph-projection.js +133 -0
  649. package/dist/session/session-graph-projection.js.map +1 -0
  650. package/dist/session/types.d.ts +18 -0
  651. package/dist/session/types.d.ts.map +1 -1
  652. package/dist/session/types.js +8 -0
  653. package/dist/session/types.js.map +1 -1
  654. package/dist/session/wire-format.generated.d.ts +3 -0
  655. package/dist/session/wire-format.generated.d.ts.map +1 -1
  656. package/dist/session/wire-format.generated.js +20 -0
  657. package/dist/session/wire-format.generated.js.map +1 -1
  658. package/dist/skills/eval-harness.d.ts +38 -0
  659. package/dist/skills/eval-harness.d.ts.map +1 -0
  660. package/dist/skills/eval-harness.js +112 -0
  661. package/dist/skills/eval-harness.js.map +1 -0
  662. package/dist/skills/index.d.ts +5 -1
  663. package/dist/skills/index.d.ts.map +1 -1
  664. package/dist/skills/index.js +5 -1
  665. package/dist/skills/index.js.map +1 -1
  666. package/dist/skills/linter.d.ts +36 -0
  667. package/dist/skills/linter.d.ts.map +1 -0
  668. package/dist/skills/linter.js +398 -0
  669. package/dist/skills/linter.js.map +1 -0
  670. package/dist/skills/loader.d.ts +36 -6
  671. package/dist/skills/loader.d.ts.map +1 -1
  672. package/dist/skills/loader.js +169 -86
  673. package/dist/skills/loader.js.map +1 -1
  674. package/dist/skills/package-contract.d.ts +45 -0
  675. package/dist/skills/package-contract.d.ts.map +1 -0
  676. package/dist/skills/package-contract.js +153 -0
  677. package/dist/skills/package-contract.js.map +1 -0
  678. package/dist/skills/runtime-activation.d.ts +68 -0
  679. package/dist/skills/runtime-activation.d.ts.map +1 -0
  680. package/dist/skills/runtime-activation.js +228 -0
  681. package/dist/skills/runtime-activation.js.map +1 -0
  682. package/dist/skills/service-client.d.ts.map +1 -1
  683. package/dist/skills/service-client.js +3 -4
  684. package/dist/skills/service-client.js.map +1 -1
  685. package/dist/skills/tool.d.ts.map +1 -1
  686. package/dist/skills/tool.js +2 -0
  687. package/dist/skills/tool.js.map +1 -1
  688. package/dist/skills/types.d.ts +14 -0
  689. package/dist/skills/types.d.ts.map +1 -1
  690. package/dist/skills/types.js.map +1 -1
  691. package/dist/telemetry/agent-operating-plane-context.d.ts +24 -0
  692. package/dist/telemetry/agent-operating-plane-context.d.ts.map +1 -0
  693. package/dist/telemetry/agent-operating-plane-context.js +54 -0
  694. package/dist/telemetry/agent-operating-plane-context.js.map +1 -0
  695. package/dist/telemetry/beacon.d.ts +24 -0
  696. package/dist/telemetry/beacon.d.ts.map +1 -0
  697. package/dist/telemetry/beacon.js +115 -0
  698. package/dist/telemetry/beacon.js.map +1 -0
  699. package/dist/telemetry/cli-command-aggregator.d.ts +36 -0
  700. package/dist/telemetry/cli-command-aggregator.d.ts.map +1 -0
  701. package/dist/telemetry/cli-command-aggregator.js +251 -0
  702. package/dist/telemetry/cli-command-aggregator.js.map +1 -0
  703. package/dist/telemetry/cli-startup.d.ts +21 -0
  704. package/dist/telemetry/cli-startup.d.ts.map +1 -0
  705. package/dist/telemetry/cli-startup.js +83 -0
  706. package/dist/telemetry/cli-startup.js.map +1 -0
  707. package/dist/telemetry/disablement.d.ts +13 -0
  708. package/dist/telemetry/disablement.d.ts.map +1 -0
  709. package/dist/telemetry/disablement.js +19 -0
  710. package/dist/telemetry/disablement.js.map +1 -0
  711. package/dist/telemetry/index.d.ts +6 -2
  712. package/dist/telemetry/index.d.ts.map +1 -1
  713. package/dist/telemetry/index.js +6 -2
  714. package/dist/telemetry/index.js.map +1 -1
  715. package/dist/telemetry/maestro-event-bus.d.ts +52 -0
  716. package/dist/telemetry/maestro-event-bus.d.ts.map +1 -1
  717. package/dist/telemetry/maestro-event-bus.js +179 -3
  718. package/dist/telemetry/maestro-event-bus.js.map +1 -1
  719. package/dist/telemetry/maestro-event-catalog.d.ts +3 -1
  720. package/dist/telemetry/maestro-event-catalog.d.ts.map +1 -1
  721. package/dist/telemetry/maestro-event-catalog.js +2 -0
  722. package/dist/telemetry/maestro-event-catalog.js.map +1 -1
  723. package/dist/telemetry/maestro-platform-replay-fixture.d.ts.map +1 -1
  724. package/dist/telemetry/maestro-platform-replay-fixture.js +74 -9
  725. package/dist/telemetry/maestro-platform-replay-fixture.js.map +1 -1
  726. package/dist/telemetry/maestro-publisher-conformance-fixture.d.ts +1 -1
  727. package/dist/telemetry/maestro-publisher-conformance-fixture.d.ts.map +1 -1
  728. package/dist/telemetry/maestro-publisher-conformance-fixture.js +46 -11
  729. package/dist/telemetry/maestro-publisher-conformance-fixture.js.map +1 -1
  730. package/dist/telemetry/mcp-beacon.d.ts +20 -0
  731. package/dist/telemetry/mcp-beacon.d.ts.map +1 -0
  732. package/dist/telemetry/mcp-beacon.js +54 -0
  733. package/dist/telemetry/mcp-beacon.js.map +1 -0
  734. package/dist/telemetry/metadata-normalization.d.ts +7 -0
  735. package/dist/telemetry/metadata-normalization.d.ts.map +1 -0
  736. package/dist/telemetry/metadata-normalization.js +189 -0
  737. package/dist/telemetry/metadata-normalization.js.map +1 -0
  738. package/dist/telemetry/meter-service-client.d.ts.map +1 -1
  739. package/dist/telemetry/meter-service-client.js +5 -10
  740. package/dist/telemetry/meter-service-client.js.map +1 -1
  741. package/dist/telemetry/metrics.d.ts +123 -0
  742. package/dist/telemetry/metrics.d.ts.map +1 -0
  743. package/dist/telemetry/metrics.js +184 -0
  744. package/dist/telemetry/metrics.js.map +1 -0
  745. package/dist/telemetry/turn-tracker.d.ts +1 -0
  746. package/dist/telemetry/turn-tracker.d.ts.map +1 -1
  747. package/dist/telemetry/turn-tracker.js +22 -1
  748. package/dist/telemetry/turn-tracker.js.map +1 -1
  749. package/dist/telemetry/wide-events.d.ts +31 -1
  750. package/dist/telemetry/wide-events.d.ts.map +1 -1
  751. package/dist/telemetry/wide-events.js +229 -1
  752. package/dist/telemetry/wide-events.js.map +1 -1
  753. package/dist/telemetry.d.ts +39 -3
  754. package/dist/telemetry.d.ts.map +1 -1
  755. package/dist/telemetry.js +160 -3
  756. package/dist/telemetry.js.map +1 -1
  757. package/dist/testing/test-verification-hook.d.ts.map +1 -1
  758. package/dist/testing/test-verification-hook.js +34 -21
  759. package/dist/testing/test-verification-hook.js.map +1 -1
  760. package/dist/tools/apply-patch-parser.d.ts +26 -0
  761. package/dist/tools/apply-patch-parser.d.ts.map +1 -0
  762. package/dist/tools/apply-patch-parser.js +146 -0
  763. package/dist/tools/apply-patch-parser.js.map +1 -0
  764. package/dist/tools/apply-patch.d.ts +42 -0
  765. package/dist/tools/apply-patch.d.ts.map +1 -0
  766. package/dist/tools/apply-patch.js +648 -0
  767. package/dist/tools/apply-patch.js.map +1 -0
  768. package/dist/tools/ask-user.d.ts +1 -0
  769. package/dist/tools/ask-user.d.ts.map +1 -1
  770. package/dist/tools/background/tool-handler.d.ts +1 -0
  771. package/dist/tools/background/tool-handler.d.ts.map +1 -1
  772. package/dist/tools/bash.d.ts +1 -0
  773. package/dist/tools/bash.d.ts.map +1 -1
  774. package/dist/tools/codesearch.d.ts +1 -0
  775. package/dist/tools/codesearch.d.ts.map +1 -1
  776. package/dist/tools/conductor-client.d.ts +1 -0
  777. package/dist/tools/conductor-client.d.ts.map +1 -1
  778. package/dist/tools/conductor-client.js +63 -0
  779. package/dist/tools/conductor-client.js.map +1 -1
  780. package/dist/tools/diff.d.ts +1 -0
  781. package/dist/tools/diff.d.ts.map +1 -1
  782. package/dist/tools/edit.d.ts +1 -0
  783. package/dist/tools/edit.d.ts.map +1 -1
  784. package/dist/tools/extract-document.d.ts +1 -0
  785. package/dist/tools/extract-document.d.ts.map +1 -1
  786. package/dist/tools/find.d.ts +10 -0
  787. package/dist/tools/find.d.ts.map +1 -1
  788. package/dist/tools/find.js +236 -27
  789. package/dist/tools/find.js.map +1 -1
  790. package/dist/tools/gh.d.ts +3 -0
  791. package/dist/tools/gh.d.ts.map +1 -1
  792. package/dist/tools/index.d.ts +50 -0
  793. package/dist/tools/index.d.ts.map +1 -1
  794. package/dist/tools/index.js +4 -0
  795. package/dist/tools/index.js.map +1 -1
  796. package/dist/tools/list.d.ts +1 -0
  797. package/dist/tools/list.d.ts.map +1 -1
  798. package/dist/tools/notebook.d.ts +1 -0
  799. package/dist/tools/notebook.d.ts.map +1 -1
  800. package/dist/tools/oracle.d.ts +1 -0
  801. package/dist/tools/oracle.d.ts.map +1 -1
  802. package/dist/tools/oracle.js +17 -32
  803. package/dist/tools/oracle.js.map +1 -1
  804. package/dist/tools/parallel-execution.d.ts +13 -2
  805. package/dist/tools/parallel-execution.d.ts.map +1 -1
  806. package/dist/tools/parallel-execution.js +178 -7
  807. package/dist/tools/parallel-execution.js.map +1 -1
  808. package/dist/tools/parallel-ripgrep.d.ts +1 -0
  809. package/dist/tools/parallel-ripgrep.d.ts.map +1 -1
  810. package/dist/tools/pipeline.d.ts +4 -0
  811. package/dist/tools/pipeline.d.ts.map +1 -1
  812. package/dist/tools/read.d.ts +1 -0
  813. package/dist/tools/read.d.ts.map +1 -1
  814. package/dist/tools/search.d.ts +1 -0
  815. package/dist/tools/search.d.ts.map +1 -1
  816. package/dist/tools/status.d.ts +1 -0
  817. package/dist/tools/status.d.ts.map +1 -1
  818. package/dist/tools/todo.d.ts +1 -0
  819. package/dist/tools/todo.d.ts.map +1 -1
  820. package/dist/tools/tool-dsl.d.ts +5 -1
  821. package/dist/tools/tool-dsl.d.ts.map +1 -1
  822. package/dist/tools/tool-dsl.js +1 -0
  823. package/dist/tools/tool-dsl.js.map +1 -1
  824. package/dist/tools/tool-result-cache.d.ts.map +1 -1
  825. package/dist/tools/tool-result-cache.js +1 -0
  826. package/dist/tools/tool-result-cache.js.map +1 -1
  827. package/dist/tools/typebox-tool.d.ts.map +1 -1
  828. package/dist/tools/typebox-tool.js +3 -0
  829. package/dist/tools/typebox-tool.js.map +1 -1
  830. package/dist/tools/webfetch.d.ts +1 -0
  831. package/dist/tools/webfetch.d.ts.map +1 -1
  832. package/dist/tools/websearch.d.ts +1 -0
  833. package/dist/tools/websearch.d.ts.map +1 -1
  834. package/dist/tools/write.d.ts +1 -0
  835. package/dist/tools/write.d.ts.map +1 -1
  836. package/dist/utils/abort-error.d.ts +2 -0
  837. package/dist/utils/abort-error.d.ts.map +1 -0
  838. package/dist/utils/abort-error.js +7 -0
  839. package/dist/utils/abort-error.js.map +1 -0
  840. package/dist/utils/downstream.d.ts.map +1 -1
  841. package/dist/utils/downstream.js +4 -0
  842. package/dist/utils/downstream.js.map +1 -1
  843. package/dist/utils/logger.d.ts +3 -0
  844. package/dist/utils/logger.d.ts.map +1 -1
  845. package/dist/utils/logger.js +14 -3
  846. package/dist/utils/logger.js.map +1 -1
  847. package/dist/utils/path-containment.d.ts +2 -0
  848. package/dist/utils/path-containment.d.ts.map +1 -0
  849. package/dist/utils/path-containment.js +14 -0
  850. package/dist/utils/path-containment.js.map +1 -0
  851. package/dist/utils/prompt-safe-text.d.ts +7 -0
  852. package/dist/utils/prompt-safe-text.d.ts.map +1 -0
  853. package/dist/utils/prompt-safe-text.js +44 -0
  854. package/dist/utils/prompt-safe-text.js.map +1 -0
  855. package/dist/version.json +2 -2
  856. package/dist/web-server.d.ts.map +1 -1
  857. package/dist/web-server.js +32 -7
  858. package/dist/web-server.js.map +1 -1
  859. package/dist/workspace/root-resolver.d.ts +4 -1
  860. package/dist/workspace/root-resolver.d.ts.map +1 -1
  861. package/dist/workspace/root-resolver.js +16 -6
  862. package/dist/workspace/root-resolver.js.map +1 -1
  863. package/node_modules/@evalops/contracts/dist/advisor-effort.d.ts +8 -0
  864. package/node_modules/@evalops/contracts/dist/advisor-effort.d.ts.map +1 -0
  865. package/node_modules/@evalops/contracts/dist/advisor-effort.js +35 -0
  866. package/node_modules/@evalops/contracts/dist/advisor-effort.js.map +1 -0
  867. package/node_modules/@evalops/contracts/dist/delegation-prompt.d.ts +10 -0
  868. package/node_modules/@evalops/contracts/dist/delegation-prompt.d.ts.map +1 -0
  869. package/node_modules/@evalops/contracts/dist/delegation-prompt.js +48 -0
  870. package/node_modules/@evalops/contracts/dist/delegation-prompt.js.map +1 -0
  871. package/node_modules/@evalops/contracts/dist/guarded-files-settings.d.ts +20 -0
  872. package/node_modules/@evalops/contracts/dist/guarded-files-settings.d.ts.map +1 -0
  873. package/node_modules/@evalops/contracts/dist/guarded-files-settings.js +147 -0
  874. package/node_modules/@evalops/contracts/dist/guarded-files-settings.js.map +1 -0
  875. package/node_modules/@evalops/contracts/dist/headless-protocol-generated.d.ts +2 -0
  876. package/node_modules/@evalops/contracts/dist/headless-protocol-generated.d.ts.map +1 -1
  877. package/node_modules/@evalops/contracts/dist/headless-protocol-generated.js +1 -0
  878. package/node_modules/@evalops/contracts/dist/headless-protocol-generated.js.map +1 -1
  879. package/node_modules/@evalops/contracts/dist/headless-protocol-schemas.generated.d.ts +280 -5
  880. package/node_modules/@evalops/contracts/dist/headless-protocol-schemas.generated.d.ts.map +1 -1
  881. package/node_modules/@evalops/contracts/dist/headless-protocol-schemas.generated.js +36 -1
  882. package/node_modules/@evalops/contracts/dist/headless-protocol-schemas.generated.js.map +1 -1
  883. package/node_modules/@evalops/contracts/dist/index.d.ts +15 -1
  884. package/node_modules/@evalops/contracts/dist/index.d.ts.map +1 -1
  885. package/node_modules/@evalops/contracts/dist/index.js +6 -0
  886. package/node_modules/@evalops/contracts/dist/index.js.map +1 -1
  887. package/node_modules/@evalops/contracts/dist/maestro-app-server.d.ts +593 -0
  888. package/node_modules/@evalops/contracts/dist/maestro-app-server.d.ts.map +1 -0
  889. package/node_modules/@evalops/contracts/dist/maestro-app-server.js +218 -0
  890. package/node_modules/@evalops/contracts/dist/maestro-app-server.js.map +1 -0
  891. package/node_modules/@evalops/contracts/dist/proto/maestro/v1/headless_pb.d.ts +91 -0
  892. package/node_modules/@evalops/contracts/dist/proto/maestro/v1/headless_pb.d.ts.map +1 -1
  893. package/node_modules/@evalops/contracts/dist/proto/maestro/v1/headless_pb.js +92 -61
  894. package/node_modules/@evalops/contracts/dist/proto/maestro/v1/headless_pb.js.map +1 -1
  895. package/node_modules/@evalops/contracts/dist/runtime-app-server.d.ts +3 -0
  896. package/node_modules/@evalops/contracts/dist/runtime-app-server.d.ts.map +1 -1
  897. package/node_modules/@evalops/contracts/dist/runtime-constraints.d.ts +28 -0
  898. package/node_modules/@evalops/contracts/dist/runtime-constraints.d.ts.map +1 -0
  899. package/node_modules/@evalops/contracts/dist/runtime-constraints.js +71 -0
  900. package/node_modules/@evalops/contracts/dist/runtime-constraints.js.map +1 -0
  901. package/node_modules/@evalops/contracts/dist/runtime-server-request.d.ts +7 -0
  902. package/node_modules/@evalops/contracts/dist/runtime-server-request.d.ts.map +1 -1
  903. package/node_modules/@evalops/contracts/dist/runtime-server-request.js +2 -0
  904. package/node_modules/@evalops/contracts/dist/runtime-server-request.js.map +1 -1
  905. package/node_modules/@evalops/contracts/dist/scenario.d.ts +191 -0
  906. package/node_modules/@evalops/contracts/dist/scenario.d.ts.map +1 -0
  907. package/node_modules/@evalops/contracts/dist/scenario.js +4 -0
  908. package/node_modules/@evalops/contracts/dist/scenario.js.map +1 -0
  909. package/node_modules/@evalops/contracts/dist/schemas.d.ts +17 -3
  910. package/node_modules/@evalops/contracts/dist/schemas.d.ts.map +1 -1
  911. package/node_modules/@evalops/contracts/dist/schemas.js +16 -0
  912. package/node_modules/@evalops/contracts/dist/schemas.js.map +1 -1
  913. package/node_modules/@evalops/contracts/package.json +1 -1
  914. package/node_modules/@evalops/tui/package.json +1 -1
  915. package/package.json +41 -7
  916. package/skills/incident-triage/SKILL.md +40 -0
  917. package/skills/incident-triage/mcp.json +14 -0
  918. package/skills/incident-triage/reference/triage.md +20 -0
  919. package/skills/incident-triage/toolbox/incident-timeline +22 -0
  920. package/skills/incident-triage/toolbox/incident-timeline.cmd +16 -0
  921. package/skills/pr-review/SKILL.md +40 -0
  922. package/skills/pr-review/mcp.json +14 -0
  923. package/skills/pr-review/reference/rubric.md +20 -0
  924. package/skills/pr-review/toolbox/review-summary +20 -0
  925. package/skills/pr-review/toolbox/review-summary.cmd +14 -0
  926. package/skills/release-verification/SKILL.md +40 -0
  927. package/skills/release-verification/mcp.json +15 -0
  928. package/skills/release-verification/reference/checklist.md +21 -0
  929. package/skills/release-verification/toolbox/release-readiness +18 -0
  930. package/skills/release-verification/toolbox/release-readiness.cmd +12 -0
@@ -8,10 +8,12 @@
8
8
  * This is a TypeScript implementation that spawns sandboxed processes.
9
9
  */
10
10
  import { exec, spawn, } from "node:child_process";
11
- import { existsSync, mkdirSync, readFileSync, readdirSync, rmSync, writeFileSync, } from "node:fs";
11
+ import { existsSync, lstatSync, mkdirSync, readFileSync, readdirSync, readlinkSync, realpathSync, rmSync, writeFileSync, } from "node:fs";
12
12
  import { platform } from "node:os";
13
- import { dirname, isAbsolute, join } from "node:path";
13
+ import { basename, dirname, isAbsolute, join, resolve } from "node:path";
14
+ import { fileURLToPath } from "node:url";
14
15
  import { promisify } from "node:util";
16
+ import { isPathWithin } from "../utils/path-containment.js";
15
17
  import { resolveShellEnvironment } from "../utils/shell-env.js";
16
18
  const _execAsync = promisify(exec);
17
19
  // ─────────────────────────────────────────────────────────────
@@ -146,6 +148,25 @@ const SANDBOX_ENV_VAR = "MAESTRO_SANDBOX";
146
148
  // ─────────────────────────────────────────────────────────────
147
149
  // Helper Functions
148
150
  // ─────────────────────────────────────────────────────────────
151
+ function getGitReadOnlySubpaths(cwd) {
152
+ const gitPath = join(cwd, ".git");
153
+ if (!existsSync(gitPath)) {
154
+ return [];
155
+ }
156
+ const readOnlySubpaths = [gitPath];
157
+ try {
158
+ const gitFile = readFileSync(gitPath, "utf-8");
159
+ const match = gitFile.match(/^gitdir:\s*(.+?)\s*$/m);
160
+ const gitDir = match?.[1];
161
+ if (gitDir) {
162
+ readOnlySubpaths.push(isAbsolute(gitDir) ? resolve(gitDir) : resolve(cwd, gitDir));
163
+ }
164
+ }
165
+ catch {
166
+ // .git is usually a directory; only worktree gitfiles need parsing.
167
+ }
168
+ return readOnlySubpaths;
169
+ }
149
170
  function getWritableRootsWithCwd(policy, cwd) {
150
171
  const roots = [];
151
172
  if (policy.mode === "danger-full-access") {
@@ -170,21 +191,69 @@ function getWritableRootsWithCwd(policy, cwd) {
170
191
  }
171
192
  }
172
193
  // Add cwd with .git as read-only subpath if present
173
- const gitDir = join(cwd, ".git");
174
- const readOnlySubpaths = existsSync(gitDir) ? [gitDir] : [];
175
- roots.push({ root: cwd, readOnlySubpaths });
176
- return roots;
194
+ roots.push({ root: cwd, readOnlySubpaths: [] });
195
+ const readOnlySubpaths = getGitReadOnlySubpaths(cwd);
196
+ if (readOnlySubpaths.length === 0) {
197
+ return roots;
198
+ }
199
+ return roots.map((root) => ({
200
+ ...root,
201
+ readOnlySubpaths: readOnlySubpaths.filter((readOnlySubpath) => isPathWithin(canonicalizeForAccess(readOnlySubpath), canonicalizeForAccess(root.root))),
202
+ }));
177
203
  }
178
204
  function canonicalize(path) {
179
205
  // On macOS, /var is a symlink to /private/var
180
206
  try {
181
- const { realpathSync } = require("node:fs");
182
207
  return realpathSync(path);
183
208
  }
184
209
  catch {
185
210
  return path;
186
211
  }
187
212
  }
213
+ function canonicalizeForAccess(path, seen = new Set()) {
214
+ const resolvedPath = resolve(path);
215
+ const missingSegments = [];
216
+ let existingParent = resolvedPath;
217
+ while (true) {
218
+ try {
219
+ const stat = lstatSync(existingParent);
220
+ if (stat.isSymbolicLink()) {
221
+ if (seen.has(existingParent)) {
222
+ return resolve(existingParent, ...missingSegments);
223
+ }
224
+ seen.add(existingParent);
225
+ const target = readlinkSync(existingParent);
226
+ const resolvedTarget = isAbsolute(target)
227
+ ? target
228
+ : resolve(dirname(existingParent), target);
229
+ return resolve(canonicalizeForAccess(resolvedTarget, seen), ...missingSegments);
230
+ }
231
+ return resolve(canonicalize(existingParent), ...missingSegments);
232
+ }
233
+ catch {
234
+ // Keep walking upward. Unlike existsSync, lstatSync sees dangling
235
+ // symlinks, so writes through them are checked against their targets.
236
+ }
237
+ const parent = dirname(existingParent);
238
+ if (parent === existingParent) {
239
+ return resolvedPath;
240
+ }
241
+ missingSegments.unshift(basename(existingParent));
242
+ existingParent = parent;
243
+ }
244
+ }
245
+ function canonicalizeDirectoryEntryForAccess(path) {
246
+ const resolvedPath = resolve(path);
247
+ return resolve(canonicalizeForAccess(dirname(resolvedPath)), basename(resolvedPath));
248
+ }
249
+ function isSymbolicLinkPath(path) {
250
+ try {
251
+ return lstatSync(path).isSymbolicLink();
252
+ }
253
+ catch {
254
+ return false;
255
+ }
256
+ }
188
257
  // ─────────────────────────────────────────────────────────────
189
258
  // Seatbelt Implementation (macOS)
190
259
  // ─────────────────────────────────────────────────────────────
@@ -272,7 +341,8 @@ export class NativeSandbox {
272
341
  * Implements the Sandbox interface.
273
342
  */
274
343
  async exec(command, cwd, env) {
275
- const workingDir = cwd ?? this.cwd;
344
+ const workingDir = this.resolveWorkingDir(cwd);
345
+ this.assertExecutionCwd(workingDir);
276
346
  const mergedEnv = {
277
347
  ...resolveShellEnvironment(env, { workspaceDir: this.cwd }),
278
348
  [SANDBOX_ENV_VAR]: this.getSandboxType(),
@@ -283,7 +353,7 @@ export class NativeSandbox {
283
353
  return new Promise((resolve, reject) => {
284
354
  let child;
285
355
  if (platform() === "darwin") {
286
- const seatbeltArgs = createSeatbeltArgs(shellCommand, this.policy, workingDir);
356
+ const seatbeltArgs = createSeatbeltArgs(shellCommand, this.policy, this.cwd);
287
357
  child = spawn(SEATBELT_EXECUTABLE, seatbeltArgs, {
288
358
  cwd: workingDir,
289
359
  env: mergedEnv,
@@ -333,9 +403,11 @@ export class NativeSandbox {
333
403
  */
334
404
  async execWithArgs(command, args = [], options = {}) {
335
405
  const fullCommand = [command, ...args];
406
+ const workingDir = this.resolveWorkingDir(options.cwd);
407
+ this.assertExecutionCwd(workingDir);
336
408
  const mergedOptions = {
337
- cwd: this.cwd,
338
409
  ...options,
410
+ cwd: workingDir,
339
411
  env: {
340
412
  ...resolveShellEnvironment(options.env, {
341
413
  workspaceDir: this.cwd,
@@ -395,6 +467,7 @@ export class NativeSandbox {
395
467
  throw new Error("Cannot write files in read-only sandbox mode");
396
468
  }
397
469
  const fullPath = this.resolvePath(path);
470
+ this.assertWritablePath(fullPath);
398
471
  // Ensure parent directory exists
399
472
  const dir = dirname(fullPath);
400
473
  if (!existsSync(dir)) {
@@ -424,6 +497,13 @@ export class NativeSandbox {
424
497
  throw new Error("Cannot delete files in read-only sandbox mode");
425
498
  }
426
499
  const fullPath = this.resolvePath(path);
500
+ const canonicalizeTarget = isSymbolicLinkPath(fullPath)
501
+ ? canonicalizeDirectoryEntryForAccess
502
+ : canonicalizeForAccess;
503
+ this.assertWritablePath(fullPath, {
504
+ blockReadOnlyDescendants: recursive ?? false,
505
+ canonicalizeTarget,
506
+ });
427
507
  rmSync(fullPath, { recursive: recursive ?? false, force: true });
428
508
  }
429
509
  async dispose() {
@@ -440,6 +520,54 @@ export class NativeSandbox {
440
520
  }
441
521
  return join(this.cwd, path);
442
522
  }
523
+ resolveWorkingDir(cwd) {
524
+ if (!cwd) {
525
+ return this.cwd;
526
+ }
527
+ const cwdPath = typeof cwd === "string" ? cwd : fileURLToPath(cwd);
528
+ if (isAbsolute(cwdPath)) {
529
+ return resolve(cwdPath);
530
+ }
531
+ return resolve(this.cwd, cwdPath);
532
+ }
533
+ assertExecutionCwd(workingDir) {
534
+ if (this.policy.mode !== "workspace-write") {
535
+ return;
536
+ }
537
+ const targetPath = canonicalizeForAccess(workingDir);
538
+ const allowedRoots = getWritableRootsWithCwd(this.policy, this.cwd).map((root) => canonicalizeForAccess(root.root));
539
+ if (!allowedRoots.some((root) => isPathWithin(targetPath, root))) {
540
+ throw new Error(`Cannot execute workspace-write command outside workspace or explicit writable roots: ${workingDir}`);
541
+ }
542
+ this.assertWritablePath(targetPath);
543
+ }
544
+ assertWritablePath(path, options) {
545
+ if (this.policy.mode === "danger-full-access") {
546
+ return;
547
+ }
548
+ const targetPath = (options?.canonicalizeTarget ?? canonicalizeForAccess)(path);
549
+ const writableRoots = getWritableRootsWithCwd(this.policy, this.cwd);
550
+ let hasMatchingWritableRoot = false;
551
+ let blockedByReadOnlySubpath = false;
552
+ for (const root of writableRoots) {
553
+ const rootPath = canonicalizeForAccess(root.root);
554
+ if (!isPathWithin(targetPath, rootPath)) {
555
+ continue;
556
+ }
557
+ hasMatchingWritableRoot = true;
558
+ if (root.readOnlySubpaths.some((readOnlySubpath) => {
559
+ const readOnlyPath = canonicalizeForAccess(readOnlySubpath);
560
+ return (isPathWithin(targetPath, readOnlyPath) ||
561
+ (options?.blockReadOnlyDescendants === true &&
562
+ isPathWithin(readOnlyPath, targetPath)));
563
+ })) {
564
+ blockedByReadOnlySubpath = true;
565
+ }
566
+ }
567
+ if (!hasMatchingWritableRoot || blockedByReadOnlySubpath) {
568
+ throw new Error(`Cannot write outside writable roots in ${this.policy.mode} sandbox mode: ${path}`);
569
+ }
570
+ }
443
571
  getSandboxType() {
444
572
  if (platform() === "darwin")
445
573
  return "seatbelt";
@@ -459,14 +587,7 @@ export function isNativeSandboxAvailable() {
459
587
  return existsSync(SEATBELT_EXECUTABLE);
460
588
  }
461
589
  if (platform() === "linux") {
462
- try {
463
- const { readFileSync } = require("node:fs");
464
- const lsm = readFileSync("/sys/kernel/security/lsm", "utf-8");
465
- return lsm.includes("landlock");
466
- }
467
- catch {
468
- return false;
469
- }
590
+ return false;
470
591
  }
471
592
  return false;
472
593
  }
@@ -1 +1 @@
1
- {"version":3,"file":"native-sandbox.js","sourceRoot":"","sources":["../../src/sandbox/native-sandbox.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Native Sandboxing for Command Execution\n *\n * Provides OS-native sandboxing using:\n * - macOS: Seatbelt (sandbox-exec) with SBPL policies\n * - Linux: Landlock LSM + seccomp (via external helper or kernel APIs)\n *\n * This is a TypeScript implementation that spawns sandboxed processes.\n */\n\nimport {\n\ttype ChildProcess,\n\ttype SpawnOptions,\n\texec,\n\tspawn,\n} from \"node:child_process\";\nimport {\n\texistsSync,\n\tmkdirSync,\n\treadFileSync,\n\treaddirSync,\n\trmSync,\n\twriteFileSync,\n} from \"node:fs\";\nimport { platform } from \"node:os\";\nimport { dirname, isAbsolute, join } from \"node:path\";\nimport { promisify } from \"node:util\";\nimport { resolveShellEnvironment } from \"../utils/shell-env.js\";\nimport type { ExecResult, Sandbox } from \"./types.js\";\n\nconst _execAsync = promisify(exec);\n\n// ─────────────────────────────────────────────────────────────\n// Sandbox Policy Types\n// ─────────────────────────────────────────────────────────────\n\nexport type NativeSandboxMode =\n\t| \"read-only\"\n\t| \"workspace-write\"\n\t| \"danger-full-access\";\n\nexport interface NativeSandboxPolicy {\n\tmode: NativeSandboxMode;\n\t/** Additional writable directories */\n\twritableRoots?: string[];\n\t/** Allow network access */\n\tnetworkAccess?: boolean;\n\t/** Exclude TMPDIR from writable roots */\n\texcludeTmpdir?: boolean;\n\t/** Exclude /tmp from writable roots */\n\texcludeSlashTmp?: boolean;\n}\n\nexport interface WritableRoot {\n\troot: string;\n\treadOnlySubpaths: string[];\n}\n\n// ─────────────────────────────────────────────────────────────\n// Seatbelt Policy (macOS)\n// ─────────────────────────────────────────────────────────────\n\nconst SEATBELT_BASE_POLICY = `(version 1)\n\n; start with closed-by-default\n(deny default)\n\n; child processes inherit the policy of their parent\n(allow process-exec)\n(allow process-fork)\n(allow signal (target same-sandbox))\n\n; Allow cf prefs to work.\n(allow user-preference-read)\n\n; process-info\n(allow process-info* (target same-sandbox))\n\n(allow file-write-data\n (require-all\n (path \"/dev/null\")\n (vnode-type CHARACTER-DEVICE)))\n\n; sysctls permitted.\n(allow sysctl-read\n (sysctl-name \"hw.activecpu\")\n (sysctl-name \"hw.busfrequency_compat\")\n (sysctl-name \"hw.byteorder\")\n (sysctl-name \"hw.cacheconfig\")\n (sysctl-name \"hw.cachelinesize_compat\")\n (sysctl-name \"hw.cpufamily\")\n (sysctl-name \"hw.cpufrequency_compat\")\n (sysctl-name \"hw.cputype\")\n (sysctl-name \"hw.l1dcachesize_compat\")\n (sysctl-name \"hw.l1icachesize_compat\")\n (sysctl-name \"hw.l2cachesize_compat\")\n (sysctl-name \"hw.l3cachesize_compat\")\n (sysctl-name \"hw.logicalcpu_max\")\n (sysctl-name \"hw.machine\")\n (sysctl-name \"hw.memsize\")\n (sysctl-name \"hw.ncpu\")\n (sysctl-name \"hw.nperflevels\")\n (sysctl-name-prefix \"hw.optional.arm.\")\n (sysctl-name-prefix \"hw.optional.armv8_\")\n (sysctl-name \"hw.packages\")\n (sysctl-name \"hw.pagesize_compat\")\n (sysctl-name \"hw.pagesize\")\n (sysctl-name \"hw.physicalcpu\")\n (sysctl-name \"hw.physicalcpu_max\")\n (sysctl-name \"hw.tbfrequency_compat\")\n (sysctl-name \"hw.vectorunit\")\n (sysctl-name \"kern.argmax\")\n (sysctl-name \"kern.hostname\")\n (sysctl-name \"kern.maxfilesperproc\")\n (sysctl-name \"kern.maxproc\")\n (sysctl-name \"kern.osproductversion\")\n (sysctl-name \"kern.osrelease\")\n (sysctl-name \"kern.ostype\")\n (sysctl-name \"kern.osvariant_status\")\n (sysctl-name \"kern.osversion\")\n (sysctl-name \"kern.secure_kernel\")\n (sysctl-name \"kern.usrstack64\")\n (sysctl-name \"kern.version\")\n (sysctl-name \"sysctl.proc_cputype\")\n (sysctl-name \"vm.loadavg\")\n (sysctl-name-prefix \"hw.perflevel\")\n (sysctl-name-prefix \"kern.proc.pgrp.\")\n (sysctl-name-prefix \"kern.proc.pid.\")\n (sysctl-name-prefix \"net.routetable.\")\n)\n\n; Allow Java to read some CPU info.\n(allow sysctl-write\n (sysctl-name \"kern.grade_cputype\"))\n\n; IOKit\n(allow iokit-open\n (iokit-registry-entry-class \"RootDomainUserClient\")\n)\n\n; needed to look up user info\n(allow mach-lookup\n (global-name \"com.apple.system.opendirectoryd.libinfo\")\n)\n\n; Needed for python multiprocessing on MacOS for the SemLock\n(allow ipc-posix-sem)\n\n(allow mach-lookup\n (global-name \"com.apple.PowerManagement.control\")\n)\n\n; allow openpty()\n(allow pseudo-tty)\n(allow file-read* file-write* file-ioctl (literal \"/dev/ptmx\"))\n(allow file-read* file-write*\n (require-all\n (regex #\"^/dev/ttys[0-9]+\")\n (extension \"com.apple.sandbox.pty\")))\n(allow file-ioctl (regex #\"^/dev/ttys[0-9]+\"))\n`;\n\nconst SEATBELT_NETWORK_POLICY = `\n; Network access policies\n(allow network-outbound)\n(allow network-inbound)\n(allow system-socket)\n\n(allow mach-lookup\n (global-name \"com.apple.bsd.dirhelper\")\n (global-name \"com.apple.system.opendirectoryd.membership\")\n (global-name \"com.apple.SecurityServer\")\n (global-name \"com.apple.networkd\")\n (global-name \"com.apple.ocspd\")\n (global-name \"com.apple.trustd.agent\")\n (global-name \"com.apple.SystemConfiguration.DNSConfiguration\")\n (global-name \"com.apple.SystemConfiguration.configd\")\n)\n\n(allow sysctl-read\n (sysctl-name-regex #\"^net.routetable\")\n)\n\n(allow file-write*\n (subpath (param \"DARWIN_USER_CACHE_DIR\"))\n)\n`;\n\nconst SEATBELT_EXECUTABLE = \"/usr/bin/sandbox-exec\";\nconst SANDBOX_ENV_VAR = \"MAESTRO_SANDBOX\";\n\n// ─────────────────────────────────────────────────────────────\n// Helper Functions\n// ─────────────────────────────────────────────────────────────\n\nfunction getWritableRootsWithCwd(\n\tpolicy: NativeSandboxPolicy,\n\tcwd: string,\n): WritableRoot[] {\n\tconst roots: WritableRoot[] = [];\n\n\tif (policy.mode === \"danger-full-access\") {\n\t\treturn roots;\n\t}\n\n\tif (policy.mode === \"read-only\") {\n\t\treturn roots;\n\t}\n\n\t// Add user-specified roots\n\tfor (const root of policy.writableRoots ?? []) {\n\t\troots.push({ root, readOnlySubpaths: [] });\n\t}\n\n\t// Add /tmp unless excluded\n\tif (!policy.excludeSlashTmp) {\n\t\troots.push({ root: \"/tmp\", readOnlySubpaths: [] });\n\t}\n\n\t// Add TMPDIR unless excluded\n\tif (!policy.excludeTmpdir && process.env.TMPDIR) {\n\t\tconst tmpdir = process.env.TMPDIR;\n\t\tif (tmpdir !== \"/tmp\") {\n\t\t\troots.push({ root: tmpdir, readOnlySubpaths: [] });\n\t\t}\n\t}\n\n\t// Add cwd with .git as read-only subpath if present\n\tconst gitDir = join(cwd, \".git\");\n\tconst readOnlySubpaths = existsSync(gitDir) ? [gitDir] : [];\n\troots.push({ root: cwd, readOnlySubpaths });\n\n\treturn roots;\n}\n\nfunction canonicalize(path: string): string {\n\t// On macOS, /var is a symlink to /private/var\n\ttry {\n\t\tconst { realpathSync } = require(\"node:fs\");\n\t\treturn realpathSync(path);\n\t} catch {\n\t\treturn path;\n\t}\n}\n\n// ─────────────────────────────────────────────────────────────\n// Seatbelt Implementation (macOS)\n// ─────────────────────────────────────────────────────────────\n\nfunction createSeatbeltArgs(\n\tcommand: string[],\n\tpolicy: NativeSandboxPolicy,\n\tcwd: string,\n): string[] {\n\tconst params: [string, string][] = [];\n\tlet fileWritePolicy = \"\";\n\n\tif (policy.mode === \"danger-full-access\") {\n\t\tfileWritePolicy = '(allow file-write* (regex #\"^/\"))';\n\t} else {\n\t\tconst writableRoots = getWritableRootsWithCwd(policy, cwd);\n\t\tconst policies: string[] = [];\n\n\t\tfor (let index = 0; index < writableRoots.length; index++) {\n\t\t\tconst wr = writableRoots[index]!;\n\t\t\tconst canonicalRoot = canonicalize(wr.root);\n\t\t\tconst rootParam = `WRITABLE_ROOT_${index}`;\n\t\t\tparams.push([rootParam, canonicalRoot]);\n\n\t\t\tif (wr.readOnlySubpaths.length === 0) {\n\t\t\t\tpolicies.push(`(subpath (param \"${rootParam}\"))`);\n\t\t\t} else {\n\t\t\t\tconst requireParts = [`(subpath (param \"${rootParam}\"))`];\n\t\t\t\tfor (\n\t\t\t\t\tlet subIndex = 0;\n\t\t\t\t\tsubIndex < wr.readOnlySubpaths.length;\n\t\t\t\t\tsubIndex++\n\t\t\t\t) {\n\t\t\t\t\tconst ro = wr.readOnlySubpaths[subIndex]!;\n\t\t\t\t\tconst canonicalRo = canonicalize(ro);\n\t\t\t\t\tconst roParam = `WRITABLE_ROOT_${index}_RO_${subIndex}`;\n\t\t\t\t\trequireParts.push(`(require-not (subpath (param \"${roParam}\")))`);\n\t\t\t\t\tparams.push([roParam, canonicalRo]);\n\t\t\t\t}\n\t\t\t\tpolicies.push(`(require-all ${requireParts.join(\" \")} )`);\n\t\t\t}\n\t\t}\n\n\t\tif (policies.length > 0) {\n\t\t\tfileWritePolicy = `(allow file-write*\\n${policies.join(\" \")}\\n)`;\n\t\t}\n\t}\n\n\t// Always allow file reads - the difference between modes is about WRITE permissions\n\tconst fileReadPolicy =\n\t\t\"; allow read-only file operations\\n(allow file-read*)\";\n\n\tconst networkPolicy = policy.networkAccess ? SEATBELT_NETWORK_POLICY : \"\";\n\n\t// Add Darwin cache dir if available\n\tconst darwinCacheDir = process.env.DARWIN_USER_CACHE_DIR;\n\tif (darwinCacheDir) {\n\t\tparams.push([\"DARWIN_USER_CACHE_DIR\", canonicalize(darwinCacheDir)]);\n\t}\n\n\tconst fullPolicy = `${SEATBELT_BASE_POLICY}\\n${fileReadPolicy}\\n${fileWritePolicy}\\n${networkPolicy}`;\n\n\tconst args = [\"-p\", fullPolicy];\n\n\t// Add parameter definitions\n\tfor (const [key, value] of params) {\n\t\targs.push(`-D${key}=${value}`);\n\t}\n\n\targs.push(\"--\");\n\targs.push(...command);\n\n\treturn args;\n}\n\n// ─────────────────────────────────────────────────────────────\n// Native Sandbox Class\n// ─────────────────────────────────────────────────────────────\n\nexport class NativeSandbox implements Sandbox {\n\tprivate policy: NativeSandboxPolicy;\n\tprivate cwd: string;\n\tprivate activeProcesses: Set<ChildProcess> = new Set();\n\n\tconstructor(policy: NativeSandboxPolicy, cwd: string) {\n\t\tthis.policy = policy;\n\t\tthis.cwd = cwd;\n\t}\n\n\tasync initialize(): Promise<void> {\n\t\t// Verify sandbox-exec is available on macOS\n\t\tif (platform() === \"darwin\" && !existsSync(SEATBELT_EXECUTABLE)) {\n\t\t\tthrow new Error(\n\t\t\t\t\"Seatbelt (sandbox-exec) not found at /usr/bin/sandbox-exec\",\n\t\t\t);\n\t\t}\n\n\t\t// On Linux, we would verify Landlock support here\n\t\tif (platform() === \"linux\") {\n\t\t\t// Check for Landlock support by reading /sys/kernel/security/lsm\n\t\t\ttry {\n\t\t\t\tconst lsm = readFileSync(\"/sys/kernel/security/lsm\", \"utf-8\");\n\t\t\t\tif (!lsm.includes(\"landlock\")) {\n\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t\"[native-sandbox] Landlock not available on this Linux system\",\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} catch {\n\t\t\t\tconsole.warn(\"[native-sandbox] Could not verify Landlock support\");\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Execute a command in the sandbox.\n\t * Implements the Sandbox interface.\n\t */\n\tasync exec(\n\t\tcommand: string,\n\t\tcwd?: string,\n\t\tenv?: Record<string, string>,\n\t): Promise<ExecResult> {\n\t\tconst workingDir = cwd ?? this.cwd;\n\t\tconst mergedEnv = {\n\t\t\t...resolveShellEnvironment(env, { workspaceDir: this.cwd }),\n\t\t\t[SANDBOX_ENV_VAR]: this.getSandboxType(),\n\t\t};\n\n\t\t// For the Sandbox interface, command is a full shell command string\n\t\t// We need to wrap it in a shell\n\t\tconst shellCommand = [\"sh\", \"-c\", command];\n\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tlet child: ChildProcess;\n\n\t\t\tif (platform() === \"darwin\") {\n\t\t\t\tconst seatbeltArgs = createSeatbeltArgs(\n\t\t\t\t\tshellCommand,\n\t\t\t\t\tthis.policy,\n\t\t\t\t\tworkingDir,\n\t\t\t\t);\n\t\t\t\tchild = spawn(SEATBELT_EXECUTABLE, seatbeltArgs, {\n\t\t\t\t\tcwd: workingDir,\n\t\t\t\t\tenv: mergedEnv,\n\t\t\t\t});\n\t\t\t} else if (platform() === \"linux\") {\n\t\t\t\t// On Linux, spawn directly (Landlock would need kernel support or helper binary)\n\t\t\t\tconsole.warn(\n\t\t\t\t\t\"[native-sandbox] Linux native sandbox requires Landlock helper binary\",\n\t\t\t\t);\n\t\t\t\tchild = spawn(\"sh\", [\"-c\", command], {\n\t\t\t\t\tcwd: workingDir,\n\t\t\t\t\tenv: mergedEnv,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\t// Unsupported platform\n\t\t\t\tconsole.warn(\n\t\t\t\t\t`[native-sandbox] Platform ${platform()} not supported, running unsandboxed`,\n\t\t\t\t);\n\t\t\t\tchild = spawn(\"sh\", [\"-c\", command], {\n\t\t\t\t\tcwd: workingDir,\n\t\t\t\t\tenv: mergedEnv,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tthis.activeProcesses.add(child);\n\n\t\t\tlet stdout = \"\";\n\t\t\tlet stderr = \"\";\n\n\t\t\tchild.stdout?.on(\"data\", (data: Buffer) => {\n\t\t\t\tstdout += data.toString();\n\t\t\t});\n\n\t\t\tchild.stderr?.on(\"data\", (data: Buffer) => {\n\t\t\t\tstderr += data.toString();\n\t\t\t});\n\n\t\t\tchild.on(\"close\", (code) => {\n\t\t\t\tthis.activeProcesses.delete(child);\n\t\t\t\tresolve({\n\t\t\t\t\tstdout,\n\t\t\t\t\tstderr,\n\t\t\t\t\texitCode: code ?? 0,\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tchild.on(\"error\", (error) => {\n\t\t\t\tthis.activeProcesses.delete(child);\n\t\t\t\treject(error);\n\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * Execute a command with explicit args (internal use).\n\t */\n\tasync execWithArgs(\n\t\tcommand: string,\n\t\targs: string[] = [],\n\t\toptions: SpawnOptions = {},\n\t): Promise<ExecResult> {\n\t\tconst fullCommand = [command, ...args];\n\t\tconst mergedOptions: SpawnOptions = {\n\t\t\tcwd: this.cwd,\n\t\t\t...options,\n\t\t\tenv: {\n\t\t\t\t...resolveShellEnvironment(options.env, {\n\t\t\t\t\tworkspaceDir: this.cwd,\n\t\t\t\t}),\n\t\t\t\t[SANDBOX_ENV_VAR]: this.getSandboxType(),\n\t\t\t},\n\t\t};\n\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tlet child: ChildProcess;\n\n\t\t\tif (platform() === \"darwin\") {\n\t\t\t\tconst seatbeltArgs = createSeatbeltArgs(\n\t\t\t\t\tfullCommand,\n\t\t\t\t\tthis.policy,\n\t\t\t\t\tthis.cwd,\n\t\t\t\t);\n\t\t\t\tchild = spawn(SEATBELT_EXECUTABLE, seatbeltArgs, mergedOptions);\n\t\t\t} else if (platform() === \"linux\") {\n\t\t\t\tconsole.warn(\n\t\t\t\t\t\"[native-sandbox] Linux native sandbox requires Landlock helper binary\",\n\t\t\t\t);\n\t\t\t\tchild = spawn(command, args, mergedOptions);\n\t\t\t} else {\n\t\t\t\tconsole.warn(\n\t\t\t\t\t`[native-sandbox] Platform ${platform()} not supported, running unsandboxed`,\n\t\t\t\t);\n\t\t\t\tchild = spawn(command, args, mergedOptions);\n\t\t\t}\n\n\t\t\tthis.activeProcesses.add(child);\n\n\t\t\tlet stdout = \"\";\n\t\t\tlet stderr = \"\";\n\n\t\t\tchild.stdout?.on(\"data\", (data: Buffer) => {\n\t\t\t\tstdout += data.toString();\n\t\t\t});\n\n\t\t\tchild.stderr?.on(\"data\", (data: Buffer) => {\n\t\t\t\tstderr += data.toString();\n\t\t\t});\n\n\t\t\tchild.on(\"close\", (code) => {\n\t\t\t\tthis.activeProcesses.delete(child);\n\t\t\t\tresolve({\n\t\t\t\t\tstdout,\n\t\t\t\t\tstderr,\n\t\t\t\t\texitCode: code ?? 0,\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tchild.on(\"error\", (error) => {\n\t\t\t\tthis.activeProcesses.delete(child);\n\t\t\t\treject(error);\n\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * Read a file from the sandbox.\n\t */\n\tasync readFile(path: string): Promise<string> {\n\t\tconst fullPath = this.resolvePath(path);\n\t\treturn readFileSync(fullPath, \"utf-8\");\n\t}\n\n\t/**\n\t * Write a file to the sandbox.\n\t */\n\tasync writeFile(path: string, content: string): Promise<void> {\n\t\tif (this.policy.mode === \"read-only\") {\n\t\t\tthrow new Error(\"Cannot write files in read-only sandbox mode\");\n\t\t}\n\n\t\tconst fullPath = this.resolvePath(path);\n\n\t\t// Ensure parent directory exists\n\t\tconst dir = dirname(fullPath);\n\t\tif (!existsSync(dir)) {\n\t\t\tmkdirSync(dir, { recursive: true });\n\t\t}\n\n\t\twriteFileSync(fullPath, content, \"utf-8\");\n\t}\n\n\t/**\n\t * Check if a file exists.\n\t */\n\tasync exists(path: string): Promise<boolean> {\n\t\tconst fullPath = this.resolvePath(path);\n\t\treturn existsSync(fullPath);\n\t}\n\n\t/**\n\t * List files in a directory.\n\t */\n\tasync list(path: string): Promise<string[]> {\n\t\tconst fullPath = this.resolvePath(path);\n\t\treturn readdirSync(fullPath);\n\t}\n\n\t/**\n\t * Delete a file or directory.\n\t */\n\tasync delete(path: string, recursive?: boolean): Promise<void> {\n\t\tif (this.policy.mode === \"read-only\") {\n\t\t\tthrow new Error(\"Cannot delete files in read-only sandbox mode\");\n\t\t}\n\n\t\tconst fullPath = this.resolvePath(path);\n\t\trmSync(fullPath, { recursive: recursive ?? false, force: true });\n\t}\n\n\tasync dispose(): Promise<void> {\n\t\t// Kill any active processes\n\t\tfor (const proc of this.activeProcesses) {\n\t\t\tproc.kill(\"SIGTERM\");\n\t\t}\n\t\tthis.activeProcesses.clear();\n\t}\n\n\tprivate resolvePath(path: string): string {\n\t\t// If absolute, use as-is; otherwise resolve relative to cwd\n\t\tif (isAbsolute(path)) {\n\t\t\treturn path;\n\t\t}\n\t\treturn join(this.cwd, path);\n\t}\n\n\tprivate getSandboxType(): string {\n\t\tif (platform() === \"darwin\") return \"seatbelt\";\n\t\tif (platform() === \"linux\") return \"landlock\";\n\t\treturn \"none\";\n\t}\n}\n\n// ─────────────────────────────────────────────────────────────\n// Factory Functions\n// ─────────────────────────────────────────────────────────────\n\n/**\n * Check if native sandboxing is available on this platform.\n */\nexport function isNativeSandboxAvailable(): boolean {\n\tif (platform() === \"darwin\") {\n\t\treturn existsSync(SEATBELT_EXECUTABLE);\n\t}\n\tif (platform() === \"linux\") {\n\t\ttry {\n\t\t\tconst { readFileSync } = require(\"node:fs\");\n\t\t\tconst lsm = readFileSync(\"/sys/kernel/security/lsm\", \"utf-8\");\n\t\t\treturn lsm.includes(\"landlock\");\n\t\t} catch {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn false;\n}\n\n/**\n * Get the native sandbox type for the current platform.\n */\nexport function getNativeSandboxType(): \"seatbelt\" | \"landlock\" | \"none\" {\n\tif (platform() === \"darwin\") return \"seatbelt\";\n\tif (platform() === \"linux\") return \"landlock\";\n\treturn \"none\";\n}\n\n/**\n * Create a native sandbox instance.\n */\nexport function createNativeSandbox(\n\tpolicy: NativeSandboxPolicy,\n\tcwd: string,\n): NativeSandbox {\n\treturn new NativeSandbox(policy, cwd);\n}\n"]}
1
+ {"version":3,"file":"native-sandbox.js","sourceRoot":"","sources":["../../src/sandbox/native-sandbox.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Native Sandboxing for Command Execution\n *\n * Provides OS-native sandboxing using:\n * - macOS: Seatbelt (sandbox-exec) with SBPL policies\n * - Linux: Landlock LSM + seccomp (via external helper or kernel APIs)\n *\n * This is a TypeScript implementation that spawns sandboxed processes.\n */\n\nimport {\n\ttype ChildProcess,\n\ttype SpawnOptions,\n\texec,\n\tspawn,\n} from \"node:child_process\";\nimport {\n\texistsSync,\n\tlstatSync,\n\tmkdirSync,\n\treadFileSync,\n\treaddirSync,\n\treadlinkSync,\n\trealpathSync,\n\trmSync,\n\twriteFileSync,\n} from \"node:fs\";\nimport { platform } from \"node:os\";\nimport { basename, dirname, isAbsolute, join, resolve } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport { promisify } from \"node:util\";\nimport { isPathWithin } from \"../utils/path-containment.js\";\nimport { resolveShellEnvironment } from \"../utils/shell-env.js\";\nimport type { ExecResult, Sandbox } from \"./types.js\";\n\nconst _execAsync = promisify(exec);\n\n// ─────────────────────────────────────────────────────────────\n// Sandbox Policy Types\n// ─────────────────────────────────────────────────────────────\n\nexport type NativeSandboxMode =\n\t| \"read-only\"\n\t| \"workspace-write\"\n\t| \"danger-full-access\";\n\nexport interface NativeSandboxPolicy {\n\tmode: NativeSandboxMode;\n\t/** Additional writable directories */\n\twritableRoots?: string[];\n\t/** Allow network access */\n\tnetworkAccess?: boolean;\n\t/** Exclude TMPDIR from writable roots */\n\texcludeTmpdir?: boolean;\n\t/** Exclude /tmp from writable roots */\n\texcludeSlashTmp?: boolean;\n}\n\nexport interface WritableRoot {\n\troot: string;\n\treadOnlySubpaths: string[];\n}\n\n// ─────────────────────────────────────────────────────────────\n// Seatbelt Policy (macOS)\n// ─────────────────────────────────────────────────────────────\n\nconst SEATBELT_BASE_POLICY = `(version 1)\n\n; start with closed-by-default\n(deny default)\n\n; child processes inherit the policy of their parent\n(allow process-exec)\n(allow process-fork)\n(allow signal (target same-sandbox))\n\n; Allow cf prefs to work.\n(allow user-preference-read)\n\n; process-info\n(allow process-info* (target same-sandbox))\n\n(allow file-write-data\n (require-all\n (path \"/dev/null\")\n (vnode-type CHARACTER-DEVICE)))\n\n; sysctls permitted.\n(allow sysctl-read\n (sysctl-name \"hw.activecpu\")\n (sysctl-name \"hw.busfrequency_compat\")\n (sysctl-name \"hw.byteorder\")\n (sysctl-name \"hw.cacheconfig\")\n (sysctl-name \"hw.cachelinesize_compat\")\n (sysctl-name \"hw.cpufamily\")\n (sysctl-name \"hw.cpufrequency_compat\")\n (sysctl-name \"hw.cputype\")\n (sysctl-name \"hw.l1dcachesize_compat\")\n (sysctl-name \"hw.l1icachesize_compat\")\n (sysctl-name \"hw.l2cachesize_compat\")\n (sysctl-name \"hw.l3cachesize_compat\")\n (sysctl-name \"hw.logicalcpu_max\")\n (sysctl-name \"hw.machine\")\n (sysctl-name \"hw.memsize\")\n (sysctl-name \"hw.ncpu\")\n (sysctl-name \"hw.nperflevels\")\n (sysctl-name-prefix \"hw.optional.arm.\")\n (sysctl-name-prefix \"hw.optional.armv8_\")\n (sysctl-name \"hw.packages\")\n (sysctl-name \"hw.pagesize_compat\")\n (sysctl-name \"hw.pagesize\")\n (sysctl-name \"hw.physicalcpu\")\n (sysctl-name \"hw.physicalcpu_max\")\n (sysctl-name \"hw.tbfrequency_compat\")\n (sysctl-name \"hw.vectorunit\")\n (sysctl-name \"kern.argmax\")\n (sysctl-name \"kern.hostname\")\n (sysctl-name \"kern.maxfilesperproc\")\n (sysctl-name \"kern.maxproc\")\n (sysctl-name \"kern.osproductversion\")\n (sysctl-name \"kern.osrelease\")\n (sysctl-name \"kern.ostype\")\n (sysctl-name \"kern.osvariant_status\")\n (sysctl-name \"kern.osversion\")\n (sysctl-name \"kern.secure_kernel\")\n (sysctl-name \"kern.usrstack64\")\n (sysctl-name \"kern.version\")\n (sysctl-name \"sysctl.proc_cputype\")\n (sysctl-name \"vm.loadavg\")\n (sysctl-name-prefix \"hw.perflevel\")\n (sysctl-name-prefix \"kern.proc.pgrp.\")\n (sysctl-name-prefix \"kern.proc.pid.\")\n (sysctl-name-prefix \"net.routetable.\")\n)\n\n; Allow Java to read some CPU info.\n(allow sysctl-write\n (sysctl-name \"kern.grade_cputype\"))\n\n; IOKit\n(allow iokit-open\n (iokit-registry-entry-class \"RootDomainUserClient\")\n)\n\n; needed to look up user info\n(allow mach-lookup\n (global-name \"com.apple.system.opendirectoryd.libinfo\")\n)\n\n; Needed for python multiprocessing on MacOS for the SemLock\n(allow ipc-posix-sem)\n\n(allow mach-lookup\n (global-name \"com.apple.PowerManagement.control\")\n)\n\n; allow openpty()\n(allow pseudo-tty)\n(allow file-read* file-write* file-ioctl (literal \"/dev/ptmx\"))\n(allow file-read* file-write*\n (require-all\n (regex #\"^/dev/ttys[0-9]+\")\n (extension \"com.apple.sandbox.pty\")))\n(allow file-ioctl (regex #\"^/dev/ttys[0-9]+\"))\n`;\n\nconst SEATBELT_NETWORK_POLICY = `\n; Network access policies\n(allow network-outbound)\n(allow network-inbound)\n(allow system-socket)\n\n(allow mach-lookup\n (global-name \"com.apple.bsd.dirhelper\")\n (global-name \"com.apple.system.opendirectoryd.membership\")\n (global-name \"com.apple.SecurityServer\")\n (global-name \"com.apple.networkd\")\n (global-name \"com.apple.ocspd\")\n (global-name \"com.apple.trustd.agent\")\n (global-name \"com.apple.SystemConfiguration.DNSConfiguration\")\n (global-name \"com.apple.SystemConfiguration.configd\")\n)\n\n(allow sysctl-read\n (sysctl-name-regex #\"^net.routetable\")\n)\n\n(allow file-write*\n (subpath (param \"DARWIN_USER_CACHE_DIR\"))\n)\n`;\n\nconst SEATBELT_EXECUTABLE = \"/usr/bin/sandbox-exec\";\nconst SANDBOX_ENV_VAR = \"MAESTRO_SANDBOX\";\n\n// ─────────────────────────────────────────────────────────────\n// Helper Functions\n// ─────────────────────────────────────────────────────────────\n\nfunction getGitReadOnlySubpaths(cwd: string): string[] {\n\tconst gitPath = join(cwd, \".git\");\n\tif (!existsSync(gitPath)) {\n\t\treturn [];\n\t}\n\n\tconst readOnlySubpaths = [gitPath];\n\ttry {\n\t\tconst gitFile = readFileSync(gitPath, \"utf-8\");\n\t\tconst match = gitFile.match(/^gitdir:\\s*(.+?)\\s*$/m);\n\t\tconst gitDir = match?.[1];\n\t\tif (gitDir) {\n\t\t\treadOnlySubpaths.push(\n\t\t\t\tisAbsolute(gitDir) ? resolve(gitDir) : resolve(cwd, gitDir),\n\t\t\t);\n\t\t}\n\t} catch {\n\t\t// .git is usually a directory; only worktree gitfiles need parsing.\n\t}\n\n\treturn readOnlySubpaths;\n}\n\nfunction getWritableRootsWithCwd(\n\tpolicy: NativeSandboxPolicy,\n\tcwd: string,\n): WritableRoot[] {\n\tconst roots: WritableRoot[] = [];\n\n\tif (policy.mode === \"danger-full-access\") {\n\t\treturn roots;\n\t}\n\n\tif (policy.mode === \"read-only\") {\n\t\treturn roots;\n\t}\n\n\t// Add user-specified roots\n\tfor (const root of policy.writableRoots ?? []) {\n\t\troots.push({ root, readOnlySubpaths: [] });\n\t}\n\n\t// Add /tmp unless excluded\n\tif (!policy.excludeSlashTmp) {\n\t\troots.push({ root: \"/tmp\", readOnlySubpaths: [] });\n\t}\n\n\t// Add TMPDIR unless excluded\n\tif (!policy.excludeTmpdir && process.env.TMPDIR) {\n\t\tconst tmpdir = process.env.TMPDIR;\n\t\tif (tmpdir !== \"/tmp\") {\n\t\t\troots.push({ root: tmpdir, readOnlySubpaths: [] });\n\t\t}\n\t}\n\n\t// Add cwd with .git as read-only subpath if present\n\troots.push({ root: cwd, readOnlySubpaths: [] });\n\n\tconst readOnlySubpaths = getGitReadOnlySubpaths(cwd);\n\tif (readOnlySubpaths.length === 0) {\n\t\treturn roots;\n\t}\n\n\treturn roots.map((root) => ({\n\t\t...root,\n\t\treadOnlySubpaths: readOnlySubpaths.filter((readOnlySubpath) =>\n\t\t\tisPathWithin(\n\t\t\t\tcanonicalizeForAccess(readOnlySubpath),\n\t\t\t\tcanonicalizeForAccess(root.root),\n\t\t\t),\n\t\t),\n\t}));\n}\n\nfunction canonicalize(path: string): string {\n\t// On macOS, /var is a symlink to /private/var\n\ttry {\n\t\treturn realpathSync(path);\n\t} catch {\n\t\treturn path;\n\t}\n}\n\nfunction canonicalizeForAccess(path: string, seen = new Set<string>()): string {\n\tconst resolvedPath = resolve(path);\n\tconst missingSegments: string[] = [];\n\tlet existingParent = resolvedPath;\n\n\twhile (true) {\n\t\ttry {\n\t\t\tconst stat = lstatSync(existingParent);\n\t\t\tif (stat.isSymbolicLink()) {\n\t\t\t\tif (seen.has(existingParent)) {\n\t\t\t\t\treturn resolve(existingParent, ...missingSegments);\n\t\t\t\t}\n\t\t\t\tseen.add(existingParent);\n\t\t\t\tconst target = readlinkSync(existingParent);\n\t\t\t\tconst resolvedTarget = isAbsolute(target)\n\t\t\t\t\t? target\n\t\t\t\t\t: resolve(dirname(existingParent), target);\n\t\t\t\treturn resolve(\n\t\t\t\t\tcanonicalizeForAccess(resolvedTarget, seen),\n\t\t\t\t\t...missingSegments,\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn resolve(canonicalize(existingParent), ...missingSegments);\n\t\t} catch {\n\t\t\t// Keep walking upward. Unlike existsSync, lstatSync sees dangling\n\t\t\t// symlinks, so writes through them are checked against their targets.\n\t\t}\n\n\t\tconst parent = dirname(existingParent);\n\t\tif (parent === existingParent) {\n\t\t\treturn resolvedPath;\n\t\t}\n\t\tmissingSegments.unshift(basename(existingParent));\n\t\texistingParent = parent;\n\t}\n}\n\nfunction canonicalizeDirectoryEntryForAccess(path: string): string {\n\tconst resolvedPath = resolve(path);\n\treturn resolve(\n\t\tcanonicalizeForAccess(dirname(resolvedPath)),\n\t\tbasename(resolvedPath),\n\t);\n}\n\nfunction isSymbolicLinkPath(path: string): boolean {\n\ttry {\n\t\treturn lstatSync(path).isSymbolicLink();\n\t} catch {\n\t\treturn false;\n\t}\n}\n\n// ─────────────────────────────────────────────────────────────\n// Seatbelt Implementation (macOS)\n// ─────────────────────────────────────────────────────────────\n\nfunction createSeatbeltArgs(\n\tcommand: string[],\n\tpolicy: NativeSandboxPolicy,\n\tcwd: string,\n): string[] {\n\tconst params: [string, string][] = [];\n\tlet fileWritePolicy = \"\";\n\n\tif (policy.mode === \"danger-full-access\") {\n\t\tfileWritePolicy = '(allow file-write* (regex #\"^/\"))';\n\t} else {\n\t\tconst writableRoots = getWritableRootsWithCwd(policy, cwd);\n\t\tconst policies: string[] = [];\n\n\t\tfor (let index = 0; index < writableRoots.length; index++) {\n\t\t\tconst wr = writableRoots[index]!;\n\t\t\tconst canonicalRoot = canonicalize(wr.root);\n\t\t\tconst rootParam = `WRITABLE_ROOT_${index}`;\n\t\t\tparams.push([rootParam, canonicalRoot]);\n\n\t\t\tif (wr.readOnlySubpaths.length === 0) {\n\t\t\t\tpolicies.push(`(subpath (param \"${rootParam}\"))`);\n\t\t\t} else {\n\t\t\t\tconst requireParts = [`(subpath (param \"${rootParam}\"))`];\n\t\t\t\tfor (\n\t\t\t\t\tlet subIndex = 0;\n\t\t\t\t\tsubIndex < wr.readOnlySubpaths.length;\n\t\t\t\t\tsubIndex++\n\t\t\t\t) {\n\t\t\t\t\tconst ro = wr.readOnlySubpaths[subIndex]!;\n\t\t\t\t\tconst canonicalRo = canonicalize(ro);\n\t\t\t\t\tconst roParam = `WRITABLE_ROOT_${index}_RO_${subIndex}`;\n\t\t\t\t\trequireParts.push(`(require-not (subpath (param \"${roParam}\")))`);\n\t\t\t\t\tparams.push([roParam, canonicalRo]);\n\t\t\t\t}\n\t\t\t\tpolicies.push(`(require-all ${requireParts.join(\" \")} )`);\n\t\t\t}\n\t\t}\n\n\t\tif (policies.length > 0) {\n\t\t\tfileWritePolicy = `(allow file-write*\\n${policies.join(\" \")}\\n)`;\n\t\t}\n\t}\n\n\t// Always allow file reads - the difference between modes is about WRITE permissions\n\tconst fileReadPolicy =\n\t\t\"; allow read-only file operations\\n(allow file-read*)\";\n\n\tconst networkPolicy = policy.networkAccess ? SEATBELT_NETWORK_POLICY : \"\";\n\n\t// Add Darwin cache dir if available\n\tconst darwinCacheDir = process.env.DARWIN_USER_CACHE_DIR;\n\tif (darwinCacheDir) {\n\t\tparams.push([\"DARWIN_USER_CACHE_DIR\", canonicalize(darwinCacheDir)]);\n\t}\n\n\tconst fullPolicy = `${SEATBELT_BASE_POLICY}\\n${fileReadPolicy}\\n${fileWritePolicy}\\n${networkPolicy}`;\n\n\tconst args = [\"-p\", fullPolicy];\n\n\t// Add parameter definitions\n\tfor (const [key, value] of params) {\n\t\targs.push(`-D${key}=${value}`);\n\t}\n\n\targs.push(\"--\");\n\targs.push(...command);\n\n\treturn args;\n}\n\n// ─────────────────────────────────────────────────────────────\n// Native Sandbox Class\n// ─────────────────────────────────────────────────────────────\n\nexport class NativeSandbox implements Sandbox {\n\tprivate policy: NativeSandboxPolicy;\n\tprivate cwd: string;\n\tprivate activeProcesses: Set<ChildProcess> = new Set();\n\n\tconstructor(policy: NativeSandboxPolicy, cwd: string) {\n\t\tthis.policy = policy;\n\t\tthis.cwd = cwd;\n\t}\n\n\tasync initialize(): Promise<void> {\n\t\t// Verify sandbox-exec is available on macOS\n\t\tif (platform() === \"darwin\" && !existsSync(SEATBELT_EXECUTABLE)) {\n\t\t\tthrow new Error(\n\t\t\t\t\"Seatbelt (sandbox-exec) not found at /usr/bin/sandbox-exec\",\n\t\t\t);\n\t\t}\n\n\t\t// On Linux, we would verify Landlock support here\n\t\tif (platform() === \"linux\") {\n\t\t\t// Check for Landlock support by reading /sys/kernel/security/lsm\n\t\t\ttry {\n\t\t\t\tconst lsm = readFileSync(\"/sys/kernel/security/lsm\", \"utf-8\");\n\t\t\t\tif (!lsm.includes(\"landlock\")) {\n\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t\"[native-sandbox] Landlock not available on this Linux system\",\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} catch {\n\t\t\t\tconsole.warn(\"[native-sandbox] Could not verify Landlock support\");\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Execute a command in the sandbox.\n\t * Implements the Sandbox interface.\n\t */\n\tasync exec(\n\t\tcommand: string,\n\t\tcwd?: string,\n\t\tenv?: Record<string, string>,\n\t): Promise<ExecResult> {\n\t\tconst workingDir = this.resolveWorkingDir(cwd);\n\t\tthis.assertExecutionCwd(workingDir);\n\t\tconst mergedEnv = {\n\t\t\t...resolveShellEnvironment(env, { workspaceDir: this.cwd }),\n\t\t\t[SANDBOX_ENV_VAR]: this.getSandboxType(),\n\t\t};\n\n\t\t// For the Sandbox interface, command is a full shell command string\n\t\t// We need to wrap it in a shell\n\t\tconst shellCommand = [\"sh\", \"-c\", command];\n\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tlet child: ChildProcess;\n\n\t\t\tif (platform() === \"darwin\") {\n\t\t\t\tconst seatbeltArgs = createSeatbeltArgs(\n\t\t\t\t\tshellCommand,\n\t\t\t\t\tthis.policy,\n\t\t\t\t\tthis.cwd,\n\t\t\t\t);\n\t\t\t\tchild = spawn(SEATBELT_EXECUTABLE, seatbeltArgs, {\n\t\t\t\t\tcwd: workingDir,\n\t\t\t\t\tenv: mergedEnv,\n\t\t\t\t});\n\t\t\t} else if (platform() === \"linux\") {\n\t\t\t\t// On Linux, spawn directly (Landlock would need kernel support or helper binary)\n\t\t\t\tconsole.warn(\n\t\t\t\t\t\"[native-sandbox] Linux native sandbox requires Landlock helper binary\",\n\t\t\t\t);\n\t\t\t\tchild = spawn(\"sh\", [\"-c\", command], {\n\t\t\t\t\tcwd: workingDir,\n\t\t\t\t\tenv: mergedEnv,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\t// Unsupported platform\n\t\t\t\tconsole.warn(\n\t\t\t\t\t`[native-sandbox] Platform ${platform()} not supported, running unsandboxed`,\n\t\t\t\t);\n\t\t\t\tchild = spawn(\"sh\", [\"-c\", command], {\n\t\t\t\t\tcwd: workingDir,\n\t\t\t\t\tenv: mergedEnv,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tthis.activeProcesses.add(child);\n\n\t\t\tlet stdout = \"\";\n\t\t\tlet stderr = \"\";\n\n\t\t\tchild.stdout?.on(\"data\", (data: Buffer) => {\n\t\t\t\tstdout += data.toString();\n\t\t\t});\n\n\t\t\tchild.stderr?.on(\"data\", (data: Buffer) => {\n\t\t\t\tstderr += data.toString();\n\t\t\t});\n\n\t\t\tchild.on(\"close\", (code) => {\n\t\t\t\tthis.activeProcesses.delete(child);\n\t\t\t\tresolve({\n\t\t\t\t\tstdout,\n\t\t\t\t\tstderr,\n\t\t\t\t\texitCode: code ?? 0,\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tchild.on(\"error\", (error) => {\n\t\t\t\tthis.activeProcesses.delete(child);\n\t\t\t\treject(error);\n\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * Execute a command with explicit args (internal use).\n\t */\n\tasync execWithArgs(\n\t\tcommand: string,\n\t\targs: string[] = [],\n\t\toptions: SpawnOptions = {},\n\t): Promise<ExecResult> {\n\t\tconst fullCommand = [command, ...args];\n\t\tconst workingDir = this.resolveWorkingDir(options.cwd);\n\t\tthis.assertExecutionCwd(workingDir);\n\t\tconst mergedOptions: SpawnOptions = {\n\t\t\t...options,\n\t\t\tcwd: workingDir,\n\t\t\tenv: {\n\t\t\t\t...resolveShellEnvironment(options.env, {\n\t\t\t\t\tworkspaceDir: this.cwd,\n\t\t\t\t}),\n\t\t\t\t[SANDBOX_ENV_VAR]: this.getSandboxType(),\n\t\t\t},\n\t\t};\n\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tlet child: ChildProcess;\n\n\t\t\tif (platform() === \"darwin\") {\n\t\t\t\tconst seatbeltArgs = createSeatbeltArgs(\n\t\t\t\t\tfullCommand,\n\t\t\t\t\tthis.policy,\n\t\t\t\t\tthis.cwd,\n\t\t\t\t);\n\t\t\t\tchild = spawn(SEATBELT_EXECUTABLE, seatbeltArgs, mergedOptions);\n\t\t\t} else if (platform() === \"linux\") {\n\t\t\t\tconsole.warn(\n\t\t\t\t\t\"[native-sandbox] Linux native sandbox requires Landlock helper binary\",\n\t\t\t\t);\n\t\t\t\tchild = spawn(command, args, mergedOptions);\n\t\t\t} else {\n\t\t\t\tconsole.warn(\n\t\t\t\t\t`[native-sandbox] Platform ${platform()} not supported, running unsandboxed`,\n\t\t\t\t);\n\t\t\t\tchild = spawn(command, args, mergedOptions);\n\t\t\t}\n\n\t\t\tthis.activeProcesses.add(child);\n\n\t\t\tlet stdout = \"\";\n\t\t\tlet stderr = \"\";\n\n\t\t\tchild.stdout?.on(\"data\", (data: Buffer) => {\n\t\t\t\tstdout += data.toString();\n\t\t\t});\n\n\t\t\tchild.stderr?.on(\"data\", (data: Buffer) => {\n\t\t\t\tstderr += data.toString();\n\t\t\t});\n\n\t\t\tchild.on(\"close\", (code) => {\n\t\t\t\tthis.activeProcesses.delete(child);\n\t\t\t\tresolve({\n\t\t\t\t\tstdout,\n\t\t\t\t\tstderr,\n\t\t\t\t\texitCode: code ?? 0,\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tchild.on(\"error\", (error) => {\n\t\t\t\tthis.activeProcesses.delete(child);\n\t\t\t\treject(error);\n\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * Read a file from the sandbox.\n\t */\n\tasync readFile(path: string): Promise<string> {\n\t\tconst fullPath = this.resolvePath(path);\n\t\treturn readFileSync(fullPath, \"utf-8\");\n\t}\n\n\t/**\n\t * Write a file to the sandbox.\n\t */\n\tasync writeFile(path: string, content: string): Promise<void> {\n\t\tif (this.policy.mode === \"read-only\") {\n\t\t\tthrow new Error(\"Cannot write files in read-only sandbox mode\");\n\t\t}\n\n\t\tconst fullPath = this.resolvePath(path);\n\t\tthis.assertWritablePath(fullPath);\n\n\t\t// Ensure parent directory exists\n\t\tconst dir = dirname(fullPath);\n\t\tif (!existsSync(dir)) {\n\t\t\tmkdirSync(dir, { recursive: true });\n\t\t}\n\n\t\twriteFileSync(fullPath, content, \"utf-8\");\n\t}\n\n\t/**\n\t * Check if a file exists.\n\t */\n\tasync exists(path: string): Promise<boolean> {\n\t\tconst fullPath = this.resolvePath(path);\n\t\treturn existsSync(fullPath);\n\t}\n\n\t/**\n\t * List files in a directory.\n\t */\n\tasync list(path: string): Promise<string[]> {\n\t\tconst fullPath = this.resolvePath(path);\n\t\treturn readdirSync(fullPath);\n\t}\n\n\t/**\n\t * Delete a file or directory.\n\t */\n\tasync delete(path: string, recursive?: boolean): Promise<void> {\n\t\tif (this.policy.mode === \"read-only\") {\n\t\t\tthrow new Error(\"Cannot delete files in read-only sandbox mode\");\n\t\t}\n\n\t\tconst fullPath = this.resolvePath(path);\n\t\tconst canonicalizeTarget = isSymbolicLinkPath(fullPath)\n\t\t\t? canonicalizeDirectoryEntryForAccess\n\t\t\t: canonicalizeForAccess;\n\t\tthis.assertWritablePath(fullPath, {\n\t\t\tblockReadOnlyDescendants: recursive ?? false,\n\t\t\tcanonicalizeTarget,\n\t\t});\n\t\trmSync(fullPath, { recursive: recursive ?? false, force: true });\n\t}\n\n\tasync dispose(): Promise<void> {\n\t\t// Kill any active processes\n\t\tfor (const proc of this.activeProcesses) {\n\t\t\tproc.kill(\"SIGTERM\");\n\t\t}\n\t\tthis.activeProcesses.clear();\n\t}\n\n\tprivate resolvePath(path: string): string {\n\t\t// If absolute, use as-is; otherwise resolve relative to cwd\n\t\tif (isAbsolute(path)) {\n\t\t\treturn path;\n\t\t}\n\t\treturn join(this.cwd, path);\n\t}\n\n\tprivate resolveWorkingDir(cwd?: string | URL): string {\n\t\tif (!cwd) {\n\t\t\treturn this.cwd;\n\t\t}\n\t\tconst cwdPath = typeof cwd === \"string\" ? cwd : fileURLToPath(cwd);\n\t\tif (isAbsolute(cwdPath)) {\n\t\t\treturn resolve(cwdPath);\n\t\t}\n\t\treturn resolve(this.cwd, cwdPath);\n\t}\n\n\tprivate assertExecutionCwd(workingDir: string): void {\n\t\tif (this.policy.mode !== \"workspace-write\") {\n\t\t\treturn;\n\t\t}\n\n\t\tconst targetPath = canonicalizeForAccess(workingDir);\n\t\tconst allowedRoots = getWritableRootsWithCwd(this.policy, this.cwd).map(\n\t\t\t(root) => canonicalizeForAccess(root.root),\n\t\t);\n\n\t\tif (!allowedRoots.some((root) => isPathWithin(targetPath, root))) {\n\t\t\tthrow new Error(\n\t\t\t\t`Cannot execute workspace-write command outside workspace or explicit writable roots: ${workingDir}`,\n\t\t\t);\n\t\t}\n\n\t\tthis.assertWritablePath(targetPath);\n\t}\n\n\tprivate assertWritablePath(\n\t\tpath: string,\n\t\toptions?: {\n\t\t\tblockReadOnlyDescendants?: boolean;\n\t\t\tcanonicalizeTarget?: (path: string) => string;\n\t\t},\n\t): void {\n\t\tif (this.policy.mode === \"danger-full-access\") {\n\t\t\treturn;\n\t\t}\n\n\t\tconst targetPath = (options?.canonicalizeTarget ?? canonicalizeForAccess)(\n\t\t\tpath,\n\t\t);\n\t\tconst writableRoots = getWritableRootsWithCwd(this.policy, this.cwd);\n\t\tlet hasMatchingWritableRoot = false;\n\t\tlet blockedByReadOnlySubpath = false;\n\n\t\tfor (const root of writableRoots) {\n\t\t\tconst rootPath = canonicalizeForAccess(root.root);\n\t\t\tif (!isPathWithin(targetPath, rootPath)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\thasMatchingWritableRoot = true;\n\t\t\tif (\n\t\t\t\troot.readOnlySubpaths.some((readOnlySubpath) => {\n\t\t\t\t\tconst readOnlyPath = canonicalizeForAccess(readOnlySubpath);\n\t\t\t\t\treturn (\n\t\t\t\t\t\tisPathWithin(targetPath, readOnlyPath) ||\n\t\t\t\t\t\t(options?.blockReadOnlyDescendants === true &&\n\t\t\t\t\t\t\tisPathWithin(readOnlyPath, targetPath))\n\t\t\t\t\t);\n\t\t\t\t})\n\t\t\t) {\n\t\t\t\tblockedByReadOnlySubpath = true;\n\t\t\t}\n\t\t}\n\n\t\tif (!hasMatchingWritableRoot || blockedByReadOnlySubpath) {\n\t\t\tthrow new Error(\n\t\t\t\t`Cannot write outside writable roots in ${this.policy.mode} sandbox mode: ${path}`,\n\t\t\t);\n\t\t}\n\t}\n\n\tprivate getSandboxType(): string {\n\t\tif (platform() === \"darwin\") return \"seatbelt\";\n\t\tif (platform() === \"linux\") return \"landlock\";\n\t\treturn \"none\";\n\t}\n}\n\n// ─────────────────────────────────────────────────────────────\n// Factory Functions\n// ─────────────────────────────────────────────────────────────\n\n/**\n * Check if native sandboxing is available on this platform.\n */\nexport function isNativeSandboxAvailable(): boolean {\n\tif (platform() === \"darwin\") {\n\t\treturn existsSync(SEATBELT_EXECUTABLE);\n\t}\n\tif (platform() === \"linux\") {\n\t\treturn false;\n\t}\n\treturn false;\n}\n\n/**\n * Get the native sandbox type for the current platform.\n */\nexport function getNativeSandboxType(): \"seatbelt\" | \"landlock\" | \"none\" {\n\tif (platform() === \"darwin\") return \"seatbelt\";\n\tif (platform() === \"linux\") return \"landlock\";\n\treturn \"none\";\n}\n\n/**\n * Create a native sandbox instance.\n */\nexport function createNativeSandbox(\n\tpolicy: NativeSandboxPolicy,\n\tcwd: string,\n): NativeSandbox {\n\treturn new NativeSandbox(policy, cwd);\n}\n"]}
@@ -0,0 +1,17 @@
1
+ interface SentryRuntimeConfig {
2
+ dsn: string;
3
+ environment: string;
4
+ release: string;
5
+ tracesSampleRate: number;
6
+ profilesSampleRate: number;
7
+ sendDefaultPii: boolean;
8
+ }
9
+ export declare function filterSentryIntegrations<T extends {
10
+ name?: string;
11
+ }>(integrations: T[]): T[];
12
+ export declare function sentryConfigFromEnv(): SentryRuntimeConfig | null;
13
+ export declare function initSentry(serviceName: string): boolean;
14
+ export declare function captureSentryException(error: unknown): void;
15
+ export declare function flushSentry(timeoutMs?: number): Promise<boolean>;
16
+ export {};
17
+ //# sourceMappingURL=sentry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sentry.d.ts","sourceRoot":"","sources":["../src/sentry.ts"],"names":[],"mappings":"AAGA,UAAU,mBAAmB;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,cAAc,EAAE,OAAO,CAAC;CACxB;AASD,wBAAgB,wBAAwB,CAAC,CAAC,SAAS;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,EACnE,YAAY,EAAE,CAAC,EAAE,GACf,CAAC,EAAE,CAIL;AAgCD,wBAAgB,mBAAmB,IAAI,mBAAmB,GAAG,IAAI,CA2BhE;AAED,wBAAgB,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CA4BvD;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAO3D;AAED,wBAAsB,WAAW,CAAC,SAAS,SAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAKpE"}
package/dist/sentry.js ADDED
@@ -0,0 +1,91 @@
1
+ import * as Sentry from "@sentry/node";
2
+ import { readPackageVersion } from "./package-version.js";
3
+ let initialized = false;
4
+ const globalCrashIntegrationNames = new Set([
5
+ "OnUncaughtException",
6
+ "OnUnhandledRejection",
7
+ ]);
8
+ export function filterSentryIntegrations(integrations) {
9
+ return integrations.filter((integration) => !globalCrashIntegrationNames.has(integration.name ?? ""));
10
+ }
11
+ function firstNonBlank(...values) {
12
+ for (const value of values) {
13
+ const trimmed = value?.trim();
14
+ if (trimmed) {
15
+ return trimmed;
16
+ }
17
+ }
18
+ return "";
19
+ }
20
+ function readSampleRate(key, fallback) {
21
+ const raw = process.env[key]?.trim();
22
+ if (!raw) {
23
+ return fallback;
24
+ }
25
+ const parsed = Number.parseFloat(raw);
26
+ if (!Number.isFinite(parsed) || parsed < 0 || parsed > 1) {
27
+ return fallback;
28
+ }
29
+ return parsed;
30
+ }
31
+ function readBooleanFlag(key, fallback) {
32
+ const raw = process.env[key]?.trim().toLowerCase();
33
+ if (!raw) {
34
+ return fallback;
35
+ }
36
+ return ["1", "true", "t", "yes", "y", "on"].includes(raw);
37
+ }
38
+ export function sentryConfigFromEnv() {
39
+ const dsn = process.env.SENTRY_DSN?.trim();
40
+ if (!dsn) {
41
+ return null;
42
+ }
43
+ const release = firstNonBlank(process.env.SENTRY_RELEASE, process.env.MAESTRO_RELEASE, process.env.MAESTRO_VERSION, `maestro@${readPackageVersion()}`);
44
+ return {
45
+ dsn,
46
+ environment: firstNonBlank(process.env.SENTRY_ENVIRONMENT, process.env.MAESTRO_ENVIRONMENT, process.env.MAESTRO_PROFILE, process.env.NODE_ENV, "development"),
47
+ release,
48
+ tracesSampleRate: readSampleRate("SENTRY_TRACES_SAMPLE_RATE", 0),
49
+ profilesSampleRate: readSampleRate("SENTRY_PROFILES_SAMPLE_RATE", 0),
50
+ sendDefaultPii: readBooleanFlag("SENTRY_SEND_DEFAULT_PII", false),
51
+ };
52
+ }
53
+ export function initSentry(serviceName) {
54
+ const config = sentryConfigFromEnv();
55
+ if (!config) {
56
+ return false;
57
+ }
58
+ if (!initialized) {
59
+ const options = {
60
+ dsn: config.dsn,
61
+ environment: config.environment,
62
+ release: config.release,
63
+ tracesSampleRate: config.tracesSampleRate,
64
+ profilesSampleRate: config.profilesSampleRate,
65
+ sendDefaultPii: config.sendDefaultPii,
66
+ skipOpenTelemetrySetup: true,
67
+ };
68
+ if (serviceName === "maestro-web-server") {
69
+ options.integrations = (integrations) => filterSentryIntegrations(integrations);
70
+ }
71
+ Sentry.init(options);
72
+ initialized = true;
73
+ }
74
+ Sentry.setTag("service.name", serviceName);
75
+ Sentry.setTag("service.namespace", "maestro");
76
+ Sentry.setTag("runtime", "node");
77
+ return true;
78
+ }
79
+ export function captureSentryException(error) {
80
+ if (!initialized) {
81
+ return;
82
+ }
83
+ Sentry.captureException(error instanceof Error ? error : new Error(String(error)));
84
+ }
85
+ export async function flushSentry(timeoutMs = 2000) {
86
+ if (!initialized) {
87
+ return true;
88
+ }
89
+ return Sentry.flush(timeoutMs);
90
+ }
91
+ //# sourceMappingURL=sentry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sentry.js","sourceRoot":"","sources":["../src/sentry.ts"],"names":[],"mappings":"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","sourcesContent":["import * as Sentry from \"@sentry/node\";\nimport { readPackageVersion } from \"./package-version.js\";\n\ninterface SentryRuntimeConfig {\n\tdsn: string;\n\tenvironment: string;\n\trelease: string;\n\ttracesSampleRate: number;\n\tprofilesSampleRate: number;\n\tsendDefaultPii: boolean;\n}\n\nlet initialized = false;\n\nconst globalCrashIntegrationNames = new Set([\n\t\"OnUncaughtException\",\n\t\"OnUnhandledRejection\",\n]);\n\nexport function filterSentryIntegrations<T extends { name?: string }>(\n\tintegrations: T[],\n): T[] {\n\treturn integrations.filter(\n\t\t(integration) => !globalCrashIntegrationNames.has(integration.name ?? \"\"),\n\t);\n}\n\nfunction firstNonBlank(...values: Array<string | undefined>): string {\n\tfor (const value of values) {\n\t\tconst trimmed = value?.trim();\n\t\tif (trimmed) {\n\t\t\treturn trimmed;\n\t\t}\n\t}\n\treturn \"\";\n}\n\nfunction readSampleRate(key: string, fallback: number): number {\n\tconst raw = process.env[key]?.trim();\n\tif (!raw) {\n\t\treturn fallback;\n\t}\n\tconst parsed = Number.parseFloat(raw);\n\tif (!Number.isFinite(parsed) || parsed < 0 || parsed > 1) {\n\t\treturn fallback;\n\t}\n\treturn parsed;\n}\n\nfunction readBooleanFlag(key: string, fallback: boolean): boolean {\n\tconst raw = process.env[key]?.trim().toLowerCase();\n\tif (!raw) {\n\t\treturn fallback;\n\t}\n\treturn [\"1\", \"true\", \"t\", \"yes\", \"y\", \"on\"].includes(raw);\n}\n\nexport function sentryConfigFromEnv(): SentryRuntimeConfig | null {\n\tconst dsn = process.env.SENTRY_DSN?.trim();\n\tif (!dsn) {\n\t\treturn null;\n\t}\n\n\tconst release = firstNonBlank(\n\t\tprocess.env.SENTRY_RELEASE,\n\t\tprocess.env.MAESTRO_RELEASE,\n\t\tprocess.env.MAESTRO_VERSION,\n\t\t`maestro@${readPackageVersion()}`,\n\t);\n\n\treturn {\n\t\tdsn,\n\t\tenvironment: firstNonBlank(\n\t\t\tprocess.env.SENTRY_ENVIRONMENT,\n\t\t\tprocess.env.MAESTRO_ENVIRONMENT,\n\t\t\tprocess.env.MAESTRO_PROFILE,\n\t\t\tprocess.env.NODE_ENV,\n\t\t\t\"development\",\n\t\t),\n\t\trelease,\n\t\ttracesSampleRate: readSampleRate(\"SENTRY_TRACES_SAMPLE_RATE\", 0),\n\t\tprofilesSampleRate: readSampleRate(\"SENTRY_PROFILES_SAMPLE_RATE\", 0),\n\t\tsendDefaultPii: readBooleanFlag(\"SENTRY_SEND_DEFAULT_PII\", false),\n\t};\n}\n\nexport function initSentry(serviceName: string): boolean {\n\tconst config = sentryConfigFromEnv();\n\tif (!config) {\n\t\treturn false;\n\t}\n\n\tif (!initialized) {\n\t\tconst options: Parameters<typeof Sentry.init>[0] = {\n\t\t\tdsn: config.dsn,\n\t\t\tenvironment: config.environment,\n\t\t\trelease: config.release,\n\t\t\ttracesSampleRate: config.tracesSampleRate,\n\t\t\tprofilesSampleRate: config.profilesSampleRate,\n\t\t\tsendDefaultPii: config.sendDefaultPii,\n\t\t\tskipOpenTelemetrySetup: true,\n\t\t};\n\t\tif (serviceName === \"maestro-web-server\") {\n\t\t\toptions.integrations = (integrations) =>\n\t\t\t\tfilterSentryIntegrations(integrations);\n\t\t}\n\t\tSentry.init(options);\n\t\tinitialized = true;\n\t}\n\n\tSentry.setTag(\"service.name\", serviceName);\n\tSentry.setTag(\"service.namespace\", \"maestro\");\n\tSentry.setTag(\"runtime\", \"node\");\n\treturn true;\n}\n\nexport function captureSentryException(error: unknown): void {\n\tif (!initialized) {\n\t\treturn;\n\t}\n\tSentry.captureException(\n\t\terror instanceof Error ? error : new Error(String(error)),\n\t);\n}\n\nexport async function flushSentry(timeoutMs = 2000): Promise<boolean> {\n\tif (!initialized) {\n\t\treturn true;\n\t}\n\treturn Sentry.flush(timeoutMs);\n}\n"]}