agentfootprint 7.23.0 → 7.24.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/README.md +34 -0
- package/dist/core/agent/AgentBuilder.js +117 -1
- package/dist/core/agent/AgentBuilder.js.map +1 -1
- package/dist/core/agent/act.js +143 -0
- package/dist/core/agent/act.js.map +1 -0
- package/dist/core/agent/middleware/index.js +5 -0
- package/dist/core/agent/middleware/index.js.map +1 -1
- package/dist/core/agent/middleware/ledger.js +7 -0
- package/dist/core/agent/middleware/ledger.js.map +1 -1
- package/dist/core/agent/middleware/outcomes.js +9 -2
- package/dist/core/agent/middleware/outcomes.js.map +1 -1
- package/dist/core/agent/middleware/runChain.js +97 -3
- package/dist/core/agent/middleware/runChain.js.map +1 -1
- package/dist/core/agent/middleware/types.js +30 -0
- package/dist/core/agent/middleware/types.js.map +1 -1
- package/dist/core/agent/moments.js +53 -0
- package/dist/core/agent/moments.js.map +1 -0
- package/dist/core/agent/stages/toolCalls.js +130 -7
- package/dist/core/agent/stages/toolCalls.js.map +1 -1
- package/dist/esm/core/agent/AgentBuilder.d.ts +71 -0
- package/dist/esm/core/agent/AgentBuilder.js +117 -1
- package/dist/esm/core/agent/AgentBuilder.js.map +1 -1
- package/dist/esm/core/agent/act.d.ts +69 -0
- package/dist/esm/core/agent/act.js +139 -0
- package/dist/esm/core/agent/act.js.map +1 -0
- package/dist/esm/core/agent/middleware/index.d.ts +6 -1
- package/dist/esm/core/agent/middleware/index.js +5 -0
- package/dist/esm/core/agent/middleware/index.js.map +1 -1
- package/dist/esm/core/agent/middleware/ledger.d.ts +6 -0
- package/dist/esm/core/agent/middleware/ledger.js +7 -0
- package/dist/esm/core/agent/middleware/ledger.js.map +1 -1
- package/dist/esm/core/agent/middleware/outcomes.d.ts +15 -0
- package/dist/esm/core/agent/middleware/outcomes.js +9 -2
- package/dist/esm/core/agent/middleware/outcomes.js.map +1 -1
- package/dist/esm/core/agent/middleware/runChain.d.ts +47 -0
- package/dist/esm/core/agent/middleware/runChain.js +95 -2
- package/dist/esm/core/agent/middleware/runChain.js.map +1 -1
- package/dist/esm/core/agent/middleware/types.d.ts +132 -10
- package/dist/esm/core/agent/middleware/types.js +30 -0
- package/dist/esm/core/agent/middleware/types.js.map +1 -1
- package/dist/esm/core/agent/moments.d.ts +55 -0
- package/dist/esm/core/agent/moments.js +49 -0
- package/dist/esm/core/agent/moments.js.map +1 -0
- package/dist/esm/core/agent/stages/toolCalls.d.ts +6 -1
- package/dist/esm/core/agent/stages/toolCalls.js +131 -8
- package/dist/esm/core/agent/stages/toolCalls.js.map +1 -1
- package/dist/esm/events/payloads.d.ts +4 -0
- package/dist/esm/index.d.ts +3 -1
- package/dist/esm/index.js +7 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lib/mcp/mcpServe.js +25 -1
- package/dist/esm/lib/mcp/mcpServe.js.map +1 -1
- package/dist/index.js +12 -2
- package/dist/index.js.map +1 -1
- package/dist/lib/mcp/mcpServe.js +24 -0
- package/dist/lib/mcp/mcpServe.js.map +1 -1
- package/dist/types/core/agent/AgentBuilder.d.ts +71 -0
- package/dist/types/core/agent/AgentBuilder.d.ts.map +1 -1
- package/dist/types/core/agent/act.d.ts +70 -0
- package/dist/types/core/agent/act.d.ts.map +1 -0
- package/dist/types/core/agent/middleware/index.d.ts +6 -1
- package/dist/types/core/agent/middleware/index.d.ts.map +1 -1
- package/dist/types/core/agent/middleware/ledger.d.ts +6 -0
- package/dist/types/core/agent/middleware/ledger.d.ts.map +1 -1
- package/dist/types/core/agent/middleware/outcomes.d.ts +15 -0
- package/dist/types/core/agent/middleware/outcomes.d.ts.map +1 -1
- package/dist/types/core/agent/middleware/runChain.d.ts +47 -0
- package/dist/types/core/agent/middleware/runChain.d.ts.map +1 -1
- package/dist/types/core/agent/middleware/types.d.ts +132 -10
- package/dist/types/core/agent/middleware/types.d.ts.map +1 -1
- package/dist/types/core/agent/moments.d.ts +56 -0
- package/dist/types/core/agent/moments.d.ts.map +1 -0
- package/dist/types/core/agent/stages/toolCalls.d.ts +6 -1
- package/dist/types/core/agent/stages/toolCalls.d.ts.map +1 -1
- package/dist/types/events/payloads.d.ts +4 -0
- package/dist/types/events/payloads.d.ts.map +1 -1
- package/dist/types/index.d.ts +3 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/lib/mcp/mcpServe.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -590,6 +590,40 @@ npm run example examples/features/34-checkin-coworker.ts -- --decline
|
|
|
590
590
|
|
|
591
591
|
See the [Check-in guide](https://footprintjs.github.io/agentfootprint/docs/monitor/checkin/).
|
|
592
592
|
|
|
593
|
+
### Act — everything your agent does about its own loop, in one block
|
|
594
|
+
|
|
595
|
+
**Tools do the work. Act decides about the work. Watch remembers both — and nothing can act without being watched.**
|
|
596
|
+
|
|
597
|
+
<p align="center">
|
|
598
|
+
<picture>
|
|
599
|
+
<source media="(prefers-color-scheme: dark)" srcset="docs/assets/loop-moments-dark.svg">
|
|
600
|
+
<source media="(prefers-color-scheme: light)" srcset="docs/assets/loop-moments-light.svg">
|
|
601
|
+
<img alt="One agent turn drawn as a circle. The message enters through the INPUT gate; the loop runs clockwise past the WINDOW gate (what the live context keeps), the context slots and the model call, the BEFORE-TOOL gate (every call, before dispatch), the tool actually running, the AFTER-TOOL gate (every result, before the model reads it) and the end of the iteration; the answer leaves through the OUTPUT gate. Five amber gates are the moments .act() can change; purple watch-dots sit at every moment, including the ones with no gate, because watch attends all of them and cannot be switched off." src="docs/assets/loop-moments-light.svg" width="100%"/>
|
|
602
|
+
</picture>
|
|
603
|
+
</p>
|
|
604
|
+
|
|
605
|
+
```ts
|
|
606
|
+
const agent = Agent.create({ provider, model })
|
|
607
|
+
.act({
|
|
608
|
+
input: [scrubSSNs], // the message, before the run commits it
|
|
609
|
+
beforeTool: [refundCeiling, fourEyes], // every call, before it is dispatched
|
|
610
|
+
afterTool: [stripPII], // every result, before the model reads it
|
|
611
|
+
window: slidingWindow({ keepRecentTurns: 12 }), // what the live window keeps
|
|
612
|
+
output: [noCodenames], // the answer, before the caller gets it
|
|
613
|
+
})
|
|
614
|
+
.build();
|
|
615
|
+
```
|
|
616
|
+
|
|
617
|
+
Five keys, one per moment, in the order the loop reaches them — so autocomplete on an empty `{}` teaches the loop. Every rule answers `allow()`, `allow(value, why)` or `deny(reason)` (and `ask({ question })` where a person can still change the outcome), **and none of them can answer for the tool**: the outcome union has no result arm, so what the model finally reads is the real tool's output or a refusal. Every decision files a ledger row stamped with its `moment`.
|
|
618
|
+
|
|
619
|
+
It is pure sugar over the five individual doors, pinned byte-equivalent per key — and the bundle's keys are locked against `LoopMoment` at compile time, so a sixth moment cannot ship without a key for it.
|
|
620
|
+
|
|
621
|
+
```bash
|
|
622
|
+
npm run example examples/features/38-act.ts
|
|
623
|
+
```
|
|
624
|
+
|
|
625
|
+
See [The moments of the loop](https://footprintjs.github.io/agentfootprint/docs/build/loop-moments/).
|
|
626
|
+
|
|
593
627
|
---
|
|
594
628
|
|
|
595
629
|
## 🐛 Debug — see what your agent did
|
|
@@ -17,6 +17,7 @@ const commentaryTemplates_js_1 = require("../../recorders/observability/commenta
|
|
|
17
17
|
const statusTemplates_js_1 = require("../../recorders/observability/status/statusTemplates.js");
|
|
18
18
|
const selfExplain_js_1 = require("../../lib/trace-toolpack/selfExplain.js");
|
|
19
19
|
const Agent_js_1 = require("../Agent.js");
|
|
20
|
+
const act_js_1 = require("./act.js");
|
|
20
21
|
const options_js_1 = require("./window/options.js");
|
|
21
22
|
const summarizeOldest_js_1 = require("./window/strategies/summarizeOldest.js");
|
|
22
23
|
/**
|
|
@@ -136,6 +137,8 @@ class AgentBuilder {
|
|
|
136
137
|
toolMiddlewareList = [];
|
|
137
138
|
/** The message chain, in call order. Empty = no chain, no ledger. */
|
|
138
139
|
messageMiddlewareList = [];
|
|
140
|
+
/** `.act()` is the posture block: one per agent. See the method. */
|
|
141
|
+
actCalled = false;
|
|
139
142
|
constructor(opts) {
|
|
140
143
|
this.opts = opts;
|
|
141
144
|
// Cache layer: opts.caching === 'off' propagates to scope's
|
|
@@ -283,6 +286,81 @@ class AgentBuilder {
|
|
|
283
286
|
this.runConfigFn = fn;
|
|
284
287
|
return this;
|
|
285
288
|
}
|
|
289
|
+
/**
|
|
290
|
+
* Everything this agent DOES about its own loop, in one block.
|
|
291
|
+
*
|
|
292
|
+
* Tools do the work. `.act()` decides about the work. `watch` remembers
|
|
293
|
+
* both — and nothing can act without being watched.
|
|
294
|
+
*
|
|
295
|
+
* Five keys, one per moment of a turn, each optional and each the exact
|
|
296
|
+
* argument the individual door takes:
|
|
297
|
+
*
|
|
298
|
+
* ```ts
|
|
299
|
+
* const agent = Agent.create({ provider, model })
|
|
300
|
+
* .act({
|
|
301
|
+
* input: [scrubSSNs], // the message, before the run commits it
|
|
302
|
+
* beforeTool: [refundCeiling], // every call, before it is dispatched
|
|
303
|
+
* afterTool: [hideRawPII], // every result, before the model reads it
|
|
304
|
+
* window: slidingWindow({ keepRecentTurns: 12 }),
|
|
305
|
+
* output: [noInternalCodenames],
|
|
306
|
+
* })
|
|
307
|
+
* .build();
|
|
308
|
+
* ```
|
|
309
|
+
*
|
|
310
|
+
* **It is sugar, and provably so.** Each key is forwarded to the door that
|
|
311
|
+
* already owned it — `.messageMiddleware()`, `.toolMiddleware()`,
|
|
312
|
+
* `.window()` — so the agent it builds sends the same request bytes and
|
|
313
|
+
* files the same records as the same rules spelled out one call at a time.
|
|
314
|
+
* That equivalence is pinned per key by tests, the way `.compaction()`'s is.
|
|
315
|
+
*
|
|
316
|
+
* **The keys cannot fall behind the loop.** They are locked at compile time
|
|
317
|
+
* against `LoopMoment`, so a sixth moment cannot ship without a key here.
|
|
318
|
+
*
|
|
319
|
+
* **A rule speaks where its hooks say, not where you filed it.** `beforeTool`
|
|
320
|
+
* and `afterTool` are one chain; an entry with both `onToolCall` and
|
|
321
|
+
* `onToolResult` runs at both moments whichever key you wrote it under —
|
|
322
|
+
* the KEYS are named for the moments, the HOOKS for what they receive — and
|
|
323
|
+
* an entry named
|
|
324
|
+
* under both keys is the same object attached once. A governance rule that
|
|
325
|
+
* silently did not run because it was written in the wrong bucket is exactly
|
|
326
|
+
* the failure this library exists to make impossible — so the bucket is
|
|
327
|
+
* checked for the hook it names, and the hooks decide the rest.
|
|
328
|
+
*
|
|
329
|
+
* **Call it once.** A second `.act()` throws: two posture blocks means the
|
|
330
|
+
* answer to "what does this agent do at each moment?" is in two places, and
|
|
331
|
+
* the second one silently wins. Adding one piece to an agent somebody else
|
|
332
|
+
* built — a plugin, a policy pack — is what the individual doors are for,
|
|
333
|
+
* and they stay open for exactly that.
|
|
334
|
+
*
|
|
335
|
+
* @param options - One key per moment. `input` / `output` take message
|
|
336
|
+
* middleware, `beforeTool` / `afterTool` take tool middleware, `window`
|
|
337
|
+
* takes a `WindowStrategy`. Unknown keys throw.
|
|
338
|
+
*/
|
|
339
|
+
act(options) {
|
|
340
|
+
if (this.actCalled) {
|
|
341
|
+
throw new Error('AgentBuilder.act: already called. One posture block per agent — a second would put ' +
|
|
342
|
+
'the answer to "what does this agent do at each moment of its loop?" in two places, ' +
|
|
343
|
+
'with the later one silently winning. To ADD one rule to an agent that already has ' +
|
|
344
|
+
'a posture, use the individual door for that moment (.toolMiddleware(), ' +
|
|
345
|
+
'.messageMiddleware(), .window()); they compose incrementally by design.');
|
|
346
|
+
}
|
|
347
|
+
// Resolved BEFORE anything is attached: a bundle with a bad key must
|
|
348
|
+
// leave the builder exactly as it found it, not half-configured. Every
|
|
349
|
+
// entry is validated inside `resolveAct`, and the window — the one key
|
|
350
|
+
// whose validation lives on its own door — goes first for the same
|
|
351
|
+
// reason.
|
|
352
|
+
const resolved = (0, act_js_1.resolveAct)(options);
|
|
353
|
+
if (resolved.window !== undefined) {
|
|
354
|
+
this.assertNoWindowStrategy('act');
|
|
355
|
+
this.window(resolved.window);
|
|
356
|
+
}
|
|
357
|
+
this.actCalled = true;
|
|
358
|
+
if (resolved.message.length > 0)
|
|
359
|
+
this.messageMiddleware(...resolved.message);
|
|
360
|
+
if (resolved.tool.length > 0)
|
|
361
|
+
this.toolMiddleware(...resolved.tool);
|
|
362
|
+
return this;
|
|
363
|
+
}
|
|
286
364
|
/**
|
|
287
365
|
* Choose how the live context window is kept inside its budget.
|
|
288
366
|
*
|
|
@@ -401,6 +479,12 @@ class AgentBuilder {
|
|
|
401
479
|
const existing = this.windowStrategyValue;
|
|
402
480
|
if (existing === undefined)
|
|
403
481
|
return;
|
|
482
|
+
if (door === 'act') {
|
|
483
|
+
throw new Error(`AgentBuilder.act: this agent already has a window strategy ('${existing.name}'), set ` +
|
|
484
|
+
'by .window() or .compaction(). One window strategy per agent, whichever door set ' +
|
|
485
|
+
'it — a second would silently override the first, and a window policy that quietly ' +
|
|
486
|
+
'changed is a policy you cannot audit. Move it into the `window` key, or drop the key.');
|
|
487
|
+
}
|
|
404
488
|
if (door === 'compaction') {
|
|
405
489
|
throw new Error('AgentBuilder.compaction: already set. One compaction policy per agent — a second ' +
|
|
406
490
|
'one would silently override the first, and a budget that quietly changed is a ' +
|
|
@@ -971,6 +1055,16 @@ class AgentBuilder {
|
|
|
971
1055
|
* middleware that throws is a denial carrying the error as its reason —
|
|
972
1056
|
* never a silent pass.
|
|
973
1057
|
*
|
|
1058
|
+
* A link may also carry an **`onToolResult`** hook, which decides about the
|
|
1059
|
+
* RESULT once the tool has run and before the model reads it — `allow()`,
|
|
1060
|
+
* `allow(value, why)` or `deny(reason)`, and no `ask`, because the tool has
|
|
1061
|
+
* already run and there is nothing left for a person to prevent. That half
|
|
1062
|
+
* of the chain is walked BACKWARDS, so the first-declared rule has the first
|
|
1063
|
+
* word about the call and the last word about the answer. A link with only
|
|
1064
|
+
* `onToolResult` takes no part in dispatch at all.
|
|
1065
|
+
*
|
|
1066
|
+
* `.act({ beforeTool, afterTool })` is the same chain, named by moment.
|
|
1067
|
+
*
|
|
974
1068
|
* An existing `PermissionChecker` still decides FIRST: it is not part of
|
|
975
1069
|
* this chain, it runs ahead of it, so a call it denies never reaches a
|
|
976
1070
|
* middleware. `gatedTools` is a different layer again — it decides which
|
|
@@ -994,10 +1088,32 @@ class AgentBuilder {
|
|
|
994
1088
|
*/
|
|
995
1089
|
toolMiddleware(...middleware) {
|
|
996
1090
|
for (const mw of middleware)
|
|
997
|
-
this.
|
|
1091
|
+
this.assertToolMiddleware(mw);
|
|
998
1092
|
this.toolMiddlewareList = [...this.toolMiddlewareList, ...middleware];
|
|
999
1093
|
return this;
|
|
1000
1094
|
}
|
|
1095
|
+
/**
|
|
1096
|
+
* A tool link needs a name and at least one hook. Both are optional
|
|
1097
|
+
* INDIVIDUALLY — a rule about calls, a rule about results, or both — but a
|
|
1098
|
+
* link with neither is a governance rule that can never run, and finding
|
|
1099
|
+
* that out from a quiet run rather than from `build()` is the whole disease.
|
|
1100
|
+
*/
|
|
1101
|
+
assertToolMiddleware(mw) {
|
|
1102
|
+
const shaped = mw !== null &&
|
|
1103
|
+
typeof mw === 'object' &&
|
|
1104
|
+
typeof mw.name === 'string' &&
|
|
1105
|
+
mw.name.length > 0;
|
|
1106
|
+
const record = mw;
|
|
1107
|
+
const hooks = shaped &&
|
|
1108
|
+
(typeof record?.onToolCall === 'function' || typeof record?.onToolResult === 'function');
|
|
1109
|
+
if (!hooks) {
|
|
1110
|
+
throw new Error(`AgentBuilder.toolMiddleware: expected an object with a non-empty \`name\` and at ` +
|
|
1111
|
+
`least one of \`onToolCall(call)\` (decides about the call) or ` +
|
|
1112
|
+
`\`onToolResult(call)\` ` +
|
|
1113
|
+
`(decides about the result), got ${typeof mw}. The name is what every ledger row ` +
|
|
1114
|
+
`and event says decided the call, so it cannot be blank.`);
|
|
1115
|
+
}
|
|
1116
|
+
}
|
|
1001
1117
|
/**
|
|
1002
1118
|
* Wrap the message boundary in a governance chain — the input before the
|
|
1003
1119
|
* model sees it, the output before the caller receives it.
|
|
@@ -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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"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* act — PUBLIC. One bundle for every place a rule may speak.
|
|
4
|
+
*
|
|
5
|
+
* Pattern: Facade over five doors, with the facade's KEYS type-locked to the
|
|
6
|
+
* list of moments they cover.
|
|
7
|
+
* Role: core/ layer. `.act()` builds nothing new: it validates a bundle
|
|
8
|
+
* and calls `.messageMiddleware()`, `.toolMiddleware()` and
|
|
9
|
+
* `.window()` with exactly what a person would have passed by hand.
|
|
10
|
+
* Everything about a run is decided by those doors, here and there
|
|
11
|
+
* alike.
|
|
12
|
+
* Emits: N/A.
|
|
13
|
+
*
|
|
14
|
+
* ## Why a bundle at all, when the doors already exist
|
|
15
|
+
*
|
|
16
|
+
* Because the doors are findable one at a time and the POSTURE is not. An
|
|
17
|
+
* agent's governance currently reads as four unrelated calls scattered
|
|
18
|
+
* through a builder chain, and the question a reviewer actually has —
|
|
19
|
+
* "what does this agent do at each point in its loop?" — has no place to be
|
|
20
|
+
* answered. `.act({ … })` is that place: five optional keys, named for the
|
|
21
|
+
* five moments, so autocomplete on an empty object teaches the loop.
|
|
22
|
+
*
|
|
23
|
+
* ## The completeness lock
|
|
24
|
+
*
|
|
25
|
+
* The keys of {@link ActOptions} are pinned, at compile time, against
|
|
26
|
+
* `ActKey<LoopMoment>` — the moment list, camel-cased. Add a sixth moment to
|
|
27
|
+
* `LOOP_MOMENTS` and this file stops compiling until the bundle grows the key
|
|
28
|
+
* for it; delete a key and the same. A surface that claims to be complete has
|
|
29
|
+
* to be made unable to fall behind, or the claim is just a sentence in a doc.
|
|
30
|
+
*
|
|
31
|
+
* The runtime half is derived from the same list: the accepted key set is
|
|
32
|
+
* `LOOP_MOMENTS.map(actKeyFor)`, so a typo'd key is refused by a validator
|
|
33
|
+
* that cannot drift from the type it is validating.
|
|
34
|
+
*/
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.resolveAct = exports.ACT_KEYS = void 0;
|
|
37
|
+
const outcomes_js_1 = require("./middleware/outcomes.js");
|
|
38
|
+
const moments_js_1 = require("./moments.js");
|
|
39
|
+
const _keysAreExactlyTheMoments = true;
|
|
40
|
+
void _keysAreExactlyTheMoments;
|
|
41
|
+
/** The keys `.act()` accepts, derived from the moment list rather than typed. */
|
|
42
|
+
exports.ACT_KEYS = moments_js_1.LOOP_MOMENTS.map(moments_js_1.actKeyFor);
|
|
43
|
+
/**
|
|
44
|
+
* Restrict a message middleware to ONE phase.
|
|
45
|
+
*
|
|
46
|
+
* `.messageMiddleware()` attaches a link to both halves of the boundary and
|
|
47
|
+
* lets it read `msg.phase`; the bundle names the phases instead, so an entry
|
|
48
|
+
* written for one of them is wrapped in exactly the guard a person writes by
|
|
49
|
+
* hand today. The pass-through at the other phase is a real walk with a real
|
|
50
|
+
* row, because it is a real link in the chain — the same run, the same
|
|
51
|
+
* record, whichever spelling put it there.
|
|
52
|
+
*/
|
|
53
|
+
function onlyAt(phase, mw) {
|
|
54
|
+
return {
|
|
55
|
+
name: mw.name,
|
|
56
|
+
onMessage: (msg) => (msg.phase === phase ? mw.onMessage(msg) : (0, outcomes_js_1.allow)()),
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
function assertList(value, key) {
|
|
60
|
+
if (!Array.isArray(value)) {
|
|
61
|
+
throw new Error(`AgentBuilder.act: '${key}' expects an array of middleware, got ${typeof value}. ` +
|
|
62
|
+
`Wrap a single rule in an array — the bundle is a list per moment.`);
|
|
63
|
+
}
|
|
64
|
+
return value;
|
|
65
|
+
}
|
|
66
|
+
function assertNamedHook(mw, key, hook) {
|
|
67
|
+
if (mw === null ||
|
|
68
|
+
typeof mw !== 'object' ||
|
|
69
|
+
typeof mw.name !== 'string' ||
|
|
70
|
+
mw.name.length === 0 ||
|
|
71
|
+
typeof mw[hook] !== 'function') {
|
|
72
|
+
throw new Error(`AgentBuilder.act: every '${key}' entry needs a non-empty \`name\` and a \`${hook}(...)\` ` +
|
|
73
|
+
`method. The name is what every ledger row and event says decided the call, so it ` +
|
|
74
|
+
`cannot be blank` +
|
|
75
|
+
(hook === 'onToolCall'
|
|
76
|
+
? `; a rule that only has \`onToolResult\` belongs under 'afterTool'.`
|
|
77
|
+
: hook === 'onToolResult'
|
|
78
|
+
? `; a rule that only has \`onToolCall\` belongs under 'beforeTool'.`
|
|
79
|
+
: `.`));
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Validate a bundle and turn it into the arguments the five doors take.
|
|
84
|
+
*
|
|
85
|
+
* Pure — it throws or it returns; it touches no builder state. `.act()` is
|
|
86
|
+
* the caller that hands the result to the doors, which is what makes the
|
|
87
|
+
* sugar provably the same agent.
|
|
88
|
+
*/
|
|
89
|
+
function resolveAct(options) {
|
|
90
|
+
if (options === null || typeof options !== 'object' || Array.isArray(options)) {
|
|
91
|
+
throw new Error(`AgentBuilder.act: expected an options object, got ${Array.isArray(options) ? 'an array' : typeof options}. The keys are ${exports.ACT_KEYS.join(', ')}.`);
|
|
92
|
+
}
|
|
93
|
+
for (const key of Object.keys(options)) {
|
|
94
|
+
if (!exports.ACT_KEYS.includes(key)) {
|
|
95
|
+
throw new Error(`AgentBuilder.act: unknown key '${key}'. The loop has ${moments_js_1.LOOP_MOMENTS.length} moments and ` +
|
|
96
|
+
`this bundle has one key for each: ${exports.ACT_KEYS.join(', ')}. A key nobody reads is a ` +
|
|
97
|
+
`governance rule that silently never runs, so it is refused here rather than ignored.`);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
// ── The message halves ──────────────────────────────────────────────
|
|
101
|
+
// A link named at BOTH phases is attached once, unguarded — which is the
|
|
102
|
+
// plain `.messageMiddleware(mw)` spelling, and the one that files one row
|
|
103
|
+
// per phase instead of two.
|
|
104
|
+
const input = assertList(options.input ?? [], 'input');
|
|
105
|
+
const output = assertList(options.output ?? [], 'output');
|
|
106
|
+
for (const mw of input)
|
|
107
|
+
assertNamedHook(mw, 'input', 'onMessage');
|
|
108
|
+
for (const mw of output)
|
|
109
|
+
assertNamedHook(mw, 'output', 'onMessage');
|
|
110
|
+
const message = [];
|
|
111
|
+
for (const mw of input) {
|
|
112
|
+
message.push(output.includes(mw) ? mw : onlyAt('input', mw));
|
|
113
|
+
}
|
|
114
|
+
for (const mw of output) {
|
|
115
|
+
if (!input.includes(mw))
|
|
116
|
+
message.push(onlyAt('output', mw));
|
|
117
|
+
}
|
|
118
|
+
// ── The tool moments ────────────────────────────────────────────────
|
|
119
|
+
// One list, walked forwards for calls and backwards for results. The
|
|
120
|
+
// buckets are named for the MOMENTS (`afterTool` ⇄ `'after-tool'`); the
|
|
121
|
+
// hooks are named for what they RECEIVE (`onToolResult`). The bucket says
|
|
122
|
+
// where a rule is MEANT to speak and is checked for the hook it names; what
|
|
123
|
+
// it actually does is decided by the hooks it has, so a rule can never
|
|
124
|
+
// silently fail to run because it was written in the other bucket.
|
|
125
|
+
const beforeTool = assertList(options.beforeTool ?? [], 'beforeTool');
|
|
126
|
+
const afterTool = assertList(options.afterTool ?? [], 'afterTool');
|
|
127
|
+
for (const mw of beforeTool)
|
|
128
|
+
assertNamedHook(mw, 'beforeTool', 'onToolCall');
|
|
129
|
+
for (const mw of afterTool)
|
|
130
|
+
assertNamedHook(mw, 'afterTool', 'onToolResult');
|
|
131
|
+
const tool = [...beforeTool];
|
|
132
|
+
for (const mw of afterTool) {
|
|
133
|
+
if (!tool.includes(mw))
|
|
134
|
+
tool.push(mw);
|
|
135
|
+
}
|
|
136
|
+
return {
|
|
137
|
+
message,
|
|
138
|
+
tool,
|
|
139
|
+
...(options.window !== undefined && { window: options.window }),
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
exports.resolveAct = resolveAct;
|
|
143
|
+
//# sourceMappingURL=act.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"act.js","sourceRoot":"","sources":["../../../src/core/agent/act.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,11 @@
|
|
|
11
11
|
*
|
|
12
12
|
* Three verbs: `allow`, `deny`, `ask`. There is no fourth, and in
|
|
13
13
|
* particular there is no way to return a result — see `types.ts`.
|
|
14
|
+
*
|
|
15
|
+
* A tool link may speak twice: `onToolCall` about the call, `onToolResult`
|
|
16
|
+
* about the result. The chain is walked forwards for the first and backwards for the
|
|
17
|
+
* second, so the first-declared link has the first word going in and the last
|
|
18
|
+
* word coming out.
|
|
14
19
|
*/
|
|
15
20
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
21
|
exports.MessageDeniedError = exports.deny = exports.ask = exports.allow = void 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/agent/middleware/index.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/agent/middleware/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;GAiBG;;;AAEH,6CAAiD;AAAxC,oGAAA,KAAK,OAAA;AAAE,kGAAA,GAAG,OAAA;AAAE,mGAAA,IAAI,OAAA;AACzB,yCAA4E;AAAnE,+GAAA,kBAAkB,OAAA"}
|
|
@@ -17,6 +17,12 @@
|
|
|
17
17
|
* disagreement from a lie into a record. Every slice taken afterwards can
|
|
18
18
|
* then find the moment the value changed and who changed it.
|
|
19
19
|
*
|
|
20
|
+
* The same reasoning covers the `'after-tool'` moment from the other side. A
|
|
21
|
+
* result the model was not allowed to read still HAPPENED — the tool ran, the
|
|
22
|
+
* side effect landed — so the refusal row carries the real result. A run that
|
|
23
|
+
* dropped it would record an agent that called a tool and got nothing back,
|
|
24
|
+
* which is not what occurred.
|
|
25
|
+
*
|
|
20
26
|
* This is not a redaction layer, and it is not trying to be one. For the
|
|
21
27
|
* `'input'` phase in particular, the ledger row is the ONLY copy of the
|
|
22
28
|
* pre-scrub text anywhere in the run — the seed stage commits the
|
|
@@ -46,6 +52,7 @@ function recordDecisions(scope, rows) {
|
|
|
46
52
|
for (const row of rows) {
|
|
47
53
|
(0, typedEmit_js_1.typedEmit)(scope, 'agentfootprint.middleware.decision', {
|
|
48
54
|
middleware: row.middleware,
|
|
55
|
+
moment: row.moment,
|
|
49
56
|
at: row.at,
|
|
50
57
|
...(row.phase !== undefined && { phase: row.phase }),
|
|
51
58
|
...(row.toolName !== undefined && { toolName: row.toolName }),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ledger.js","sourceRoot":"","sources":["../../../../src/core/agent/middleware/ledger.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"ledger.js","sourceRoot":"","sources":["../../../../src/core/agent/middleware/ledger.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;;;AAEH,uEAAiE;AASjE;;;;;GAKG;AACH,SAAgB,eAAe,CAAC,KAAkB,EAAE,IAAmC;IACrF,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAC9B,MAAM,IAAI,GAAI,KAAK,CAAC,mBAAiE,IAAI,EAAE,CAAC;IAC5F,2EAA2E;IAC3E,4EAA4E;IAC5E,yEAAyE;IACzE,KAAK,CAAC,mBAAmB,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;IAC/C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAA,wBAAS,EAAC,KAAK,EAAE,oCAAoC,EAAE;YACrD,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,GAAG,CAAC,GAAG,CAAC,KAAK,KAAK,SAAS,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC;YACpD,GAAG,CAAC,GAAG,CAAC,QAAQ,KAAK,SAAS,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC;YAC7D,GAAG,CAAC,GAAG,CAAC,UAAU,KAAK,SAAS,IAAI,EAAE,UAAU,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC;YACnE,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,SAAS,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;SAC/C,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AArBD,0CAqBC"}
|
|
@@ -18,8 +18,9 @@
|
|
|
18
18
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
19
|
exports.ask = exports.deny = exports.allow = void 0;
|
|
20
20
|
function allow(value, why) {
|
|
21
|
-
if (value === undefined)
|
|
22
|
-
return { kind: 'allow' };
|
|
21
|
+
if (value === undefined) {
|
|
22
|
+
return typeof why === 'string' && why.length > 0 ? { kind: 'allow', why } : { kind: 'allow' };
|
|
23
|
+
}
|
|
23
24
|
if (typeof why !== 'string' || why.length === 0) {
|
|
24
25
|
throw new Error('allow(value, why): a transform must say why. Pass a short reason — it is what the ' +
|
|
25
26
|
'ledger shows next to the before/after pair. To pass the value through unchanged, ' +
|
|
@@ -34,6 +35,12 @@ exports.allow = allow;
|
|
|
34
35
|
* For a tool the reason reaches the model verbatim, as the tool's result,
|
|
35
36
|
* and the loop continues — the agent gets to adapt. For a message it
|
|
36
37
|
* surfaces as a `MessageDeniedError`.
|
|
38
|
+
*
|
|
39
|
+
* At the after-tool moment it means "the model does not get to read this" — the
|
|
40
|
+
* tool has already run, so the refusal replaces what the model reads while
|
|
41
|
+
* the run keeps the real result in the ledger. Refusing there hides an answer
|
|
42
|
+
* from the model; it cannot un-happen a side effect, and it does not pretend
|
|
43
|
+
* to.
|
|
37
44
|
*/
|
|
38
45
|
function deny(reason) {
|
|
39
46
|
if (typeof reason !== 'string' || reason.length === 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"outcomes.js","sourceRoot":"","sources":["../../../../src/core/agent/middleware/outcomes.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;;
|
|
1
|
+
{"version":3,"file":"outcomes.js","sourceRoot":"","sources":["../../../../src/core/agent/middleware/outcomes.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;;AAuBH,SAAgB,KAAK,CAAI,KAAS,EAAE,GAAY;IAC9C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IAChG,CAAC;IACD,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChD,MAAM,IAAI,KAAK,CACb,oFAAoF;YAClF,mFAAmF;YACnF,iCAAiC,CACpC,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AACvC,CAAC;AAZD,sBAYC;AAED;;;;;;;;;;;;GAYG;AACH,SAAgB,IAAI,CAAC,MAAc;IACjC,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtD,MAAM,IAAI,KAAK,CACb,mFAAmF;YACjF,qEAAqE,CACxE,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AAClC,CAAC;AARD,oBAQC;AAED;;;;;;;;GAQG;AACH,SAAgB,GAAG,CAAC,OAAmB;IACrC,IACE,OAAO,KAAK,IAAI;QAChB,OAAO,OAAO,KAAK,QAAQ;QAC3B,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ;QACpC,OAAO,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAC7B,CAAC;QACD,MAAM,IAAI,KAAK,CACb,uFAAuF;YACrF,gDAAgD,CACnD,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AAClC,CAAC;AAbD,kBAaC"}
|
|
@@ -26,9 +26,19 @@
|
|
|
26
26
|
* permission gate has always applied to a checker that throws: a
|
|
27
27
|
* governance layer whose failure mode is "allow" is not a governance
|
|
28
28
|
* layer.
|
|
29
|
+
*
|
|
30
|
+
* **The result comes back through the onion.** `runToolAfterChain` walks the
|
|
31
|
+
* SAME list in reverse, so the first-declared link gets the first word about
|
|
32
|
+
* the call and the last word about the result. An outer rule is the one that
|
|
33
|
+
* sees what every inner rule already did — which is the only order in which
|
|
34
|
+
* "wrap" means anything.
|
|
35
|
+
*
|
|
36
|
+
* **A link that has no hook for a moment files no row.** It did not decide;
|
|
37
|
+
* saying it allowed would be inventing a decision, and the ledger's whole
|
|
38
|
+
* value is that a row means somebody looked.
|
|
29
39
|
*/
|
|
30
40
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
31
|
-
exports.runMessageChain = exports.runToolChain = void 0;
|
|
41
|
+
exports.runMessageChain = exports.runToolAfterChain = exports.runToolChain = void 0;
|
|
32
42
|
/** Walk the tool chain. Never throws — a throwing link becomes a denial. */
|
|
33
43
|
async function runToolChain(chain, input) {
|
|
34
44
|
const decisions = [];
|
|
@@ -36,8 +46,13 @@ async function runToolChain(chain, input) {
|
|
|
36
46
|
let args = input.args;
|
|
37
47
|
for (let i = input.startIndex ?? 0; i < chain.length; i++) {
|
|
38
48
|
const mw = chain[i];
|
|
49
|
+
// A result-only link takes no part in dispatch — and files no row here,
|
|
50
|
+
// because it did not decide anything about this call.
|
|
51
|
+
if (typeof mw.onToolCall !== 'function')
|
|
52
|
+
continue;
|
|
39
53
|
const row = (extra) => ({
|
|
40
54
|
middleware: mw.name,
|
|
55
|
+
moment: 'before-tool',
|
|
41
56
|
at: 'tool',
|
|
42
57
|
toolName: input.toolName,
|
|
43
58
|
toolCallId: input.toolCallId,
|
|
@@ -94,12 +109,90 @@ async function runToolChain(chain, input) {
|
|
|
94
109
|
decisions.push(row({ changed: true, ...(outcome.why && { why: outcome.why }), before, after: args }));
|
|
95
110
|
}
|
|
96
111
|
else {
|
|
97
|
-
|
|
112
|
+
// `allow(undefined, why)` — nothing moved, and the link said why it was
|
|
113
|
+
// comfortable. The reason belongs on the row of the call it permitted.
|
|
114
|
+
decisions.push(row(outcome.why ? { why: outcome.why } : {}));
|
|
98
115
|
}
|
|
99
116
|
}
|
|
100
117
|
return { kind: 'allow', args, decisions };
|
|
101
118
|
}
|
|
102
119
|
exports.runToolChain = runToolChain;
|
|
120
|
+
/**
|
|
121
|
+
* Walk the chain BACKWARDS over a finished call. Never throws — a throwing
|
|
122
|
+
* link becomes a denial, which at this moment means the model reads the
|
|
123
|
+
* reason instead of the result.
|
|
124
|
+
*
|
|
125
|
+
* Only called for a call that actually executed. A call the chain denied, or
|
|
126
|
+
* one still waiting on a person, has no result to decide about, and asking a
|
|
127
|
+
* rule about a result that does not exist would be the same fabrication the
|
|
128
|
+
* outcome union exists to prevent.
|
|
129
|
+
*/
|
|
130
|
+
async function runToolAfterChain(chain, input) {
|
|
131
|
+
const decisions = [];
|
|
132
|
+
const real = input.result;
|
|
133
|
+
let result = real;
|
|
134
|
+
// Reverse: first-declared saw the call first, so it sees the result last.
|
|
135
|
+
for (let i = chain.length - 1; i >= 0; i--) {
|
|
136
|
+
const mw = chain[i];
|
|
137
|
+
const hook = mw.onToolResult;
|
|
138
|
+
if (typeof hook !== 'function')
|
|
139
|
+
continue;
|
|
140
|
+
const row = (extra) => ({
|
|
141
|
+
middleware: mw.name,
|
|
142
|
+
moment: 'after-tool',
|
|
143
|
+
at: 'tool',
|
|
144
|
+
toolName: input.toolName,
|
|
145
|
+
toolCallId: input.toolCallId,
|
|
146
|
+
iteration: input.iteration,
|
|
147
|
+
outcome: 'allow',
|
|
148
|
+
changed: false,
|
|
149
|
+
...extra,
|
|
150
|
+
});
|
|
151
|
+
let outcome;
|
|
152
|
+
try {
|
|
153
|
+
outcome = await hook.call(mw, {
|
|
154
|
+
toolName: input.toolName,
|
|
155
|
+
...(input.toolSource !== undefined && { toolSource: input.toolSource }),
|
|
156
|
+
toolCallId: input.toolCallId,
|
|
157
|
+
iteration: input.iteration,
|
|
158
|
+
args: input.args,
|
|
159
|
+
result,
|
|
160
|
+
...(input.error === true && { error: true }),
|
|
161
|
+
history: input.history,
|
|
162
|
+
...(input.identity && { identity: input.identity }),
|
|
163
|
+
...(input.signal && { signal: input.signal }),
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
catch (err) {
|
|
167
|
+
const reason = `middleware '${mw.name}' threw: ${err instanceof Error ? err.message : String(err)}`;
|
|
168
|
+
decisions.push(row({ outcome: 'deny', changed: true, why: reason, before: result, after: reason }));
|
|
169
|
+
return { kind: 'deny', reason, middleware: mw.name, result: real, decisions };
|
|
170
|
+
}
|
|
171
|
+
if (outcome.kind === 'deny') {
|
|
172
|
+
// `changed: true` on purpose: unlike a refusal before dispatch, this one
|
|
173
|
+
// DOES replace something. The real result rides `before` — often the
|
|
174
|
+
// only copy of it in the run.
|
|
175
|
+
decisions.push(row({
|
|
176
|
+
outcome: 'deny',
|
|
177
|
+
changed: true,
|
|
178
|
+
why: outcome.reason,
|
|
179
|
+
before: result,
|
|
180
|
+
after: outcome.reason,
|
|
181
|
+
}));
|
|
182
|
+
return { kind: 'deny', reason: outcome.reason, middleware: mw.name, result: real, decisions };
|
|
183
|
+
}
|
|
184
|
+
if (outcome.value !== undefined) {
|
|
185
|
+
const before = result;
|
|
186
|
+
result = outcome.value;
|
|
187
|
+
decisions.push(row({ changed: true, ...(outcome.why && { why: outcome.why }), before, after: result }));
|
|
188
|
+
}
|
|
189
|
+
else {
|
|
190
|
+
decisions.push(row(outcome.why ? { why: outcome.why } : {}));
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
return { kind: 'allow', result, decisions };
|
|
194
|
+
}
|
|
195
|
+
exports.runToolAfterChain = runToolAfterChain;
|
|
103
196
|
/** Walk the message chain. Never throws — a throwing link becomes a denial. */
|
|
104
197
|
async function runMessageChain(chain, input) {
|
|
105
198
|
const decisions = [];
|
|
@@ -107,6 +200,7 @@ async function runMessageChain(chain, input) {
|
|
|
107
200
|
for (const mw of chain) {
|
|
108
201
|
const row = (extra) => ({
|
|
109
202
|
middleware: mw.name,
|
|
203
|
+
moment: input.phase,
|
|
110
204
|
at: 'message',
|
|
111
205
|
phase: input.phase,
|
|
112
206
|
iteration: input.iteration,
|
|
@@ -139,7 +233,7 @@ async function runMessageChain(chain, input) {
|
|
|
139
233
|
decisions.push(row({ changed: true, ...(outcome.why && { why: outcome.why }), before, after: content }));
|
|
140
234
|
}
|
|
141
235
|
else {
|
|
142
|
-
decisions.push(row({}));
|
|
236
|
+
decisions.push(row(outcome.why ? { why: outcome.why } : {}));
|
|
143
237
|
}
|
|
144
238
|
}
|
|
145
239
|
return { kind: 'allow', content, decisions };
|