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.
- package/CHANGELOG.md +32 -0
- package/README.md +18 -1
- package/dist/cli/args.d.ts +2 -1
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +16 -3
- package/dist/cli/args.js.map +1 -1
- package/dist/core/agent-profiles.d.ts.map +1 -1
- package/dist/core/agent-profiles.js +3 -0
- package/dist/core/agent-profiles.js.map +1 -1
- package/dist/core/agent-session.d.ts +2 -0
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +26 -10
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/agent-teams.d.ts.map +1 -1
- package/dist/core/agent-teams.js +12 -9
- package/dist/core/agent-teams.js.map +1 -1
- package/dist/core/checkpoint/fs-checkpoint.d.ts +14 -0
- package/dist/core/checkpoint/fs-checkpoint.d.ts.map +1 -0
- package/dist/core/checkpoint/fs-checkpoint.js +211 -0
- package/dist/core/checkpoint/fs-checkpoint.js.map +1 -0
- package/dist/core/command-dispatcher.d.ts +2 -0
- package/dist/core/command-dispatcher.d.ts.map +1 -1
- package/dist/core/command-dispatcher.js +78 -13
- package/dist/core/command-dispatcher.js.map +1 -1
- package/dist/core/mcp/cli.d.ts.map +1 -1
- package/dist/core/mcp/cli.js +26 -0
- package/dist/core/mcp/cli.js.map +1 -1
- package/dist/core/mcp/config.d.ts.map +1 -1
- package/dist/core/mcp/config.js +55 -0
- package/dist/core/mcp/config.js.map +1 -1
- package/dist/core/mcp/index.d.ts +1 -1
- package/dist/core/mcp/index.d.ts.map +1 -1
- package/dist/core/mcp/index.js.map +1 -1
- package/dist/core/mcp/runtime.d.ts +3 -1
- package/dist/core/mcp/runtime.d.ts.map +1 -1
- package/dist/core/mcp/runtime.js +21 -2
- package/dist/core/mcp/runtime.js.map +1 -1
- package/dist/core/mcp/types.d.ts +30 -2
- package/dist/core/mcp/types.d.ts.map +1 -1
- package/dist/core/mcp/types.js.map +1 -1
- package/dist/core/package-manager.d.ts +10 -0
- package/dist/core/package-manager.d.ts.map +1 -1
- package/dist/core/package-manager.js +100 -2
- package/dist/core/package-manager.js.map +1 -1
- package/dist/core/policy/engine.d.ts +77 -0
- package/dist/core/policy/engine.d.ts.map +1 -0
- package/dist/core/policy/engine.js +614 -0
- package/dist/core/policy/engine.js.map +1 -0
- package/dist/core/policy/index.d.ts +2 -0
- package/dist/core/policy/index.d.ts.map +1 -0
- package/dist/core/policy/index.js +2 -0
- package/dist/core/policy/index.js.map +1 -0
- package/dist/core/sandbox/executor.d.ts +13 -0
- package/dist/core/sandbox/executor.d.ts.map +1 -0
- package/dist/core/sandbox/executor.js +64 -0
- package/dist/core/sandbox/executor.js.map +1 -0
- package/dist/core/sdk.d.ts +2 -2
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +3 -3
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/security/index.d.ts +3 -0
- package/dist/core/security/index.d.ts.map +1 -0
- package/dist/core/security/index.js +3 -0
- package/dist/core/security/index.js.map +1 -0
- package/dist/core/security/source-security.d.ts +43 -0
- package/dist/core/security/source-security.d.ts.map +1 -0
- package/dist/core/security/source-security.js +94 -0
- package/dist/core/security/source-security.js.map +1 -0
- package/dist/core/security/trust-ledger.d.ts +24 -0
- package/dist/core/security/trust-ledger.d.ts.map +1 -0
- package/dist/core/security/trust-ledger.js +66 -0
- package/dist/core/security/trust-ledger.js.map +1 -0
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +128 -15
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/settings-manager.d.ts +6 -0
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +22 -1
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/system-prompt.d.ts.map +1 -1
- package/dist/core/system-prompt.js +9 -2
- package/dist/core/system-prompt.js.map +1 -1
- package/dist/core/task-plan.d.ts +1 -0
- package/dist/core/task-plan.d.ts.map +1 -1
- package/dist/core/task-plan.js +103 -0
- package/dist/core/task-plan.js.map +1 -1
- package/dist/core/tools/apply-patch.d.ts +29 -0
- package/dist/core/tools/apply-patch.d.ts.map +1 -0
- package/dist/core/tools/apply-patch.js +167 -0
- package/dist/core/tools/apply-patch.js.map +1 -0
- package/dist/core/tools/bash.d.ts.map +1 -1
- package/dist/core/tools/bash.js +15 -1
- package/dist/core/tools/bash.js.map +1 -1
- package/dist/core/tools/git-common.d.ts.map +1 -1
- package/dist/core/tools/git-common.js +15 -1
- package/dist/core/tools/git-common.js.map +1 -1
- package/dist/core/tools/index.d.ts +20 -2
- package/dist/core/tools/index.d.ts.map +1 -1
- package/dist/core/tools/index.js +85 -25
- package/dist/core/tools/index.js.map +1 -1
- package/dist/core/tools/permissions.d.ts +16 -0
- package/dist/core/tools/permissions.d.ts.map +1 -1
- package/dist/core/tools/permissions.js +34 -1
- package/dist/core/tools/permissions.js.map +1 -1
- package/dist/core/tools/task.d.ts.map +1 -1
- package/dist/core/tools/task.js +68 -24
- package/dist/core/tools/task.js.map +1 -1
- package/dist/core/tools/tool-search.d.ts +24 -0
- package/dist/core/tools/tool-search.d.ts.map +1 -0
- package/dist/core/tools/tool-search.js +85 -0
- package/dist/core/tools/tool-search.js.map +1 -0
- package/dist/core/tools/tool-suggest.d.ts +18 -0
- package/dist/core/tools/tool-suggest.d.ts.map +1 -0
- package/dist/core/tools/tool-suggest.js +94 -0
- package/dist/core/tools/tool-suggest.js.map +1 -0
- package/dist/core/tools/verification-runner.d.ts.map +1 -1
- package/dist/core/tools/verification-runner.js +15 -1
- package/dist/core/tools/verification-runner.js.map +1 -1
- package/dist/core/unified-exec.d.ts +39 -0
- package/dist/core/unified-exec.d.ts.map +1 -0
- package/dist/core/unified-exec.js +286 -0
- package/dist/core/unified-exec.js.map +1 -0
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +93 -11
- package/dist/main.js.map +1 -1
- package/dist/modes/acp/acp-mode.d.ts +17 -0
- package/dist/modes/acp/acp-mode.d.ts.map +1 -0
- package/dist/modes/acp/acp-mode.js +352 -0
- package/dist/modes/acp/acp-mode.js.map +1 -0
- package/dist/modes/index.d.ts +2 -1
- package/dist/modes/index.d.ts.map +1 -1
- package/dist/modes/index.js +1 -0
- package/dist/modes/index.js.map +1 -1
- package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
- package/dist/modes/interactive/components/tool-execution.js +217 -0
- package/dist/modes/interactive/components/tool-execution.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +8 -0
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +159 -72
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-client.d.ts +25 -1
- package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-client.js +33 -0
- package/dist/modes/rpc/rpc-client.js.map +1 -1
- package/dist/modes/rpc/rpc-mode.d.ts +13 -1
- package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-mode.js +189 -28
- package/dist/modes/rpc/rpc-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-types.d.ts +54 -1
- package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-types.js.map +1 -1
- package/dist/utils/tools-manager.d.ts.map +1 -1
- package/dist/utils/tools-manager.js +96 -9
- package/dist/utils/tools-manager.js.map +1 -1
- package/docs/README.md +2 -0
- package/docs/acp-rpc-mapping.md +38 -0
- package/docs/configuration.generated.md +81 -0
- package/docs/configuration.md +7 -0
- package/package.json +4 -1
package/dist/core/tools/index.js
CHANGED
|
@@ -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
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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;
|
|
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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"}
|
package/dist/core/tools/task.js
CHANGED
|
@@ -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
|
-
|
|
117
|
-
|
|
118
|
-
|
|
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) =>
|
|
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
|
-
|
|
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
|
-
|
|
2188
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
!
|
|
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
|
}
|