@mastra/code-sdk 1.0.3-alpha.0 → 1.1.0-alpha.2

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 (258) hide show
  1. package/CHANGELOG.md +49 -0
  2. package/dist/acp/agent.js +155 -167
  3. package/dist/acp/agent.js.map +1 -1
  4. package/dist/acp/event-mapper.js +193 -168
  5. package/dist/acp/event-mapper.js.map +1 -1
  6. package/dist/acp/index.js +60 -49
  7. package/dist/acp/index.js.map +1 -1
  8. package/dist/acp/server.js +31 -30
  9. package/dist/acp/server.js.map +1 -1
  10. package/dist/acp.js +1 -4
  11. package/dist/agents/credential-resolver.js +40 -29
  12. package/dist/agents/credential-resolver.js.map +1 -1
  13. package/dist/agents/custom-provider-source.js +16 -9
  14. package/dist/agents/custom-provider-source.js.map +1 -1
  15. package/dist/agents/instructions.js +27 -36
  16. package/dist/agents/instructions.js.map +1 -1
  17. package/dist/agents/mastracode-gateway.js +355 -428
  18. package/dist/agents/mastracode-gateway.js.map +1 -1
  19. package/dist/agents/memory.js +87 -78
  20. package/dist/agents/memory.js.map +1 -1
  21. package/dist/agents/model.js +114 -119
  22. package/dist/agents/model.js.map +1 -1
  23. package/dist/agents/modes/build.js +12 -13
  24. package/dist/agents/modes/build.js.map +1 -1
  25. package/dist/agents/modes/explore.js +14 -13
  26. package/dist/agents/modes/explore.js.map +1 -1
  27. package/dist/agents/modes/plan.js +14 -15
  28. package/dist/agents/modes/plan.js.map +1 -1
  29. package/dist/agents/prompts/agent-instructions.js +78 -69
  30. package/dist/agents/prompts/agent-instructions.js.map +1 -1
  31. package/dist/agents/prompts/build.js +19 -16
  32. package/dist/agents/prompts/build.js.map +1 -1
  33. package/dist/agents/prompts/fast.js +8 -4
  34. package/dist/agents/prompts/fast.js.map +1 -1
  35. package/dist/agents/prompts/index.js +48 -47
  36. package/dist/agents/prompts/index.js.map +1 -1
  37. package/dist/agents/prompts/model.js +6 -5
  38. package/dist/agents/prompts/model.js.map +1 -1
  39. package/dist/agents/prompts/plan.js +20 -16
  40. package/dist/agents/prompts/plan.js.map +1 -1
  41. package/dist/agents/prompts/tool-guidance.js +77 -109
  42. package/dist/agents/prompts/tool-guidance.js.map +1 -1
  43. package/dist/agents/sandbox-filesystem.js +245 -259
  44. package/dist/agents/sandbox-filesystem.js.map +1 -1
  45. package/dist/agents/sandbox-reattach.js +9 -11
  46. package/dist/agents/sandbox-reattach.js.map +1 -1
  47. package/dist/agents/thread-caveman-state.js +92 -81
  48. package/dist/agents/thread-caveman-state.js.map +1 -1
  49. package/dist/agents/tool-availability.js +62 -80
  50. package/dist/agents/tool-availability.js.map +1 -1
  51. package/dist/agents/tools.js +99 -139
  52. package/dist/agents/tools.js.map +1 -1
  53. package/dist/agents/workspace.js +232 -225
  54. package/dist/agents/workspace.js.map +1 -1
  55. package/dist/analytics.js +139 -128
  56. package/dist/analytics.js.map +1 -1
  57. package/dist/auth/authorization-input.js +39 -25
  58. package/dist/auth/authorization-input.js.map +1 -1
  59. package/dist/auth/device-code.js +112 -80
  60. package/dist/auth/device-code.js.map +1 -1
  61. package/dist/auth/index.js +2 -9
  62. package/dist/auth/pkce.js +27 -16
  63. package/dist/auth/pkce.js.map +1 -1
  64. package/dist/auth/providers/anthropic.js +107 -93
  65. package/dist/auth/providers/anthropic.js.map +1 -1
  66. package/dist/auth/providers/github-copilot.js +304 -293
  67. package/dist/auth/providers/github-copilot.js.map +1 -1
  68. package/dist/auth/providers/openai-codex.js +442 -460
  69. package/dist/auth/providers/openai-codex.js.map +1 -1
  70. package/dist/auth/providers/xai.js +179 -145
  71. package/dist/auth/providers/xai.js.map +1 -1
  72. package/dist/auth/storage.js +182 -175
  73. package/dist/auth/storage.js.map +1 -1
  74. package/dist/auth/types.js +1 -1
  75. package/dist/clipboard/index.js +206 -172
  76. package/dist/clipboard/index.js.map +1 -1
  77. package/dist/constants.js +11 -16
  78. package/dist/constants.js.map +1 -1
  79. package/dist/error-classification.js +19 -11
  80. package/dist/error-classification.js.map +1 -1
  81. package/dist/evals/context-builder.js +145 -104
  82. package/dist/evals/context-builder.js.map +1 -1
  83. package/dist/evals/index.js +4 -7
  84. package/dist/evals/scorers/classify-command.js +62 -41
  85. package/dist/evals/scorers/classify-command.js.map +1 -1
  86. package/dist/evals/scorers/efficiency.js +239 -181
  87. package/dist/evals/scorers/efficiency.js.map +1 -1
  88. package/dist/evals/scorers/extract-tools.js +51 -47
  89. package/dist/evals/scorers/extract-tools.js.map +1 -1
  90. package/dist/evals/scorers/index.js +1 -5
  91. package/dist/evals/scorers/outcome.js +321 -212
  92. package/dist/evals/scorers/outcome.js.map +1 -1
  93. package/dist/goal-manager.js +266 -261
  94. package/dist/goal-manager.js.map +1 -1
  95. package/dist/goal-signal.js +14 -13
  96. package/dist/goal-signal.js.map +1 -1
  97. package/dist/headless/cli.js +153 -154
  98. package/dist/headless/cli.js.map +1 -1
  99. package/dist/headless/flags.js +180 -178
  100. package/dist/headless/flags.js.map +1 -1
  101. package/dist/headless/format.js +72 -71
  102. package/dist/headless/format.js.map +1 -1
  103. package/dist/headless/index.js +5 -31
  104. package/dist/headless/policy.js +35 -31
  105. package/dist/headless/policy.js.map +1 -1
  106. package/dist/headless/run-mc.js +332 -334
  107. package/dist/headless/run-mc.js.map +1 -1
  108. package/dist/headless/types.js +16 -7
  109. package/dist/headless/types.js.map +1 -1
  110. package/dist/hooks/config.js +56 -61
  111. package/dist/hooks/config.js.map +1 -1
  112. package/dist/hooks/executor.js +118 -116
  113. package/dist/hooks/executor.js.map +1 -1
  114. package/dist/hooks/index.js +4 -15
  115. package/dist/hooks/manager.js +221 -280
  116. package/dist/hooks/manager.js.map +1 -1
  117. package/dist/hooks/types.js +5 -4
  118. package/dist/hooks/types.js.map +1 -1
  119. package/dist/index.d.ts.map +1 -1
  120. package/dist/index.js +632 -712
  121. package/dist/index.js.map +1 -1
  122. package/dist/ipc/ipc-reporter.js +19 -22
  123. package/dist/ipc/ipc-reporter.js.map +1 -1
  124. package/dist/lsp/client.js +248 -306
  125. package/dist/lsp/client.js.map +1 -1
  126. package/dist/lsp/index.js +1 -6
  127. package/dist/lsp/language.js +39 -43
  128. package/dist/lsp/language.js.map +1 -1
  129. package/dist/lsp/manager.js +78 -93
  130. package/dist/lsp/manager.js.map +1 -1
  131. package/dist/lsp/server.js +151 -120
  132. package/dist/lsp/server.js.map +1 -1
  133. package/dist/lsp/workspace.js +50 -47
  134. package/dist/lsp/workspace.js.map +1 -1
  135. package/dist/mcp/config.js +210 -199
  136. package/dist/mcp/config.js.map +1 -1
  137. package/dist/mcp/index.js +2 -9
  138. package/dist/mcp/manager.js +482 -475
  139. package/dist/mcp/manager.js.map +1 -1
  140. package/dist/mcp/types.js +1 -1
  141. package/dist/onboarding/custom-packs.js +14 -17
  142. package/dist/onboarding/custom-packs.js.map +1 -1
  143. package/dist/onboarding/custom-providers.js +22 -20
  144. package/dist/onboarding/custom-providers.js.map +1 -1
  145. package/dist/onboarding/index.d.ts +1 -1
  146. package/dist/onboarding/index.d.ts.map +1 -1
  147. package/dist/onboarding/index.js +3 -21
  148. package/dist/onboarding/om-settings.d.ts +5 -0
  149. package/dist/onboarding/om-settings.d.ts.map +1 -1
  150. package/dist/onboarding/om-settings.js +41 -20
  151. package/dist/onboarding/om-settings.js.map +1 -1
  152. package/dist/onboarding/packs.d.ts +4 -6
  153. package/dist/onboarding/packs.d.ts.map +1 -1
  154. package/dist/onboarding/packs.js +154 -105
  155. package/dist/onboarding/packs.js.map +1 -1
  156. package/dist/onboarding/settings.js +575 -517
  157. package/dist/onboarding/settings.js.map +1 -1
  158. package/dist/permissions.js +112 -99
  159. package/dist/permissions.js.map +1 -1
  160. package/dist/plugin.js +21 -23
  161. package/dist/plugin.js.map +1 -1
  162. package/dist/plugins/dependencies.js +64 -87
  163. package/dist/plugins/dependencies.js.map +1 -1
  164. package/dist/plugins/install.js +159 -169
  165. package/dist/plugins/install.js.map +1 -1
  166. package/dist/plugins/loader.js +170 -185
  167. package/dist/plugins/loader.js.map +1 -1
  168. package/dist/plugins/manager.js +374 -380
  169. package/dist/plugins/manager.js.map +1 -1
  170. package/dist/plugins/manifest.js +38 -63
  171. package/dist/plugins/manifest.js.map +1 -1
  172. package/dist/plugins/package-link.js +48 -64
  173. package/dist/plugins/package-link.js.map +1 -1
  174. package/dist/plugins/paths.js +18 -19
  175. package/dist/plugins/paths.js.map +1 -1
  176. package/dist/plugins/registry.js +97 -81
  177. package/dist/plugins/registry.js.map +1 -1
  178. package/dist/plugins/scaffold.js +62 -98
  179. package/dist/plugins/scaffold.js.map +1 -1
  180. package/dist/plugins/types.js +1 -1
  181. package/dist/processors/plan-rejection-abort.js +45 -44
  182. package/dist/processors/plan-rejection-abort.js.map +1 -1
  183. package/dist/providers/amazon-bedrock-gateway.js +134 -125
  184. package/dist/providers/amazon-bedrock-gateway.js.map +1 -1
  185. package/dist/providers/amazon-bedrock.js +68 -47
  186. package/dist/providers/amazon-bedrock.js.map +1 -1
  187. package/dist/providers/claude-max.js +153 -133
  188. package/dist/providers/claude-max.js.map +1 -1
  189. package/dist/providers/github-copilot.js +232 -230
  190. package/dist/providers/github-copilot.js.map +1 -1
  191. package/dist/providers/openai-codex.js +271 -260
  192. package/dist/providers/openai-codex.js.map +1 -1
  193. package/dist/providers/xai.js +57 -50
  194. package/dist/providers/xai.js.map +1 -1
  195. package/dist/schema.js +91 -89
  196. package/dist/schema.js.map +1 -1
  197. package/dist/theme-palette.js +18 -14
  198. package/dist/theme-palette.js.map +1 -1
  199. package/dist/tool-names.js +46 -37
  200. package/dist/tool-names.js.map +1 -1
  201. package/dist/tools/index.js +2 -8
  202. package/dist/tools/request-sandbox-access.js +71 -80
  203. package/dist/tools/request-sandbox-access.js.map +1 -1
  204. package/dist/tools/utils.js +26 -16
  205. package/dist/tools/utils.js.map +1 -1
  206. package/dist/tools/web-search.js +51 -55
  207. package/dist/tools/web-search.js.map +1 -1
  208. package/dist/utils/binaries.js +65 -61
  209. package/dist/utils/binaries.js.map +1 -1
  210. package/dist/utils/debug-log.js +51 -47
  211. package/dist/utils/debug-log.js.map +1 -1
  212. package/dist/utils/errors.js +157 -192
  213. package/dist/utils/errors.js.map +1 -1
  214. package/dist/utils/gateway-sync.js +49 -37
  215. package/dist/utils/gateway-sync.js.map +1 -1
  216. package/dist/utils/path-security.js +7 -6
  217. package/dist/utils/path-security.js.map +1 -1
  218. package/dist/utils/plan-diff.js +58 -39
  219. package/dist/utils/plan-diff.js.map +1 -1
  220. package/dist/utils/plans.js +92 -74
  221. package/dist/utils/plans.js.map +1 -1
  222. package/dist/utils/project.js +318 -256
  223. package/dist/utils/project.js.map +1 -1
  224. package/dist/utils/signals-pubsub.js +117 -99
  225. package/dist/utils/signals-pubsub.js.map +1 -1
  226. package/dist/utils/slash-command-loader.js +118 -154
  227. package/dist/utils/slash-command-loader.js.map +1 -1
  228. package/dist/utils/slash-command-processor.js +92 -83
  229. package/dist/utils/slash-command-processor.js.map +1 -1
  230. package/dist/utils/stdin-pipe.js +87 -63
  231. package/dist/utils/stdin-pipe.js.map +1 -1
  232. package/dist/utils/storage-factory.js +104 -84
  233. package/dist/utils/storage-factory.js.map +1 -1
  234. package/dist/utils/storage-maintenance.js +249 -211
  235. package/dist/utils/storage-maintenance.js.map +1 -1
  236. package/dist/utils/thread-lock.js +96 -92
  237. package/dist/utils/thread-lock.js.map +1 -1
  238. package/dist/utils/token-estimator.js +12 -12
  239. package/dist/utils/token-estimator.js.map +1 -1
  240. package/dist/utils/update-check.d.ts +1 -1
  241. package/dist/utils/update-check.js +341 -259
  242. package/dist/utils/update-check.js.map +1 -1
  243. package/dist/voice/stt-registry.js +131 -113
  244. package/dist/voice/stt-registry.js.map +1 -1
  245. package/package.json +11 -11
  246. package/dist/acp.js.map +0 -1
  247. package/dist/auth/index.js.map +0 -1
  248. package/dist/auth/types.js.map +0 -1
  249. package/dist/evals/index.js.map +0 -1
  250. package/dist/evals/scorers/index.js.map +0 -1
  251. package/dist/headless/index.js.map +0 -1
  252. package/dist/hooks/index.js.map +0 -1
  253. package/dist/lsp/index.js.map +0 -1
  254. package/dist/mcp/index.js.map +0 -1
  255. package/dist/mcp/types.js.map +0 -1
  256. package/dist/onboarding/index.js.map +0 -1
  257. package/dist/plugins/types.js.map +0 -1
  258. package/dist/tools/index.js.map +0 -1
@@ -1,32 +1,6 @@
1
- import { runMC } from "./run-mc.js";
2
1
  import { autoApprovePolicy, denyPolicy, permissionModeToPolicy } from "./policy.js";
3
- import {
4
- formatHuman,
5
- formatJsonl,
6
- renderTextResult,
7
- renderJsonResult,
8
- createHumanFormatState,
9
- truncate
10
- } from "./format.js";
11
- import { runMCCli, hasHeadlessFlag, parseHeadlessArgs, printHeadlessUsage } from "./cli.js";
12
- import { VALID_MODES, VALID_THINKING_LEVELS, VALID_PERMISSION_MODES } from "./types.js";
13
- export {
14
- VALID_MODES,
15
- VALID_PERMISSION_MODES,
16
- VALID_THINKING_LEVELS,
17
- autoApprovePolicy,
18
- createHumanFormatState,
19
- denyPolicy,
20
- formatHuman,
21
- formatJsonl,
22
- hasHeadlessFlag,
23
- parseHeadlessArgs,
24
- permissionModeToPolicy,
25
- printHeadlessUsage,
26
- renderJsonResult,
27
- renderTextResult,
28
- runMC,
29
- runMCCli,
30
- truncate
31
- };
32
- //# sourceMappingURL=index.js.map
2
+ import { runMC } from "./run-mc.js";
3
+ import { createHumanFormatState, formatHuman, formatJsonl, renderJsonResult, renderTextResult, truncate } from "./format.js";
4
+ import { VALID_MODES, VALID_PERMISSION_MODES, VALID_THINKING_LEVELS } from "./types.js";
5
+ import { hasHeadlessFlag, parseHeadlessArgs, printHeadlessUsage, runMCCli } from "./cli.js";
6
+ export { VALID_MODES, VALID_PERMISSION_MODES, VALID_THINKING_LEVELS, autoApprovePolicy, createHumanFormatState, denyPolicy, formatHuman, formatJsonl, hasHeadlessFlag, parseHeadlessArgs, permissionModeToPolicy, printHeadlessUsage, renderJsonResult, renderTextResult, runMC, runMCCli, truncate };
@@ -1,38 +1,42 @@
1
+ //#region src/headless/policy.ts
2
+ /**
3
+ * Default policy — reproduces the historical headless behavior:
4
+ * - approve every tool approval request,
5
+ * - auto-approve `request_access` / sandbox access suspensions ("Yes"),
6
+ * - auto-approve `submit_plan` suspensions (`{ action: 'approved' }`),
7
+ * - answer any other suspension with a "use your best judgment" instruction.
8
+ */
1
9
  const autoApprovePolicy = {
2
- onToolApproval(_event) {
3
- return "approve";
4
- },
5
- onSuspension(event) {
6
- const payload = event.suspendPayload ?? {};
7
- if (event.toolName === "request_access" || payload.kind === "sandbox_access_request") {
8
- return { resumeData: "Yes" };
9
- }
10
- if (event.toolName === "submit_plan") {
11
- return { resumeData: { action: "approved" } };
12
- }
13
- return { resumeData: "Proceed with your best judgment. Do not ask further questions." };
14
- }
10
+ onToolApproval(_event) {
11
+ return "approve";
12
+ },
13
+ onSuspension(event) {
14
+ const payload = event.suspendPayload ?? {};
15
+ if (event.toolName === "request_access" || payload.kind === "sandbox_access_request") return { resumeData: "Yes" };
16
+ if (event.toolName === "submit_plan") return { resumeData: { action: "approved" } };
17
+ return { resumeData: "Proceed with your best judgment. Do not ask further questions." };
18
+ }
15
19
  };
20
+ /**
21
+ * Strict policy — refuses every tool approval and aborts on any suspension.
22
+ * Useful for CI gating where unattended tool execution must not happen.
23
+ */
16
24
  const denyPolicy = {
17
- onToolApproval(_event) {
18
- return "deny";
19
- },
20
- onSuspension(_event) {
21
- return { abort: true };
22
- }
25
+ onToolApproval(_event) {
26
+ return "deny";
27
+ },
28
+ onSuspension(_event) {
29
+ return { abort: true };
30
+ }
23
31
  };
32
+ /** Resolve a named {@link PermissionMode} to its built-in {@link ResolutionPolicy}. */
24
33
  function permissionModeToPolicy(mode) {
25
- switch (mode) {
26
- case "deny":
27
- return denyPolicy;
28
- case "auto":
29
- default:
30
- return autoApprovePolicy;
31
- }
34
+ switch (mode) {
35
+ case "deny": return denyPolicy;
36
+ default: return autoApprovePolicy;
37
+ }
32
38
  }
33
- export {
34
- autoApprovePolicy,
35
- denyPolicy,
36
- permissionModeToPolicy
37
- };
39
+ //#endregion
40
+ export { autoApprovePolicy, denyPolicy, permissionModeToPolicy };
41
+
38
42
  //# sourceMappingURL=policy.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/headless/policy.ts"],"sourcesContent":["/**\n * Resolution policies decide how `runMC` resumes interactive events\n * (`tool_approval_required`, `tool_suspended`) without a human in the loop.\n *\n * Policies are pure decision objects: they inspect the event and return a\n * decision. The runner is responsible for applying the decision to the session\n * and for any side effects (emitting labels, etc.). This keeps policies testable\n * and lets CI swap in stricter behavior without touching the runner.\n */\nimport type { AgentControllerEvent } from '@mastra/core/agent-controller';\n\nimport type { PermissionMode, ResolutionPolicy } from './types.js';\n\n/**\n * Default policy — reproduces the historical headless behavior:\n * - approve every tool approval request,\n * - auto-approve `request_access` / sandbox access suspensions (\"Yes\"),\n * - auto-approve `submit_plan` suspensions (`{ action: 'approved' }`),\n * - answer any other suspension with a \"use your best judgment\" instruction.\n */\nexport const autoApprovePolicy: ResolutionPolicy = {\n onToolApproval(_event: Extract<AgentControllerEvent, { type: 'tool_approval_required' }>): 'approve' | 'deny' {\n return 'approve';\n },\n\n onSuspension(\n event: Extract<AgentControllerEvent, { type: 'tool_suspended' }>,\n ): { resumeData: unknown } | { abort: true } {\n const payload = (event.suspendPayload ?? {}) as Record<string, unknown>;\n\n if (event.toolName === 'request_access' || payload.kind === 'sandbox_access_request') {\n return { resumeData: 'Yes' };\n }\n\n if (event.toolName === 'submit_plan') {\n return { resumeData: { action: 'approved' } };\n }\n\n return { resumeData: 'Proceed with your best judgment. Do not ask further questions.' };\n },\n};\n\n/**\n * Strict policy — refuses every tool approval and aborts on any suspension.\n * Useful for CI gating where unattended tool execution must not happen.\n */\nexport const denyPolicy: ResolutionPolicy = {\n onToolApproval(_event: Extract<AgentControllerEvent, { type: 'tool_approval_required' }>): 'approve' | 'deny' {\n return 'deny';\n },\n\n onSuspension(\n _event: Extract<AgentControllerEvent, { type: 'tool_suspended' }>,\n ): { resumeData: unknown } | { abort: true } {\n return { abort: true };\n },\n};\n\n/** Resolve a named {@link PermissionMode} to its built-in {@link ResolutionPolicy}. */\nexport function permissionModeToPolicy(mode: PermissionMode): ResolutionPolicy {\n switch (mode) {\n case 'deny':\n return denyPolicy;\n case 'auto':\n default:\n return autoApprovePolicy;\n }\n}\n"],"mappings":"AAoBO,MAAM,oBAAsC;AAAA,EACjD,eAAe,QAA+F;AAC5G,WAAO;AAAA,EACT;AAAA,EAEA,aACE,OAC2C;AAC3C,UAAM,UAAW,MAAM,kBAAkB,CAAC;AAE1C,QAAI,MAAM,aAAa,oBAAoB,QAAQ,SAAS,0BAA0B;AACpF,aAAO,EAAE,YAAY,MAAM;AAAA,IAC7B;AAEA,QAAI,MAAM,aAAa,eAAe;AACpC,aAAO,EAAE,YAAY,EAAE,QAAQ,WAAW,EAAE;AAAA,IAC9C;AAEA,WAAO,EAAE,YAAY,iEAAiE;AAAA,EACxF;AACF;AAMO,MAAM,aAA+B;AAAA,EAC1C,eAAe,QAA+F;AAC5G,WAAO;AAAA,EACT;AAAA,EAEA,aACE,QAC2C;AAC3C,WAAO,EAAE,OAAO,KAAK;AAAA,EACvB;AACF;AAGO,SAAS,uBAAuB,MAAwC;AAC7E,UAAQ,MAAM;AAAA,IACZ,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AAAA,IACL;AACE,aAAO;AAAA,EACX;AACF;","names":[]}
1
+ {"version":3,"file":"policy.js","names":[],"sources":["../../src/headless/policy.ts"],"sourcesContent":["/**\n * Resolution policies decide how `runMC` resumes interactive events\n * (`tool_approval_required`, `tool_suspended`) without a human in the loop.\n *\n * Policies are pure decision objects: they inspect the event and return a\n * decision. The runner is responsible for applying the decision to the session\n * and for any side effects (emitting labels, etc.). This keeps policies testable\n * and lets CI swap in stricter behavior without touching the runner.\n */\nimport type { AgentControllerEvent } from '@mastra/core/agent-controller';\n\nimport type { PermissionMode, ResolutionPolicy } from './types.js';\n\n/**\n * Default policy — reproduces the historical headless behavior:\n * - approve every tool approval request,\n * - auto-approve `request_access` / sandbox access suspensions (\"Yes\"),\n * - auto-approve `submit_plan` suspensions (`{ action: 'approved' }`),\n * - answer any other suspension with a \"use your best judgment\" instruction.\n */\nexport const autoApprovePolicy: ResolutionPolicy = {\n onToolApproval(_event: Extract<AgentControllerEvent, { type: 'tool_approval_required' }>): 'approve' | 'deny' {\n return 'approve';\n },\n\n onSuspension(\n event: Extract<AgentControllerEvent, { type: 'tool_suspended' }>,\n ): { resumeData: unknown } | { abort: true } {\n const payload = (event.suspendPayload ?? {}) as Record<string, unknown>;\n\n if (event.toolName === 'request_access' || payload.kind === 'sandbox_access_request') {\n return { resumeData: 'Yes' };\n }\n\n if (event.toolName === 'submit_plan') {\n return { resumeData: { action: 'approved' } };\n }\n\n return { resumeData: 'Proceed with your best judgment. Do not ask further questions.' };\n },\n};\n\n/**\n * Strict policy — refuses every tool approval and aborts on any suspension.\n * Useful for CI gating where unattended tool execution must not happen.\n */\nexport const denyPolicy: ResolutionPolicy = {\n onToolApproval(_event: Extract<AgentControllerEvent, { type: 'tool_approval_required' }>): 'approve' | 'deny' {\n return 'deny';\n },\n\n onSuspension(\n _event: Extract<AgentControllerEvent, { type: 'tool_suspended' }>,\n ): { resumeData: unknown } | { abort: true } {\n return { abort: true };\n },\n};\n\n/** Resolve a named {@link PermissionMode} to its built-in {@link ResolutionPolicy}. */\nexport function permissionModeToPolicy(mode: PermissionMode): ResolutionPolicy {\n switch (mode) {\n case 'deny':\n return denyPolicy;\n case 'auto':\n default:\n return autoApprovePolicy;\n }\n}\n"],"mappings":";;;;;;;;AAoBA,MAAa,oBAAsC;CACjD,eAAe,QAA+F;EAC5G,OAAO;CACT;CAEA,aACE,OAC2C;EAC3C,MAAM,UAAW,MAAM,kBAAkB,CAAC;EAE1C,IAAI,MAAM,aAAa,oBAAoB,QAAQ,SAAS,0BAC1D,OAAO,EAAE,YAAY,MAAM;EAG7B,IAAI,MAAM,aAAa,eACrB,OAAO,EAAE,YAAY,EAAE,QAAQ,WAAW,EAAE;EAG9C,OAAO,EAAE,YAAY,iEAAiE;CACxF;AACF;;;;;AAMA,MAAa,aAA+B;CAC1C,eAAe,QAA+F;EAC5G,OAAO;CACT;CAEA,aACE,QAC2C;EAC3C,OAAO,EAAE,OAAO,KAAK;CACvB;AACF;;AAGA,SAAgB,uBAAuB,MAAwC;CAC7E,QAAQ,MAAR;EACE,KAAK,QACH,OAAO;EAET,SACE,OAAO;CACX;AACF"}