@burtson-labs/agent-core 1.6.17 → 1.6.19
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/dist/tools/core-tools.js +6 -6
- package/dist/tools/core-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 +12 -6
- package/dist/tools/language-adapters.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 +5 -5
- 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/turnSetup.js +3 -3
- package/dist/tools/loop/turnSetup.js.map +1 -1
- package/dist/tools/skills/mail-search-skill.js +2 -2
- package/dist/tools/skills/mail-search-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 +100 -25
- package/dist/tools/tool-registry.js.map +1 -1
- package/dist/tools/tool-use-loop.d.ts +15 -7
- package/dist/tools/tool-use-loop.d.ts.map +1 -1
- package/dist/tools/tool-use-loop.js +130 -158
- 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 +49 -0
- 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 +24 -11
- package/dist/tools/toolAvailabilityDetector.js.map +1 -1
- package/package.json +20 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loopShared.d.ts","sourceRoot":"","sources":["../../../src/tools/loop/loopShared.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/C;AAYD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAa3D;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAKzD;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAGxD;AA2BD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAe1D"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Shared, dependency-free primitives used by the tool-use loop and its
|
|
4
|
+
* sub-steps (llmStream, turnSetup, …).
|
|
5
|
+
*
|
|
6
|
+
* These live in a leaf module on purpose. They used to sit in tool-use-loop.ts,
|
|
7
|
+
* but the sub-steps import them while tool-use-loop.ts imports the sub-steps —
|
|
8
|
+
* that back-edge formed an import cycle. esbuild resolves a cycle by wrapping
|
|
9
|
+
* the module in a lazy initializer and exposing its exports through a namespace
|
|
10
|
+
* object, and `bun build --compile` (notably when cross-compiling) could then
|
|
11
|
+
* tree-shake the lazily-initialized `createToolUseLoop` body away, leaving a
|
|
12
|
+
* dangling `(0, ns.createToolUseLoop)` reference that crashed at runtime.
|
|
13
|
+
* Keeping these helpers in a leaf module breaks the cycle. See the regression
|
|
14
|
+
* test in loopShared.test.ts.
|
|
15
|
+
*/
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.sleep = sleep;
|
|
18
|
+
exports.isRetryableLlmError = isRetryableLlmError;
|
|
19
|
+
exports.tagRetryableLlmError = tagRetryableLlmError;
|
|
20
|
+
exports.summarizeLlmError = summarizeLlmError;
|
|
21
|
+
exports.isContinuationPrompt = isContinuationPrompt;
|
|
22
|
+
function sleep(ms) {
|
|
23
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
24
|
+
}
|
|
25
|
+
function getErrorCode(error) {
|
|
26
|
+
return typeof error === 'object' && error !== null && 'code' in error
|
|
27
|
+
? String(error.code ?? '')
|
|
28
|
+
: undefined;
|
|
29
|
+
}
|
|
30
|
+
function getErrorMessage(error) {
|
|
31
|
+
return error instanceof Error ? error.message : String(error);
|
|
32
|
+
}
|
|
33
|
+
function isRetryableLlmError(error) {
|
|
34
|
+
const code = getErrorCode(error);
|
|
35
|
+
if (code === 'USER_ABORT') {
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
const message = getErrorMessage(error);
|
|
39
|
+
if (/\b429\b|rate limit/i.test(message)) {
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
return (code === 'WATCHDOG' ||
|
|
43
|
+
/\b5\d\d\b/.test(message) ||
|
|
44
|
+
/Upstream model request failed/i.test(message) ||
|
|
45
|
+
/ECONNREFUSED|ECONNRESET|ETIMEDOUT|EAI_AGAIN|socket hang up|fetch failed|network error|terminated|UND_ERR/i.test(message));
|
|
46
|
+
}
|
|
47
|
+
function tagRetryableLlmError(error) {
|
|
48
|
+
if (error instanceof Error) {
|
|
49
|
+
const tagged = error;
|
|
50
|
+
if (!tagged.code) {
|
|
51
|
+
tagged.code = 'UPSTREAM_MODEL';
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
function summarizeLlmError(error) {
|
|
56
|
+
const message = getErrorMessage(error).replace(/\s+/g, ' ').trim();
|
|
57
|
+
return message.length > 180 ? `${message.slice(0, 177)}...` : message;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Detects "keep going" / "continue" / "yes" style prompts that
|
|
61
|
+
* carry no real goal content. The goal-anchor block uses the most recent
|
|
62
|
+
* user message as the recall text; when that text is "good lets keep
|
|
63
|
+
* going" the anchor degenerates into "remind yourself to keep going",
|
|
64
|
+
* which gives the model nothing to anchor on after 20 iterations of
|
|
65
|
+
* drift. Real on a 60-iteration linter-fix
|
|
66
|
+
* turn: every anchor injection cited "good lets keep going" as the
|
|
67
|
+
* goal. Detector lets callers walk back to a prior substantive prompt
|
|
68
|
+
* instead.
|
|
69
|
+
*
|
|
70
|
+
* Length cap (60 chars) + normalized-phrase match keeps false positives
|
|
71
|
+
* down — a sentence like "keep going on the auth refactor for the
|
|
72
|
+
* user-service" is longer than 60 chars and reads as a real goal, so it
|
|
73
|
+
* stays a goal.
|
|
74
|
+
*/
|
|
75
|
+
const CONTINUATION_PROMPT_PHRASES = new Set([
|
|
76
|
+
'continue', 'keep going', 'go on', 'proceed', 'next', 'more',
|
|
77
|
+
'please continue', 'carry on', 'finish', 'finish it', 'finish up', 'wrap up', 'wrap it up',
|
|
78
|
+
'good', 'great', 'nice', 'cool', 'sweet', 'perfect', 'ok', 'okay', 'k', 'yes', 'y', 'yep', 'yeah', 'ack', 'done',
|
|
79
|
+
"let's continue", 'lets continue', "let's keep going", 'lets keep going',
|
|
80
|
+
'good keep going', 'good lets keep going', "good let's keep going",
|
|
81
|
+
'good continue', 'ok continue', 'okay continue'
|
|
82
|
+
]);
|
|
83
|
+
function isContinuationPrompt(text) {
|
|
84
|
+
const trimmed = text.trim();
|
|
85
|
+
if (trimmed.length === 0 || trimmed.length > 60) {
|
|
86
|
+
return false;
|
|
87
|
+
}
|
|
88
|
+
// Normalize: lowercase, drop non-word/space punctuation, collapse whitespace.
|
|
89
|
+
const norm = trimmed
|
|
90
|
+
.toLowerCase()
|
|
91
|
+
.replace(/[^\w\s']/g, ' ')
|
|
92
|
+
.replace(/\s+/g, ' ')
|
|
93
|
+
.trim();
|
|
94
|
+
if (CONTINUATION_PROMPT_PHRASES.has(norm)) {
|
|
95
|
+
return true;
|
|
96
|
+
}
|
|
97
|
+
// Permit "please <phrase>" and "<phrase> please" wrappings.
|
|
98
|
+
for (const phrase of CONTINUATION_PROMPT_PHRASES) {
|
|
99
|
+
if (norm === `please ${phrase}` || norm === `${phrase} please`) {
|
|
100
|
+
return true;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
return false;
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=loopShared.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loopShared.js","sourceRoot":"","sources":["../../../src/tools/loop/loopShared.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;GAaG;;AAEH,sBAEC;AAYD,kDAaC;AAED,oDAKC;AAED,8CAGC;AA2BD,oDAeC;AAjFD,SAAgB,KAAK,CAAC,EAAU;IAC9B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,YAAY,CAAC,KAAc;IAClC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,MAAM,IAAI,KAAK;QACnE,CAAC,CAAC,MAAM,CAAE,KAA4B,CAAC,IAAI,IAAI,EAAE,CAAC;QAClD,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACrC,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAChE,CAAC;AAED,SAAgB,mBAAmB,CAAC,KAAc;IAChD,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IACjC,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;QAAA,OAAO,KAAK,CAAC;IAAA,CAAC;IAE1C,MAAM,OAAO,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IACvC,IAAI,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAAA,OAAO,KAAK,CAAC;IAAA,CAAC;IAExD,OAAO,CACL,IAAI,KAAK,UAAU;QACnB,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC;QACzB,gCAAgC,CAAC,IAAI,CAAC,OAAO,CAAC;QAC9C,2GAA2G,CAAC,IAAI,CAAC,OAAO,CAAC,CAC1H,CAAC;AACJ,CAAC;AAED,SAAgB,oBAAoB,CAAC,KAAc;IACjD,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,KAAkC,CAAC;QAClD,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YAAA,MAAM,CAAC,IAAI,GAAG,gBAAgB,CAAC;QAAA,CAAC;IACrD,CAAC;AACH,CAAC;AAED,SAAgB,iBAAiB,CAAC,KAAc;IAC9C,MAAM,OAAO,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACnE,OAAO,OAAO,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;AACxE,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,2BAA2B,GAAG,IAAI,GAAG,CAAC;IAC1C,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM;IAC5D,iBAAiB,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY;IAC1F,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAChH,gBAAgB,EAAE,eAAe,EAAE,kBAAkB,EAAE,iBAAiB;IACxE,iBAAiB,EAAE,sBAAsB,EAAE,uBAAuB;IAClE,eAAe,EAAE,aAAa,EAAE,eAAe;CAChD,CAAC,CAAC;AAEH,SAAgB,oBAAoB,CAAC,IAAY;IAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;QAAA,OAAO,KAAK,CAAC;IAAA,CAAC;IAChE,8EAA8E;IAC9E,MAAM,IAAI,GAAG,OAAO;SACjB,WAAW,EAAE;SACb,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC;SACzB,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;SACpB,IAAI,EAAE,CAAC;IACV,IAAI,2BAA2B,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAAA,OAAO,IAAI,CAAC;IAAA,CAAC;IACzD,4DAA4D;IAC5D,KAAK,MAAM,MAAM,IAAI,2BAA2B,EAAE,CAAC;QACjD,IAAI,IAAI,KAAK,UAAU,MAAM,EAAE,IAAI,IAAI,KAAK,GAAG,MAAM,SAAS,EAAE,CAAC;YAAA,OAAO,IAAI,CAAC;QAAA,CAAC;IAChF,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* Why the serial mode exists: smaller models (4B–12B) generate
|
|
15
15
|
* malformed JSON in the tail of a multi-file emission once their
|
|
16
16
|
* effective output budget is exhausted. on a
|
|
17
|
-
*
|
|
17
|
+
* React/TS build — even a strong model produced a malformed
|
|
18
18
|
* `todo_write` after writing four files of ~7 KB each in one
|
|
19
19
|
* assistant turn. Serialising lets the model react to each result
|
|
20
20
|
* before committing further output, and gives the user one approval
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.resolveTurnGoal = resolveTurnGoal;
|
|
4
|
-
const
|
|
4
|
+
const loopShared_1 = require("./loopShared");
|
|
5
5
|
/**
|
|
6
6
|
* Resolve the per-turn goal anchor from the seed message history.
|
|
7
7
|
*
|
|
@@ -30,7 +30,7 @@ function resolveTurnGoal(args) {
|
|
|
30
30
|
originalGoal = msg.content;
|
|
31
31
|
}
|
|
32
32
|
}
|
|
33
|
-
if (originalGoal && (0,
|
|
33
|
+
if (originalGoal && (0, loopShared_1.isContinuationPrompt)(originalGoal)) {
|
|
34
34
|
for (let i = seedMessages.length - 1; i >= 0; i--) {
|
|
35
35
|
const m = seedMessages[i];
|
|
36
36
|
if (m.role !== 'user' || typeof m.content !== 'string') {
|
|
@@ -40,7 +40,7 @@ function resolveTurnGoal(args) {
|
|
|
40
40
|
if (!c) {
|
|
41
41
|
continue;
|
|
42
42
|
}
|
|
43
|
-
if (!(0,
|
|
43
|
+
if (!(0, loopShared_1.isContinuationPrompt)(c)) {
|
|
44
44
|
originalGoal = m.content;
|
|
45
45
|
break;
|
|
46
46
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"turnSetup.js","sourceRoot":"","sources":["../../../src/tools/loop/turnSetup.ts"],"names":[],"mappings":";;AA6CA,0CAuBC;AA1DD,
|
|
1
|
+
{"version":3,"file":"turnSetup.js","sourceRoot":"","sources":["../../../src/tools/loop/turnSetup.ts"],"names":[],"mappings":";;AA6CA,0CAuBC;AA1DD,6CAAoD;AAmBpD;;;;;;;;;;;;;;;GAeG;AACH,SAAgB,eAAe,CAAC,IAAyB;IACvD,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;IAC9B,IAAI,YAAY,GAAG,EAAE,CAAC;IACtB,IAAI,oBAAoB,GAAG,CAAC,CAAC;IAC7B,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;QAC/B,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;YACjF,IAAI,YAAY,EAAE,CAAC;gBAAA,oBAAoB,EAAE,CAAC;YAAA,CAAC;YAC3C,YAAY,GAAG,GAAG,CAAC,OAAO,CAAC;QAC7B,CAAC;IACH,CAAC;IACD,IAAI,YAAY,IAAI,IAAA,iCAAoB,EAAC,YAAY,CAAC,EAAE,CAAC;QACvD,KAAK,IAAI,CAAC,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAClD,MAAM,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;gBAAA,SAAS;YAAA,CAAC;YACnE,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAC3B,IAAI,CAAC,CAAC,EAAE,CAAC;gBAAA,SAAS;YAAA,CAAC;YACnB,IAAI,CAAC,IAAA,iCAAoB,EAAC,CAAC,CAAC,EAAE,CAAC;gBAC7B,YAAY,GAAG,CAAC,CAAC,OAAO,CAAC;gBACzB,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,CAAC;AAChD,CAAC"}
|
|
@@ -165,7 +165,7 @@ function buildQuery(opts) {
|
|
|
165
165
|
* Pull the metadata fields we surface in the search result list. mdls
|
|
166
166
|
* output looks like:
|
|
167
167
|
* kMDItemSubject = "FW: DFS Open API"
|
|
168
|
-
* kMDItemAuthors = ("
|
|
168
|
+
* kMDItemAuthors = ("Jane Doe <jane@example.com>")
|
|
169
169
|
* kMDItemContentCreationDate = 2026-04-29 16:01:30 +0000
|
|
170
170
|
* Parse the right-hand side per key, falling back to '' on missing.
|
|
171
171
|
*/
|
|
@@ -205,7 +205,7 @@ const mailSearchTool = {
|
|
|
205
205
|
'scan and times out at 30s on inboxes with thousands of messages. macOS only.',
|
|
206
206
|
parameters: [
|
|
207
207
|
{ name: 'query', description: 'Free-text search (matches in author, subject, or body).' },
|
|
208
|
-
{ name: 'from', description: 'Filter by sender substring (e.g. "alex" or "
|
|
208
|
+
{ name: 'from', description: 'Filter by sender substring (e.g. "alex" or "example.com").' },
|
|
209
209
|
{ name: 'subject', description: 'Filter by subject substring (e.g. "DFS").' },
|
|
210
210
|
{ name: 'since', description: 'ISO date (YYYY-MM-DD); only messages after this date.' },
|
|
211
211
|
{ name: 'limit', description: 'Max messages to return. Default 20, capped at 50.' }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mail-search-skill.js","sourceRoot":"","sources":["../../../src/tools/skills/mail-search-skill.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"mail-search-skill.js","sourceRoot":"","sources":["../../../src/tools/skills/mail-search-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"}
|
|
@@ -54,25 +54,7 @@ class ToolRegistry {
|
|
|
54
54
|
if (this.tools.size === 0) {
|
|
55
55
|
return '';
|
|
56
56
|
}
|
|
57
|
-
const toolDefs = this.getAll().map(tool =>
|
|
58
|
-
const params = tool.parameters.map(p => {
|
|
59
|
-
// Surface the JSON-Schema-derived type hint inline in the
|
|
60
|
-
// description so the model knows when to emit a nested object
|
|
61
|
-
// or an array instead of a bare string. Without this hint the
|
|
62
|
-
// XML-prompt format describes every param as opaque text,
|
|
63
|
-
// which is what produced the "Expected object, received
|
|
64
|
-
// string" failures on createFilter / modifyMessageLabels.
|
|
65
|
-
const typeHint = formatParamTypeHint(p.schema);
|
|
66
|
-
const desc = typeHint ? `${typeHint} ${p.description}` : p.description;
|
|
67
|
-
return ` <param name="${p.name}"${p.required ? ' required="true"' : ''}>${desc}</param>`;
|
|
68
|
-
}).join('\n');
|
|
69
|
-
return [
|
|
70
|
-
`<tool name="${tool.name}">`,
|
|
71
|
-
` <description>${tool.description}</description>`,
|
|
72
|
-
params,
|
|
73
|
-
`</tool>`
|
|
74
|
-
].join('\n');
|
|
75
|
-
}).join('\n\n');
|
|
57
|
+
const toolDefs = this.getAll().map(tool => this.renderToolXml(tool)).join('\n\n');
|
|
76
58
|
return [
|
|
77
59
|
'## Available Tools',
|
|
78
60
|
'',
|
|
@@ -80,14 +62,73 @@ class ToolRegistry {
|
|
|
80
62
|
'',
|
|
81
63
|
toolDefs,
|
|
82
64
|
'',
|
|
83
|
-
|
|
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,
|
|
84
105
|
'',
|
|
85
|
-
'
|
|
86
|
-
'
|
|
106
|
+
'Additional tools — same call protocol. Params marked `?` are optional;',
|
|
107
|
+
'`:object` / `:array` params take JSON values, not strings:',
|
|
87
108
|
'',
|
|
88
|
-
|
|
89
|
-
'
|
|
90
|
-
|
|
109
|
+
...compact,
|
|
110
|
+
'',
|
|
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>`
|
|
91
132
|
].join('\n');
|
|
92
133
|
}
|
|
93
134
|
/**
|
|
@@ -154,6 +195,40 @@ function renderParamForNativeSchema(p) {
|
|
|
154
195
|
* difference between createFilter working and Google rejecting the
|
|
155
196
|
* request with "Expected object, received string."
|
|
156
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
|
+
}
|
|
157
232
|
function formatParamTypeHint(schema) {
|
|
158
233
|
if (!schema || !schema.type || schema.type === 'string') {
|
|
159
234
|
return '';
|
|
@@ -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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"}
|
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
*/
|
|
19
19
|
import type { ToolExecutionContext, ChatFn, ToolLoopMessage } from './tool-types';
|
|
20
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,KAAK,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":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAClF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAWpD,OAAO,EACL,KAAK,EACL,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,EACjB,oBAAoB,EACrB,MAAM,mBAAmB,CAAC;AAQ3B,MAAM,WAAW,kBAAkB;IACjC,qFAAqF;IACrF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;;;;OAQG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;;OAKG;IACH,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC;;;;;;;;;OASG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,yFAAyF;IACzF,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACtD;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,qBAAqB,CAAC,EAAE,MAAM,eAAe,EAAE,GAAG,SAAS,CAAC;IAC5D;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,KACvE,OAAO,CAAC;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,GAC5C;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACxC;;;;;;;;OAQG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;;;;;;;;OASG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;;;;;;;OAOG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;;OAKG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;;;;;;;;;;;;;;OAkBG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;;;;;;;;;;;;;OAgBG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAMD,OAAO,EACL,KAAK,EACL,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,EACjB,oBAAoB,GACrB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CA+BtD;AAED,MAAM,WAAW,aAAa;IAC5B,sEAAsE;IACtE,aAAa,EAAE,MAAM,CAAC;IACtB,2CAA2C;IAC3C,UAAU,EAAE,MAAM,CAAC;IACnB,+DAA+D;IAC/D,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,4DAA4D;IAC5D,QAAQ,EAAE,OAAO,CAAC;IAClB,sEAAsE;IACtE,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,qBAAa,WAAW;IAOpB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,GAAG;IAPtB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAqB;IACpD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA+C;IAC3E,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAuD;gBAG7E,QAAQ,EAAE,YAAY,EACtB,GAAG,EAAE,oBAAoB,EAC1C,OAAO,GAAE,kBAAuB;IAQlC;;;;;;;OAOG;IACG,GAAG,CACP,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,YAAY,CAAC,EAAE,MAAM,EACrB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,aAAa,CAAC;IASzB;;;;;OAKG;IACG,eAAe,CACnB,YAAY,EAAE,eAAe,EAAE,EAC/B,IAAI,EAAE,MAAM,EACZ,YAAY,CAAC,EAAE,MAAM,EACrB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,aAAa,CAAC;CA28D1B;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,YAAY,EACtB,GAAG,EAAE,oBAAoB,EACzB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,WAAW,CAEb"}
|