iosm-cli 0.2.15 → 0.2.16

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 (159) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/README.md +18 -1
  3. package/dist/cli/args.d.ts +2 -1
  4. package/dist/cli/args.d.ts.map +1 -1
  5. package/dist/cli/args.js +16 -3
  6. package/dist/cli/args.js.map +1 -1
  7. package/dist/core/agent-profiles.d.ts.map +1 -1
  8. package/dist/core/agent-profiles.js +3 -0
  9. package/dist/core/agent-profiles.js.map +1 -1
  10. package/dist/core/agent-session.d.ts +2 -0
  11. package/dist/core/agent-session.d.ts.map +1 -1
  12. package/dist/core/agent-session.js +26 -10
  13. package/dist/core/agent-session.js.map +1 -1
  14. package/dist/core/agent-teams.d.ts.map +1 -1
  15. package/dist/core/agent-teams.js +12 -9
  16. package/dist/core/agent-teams.js.map +1 -1
  17. package/dist/core/checkpoint/fs-checkpoint.d.ts +14 -0
  18. package/dist/core/checkpoint/fs-checkpoint.d.ts.map +1 -0
  19. package/dist/core/checkpoint/fs-checkpoint.js +211 -0
  20. package/dist/core/checkpoint/fs-checkpoint.js.map +1 -0
  21. package/dist/core/command-dispatcher.d.ts +2 -0
  22. package/dist/core/command-dispatcher.d.ts.map +1 -1
  23. package/dist/core/command-dispatcher.js +78 -13
  24. package/dist/core/command-dispatcher.js.map +1 -1
  25. package/dist/core/mcp/cli.d.ts.map +1 -1
  26. package/dist/core/mcp/cli.js +26 -0
  27. package/dist/core/mcp/cli.js.map +1 -1
  28. package/dist/core/mcp/config.d.ts.map +1 -1
  29. package/dist/core/mcp/config.js +55 -0
  30. package/dist/core/mcp/config.js.map +1 -1
  31. package/dist/core/mcp/index.d.ts +1 -1
  32. package/dist/core/mcp/index.d.ts.map +1 -1
  33. package/dist/core/mcp/index.js.map +1 -1
  34. package/dist/core/mcp/runtime.d.ts +3 -1
  35. package/dist/core/mcp/runtime.d.ts.map +1 -1
  36. package/dist/core/mcp/runtime.js +21 -2
  37. package/dist/core/mcp/runtime.js.map +1 -1
  38. package/dist/core/mcp/types.d.ts +30 -2
  39. package/dist/core/mcp/types.d.ts.map +1 -1
  40. package/dist/core/mcp/types.js.map +1 -1
  41. package/dist/core/package-manager.d.ts +10 -0
  42. package/dist/core/package-manager.d.ts.map +1 -1
  43. package/dist/core/package-manager.js +100 -2
  44. package/dist/core/package-manager.js.map +1 -1
  45. package/dist/core/policy/engine.d.ts +77 -0
  46. package/dist/core/policy/engine.d.ts.map +1 -0
  47. package/dist/core/policy/engine.js +614 -0
  48. package/dist/core/policy/engine.js.map +1 -0
  49. package/dist/core/policy/index.d.ts +2 -0
  50. package/dist/core/policy/index.d.ts.map +1 -0
  51. package/dist/core/policy/index.js +2 -0
  52. package/dist/core/policy/index.js.map +1 -0
  53. package/dist/core/sandbox/executor.d.ts +13 -0
  54. package/dist/core/sandbox/executor.d.ts.map +1 -0
  55. package/dist/core/sandbox/executor.js +64 -0
  56. package/dist/core/sandbox/executor.js.map +1 -0
  57. package/dist/core/sdk.d.ts +2 -2
  58. package/dist/core/sdk.d.ts.map +1 -1
  59. package/dist/core/sdk.js +3 -3
  60. package/dist/core/sdk.js.map +1 -1
  61. package/dist/core/security/index.d.ts +3 -0
  62. package/dist/core/security/index.d.ts.map +1 -0
  63. package/dist/core/security/index.js +3 -0
  64. package/dist/core/security/index.js.map +1 -0
  65. package/dist/core/security/source-security.d.ts +43 -0
  66. package/dist/core/security/source-security.d.ts.map +1 -0
  67. package/dist/core/security/source-security.js +94 -0
  68. package/dist/core/security/source-security.js.map +1 -0
  69. package/dist/core/security/trust-ledger.d.ts +24 -0
  70. package/dist/core/security/trust-ledger.d.ts.map +1 -0
  71. package/dist/core/security/trust-ledger.js +66 -0
  72. package/dist/core/security/trust-ledger.js.map +1 -0
  73. package/dist/core/session-manager.d.ts.map +1 -1
  74. package/dist/core/session-manager.js +128 -15
  75. package/dist/core/session-manager.js.map +1 -1
  76. package/dist/core/settings-manager.d.ts +6 -0
  77. package/dist/core/settings-manager.d.ts.map +1 -1
  78. package/dist/core/settings-manager.js +22 -1
  79. package/dist/core/settings-manager.js.map +1 -1
  80. package/dist/core/system-prompt.d.ts.map +1 -1
  81. package/dist/core/system-prompt.js +9 -2
  82. package/dist/core/system-prompt.js.map +1 -1
  83. package/dist/core/task-plan.d.ts +1 -0
  84. package/dist/core/task-plan.d.ts.map +1 -1
  85. package/dist/core/task-plan.js +103 -0
  86. package/dist/core/task-plan.js.map +1 -1
  87. package/dist/core/tools/apply-patch.d.ts +29 -0
  88. package/dist/core/tools/apply-patch.d.ts.map +1 -0
  89. package/dist/core/tools/apply-patch.js +167 -0
  90. package/dist/core/tools/apply-patch.js.map +1 -0
  91. package/dist/core/tools/bash.d.ts.map +1 -1
  92. package/dist/core/tools/bash.js +15 -1
  93. package/dist/core/tools/bash.js.map +1 -1
  94. package/dist/core/tools/git-common.d.ts.map +1 -1
  95. package/dist/core/tools/git-common.js +15 -1
  96. package/dist/core/tools/git-common.js.map +1 -1
  97. package/dist/core/tools/index.d.ts +20 -2
  98. package/dist/core/tools/index.d.ts.map +1 -1
  99. package/dist/core/tools/index.js +85 -25
  100. package/dist/core/tools/index.js.map +1 -1
  101. package/dist/core/tools/permissions.d.ts +16 -0
  102. package/dist/core/tools/permissions.d.ts.map +1 -1
  103. package/dist/core/tools/permissions.js +34 -1
  104. package/dist/core/tools/permissions.js.map +1 -1
  105. package/dist/core/tools/task.d.ts.map +1 -1
  106. package/dist/core/tools/task.js +68 -24
  107. package/dist/core/tools/task.js.map +1 -1
  108. package/dist/core/tools/tool-search.d.ts +24 -0
  109. package/dist/core/tools/tool-search.d.ts.map +1 -0
  110. package/dist/core/tools/tool-search.js +85 -0
  111. package/dist/core/tools/tool-search.js.map +1 -0
  112. package/dist/core/tools/tool-suggest.d.ts +18 -0
  113. package/dist/core/tools/tool-suggest.d.ts.map +1 -0
  114. package/dist/core/tools/tool-suggest.js +94 -0
  115. package/dist/core/tools/tool-suggest.js.map +1 -0
  116. package/dist/core/tools/verification-runner.d.ts.map +1 -1
  117. package/dist/core/tools/verification-runner.js +15 -1
  118. package/dist/core/tools/verification-runner.js.map +1 -1
  119. package/dist/core/unified-exec.d.ts +39 -0
  120. package/dist/core/unified-exec.d.ts.map +1 -0
  121. package/dist/core/unified-exec.js +286 -0
  122. package/dist/core/unified-exec.js.map +1 -0
  123. package/dist/main.d.ts.map +1 -1
  124. package/dist/main.js +93 -11
  125. package/dist/main.js.map +1 -1
  126. package/dist/modes/acp/acp-mode.d.ts +17 -0
  127. package/dist/modes/acp/acp-mode.d.ts.map +1 -0
  128. package/dist/modes/acp/acp-mode.js +352 -0
  129. package/dist/modes/acp/acp-mode.js.map +1 -0
  130. package/dist/modes/index.d.ts +2 -1
  131. package/dist/modes/index.d.ts.map +1 -1
  132. package/dist/modes/index.js +1 -0
  133. package/dist/modes/index.js.map +1 -1
  134. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  135. package/dist/modes/interactive/components/tool-execution.js +217 -0
  136. package/dist/modes/interactive/components/tool-execution.js.map +1 -1
  137. package/dist/modes/interactive/interactive-mode.d.ts +8 -0
  138. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  139. package/dist/modes/interactive/interactive-mode.js +159 -72
  140. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  141. package/dist/modes/rpc/rpc-client.d.ts +25 -1
  142. package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  143. package/dist/modes/rpc/rpc-client.js +33 -0
  144. package/dist/modes/rpc/rpc-client.js.map +1 -1
  145. package/dist/modes/rpc/rpc-mode.d.ts +13 -1
  146. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  147. package/dist/modes/rpc/rpc-mode.js +189 -28
  148. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  149. package/dist/modes/rpc/rpc-types.d.ts +54 -1
  150. package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  151. package/dist/modes/rpc/rpc-types.js.map +1 -1
  152. package/dist/utils/tools-manager.d.ts.map +1 -1
  153. package/dist/utils/tools-manager.js +96 -9
  154. package/dist/utils/tools-manager.js.map +1 -1
  155. package/docs/README.md +2 -0
  156. package/docs/acp-rpc-mapping.md +38 -0
  157. package/docs/configuration.generated.md +81 -0
  158. package/docs/configuration.md +7 -0
  159. package/package.json +4 -1
@@ -1,3 +1,4 @@
1
+ export { createApplyPatchTool, applyPatchTool, } from "./apply-patch.js";
1
2
  export { createAstGrepTool, astGrepTool, } from "./ast-grep.js";
2
3
  export { bashTool, createBashTool, } from "./bash.js";
3
4
  export { combyTool, createCombyTool, } from "./comby.js";
@@ -22,11 +23,15 @@ export { createSemgrepTool, semgrepTool, } from "./semgrep.js";
22
23
  export { createSemanticSearchTool, semanticSearchTool, } from "./semantic-search.js";
23
24
  export { DEFAULT_MAX_BYTES, DEFAULT_MAX_LINES, formatSize, truncateHead, truncateLine, truncateTail, } from "./truncate.js";
24
25
  export { createWriteTool, writeTool, } from "./write.js";
26
+ export { PermissionGrantStore, getToolPermissionSignature, } from "./permissions.js";
27
+ export { createToolSearchTool, } from "./tool-search.js";
28
+ export { createToolSuggestTool, } from "./tool-suggest.js";
25
29
  export { createTodoWriteTool, createTodoReadTool, todoWriteTool, todoReadTool, getTaskFilePath, } from "./todo.js";
26
30
  export { createYqTool, yqTool, } from "./yq.js";
27
31
  export { createTaskTool, } from "./task.js";
28
32
  export { createTestRunTool, testRunTool, DEFAULT_TEST_RUN_TIMEOUT_SECONDS, } from "./test-run.js";
29
33
  export { createTypecheckRunTool, typecheckRunTool, DEFAULT_TYPECHECK_RUN_TIMEOUT_SECONDS, } from "./typecheck-run.js";
34
+ import { applyPatchTool, createApplyPatchTool } from "./apply-patch.js";
30
35
  import { astGrepTool, createAstGrepTool } from "./ast-grep.js";
31
36
  import { bashTool, createBashTool } from "./bash.js";
32
37
  import { combyTool, createCombyTool } from "./comby.js";
@@ -48,6 +53,8 @@ import { createRgTool, rgTool } from "./rg.js";
48
53
  import { createSedTool, sedTool } from "./sed.js";
49
54
  import { createSemgrepTool, semgrepTool } from "./semgrep.js";
50
55
  import { createSemanticSearchTool, semanticSearchTool, } from "./semantic-search.js";
56
+ import { createToolSearchTool, toolSearchTool as defaultToolSearchTool } from "./tool-search.js";
57
+ import { createToolSuggestTool, toolSuggestTool as defaultToolSuggestTool } from "./tool-suggest.js";
51
58
  import { createWriteTool, writeTool } from "./write.js";
52
59
  import { createYqTool, yqTool } from "./yq.js";
53
60
  import { todoWriteTool, todoReadTool } from "./todo.js";
@@ -55,33 +62,19 @@ import { createTestRunTool, testRunTool } from "./test-run.js";
55
62
  import { createTypecheckRunTool, typecheckRunTool } from "./typecheck-run.js";
56
63
  // Default tools for full access mode (using process.cwd())
57
64
  export const codingTools = [readTool, bashTool, editTool, writeTool];
58
- // Read-only tools for exploration without modification (using process.cwd())
59
- export const readOnlyTools = [
60
- readTool,
61
- grepTool,
62
- findTool,
63
- lsTool,
64
- rgTool,
65
- fdTool,
66
- astGrepTool,
67
- combyTool,
68
- jqTool,
69
- yqTool,
70
- semgrepTool,
71
- sedTool,
72
- semanticSearchTool,
73
- createFetchTool(process.cwd(), {
74
- resolveAllowedMethods: () => getAllowedFetchMethodsForProfile("plan"),
75
- }),
76
- webSearchTool,
77
- gitReadTool,
78
- ];
79
- // All available tools (using process.cwd())
80
- export const allTools = {
65
+ function buildCatalogFromTools(tools, activeNames) {
66
+ return Object.entries(tools).map(([name, tool]) => ({
67
+ name,
68
+ description: tool.description,
69
+ active: activeNames ? activeNames.has(name) : true,
70
+ }));
71
+ }
72
+ const prebuiltBaseTools = {
81
73
  read: readTool,
82
74
  bash: bashTool,
83
75
  edit: editTool,
84
76
  write: writeTool,
77
+ apply_patch: applyPatchTool,
85
78
  grep: grepTool,
86
79
  find: findTool,
87
80
  ls: lsTool,
@@ -106,6 +99,46 @@ export const allTools = {
106
99
  todo_write: todoWriteTool,
107
100
  todo_read: todoReadTool,
108
101
  };
102
+ let prebuiltToolSearch = defaultToolSearchTool;
103
+ let prebuiltToolSuggest = defaultToolSuggestTool;
104
+ const resolvePrebuiltCatalog = () => buildCatalogFromTools({
105
+ ...prebuiltBaseTools,
106
+ tool_search: prebuiltToolSearch,
107
+ tool_suggest: prebuiltToolSuggest,
108
+ });
109
+ prebuiltToolSearch = createToolSearchTool({ resolveCatalog: resolvePrebuiltCatalog });
110
+ prebuiltToolSuggest = createToolSuggestTool({ resolveCatalog: resolvePrebuiltCatalog });
111
+ // All available tools (using process.cwd())
112
+ export const allTools = {
113
+ ...prebuiltBaseTools,
114
+ tool_search: prebuiltToolSearch,
115
+ tool_suggest: prebuiltToolSuggest,
116
+ };
117
+ export const toolSearchTool = prebuiltToolSearch;
118
+ export const toolSuggestTool = prebuiltToolSuggest;
119
+ // Read-only tools for exploration without modification (using process.cwd())
120
+ export const readOnlyTools = [
121
+ readTool,
122
+ grepTool,
123
+ findTool,
124
+ lsTool,
125
+ rgTool,
126
+ fdTool,
127
+ astGrepTool,
128
+ combyTool,
129
+ jqTool,
130
+ yqTool,
131
+ semgrepTool,
132
+ sedTool,
133
+ semanticSearchTool,
134
+ createFetchTool(process.cwd(), {
135
+ resolveAllowedMethods: () => getAllowedFetchMethodsForProfile("plan"),
136
+ }),
137
+ webSearchTool,
138
+ gitReadTool,
139
+ prebuiltToolSearch,
140
+ prebuiltToolSuggest,
141
+ ];
109
142
  /**
110
143
  * Create coding tools configured for a specific working directory.
111
144
  */
@@ -125,7 +158,7 @@ export function createReadOnlyTools(cwd, options) {
125
158
  ...(options?.fetch ?? {}),
126
159
  resolveAllowedMethods: options?.fetch?.resolveAllowedMethods ?? (() => getAllowedFetchMethodsForProfile("plan")),
127
160
  };
128
- return [
161
+ const baseReadOnlyTools = [
129
162
  createReadTool(cwd, options?.read),
130
163
  createGrepTool(cwd),
131
164
  createFindTool(cwd),
@@ -143,16 +176,28 @@ export function createReadOnlyTools(cwd, options) {
143
176
  createWebSearchTool(cwd, options?.webSearch),
144
177
  createGitReadTool(cwd),
145
178
  ];
179
+ let dynamicToolSearch = defaultToolSearchTool;
180
+ let dynamicToolSuggest = defaultToolSuggestTool;
181
+ const resolveCatalog = options?.toolCatalog?.resolveCatalog ??
182
+ (() => buildCatalogFromTools({
183
+ ...Object.fromEntries(baseReadOnlyTools.map((tool) => [tool.name, tool])),
184
+ tool_search: dynamicToolSearch,
185
+ tool_suggest: dynamicToolSuggest,
186
+ }));
187
+ dynamicToolSearch = createToolSearchTool({ resolveCatalog });
188
+ dynamicToolSuggest = createToolSuggestTool({ resolveCatalog });
189
+ return [...baseReadOnlyTools, dynamicToolSearch, dynamicToolSuggest];
146
190
  }
147
191
  /**
148
192
  * Create all tools configured for a specific working directory.
149
193
  */
150
194
  export function createAllTools(cwd, options) {
151
- return {
195
+ const baseTools = {
152
196
  read: createReadTool(cwd, options?.read),
153
197
  bash: createBashTool(cwd, options?.bash),
154
198
  edit: createEditTool(cwd, options?.edit),
155
199
  write: createWriteTool(cwd, options?.write),
200
+ apply_patch: createApplyPatchTool(cwd, options?.applyPatch),
156
201
  grep: createGrepTool(cwd),
157
202
  find: createFindTool(cwd),
158
203
  ls: createLsTool(cwd),
@@ -177,6 +222,21 @@ export function createAllTools(cwd, options) {
177
222
  todo_write: todoWriteTool,
178
223
  todo_read: todoReadTool,
179
224
  };
225
+ let dynamicToolSearch = defaultToolSearchTool;
226
+ let dynamicToolSuggest = defaultToolSuggestTool;
227
+ const resolveCatalog = options?.toolCatalog?.resolveCatalog ??
228
+ (() => buildCatalogFromTools({
229
+ ...baseTools,
230
+ tool_search: dynamicToolSearch,
231
+ tool_suggest: dynamicToolSuggest,
232
+ }));
233
+ dynamicToolSearch = createToolSearchTool({ resolveCatalog });
234
+ dynamicToolSuggest = createToolSuggestTool({ resolveCatalog });
235
+ return {
236
+ ...baseTools,
237
+ tool_search: dynamicToolSearch,
238
+ tool_suggest: dynamicToolSuggest,
239
+ };
180
240
  }
181
241
  /**
182
242
  * Create a filtered set of tools from a list of tool names.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/tools/index.ts"],"names":[],"mappings":"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","sourcesContent":["export {\n\tcreateAstGrepTool,\n\ttype AstGrepToolInput,\n\tastGrepTool,\n} from \"./ast-grep.js\";\nexport {\n\ttype BashOperations,\n\ttype BashSpawnContext,\n\ttype BashSpawnHook,\n\ttype BashToolDetails,\n\ttype BashToolInput,\n\ttype BashToolOptions,\n\tbashTool,\n\tcreateBashTool,\n} from \"./bash.js\";\nexport {\n\ttype CombyToolInput,\n\tcombyTool,\n\tcreateCombyTool,\n} from \"./comby.js\";\nexport {\n\tcreateEditTool,\n\ttype EditOperations,\n\ttype EditToolDetails,\n\ttype EditToolInput,\n\ttype EditToolOptions,\n\teditTool,\n} from \"./edit.js\";\nexport {\n\tcreateFetchTool,\n\ttype FetchToolDetails,\n\ttype FetchToolInput,\n\ttype FetchToolOptions,\n\ttype FetchMethod,\n\ttype FetchResponseFormat,\n\tDEFAULT_FETCH_TIMEOUT_SECONDS,\n\tDEFAULT_FETCH_MAX_BYTES,\n\tDEFAULT_FETCH_MAX_REDIRECTS,\n\tgetAllowedFetchMethodsForProfile,\n\tfetchTool,\n} from \"./fetch.js\";\nexport {\n\tcreateWebSearchTool,\n\ttype WebSearchAttemptDetail,\n\ttype WebSearchAttemptStatus,\n\ttype WebSearchFallbackMode,\n\ttype WebSearchProvider,\n\ttype WebSearchProviderMode,\n\ttype WebSearchRuntimeConfig,\n\ttype WebSearchSafeSearch,\n\ttype WebSearchSearchDepth,\n\ttype WebSearchToolDetails,\n\ttype WebSearchToolInput,\n\ttype WebSearchToolOptions,\n\tDEFAULT_WEB_SEARCH_MAX_RESULTS,\n\tDEFAULT_WEB_SEARCH_TIMEOUT_SECONDS,\n\twebSearchTool,\n} from \"./web-search.js\";\nexport {\n\ttype ExternalCliToolDetails,\n\ttype ExternalCliToolInput,\n\ttype ExternalCliToolOptions,\n\tcreateExternalCliTool,\n} from \"./external-cli.js\";\nexport {\n\tcreateFdTool,\n\ttype FdToolInput,\n\tfdTool,\n} from \"./fd.js\";\nexport {\n\tcreateFindTool,\n\ttype FindOperations,\n\ttype FindToolDetails,\n\ttype FindToolInput,\n\ttype FindToolOptions,\n\tfindTool,\n} from \"./find.js\";\nexport {\n\tcreateFsOpsTool,\n\ttype FsOpsToolDetails,\n\ttype FsOpsToolInput,\n\ttype FsOpsToolOptions,\n\tfsOpsTool,\n} from \"./fs-ops.js\";\nexport {\n\tcreateGrepTool,\n\ttype GrepOperations,\n\ttype GrepToolDetails,\n\ttype GrepToolInput,\n\ttype GrepToolOptions,\n\tgrepTool,\n} from \"./grep.js\";\nexport {\n\tcreateGitReadTool,\n\ttype GitReadToolDetails,\n\ttype GitReadToolInput,\n\ttype GitReadToolOptions,\n\tgitReadTool,\n} from \"./git-read.js\";\nexport {\n\tcreateGitWriteTool,\n\ttype GitWriteToolDetails,\n\ttype GitWriteToolInput,\n\ttype GitWriteToolOptions,\n\tgitWriteTool,\n} from \"./git-write.js\";\nexport {\n\tcreateJqTool,\n\ttype JqToolInput,\n\tjqTool,\n} from \"./jq.js\";\nexport {\n\tcreateDbRunTool,\n\ttype DbRunAction,\n\ttype DbRunAdapter,\n\ttype DbRunMigrateRunner,\n\ttype DbRunStatus,\n\ttype DbRunToolDetails,\n\ttype DbRunToolInput,\n\ttype DbRunToolOptions,\n\ttype DbToolsConnectionConfig,\n\ttype DbToolsMigrateConfig,\n\ttype DbToolsRuntimeConfig,\n\tdbRunTool,\n\tDEFAULT_DB_RUN_TIMEOUT_SECONDS,\n} from \"./db-run.js\";\nexport {\n\tcreateLintRunTool,\n\ttype LintRunMode,\n\ttype LintRunRunner,\n\ttype LintRunStatus,\n\ttype LintRunToolDetails,\n\ttype LintRunToolInput,\n\tlintRunTool,\n\tDEFAULT_LINT_RUN_TIMEOUT_SECONDS,\n} from \"./lint-run.js\";\nexport {\n\tcreateLsTool,\n\ttype LsOperations,\n\ttype LsToolDetails,\n\ttype LsToolInput,\n\ttype LsToolOptions,\n\tlsTool,\n} from \"./ls.js\";\nexport {\n\tcreateReadTool,\n\ttype ReadOperations,\n\ttype ReadToolDetails,\n\ttype ReadToolInput,\n\ttype ReadToolOptions,\n\treadTool,\n} from \"./read.js\";\nexport {\n\tcreateRgTool,\n\ttype RgToolInput,\n\trgTool,\n} from \"./rg.js\";\nexport {\n\tcreateSedTool,\n\ttype SedToolInput,\n\tsedTool,\n} from \"./sed.js\";\nexport {\n\tcreateSemgrepTool,\n\ttype SemgrepToolInput,\n\tsemgrepTool,\n} from \"./semgrep.js\";\nexport {\n\tcreateSemanticSearchTool,\n\ttype SemanticSearchToolInput,\n\ttype SemanticSearchToolOptions,\n\tsemanticSearchTool,\n} from \"./semantic-search.js\";\nexport {\n\tDEFAULT_MAX_BYTES,\n\tDEFAULT_MAX_LINES,\n\tformatSize,\n\ttype TruncationOptions,\n\ttype TruncationResult,\n\ttruncateHead,\n\ttruncateLine,\n\ttruncateTail,\n} from \"./truncate.js\";\nexport {\n\tcreateWriteTool,\n\ttype WriteOperations,\n\ttype WriteToolInput,\n\ttype WriteToolOptions,\n\twriteTool,\n} from \"./write.js\";\nexport {\n\ttype ToolPermissionGuard,\n\ttype ToolPermissionRequest,\n\ttype ToolRequiredPermission,\n} from \"./permissions.js\";\nexport {\n\tcreateTodoWriteTool,\n\tcreateTodoReadTool,\n\ttodoWriteTool,\n\ttodoReadTool,\n\tgetTaskFilePath,\n\ttype TodoTask,\n\ttype TodoTaskStatus,\n\ttype TodoWriteInput,\n\ttype TodoReadInput,\n} from \"./todo.js\";\nexport {\n\tcreateYqTool,\n\ttype YqToolInput,\n\tyqTool,\n} from \"./yq.js\";\nexport {\n\tcreateTaskTool,\n\ttype SubagentRunner,\n\ttype TaskToolProgress,\n\ttype TaskToolProgressPhase,\n\ttype TaskToolInput,\n\ttype TaskToolDetails,\n} from \"./task.js\";\nexport {\n\tcreateTestRunTool,\n\ttype TestRunRunner,\n\ttype TestRunStatus,\n\ttype TestRunToolDetails,\n\ttype TestRunToolInput,\n\ttestRunTool,\n\tDEFAULT_TEST_RUN_TIMEOUT_SECONDS,\n} from \"./test-run.js\";\nexport {\n\tcreateTypecheckRunTool,\n\ttype TypecheckRunItemDetails,\n\ttype TypecheckRunRunner,\n\ttype TypecheckRunStatus,\n\ttype TypecheckRunToolDetails,\n\ttype TypecheckRunToolInput,\n\ttypecheckRunTool,\n\tDEFAULT_TYPECHECK_RUN_TIMEOUT_SECONDS,\n} from \"./typecheck-run.js\";\n\nimport type { AgentTool } from \"@mariozechner/pi-agent-core\";\nimport { astGrepTool, createAstGrepTool } from \"./ast-grep.js\";\nimport { type BashToolOptions, bashTool, createBashTool } from \"./bash.js\";\nimport { combyTool, createCombyTool } from \"./comby.js\";\nimport { createEditTool, type EditToolOptions, editTool } from \"./edit.js\";\nimport {\n\tcreateFetchTool,\n\ttype FetchToolOptions,\n\tfetchTool,\n\tgetAllowedFetchMethodsForProfile,\n} from \"./fetch.js\";\nimport { createWebSearchTool, type WebSearchToolOptions, webSearchTool } from \"./web-search.js\";\nimport { createFdTool, fdTool } from \"./fd.js\";\nimport { createFindTool, findTool } from \"./find.js\";\nimport { createFsOpsTool, type FsOpsToolOptions, fsOpsTool } from \"./fs-ops.js\";\nimport { createGrepTool, grepTool } from \"./grep.js\";\nimport { createGitReadTool, gitReadTool } from \"./git-read.js\";\nimport { createGitWriteTool, type GitWriteToolOptions, gitWriteTool } from \"./git-write.js\";\nimport { createJqTool, jqTool } from \"./jq.js\";\nimport { createDbRunTool, type DbRunToolOptions, dbRunTool } from \"./db-run.js\";\nimport { createLintRunTool, lintRunTool } from \"./lint-run.js\";\nimport { createLsTool, lsTool } from \"./ls.js\";\nimport { createReadTool, type ReadToolOptions, readTool } from \"./read.js\";\nimport { createRgTool, rgTool } from \"./rg.js\";\nimport { createSedTool, sedTool } from \"./sed.js\";\nimport { createSemgrepTool, semgrepTool } from \"./semgrep.js\";\nimport {\n\tcreateSemanticSearchTool,\n\ttype SemanticSearchToolOptions,\n\tsemanticSearchTool,\n} from \"./semantic-search.js\";\nimport { createWriteTool, type WriteToolOptions, writeTool } from \"./write.js\";\nimport { createYqTool, yqTool } from \"./yq.js\";\nimport { todoWriteTool, todoReadTool } from \"./todo.js\";\nimport { createTestRunTool, testRunTool } from \"./test-run.js\";\nimport { createTypecheckRunTool, typecheckRunTool } from \"./typecheck-run.js\";\n\n/** Tool type (AgentTool from pi-ai) */\nexport type Tool = AgentTool<any>;\n\n// Default tools for full access mode (using process.cwd())\nexport const codingTools: Tool[] = [readTool, bashTool, editTool, writeTool];\n\n// Read-only tools for exploration without modification (using process.cwd())\nexport const readOnlyTools: Tool[] = [\n\treadTool,\n\tgrepTool,\n\tfindTool,\n\tlsTool,\n\trgTool,\n\tfdTool,\n\tastGrepTool,\n\tcombyTool,\n\tjqTool,\n\tyqTool,\n\tsemgrepTool,\n\tsedTool,\n\tsemanticSearchTool,\n\tcreateFetchTool(process.cwd(), {\n\t\tresolveAllowedMethods: () => getAllowedFetchMethodsForProfile(\"plan\"),\n\t}),\n\twebSearchTool,\n\tgitReadTool,\n];\n\n// All available tools (using process.cwd())\nexport const allTools = {\n\tread: readTool,\n\tbash: bashTool,\n\tedit: editTool,\n\twrite: writeTool,\n\tgrep: grepTool,\n\tfind: findTool,\n\tls: lsTool,\n\trg: rgTool,\n\tfd: fdTool,\n\tast_grep: astGrepTool,\n\tcomby: combyTool,\n\tjq: jqTool,\n\tyq: yqTool,\n\tsemgrep: semgrepTool,\n\tsed: sedTool,\n\tsemantic_search: semanticSearchTool,\n\tfetch: fetchTool,\n\tweb_search: webSearchTool,\n\tgit_read: gitReadTool,\n\tgit_write: gitWriteTool,\n\tfs_ops: fsOpsTool,\n\ttest_run: testRunTool,\n\tlint_run: lintRunTool,\n\ttypecheck_run: typecheckRunTool,\n\tdb_run: dbRunTool,\n\ttodo_write: todoWriteTool,\n\ttodo_read: todoReadTool,\n};\n\nexport type ToolName = keyof typeof allTools;\n\nexport interface ToolsOptions {\n\t/** Options for the read tool */\n\tread?: ReadToolOptions;\n\t/** Options for the bash tool */\n\tbash?: BashToolOptions;\n\t/** Options for the edit tool */\n\tedit?: EditToolOptions;\n\t/** Options for the write tool */\n\twrite?: WriteToolOptions;\n\t/** Options for the semantic_search tool */\n\tsemantic?: SemanticSearchToolOptions;\n\t/** Options for the fetch tool */\n\tfetch?: FetchToolOptions;\n\t/** Options for the web_search tool */\n\twebSearch?: WebSearchToolOptions;\n\t/** Options for the git_write tool */\n\tgitWrite?: GitWriteToolOptions;\n\t/** Options for the fs_ops tool */\n\tfsOps?: FsOpsToolOptions;\n\t/** Options for the db_run tool */\n\tdbRun?: DbRunToolOptions;\n}\n\n/**\n * Create coding tools configured for a specific working directory.\n */\nexport function createCodingTools(cwd: string, options?: ToolsOptions): Tool[] {\n\treturn [\n\t\tcreateReadTool(cwd, options?.read),\n\t\tcreateBashTool(cwd, options?.bash),\n\t\tcreateEditTool(cwd, options?.edit),\n\t\tcreateWriteTool(cwd, options?.write),\n\t];\n}\n\n/**\n * Create read-only tools configured for a specific working directory.\n */\nexport function createReadOnlyTools(cwd: string, options?: ToolsOptions): Tool[] {\n\tconst fetchOptions: FetchToolOptions = {\n\t\t...(options?.fetch ?? {}),\n\t\tresolveAllowedMethods:\n\t\t\toptions?.fetch?.resolveAllowedMethods ?? (() => getAllowedFetchMethodsForProfile(\"plan\")),\n\t};\n\n\treturn [\n\t\tcreateReadTool(cwd, options?.read),\n\t\tcreateGrepTool(cwd),\n\t\tcreateFindTool(cwd),\n\t\tcreateLsTool(cwd),\n\t\tcreateRgTool(cwd),\n\t\tcreateFdTool(cwd),\n\t\tcreateAstGrepTool(cwd),\n\t\tcreateCombyTool(cwd),\n\t\tcreateJqTool(cwd),\n\t\tcreateYqTool(cwd),\n\t\tcreateSemgrepTool(cwd),\n\t\tcreateSedTool(cwd),\n\t\tcreateSemanticSearchTool(cwd, options?.semantic),\n\t\tcreateFetchTool(cwd, fetchOptions),\n\t\tcreateWebSearchTool(cwd, options?.webSearch),\n\t\tcreateGitReadTool(cwd),\n\t];\n}\n\n/**\n * Create all tools configured for a specific working directory.\n */\nexport function createAllTools(cwd: string, options?: ToolsOptions): Record<ToolName, Tool> {\n\treturn {\n\t\tread: createReadTool(cwd, options?.read),\n\t\tbash: createBashTool(cwd, options?.bash),\n\t\tedit: createEditTool(cwd, options?.edit),\n\t\twrite: createWriteTool(cwd, options?.write),\n\t\tgrep: createGrepTool(cwd),\n\t\tfind: createFindTool(cwd),\n\t\tls: createLsTool(cwd),\n\t\trg: createRgTool(cwd),\n\t\tfd: createFdTool(cwd),\n\t\tast_grep: createAstGrepTool(cwd),\n\t\tcomby: createCombyTool(cwd),\n\t\tjq: createJqTool(cwd),\n\t\tyq: createYqTool(cwd),\n\t\tsemgrep: createSemgrepTool(cwd),\n\t\tsed: createSedTool(cwd),\n\t\tsemantic_search: createSemanticSearchTool(cwd, options?.semantic),\n\t\tfetch: createFetchTool(cwd, options?.fetch),\n\t\tweb_search: createWebSearchTool(cwd, options?.webSearch),\n\t\tgit_read: createGitReadTool(cwd),\n\t\tgit_write: createGitWriteTool(cwd, options?.gitWrite),\n\t\tfs_ops: createFsOpsTool(cwd, options?.fsOps),\n\t\ttest_run: createTestRunTool(cwd),\n\t\tlint_run: createLintRunTool(cwd),\n\t\ttypecheck_run: createTypecheckRunTool(cwd),\n\t\tdb_run: createDbRunTool(cwd, options?.dbRun),\n\t\ttodo_write: todoWriteTool,\n\t\ttodo_read: todoReadTool,\n\t};\n}\n\n/**\n * Create a filtered set of tools from a list of tool names.\n * Used by agent profiles and the Task tool to configure subagent capabilities.\n */\nexport function createToolsFromNames(cwd: string, names: string[], options?: ToolsOptions): Tool[] {\n\tconst all = createAllTools(cwd, options);\n\treturn names\n\t\t.filter((n): n is ToolName => n in all)\n\t\t.map((n) => all[n]);\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/tools/index.ts"],"names":[],"mappings":"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","sourcesContent":["export {\n\tcreateApplyPatchTool,\n\ttype ApplyPatchOperations,\n\ttype ApplyPatchToolDetails,\n\ttype ApplyPatchToolInput,\n\ttype ApplyPatchToolOptions,\n\tapplyPatchTool,\n} from \"./apply-patch.js\";\nexport {\n\tcreateAstGrepTool,\n\ttype AstGrepToolInput,\n\tastGrepTool,\n} from \"./ast-grep.js\";\nexport {\n\ttype BashOperations,\n\ttype BashSpawnContext,\n\ttype BashSpawnHook,\n\ttype BashToolDetails,\n\ttype BashToolInput,\n\ttype BashToolOptions,\n\tbashTool,\n\tcreateBashTool,\n} from \"./bash.js\";\nexport {\n\ttype CombyToolInput,\n\tcombyTool,\n\tcreateCombyTool,\n} from \"./comby.js\";\nexport {\n\tcreateEditTool,\n\ttype EditOperations,\n\ttype EditToolDetails,\n\ttype EditToolInput,\n\ttype EditToolOptions,\n\teditTool,\n} from \"./edit.js\";\nexport {\n\tcreateFetchTool,\n\ttype FetchToolDetails,\n\ttype FetchToolInput,\n\ttype FetchToolOptions,\n\ttype FetchMethod,\n\ttype FetchResponseFormat,\n\tDEFAULT_FETCH_TIMEOUT_SECONDS,\n\tDEFAULT_FETCH_MAX_BYTES,\n\tDEFAULT_FETCH_MAX_REDIRECTS,\n\tgetAllowedFetchMethodsForProfile,\n\tfetchTool,\n} from \"./fetch.js\";\nexport {\n\tcreateWebSearchTool,\n\ttype WebSearchAttemptDetail,\n\ttype WebSearchAttemptStatus,\n\ttype WebSearchFallbackMode,\n\ttype WebSearchProvider,\n\ttype WebSearchProviderMode,\n\ttype WebSearchRuntimeConfig,\n\ttype WebSearchSafeSearch,\n\ttype WebSearchSearchDepth,\n\ttype WebSearchToolDetails,\n\ttype WebSearchToolInput,\n\ttype WebSearchToolOptions,\n\tDEFAULT_WEB_SEARCH_MAX_RESULTS,\n\tDEFAULT_WEB_SEARCH_TIMEOUT_SECONDS,\n\twebSearchTool,\n} from \"./web-search.js\";\nexport {\n\ttype ExternalCliToolDetails,\n\ttype ExternalCliToolInput,\n\ttype ExternalCliToolOptions,\n\tcreateExternalCliTool,\n} from \"./external-cli.js\";\nexport {\n\tcreateFdTool,\n\ttype FdToolInput,\n\tfdTool,\n} from \"./fd.js\";\nexport {\n\tcreateFindTool,\n\ttype FindOperations,\n\ttype FindToolDetails,\n\ttype FindToolInput,\n\ttype FindToolOptions,\n\tfindTool,\n} from \"./find.js\";\nexport {\n\tcreateFsOpsTool,\n\ttype FsOpsToolDetails,\n\ttype FsOpsToolInput,\n\ttype FsOpsToolOptions,\n\tfsOpsTool,\n} from \"./fs-ops.js\";\nexport {\n\tcreateGrepTool,\n\ttype GrepOperations,\n\ttype GrepToolDetails,\n\ttype GrepToolInput,\n\ttype GrepToolOptions,\n\tgrepTool,\n} from \"./grep.js\";\nexport {\n\tcreateGitReadTool,\n\ttype GitReadToolDetails,\n\ttype GitReadToolInput,\n\ttype GitReadToolOptions,\n\tgitReadTool,\n} from \"./git-read.js\";\nexport {\n\tcreateGitWriteTool,\n\ttype GitWriteToolDetails,\n\ttype GitWriteToolInput,\n\ttype GitWriteToolOptions,\n\tgitWriteTool,\n} from \"./git-write.js\";\nexport {\n\tcreateJqTool,\n\ttype JqToolInput,\n\tjqTool,\n} from \"./jq.js\";\nexport {\n\tcreateDbRunTool,\n\ttype DbRunAction,\n\ttype DbRunAdapter,\n\ttype DbRunMigrateRunner,\n\ttype DbRunStatus,\n\ttype DbRunToolDetails,\n\ttype DbRunToolInput,\n\ttype DbRunToolOptions,\n\ttype DbToolsConnectionConfig,\n\ttype DbToolsMigrateConfig,\n\ttype DbToolsRuntimeConfig,\n\tdbRunTool,\n\tDEFAULT_DB_RUN_TIMEOUT_SECONDS,\n} from \"./db-run.js\";\nexport {\n\tcreateLintRunTool,\n\ttype LintRunMode,\n\ttype LintRunRunner,\n\ttype LintRunStatus,\n\ttype LintRunToolDetails,\n\ttype LintRunToolInput,\n\tlintRunTool,\n\tDEFAULT_LINT_RUN_TIMEOUT_SECONDS,\n} from \"./lint-run.js\";\nexport {\n\tcreateLsTool,\n\ttype LsOperations,\n\ttype LsToolDetails,\n\ttype LsToolInput,\n\ttype LsToolOptions,\n\tlsTool,\n} from \"./ls.js\";\nexport {\n\tcreateReadTool,\n\ttype ReadOperations,\n\ttype ReadToolDetails,\n\ttype ReadToolInput,\n\ttype ReadToolOptions,\n\treadTool,\n} from \"./read.js\";\nexport {\n\tcreateRgTool,\n\ttype RgToolInput,\n\trgTool,\n} from \"./rg.js\";\nexport {\n\tcreateSedTool,\n\ttype SedToolInput,\n\tsedTool,\n} from \"./sed.js\";\nexport {\n\tcreateSemgrepTool,\n\ttype SemgrepToolInput,\n\tsemgrepTool,\n} from \"./semgrep.js\";\nexport {\n\tcreateSemanticSearchTool,\n\ttype SemanticSearchToolInput,\n\ttype SemanticSearchToolOptions,\n\tsemanticSearchTool,\n} from \"./semantic-search.js\";\nexport {\n\tDEFAULT_MAX_BYTES,\n\tDEFAULT_MAX_LINES,\n\tformatSize,\n\ttype TruncationOptions,\n\ttype TruncationResult,\n\ttruncateHead,\n\ttruncateLine,\n\ttruncateTail,\n} from \"./truncate.js\";\nexport {\n\tcreateWriteTool,\n\ttype WriteOperations,\n\ttype WriteToolInput,\n\ttype WriteToolOptions,\n\twriteTool,\n} from \"./write.js\";\nexport {\n\ttype PermissionGrantScope,\n\tPermissionGrantStore,\n\ttype McpToolApprovalMode,\n\tgetToolPermissionSignature,\n\ttype ToolPermissionGuard,\n\ttype ToolPermissionRequest,\n\ttype ToolRequiredPermission,\n} from \"./permissions.js\";\nexport {\n\tcreateToolSearchTool,\n\ttype ToolSearchCatalogEntry,\n\ttype ToolSearchInput,\n\ttype ToolSearchOptions,\n} from \"./tool-search.js\";\nexport {\n\tcreateToolSuggestTool,\n\ttype ToolSuggestInput,\n\ttype ToolSuggestOptions,\n} from \"./tool-suggest.js\";\nexport {\n\tcreateTodoWriteTool,\n\tcreateTodoReadTool,\n\ttodoWriteTool,\n\ttodoReadTool,\n\tgetTaskFilePath,\n\ttype TodoTask,\n\ttype TodoTaskStatus,\n\ttype TodoWriteInput,\n\ttype TodoReadInput,\n} from \"./todo.js\";\nexport {\n\tcreateYqTool,\n\ttype YqToolInput,\n\tyqTool,\n} from \"./yq.js\";\nexport {\n\tcreateTaskTool,\n\ttype SubagentRunner,\n\ttype TaskToolProgress,\n\ttype TaskToolProgressPhase,\n\ttype TaskToolInput,\n\ttype TaskToolDetails,\n} from \"./task.js\";\nexport {\n\tcreateTestRunTool,\n\ttype TestRunRunner,\n\ttype TestRunStatus,\n\ttype TestRunToolDetails,\n\ttype TestRunToolInput,\n\ttestRunTool,\n\tDEFAULT_TEST_RUN_TIMEOUT_SECONDS,\n} from \"./test-run.js\";\nexport {\n\tcreateTypecheckRunTool,\n\ttype TypecheckRunItemDetails,\n\ttype TypecheckRunRunner,\n\ttype TypecheckRunStatus,\n\ttype TypecheckRunToolDetails,\n\ttype TypecheckRunToolInput,\n\ttypecheckRunTool,\n\tDEFAULT_TYPECHECK_RUN_TIMEOUT_SECONDS,\n} from \"./typecheck-run.js\";\n\nimport type { AgentTool } from \"@mariozechner/pi-agent-core\";\nimport { applyPatchTool, createApplyPatchTool, type ApplyPatchToolOptions } from \"./apply-patch.js\";\nimport { astGrepTool, createAstGrepTool } from \"./ast-grep.js\";\nimport { type BashToolOptions, bashTool, createBashTool } from \"./bash.js\";\nimport { combyTool, createCombyTool } from \"./comby.js\";\nimport { createEditTool, type EditToolOptions, editTool } from \"./edit.js\";\nimport {\n\tcreateFetchTool,\n\ttype FetchToolOptions,\n\tfetchTool,\n\tgetAllowedFetchMethodsForProfile,\n} from \"./fetch.js\";\nimport { createWebSearchTool, type WebSearchToolOptions, webSearchTool } from \"./web-search.js\";\nimport { createFdTool, fdTool } from \"./fd.js\";\nimport { createFindTool, findTool } from \"./find.js\";\nimport { createFsOpsTool, type FsOpsToolOptions, fsOpsTool } from \"./fs-ops.js\";\nimport { createGrepTool, grepTool } from \"./grep.js\";\nimport { createGitReadTool, gitReadTool } from \"./git-read.js\";\nimport { createGitWriteTool, type GitWriteToolOptions, gitWriteTool } from \"./git-write.js\";\nimport { createJqTool, jqTool } from \"./jq.js\";\nimport { createDbRunTool, type DbRunToolOptions, dbRunTool } from \"./db-run.js\";\nimport { createLintRunTool, lintRunTool } from \"./lint-run.js\";\nimport { createLsTool, lsTool } from \"./ls.js\";\nimport { createReadTool, type ReadToolOptions, readTool } from \"./read.js\";\nimport { createRgTool, rgTool } from \"./rg.js\";\nimport { createSedTool, sedTool } from \"./sed.js\";\nimport { createSemgrepTool, semgrepTool } from \"./semgrep.js\";\nimport {\n\tcreateSemanticSearchTool,\n\ttype SemanticSearchToolOptions,\n\tsemanticSearchTool,\n} from \"./semantic-search.js\";\nimport { createToolSearchTool, type ToolSearchCatalogEntry, toolSearchTool as defaultToolSearchTool } from \"./tool-search.js\";\nimport { createToolSuggestTool, toolSuggestTool as defaultToolSuggestTool } from \"./tool-suggest.js\";\nimport { createWriteTool, type WriteToolOptions, writeTool } from \"./write.js\";\nimport { createYqTool, yqTool } from \"./yq.js\";\nimport { todoWriteTool, todoReadTool } from \"./todo.js\";\nimport { createTestRunTool, testRunTool } from \"./test-run.js\";\nimport { createTypecheckRunTool, typecheckRunTool } from \"./typecheck-run.js\";\n\n/** Tool type (AgentTool from pi-ai) */\nexport type Tool = AgentTool<any>;\n\n// Default tools for full access mode (using process.cwd())\nexport const codingTools: Tool[] = [readTool, bashTool, editTool, writeTool];\n\nfunction buildCatalogFromTools(tools: Record<string, Tool>, activeNames?: Set<string>): ToolSearchCatalogEntry[] {\n\treturn Object.entries(tools).map(([name, tool]) => ({\n\t\tname,\n\t\tdescription: tool.description,\n\t\tactive: activeNames ? activeNames.has(name) : true,\n\t}));\n}\n\nconst prebuiltBaseTools = {\n\tread: readTool,\n\tbash: bashTool,\n\tedit: editTool,\n\twrite: writeTool,\n\tapply_patch: applyPatchTool,\n\tgrep: grepTool,\n\tfind: findTool,\n\tls: lsTool,\n\trg: rgTool,\n\tfd: fdTool,\n\tast_grep: astGrepTool,\n\tcomby: combyTool,\n\tjq: jqTool,\n\tyq: yqTool,\n\tsemgrep: semgrepTool,\n\tsed: sedTool,\n\tsemantic_search: semanticSearchTool,\n\tfetch: fetchTool,\n\tweb_search: webSearchTool,\n\tgit_read: gitReadTool,\n\tgit_write: gitWriteTool,\n\tfs_ops: fsOpsTool,\n\ttest_run: testRunTool,\n\tlint_run: lintRunTool,\n\ttypecheck_run: typecheckRunTool,\n\tdb_run: dbRunTool,\n\ttodo_write: todoWriteTool,\n\ttodo_read: todoReadTool,\n};\n\nlet prebuiltToolSearch: Tool = defaultToolSearchTool;\nlet prebuiltToolSuggest: Tool = defaultToolSuggestTool;\nconst resolvePrebuiltCatalog = (): ToolSearchCatalogEntry[] =>\n\tbuildCatalogFromTools({\n\t\t...prebuiltBaseTools,\n\t\ttool_search: prebuiltToolSearch,\n\t\ttool_suggest: prebuiltToolSuggest,\n\t});\n\nprebuiltToolSearch = createToolSearchTool({ resolveCatalog: resolvePrebuiltCatalog });\nprebuiltToolSuggest = createToolSuggestTool({ resolveCatalog: resolvePrebuiltCatalog });\n\n// All available tools (using process.cwd())\nexport const allTools = {\n\t...prebuiltBaseTools,\n\ttool_search: prebuiltToolSearch,\n\ttool_suggest: prebuiltToolSuggest,\n};\n\nexport const toolSearchTool = prebuiltToolSearch;\nexport const toolSuggestTool = prebuiltToolSuggest;\n\n// Read-only tools for exploration without modification (using process.cwd())\nexport const readOnlyTools: Tool[] = [\n\treadTool,\n\tgrepTool,\n\tfindTool,\n\tlsTool,\n\trgTool,\n\tfdTool,\n\tastGrepTool,\n\tcombyTool,\n\tjqTool,\n\tyqTool,\n\tsemgrepTool,\n\tsedTool,\n\tsemanticSearchTool,\n\tcreateFetchTool(process.cwd(), {\n\t\tresolveAllowedMethods: () => getAllowedFetchMethodsForProfile(\"plan\"),\n\t}),\n\twebSearchTool,\n\tgitReadTool,\n\tprebuiltToolSearch,\n\tprebuiltToolSuggest,\n];\n\nexport type ToolName = keyof typeof allTools;\n\nexport interface ToolsOptions {\n\t/** Options for the read tool */\n\tread?: ReadToolOptions;\n\t/** Options for the bash tool */\n\tbash?: BashToolOptions;\n\t/** Options for the edit tool */\n\tedit?: EditToolOptions;\n\t/** Options for the write tool */\n\twrite?: WriteToolOptions;\n\t/** Options for the apply_patch tool */\n\tapplyPatch?: ApplyPatchToolOptions;\n\t/** Options for the semantic_search tool */\n\tsemantic?: SemanticSearchToolOptions;\n\t/** Options for the fetch tool */\n\tfetch?: FetchToolOptions;\n\t/** Options for the web_search tool */\n\twebSearch?: WebSearchToolOptions;\n\t/** Options for the git_write tool */\n\tgitWrite?: GitWriteToolOptions;\n\t/** Options for the fs_ops tool */\n\tfsOps?: FsOpsToolOptions;\n\t/** Options for the db_run tool */\n\tdbRun?: DbRunToolOptions;\n\t/** Optional dynamic catalog source used by tool_search/tool_suggest. */\n\ttoolCatalog?: {\n\t\tresolveCatalog?: () => ToolSearchCatalogEntry[];\n\t};\n}\n\n/**\n * Create coding tools configured for a specific working directory.\n */\nexport function createCodingTools(cwd: string, options?: ToolsOptions): Tool[] {\n\treturn [\n\t\tcreateReadTool(cwd, options?.read),\n\t\tcreateBashTool(cwd, options?.bash),\n\t\tcreateEditTool(cwd, options?.edit),\n\t\tcreateWriteTool(cwd, options?.write),\n\t];\n}\n\n/**\n * Create read-only tools configured for a specific working directory.\n */\nexport function createReadOnlyTools(cwd: string, options?: ToolsOptions): Tool[] {\n\tconst fetchOptions: FetchToolOptions = {\n\t\t...(options?.fetch ?? {}),\n\t\tresolveAllowedMethods:\n\t\t\toptions?.fetch?.resolveAllowedMethods ?? (() => getAllowedFetchMethodsForProfile(\"plan\")),\n\t};\n\tconst baseReadOnlyTools: Tool[] = [\n\t\tcreateReadTool(cwd, options?.read),\n\t\tcreateGrepTool(cwd),\n\t\tcreateFindTool(cwd),\n\t\tcreateLsTool(cwd),\n\t\tcreateRgTool(cwd),\n\t\tcreateFdTool(cwd),\n\t\tcreateAstGrepTool(cwd),\n\t\tcreateCombyTool(cwd),\n\t\tcreateJqTool(cwd),\n\t\tcreateYqTool(cwd),\n\t\tcreateSemgrepTool(cwd),\n\t\tcreateSedTool(cwd),\n\t\tcreateSemanticSearchTool(cwd, options?.semantic),\n\t\tcreateFetchTool(cwd, fetchOptions),\n\t\tcreateWebSearchTool(cwd, options?.webSearch),\n\t\tcreateGitReadTool(cwd),\n\t];\n\n\tlet dynamicToolSearch: Tool = defaultToolSearchTool;\n\tlet dynamicToolSuggest: Tool = defaultToolSuggestTool;\n\tconst resolveCatalog =\n\t\toptions?.toolCatalog?.resolveCatalog ??\n\t\t(() =>\n\t\t\tbuildCatalogFromTools({\n\t\t\t\t...Object.fromEntries(baseReadOnlyTools.map((tool) => [tool.name, tool])),\n\t\t\t\ttool_search: dynamicToolSearch,\n\t\t\t\ttool_suggest: dynamicToolSuggest,\n\t\t\t}));\n\n\tdynamicToolSearch = createToolSearchTool({ resolveCatalog });\n\tdynamicToolSuggest = createToolSuggestTool({ resolveCatalog });\n\treturn [...baseReadOnlyTools, dynamicToolSearch, dynamicToolSuggest];\n}\n\n/**\n * Create all tools configured for a specific working directory.\n */\nexport function createAllTools(cwd: string, options?: ToolsOptions): Record<ToolName, Tool> {\n\tconst baseTools = {\n\t\tread: createReadTool(cwd, options?.read),\n\t\tbash: createBashTool(cwd, options?.bash),\n\t\tedit: createEditTool(cwd, options?.edit),\n\t\twrite: createWriteTool(cwd, options?.write),\n\t\tapply_patch: createApplyPatchTool(cwd, options?.applyPatch),\n\t\tgrep: createGrepTool(cwd),\n\t\tfind: createFindTool(cwd),\n\t\tls: createLsTool(cwd),\n\t\trg: createRgTool(cwd),\n\t\tfd: createFdTool(cwd),\n\t\tast_grep: createAstGrepTool(cwd),\n\t\tcomby: createCombyTool(cwd),\n\t\tjq: createJqTool(cwd),\n\t\tyq: createYqTool(cwd),\n\t\tsemgrep: createSemgrepTool(cwd),\n\t\tsed: createSedTool(cwd),\n\t\tsemantic_search: createSemanticSearchTool(cwd, options?.semantic),\n\t\tfetch: createFetchTool(cwd, options?.fetch),\n\t\tweb_search: createWebSearchTool(cwd, options?.webSearch),\n\t\tgit_read: createGitReadTool(cwd),\n\t\tgit_write: createGitWriteTool(cwd, options?.gitWrite),\n\t\tfs_ops: createFsOpsTool(cwd, options?.fsOps),\n\t\ttest_run: createTestRunTool(cwd),\n\t\tlint_run: createLintRunTool(cwd),\n\t\ttypecheck_run: createTypecheckRunTool(cwd),\n\t\tdb_run: createDbRunTool(cwd, options?.dbRun),\n\t\ttodo_write: todoWriteTool,\n\t\ttodo_read: todoReadTool,\n\t};\n\n\tlet dynamicToolSearch: Tool = defaultToolSearchTool;\n\tlet dynamicToolSuggest: Tool = defaultToolSuggestTool;\n\tconst resolveCatalog =\n\t\toptions?.toolCatalog?.resolveCatalog ??\n\t\t(() =>\n\t\t\tbuildCatalogFromTools({\n\t\t\t\t...baseTools,\n\t\t\t\ttool_search: dynamicToolSearch,\n\t\t\t\ttool_suggest: dynamicToolSuggest,\n\t\t\t}));\n\n\tdynamicToolSearch = createToolSearchTool({ resolveCatalog });\n\tdynamicToolSuggest = createToolSuggestTool({ resolveCatalog });\n\n\treturn {\n\t\t...baseTools,\n\t\ttool_search: dynamicToolSearch,\n\t\ttool_suggest: dynamicToolSuggest,\n\t} satisfies Record<ToolName, Tool>;\n}\n\n/**\n * Create a filtered set of tools from a list of tool names.\n * Used by agent profiles and the Task tool to configure subagent capabilities.\n */\nexport function createToolsFromNames(cwd: string, names: string[], options?: ToolsOptions): Tool[] {\n\tconst all = createAllTools(cwd, options);\n\treturn names\n\t\t.filter((n): n is ToolName => n in all)\n\t\t.map((n) => all[n]);\n}\n"]}
@@ -1,4 +1,6 @@
1
1
  export type ToolRequiredPermission = "read-only" | "workspace-write" | "danger-full-access";
2
+ export type McpToolApprovalMode = "auto" | "prompt" | "approve";
3
+ export type PermissionGrantScope = "once" | "turn" | "session";
2
4
  export interface ToolPermissionRequest {
3
5
  toolName: string;
4
6
  cwd: string;
@@ -6,6 +8,20 @@ export interface ToolPermissionRequest {
6
8
  summary: string;
7
9
  requiredPermission?: ToolRequiredPermission;
8
10
  toolSource?: "builtin" | "extension" | "custom" | "mcp";
11
+ mcpServerName?: string;
12
+ mcpToolName?: string;
13
+ mcpServerTrusted?: boolean;
14
+ mcpApprovalMode?: McpToolApprovalMode;
9
15
  }
10
16
  export type ToolPermissionGuard = (request: ToolPermissionRequest) => Promise<boolean> | boolean;
17
+ export declare function getToolPermissionSignature(request: ToolPermissionRequest): string;
18
+ export declare class PermissionGrantStore {
19
+ private readonly turnSignatures;
20
+ private readonly sessionSignatures;
21
+ isAllowed(request: ToolPermissionRequest): boolean;
22
+ allow(request: ToolPermissionRequest, scope: PermissionGrantScope): void;
23
+ resetTurn(): void;
24
+ resetSession(): void;
25
+ resetAll(): void;
26
+ }
11
27
  //# sourceMappingURL=permissions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../../../src/core/tools/permissions.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,sBAAsB,GAAG,WAAW,GAAG,iBAAiB,GAAG,oBAAoB,CAAC;AAE5F,MAAM,WAAW,qBAAqB;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,kBAAkB,CAAC,EAAE,sBAAsB,CAAC;IAC5C,UAAU,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,KAAK,CAAC;CACxD;AAED,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,EAAE,qBAAqB,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC"}
1
+ {"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../../../src/core/tools/permissions.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,sBAAsB,GAAG,WAAW,GAAG,iBAAiB,GAAG,oBAAoB,CAAC;AAC5F,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;AAChE,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;AAE/D,MAAM,WAAW,qBAAqB;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,kBAAkB,CAAC,EAAE,sBAAsB,CAAC;IAC5C,UAAU,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,KAAK,CAAC;IACxD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,eAAe,CAAC,EAAE,mBAAmB,CAAC;CACtC;AAED,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,EAAE,qBAAqB,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;AAEjG,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,qBAAqB,GAAG,MAAM,CAGjF;AAED,qBAAa,oBAAoB;IAChC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAqB;IACpD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAqB;IAEvD,SAAS,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO;IAKlD,KAAK,CAAC,OAAO,EAAE,qBAAqB,EAAE,KAAK,EAAE,oBAAoB,GAAG,IAAI;IAUxE,SAAS,IAAI,IAAI;IAIjB,YAAY,IAAI,IAAI;IAIpB,QAAQ,IAAI,IAAI;CAIhB"}
@@ -1,2 +1,35 @@
1
- export {};
1
+ export function getToolPermissionSignature(request) {
2
+ const summary = request.summary.trim().replace(/\s+/g, " ");
3
+ return `${request.toolName}:${summary}`;
4
+ }
5
+ export class PermissionGrantStore {
6
+ constructor() {
7
+ this.turnSignatures = new Set();
8
+ this.sessionSignatures = new Set();
9
+ }
10
+ isAllowed(request) {
11
+ const signature = getToolPermissionSignature(request);
12
+ return this.turnSignatures.has(signature) || this.sessionSignatures.has(signature);
13
+ }
14
+ allow(request, scope) {
15
+ if (scope === "once")
16
+ return;
17
+ const signature = getToolPermissionSignature(request);
18
+ if (scope === "turn") {
19
+ this.turnSignatures.add(signature);
20
+ return;
21
+ }
22
+ this.sessionSignatures.add(signature);
23
+ }
24
+ resetTurn() {
25
+ this.turnSignatures.clear();
26
+ }
27
+ resetSession() {
28
+ this.sessionSignatures.clear();
29
+ }
30
+ resetAll() {
31
+ this.resetTurn();
32
+ this.resetSession();
33
+ }
34
+ }
2
35
  //# sourceMappingURL=permissions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../../src/core/tools/permissions.ts"],"names":[],"mappings":"","sourcesContent":["export type ToolRequiredPermission = \"read-only\" | \"workspace-write\" | \"danger-full-access\";\n\nexport interface ToolPermissionRequest {\n\ttoolName: string;\n\tcwd: string;\n\tinput: Record<string, unknown>;\n\tsummary: string;\n\trequiredPermission?: ToolRequiredPermission;\n\ttoolSource?: \"builtin\" | \"extension\" | \"custom\" | \"mcp\";\n}\n\nexport type ToolPermissionGuard = (request: ToolPermissionRequest) => Promise<boolean> | boolean;\n"]}
1
+ {"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../../src/core/tools/permissions.ts"],"names":[],"mappings":"AAmBA,MAAM,UAAU,0BAA0B,CAAC,OAA8B;IACxE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC5D,OAAO,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,EAAE,CAAC;AACzC,CAAC;AAED,MAAM,OAAO,oBAAoB;IAAjC;QACkB,mBAAc,GAAG,IAAI,GAAG,EAAU,CAAC;QACnC,sBAAiB,GAAG,IAAI,GAAG,EAAU,CAAC;IA6BxD,CAAC;IA3BA,SAAS,CAAC,OAA8B;QACvC,MAAM,SAAS,GAAG,0BAA0B,CAAC,OAAO,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACpF,CAAC;IAED,KAAK,CAAC,OAA8B,EAAE,KAA2B;QAChE,IAAI,KAAK,KAAK,MAAM;YAAE,OAAO;QAC7B,MAAM,SAAS,GAAG,0BAA0B,CAAC,OAAO,CAAC,CAAC;QACtD,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;YACtB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACnC,OAAO;QACR,CAAC;QACD,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACvC,CAAC;IAED,SAAS;QACR,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;IAC7B,CAAC;IAED,YAAY;QACX,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;IAChC,CAAC;IAED,QAAQ;QACP,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,IAAI,CAAC,YAAY,EAAE,CAAC;IACrB,CAAC;CACD","sourcesContent":["export type ToolRequiredPermission = \"read-only\" | \"workspace-write\" | \"danger-full-access\";\nexport type McpToolApprovalMode = \"auto\" | \"prompt\" | \"approve\";\nexport type PermissionGrantScope = \"once\" | \"turn\" | \"session\";\n\nexport interface ToolPermissionRequest {\n\ttoolName: string;\n\tcwd: string;\n\tinput: Record<string, unknown>;\n\tsummary: string;\n\trequiredPermission?: ToolRequiredPermission;\n\ttoolSource?: \"builtin\" | \"extension\" | \"custom\" | \"mcp\";\n\tmcpServerName?: string;\n\tmcpToolName?: string;\n\tmcpServerTrusted?: boolean;\n\tmcpApprovalMode?: McpToolApprovalMode;\n}\n\nexport type ToolPermissionGuard = (request: ToolPermissionRequest) => Promise<boolean> | boolean;\n\nexport function getToolPermissionSignature(request: ToolPermissionRequest): string {\n\tconst summary = request.summary.trim().replace(/\\s+/g, \" \");\n\treturn `${request.toolName}:${summary}`;\n}\n\nexport class PermissionGrantStore {\n\tprivate readonly turnSignatures = new Set<string>();\n\tprivate readonly sessionSignatures = new Set<string>();\n\n\tisAllowed(request: ToolPermissionRequest): boolean {\n\t\tconst signature = getToolPermissionSignature(request);\n\t\treturn this.turnSignatures.has(signature) || this.sessionSignatures.has(signature);\n\t}\n\n\tallow(request: ToolPermissionRequest, scope: PermissionGrantScope): void {\n\t\tif (scope === \"once\") return;\n\t\tconst signature = getToolPermissionSignature(request);\n\t\tif (scope === \"turn\") {\n\t\t\tthis.turnSignatures.add(signature);\n\t\t\treturn;\n\t\t}\n\t\tthis.sessionSignatures.add(signature);\n\t}\n\n\tresetTurn(): void {\n\t\tthis.turnSignatures.clear();\n\t}\n\n\tresetSession(): void {\n\t\tthis.sessionSignatures.clear();\n\t}\n\n\tresetAll(): void {\n\t\tthis.resetTurn();\n\t\tthis.resetSession();\n\t}\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../../../src/core/tools/task.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../../../src/core/tools/task.ts"],"names":[],"mappings":"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"}
@@ -71,7 +71,7 @@ const systemPromptByProfile = {
71
71
  cycle_planner: "You are an IOSM cycle planner. Propose and align cycle goals with measurable outcomes and concrete risks.",
72
72
  full: "You are a software engineering agent. Execute the task end-to-end.",
73
73
  };
74
- const writeCapableTools = new Set(["bash", "edit", "write", "git_write", "fs_ops"]);
74
+ const writeCapableTools = new Set(["bash", "edit", "write", "apply_patch", "git_write", "fs_ops"]);
75
75
  const backgroundUnsafeTools = new Set(writeCapableTools);
76
76
  const writeCapableProfiles = new Set(Object.keys(toolsByProfile).filter((profileName) => toolsByProfile[profileName].some((tool) => writeCapableTools.has(tool))));
77
77
  const backgroundSafeProfiles = Object.keys(toolsByProfile).filter((profileName) => toolsByProfile[profileName].every((tool) => !backgroundUnsafeTools.has(tool)));
@@ -107,16 +107,29 @@ class Semaphore {
107
107
  this.active = 0;
108
108
  this.queue = [];
109
109
  }
110
- async acquire() {
110
+ async acquire(signal) {
111
+ if (signal?.aborted) {
112
+ throw new Error("Operation aborted");
113
+ }
111
114
  if (this.active < this.limit) {
112
115
  this.active += 1;
113
116
  return () => this.release();
114
117
  }
115
- await new Promise((resolve) => {
116
- this.queue.push(() => {
117
- this.active += 1;
118
- resolve();
119
- });
118
+ await new Promise((resolve, reject) => {
119
+ const waiter = { resolve, reject, signal };
120
+ if (signal) {
121
+ const onAbort = () => {
122
+ const index = this.queue.indexOf(waiter);
123
+ if (index >= 0) {
124
+ this.queue.splice(index, 1);
125
+ }
126
+ signal.removeEventListener("abort", onAbort);
127
+ reject(new Error("Operation aborted"));
128
+ };
129
+ waiter.onAbort = onAbort;
130
+ signal.addEventListener("abort", onAbort, { once: true });
131
+ }
132
+ this.queue.push(waiter);
120
133
  });
121
134
  return () => this.release();
122
135
  }
@@ -124,7 +137,11 @@ class Semaphore {
124
137
  this.active = Math.max(0, this.active - 1);
125
138
  const next = this.queue.shift();
126
139
  if (next) {
127
- next();
140
+ if (next.signal && next.onAbort) {
141
+ next.signal.removeEventListener("abort", next.onAbort);
142
+ }
143
+ this.active += 1;
144
+ next.resolve();
128
145
  }
129
146
  }
130
147
  isIdle() {
@@ -136,12 +153,30 @@ class Mutex {
136
153
  this.locked = false;
137
154
  this.waiters = [];
138
155
  }
139
- async acquire() {
156
+ async acquire(signal) {
157
+ if (signal?.aborted) {
158
+ throw new Error("Operation aborted");
159
+ }
140
160
  if (!this.locked) {
141
161
  this.locked = true;
142
162
  return () => this.release();
143
163
  }
144
- await new Promise((resolve) => this.waiters.push(resolve));
164
+ await new Promise((resolve, reject) => {
165
+ const waiter = { resolve, reject, signal };
166
+ if (signal) {
167
+ const onAbort = () => {
168
+ const index = this.waiters.indexOf(waiter);
169
+ if (index >= 0) {
170
+ this.waiters.splice(index, 1);
171
+ }
172
+ signal.removeEventListener("abort", onAbort);
173
+ reject(new Error("Operation aborted"));
174
+ };
175
+ waiter.onAbort = onAbort;
176
+ signal.addEventListener("abort", onAbort, { once: true });
177
+ }
178
+ this.waiters.push(waiter);
179
+ });
145
180
  this.locked = true;
146
181
  return () => this.release();
147
182
  }
@@ -149,7 +184,11 @@ class Mutex {
149
184
  this.locked = false;
150
185
  const next = this.waiters.shift();
151
186
  if (next) {
152
- next();
187
+ if (next.signal && next.onAbort) {
188
+ next.signal.removeEventListener("abort", next.onAbort);
189
+ }
190
+ this.locked = true;
191
+ next.resolve();
153
192
  }
154
193
  }
155
194
  isIdle() {
@@ -1249,7 +1288,7 @@ export function createTaskTool(cwd, runner, options) {
1249
1288
  };
1250
1289
  }
1251
1290
  const lock = getOrCreateWriteLock(trimmed);
1252
- const release = await lock.acquire();
1291
+ const release = await lock.acquire(runtimeAbortSignal);
1253
1292
  heldWriteLocks.set(normalizedKey, { count: 1, release });
1254
1293
  return () => {
1255
1294
  const current = heldWriteLocks.get(normalizedKey);
@@ -1314,10 +1353,10 @@ export function createTaskTool(cwd, runner, options) {
1314
1353
  ? getOrCreateOrchestrationSemaphore(cwd, orchestrationRunId)
1315
1354
  : undefined;
1316
1355
  if (orchestrationSemaphore) {
1317
- releaseRunSlot = await orchestrationSemaphore.acquire();
1356
+ releaseRunSlot = await orchestrationSemaphore.acquire(runtimeAbortSignal);
1318
1357
  throwIfAborted();
1319
1358
  }
1320
- releaseSlot = await subagentSemaphore.acquire();
1359
+ releaseSlot = await subagentSemaphore.acquire(runtimeAbortSignal);
1321
1360
  throwIfAborted();
1322
1361
  updateTrackedTaskStatus("running");
1323
1362
  if (writeCapableProfiles.has(effectiveProfile)) {
@@ -1600,7 +1639,11 @@ export function createTaskTool(cwd, runner, options) {
1600
1639
  subagentSessionId = firstPass.sessionId;
1601
1640
  runStats = firstPass.stats;
1602
1641
  let parsedDelegation = parseDelegationRequests(output, effectiveDelegationDepth > 0 ? effectiveMaxDelegations : 0);
1603
- if (minDelegationsPreferred > 0 && parsedDelegation.requests.length < minDelegationsPreferred) {
1642
+ let impossibleMatch = output.match(/^\s*DELEGATION_IMPOSSIBLE\s*:\s*(.+)$/im);
1643
+ const shouldRetryDelegationEnforcement = minDelegationsPreferred > 0 &&
1644
+ parsedDelegation.requests.length < minDelegationsPreferred &&
1645
+ !impossibleMatch;
1646
+ if (shouldRetryDelegationEnforcement) {
1604
1647
  emitProgress({
1605
1648
  kind: "subagent_progress",
1606
1649
  phase: "running",
@@ -1623,11 +1666,11 @@ export function createTaskTool(cwd, runner, options) {
1623
1666
  subagentSessionId = secondPass.sessionId ?? subagentSessionId;
1624
1667
  runStats = secondPass.stats ?? runStats;
1625
1668
  parsedDelegation = parseDelegationRequests(output, effectiveDelegationDepth > 0 ? effectiveMaxDelegations : 0);
1669
+ impossibleMatch = output.match(/^\s*DELEGATION_IMPOSSIBLE\s*:\s*(.+)$/im);
1626
1670
  }
1627
1671
  if (minDelegationsPreferred > 0 &&
1628
1672
  parsedDelegation.requests.length === 0 &&
1629
1673
  strictDelegationContract) {
1630
- const impossibleMatch = output.match(/^\s*DELEGATION_IMPOSSIBLE\s*:\s*(.+)$/im);
1631
1674
  if (!impossibleMatch) {
1632
1675
  const synthesizedRequests = synthesizeDelegationRequests({
1633
1676
  description,
@@ -1645,7 +1688,6 @@ export function createTaskTool(cwd, runner, options) {
1645
1688
  }
1646
1689
  }
1647
1690
  if (minDelegationsPreferred > 0 && parsedDelegation.requests.length < minDelegationsPreferred) {
1648
- const impossibleMatch = output.match(/^\s*DELEGATION_IMPOSSIBLE\s*:\s*(.+)$/im);
1649
1691
  const impossibleReason = impossibleMatch?.[1]?.trim() ?? "not provided";
1650
1692
  if (strictDelegationContract && parsedDelegation.requests.length === 0 && !impossibleMatch) {
1651
1693
  throw new Error(`Delegation contract violated: expected >=${minDelegationsPreferred} delegates, got ${parsedDelegation.requests.length}. ` +
@@ -2184,8 +2226,11 @@ export function createTaskTool(cwd, runner, options) {
2184
2226
  };
2185
2227
  childOutput = await runChildPass(delegatePrompt);
2186
2228
  let parsedChildDelegation = parseDelegationRequests(childOutput, effectiveDelegationDepth > 1 ? effectiveMaxDelegations : 0);
2187
- if (childMinDelegationsPreferred > 0 &&
2188
- parsedChildDelegation.requests.length < childMinDelegationsPreferred) {
2229
+ let childImpossibleMatch = childOutput.match(/^\s*DELEGATION_IMPOSSIBLE\s*:\s*(.+)$/im);
2230
+ const shouldRetryChildDelegationEnforcement = childMinDelegationsPreferred > 0 &&
2231
+ parsedChildDelegation.requests.length < childMinDelegationsPreferred &&
2232
+ !childImpossibleMatch;
2233
+ if (shouldRetryChildDelegationEnforcement) {
2189
2234
  emitProgress({
2190
2235
  kind: "subagent_progress",
2191
2236
  phase: "running",
@@ -2211,12 +2256,12 @@ export function createTaskTool(cwd, runner, options) {
2211
2256
  ].join("\n");
2212
2257
  childOutput = await runChildPass(enforcedChildPrompt);
2213
2258
  parsedChildDelegation = parseDelegationRequests(childOutput, effectiveDelegationDepth > 1 ? effectiveMaxDelegations : 0);
2259
+ childImpossibleMatch = childOutput.match(/^\s*DELEGATION_IMPOSSIBLE\s*:\s*(.+)$/im);
2214
2260
  }
2215
2261
  if (childMinDelegationsPreferred > 0 &&
2216
2262
  parsedChildDelegation.requests.length === 0 &&
2217
2263
  strictDelegationContract) {
2218
- const impossibleMatch = childOutput.match(/^\s*DELEGATION_IMPOSSIBLE\s*:\s*(.+)$/im);
2219
- if (!impossibleMatch) {
2264
+ if (!childImpossibleMatch) {
2220
2265
  const synthesizedChildRequests = synthesizeDelegationRequests({
2221
2266
  description: request.description,
2222
2267
  prompt: request.prompt,
@@ -2234,11 +2279,10 @@ export function createTaskTool(cwd, runner, options) {
2234
2279
  }
2235
2280
  if (childMinDelegationsPreferred > 0 &&
2236
2281
  parsedChildDelegation.requests.length < childMinDelegationsPreferred) {
2237
- const impossibleMatch = childOutput.match(/^\s*DELEGATION_IMPOSSIBLE\s*:\s*(.+)$/im);
2238
- const impossibleReason = impossibleMatch?.[1]?.trim() ?? "not provided";
2282
+ const impossibleReason = childImpossibleMatch?.[1]?.trim() ?? "not provided";
2239
2283
  if (strictDelegationContract &&
2240
2284
  parsedChildDelegation.requests.length === 0 &&
2241
- !impossibleMatch) {
2285
+ !childImpossibleMatch) {
2242
2286
  throw new Error(`Delegation contract violated for child ${index + 1}: expected >=${childMinDelegationsPreferred} nested delegates, got ${parsedChildDelegation.requests.length}. ` +
2243
2287
  `Provide nested <delegate_task> fan-out or "DELEGATION_IMPOSSIBLE: <reason>".`);
2244
2288
  }