@burtson-labs/agent-core 1.6.16 → 1.6.18
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/README.md +2 -0
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -1
- package/dist/index.js.map +1 -1
- package/dist/mcp/activation.js +16 -8
- package/dist/mcp/activation.js.map +1 -1
- package/dist/mcp/clientPool.js +40 -22
- package/dist/mcp/clientPool.js.map +1 -1
- package/dist/mcp/server.js +16 -10
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/toolAdapter.js +21 -11
- package/dist/mcp/toolAdapter.js.map +1 -1
- package/dist/providers/deterministic-provider.d.ts +1 -1
- package/dist/providers/deterministic-provider.d.ts.map +1 -1
- package/dist/runtime/AgentRuntime.d.ts +2 -2
- package/dist/runtime/AgentRuntime.d.ts.map +1 -1
- package/dist/security/secretPatterns.js +4 -2
- package/dist/security/secretPatterns.js.map +1 -1
- package/dist/telemetry/otlpExporter.d.ts +69 -0
- package/dist/telemetry/otlpExporter.d.ts.map +1 -0
- package/dist/telemetry/otlpExporter.js +321 -0
- package/dist/telemetry/otlpExporter.js.map +1 -0
- package/dist/tools/ask-user-tool.js +8 -4
- package/dist/tools/ask-user-tool.js.map +1 -1
- package/dist/tools/compactMessages.js +6 -3
- package/dist/tools/compactMessages.js.map +1 -1
- package/dist/tools/core-tools.js +151 -81
- package/dist/tools/core-tools.js.map +1 -1
- package/dist/tools/git-tools.js +22 -11
- package/dist/tools/git-tools.js.map +1 -1
- package/dist/tools/language-adapters.d.ts +1 -1
- package/dist/tools/language-adapters.d.ts.map +1 -1
- package/dist/tools/language-adapters.js +36 -18
- package/dist/tools/language-adapters.js.map +1 -1
- package/dist/tools/loop/finalAnswerNudges.js +12 -6
- package/dist/tools/loop/finalAnswerNudges.js.map +1 -1
- package/dist/tools/loop/goalAnchor.d.ts.map +1 -1
- package/dist/tools/loop/goalAnchor.js +2 -1
- package/dist/tools/loop/goalAnchor.js.map +1 -1
- package/dist/tools/loop/llmStream.js +11 -8
- package/dist/tools/loop/llmStream.js.map +1 -1
- package/dist/tools/loop/loopShared.d.ts +20 -0
- package/dist/tools/loop/loopShared.d.ts.map +1 -0
- package/dist/tools/loop/loopShared.js +105 -0
- package/dist/tools/loop/loopShared.js.map +1 -0
- package/dist/tools/loop/parallelExecute.d.ts +1 -1
- package/dist/tools/loop/parallelExecute.js +2 -1
- package/dist/tools/loop/parallelExecute.js.map +1 -1
- package/dist/tools/loop/singleToolExecute.js +8 -4
- package/dist/tools/loop/singleToolExecute.js.map +1 -1
- package/dist/tools/loop/turnSetup.js +9 -6
- package/dist/tools/loop/turnSetup.js.map +1 -1
- package/dist/tools/ocr.d.ts.map +1 -1
- package/dist/tools/ocr.js +7 -5
- package/dist/tools/ocr.js.map +1 -1
- package/dist/tools/post-edit-checks.js +25 -13
- package/dist/tools/post-edit-checks.js.map +1 -1
- package/dist/tools/skill-loader.d.ts +1 -1
- package/dist/tools/skill-loader.d.ts.map +1 -1
- package/dist/tools/skill-loader.js +14 -7
- package/dist/tools/skill-loader.js.map +1 -1
- package/dist/tools/skill-registry.js +2 -1
- package/dist/tools/skill-registry.js.map +1 -1
- package/dist/tools/skills/mail-search-skill.js +16 -9
- package/dist/tools/skills/mail-search-skill.js.map +1 -1
- package/dist/tools/skills/plan-skill.js +4 -2
- package/dist/tools/skills/plan-skill.js.map +1 -1
- package/dist/tools/skills/semantic-search-skill.js +12 -6
- package/dist/tools/skills/semantic-search-skill.js.map +1 -1
- package/dist/tools/skills/test-gen-skill.js +8 -4
- package/dist/tools/skills/test-gen-skill.js.map +1 -1
- package/dist/tools/tool-registry.d.ts +17 -0
- package/dist/tools/tool-registry.d.ts.map +1 -1
- package/dist/tools/tool-registry.js +110 -30
- package/dist/tools/tool-registry.js.map +1 -1
- package/dist/tools/tool-use-loop.d.ts +16 -8
- package/dist/tools/tool-use-loop.d.ts.map +1 -1
- package/dist/tools/tool-use-loop.js +144 -160
- package/dist/tools/tool-use-loop.js.map +1 -1
- package/dist/tools/tool-use-parser.d.ts +33 -0
- package/dist/tools/tool-use-parser.d.ts.map +1 -1
- package/dist/tools/tool-use-parser.js +105 -28
- package/dist/tools/tool-use-parser.js.map +1 -1
- package/dist/tools/toolAvailabilityDetector.d.ts +0 -24
- package/dist/tools/toolAvailabilityDetector.d.ts.map +1 -1
- package/dist/tools/toolAvailabilityDetector.js +26 -12
- package/dist/tools/toolAvailabilityDetector.js.map +1 -1
- package/dist/tools/unified-patch.js +16 -8
- package/dist/tools/unified-patch.js.map +1 -1
- package/dist/utils/event-emitter.d.ts +1 -1
- package/dist/utils/event-emitter.d.ts.map +1 -1
- package/package.json +20 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-gen-skill.js","sourceRoot":"","sources":["../../../src/tools/skills/test-gen-skill.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAKH,MAAM,YAAY,GAAc;IAC9B,IAAI,EAAE,WAAW;IACjB,WAAW,EAAE,wHAAwH;IACrI,UAAU,EAAE;QACV,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,mFAAmF,EAAE;QACpH,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uFAAuF,EAAE;KACzH;IACD,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,GAAyB;QAC7C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC;QACrC,IAAI,GAAW,CAAC;QAChB,IAAI,IAAc,CAAC;QAEnB,IAAI,MAAM,EAAE,CAAC;YACX,GAAG,GAAG,MAAM,CAAC;YACb,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;YACf,IAAI,MAAM,CAAC,MAAM;
|
|
1
|
+
{"version":3,"file":"test-gen-skill.js","sourceRoot":"","sources":["../../../src/tools/skills/test-gen-skill.ts"],"names":[],"mappings":"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"}
|
|
@@ -31,6 +31,23 @@ export declare class ToolRegistry {
|
|
|
31
31
|
* When you have finished using tools and have a final answer, respond normally.
|
|
32
32
|
*/
|
|
33
33
|
buildSystemPromptBlock(): string;
|
|
34
|
+
/**
|
|
35
|
+
* Compact variant of `buildSystemPromptBlock` for small-tier models.
|
|
36
|
+
* The full XML block measures ~27 KB with the default CLI tool set —
|
|
37
|
+
* the single largest component of a small model's prompt, and the
|
|
38
|
+
* reason the default config used to overflow its own num_ctx on turn
|
|
39
|
+
* one (Ollama then truncates the context HEAD, which is where the
|
|
40
|
+
* identity + tool protocol live — producing narrated-instead-of-acted
|
|
41
|
+
* tool calls and fabricated results).
|
|
42
|
+
*
|
|
43
|
+
* Edit-critical tools (where param discipline matters most) keep their
|
|
44
|
+
* full XML definitions; everything else renders as a one-line
|
|
45
|
+
* signature. The `## How to Use Tools` protocol envelope is IDENTICAL
|
|
46
|
+
* to the full block — the loop's parsers and detectors key off it.
|
|
47
|
+
*/
|
|
48
|
+
buildCompactSystemPromptBlock(fullDefinitionTools?: ReadonlySet<string>): string;
|
|
49
|
+
/** Shared XML rendering for one tool — used by both prompt-block builders. */
|
|
50
|
+
private renderToolXml;
|
|
34
51
|
/**
|
|
35
52
|
* Builds tool definitions in JSON schema format for models with native tool calling.
|
|
36
53
|
* Compatible with Ollama's `tools: [...]` field.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-registry.d.ts","sourceRoot":"","sources":["../../src/tools/tool-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAgD,MAAM,cAAc,CAAC;AAE5F;;;;;;GAMG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgC;IAEtD,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI;IAK/B,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,IAAI;IAOrC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAIxC,MAAM,IAAI,SAAS,EAAE;IAIrB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;;;;;;;;;;;;;;OAeG;IACH,sBAAsB,IAAI,MAAM;
|
|
1
|
+
{"version":3,"file":"tool-registry.d.ts","sourceRoot":"","sources":["../../src/tools/tool-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAgD,MAAM,cAAc,CAAC;AAE5F;;;;;;GAMG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgC;IAEtD,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI;IAK/B,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,IAAI;IAOrC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAIxC,MAAM,IAAI,SAAS,EAAE;IAIrB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;;;;;;;;;;;;;;OAeG;IACH,sBAAsB,IAAI,MAAM;IAgBhC;;;;;;;;;;;;;OAaG;IACH,6BAA6B,CAAC,mBAAmB,GAAE,WAAW,CAAC,MAAM,CAAiC,GAAG,MAAM;IAiC/G,8EAA8E;IAC9E,OAAO,CAAC,aAAa;IAoBrB;;;;;;;;;;;;OAYG;IACH,sBAAsB,IAAI,KAAK,CAAC;QAC9B,IAAI,EAAE,UAAU,CAAC;QACjB,QAAQ,EAAE;YACR,IAAI,EAAE,MAAM,CAAC;YACb,WAAW,EAAE,MAAM,CAAC;YACpB,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ,CAAC;gBACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;gBACpD,QAAQ,EAAE,MAAM,EAAE,CAAC;aACpB,CAAC;SACH,CAAC;KACH,CAAC;CAgBH"}
|
|
@@ -51,27 +51,10 @@ class ToolRegistry {
|
|
|
51
51
|
* When you have finished using tools and have a final answer, respond normally.
|
|
52
52
|
*/
|
|
53
53
|
buildSystemPromptBlock() {
|
|
54
|
-
if (this.tools.size === 0)
|
|
54
|
+
if (this.tools.size === 0) {
|
|
55
55
|
return '';
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
// Surface the JSON-Schema-derived type hint inline in the
|
|
59
|
-
// description so the model knows when to emit a nested object
|
|
60
|
-
// or an array instead of a bare string. Without this hint the
|
|
61
|
-
// XML-prompt format describes every param as opaque text,
|
|
62
|
-
// which is what produced the "Expected object, received
|
|
63
|
-
// string" failures on createFilter / modifyMessageLabels.
|
|
64
|
-
const typeHint = formatParamTypeHint(p.schema);
|
|
65
|
-
const desc = typeHint ? `${typeHint} ${p.description}` : p.description;
|
|
66
|
-
return ` <param name="${p.name}"${p.required ? ' required="true"' : ''}>${desc}</param>`;
|
|
67
|
-
}).join('\n');
|
|
68
|
-
return [
|
|
69
|
-
`<tool name="${tool.name}">`,
|
|
70
|
-
` <description>${tool.description}</description>`,
|
|
71
|
-
params,
|
|
72
|
-
`</tool>`
|
|
73
|
-
].join('\n');
|
|
74
|
-
}).join('\n\n');
|
|
56
|
+
}
|
|
57
|
+
const toolDefs = this.getAll().map(tool => this.renderToolXml(tool)).join('\n\n');
|
|
75
58
|
return [
|
|
76
59
|
'## Available Tools',
|
|
77
60
|
'',
|
|
@@ -79,14 +62,73 @@ class ToolRegistry {
|
|
|
79
62
|
'',
|
|
80
63
|
toolDefs,
|
|
81
64
|
'',
|
|
82
|
-
|
|
65
|
+
...TOOL_PROTOCOL_LINES
|
|
66
|
+
].join('\n');
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Compact variant of `buildSystemPromptBlock` for small-tier models.
|
|
70
|
+
* The full XML block measures ~27 KB with the default CLI tool set —
|
|
71
|
+
* the single largest component of a small model's prompt, and the
|
|
72
|
+
* reason the default config used to overflow its own num_ctx on turn
|
|
73
|
+
* one (Ollama then truncates the context HEAD, which is where the
|
|
74
|
+
* identity + tool protocol live — producing narrated-instead-of-acted
|
|
75
|
+
* tool calls and fabricated results).
|
|
76
|
+
*
|
|
77
|
+
* Edit-critical tools (where param discipline matters most) keep their
|
|
78
|
+
* full XML definitions; everything else renders as a one-line
|
|
79
|
+
* signature. The `## How to Use Tools` protocol envelope is IDENTICAL
|
|
80
|
+
* to the full block — the loop's parsers and detectors key off it.
|
|
81
|
+
*/
|
|
82
|
+
buildCompactSystemPromptBlock(fullDefinitionTools = DEFAULT_FULL_DEFINITION_TOOLS) {
|
|
83
|
+
if (this.tools.size === 0) {
|
|
84
|
+
return '';
|
|
85
|
+
}
|
|
86
|
+
const all = this.getAll();
|
|
87
|
+
const fullDefs = all
|
|
88
|
+
.filter(tool => fullDefinitionTools.has(tool.name))
|
|
89
|
+
.map(tool => this.renderToolXml(tool));
|
|
90
|
+
const compact = all
|
|
91
|
+
.filter(tool => !fullDefinitionTools.has(tool.name))
|
|
92
|
+
.map(tool => {
|
|
93
|
+
const params = tool.parameters.map(p => {
|
|
94
|
+
const type = p.schema?.type && p.schema.type !== 'string' ? `:${p.schema.type}` : '';
|
|
95
|
+
return `${p.name}${p.required ? '' : '?'}${type}`;
|
|
96
|
+
}).join(', ');
|
|
97
|
+
return `- ${tool.name}(${params}) — ${firstSentence(tool.description)}`;
|
|
98
|
+
});
|
|
99
|
+
return [
|
|
100
|
+
'## Available Tools',
|
|
101
|
+
'',
|
|
102
|
+
'You have access to the following tools to help you complete tasks:',
|
|
103
|
+
'',
|
|
104
|
+
...fullDefs,
|
|
105
|
+
'',
|
|
106
|
+
'Additional tools — same call protocol. Params marked `?` are optional;',
|
|
107
|
+
'`:object` / `:array` params take JSON values, not strings:',
|
|
83
108
|
'',
|
|
84
|
-
|
|
85
|
-
'<tool_call>{"name": "tool_name", "params": {"param1": "value1"}}</tool_call>',
|
|
109
|
+
...compact,
|
|
86
110
|
'',
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
111
|
+
...TOOL_PROTOCOL_LINES
|
|
112
|
+
].join('\n');
|
|
113
|
+
}
|
|
114
|
+
/** Shared XML rendering for one tool — used by both prompt-block builders. */
|
|
115
|
+
renderToolXml(tool) {
|
|
116
|
+
const params = tool.parameters.map(p => {
|
|
117
|
+
// Surface the JSON-Schema-derived type hint inline in the
|
|
118
|
+
// description so the model knows when to emit a nested object
|
|
119
|
+
// or an array instead of a bare string. Without this hint the
|
|
120
|
+
// XML-prompt format describes every param as opaque text,
|
|
121
|
+
// which is what produced the "Expected object, received
|
|
122
|
+
// string" failures on createFilter / modifyMessageLabels.
|
|
123
|
+
const typeHint = formatParamTypeHint(p.schema);
|
|
124
|
+
const desc = typeHint ? `${typeHint} ${p.description}` : p.description;
|
|
125
|
+
return ` <param name="${p.name}"${p.required ? ' required="true"' : ''}>${desc}</param>`;
|
|
126
|
+
}).join('\n');
|
|
127
|
+
return [
|
|
128
|
+
`<tool name="${tool.name}">`,
|
|
129
|
+
` <description>${tool.description}</description>`,
|
|
130
|
+
params,
|
|
131
|
+
`</tool>`
|
|
90
132
|
].join('\n');
|
|
91
133
|
}
|
|
92
134
|
/**
|
|
@@ -153,9 +195,44 @@ function renderParamForNativeSchema(p) {
|
|
|
153
195
|
* difference between createFilter working and Google rejecting the
|
|
154
196
|
* request with "Expected object, received string."
|
|
155
197
|
*/
|
|
198
|
+
/**
|
|
199
|
+
* The tool-call protocol envelope. MUST stay byte-identical between the
|
|
200
|
+
* full and compact prompt blocks — the loop's stream parser, the
|
|
201
|
+
* fabrication detectors, and several eval fixtures key off this text.
|
|
202
|
+
*/
|
|
203
|
+
const TOOL_PROTOCOL_LINES = [
|
|
204
|
+
'## How to Use Tools',
|
|
205
|
+
'',
|
|
206
|
+
'To call a tool, respond with ONLY a tool call on its own line:',
|
|
207
|
+
'<tool_call>{"name": "tool_name", "params": {"param1": "value1"}}</tool_call>',
|
|
208
|
+
'',
|
|
209
|
+
'Wait for the tool result before continuing.',
|
|
210
|
+
'When you have all the information needed and are ready to give your final response,',
|
|
211
|
+
'respond normally without any <tool_call> tags.',
|
|
212
|
+
];
|
|
213
|
+
/**
|
|
214
|
+
* Tools that keep full XML definitions in the compact block — the ones
|
|
215
|
+
* where param discipline (exact-match find strings, line ranges, hashes)
|
|
216
|
+
* is the difference between a clean edit and a corrupted file.
|
|
217
|
+
*/
|
|
218
|
+
const DEFAULT_FULL_DEFINITION_TOOLS = new Set([
|
|
219
|
+
'read_file',
|
|
220
|
+
'apply_edit',
|
|
221
|
+
'replace_range',
|
|
222
|
+
'write_file',
|
|
223
|
+
'run_command',
|
|
224
|
+
'search_code'
|
|
225
|
+
]);
|
|
226
|
+
/** First sentence of a tool description, capped so one tool = one line. */
|
|
227
|
+
function firstSentence(description) {
|
|
228
|
+
const period = description.indexOf('. ');
|
|
229
|
+
const sentence = period === -1 ? description : description.slice(0, period + 1);
|
|
230
|
+
return sentence.length > 160 ? `${sentence.slice(0, 157)}…` : sentence;
|
|
231
|
+
}
|
|
156
232
|
function formatParamTypeHint(schema) {
|
|
157
|
-
if (!schema || !schema.type || schema.type === 'string')
|
|
233
|
+
if (!schema || !schema.type || schema.type === 'string') {
|
|
158
234
|
return '';
|
|
235
|
+
}
|
|
159
236
|
if (schema.type === 'object') {
|
|
160
237
|
const keys = schema.properties ? Object.keys(schema.properties).slice(0, 6) : [];
|
|
161
238
|
const more = schema.properties && Object.keys(schema.properties).length > 6 ? ', …' : '';
|
|
@@ -177,12 +254,15 @@ function formatParamTypeHint(schema) {
|
|
|
177
254
|
}
|
|
178
255
|
function renderSchemaFragment(s) {
|
|
179
256
|
const out = {};
|
|
180
|
-
if (s.type)
|
|
257
|
+
if (s.type) {
|
|
181
258
|
out.type = s.type;
|
|
182
|
-
|
|
259
|
+
}
|
|
260
|
+
if (s.description) {
|
|
183
261
|
out.description = s.description;
|
|
184
|
-
|
|
262
|
+
}
|
|
263
|
+
if (s.enum) {
|
|
185
264
|
out.enum = s.enum;
|
|
265
|
+
}
|
|
186
266
|
if (s.type === 'object' && s.properties) {
|
|
187
267
|
out.properties = Object.fromEntries(Object.entries(s.properties).map(([k, v]) => [k, renderSchemaFragment(v)]));
|
|
188
268
|
if (s.required && s.required.length > 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-registry.js","sourceRoot":"","sources":["../../src/tools/tool-registry.ts"],"names":[],"mappings":";;;AAEA;;;;;;GAMG;AACH,MAAa,YAAY;IAAzB;QACmB,UAAK,GAAG,IAAI,GAAG,EAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"tool-registry.js","sourceRoot":"","sources":["../../src/tools/tool-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,7 +17,8 @@
|
|
|
17
17
|
* the host should use the Ollama `tools: [...]` field instead.
|
|
18
18
|
*/
|
|
19
19
|
import type { ToolExecutionContext, ChatFn, ToolLoopMessage } from './tool-types';
|
|
20
|
-
import { ToolRegistry } from './tool-registry';
|
|
20
|
+
import type { ToolRegistry } from './tool-registry';
|
|
21
|
+
import { sleep, isRetryableLlmError, tagRetryableLlmError, summarizeLlmError, isContinuationPrompt } from './loop/loopShared';
|
|
21
22
|
export interface ToolUseLoopOptions {
|
|
22
23
|
/** Maximum number of tool call rounds before forcing a final answer. Default: 10. */
|
|
23
24
|
maxIterations?: number;
|
|
@@ -38,6 +39,17 @@ export interface ToolUseLoopOptions {
|
|
|
38
39
|
* incomplete tool envelope. Defaults to true.
|
|
39
40
|
*/
|
|
40
41
|
nativeToolFailureFallback?: boolean;
|
|
42
|
+
/**
|
|
43
|
+
* Render the text-protocol tool block in compact signature form —
|
|
44
|
+
* full XML kept only for the edit-critical tools where param
|
|
45
|
+
* discipline matters. Hosts set this for small-tier models: the full
|
|
46
|
+
* ~27 KB block is the largest single cause of context-head truncation
|
|
47
|
+
* on 4B-class models (which silently deletes the identity and tool
|
|
48
|
+
* protocol sections and produces narrated-instead-of-executed tool
|
|
49
|
+
* calls). No effect when nativeTools is true — no text block is
|
|
50
|
+
* injected at all on that path.
|
|
51
|
+
*/
|
|
52
|
+
compactToolBlock?: boolean;
|
|
41
53
|
/** Called on each event for external observability (streaming UI updates, telemetry). */
|
|
42
54
|
emitEvent?: (type: string, payload?: unknown) => void;
|
|
43
55
|
/**
|
|
@@ -126,7 +138,7 @@ export interface ToolUseLoopOptions {
|
|
|
126
138
|
*
|
|
127
139
|
* Why: smaller models (4B–12B) generate malformed JSON in the tail
|
|
128
140
|
* of a multi-file emission once their effective output budget is
|
|
129
|
-
* exhausted. on a
|
|
141
|
+
* exhausted. on a React/TS build — even a
|
|
130
142
|
* strong model produced a malformed `todo_write` after writing four
|
|
131
143
|
* files of ~7 KB each in one assistant turn. Serialising lets the
|
|
132
144
|
* model react to each result before committing further output, and
|
|
@@ -161,11 +173,7 @@ export interface ToolUseLoopOptions {
|
|
|
161
173
|
*/
|
|
162
174
|
isSubagent?: boolean;
|
|
163
175
|
}
|
|
164
|
-
export
|
|
165
|
-
export declare function isRetryableLlmError(error: unknown): boolean;
|
|
166
|
-
export declare function tagRetryableLlmError(error: unknown): void;
|
|
167
|
-
export declare function summarizeLlmError(error: unknown): string;
|
|
168
|
-
export declare function isContinuationPrompt(text: string): boolean;
|
|
176
|
+
export { sleep, isRetryableLlmError, tagRetryableLlmError, summarizeLlmError, isContinuationPrompt, };
|
|
169
177
|
/**
|
|
170
178
|
* "Noticing prompt" detector. Catches user messages that are asking
|
|
171
179
|
* about state ("are we using these?", "did you update X?", "where's
|
|
@@ -173,7 +181,7 @@ export declare function isContinuationPrompt(text: string): boolean;
|
|
|
173
181
|
* work. These signal that the user spotted a gap in the prior turn
|
|
174
182
|
* and wants the agent to address it — NOT continue the prior plan.
|
|
175
183
|
*
|
|
176
|
-
* Real failure mode captured 2026-05-25 on a
|
|
184
|
+
* Real failure mode captured 2026-05-25 on a local React refactor:
|
|
177
185
|
* user asked "I dont think we actually are using these new files are
|
|
178
186
|
* we?" after the agent wrote data files but never wired them into
|
|
179
187
|
* App.jsx. Bandit read the question as a generic "keep going" prompt,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-use-loop.d.ts","sourceRoot":"","sources":["../../src/tools/tool-use-loop.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"tool-use-loop.d.ts","sourceRoot":"","sources":["../../src/tools/tool-use-loop.ts"],"names":[],"mappings":"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"}
|