agentfootprint 7.6.0 → 7.7.0
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/adapters/llm/AnthropicProvider.js +10 -3
- package/dist/adapters/llm/AnthropicProvider.js.map +1 -1
- package/dist/adapters/llm/BedrockProvider.js +113 -9
- package/dist/adapters/llm/BedrockProvider.js.map +1 -1
- package/dist/adapters/llm/BrowserAnthropicProvider.js +9 -3
- package/dist/adapters/llm/BrowserAnthropicProvider.js.map +1 -1
- package/dist/core/slots/buildMessagesSlot.js +19 -1
- package/dist/core/slots/buildMessagesSlot.js.map +1 -1
- package/dist/core/slots/buildSystemPromptSlot.js +19 -1
- package/dist/core/slots/buildSystemPromptSlot.js.map +1 -1
- package/dist/core/slots/buildToolsSlot.js +27 -1
- package/dist/core/slots/buildToolsSlot.js.map +1 -1
- package/dist/core/slots/helpers.js +39 -1
- package/dist/core/slots/helpers.js.map +1 -1
- package/dist/esm/adapters/llm/AnthropicProvider.d.ts +33 -0
- package/dist/esm/adapters/llm/AnthropicProvider.js +10 -3
- package/dist/esm/adapters/llm/AnthropicProvider.js.map +1 -1
- package/dist/esm/adapters/llm/BedrockProvider.d.ts +48 -0
- package/dist/esm/adapters/llm/BedrockProvider.js +113 -9
- package/dist/esm/adapters/llm/BedrockProvider.js.map +1 -1
- package/dist/esm/adapters/llm/BrowserAnthropicProvider.d.ts +13 -0
- package/dist/esm/adapters/llm/BrowserAnthropicProvider.js +9 -3
- package/dist/esm/adapters/llm/BrowserAnthropicProvider.js.map +1 -1
- package/dist/esm/core/slots/buildMessagesSlot.js +20 -2
- package/dist/esm/core/slots/buildMessagesSlot.js.map +1 -1
- package/dist/esm/core/slots/buildSystemPromptSlot.js +20 -2
- package/dist/esm/core/slots/buildSystemPromptSlot.js.map +1 -1
- package/dist/esm/core/slots/buildToolsSlot.js +28 -2
- package/dist/esm/core/slots/buildToolsSlot.js.map +1 -1
- package/dist/esm/core/slots/helpers.d.ts +29 -1
- package/dist/esm/core/slots/helpers.js +36 -0
- package/dist/esm/core/slots/helpers.js.map +1 -1
- package/dist/esm/events/payloads.d.ts +12 -1
- package/dist/esm/recorders/core/types.d.ts +8 -1
- package/dist/esm/recorders/core/types.js.map +1 -1
- package/dist/recorders/core/types.js.map +1 -1
- package/dist/types/adapters/llm/AnthropicProvider.d.ts +33 -0
- package/dist/types/adapters/llm/AnthropicProvider.d.ts.map +1 -1
- package/dist/types/adapters/llm/BedrockProvider.d.ts +48 -0
- package/dist/types/adapters/llm/BedrockProvider.d.ts.map +1 -1
- package/dist/types/adapters/llm/BrowserAnthropicProvider.d.ts +13 -0
- package/dist/types/adapters/llm/BrowserAnthropicProvider.d.ts.map +1 -1
- package/dist/types/core/slots/buildMessagesSlot.d.ts.map +1 -1
- package/dist/types/core/slots/buildSystemPromptSlot.d.ts.map +1 -1
- package/dist/types/core/slots/buildToolsSlot.d.ts.map +1 -1
- package/dist/types/core/slots/helpers.d.ts +29 -1
- package/dist/types/core/slots/helpers.d.ts.map +1 -1
- package/dist/types/events/payloads.d.ts +12 -1
- package/dist/types/events/payloads.d.ts.map +1 -1
- package/dist/types/recorders/core/types.d.ts +8 -1
- package/dist/types/recorders/core/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
import { flowChart } from 'footprintjs';
|
|
15
15
|
import { INJECTION_KEYS } from '../../conventions.js';
|
|
16
16
|
import { COMPOSITION_KEYS } from '../../recorders/core/types.js';
|
|
17
|
-
import { composeSlot, fnv1a, truncate } from './helpers.js';
|
|
17
|
+
import { composeSlot, fnv1a, formatOverflowWarning, slotOverflow, truncate } from './helpers.js';
|
|
18
18
|
/**
|
|
19
19
|
* Build the Messages slot subflow.
|
|
20
20
|
*
|
|
@@ -26,6 +26,8 @@ import { composeSlot, fnv1a, truncate } from './helpers.js';
|
|
|
26
26
|
*/
|
|
27
27
|
export function buildMessagesSlot(config = {}) {
|
|
28
28
|
const budgetCap = config.budgetCap ?? 10000;
|
|
29
|
+
// Dedup latch for the human-facing overflow warning (see buildToolsSlot).
|
|
30
|
+
let warnedOverflow = false;
|
|
29
31
|
return flowChart('Compose', (scope) => {
|
|
30
32
|
const args = scope.$getArgs();
|
|
31
33
|
const messages = args.messages ?? [];
|
|
@@ -67,7 +69,23 @@ export function buildMessagesSlot(config = {}) {
|
|
|
67
69
|
}
|
|
68
70
|
}
|
|
69
71
|
scope.$setValue(INJECTION_KEYS.MESSAGES, injections);
|
|
70
|
-
|
|
72
|
+
const composition = composeSlot('messages', iteration, injections, budgetCap, 'history-order');
|
|
73
|
+
scope.$setValue(COMPOSITION_KEYS.SLOT_COMPOSED, composition);
|
|
74
|
+
// Overflow is LOUD — nothing here truncates (see buildToolsSlot).
|
|
75
|
+
const pressure = slotOverflow(composition);
|
|
76
|
+
if (pressure) {
|
|
77
|
+
scope.$setValue(COMPOSITION_KEYS.BUDGET_PRESSURE, [pressure]);
|
|
78
|
+
if (!warnedOverflow) {
|
|
79
|
+
warnedOverflow = true;
|
|
80
|
+
console.warn(formatOverflowWarning({
|
|
81
|
+
pressure,
|
|
82
|
+
itemCount: injections.length,
|
|
83
|
+
itemNoun: 'message',
|
|
84
|
+
contentNoun: 'messages',
|
|
85
|
+
remedy: 'Raise budgetCap on the slot config or trim the conversation history.',
|
|
86
|
+
}));
|
|
87
|
+
}
|
|
88
|
+
}
|
|
71
89
|
}, 'compose', { description: 'Compose messages slot' }).build();
|
|
72
90
|
}
|
|
73
91
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildMessagesSlot.js","sourceRoot":"","sources":["../../../../src/core/slots/buildMessagesSlot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEjE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"buildMessagesSlot.js","sourceRoot":"","sources":["../../../../src/core/slots/buildMessagesSlot.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
import { flowChart } from 'footprintjs';
|
|
16
16
|
import { INJECTION_KEYS } from '../../conventions.js';
|
|
17
17
|
import { COMPOSITION_KEYS } from '../../recorders/core/types.js';
|
|
18
|
-
import { composeSlot, fnv1a, truncate } from './helpers.js';
|
|
18
|
+
import { composeSlot, fnv1a, formatOverflowWarning, slotOverflow, truncate } from './helpers.js';
|
|
19
19
|
/**
|
|
20
20
|
* Build the System-Prompt slot subflow.
|
|
21
21
|
*
|
|
@@ -29,6 +29,8 @@ export function buildSystemPromptSlot(config) {
|
|
|
29
29
|
const budgetCap = config.budgetCap ?? 4000;
|
|
30
30
|
const reason = config.reason ?? 'static system prompt';
|
|
31
31
|
const promptSource = config.prompt;
|
|
32
|
+
// Dedup latch for the human-facing overflow warning (see buildToolsSlot).
|
|
33
|
+
let warnedOverflow = false;
|
|
32
34
|
return flowChart('Compose', async (scope) => {
|
|
33
35
|
const args = scope.$getArgs();
|
|
34
36
|
const resolved = typeof promptSource === 'function' ? await promptSource(args) : promptSource;
|
|
@@ -79,7 +81,23 @@ export function buildSystemPromptSlot(config) {
|
|
|
79
81
|
});
|
|
80
82
|
}
|
|
81
83
|
scope.$setValue(INJECTION_KEYS.SYSTEM_PROMPT, injections);
|
|
82
|
-
|
|
84
|
+
const composition = composeSlot('system-prompt', args.iteration ?? 1, injections, budgetCap);
|
|
85
|
+
scope.$setValue(COMPOSITION_KEYS.SLOT_COMPOSED, composition);
|
|
86
|
+
// Overflow is LOUD — nothing here truncates (see buildToolsSlot).
|
|
87
|
+
const pressure = slotOverflow(composition);
|
|
88
|
+
if (pressure) {
|
|
89
|
+
scope.$setValue(COMPOSITION_KEYS.BUDGET_PRESSURE, [pressure]);
|
|
90
|
+
if (!warnedOverflow) {
|
|
91
|
+
warnedOverflow = true;
|
|
92
|
+
console.warn(formatOverflowWarning({
|
|
93
|
+
pressure,
|
|
94
|
+
itemCount: injections.length,
|
|
95
|
+
itemNoun: 'prompt fragment',
|
|
96
|
+
contentNoun: 'fragments',
|
|
97
|
+
remedy: 'Raise budgetCap on the slot config or shorten the system prompt.',
|
|
98
|
+
}));
|
|
99
|
+
}
|
|
100
|
+
}
|
|
83
101
|
}, 'compose', { description: 'Compose system-prompt slot' }).build();
|
|
84
102
|
}
|
|
85
103
|
//# sourceMappingURL=buildSystemPromptSlot.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildSystemPromptSlot.js","sourceRoot":"","sources":["../../../../src/core/slots/buildSystemPromptSlot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEjE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"buildSystemPromptSlot.js","sourceRoot":"","sources":["../../../../src/core/slots/buildSystemPromptSlot.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,7 +14,7 @@ import { flowChart } from 'footprintjs';
|
|
|
14
14
|
import { INJECTION_KEYS } from '../../conventions.js';
|
|
15
15
|
import { COMPOSITION_KEYS } from '../../recorders/core/types.js';
|
|
16
16
|
import { typedEmit } from '../../recorders/core/typedEmit.js';
|
|
17
|
-
import { composeSlot, fnv1a, truncate } from './helpers.js';
|
|
17
|
+
import { composeSlot, fnv1a, formatOverflowWarning, slotOverflow, truncate } from './helpers.js';
|
|
18
18
|
/**
|
|
19
19
|
* Build the Tools slot subflow.
|
|
20
20
|
*
|
|
@@ -29,6 +29,11 @@ export function buildToolsSlot(config) {
|
|
|
29
29
|
const tools = config.tools;
|
|
30
30
|
const toolProvider = config.toolProvider;
|
|
31
31
|
const providerToolCache = config.providerToolCache;
|
|
32
|
+
// Dedup latch for the human-facing warning, scoped to THIS built chart:
|
|
33
|
+
// a 20-iteration ReAct loop must not print 20 identical warnings. The
|
|
34
|
+
// typed `context.budget_pressure` event still fires every iteration and
|
|
35
|
+
// carries the per-iteration truth.
|
|
36
|
+
let warnedOverflow = false;
|
|
32
37
|
// Stage 1 — Discover: consult the external ToolProvider (if any) and
|
|
33
38
|
// resolve its Tool[] for this iteration. ALWAYS runs (even when no
|
|
34
39
|
// provider) so the trace shape is consistent across agents — the
|
|
@@ -191,7 +196,28 @@ export function buildToolsSlot(config) {
|
|
|
191
196
|
merged.push(t);
|
|
192
197
|
}
|
|
193
198
|
scope.toolSchemas = merged;
|
|
194
|
-
|
|
199
|
+
const composition = composeSlot('tools', iteration, injections, budgetCap, toolProvider ? 'registry+provider+injections' : 'registry+injections');
|
|
200
|
+
scope.$setValue(COMPOSITION_KEYS.SLOT_COMPOSED, composition);
|
|
201
|
+
// Overflow is LOUD. Nothing here truncates — the full tool definitions
|
|
202
|
+
// always reach the LLM — so an over-budget slot is otherwise invisible
|
|
203
|
+
// (headroomChars clamps to 0, droppedCount stays 0). Write a FRESH
|
|
204
|
+
// single-record array: ContextRecorder re-dispatches every record in
|
|
205
|
+
// the written value on every write, so appending would re-fire prior
|
|
206
|
+
// iterations.
|
|
207
|
+
const pressure = slotOverflow(composition);
|
|
208
|
+
if (pressure) {
|
|
209
|
+
scope.$setValue(COMPOSITION_KEYS.BUDGET_PRESSURE, [pressure]);
|
|
210
|
+
if (!warnedOverflow) {
|
|
211
|
+
warnedOverflow = true;
|
|
212
|
+
console.warn(formatOverflowWarning({
|
|
213
|
+
pressure,
|
|
214
|
+
itemCount: injections.length,
|
|
215
|
+
itemNoun: 'tool definition',
|
|
216
|
+
contentNoun: 'definitions',
|
|
217
|
+
remedy: 'Raise budgetCap on the agent config or trim tool descriptions.',
|
|
218
|
+
}));
|
|
219
|
+
}
|
|
220
|
+
}
|
|
195
221
|
};
|
|
196
222
|
return flowChart('Discover', discoverStage, 'discover', {
|
|
197
223
|
description: 'Discover provider tools',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildToolsSlot.js","sourceRoot":"","sources":["../../../../src/core/slots/buildToolsSlot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEjE,OAAO,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAG9D,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"buildToolsSlot.js","sourceRoot":"","sources":["../../../../src/core/slots/buildToolsSlot.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* breakdown. Kept co-located to avoid cross-package import churn.
|
|
7
7
|
*/
|
|
8
8
|
import type { ContextSource, ContextSlot } from '../../events/types.js';
|
|
9
|
-
import type { InjectionRecord, SlotComposition } from '../../recorders/core/types.js';
|
|
9
|
+
import type { BudgetPressureRecord, InjectionRecord, SlotComposition } from '../../recorders/core/types.js';
|
|
10
10
|
/** Non-cryptographic stable hash — sufficient for InjectionRecord dedup. */
|
|
11
11
|
export declare function fnv1a(input: string): string;
|
|
12
12
|
/** Truncate with ellipsis for contentSummary fields. */
|
|
@@ -25,3 +25,31 @@ export declare function composeSlot(slot: ContextSlot, iteration: number, inject
|
|
|
25
25
|
count: number;
|
|
26
26
|
summaries: readonly string[];
|
|
27
27
|
}): SlotComposition;
|
|
28
|
+
/**
|
|
29
|
+
* Overflow detector for slot compositions.
|
|
30
|
+
*
|
|
31
|
+
* Returns a `BudgetPressureRecord` when `used > cap`, otherwise `null`.
|
|
32
|
+
* `cap <= 0` is the "no budget" sentinel (see buildMessageApiChart's
|
|
33
|
+
* `{ cap: 0, used: 0 }` composition) — it never overflows.
|
|
34
|
+
*
|
|
35
|
+
* `planAction: 'none'` is the honest answer: the built-in slots evict and
|
|
36
|
+
* truncate NOTHING, so the full content went to the LLM and this record is
|
|
37
|
+
* the loud signal that the slot's budget is not being respected. Units are
|
|
38
|
+
* CHARS despite the historical `*Tokens` field names.
|
|
39
|
+
*/
|
|
40
|
+
export declare function slotOverflow(composition: SlotComposition): BudgetPressureRecord | null;
|
|
41
|
+
/**
|
|
42
|
+
* Human-facing warning text for a slot overflow. Says what actually
|
|
43
|
+
* happened (nothing was truncated) and what to do about it — the typed
|
|
44
|
+
* `context.budget_pressure` event carries the machine-readable truth.
|
|
45
|
+
*/
|
|
46
|
+
export declare function formatOverflowWarning(opts: {
|
|
47
|
+
readonly pressure: BudgetPressureRecord;
|
|
48
|
+
readonly itemCount: number;
|
|
49
|
+
/** Singular noun for what filled the slot, e.g. 'tool definition'. */
|
|
50
|
+
readonly itemNoun: string;
|
|
51
|
+
/** Plural noun used in the "full … were sent" clause, e.g. 'definitions'. */
|
|
52
|
+
readonly contentNoun: string;
|
|
53
|
+
/** Actionable remedy sentence, ending with a period. */
|
|
54
|
+
readonly remedy: string;
|
|
55
|
+
}): string;
|
|
@@ -55,4 +55,40 @@ export function composeSlot(slot, iteration, injections, budgetCap, orderingStra
|
|
|
55
55
|
droppedSummaries: dropped?.summaries ?? [],
|
|
56
56
|
};
|
|
57
57
|
}
|
|
58
|
+
/**
|
|
59
|
+
* Overflow detector for slot compositions.
|
|
60
|
+
*
|
|
61
|
+
* Returns a `BudgetPressureRecord` when `used > cap`, otherwise `null`.
|
|
62
|
+
* `cap <= 0` is the "no budget" sentinel (see buildMessageApiChart's
|
|
63
|
+
* `{ cap: 0, used: 0 }` composition) — it never overflows.
|
|
64
|
+
*
|
|
65
|
+
* `planAction: 'none'` is the honest answer: the built-in slots evict and
|
|
66
|
+
* truncate NOTHING, so the full content went to the LLM and this record is
|
|
67
|
+
* the loud signal that the slot's budget is not being respected. Units are
|
|
68
|
+
* CHARS despite the historical `*Tokens` field names.
|
|
69
|
+
*/
|
|
70
|
+
export function slotOverflow(composition) {
|
|
71
|
+
const { cap, used } = composition.budget;
|
|
72
|
+
if (cap <= 0 || used <= cap)
|
|
73
|
+
return null;
|
|
74
|
+
return {
|
|
75
|
+
slot: composition.slot,
|
|
76
|
+
capTokens: cap,
|
|
77
|
+
projectedTokens: used,
|
|
78
|
+
overflowBy: used - cap,
|
|
79
|
+
planAction: 'none',
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Human-facing warning text for a slot overflow. Says what actually
|
|
84
|
+
* happened (nothing was truncated) and what to do about it — the typed
|
|
85
|
+
* `context.budget_pressure` event carries the machine-readable truth.
|
|
86
|
+
*/
|
|
87
|
+
export function formatOverflowWarning(opts) {
|
|
88
|
+
const { pressure, itemCount, itemNoun, contentNoun, remedy } = opts;
|
|
89
|
+
return (`[agentfootprint] ${pressure.slot} slot over budget: ` +
|
|
90
|
+
`${pressure.projectedTokens}/${pressure.capTokens} chars (+${pressure.overflowBy}), ` +
|
|
91
|
+
`${itemCount} ${itemNoun}(s). Nothing was truncated — the full ${contentNoun} were sent ` +
|
|
92
|
+
`to the LLM — but the slot budget signal is unreliable. ${remedy}`);
|
|
93
|
+
}
|
|
58
94
|
//# sourceMappingURL=helpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../../src/core/slots/helpers.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../../src/core/slots/helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -213,12 +213,23 @@ export interface ContextSlotComposedPayload {
|
|
|
213
213
|
readonly droppedCount: number;
|
|
214
214
|
readonly droppedSummaries: readonly string[];
|
|
215
215
|
}
|
|
216
|
+
/**
|
|
217
|
+
* Fired when a slot composes over its `budgetCap`.
|
|
218
|
+
*
|
|
219
|
+
* `capTokens` / `projectedTokens` are historical names: slot budgets are
|
|
220
|
+
* measured in CHARS. Renaming them would be breaking, so they stay.
|
|
221
|
+
*
|
|
222
|
+
* `planAction: 'none'` means no mitigation was performed — nothing was
|
|
223
|
+
* evicted or truncated and the full content still went to the LLM. That
|
|
224
|
+
* is what the built-in slots report: they never truncate, so the event is
|
|
225
|
+
* the signal that the budget is not being respected.
|
|
226
|
+
*/
|
|
216
227
|
export interface ContextBudgetPressurePayload {
|
|
217
228
|
readonly slot: ContextSlot;
|
|
218
229
|
readonly capTokens: number;
|
|
219
230
|
readonly projectedTokens: number;
|
|
220
231
|
readonly overflowBy: number;
|
|
221
|
-
readonly planAction: 'evict' | 'summarize' | 'abort';
|
|
232
|
+
readonly planAction: 'evict' | 'summarize' | 'abort' | 'none';
|
|
222
233
|
}
|
|
223
234
|
/**
|
|
224
235
|
* Fired once per iteration by the Injection Engine after it evaluates every
|
|
@@ -81,13 +81,20 @@ export interface EvictionRecord {
|
|
|
81
81
|
}
|
|
82
82
|
/**
|
|
83
83
|
* Budget-pressure warning — emitted before evictions fire.
|
|
84
|
+
*
|
|
85
|
+
* `capTokens` / `projectedTokens` are historical names: slot budgets are
|
|
86
|
+
* measured in CHARS. Renaming them would be breaking, so they stay.
|
|
87
|
+
*
|
|
88
|
+
* `planAction: 'none'` means no mitigation was performed — nothing was
|
|
89
|
+
* evicted or truncated and the full content still went to the LLM. It is
|
|
90
|
+
* the honest reading of a slot that composed over its `budgetCap`.
|
|
84
91
|
*/
|
|
85
92
|
export interface BudgetPressureRecord {
|
|
86
93
|
readonly slot: ContextSlot;
|
|
87
94
|
readonly capTokens: number;
|
|
88
95
|
readonly projectedTokens: number;
|
|
89
96
|
readonly overflowBy: number;
|
|
90
|
-
readonly planAction: 'evict' | 'summarize' | 'abort';
|
|
97
|
+
readonly planAction: 'evict' | 'summarize' | 'abort' | 'none';
|
|
91
98
|
}
|
|
92
99
|
export declare const COMPOSITION_KEYS: {
|
|
93
100
|
readonly SLOT_COMPOSED: "slotCompositions";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/recorders/core/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/recorders/core/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAoGH,uEAAuE;AACvE,0EAA0E;AAC1E,4BAA4B;AAC5B,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,aAAa,EAAE,kBAAkB;IACjC,OAAO,EAAE,eAAe;IACxB,eAAe,EAAE,qBAAqB;CAC9B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/recorders/core/types.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/recorders/core/types.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAoGH,uEAAuE;AACvE,0EAA0E;AAC1E,4BAA4B;AACf,QAAA,gBAAgB,GAAG;IAC9B,aAAa,EAAE,kBAAkB;IACjC,OAAO,EAAE,eAAe;IACxB,eAAe,EAAE,qBAAqB;CAC9B,CAAC"}
|
|
@@ -35,6 +35,10 @@ interface AnthropicCreateParams {
|
|
|
35
35
|
type: 'enabled';
|
|
36
36
|
budget_tokens: number;
|
|
37
37
|
};
|
|
38
|
+
tool_choice?: {
|
|
39
|
+
type: 'auto';
|
|
40
|
+
disable_parallel_tool_use: true;
|
|
41
|
+
};
|
|
38
42
|
}
|
|
39
43
|
interface AnthropicMessageParam {
|
|
40
44
|
role: 'user' | 'assistant';
|
|
@@ -110,6 +114,35 @@ export interface AnthropicProviderOptions {
|
|
|
110
114
|
* connection errors, 429/5xx) before giving up. Omit to use the SDK default.
|
|
111
115
|
*/
|
|
112
116
|
readonly maxRetries?: number;
|
|
117
|
+
/**
|
|
118
|
+
* May the model ask for several tools at once in a single reply?
|
|
119
|
+
*
|
|
120
|
+
* Anthropic's default is `true`: one assistant message can carry many
|
|
121
|
+
* `tool_use` blocks, and the agent runs them all inside ONE loop
|
|
122
|
+
* iteration. Set `false` to cap it at one tool per reply — the model
|
|
123
|
+
* still chooses which tool (or none), it just cannot batch.
|
|
124
|
+
*
|
|
125
|
+
* Set `false` when the SHAPE of the loop is part of what you are
|
|
126
|
+
* measuring, not only its answer. A batched reply collapses several
|
|
127
|
+
* tool results into one iteration, so per-iteration analysis
|
|
128
|
+
* (`localizeContextBug` seeds one `'tool'` suspect per iteration from
|
|
129
|
+
* `lastToolResult`, and `removableSources` de-duplicates by tool name)
|
|
130
|
+
* attributes that iteration to the LAST tool of the batch — the others
|
|
131
|
+
* never appear as separate influence rows and cannot be ablated
|
|
132
|
+
* individually. One tool per iteration keeps every source separately
|
|
133
|
+
* attributable, at the cost of one extra round trip per tool.
|
|
134
|
+
*
|
|
135
|
+
* Prompting for it is not equivalent: "call one tool at a time" in the
|
|
136
|
+
* system prompt is a request the model may ignore, whereas this is a
|
|
137
|
+
* request parameter the API enforces.
|
|
138
|
+
*
|
|
139
|
+
* `true` (and omitting the option) sends nothing — Anthropic's own
|
|
140
|
+
* default already allows batching. Only `false` puts `tool_choice` on
|
|
141
|
+
* the wire, and only on requests that actually carry tools.
|
|
142
|
+
*
|
|
143
|
+
* @default undefined (Anthropic's default — batching allowed)
|
|
144
|
+
*/
|
|
145
|
+
readonly parallelToolCalls?: boolean;
|
|
113
146
|
/** @internal Pre-built client for testing. Skips SDK import. */
|
|
114
147
|
readonly _client?: AnthropicClient;
|
|
115
148
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AnthropicProvider.d.ts","sourceRoot":"","sources":["../../../../src/adapters/llm/AnthropicProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EACV,QAAQ,EAER,WAAW,EACX,UAAU,EACV,WAAW,EAEZ,MAAM,aAAa,CAAC;AAKrB,UAAU,eAAe;IACvB,QAAQ,EAAE;QACR,MAAM,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;QACjE,MAAM,CAAC,MAAM,EAAE,qBAAqB,GAAG,eAAe,CAAC;KACxD,CAAC;CACH;AAED,UAAU,qBAAqB;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,qBAAqB,EAAE,CAAC;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,aAAa,EAAE,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAK1B,QAAQ,CAAC,EAAE;QAAE,IAAI,EAAE,SAAS,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"AnthropicProvider.d.ts","sourceRoot":"","sources":["../../../../src/adapters/llm/AnthropicProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,6 +13,13 @@
|
|
|
13
13
|
* The Converse API is model-agnostic — one adapter covers every
|
|
14
14
|
* Bedrock-hosted model (Claude, Llama, Mistral, Titan, Mixtral, ...).
|
|
15
15
|
*
|
|
16
|
+
* Tool calling works on BOTH paths: `complete()` reads `toolUse` blocks
|
|
17
|
+
* off the Converse response, and `stream()` accumulates ConverseStream
|
|
18
|
+
* `contentBlockStart` / `contentBlockDelta` / `contentBlockStop` events
|
|
19
|
+
* (keyed by `contentBlockIndex`, so parallel tool calls that interleave
|
|
20
|
+
* are parsed correctly) and delivers them on the terminal chunk's
|
|
21
|
+
* `response.toolCalls`. A parity test pins the two paths together.
|
|
22
|
+
*
|
|
16
23
|
* ─── Limitations ────────────────────────────────────────────────────
|
|
17
24
|
*
|
|
18
25
|
* • Multi-modal NOT supported (text content only).
|
|
@@ -68,6 +75,47 @@ interface BedrockTool {
|
|
|
68
75
|
};
|
|
69
76
|
};
|
|
70
77
|
}
|
|
78
|
+
/**
|
|
79
|
+
* ConverseStream event shapes we consume.
|
|
80
|
+
*
|
|
81
|
+
* Note the asymmetry with the non-streaming API: `toolUse.input` is a
|
|
82
|
+
* fully-formed OBJECT on a Converse response, but a JSON **string
|
|
83
|
+
* fragment** on a ConverseStream delta. Fragments arrive across many
|
|
84
|
+
* events and must be joined before parsing, and blocks are addressed by
|
|
85
|
+
* `contentBlockIndex` because parallel tool calls interleave.
|
|
86
|
+
*/
|
|
87
|
+
export interface BedrockStreamEvent {
|
|
88
|
+
contentBlockStart?: {
|
|
89
|
+
contentBlockIndex?: number;
|
|
90
|
+
start?: {
|
|
91
|
+
toolUse?: {
|
|
92
|
+
toolUseId?: string;
|
|
93
|
+
name?: string;
|
|
94
|
+
};
|
|
95
|
+
};
|
|
96
|
+
};
|
|
97
|
+
contentBlockDelta?: {
|
|
98
|
+
contentBlockIndex?: number;
|
|
99
|
+
delta?: {
|
|
100
|
+
text?: string;
|
|
101
|
+
toolUse?: {
|
|
102
|
+
input?: string;
|
|
103
|
+
};
|
|
104
|
+
};
|
|
105
|
+
};
|
|
106
|
+
contentBlockStop?: {
|
|
107
|
+
contentBlockIndex?: number;
|
|
108
|
+
};
|
|
109
|
+
messageStop?: {
|
|
110
|
+
stopReason?: string;
|
|
111
|
+
};
|
|
112
|
+
metadata?: {
|
|
113
|
+
usage?: {
|
|
114
|
+
inputTokens: number;
|
|
115
|
+
outputTokens: number;
|
|
116
|
+
};
|
|
117
|
+
};
|
|
118
|
+
}
|
|
71
119
|
export interface BedrockProviderOptions {
|
|
72
120
|
/** AWS region (e.g., 'us-east-1'). Defaults to AWS SDK auto-detect. */
|
|
73
121
|
readonly region?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BedrockProvider.d.ts","sourceRoot":"","sources":["../../../../src/adapters/llm/BedrockProvider.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"BedrockProvider.d.ts","sourceRoot":"","sources":["../../../../src/adapters/llm/BedrockProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,6 +28,19 @@ export interface BrowserAnthropicProviderOptions {
|
|
|
28
28
|
readonly defaultMaxTokens?: number;
|
|
29
29
|
/** Override the API URL (proxies, edge deployments, mocks). */
|
|
30
30
|
readonly apiUrl?: string;
|
|
31
|
+
/**
|
|
32
|
+
* May the model ask for several tools at once in a single reply?
|
|
33
|
+
* Mirror of `AnthropicProviderOptions.parallelToolCalls` — see there
|
|
34
|
+
* for the full rationale.
|
|
35
|
+
*
|
|
36
|
+
* Anthropic's default is `true` (batching allowed). `false` caps the
|
|
37
|
+
* model at one tool per reply, which keeps every tool result on its
|
|
38
|
+
* own agent iteration so per-iteration analysis can attribute and
|
|
39
|
+
* ablate each source separately. `true`/omitted sends nothing.
|
|
40
|
+
*
|
|
41
|
+
* @default undefined (Anthropic's default — batching allowed)
|
|
42
|
+
*/
|
|
43
|
+
readonly parallelToolCalls?: boolean;
|
|
31
44
|
/** @internal Custom fetch implementation for tests / workers. */
|
|
32
45
|
readonly _fetch?: typeof fetch;
|
|
33
46
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BrowserAnthropicProvider.d.ts","sourceRoot":"","sources":["../../../../src/adapters/llm/BrowserAnthropicProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EACV,QAAQ,EAER,WAAW,EACX,UAAU,EACV,WAAW,EAEZ,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"BrowserAnthropicProvider.d.ts","sourceRoot":"","sources":["../../../../src/adapters/llm/BrowserAnthropicProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EACV,QAAQ,EAER,WAAW,EACX,UAAU,EACV,WAAW,EAEZ,MAAM,aAAa,CAAC;AAyDrB,MAAM,WAAW,+BAA+B;IAC9C,iEAAiE;IACjE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,8DAA8D;IAC9D,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,wCAAwC;IACxC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,+DAA+D;IAC/D,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IACrC,iEAAiE;IACjE,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,KAAK,CAAC;CAChC;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,+BAA+B,GAAG,WAAW,CAuPtF;AAED,qBAAa,wBAAyB,YAAW,WAAW;IAC1D,QAAQ,CAAC,IAAI,uBAAuB;IACpC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAc;gBAExB,OAAO,EAAE,+BAA+B;IAIpD,QAAQ,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC;IAI/C,MAAM,CAAC,GAAG,EAAE,UAAU,GAAG,aAAa,CAAC,QAAQ,CAAC;CAIjD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildMessagesSlot.d.ts","sourceRoot":"","sources":["../../../../src/core/slots/buildMessagesSlot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAc,MAAM,aAAa,CAAC;AAEzD,OAAO,KAAK,EAAkB,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAMzE;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,kBAAkB;IACjC,0CAA0C;IAC1C,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAMD;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,GAAE,kBAAuB,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"buildMessagesSlot.d.ts","sourceRoot":"","sources":["../../../../src/core/slots/buildMessagesSlot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAc,MAAM,aAAa,CAAC;AAEzD,OAAO,KAAK,EAAkB,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAMzE;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,kBAAkB;IACjC,0CAA0C;IAC1C,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAMD;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,GAAE,kBAAuB,GAAG,SAAS,CAoF5E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildSystemPromptSlot.d.ts","sourceRoot":"","sources":["../../../../src/core/slots/buildSystemPromptSlot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAc,MAAM,aAAa,CAAC;AAOzD;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,IAAI,EAAE;IAClC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B,KAAK,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AAE/B,MAAM,WAAW,sBAAsB;IACrC,4EAA4E;IAC5E,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,CAAC;IACzC,yCAAyC;IACzC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,mFAAmF;IACnF,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAWD;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,sBAAsB,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"buildSystemPromptSlot.d.ts","sourceRoot":"","sources":["../../../../src/core/slots/buildSystemPromptSlot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAc,MAAM,aAAa,CAAC;AAOzD;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,IAAI,EAAE;IAClC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B,KAAK,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AAE/B,MAAM,WAAW,sBAAsB;IACrC,4EAA4E;IAC5E,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,CAAC;IACzC,yCAAyC;IACzC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,mFAAmF;IACnF,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAWD;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,sBAAsB,GAAG,SAAS,CAsF/E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildToolsSlot.d.ts","sourceRoot":"","sources":["../../../../src/core/slots/buildToolsSlot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAc,MAAM,aAAa,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAM7D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,KAAK,EAAE,YAAY,EAAuB,MAAM,+BAA+B,CAAC;AAGvF;;;;;;;;GAQG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,SAAS,IAAI,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,eAAe;IAC9B,2EAA2E;IAC3E,QAAQ,CAAC,KAAK,EAAE,SAAS,aAAa,EAAE,CAAC;IACzC;;;;;;;OAOG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC;IACrC;;;;;OAKG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IAC/C,yCAAyC;IACzC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAMD;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,eAAe,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"buildToolsSlot.d.ts","sourceRoot":"","sources":["../../../../src/core/slots/buildToolsSlot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAc,MAAM,aAAa,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAM7D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,KAAK,EAAE,YAAY,EAAuB,MAAM,+BAA+B,CAAC;AAGvF;;;;;;;;GAQG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,SAAS,IAAI,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,eAAe;IAC9B,2EAA2E;IAC3E,QAAQ,CAAC,KAAK,EAAE,SAAS,aAAa,EAAE,CAAC;IACzC;;;;;;;OAOG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC;IACrC;;;;;OAKG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IAC/C,yCAAyC;IACzC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAMD;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,eAAe,GAAG,SAAS,CA4NjE"}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* breakdown. Kept co-located to avoid cross-package import churn.
|
|
7
7
|
*/
|
|
8
8
|
import type { ContextSource, ContextSlot } from '../../events/types.js';
|
|
9
|
-
import type { InjectionRecord, SlotComposition } from '../../recorders/core/types.js';
|
|
9
|
+
import type { BudgetPressureRecord, InjectionRecord, SlotComposition } from '../../recorders/core/types.js';
|
|
10
10
|
/** Non-cryptographic stable hash — sufficient for InjectionRecord dedup. */
|
|
11
11
|
export declare function fnv1a(input: string): string;
|
|
12
12
|
/** Truncate with ellipsis for contentSummary fields. */
|
|
@@ -25,4 +25,32 @@ export declare function composeSlot(slot: ContextSlot, iteration: number, inject
|
|
|
25
25
|
count: number;
|
|
26
26
|
summaries: readonly string[];
|
|
27
27
|
}): SlotComposition;
|
|
28
|
+
/**
|
|
29
|
+
* Overflow detector for slot compositions.
|
|
30
|
+
*
|
|
31
|
+
* Returns a `BudgetPressureRecord` when `used > cap`, otherwise `null`.
|
|
32
|
+
* `cap <= 0` is the "no budget" sentinel (see buildMessageApiChart's
|
|
33
|
+
* `{ cap: 0, used: 0 }` composition) — it never overflows.
|
|
34
|
+
*
|
|
35
|
+
* `planAction: 'none'` is the honest answer: the built-in slots evict and
|
|
36
|
+
* truncate NOTHING, so the full content went to the LLM and this record is
|
|
37
|
+
* the loud signal that the slot's budget is not being respected. Units are
|
|
38
|
+
* CHARS despite the historical `*Tokens` field names.
|
|
39
|
+
*/
|
|
40
|
+
export declare function slotOverflow(composition: SlotComposition): BudgetPressureRecord | null;
|
|
41
|
+
/**
|
|
42
|
+
* Human-facing warning text for a slot overflow. Says what actually
|
|
43
|
+
* happened (nothing was truncated) and what to do about it — the typed
|
|
44
|
+
* `context.budget_pressure` event carries the machine-readable truth.
|
|
45
|
+
*/
|
|
46
|
+
export declare function formatOverflowWarning(opts: {
|
|
47
|
+
readonly pressure: BudgetPressureRecord;
|
|
48
|
+
readonly itemCount: number;
|
|
49
|
+
/** Singular noun for what filled the slot, e.g. 'tool definition'. */
|
|
50
|
+
readonly itemNoun: string;
|
|
51
|
+
/** Plural noun used in the "full … were sent" clause, e.g. 'definitions'. */
|
|
52
|
+
readonly contentNoun: string;
|
|
53
|
+
/** Actionable remedy sentence, ending with a period. */
|
|
54
|
+
readonly remedy: string;
|
|
55
|
+
}): string;
|
|
28
56
|
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../../src/core/slots/helpers.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACxE,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../../src/core/slots/helpers.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACxE,OAAO,KAAK,EACV,oBAAoB,EACpB,eAAe,EACf,eAAe,EAChB,MAAM,+BAA+B,CAAC;AAEvC,4EAA4E;AAC5E,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAO3C;AAED,wDAAwD;AACxD,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAGrD;AAED,gFAAgF;AAChF,wBAAgB,SAAS,CACvB,UAAU,EAAE,SAAS,eAAe,EAAE,GACrC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAAC,CAe5E;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,WAAW,EACjB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,SAAS,eAAe,EAAE,EACtC,SAAS,EAAE,MAAM,EACjB,gBAAgB,CAAC,EAAE,MAAM,EACzB,OAAO,CAAC,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GACxD,eAAe,CAcjB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,eAAe,GAAG,oBAAoB,GAAG,IAAI,CAUtF;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE;IAC1C,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,CAAC;IACxC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,sEAAsE;IACtE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,6EAA6E;IAC7E,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,wDAAwD;IACxD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,GAAG,MAAM,CAQT"}
|
|
@@ -213,12 +213,23 @@ export interface ContextSlotComposedPayload {
|
|
|
213
213
|
readonly droppedCount: number;
|
|
214
214
|
readonly droppedSummaries: readonly string[];
|
|
215
215
|
}
|
|
216
|
+
/**
|
|
217
|
+
* Fired when a slot composes over its `budgetCap`.
|
|
218
|
+
*
|
|
219
|
+
* `capTokens` / `projectedTokens` are historical names: slot budgets are
|
|
220
|
+
* measured in CHARS. Renaming them would be breaking, so they stay.
|
|
221
|
+
*
|
|
222
|
+
* `planAction: 'none'` means no mitigation was performed — nothing was
|
|
223
|
+
* evicted or truncated and the full content still went to the LLM. That
|
|
224
|
+
* is what the built-in slots report: they never truncate, so the event is
|
|
225
|
+
* the signal that the budget is not being respected.
|
|
226
|
+
*/
|
|
216
227
|
export interface ContextBudgetPressurePayload {
|
|
217
228
|
readonly slot: ContextSlot;
|
|
218
229
|
readonly capTokens: number;
|
|
219
230
|
readonly projectedTokens: number;
|
|
220
231
|
readonly overflowBy: number;
|
|
221
|
-
readonly planAction: 'evict' | 'summarize' | 'abort';
|
|
232
|
+
readonly planAction: 'evict' | 'summarize' | 'abort' | 'none';
|
|
222
233
|
}
|
|
223
234
|
/**
|
|
224
235
|
* Fired once per iteration by the Injection Engine after it evaluates every
|