agentfootprint 7.16.0 → 7.18.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/AGENTS.md +1 -1
- package/CLAUDE.md +2 -2
- package/ai-instructions/claude-code/SKILL.md +1 -1
- package/dist/conventions.js +8 -6
- package/dist/conventions.js.map +1 -1
- package/dist/core/Agent.js +81 -27
- package/dist/core/Agent.js.map +1 -1
- package/dist/core/RunnerBase.js +16 -1
- package/dist/core/RunnerBase.js.map +1 -1
- package/dist/core/agent/AgentBuilder.js +209 -43
- package/dist/core/agent/AgentBuilder.js.map +1 -1
- package/dist/core/agent/buildAgentChart.js +8 -8
- package/dist/core/agent/buildAgentChart.js.map +1 -1
- package/dist/core/agent/buildDynamicAgentChart.js +6 -6
- package/dist/core/agent/buildDynamicAgentChart.js.map +1 -1
- package/dist/core/agent/middleware/errors.js +54 -0
- package/dist/core/agent/middleware/errors.js.map +1 -0
- package/dist/core/agent/middleware/index.js +23 -0
- package/dist/core/agent/middleware/index.js.map +1 -0
- package/dist/core/agent/middleware/ledger.js +61 -0
- package/dist/core/agent/middleware/ledger.js.map +1 -0
- package/dist/core/agent/middleware/outcomes.js +66 -0
- package/dist/core/agent/middleware/outcomes.js.map +1 -0
- package/dist/core/agent/middleware/runChain.js +144 -0
- package/dist/core/agent/middleware/runChain.js.map +1 -0
- package/dist/core/agent/middleware/types.js +41 -0
- package/dist/core/agent/middleware/types.js.map +1 -0
- package/dist/core/agent/stages/prepareFinal.js +10 -0
- package/dist/core/agent/stages/prepareFinal.js.map +1 -1
- package/dist/core/agent/stages/route.js +62 -1
- package/dist/core/agent/stages/route.js.map +1 -1
- package/dist/core/agent/stages/seed.js +130 -85
- package/dist/core/agent/stages/seed.js.map +1 -1
- package/dist/core/agent/stages/toolCalls.js +195 -8
- package/dist/core/agent/stages/toolCalls.js.map +1 -1
- package/dist/core/agent/stages/window.js +141 -0
- package/dist/core/agent/stages/window.js.map +1 -0
- package/dist/core/agent/window/errors.js.map +1 -0
- package/dist/core/agent/window/index.js +36 -0
- package/dist/core/agent/window/index.js.map +1 -0
- package/dist/core/agent/window/notice.js +57 -0
- package/dist/core/agent/window/notice.js.map +1 -0
- package/dist/core/agent/window/options.js +93 -0
- package/dist/core/agent/window/options.js.map +1 -0
- package/dist/core/agent/window/removal.js +45 -0
- package/dist/core/agent/window/removal.js.map +1 -0
- package/dist/core/agent/window/strategies/drop.js +106 -0
- package/dist/core/agent/window/strategies/drop.js.map +1 -0
- package/dist/core/agent/window/strategies/slidingWindow.js +87 -0
- package/dist/core/agent/window/strategies/slidingWindow.js.map +1 -0
- package/dist/core/agent/window/strategies/summarizeOldest.js +178 -0
- package/dist/core/agent/window/strategies/summarizeOldest.js.map +1 -0
- package/dist/core/agent/window/strategies/tokenBudget.js +95 -0
- package/dist/core/agent/window/strategies/tokenBudget.js.map +1 -0
- package/dist/core/agent/window/strategy.js +42 -0
- package/dist/core/agent/window/strategy.js.map +1 -0
- package/dist/core/agent/window/summarize.js.map +1 -0
- package/dist/core/agent/{compaction → window}/turns.js +50 -28
- package/dist/core/agent/window/turns.js.map +1 -0
- package/dist/core/agent/window/types.js +23 -0
- package/dist/core/agent/window/types.js.map +1 -0
- package/dist/core/pause.js +19 -1
- package/dist/core/pause.js.map +1 -1
- package/dist/esm/conventions.d.ts +8 -6
- package/dist/esm/conventions.js +8 -6
- package/dist/esm/conventions.js.map +1 -1
- package/dist/esm/core/Agent.d.ts +14 -6
- package/dist/esm/core/Agent.js +82 -28
- package/dist/esm/core/Agent.js.map +1 -1
- package/dist/esm/core/RunnerBase.js +16 -1
- package/dist/esm/core/RunnerBase.js.map +1 -1
- package/dist/esm/core/agent/AgentBuilder.d.ts +157 -4
- package/dist/esm/core/agent/AgentBuilder.js +209 -43
- package/dist/esm/core/agent/AgentBuilder.js.map +1 -1
- package/dist/esm/core/agent/buildAgentChart.d.ts +16 -9
- package/dist/esm/core/agent/buildAgentChart.js +8 -8
- package/dist/esm/core/agent/buildAgentChart.js.map +1 -1
- package/dist/esm/core/agent/buildDynamicAgentChart.js +6 -6
- package/dist/esm/core/agent/buildDynamicAgentChart.js.map +1 -1
- package/dist/esm/core/agent/middleware/errors.d.ts +51 -0
- package/dist/esm/core/agent/middleware/errors.js +50 -0
- package/dist/esm/core/agent/middleware/errors.js.map +1 -0
- package/dist/esm/core/agent/middleware/index.d.ts +16 -0
- package/dist/esm/core/agent/middleware/index.js +16 -0
- package/dist/esm/core/agent/middleware/index.js.map +1 -0
- package/dist/esm/core/agent/middleware/ledger.d.ts +40 -0
- package/dist/esm/core/agent/middleware/ledger.js +57 -0
- package/dist/esm/core/agent/middleware/ledger.js.map +1 -0
- package/dist/esm/core/agent/middleware/outcomes.d.ts +45 -0
- package/dist/esm/core/agent/middleware/outcomes.js +60 -0
- package/dist/esm/core/agent/middleware/outcomes.js.map +1 -0
- package/dist/esm/core/agent/middleware/runChain.d.ts +104 -0
- package/dist/esm/core/agent/middleware/runChain.js +139 -0
- package/dist/esm/core/agent/middleware/runChain.js.map +1 -0
- package/dist/esm/core/agent/middleware/types.d.ts +191 -0
- package/dist/esm/core/agent/middleware/types.js +40 -0
- package/dist/esm/core/agent/middleware/types.js.map +1 -0
- package/dist/esm/core/agent/stages/prepareFinal.d.ts +10 -0
- package/dist/esm/core/agent/stages/prepareFinal.js +10 -0
- package/dist/esm/core/agent/stages/prepareFinal.js.map +1 -1
- package/dist/esm/core/agent/stages/route.d.ts +29 -0
- package/dist/esm/core/agent/stages/route.js +60 -0
- package/dist/esm/core/agent/stages/route.js.map +1 -1
- package/dist/esm/core/agent/stages/seed.d.ts +16 -1
- package/dist/esm/core/agent/stages/seed.js +130 -85
- package/dist/esm/core/agent/stages/seed.js.map +1 -1
- package/dist/esm/core/agent/stages/toolCalls.d.ts +23 -0
- package/dist/esm/core/agent/stages/toolCalls.js +195 -8
- package/dist/esm/core/agent/stages/toolCalls.js.map +1 -1
- package/dist/esm/core/agent/stages/window.d.ts +63 -0
- package/dist/esm/core/agent/stages/window.js +137 -0
- package/dist/esm/core/agent/stages/window.js.map +1 -0
- package/dist/esm/core/agent/types.d.ts +33 -8
- package/dist/esm/core/agent/window/errors.js.map +1 -0
- package/dist/esm/core/agent/window/index.d.ts +27 -0
- package/dist/esm/core/agent/window/index.js +25 -0
- package/dist/esm/core/agent/window/index.js.map +1 -0
- package/dist/esm/core/agent/window/notice.d.ts +46 -0
- package/dist/esm/core/agent/window/notice.js +52 -0
- package/dist/esm/core/agent/window/notice.js.map +1 -0
- package/dist/esm/core/agent/window/options.d.ts +33 -0
- package/dist/esm/core/agent/window/options.js +87 -0
- package/dist/esm/core/agent/window/options.js.map +1 -0
- package/dist/esm/core/agent/window/removal.d.ts +22 -0
- package/dist/esm/core/agent/window/removal.js +40 -0
- package/dist/esm/core/agent/window/removal.js.map +1 -0
- package/dist/esm/core/agent/window/strategies/drop.d.ts +54 -0
- package/dist/esm/core/agent/window/strategies/drop.js +102 -0
- package/dist/esm/core/agent/window/strategies/drop.js.map +1 -0
- package/dist/esm/core/agent/window/strategies/slidingWindow.d.ts +48 -0
- package/dist/esm/core/agent/window/strategies/slidingWindow.js +83 -0
- package/dist/esm/core/agent/window/strategies/slidingWindow.js.map +1 -0
- package/dist/esm/core/agent/window/strategies/summarizeOldest.d.ts +42 -0
- package/dist/esm/core/agent/window/strategies/summarizeOldest.js +174 -0
- package/dist/esm/core/agent/window/strategies/summarizeOldest.js.map +1 -0
- package/dist/esm/core/agent/window/strategies/tokenBudget.d.ts +47 -0
- package/dist/esm/core/agent/window/strategies/tokenBudget.js +91 -0
- package/dist/esm/core/agent/window/strategies/tokenBudget.js.map +1 -0
- package/dist/esm/core/agent/window/strategy.d.ts +181 -0
- package/dist/esm/core/agent/window/strategy.js +41 -0
- package/dist/esm/core/agent/window/strategy.js.map +1 -0
- package/dist/esm/core/agent/window/summarize.js.map +1 -0
- package/dist/esm/core/agent/window/turns.d.ts +108 -0
- package/dist/esm/core/agent/{compaction → window}/turns.js +48 -26
- package/dist/esm/core/agent/window/turns.js.map +1 -0
- package/dist/esm/core/agent/window/types.d.ts +263 -0
- package/dist/esm/core/agent/window/types.js +22 -0
- package/dist/esm/core/agent/window/types.js.map +1 -0
- package/dist/esm/core/pause.d.ts +42 -0
- package/dist/esm/core/pause.js +17 -0
- package/dist/esm/core/pause.js.map +1 -1
- package/dist/esm/events/dispatcher.d.ts +1 -1
- package/dist/esm/events/dispatcher.js.map +1 -1
- package/dist/esm/events/payloads.d.ts +26 -0
- package/dist/esm/events/registry.d.ts +5 -1
- package/dist/esm/events/registry.js +4 -0
- package/dist/esm/events/registry.js.map +1 -1
- package/dist/esm/index.d.ts +3 -2
- package/dist/esm/index.js +23 -6
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lib/mcp/mcpServe.js +39 -6
- package/dist/esm/lib/mcp/mcpServe.js.map +1 -1
- package/dist/esm/lib/mcp/types.d.ts +16 -0
- package/dist/esm/recorders/core/CompactionMeter.d.ts +25 -19
- package/dist/esm/recorders/core/CompactionMeter.js +27 -19
- package/dist/esm/recorders/core/CompactionMeter.js.map +1 -1
- package/dist/events/dispatcher.js.map +1 -1
- package/dist/events/registry.js +4 -0
- package/dist/events/registry.js.map +1 -1
- package/dist/index.js +40 -13
- package/dist/index.js.map +1 -1
- package/dist/lib/mcp/mcpServe.js +39 -6
- package/dist/lib/mcp/mcpServe.js.map +1 -1
- package/dist/recorders/core/CompactionMeter.js +27 -19
- package/dist/recorders/core/CompactionMeter.js.map +1 -1
- package/dist/types/conventions.d.ts +8 -6
- package/dist/types/conventions.d.ts.map +1 -1
- package/dist/types/core/Agent.d.ts +14 -6
- package/dist/types/core/Agent.d.ts.map +1 -1
- package/dist/types/core/RunnerBase.d.ts.map +1 -1
- package/dist/types/core/agent/AgentBuilder.d.ts +157 -4
- package/dist/types/core/agent/AgentBuilder.d.ts.map +1 -1
- package/dist/types/core/agent/buildAgentChart.d.ts +16 -9
- package/dist/types/core/agent/buildAgentChart.d.ts.map +1 -1
- package/dist/types/core/agent/middleware/errors.d.ts +52 -0
- package/dist/types/core/agent/middleware/errors.d.ts.map +1 -0
- package/dist/types/core/agent/middleware/index.d.ts +17 -0
- package/dist/types/core/agent/middleware/index.d.ts.map +1 -0
- package/dist/types/core/agent/middleware/ledger.d.ts +41 -0
- package/dist/types/core/agent/middleware/ledger.d.ts.map +1 -0
- package/dist/types/core/agent/middleware/outcomes.d.ts +46 -0
- package/dist/types/core/agent/middleware/outcomes.d.ts.map +1 -0
- package/dist/types/core/agent/middleware/runChain.d.ts +105 -0
- package/dist/types/core/agent/middleware/runChain.d.ts.map +1 -0
- package/dist/types/core/agent/middleware/types.d.ts +192 -0
- package/dist/types/core/agent/middleware/types.d.ts.map +1 -0
- package/dist/types/core/agent/stages/prepareFinal.d.ts +10 -0
- package/dist/types/core/agent/stages/prepareFinal.d.ts.map +1 -1
- package/dist/types/core/agent/stages/route.d.ts +29 -0
- package/dist/types/core/agent/stages/route.d.ts.map +1 -1
- package/dist/types/core/agent/stages/seed.d.ts +16 -1
- package/dist/types/core/agent/stages/seed.d.ts.map +1 -1
- package/dist/types/core/agent/stages/toolCalls.d.ts +23 -0
- package/dist/types/core/agent/stages/toolCalls.d.ts.map +1 -1
- package/dist/types/core/agent/stages/window.d.ts +64 -0
- package/dist/types/core/agent/stages/window.d.ts.map +1 -0
- package/dist/types/core/agent/types.d.ts +33 -8
- package/dist/types/core/agent/types.d.ts.map +1 -1
- package/dist/types/core/agent/window/errors.d.ts.map +1 -0
- package/dist/types/core/agent/window/index.d.ts +28 -0
- package/dist/types/core/agent/window/index.d.ts.map +1 -0
- package/dist/types/core/agent/window/notice.d.ts +47 -0
- package/dist/types/core/agent/window/notice.d.ts.map +1 -0
- package/dist/types/core/agent/window/options.d.ts +34 -0
- package/dist/types/core/agent/window/options.d.ts.map +1 -0
- package/dist/types/core/agent/window/removal.d.ts +23 -0
- package/dist/types/core/agent/window/removal.d.ts.map +1 -0
- package/dist/types/core/agent/window/strategies/drop.d.ts +55 -0
- package/dist/types/core/agent/window/strategies/drop.d.ts.map +1 -0
- package/dist/types/core/agent/window/strategies/slidingWindow.d.ts +49 -0
- package/dist/types/core/agent/window/strategies/slidingWindow.d.ts.map +1 -0
- package/dist/types/core/agent/window/strategies/summarizeOldest.d.ts +43 -0
- package/dist/types/core/agent/window/strategies/summarizeOldest.d.ts.map +1 -0
- package/dist/types/core/agent/window/strategies/tokenBudget.d.ts +48 -0
- package/dist/types/core/agent/window/strategies/tokenBudget.d.ts.map +1 -0
- package/dist/types/core/agent/window/strategy.d.ts +182 -0
- package/dist/types/core/agent/window/strategy.d.ts.map +1 -0
- package/dist/types/core/agent/window/summarize.d.ts.map +1 -0
- package/dist/types/core/agent/window/turns.d.ts +109 -0
- package/dist/types/core/agent/window/turns.d.ts.map +1 -0
- package/dist/types/core/agent/window/types.d.ts +264 -0
- package/dist/types/core/agent/window/types.d.ts.map +1 -0
- package/dist/types/core/pause.d.ts +42 -0
- package/dist/types/core/pause.d.ts.map +1 -1
- package/dist/types/events/dispatcher.d.ts +1 -1
- package/dist/types/events/dispatcher.d.ts.map +1 -1
- package/dist/types/events/payloads.d.ts +26 -0
- package/dist/types/events/payloads.d.ts.map +1 -1
- package/dist/types/events/registry.d.ts +5 -1
- package/dist/types/events/registry.d.ts.map +1 -1
- package/dist/types/index.d.ts +3 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/lib/mcp/mcpServe.d.ts.map +1 -1
- package/dist/types/lib/mcp/types.d.ts +16 -0
- package/dist/types/lib/mcp/types.d.ts.map +1 -1
- package/dist/types/recorders/core/CompactionMeter.d.ts +25 -19
- package/dist/types/recorders/core/CompactionMeter.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/core/agent/compaction/errors.js.map +0 -1
- package/dist/core/agent/compaction/index.js +0 -24
- package/dist/core/agent/compaction/index.js.map +0 -1
- package/dist/core/agent/compaction/strategy.js +0 -152
- package/dist/core/agent/compaction/strategy.js.map +0 -1
- package/dist/core/agent/compaction/summarize.js.map +0 -1
- package/dist/core/agent/compaction/turns.js.map +0 -1
- package/dist/core/agent/compaction/types.js +0 -21
- package/dist/core/agent/compaction/types.js.map +0 -1
- package/dist/core/agent/stages/compact.js +0 -130
- package/dist/core/agent/stages/compact.js.map +0 -1
- package/dist/esm/core/agent/compaction/errors.js.map +0 -1
- package/dist/esm/core/agent/compaction/index.d.ts +0 -18
- package/dist/esm/core/agent/compaction/index.js +0 -18
- package/dist/esm/core/agent/compaction/index.js.map +0 -1
- package/dist/esm/core/agent/compaction/strategy.d.ts +0 -103
- package/dist/esm/core/agent/compaction/strategy.js +0 -148
- package/dist/esm/core/agent/compaction/strategy.js.map +0 -1
- package/dist/esm/core/agent/compaction/summarize.js.map +0 -1
- package/dist/esm/core/agent/compaction/turns.d.ts +0 -85
- package/dist/esm/core/agent/compaction/turns.js.map +0 -1
- package/dist/esm/core/agent/compaction/types.d.ts +0 -148
- package/dist/esm/core/agent/compaction/types.js +0 -20
- package/dist/esm/core/agent/compaction/types.js.map +0 -1
- package/dist/esm/core/agent/stages/compact.d.ts +0 -59
- package/dist/esm/core/agent/stages/compact.js +0 -126
- package/dist/esm/core/agent/stages/compact.js.map +0 -1
- package/dist/types/core/agent/compaction/errors.d.ts.map +0 -1
- package/dist/types/core/agent/compaction/index.d.ts +0 -19
- package/dist/types/core/agent/compaction/index.d.ts.map +0 -1
- package/dist/types/core/agent/compaction/strategy.d.ts +0 -104
- package/dist/types/core/agent/compaction/strategy.d.ts.map +0 -1
- package/dist/types/core/agent/compaction/summarize.d.ts.map +0 -1
- package/dist/types/core/agent/compaction/turns.d.ts +0 -86
- package/dist/types/core/agent/compaction/turns.d.ts.map +0 -1
- package/dist/types/core/agent/compaction/types.d.ts +0 -149
- package/dist/types/core/agent/compaction/types.d.ts.map +0 -1
- package/dist/types/core/agent/stages/compact.d.ts +0 -60
- package/dist/types/core/agent/stages/compact.d.ts.map +0 -1
- /package/dist/core/agent/{compaction → window}/errors.js +0 -0
- /package/dist/core/agent/{compaction → window}/summarize.js +0 -0
- /package/dist/esm/core/agent/{compaction → window}/errors.d.ts +0 -0
- /package/dist/esm/core/agent/{compaction → window}/errors.js +0 -0
- /package/dist/esm/core/agent/{compaction → window}/summarize.d.ts +0 -0
- /package/dist/esm/core/agent/{compaction → window}/summarize.js +0 -0
- /package/dist/types/core/agent/{compaction → window}/errors.d.ts +0 -0
- /package/dist/types/core/agent/{compaction → window}/summarize.d.ts +0 -0
|
@@ -20,7 +20,9 @@ import type { ToolProvider } from '../../tool-providers/types.js';
|
|
|
20
20
|
import { type SelfExplainOptions } from '../../lib/trace-toolpack/selfExplain.js';
|
|
21
21
|
import { Agent } from '../Agent.js';
|
|
22
22
|
import type { AgentOptions, RunConfigFn } from './types.js';
|
|
23
|
-
import type { CompactionOptions } from './
|
|
23
|
+
import type { CompactionOptions } from './window/types.js';
|
|
24
|
+
import type { WindowStrategy } from './window/strategy.js';
|
|
25
|
+
import type { MessageMiddleware, ToolMiddleware } from './middleware/types.js';
|
|
24
26
|
/**
|
|
25
27
|
* Fluent builder. `tool()` accepts any Tool<TArgs, TResult> and registers
|
|
26
28
|
* it by its schema.name. Duplicate names throw at build time.
|
|
@@ -125,9 +127,14 @@ export declare class AgentBuilder {
|
|
|
125
127
|
/** Per-run config resolver set via `.configure()`. Undefined = the agent
|
|
126
128
|
* runs on its build-time model + system prompt, unchanged. */
|
|
127
129
|
private runConfigFn?;
|
|
128
|
-
/**
|
|
129
|
-
* the ReAct loop target is unchanged,
|
|
130
|
-
|
|
130
|
+
/** The agent's one window strategy, from `.window()` or `.compaction()`.
|
|
131
|
+
* Undefined = no window stage exists, the ReAct loop target is unchanged,
|
|
132
|
+
* and the run is byte-identical to an agent that never heard of them. */
|
|
133
|
+
private windowStrategyValue?;
|
|
134
|
+
/** The tool-dispatch chain, in call order. Empty = no chain, no ledger. */
|
|
135
|
+
private toolMiddlewareList;
|
|
136
|
+
/** The message chain, in call order. Empty = no chain, no ledger. */
|
|
137
|
+
private messageMiddlewareList;
|
|
131
138
|
constructor(opts: AgentOptions);
|
|
132
139
|
/**
|
|
133
140
|
* Set the base system prompt.
|
|
@@ -234,10 +241,58 @@ export declare class AgentBuilder {
|
|
|
234
241
|
* .build();
|
|
235
242
|
*/
|
|
236
243
|
configure(fn: RunConfigFn): this;
|
|
244
|
+
/**
|
|
245
|
+
* Choose how the live context window is kept inside its budget.
|
|
246
|
+
*
|
|
247
|
+
* This is the general door; the strategy decides everything about WHEN it
|
|
248
|
+
* acts and WHAT leaves. Three ship, and they share one turn segmentation
|
|
249
|
+
* and one refusal engine, so a refusal reason means the same thing under
|
|
250
|
+
* all of them:
|
|
251
|
+
*
|
|
252
|
+
* `summarizeOldest({ thresholdTokens, summarizer, ... })`
|
|
253
|
+
* fold the oldest span into one summary message. `.compaction()` is
|
|
254
|
+
* this, spelled shorter.
|
|
255
|
+
* `slidingWindow({ keepRecentTurns })`
|
|
256
|
+
* keep the last N turns and drop older ones. No summarizer, no LLM
|
|
257
|
+
* call, no usage requirement — it runs on any provider.
|
|
258
|
+
* `tokenBudget({ thresholdTokens })`
|
|
259
|
+
* the counted-token trigger, dropping instead of summarizing.
|
|
260
|
+
*
|
|
261
|
+
* Never removed by any of them: the system envelope, the recent turns, and
|
|
262
|
+
* any turn holding something unresolved — an unanswered tool call, a paused
|
|
263
|
+
* tool, a pending check-in. Those refuse BY NAME in the record and the
|
|
264
|
+
* strategy takes the next oldest instead. Removing an unanswered question
|
|
265
|
+
* would destroy the referent of the answer that has not arrived yet, and
|
|
266
|
+
* splitting a `tool_use` from its `tool_result` produces a request the
|
|
267
|
+
* vendor rejects.
|
|
268
|
+
*
|
|
269
|
+
* **Whatever leaves the window stays in the ledger.** footprintjs's commit
|
|
270
|
+
* log is append-only, so the turns were committed before the strategy ran
|
|
271
|
+
* and remain byte-identical; every strategy files its own recorded step
|
|
272
|
+
* naming the `runtimeStageId`s whose messages left, and emits one
|
|
273
|
+
* `context.evicted` per message. Removing is not forgetting.
|
|
274
|
+
*
|
|
275
|
+
* Exactly one strategy per agent. Omit this (and `.compaction()`) and
|
|
276
|
+
* nothing changes: no stage, no extra committed key, the same request bytes.
|
|
277
|
+
*
|
|
278
|
+
* @example
|
|
279
|
+
* ```ts
|
|
280
|
+
* import { Agent, slidingWindow } from 'agentfootprint';
|
|
281
|
+
*
|
|
282
|
+
* const agent = Agent.create({ provider, model })
|
|
283
|
+
* .window(slidingWindow({ keepRecentTurns: 12 }))
|
|
284
|
+
* .build();
|
|
285
|
+
* ```
|
|
286
|
+
*/
|
|
287
|
+
window(strategy: WindowStrategy): this;
|
|
237
288
|
/**
|
|
238
289
|
* Keep the live context window inside a token budget — without ever losing
|
|
239
290
|
* the record.
|
|
240
291
|
*
|
|
292
|
+
* Sugar for `.window(summarizeOldest(options))`, and byte-for-byte the same
|
|
293
|
+
* agent. It keeps its own name because compaction is what the market calls
|
|
294
|
+
* this and it is the strategy most people want first.
|
|
295
|
+
*
|
|
241
296
|
* At each ReAct iteration boundary, compaction compares the LAST call's
|
|
242
297
|
* **adapter-reported** input tokens against `thresholdTokens`. Over budget,
|
|
243
298
|
* it folds the oldest foldable span of the conversation into one summary
|
|
@@ -273,6 +328,12 @@ export declare class AgentBuilder {
|
|
|
273
328
|
* ```
|
|
274
329
|
*/
|
|
275
330
|
compaction(options: CompactionOptions): this;
|
|
331
|
+
/**
|
|
332
|
+
* One window strategy per agent, whichever door set it — a second would
|
|
333
|
+
* silently override the first, and a window policy that quietly changed is
|
|
334
|
+
* a policy you cannot audit.
|
|
335
|
+
*/
|
|
336
|
+
private assertNoWindowStrategy;
|
|
276
337
|
/**
|
|
277
338
|
* Override the ReAct iteration cap set via `Agent.create({
|
|
278
339
|
* maxIterations })`. Convenience for builder-style code that prefers
|
|
@@ -676,6 +737,98 @@ export declare class AgentBuilder {
|
|
|
676
737
|
* .checkIn({ evidence: 'standard' })
|
|
677
738
|
* .build();
|
|
678
739
|
*/
|
|
740
|
+
/**
|
|
741
|
+
* Wrap every tool dispatch in a governance chain.
|
|
742
|
+
*
|
|
743
|
+
* Each middleware answers with one of three verbs — `allow()`, `deny(reason)`
|
|
744
|
+
* or `ask({ question })` — and there is deliberately no fourth. In
|
|
745
|
+
* particular there is no way to return a result: whatever the chain decides,
|
|
746
|
+
* the answer the model finally reads is the real tool's output or a refusal.
|
|
747
|
+
* A rule cannot quietly become the tool.
|
|
748
|
+
*
|
|
749
|
+
* - **`allow()`** passes the call through. **`allow(args, why)`** replaces
|
|
750
|
+
* the args and the run commits BOTH versions with your `why` beside them,
|
|
751
|
+
* so a slice taken later can find the moment they changed and who changed
|
|
752
|
+
* them.
|
|
753
|
+
* - **`deny(reason)`** refuses. The reason reaches the model verbatim, as
|
|
754
|
+
* the tool result, and the loop continues — the agent adapts in-flight. A
|
|
755
|
+
* denial is data, not a crash.
|
|
756
|
+
* - **`ask({ question })`** suspends the run for a person, on the same
|
|
757
|
+
* checkpoint machinery `checkIn` and `askHuman` use. The answer is a
|
|
758
|
+
* DECISION, not a result: approve and the chain resumes and the real tool
|
|
759
|
+
* runs; decline and it becomes a denial the model reads.
|
|
760
|
+
*
|
|
761
|
+
* Order is call order, and each middleware sees the previous one's output.
|
|
762
|
+
* The first non-allow answer wins and the rest of the chain does not run. A
|
|
763
|
+
* middleware that throws is a denial carrying the error as its reason —
|
|
764
|
+
* never a silent pass.
|
|
765
|
+
*
|
|
766
|
+
* An existing `PermissionChecker` still decides FIRST: it is not part of
|
|
767
|
+
* this chain, it runs ahead of it, so a call it denies never reaches a
|
|
768
|
+
* middleware. `gatedTools` is a different layer again — it decides which
|
|
769
|
+
* tools the model can SEE; this decides what happens when one is called.
|
|
770
|
+
*
|
|
771
|
+
* Omit this and nothing changes: no chain walk, no committed ledger key, the
|
|
772
|
+
* same request bytes.
|
|
773
|
+
*
|
|
774
|
+
* @example
|
|
775
|
+
* ```ts
|
|
776
|
+
* import { Agent, allow, deny } from 'agentfootprint';
|
|
777
|
+
*
|
|
778
|
+
* const agent = Agent.create({ provider, model })
|
|
779
|
+
* .toolMiddleware({
|
|
780
|
+
* name: 'no-prod-writes',
|
|
781
|
+
* onToolCall: (call) =>
|
|
782
|
+
* call.args.env === 'prod' ? deny('writes to prod need a change ticket') : allow(),
|
|
783
|
+
* })
|
|
784
|
+
* .build();
|
|
785
|
+
* ```
|
|
786
|
+
*/
|
|
787
|
+
toolMiddleware(...middleware: readonly ToolMiddleware[]): this;
|
|
788
|
+
/**
|
|
789
|
+
* Wrap the message boundary in a governance chain — the input before the
|
|
790
|
+
* model sees it, the output before the caller receives it.
|
|
791
|
+
*
|
|
792
|
+
* Same verbs as {@link toolMiddleware} minus one: there is no `ask` here,
|
|
793
|
+
* and the type says so. Tool dispatch runs inside a pausable stage, so it
|
|
794
|
+
* has a checkpoint to suspend on; the message boundary is a plain stage, and
|
|
795
|
+
* inventing a second pause to give it one would be a worse answer than not
|
|
796
|
+
* offering it.
|
|
797
|
+
*
|
|
798
|
+
* The `'input'` half runs at the very top of the run, BEFORE the message is
|
|
799
|
+
* committed. That placement is the point: everything downstream reads
|
|
800
|
+
* `scope.history` — the window strategies, the injections, all three slots,
|
|
801
|
+
* the bytes on the wire and every slice taken afterwards — so the
|
|
802
|
+
* transformed text is what the whole run agrees was said. The `'output'`
|
|
803
|
+
* half runs where the final answer is captured, so the record and the caller
|
|
804
|
+
* receive the same string.
|
|
805
|
+
*
|
|
806
|
+
* `deny(reason)` at either phase raises a `MessageDeniedError` rather than
|
|
807
|
+
* returning. At `'input'` there is no model to tell; at `'output'` the
|
|
808
|
+
* middleware has just refused to release an answer, and handing the caller a
|
|
809
|
+
* string in its place is the one substitution they must never make without
|
|
810
|
+
* noticing. The error carries the reason, the phase and the middleware's
|
|
811
|
+
* name — never the refused content.
|
|
812
|
+
*
|
|
813
|
+
* @example
|
|
814
|
+
* ```ts
|
|
815
|
+
* import { Agent, allow } from 'agentfootprint';
|
|
816
|
+
*
|
|
817
|
+
* const agent = Agent.create({ provider, model })
|
|
818
|
+
* .messageMiddleware({
|
|
819
|
+
* name: 'mask-card-numbers',
|
|
820
|
+
* onMessage: (msg) => {
|
|
821
|
+
* const clean = msg.content.replace(/\b(?:\d[ -]?){13,16}\b/g, '[card]');
|
|
822
|
+
* return clean === msg.content ? allow() : allow(clean, 'masked a card number');
|
|
823
|
+
* },
|
|
824
|
+
* })
|
|
825
|
+
* .build();
|
|
826
|
+
* ```
|
|
827
|
+
*/
|
|
828
|
+
messageMiddleware(...middleware: readonly MessageMiddleware[]): this;
|
|
829
|
+
/** Shared shape check — a chain built from a typo fails at build time, not
|
|
830
|
+
* as a silent no-op on the one call that needed governing. */
|
|
831
|
+
private assertMiddleware;
|
|
679
832
|
checkIn(opts?: CheckInBuilderOptions): this;
|
|
680
833
|
selfExplain(opts?: SelfExplainOptions): this;
|
|
681
834
|
build(): Agent;
|
|
@@ -13,6 +13,8 @@ import { defaultCommentaryTemplates } from '../../recorders/observability/commen
|
|
|
13
13
|
import { defaultStatusTemplates } from '../../recorders/observability/status/statusTemplates.js';
|
|
14
14
|
import { buildSelfExplainSkill, buildSelfExplainToolProvider, SelfExplainBinding, } from '../../lib/trace-toolpack/selfExplain.js';
|
|
15
15
|
import { Agent } from '../Agent.js';
|
|
16
|
+
import { resolveCompactionOptions } from './window/options.js';
|
|
17
|
+
import { summarizeOldest } from './window/strategies/summarizeOldest.js';
|
|
16
18
|
/**
|
|
17
19
|
* Fluent builder. `tool()` accepts any Tool<TArgs, TResult> and registers
|
|
18
20
|
* it by its schema.name. Duplicate names throw at build time.
|
|
@@ -122,9 +124,14 @@ export class AgentBuilder {
|
|
|
122
124
|
/** Per-run config resolver set via `.configure()`. Undefined = the agent
|
|
123
125
|
* runs on its build-time model + system prompt, unchanged. */
|
|
124
126
|
runConfigFn;
|
|
125
|
-
/**
|
|
126
|
-
* the ReAct loop target is unchanged,
|
|
127
|
-
|
|
127
|
+
/** The agent's one window strategy, from `.window()` or `.compaction()`.
|
|
128
|
+
* Undefined = no window stage exists, the ReAct loop target is unchanged,
|
|
129
|
+
* and the run is byte-identical to an agent that never heard of them. */
|
|
130
|
+
windowStrategyValue;
|
|
131
|
+
/** The tool-dispatch chain, in call order. Empty = no chain, no ledger. */
|
|
132
|
+
toolMiddlewareList = [];
|
|
133
|
+
/** The message chain, in call order. Empty = no chain, no ledger. */
|
|
134
|
+
messageMiddlewareList = [];
|
|
128
135
|
constructor(opts) {
|
|
129
136
|
this.opts = opts;
|
|
130
137
|
// Cache layer: opts.caching === 'off' propagates to scope's
|
|
@@ -272,10 +279,72 @@ export class AgentBuilder {
|
|
|
272
279
|
this.runConfigFn = fn;
|
|
273
280
|
return this;
|
|
274
281
|
}
|
|
282
|
+
/**
|
|
283
|
+
* Choose how the live context window is kept inside its budget.
|
|
284
|
+
*
|
|
285
|
+
* This is the general door; the strategy decides everything about WHEN it
|
|
286
|
+
* acts and WHAT leaves. Three ship, and they share one turn segmentation
|
|
287
|
+
* and one refusal engine, so a refusal reason means the same thing under
|
|
288
|
+
* all of them:
|
|
289
|
+
*
|
|
290
|
+
* `summarizeOldest({ thresholdTokens, summarizer, ... })`
|
|
291
|
+
* fold the oldest span into one summary message. `.compaction()` is
|
|
292
|
+
* this, spelled shorter.
|
|
293
|
+
* `slidingWindow({ keepRecentTurns })`
|
|
294
|
+
* keep the last N turns and drop older ones. No summarizer, no LLM
|
|
295
|
+
* call, no usage requirement — it runs on any provider.
|
|
296
|
+
* `tokenBudget({ thresholdTokens })`
|
|
297
|
+
* the counted-token trigger, dropping instead of summarizing.
|
|
298
|
+
*
|
|
299
|
+
* Never removed by any of them: the system envelope, the recent turns, and
|
|
300
|
+
* any turn holding something unresolved — an unanswered tool call, a paused
|
|
301
|
+
* tool, a pending check-in. Those refuse BY NAME in the record and the
|
|
302
|
+
* strategy takes the next oldest instead. Removing an unanswered question
|
|
303
|
+
* would destroy the referent of the answer that has not arrived yet, and
|
|
304
|
+
* splitting a `tool_use` from its `tool_result` produces a request the
|
|
305
|
+
* vendor rejects.
|
|
306
|
+
*
|
|
307
|
+
* **Whatever leaves the window stays in the ledger.** footprintjs's commit
|
|
308
|
+
* log is append-only, so the turns were committed before the strategy ran
|
|
309
|
+
* and remain byte-identical; every strategy files its own recorded step
|
|
310
|
+
* naming the `runtimeStageId`s whose messages left, and emits one
|
|
311
|
+
* `context.evicted` per message. Removing is not forgetting.
|
|
312
|
+
*
|
|
313
|
+
* Exactly one strategy per agent. Omit this (and `.compaction()`) and
|
|
314
|
+
* nothing changes: no stage, no extra committed key, the same request bytes.
|
|
315
|
+
*
|
|
316
|
+
* @example
|
|
317
|
+
* ```ts
|
|
318
|
+
* import { Agent, slidingWindow } from 'agentfootprint';
|
|
319
|
+
*
|
|
320
|
+
* const agent = Agent.create({ provider, model })
|
|
321
|
+
* .window(slidingWindow({ keepRecentTurns: 12 }))
|
|
322
|
+
* .build();
|
|
323
|
+
* ```
|
|
324
|
+
*/
|
|
325
|
+
window(strategy) {
|
|
326
|
+
this.assertNoWindowStrategy('window');
|
|
327
|
+
if (strategy === null ||
|
|
328
|
+
typeof strategy !== 'object' ||
|
|
329
|
+
typeof strategy.plan !== 'function' ||
|
|
330
|
+
typeof strategy.name !== 'string' ||
|
|
331
|
+
strategy.name.length === 0) {
|
|
332
|
+
throw new Error(`AgentBuilder.window: expected a WindowStrategy — an object with a non-empty \`name\` ` +
|
|
333
|
+
`and a \`plan(input)\` method — got ${typeof strategy}. The shipped ones are ` +
|
|
334
|
+
`summarizeOldest({ ... }), slidingWindow({ ... }) and tokenBudget({ ... }); call the ` +
|
|
335
|
+
`factory, do not pass it.`);
|
|
336
|
+
}
|
|
337
|
+
this.windowStrategyValue = strategy;
|
|
338
|
+
return this;
|
|
339
|
+
}
|
|
275
340
|
/**
|
|
276
341
|
* Keep the live context window inside a token budget — without ever losing
|
|
277
342
|
* the record.
|
|
278
343
|
*
|
|
344
|
+
* Sugar for `.window(summarizeOldest(options))`, and byte-for-byte the same
|
|
345
|
+
* agent. It keeps its own name because compaction is what the market calls
|
|
346
|
+
* this and it is the strategy most people want first.
|
|
347
|
+
*
|
|
279
348
|
* At each ReAct iteration boundary, compaction compares the LAST call's
|
|
280
349
|
* **adapter-reported** input tokens against `thresholdTokens`. Over budget,
|
|
281
350
|
* it folds the oldest foldable span of the conversation into one summary
|
|
@@ -311,48 +380,33 @@ export class AgentBuilder {
|
|
|
311
380
|
* ```
|
|
312
381
|
*/
|
|
313
382
|
compaction(options) {
|
|
314
|
-
|
|
383
|
+
this.assertNoWindowStrategy('compaction');
|
|
384
|
+
// Validated here so the error names the door the caller actually used;
|
|
385
|
+
// `summarizeOldest` re-runs the SAME validator under its own label, so the
|
|
386
|
+
// two doors can never drift into accepting different things.
|
|
387
|
+
resolveCompactionOptions(options, 'AgentBuilder.compaction');
|
|
388
|
+
this.windowStrategyValue = summarizeOldest(options);
|
|
389
|
+
return this;
|
|
390
|
+
}
|
|
391
|
+
/**
|
|
392
|
+
* One window strategy per agent, whichever door set it — a second would
|
|
393
|
+
* silently override the first, and a window policy that quietly changed is
|
|
394
|
+
* a policy you cannot audit.
|
|
395
|
+
*/
|
|
396
|
+
assertNoWindowStrategy(door) {
|
|
397
|
+
const existing = this.windowStrategyValue;
|
|
398
|
+
if (existing === undefined)
|
|
399
|
+
return;
|
|
400
|
+
if (door === 'compaction') {
|
|
315
401
|
throw new Error('AgentBuilder.compaction: already set. One compaction policy per agent — a second ' +
|
|
316
402
|
'one would silently override the first, and a budget that quietly changed is a ' +
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
if (options === null || typeof options !== 'object') {
|
|
320
|
-
throw new Error(`AgentBuilder.compaction: expected an options object ` +
|
|
321
|
-
`({ thresholdTokens, summarizer, ... }), got ${typeof options}.`);
|
|
322
|
-
}
|
|
323
|
-
const { thresholdTokens, summarizer, keepRecentTurns, model } = options;
|
|
324
|
-
if (typeof thresholdTokens !== 'number' ||
|
|
325
|
-
!Number.isFinite(thresholdTokens) ||
|
|
326
|
-
thresholdTokens <= 0) {
|
|
327
|
-
throw new Error(`AgentBuilder.compaction: thresholdTokens must be a positive number of tokens, got ` +
|
|
328
|
-
`${String(thresholdTokens)}. There is no default: the right budget depends on your ` +
|
|
329
|
-
`model and your bill, and a number this library invented would be inherited silently ` +
|
|
330
|
-
`by every run.`);
|
|
331
|
-
}
|
|
332
|
-
if (summarizer === null ||
|
|
333
|
-
typeof summarizer !== 'object' ||
|
|
334
|
-
typeof summarizer.complete !== 'function') {
|
|
335
|
-
throw new Error('AgentBuilder.compaction: summarizer must be an LLMProvider (an object with a ' +
|
|
336
|
-
'complete() method). It is explicit on purpose — the library will not quietly bill ' +
|
|
337
|
-
'your main model for compaction. Pass a cheap provider/model here.');
|
|
338
|
-
}
|
|
339
|
-
if (keepRecentTurns !== undefined) {
|
|
340
|
-
if (!Number.isInteger(keepRecentTurns) || keepRecentTurns < 1) {
|
|
341
|
-
throw new Error(`AgentBuilder.compaction: keepRecentTurns must be an integer >= 1, got ` +
|
|
342
|
-
`${String(keepRecentTurns)}. Keeping zero recent turns would fold the turn the ` +
|
|
343
|
-
`model is reasoning over right now.`);
|
|
344
|
-
}
|
|
345
|
-
}
|
|
346
|
-
if (model !== undefined && (typeof model !== 'string' || model.length === 0)) {
|
|
347
|
-
throw new Error(`AgentBuilder.compaction: model must be a non-empty model id, got ${String(model)}.`);
|
|
403
|
+
`budget you cannot audit. (This agent's window strategy is '${existing.name}'; ` +
|
|
404
|
+
'`.compaction()` and `.window()` are the same door.)');
|
|
348
405
|
}
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
model,
|
|
354
|
-
};
|
|
355
|
-
return this;
|
|
406
|
+
throw new Error(`AgentBuilder.window: already set ('${existing.name}'). One window strategy per agent — ` +
|
|
407
|
+
'a second one would silently override the first, and a window policy that quietly ' +
|
|
408
|
+
'changed is a policy you cannot audit. `.compaction()` is the same door with ' +
|
|
409
|
+
'summarizeOldest already in it.');
|
|
356
410
|
}
|
|
357
411
|
/**
|
|
358
412
|
* Override the ReAct iteration cap set via `Agent.create({
|
|
@@ -872,6 +926,118 @@ export class AgentBuilder {
|
|
|
872
926
|
* .checkIn({ evidence: 'standard' })
|
|
873
927
|
* .build();
|
|
874
928
|
*/
|
|
929
|
+
/**
|
|
930
|
+
* Wrap every tool dispatch in a governance chain.
|
|
931
|
+
*
|
|
932
|
+
* Each middleware answers with one of three verbs — `allow()`, `deny(reason)`
|
|
933
|
+
* or `ask({ question })` — and there is deliberately no fourth. In
|
|
934
|
+
* particular there is no way to return a result: whatever the chain decides,
|
|
935
|
+
* the answer the model finally reads is the real tool's output or a refusal.
|
|
936
|
+
* A rule cannot quietly become the tool.
|
|
937
|
+
*
|
|
938
|
+
* - **`allow()`** passes the call through. **`allow(args, why)`** replaces
|
|
939
|
+
* the args and the run commits BOTH versions with your `why` beside them,
|
|
940
|
+
* so a slice taken later can find the moment they changed and who changed
|
|
941
|
+
* them.
|
|
942
|
+
* - **`deny(reason)`** refuses. The reason reaches the model verbatim, as
|
|
943
|
+
* the tool result, and the loop continues — the agent adapts in-flight. A
|
|
944
|
+
* denial is data, not a crash.
|
|
945
|
+
* - **`ask({ question })`** suspends the run for a person, on the same
|
|
946
|
+
* checkpoint machinery `checkIn` and `askHuman` use. The answer is a
|
|
947
|
+
* DECISION, not a result: approve and the chain resumes and the real tool
|
|
948
|
+
* runs; decline and it becomes a denial the model reads.
|
|
949
|
+
*
|
|
950
|
+
* Order is call order, and each middleware sees the previous one's output.
|
|
951
|
+
* The first non-allow answer wins and the rest of the chain does not run. A
|
|
952
|
+
* middleware that throws is a denial carrying the error as its reason —
|
|
953
|
+
* never a silent pass.
|
|
954
|
+
*
|
|
955
|
+
* An existing `PermissionChecker` still decides FIRST: it is not part of
|
|
956
|
+
* this chain, it runs ahead of it, so a call it denies never reaches a
|
|
957
|
+
* middleware. `gatedTools` is a different layer again — it decides which
|
|
958
|
+
* tools the model can SEE; this decides what happens when one is called.
|
|
959
|
+
*
|
|
960
|
+
* Omit this and nothing changes: no chain walk, no committed ledger key, the
|
|
961
|
+
* same request bytes.
|
|
962
|
+
*
|
|
963
|
+
* @example
|
|
964
|
+
* ```ts
|
|
965
|
+
* import { Agent, allow, deny } from 'agentfootprint';
|
|
966
|
+
*
|
|
967
|
+
* const agent = Agent.create({ provider, model })
|
|
968
|
+
* .toolMiddleware({
|
|
969
|
+
* name: 'no-prod-writes',
|
|
970
|
+
* onToolCall: (call) =>
|
|
971
|
+
* call.args.env === 'prod' ? deny('writes to prod need a change ticket') : allow(),
|
|
972
|
+
* })
|
|
973
|
+
* .build();
|
|
974
|
+
* ```
|
|
975
|
+
*/
|
|
976
|
+
toolMiddleware(...middleware) {
|
|
977
|
+
for (const mw of middleware)
|
|
978
|
+
this.assertMiddleware(mw, 'toolMiddleware', 'onToolCall');
|
|
979
|
+
this.toolMiddlewareList = [...this.toolMiddlewareList, ...middleware];
|
|
980
|
+
return this;
|
|
981
|
+
}
|
|
982
|
+
/**
|
|
983
|
+
* Wrap the message boundary in a governance chain — the input before the
|
|
984
|
+
* model sees it, the output before the caller receives it.
|
|
985
|
+
*
|
|
986
|
+
* Same verbs as {@link toolMiddleware} minus one: there is no `ask` here,
|
|
987
|
+
* and the type says so. Tool dispatch runs inside a pausable stage, so it
|
|
988
|
+
* has a checkpoint to suspend on; the message boundary is a plain stage, and
|
|
989
|
+
* inventing a second pause to give it one would be a worse answer than not
|
|
990
|
+
* offering it.
|
|
991
|
+
*
|
|
992
|
+
* The `'input'` half runs at the very top of the run, BEFORE the message is
|
|
993
|
+
* committed. That placement is the point: everything downstream reads
|
|
994
|
+
* `scope.history` — the window strategies, the injections, all three slots,
|
|
995
|
+
* the bytes on the wire and every slice taken afterwards — so the
|
|
996
|
+
* transformed text is what the whole run agrees was said. The `'output'`
|
|
997
|
+
* half runs where the final answer is captured, so the record and the caller
|
|
998
|
+
* receive the same string.
|
|
999
|
+
*
|
|
1000
|
+
* `deny(reason)` at either phase raises a `MessageDeniedError` rather than
|
|
1001
|
+
* returning. At `'input'` there is no model to tell; at `'output'` the
|
|
1002
|
+
* middleware has just refused to release an answer, and handing the caller a
|
|
1003
|
+
* string in its place is the one substitution they must never make without
|
|
1004
|
+
* noticing. The error carries the reason, the phase and the middleware's
|
|
1005
|
+
* name — never the refused content.
|
|
1006
|
+
*
|
|
1007
|
+
* @example
|
|
1008
|
+
* ```ts
|
|
1009
|
+
* import { Agent, allow } from 'agentfootprint';
|
|
1010
|
+
*
|
|
1011
|
+
* const agent = Agent.create({ provider, model })
|
|
1012
|
+
* .messageMiddleware({
|
|
1013
|
+
* name: 'mask-card-numbers',
|
|
1014
|
+
* onMessage: (msg) => {
|
|
1015
|
+
* const clean = msg.content.replace(/\b(?:\d[ -]?){13,16}\b/g, '[card]');
|
|
1016
|
+
* return clean === msg.content ? allow() : allow(clean, 'masked a card number');
|
|
1017
|
+
* },
|
|
1018
|
+
* })
|
|
1019
|
+
* .build();
|
|
1020
|
+
* ```
|
|
1021
|
+
*/
|
|
1022
|
+
messageMiddleware(...middleware) {
|
|
1023
|
+
for (const mw of middleware)
|
|
1024
|
+
this.assertMiddleware(mw, 'messageMiddleware', 'onMessage');
|
|
1025
|
+
this.messageMiddlewareList = [...this.messageMiddlewareList, ...middleware];
|
|
1026
|
+
return this;
|
|
1027
|
+
}
|
|
1028
|
+
/** Shared shape check — a chain built from a typo fails at build time, not
|
|
1029
|
+
* as a silent no-op on the one call that needed governing. */
|
|
1030
|
+
assertMiddleware(mw, method, hook) {
|
|
1031
|
+
if (mw === null ||
|
|
1032
|
+
typeof mw !== 'object' ||
|
|
1033
|
+
typeof mw.name !== 'string' ||
|
|
1034
|
+
mw.name.length === 0 ||
|
|
1035
|
+
typeof mw[hook] !== 'function') {
|
|
1036
|
+
throw new Error(`AgentBuilder.${method}: expected an object with a non-empty \`name\` and a ` +
|
|
1037
|
+
`\`${hook}(...)\` method, got ${typeof mw}. The name is what every ledger row and ` +
|
|
1038
|
+
`event says decided the call, so it cannot be blank.`);
|
|
1039
|
+
}
|
|
1040
|
+
}
|
|
875
1041
|
checkIn(opts = {}) {
|
|
876
1042
|
if (this.checkInConfig !== undefined) {
|
|
877
1043
|
throw new Error('AgentBuilder.checkIn: already configured. Call it at most once.');
|
|
@@ -935,7 +1101,7 @@ export class AgentBuilder {
|
|
|
935
1101
|
const toolProvider = selfExplainBinding
|
|
936
1102
|
? buildSelfExplainToolProvider(selfExplainBinding, this.selfExplainConfig, this.toolProviderRef)
|
|
937
1103
|
: this.toolProviderRef;
|
|
938
|
-
const agent = new Agent(opts, this.systemPromptValue, this.registry, voice, injections, this.memoryList, this.outputSchemaParser, toolProvider, this.systemPromptCachePolicy, this.cachingDisabledValue, this.cacheStrategyOverride, this.outputFallbackCfg, this.reliabilityConfig, this.thinkingHandlerValue, this.thinkingBudgetValue, this.skillGraphNextSkill, this.skillGraphReachable, this.skillGraphScoreEntries, this.checkInConfig, this.runConfigFn, this.
|
|
1104
|
+
const agent = new Agent(opts, this.systemPromptValue, this.registry, voice, injections, this.memoryList, this.outputSchemaParser, toolProvider, this.systemPromptCachePolicy, this.cachingDisabledValue, this.cacheStrategyOverride, this.outputFallbackCfg, this.reliabilityConfig, this.thinkingHandlerValue, this.thinkingBudgetValue, this.skillGraphNextSkill, this.skillGraphReachable, this.skillGraphScoreEntries, this.checkInConfig, this.runConfigFn, this.windowStrategyValue, this.toolMiddlewareList, this.messageMiddlewareList);
|
|
939
1105
|
// Attach builder-collected recorders so they receive events from
|
|
940
1106
|
// the very first run. Mirrors what consumers would do post-build
|
|
941
1107
|
// via `agent.attach(rec)`; the builder method is purely sugar.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AgentBuilder.js","sourceRoot":"","sources":["../../../../src/core/agent/AgentBuilder.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AgentBuilder.js","sourceRoot":"","sources":["../../../../src/core/agent/AgentBuilder.ts"],"names":[],"mappings":"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"}
|
|
@@ -63,9 +63,9 @@ export interface AgentChartDeps {
|
|
|
63
63
|
/** Hard ReAct iteration cap, threaded into CacheDecision's
|
|
64
64
|
* inputMapper for max-iteration policies. */
|
|
65
65
|
readonly maxIterations: number;
|
|
66
|
-
readonly seed: (scope: never) => void
|
|
66
|
+
readonly seed: (scope: never) => void | Promise<void>;
|
|
67
67
|
readonly callLLM: (scope: never) => Promise<void>;
|
|
68
|
-
readonly routeDecider: (scope: never) => 'tool-calls' | 'final'
|
|
68
|
+
readonly routeDecider: (scope: never) => 'tool-calls' | 'final' | Promise<'tool-calls' | 'final'>;
|
|
69
69
|
readonly toolCallsHandler: import('footprintjs').PausableHandler<never>;
|
|
70
70
|
readonly injectionEngineSubflow: FlowChart;
|
|
71
71
|
/** Relevance entry router (`entryByRelevance`) — a once-per-turn function stage
|
|
@@ -73,18 +73,25 @@ export interface AgentChartDeps {
|
|
|
73
73
|
* skill graph was built with a relevance scorer. */
|
|
74
74
|
readonly pickEntryStage?: (scope: never) => Promise<void>;
|
|
75
75
|
/**
|
|
76
|
-
*
|
|
77
|
-
* consumer configured
|
|
78
|
-
* loop target, mounted immediately before the current one.
|
|
76
|
+
* The window-strategy stage (`.window()` / `.compaction()`). Present ONLY
|
|
77
|
+
* when the consumer configured a strategy — and when present it BECOMES the
|
|
78
|
+
* ReAct loop target, mounted immediately before the current one.
|
|
79
79
|
*
|
|
80
80
|
* It has to be the loop target rather than merely sit in the loop body:
|
|
81
81
|
* the loop is branch-sourced (`tool-calls → { loopTo }`), so anything ahead
|
|
82
82
|
* of the target runs once and is never seen again. Being the target also
|
|
83
|
-
* puts the
|
|
84
|
-
* point — the triggers, the three slots and the wire then all see
|
|
85
|
-
* window, and no component gets a different past than the model
|
|
83
|
+
* puts the window change BEFORE the injection engine and the slots, which
|
|
84
|
+
* is the point — the triggers, the three slots and the wire then all see
|
|
85
|
+
* the same window, and no component gets a different past than the model
|
|
86
|
+
* does.
|
|
87
|
+
*
|
|
88
|
+
* `strategyName` rides along so the chart itself says which policy is
|
|
89
|
+
* mounted; a reader of the graph should not have to guess.
|
|
86
90
|
*/
|
|
87
|
-
readonly
|
|
91
|
+
readonly windowStage?: {
|
|
92
|
+
readonly strategyName: string;
|
|
93
|
+
readonly run: (scope: never) => Promise<void>;
|
|
94
|
+
};
|
|
88
95
|
readonly systemPromptSubflow: FlowChart;
|
|
89
96
|
readonly messagesSubflow: FlowChart;
|
|
90
97
|
readonly toolsSubflow: FlowChart;
|
|
@@ -132,17 +132,17 @@ export function buildAgentChart(deps) {
|
|
|
132
132
|
if (deps.pickEntryStage) {
|
|
133
133
|
builder = builder.addFunction('PickEntry', deps.pickEntryStage, STAGE_IDS.PICK_ENTRY, 'Pick the starting skill by relevance to the message (entryByRelevance)');
|
|
134
134
|
}
|
|
135
|
-
//
|
|
136
|
-
//
|
|
137
|
-
//
|
|
135
|
+
// Window strategy — mounted immediately before the current loop target, and
|
|
136
|
+
// it BECOMES the loop target below. That placement is the whole design: the
|
|
137
|
+
// window changes once per iteration boundary, before the injection engine
|
|
138
138
|
// re-evaluates triggers and before the slots compose, so nothing downstream
|
|
139
139
|
// reasons over a window the model will not be sent.
|
|
140
|
-
if (deps.
|
|
141
|
-
builder = builder.addFunction('Compact', deps.
|
|
140
|
+
if (deps.windowStage) {
|
|
141
|
+
builder = builder.addFunction('Compact', deps.windowStage.run, STAGE_IDS.COMPACT, `Apply the '${deps.windowStage.strategyName}' window strategy to the live window`);
|
|
142
142
|
}
|
|
143
|
-
// Where `tool-calls` loops back to. With
|
|
144
|
-
// earlier; without it, this is the
|
|
145
|
-
const loopTarget = deps.
|
|
143
|
+
// Where `tool-calls` loops back to. With a window strategy the head moves
|
|
144
|
+
// one stage earlier; without it, this is the id it has always been.
|
|
145
|
+
const loopTarget = deps.windowStage ? STAGE_IDS.COMPACT : SUBFLOW_IDS.INJECTION_ENGINE;
|
|
146
146
|
builder = builder
|
|
147
147
|
// Injection Engine — evaluates every Injection's trigger once
|
|
148
148
|
// per iteration; writes activeInjections[] to parent scope for
|