agentfootprint 6.11.0 → 6.12.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 +7 -5
- package/CLAUDE.md +8 -6
- package/README.md +1 -1
- package/ai-instructions/claude-code/SKILL.md +5 -5
- package/dist/core/Agent.js +14 -0
- package/dist/core/Agent.js.map +1 -1
- package/dist/core/agent/buildAgentChart.js +3 -0
- package/dist/core/agent/buildAgentChart.js.map +1 -1
- package/dist/core/agent/buildDynamicAgentChart.js +3 -0
- package/dist/core/agent/buildDynamicAgentChart.js.map +1 -1
- package/dist/esm/core/Agent.js +14 -0
- package/dist/esm/core/Agent.js.map +1 -1
- package/dist/esm/core/agent/buildAgentChart.js +3 -0
- package/dist/esm/core/agent/buildAgentChart.js.map +1 -1
- package/dist/esm/core/agent/buildDynamicAgentChart.js +3 -0
- package/dist/esm/core/agent/buildDynamicAgentChart.js.map +1 -1
- package/dist/esm/events/registry.js +4 -2
- package/dist/esm/events/registry.js.map +1 -1
- package/dist/esm/events/types.js +1 -1
- package/dist/esm/memory/causal/evidenceRecorder.js +213 -0
- package/dist/esm/memory/causal/evidenceRecorder.js.map +1 -0
- package/dist/esm/memory/causal/index.js +1 -0
- package/dist/esm/memory/causal/index.js.map +1 -1
- package/dist/esm/memory/causal/loadSnapshot.js +18 -4
- package/dist/esm/memory/causal/loadSnapshot.js.map +1 -1
- package/dist/esm/memory/causal/writeSnapshot.js +9 -5
- package/dist/esm/memory/causal/writeSnapshot.js.map +1 -1
- package/dist/esm/memory/define.types.js +2 -1
- package/dist/esm/memory/define.types.js.map +1 -1
- package/dist/esm/memory/wire/mountMemoryPipeline.js +10 -1
- package/dist/esm/memory/wire/mountMemoryPipeline.js.map +1 -1
- package/dist/events/registry.js +4 -2
- package/dist/events/registry.js.map +1 -1
- package/dist/events/types.js +1 -1
- package/dist/memory/causal/evidenceRecorder.js +217 -0
- package/dist/memory/causal/evidenceRecorder.js.map +1 -0
- package/dist/memory/causal/index.js +3 -1
- package/dist/memory/causal/index.js.map +1 -1
- package/dist/memory/causal/loadSnapshot.js +18 -4
- package/dist/memory/causal/loadSnapshot.js.map +1 -1
- package/dist/memory/causal/writeSnapshot.js +9 -5
- package/dist/memory/causal/writeSnapshot.js.map +1 -1
- package/dist/memory/define.types.js +2 -1
- package/dist/memory/define.types.js.map +1 -1
- package/dist/memory/wire/mountMemoryPipeline.js +10 -1
- package/dist/memory/wire/mountMemoryPipeline.js.map +1 -1
- package/dist/types/core/Agent.d.ts +2 -0
- package/dist/types/core/Agent.d.ts.map +1 -1
- package/dist/types/core/agent/buildAgentChart.d.ts +5 -0
- package/dist/types/core/agent/buildAgentChart.d.ts.map +1 -1
- package/dist/types/core/agent/buildDynamicAgentChart.d.ts.map +1 -1
- package/dist/types/events/registry.d.ts +3 -1
- package/dist/types/events/registry.d.ts.map +1 -1
- package/dist/types/events/types.d.ts +1 -1
- package/dist/types/memory/causal/evidenceRecorder.d.ts +67 -0
- package/dist/types/memory/causal/evidenceRecorder.d.ts.map +1 -0
- package/dist/types/memory/causal/index.d.ts +1 -0
- package/dist/types/memory/causal/index.d.ts.map +1 -1
- package/dist/types/memory/causal/types.d.ts +3 -3
- package/dist/types/memory/causal/writeSnapshot.d.ts.map +1 -1
- package/dist/types/memory/define.types.d.ts +2 -1
- package/dist/types/memory/define.types.d.ts.map +1 -1
- package/dist/types/memory/stages/types.d.ts +7 -0
- package/dist/types/memory/stages/types.d.ts.map +1 -1
- package/dist/types/memory/wire/mountMemoryPipeline.d.ts +9 -0
- package/dist/types/memory/wire/mountMemoryPipeline.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* causalEvidenceRecorder — the evidence bridge (backlog Phase-1 #5).
|
|
4
|
+
*
|
|
5
|
+
* Harvests, DURING the run, everything a causal snapshot needs beyond
|
|
6
|
+
* (query, finalContent) — from events the engine already fires:
|
|
7
|
+
*
|
|
8
|
+
* stream.tool_start/tool_end → ToolCallRecord (name, args, resultPreview, errored)
|
|
9
|
+
* stream.llm_end → tokenUsage accumulation + iteration high-water
|
|
10
|
+
* agent.turn_start/turn_end → durationMs (+ authoritative totals when seen)
|
|
11
|
+
* FlowRecorder.onDecision → DecisionRecord with footprintjs decide()/select()
|
|
12
|
+
* operator-level evidence (rule, conditions, chosen)
|
|
13
|
+
* context.evaluated routing → DecisionRecord per skill the graph routed to
|
|
14
|
+
*
|
|
15
|
+
* Pattern: CombinedRecorder (Convention 1 — single purpose: evidence
|
|
16
|
+
* accumulation); per-turn reset anchored on `agent.turn_start`
|
|
17
|
+
* (Convention 4 — executor `clear()` resets between runs; same-
|
|
18
|
+
* executor pause/resume PRESERVES pre-pause evidence by design).
|
|
19
|
+
* PII note: tool args/results and decide() evidence persist into snapshots.
|
|
20
|
+
* footprintjs `RedactionPolicy.emitPatterns` redacts the emit channel
|
|
21
|
+
* BEFORE this recorder IF the consumer configures one on the executor
|
|
22
|
+
* — the Agent does NOT configure one by default. Values are bounded
|
|
23
|
+
* (`maxPreviewChars` for results, `maxFieldChars` for args/evidence);
|
|
24
|
+
* treat the snapshot store as PII-bearing and protect it accordingly.
|
|
25
|
+
*
|
|
26
|
+
* The Agent attaches this automatically when a CAUSAL memory is mounted and
|
|
27
|
+
* threads `collect` into the memory write mount (`evidenceSource`) — so
|
|
28
|
+
* `writeSnapshot` persists real evidence instead of zeros.
|
|
29
|
+
*/
|
|
30
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
31
|
+
exports.causalEvidenceRecorder = void 0;
|
|
32
|
+
function preview(value, max) {
|
|
33
|
+
let s;
|
|
34
|
+
if (typeof value === 'string')
|
|
35
|
+
s = value;
|
|
36
|
+
else {
|
|
37
|
+
try {
|
|
38
|
+
s = JSON.stringify(value);
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
s = String(value);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return s.length > max ? `${s.slice(0, max)}…` : s;
|
|
45
|
+
}
|
|
46
|
+
/** Bound a record-ish value: oversized serializations become a truncated
|
|
47
|
+
* preview marker so snapshots can't grow unbounded (and PII exposure is
|
|
48
|
+
* capped). Small values pass through untouched. */
|
|
49
|
+
function bounded(value, max) {
|
|
50
|
+
if (value === undefined)
|
|
51
|
+
return undefined;
|
|
52
|
+
try {
|
|
53
|
+
const s = JSON.stringify(value);
|
|
54
|
+
if (s.length <= max)
|
|
55
|
+
return value;
|
|
56
|
+
return { __truncated: `${s.slice(0, max)}…` };
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
return { __truncated: String(value).slice(0, max) };
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
/** Build the evidence-harvesting recorder. Attach via `.recorder(rec)` (the
|
|
63
|
+
* Agent does this automatically for CAUSAL memories). */
|
|
64
|
+
function causalEvidenceRecorder(options = {}) {
|
|
65
|
+
const maxPreview = options.maxPreviewChars ?? 200;
|
|
66
|
+
const maxField = options.maxFieldChars ?? 2000;
|
|
67
|
+
// ── per-turn accumulators (reset on agent.turn_start; executor clear()
|
|
68
|
+
// resets between runs; pause/resume keeps pre-pause evidence) ──
|
|
69
|
+
let decisions = [];
|
|
70
|
+
let toolCalls = [];
|
|
71
|
+
let pendingTools = new Map();
|
|
72
|
+
let tokens = { input: 0, output: 0 };
|
|
73
|
+
let iterations = 0;
|
|
74
|
+
let turnStartMs;
|
|
75
|
+
let authoritative;
|
|
76
|
+
const reset = () => {
|
|
77
|
+
decisions = [];
|
|
78
|
+
toolCalls = [];
|
|
79
|
+
pendingTools = new Map();
|
|
80
|
+
tokens = { input: 0, output: 0 };
|
|
81
|
+
iterations = 0;
|
|
82
|
+
turnStartMs = undefined;
|
|
83
|
+
authoritative = undefined;
|
|
84
|
+
};
|
|
85
|
+
return {
|
|
86
|
+
id: options.id ?? 'causal-evidence',
|
|
87
|
+
onEmit(event) {
|
|
88
|
+
const { name, payload } = event;
|
|
89
|
+
switch (name) {
|
|
90
|
+
case 'agentfootprint.agent.turn_start':
|
|
91
|
+
// A new turn on the same executor — start fresh (one snapshot per turn).
|
|
92
|
+
reset();
|
|
93
|
+
turnStartMs = Date.now();
|
|
94
|
+
break;
|
|
95
|
+
case 'agentfootprint.stream.tool_start': {
|
|
96
|
+
const id = String(payload.toolCallId ?? '');
|
|
97
|
+
pendingTools.set(id, {
|
|
98
|
+
name: String(payload.toolName ?? 'unknown'),
|
|
99
|
+
args: bounded((payload.args ?? {}), maxField) ?? {},
|
|
100
|
+
});
|
|
101
|
+
break;
|
|
102
|
+
}
|
|
103
|
+
case 'agentfootprint.stream.tool_end': {
|
|
104
|
+
const id = String(payload.toolCallId ?? '');
|
|
105
|
+
const started = pendingTools.get(id);
|
|
106
|
+
pendingTools.delete(id);
|
|
107
|
+
toolCalls.push({
|
|
108
|
+
name: started?.name ?? 'unknown',
|
|
109
|
+
args: started?.args ?? {},
|
|
110
|
+
resultPreview: preview(payload.result, maxPreview),
|
|
111
|
+
errored: payload.error === true,
|
|
112
|
+
});
|
|
113
|
+
break;
|
|
114
|
+
}
|
|
115
|
+
case 'agentfootprint.stream.llm_end': {
|
|
116
|
+
const usage = payload.usage;
|
|
117
|
+
tokens = {
|
|
118
|
+
input: tokens.input + (usage?.input ?? 0),
|
|
119
|
+
output: tokens.output + (usage?.output ?? 0),
|
|
120
|
+
};
|
|
121
|
+
const iter = Number(payload.iteration ?? 0);
|
|
122
|
+
if (iter > iterations)
|
|
123
|
+
iterations = iter;
|
|
124
|
+
break;
|
|
125
|
+
}
|
|
126
|
+
case 'agentfootprint.context.evaluated': {
|
|
127
|
+
// Skill-graph routing provenance → one DecisionRecord per routed skill.
|
|
128
|
+
const routing = payload.routing;
|
|
129
|
+
if (Array.isArray(routing)) {
|
|
130
|
+
for (const r of routing) {
|
|
131
|
+
decisions.push({
|
|
132
|
+
stageId: 'skill-graph',
|
|
133
|
+
chosen: String(r.injectionId ?? r.id ?? 'unknown'),
|
|
134
|
+
...(r.label !== undefined || r.via !== undefined
|
|
135
|
+
? { rule: r.label ?? `via ${r.via}` }
|
|
136
|
+
: {}),
|
|
137
|
+
...(r.path !== undefined && {
|
|
138
|
+
evidence: { path: r.path },
|
|
139
|
+
}),
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
break;
|
|
144
|
+
}
|
|
145
|
+
case 'agentfootprint.agent.turn_end': {
|
|
146
|
+
// Authoritative totals when the write runs after turn_end.
|
|
147
|
+
authoritative = {
|
|
148
|
+
iterations: Number(payload.iterationCount ?? iterations),
|
|
149
|
+
input: Number(payload.totalInputTokens ?? tokens.input),
|
|
150
|
+
output: Number(payload.totalOutputTokens ?? tokens.output),
|
|
151
|
+
durationMs: Number(payload.durationMs ?? 0),
|
|
152
|
+
};
|
|
153
|
+
break;
|
|
154
|
+
}
|
|
155
|
+
default:
|
|
156
|
+
break;
|
|
157
|
+
}
|
|
158
|
+
},
|
|
159
|
+
/** footprintjs FlowRecorder channel — decide() decision evidence.
|
|
160
|
+
* FlowDecisionEvent carries `decider` (display name), `chosen`, optional
|
|
161
|
+
* `evidence` from decide(), and `traversalContext.stageId` (the stable,
|
|
162
|
+
* subflow-prefixed stage id — preferred for DecisionRecord.stageId). */
|
|
163
|
+
onDecision(event) {
|
|
164
|
+
const stageId = event.traversalContext?.stageId ?? event.decider;
|
|
165
|
+
// Internal agent plumbing (the cache-gate decider) is not domain
|
|
166
|
+
// decision evidence. `includes` (not startsWith): in reactMode
|
|
167
|
+
// 'dynamic-grouped' the names are double-prefixed
|
|
168
|
+
// ('sf-llm-call/sf-cache/…').
|
|
169
|
+
if (String(event.chosen ?? '').includes('sf-cache/') || String(stageId).includes('sf-cache'))
|
|
170
|
+
return;
|
|
171
|
+
const evidence = event.evidence;
|
|
172
|
+
decisions.push({
|
|
173
|
+
stageId: String(stageId),
|
|
174
|
+
chosen: String(event.chosen ?? 'unknown'),
|
|
175
|
+
...(evidence?.label !== undefined || evidence?.rule !== undefined
|
|
176
|
+
? { rule: String(evidence.label ?? evidence.rule) }
|
|
177
|
+
: {}),
|
|
178
|
+
...(evidence !== undefined && {
|
|
179
|
+
evidence: bounded(evidence, maxField),
|
|
180
|
+
}),
|
|
181
|
+
});
|
|
182
|
+
},
|
|
183
|
+
/** footprintjs FlowRecorder channel — select() selection evidence. */
|
|
184
|
+
onSelected(event) {
|
|
185
|
+
const stageId = event.traversalContext?.stageId ?? event.parent;
|
|
186
|
+
if (String(stageId).includes('sf-cache'))
|
|
187
|
+
return;
|
|
188
|
+
// The agent's own Context slot-fork is a selector — plumbing, not domain.
|
|
189
|
+
if (String(stageId).includes('context') && event.selected.every((s) => s.startsWith('sf-')))
|
|
190
|
+
return;
|
|
191
|
+
decisions.push({
|
|
192
|
+
stageId: String(stageId),
|
|
193
|
+
chosen: event.selected.join(', '),
|
|
194
|
+
...(event.evidence !== undefined && {
|
|
195
|
+
evidence: bounded(event.evidence, maxField),
|
|
196
|
+
}),
|
|
197
|
+
});
|
|
198
|
+
},
|
|
199
|
+
collect() {
|
|
200
|
+
return {
|
|
201
|
+
iterations: authoritative?.iterations ?? iterations,
|
|
202
|
+
decisions: [...decisions],
|
|
203
|
+
toolCalls: [...toolCalls],
|
|
204
|
+
durationMs: authoritative?.durationMs ?? (turnStartMs !== undefined ? Date.now() - turnStartMs : 0),
|
|
205
|
+
tokenUsage: {
|
|
206
|
+
input: authoritative?.input ?? tokens.input,
|
|
207
|
+
output: authoritative?.output ?? tokens.output,
|
|
208
|
+
},
|
|
209
|
+
};
|
|
210
|
+
},
|
|
211
|
+
clear() {
|
|
212
|
+
reset();
|
|
213
|
+
},
|
|
214
|
+
};
|
|
215
|
+
}
|
|
216
|
+
exports.causalEvidenceRecorder = causalEvidenceRecorder;
|
|
217
|
+
//# sourceMappingURL=evidenceRecorder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evidenceRecorder.js","sourceRoot":"","sources":["../../../src/memory/causal/evidenceRecorder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.snapshotPipeline = exports.loadSnapshot = exports.writeSnapshot = exports.DEFAULT_TOOL_RESULT_PREVIEW_LEN = void 0;
|
|
3
|
+
exports.snapshotPipeline = exports.loadSnapshot = exports.writeSnapshot = exports.causalEvidenceRecorder = exports.DEFAULT_TOOL_RESULT_PREVIEW_LEN = void 0;
|
|
4
4
|
var types_js_1 = require("./types.js");
|
|
5
5
|
Object.defineProperty(exports, "DEFAULT_TOOL_RESULT_PREVIEW_LEN", { enumerable: true, get: function () { return types_js_1.DEFAULT_TOOL_RESULT_PREVIEW_LEN; } });
|
|
6
|
+
var evidenceRecorder_js_1 = require("./evidenceRecorder.js");
|
|
7
|
+
Object.defineProperty(exports, "causalEvidenceRecorder", { enumerable: true, get: function () { return evidenceRecorder_js_1.causalEvidenceRecorder; } });
|
|
6
8
|
var writeSnapshot_js_1 = require("./writeSnapshot.js");
|
|
7
9
|
Object.defineProperty(exports, "writeSnapshot", { enumerable: true, get: function () { return writeSnapshot_js_1.writeSnapshot; } });
|
|
8
10
|
var loadSnapshot_js_1 = require("./loadSnapshot.js");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/memory/causal/index.ts"],"names":[],"mappings":";;;AAOA,uCAA6D;AAApD,2HAAA,+BAA+B,OAAA;AAExC,uDAA6E;AAApE,iHAAA,aAAa,OAAA;AACtB,qDAA0E;AAAjE,+GAAA,YAAY,OAAA;AACrB,6DAAsF;AAA7E,uHAAA,gBAAgB,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/memory/causal/index.ts"],"names":[],"mappings":";;;AAOA,uCAA6D;AAApD,2HAAA,+BAA+B,OAAA;AAExC,6DAK+B;AAJ7B,6HAAA,sBAAsB,OAAA;AAKxB,uDAA6E;AAApE,iHAAA,aAAa,OAAA;AACtB,qDAA0E;AAAjE,+GAAA,YAAY,OAAA;AACrB,6DAAsF;AAA7E,uHAAA,gBAAgB,OAAA"}
|
|
@@ -82,15 +82,29 @@ function formatProjection(entry, projection, score) {
|
|
|
82
82
|
const header = `[Past run · query: "${truncate(snap.query, 80)}" · score: ${score.toFixed(2)}]`;
|
|
83
83
|
let body;
|
|
84
84
|
switch (projection) {
|
|
85
|
-
case define_types_js_1.SNAPSHOT_PROJECTIONS.DECISIONS:
|
|
85
|
+
case define_types_js_1.SNAPSHOT_PROJECTIONS.DECISIONS: {
|
|
86
|
+
// Tool evidence is part of the "why": in LLM-decided flows the
|
|
87
|
+
// operator-level facts (creditScore=580, dti=0.45) arrive as tool
|
|
88
|
+
// results, so the decisions projection includes them.
|
|
89
|
+
// SECURITY: this replays STORED TOOL OUTPUT into a future prompt — a
|
|
90
|
+
// persisted prompt-injection surface if tools ingest untrusted content.
|
|
91
|
+
// Treat snapshot stores as prompt-trusted; sanitize tool output at the
|
|
92
|
+
// tool boundary when it carries third-party text.
|
|
93
|
+
const toolLines = snap.toolCalls.length === 0
|
|
94
|
+
? ''
|
|
95
|
+
: `\nTool evidence:\n${snap.toolCalls
|
|
96
|
+
.map((t) => `- ${t.name}(${JSON.stringify(t.args)}) → ${t.resultPreview}` +
|
|
97
|
+
(t.errored ? ' [ERROR]' : ''))
|
|
98
|
+
.join('\n')}`;
|
|
86
99
|
body =
|
|
87
|
-
snap.decisions.length === 0
|
|
100
|
+
snap.decisions.length === 0 && snap.toolCalls.length === 0
|
|
88
101
|
? `(no decision evidence captured)\nFinal answer: ${snap.finalContent}`
|
|
89
|
-
: snap.decisions
|
|
102
|
+
: `${snap.decisions
|
|
90
103
|
.map((d) => `- ${d.stageId} → "${d.chosen}"${d.rule ? ` (rule: ${d.rule})` : ''}` +
|
|
91
104
|
(d.evidence ? `; evidence: ${JSON.stringify(d.evidence)}` : ''))
|
|
92
|
-
.join('\n')
|
|
105
|
+
.join('\n')}${toolLines}\nFinal answer: ${snap.finalContent}`;
|
|
93
106
|
break;
|
|
107
|
+
}
|
|
94
108
|
case define_types_js_1.SNAPSHOT_PROJECTIONS.NARRATIVE:
|
|
95
109
|
body = snap.narrative ?? `(no narrative captured)\nFinal answer: ${snap.finalContent}`;
|
|
96
110
|
break;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loadSnapshot.js","sourceRoot":"","sources":["../../../src/memory/causal/loadSnapshot.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"loadSnapshot.js","sourceRoot":"","sources":["../../../src/memory/causal/loadSnapshot.ts"],"names":[],"mappings":"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"}
|
|
@@ -49,14 +49,18 @@ function writeSnapshot(config) {
|
|
|
49
49
|
}));
|
|
50
50
|
const now = Date.now();
|
|
51
51
|
const ttl = config.ttlMs ? now + config.ttlMs : undefined;
|
|
52
|
+
// Evidence bridge (#5): the wire layer delivers run evidence harvested by
|
|
53
|
+
// `causalEvidenceRecorder` via the write mount's `evidenceSource`. Absent
|
|
54
|
+
// (non-agent hosts, no recorder attached) → zeros, as before.
|
|
55
|
+
const evidence = scope.runEvidence;
|
|
52
56
|
const snapshot = {
|
|
53
57
|
query,
|
|
54
58
|
finalContent,
|
|
55
|
-
iterations: 0,
|
|
56
|
-
decisions: [],
|
|
57
|
-
toolCalls: [],
|
|
58
|
-
durationMs: 0,
|
|
59
|
-
tokenUsage: { input: 0, output: 0 },
|
|
59
|
+
iterations: evidence?.iterations ?? 0,
|
|
60
|
+
decisions: evidence?.decisions ?? [],
|
|
61
|
+
toolCalls: evidence?.toolCalls ?? [],
|
|
62
|
+
durationMs: evidence?.durationMs ?? 0,
|
|
63
|
+
tokenUsage: evidence?.tokenUsage ?? { input: 0, output: 0 },
|
|
60
64
|
};
|
|
61
65
|
const entry = {
|
|
62
66
|
id: `snap-${turn}`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"writeSnapshot.js","sourceRoot":"","sources":["../../../src/memory/causal/writeSnapshot.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;;;AA0CH,SAAgB,aAAa,CAAC,MAA2B;IACvD,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;IACnC,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,kBAAkB,CAAC;IAE3D,OAAO,KAAK,EAAE,KAA8B,EAAiB,EAAE;QAC7D,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;QAChC,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC;QAC9B,MAAM,WAAW,GAAG,CAAC,KAAK,CAAC,WAAW,IAAI,EAAE,CAA0B,CAAC;QACvE,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAErC,4DAA4D;QAC5D,gEAAgE;QAChE,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;QAC3D,MAAM,YAAY,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;QACrE,MAAM,KAAK,GAAI,OAAO,EAAE,OAA8B,IAAI,EAAE,CAAC;QAC7D,MAAM,YAAY,GAAI,YAAY,EAAE,OAA8B,IAAI,EAAE,CAAC;QAEzE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,CAAC,iCAAiC;QAEjE,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,MAAM,CAAC;QACzC,MAAM,QAAQ,GAAG,CAAC,MAAM,QAAQ,CAAC,KAAK,CAAC;YACrC,IAAI,EAAE,KAAK;YACX,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC9B,CAAC,CAAa,CAAC;QAEhB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;QAE1D,MAAM,QAAQ,GAAkB;YAC9B,KAAK;YACL,YAAY;YACZ,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"writeSnapshot.js","sourceRoot":"","sources":["../../../src/memory/causal/writeSnapshot.ts"],"names":[],"mappings":"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"}
|
|
@@ -47,7 +47,8 @@ exports.isMemoryInjectionKey = exports.memoryInjectionKey = exports.MEMORY_INJEC
|
|
|
47
47
|
* - `SEMANTIC` — extracted structured facts, deduped on key
|
|
48
48
|
* - `NARRATIVE` — beats / summaries of prior runs (append-only)
|
|
49
49
|
* - `CAUSAL` — footprintjs execution snapshots, the differentiator
|
|
50
|
-
* (
|
|
50
|
+
* (replays stored decisions + tool evidence for "why?"
|
|
51
|
+
* follow-ups — harvested automatically per run)
|
|
51
52
|
*/
|
|
52
53
|
exports.MEMORY_TYPES = {
|
|
53
54
|
EPISODIC: 'episodic',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"define.types.js","sourceRoot":"","sources":["../../src/memory/define.types.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;;;AAOH,uEAAuE;AAEvE
|
|
1
|
+
{"version":3,"file":"define.types.js","sourceRoot":"","sources":["../../src/memory/define.types.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;;;AAOH,uEAAuE;AAEvE;;;;;;;;;GASG;AACU,QAAA,YAAY,GAAG;IAC1B,QAAQ,EAAE,UAAU;IACpB,QAAQ,EAAE,UAAU;IACpB,SAAS,EAAE,WAAW;IACtB,MAAM,EAAE,QAAQ;CACR,CAAC;AAGX;;;;;;GAMG;AACU,QAAA,iBAAiB,GAAG;IAC/B,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;IAChB,SAAS,EAAE,WAAW;IACtB,KAAK,EAAE,MAAM;IACb,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,QAAQ;CACR,CAAC;AAGX;;;;;;GAMG;AACU,QAAA,aAAa,GAAG;IAC3B,eAAe,EAAE,iBAAiB;IAClC,UAAU,EAAE,YAAY;CAChB,CAAC;AAGX;;;;;;;;GAQG;AACU,QAAA,oBAAoB,GAAG;IAClC,SAAS,EAAE,WAAW;IACtB,OAAO,EAAE,SAAS;IAClB,SAAS,EAAE,WAAW;IACtB,IAAI,EAAE,MAAM;CACJ,CAAC;AA+MX,uEAAuE;AAEvE,SAAgB,YAAY,CAAC,KAAa;IACxC,OAAQ,MAAM,CAAC,MAAM,CAAC,oBAAY,CAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACnE,CAAC;AAFD,oCAEC;AAED,SAAgB,oBAAoB,CAAC,KAAa;IAChD,OAAQ,MAAM,CAAC,MAAM,CAAC,yBAAiB,CAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACxE,CAAC;AAFD,oDAEC;AAED,SAAgB,cAAc,CAAC,KAAa;IAC1C,OAAQ,MAAM,CAAC,MAAM,CAAC,qBAAa,CAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACpE,CAAC;AAFD,wCAEC;AAED,SAAgB,oBAAoB,CAAC,KAAa;IAChD,OAAQ,MAAM,CAAC,MAAM,CAAC,4BAAoB,CAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC3E,CAAC;AAFD,oDAEC;AAED,uEAAuE;AAEvE;;;;;GAKG;AACU,QAAA,2BAA2B,GAAG,kBAA2B,CAAC;AAEvE,SAAgB,kBAAkB,CAAC,EAAU;IAC3C,OAAO,GAAG,mCAA2B,GAAG,EAAE,EAAE,CAAC;AAC/C,CAAC;AAFD,gDAEC;AAED,SAAgB,oBAAoB,CAAC,GAAW;IAC9C,OAAO,GAAG,CAAC,UAAU,CAAC,mCAA2B,CAAC,CAAC;AACrD,CAAC;AAFD,oDAEC"}
|
|
@@ -43,7 +43,11 @@ function mountMemoryRead(builder, config) {
|
|
|
43
43
|
// like `loadRelevant` derive the query from the last user
|
|
44
44
|
// message here. The write-side `newMessages` field is empty
|
|
45
45
|
// during read; these are two different concerns.
|
|
46
|
-
|
|
46
|
+
// Agents carry the conversation as `history`; bare hosts may use
|
|
47
|
+
// `messages`. Without this fallback, read stages that derive the query
|
|
48
|
+
// from the last user message (loadSnapshot/loadRelevant) saw [] inside
|
|
49
|
+
// an Agent and silently injected nothing — the causal READ never fired.
|
|
50
|
+
messages: parentState.messages ?? parentState.history ?? [],
|
|
47
51
|
newMessages: [], // write side unused in read subflow
|
|
48
52
|
}),
|
|
49
53
|
outputMapper: (subflowState) => ({
|
|
@@ -70,6 +74,11 @@ function mountMemoryWrite(builder, config) {
|
|
|
70
74
|
turnNumber: parentState[turnNumberKey],
|
|
71
75
|
contextTokensRemaining: parentState[contextTokensKey] ?? 0,
|
|
72
76
|
newMessages: parentState[newMessagesKey] ?? [],
|
|
77
|
+
// Evidence bridge (#5): harvested run evidence for causal writeSnapshot.
|
|
78
|
+
// Closure-delivered (no PARENT-scope write) — note it DOES land in the
|
|
79
|
+
// write subflow's own tracked scope/commit log, like newMessages; the
|
|
80
|
+
// values are already observable as events, so no new exposure class.
|
|
81
|
+
...(config.evidenceSource && { runEvidence: config.evidenceSource() }),
|
|
73
82
|
}),
|
|
74
83
|
// No outputMapper — write has no parent-visible output.
|
|
75
84
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mountMemoryPipeline.js","sourceRoot":"","sources":["../../../src/memory/wire/mountMemoryPipeline.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"mountMemoryPipeline.js","sourceRoot":"","sources":["../../../src/memory/wire/mountMemoryPipeline.ts"],"names":[],"mappings":"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"}
|
|
@@ -71,6 +71,8 @@ export declare class Agent extends RunnerBase<AgentInput, AgentOutput> {
|
|
|
71
71
|
private readonly costBudget?;
|
|
72
72
|
private readonly permissionChecker?;
|
|
73
73
|
private readonly credentialProvider?;
|
|
74
|
+
/** Evidence bridge (#5) — present iff a CAUSAL memory is mounted. */
|
|
75
|
+
private readonly causalEvidence?;
|
|
74
76
|
/**
|
|
75
77
|
* Voice config — shared by viewers (Lens, ChatThinkKit, CLI tail).
|
|
76
78
|
* `appName` is the active actor in narration ("Chatbot called…").
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Agent.d.ts","sourceRoot":"","sources":["../../../src/core/Agent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAEL,KAAK,sBAAsB,EAE3B,KAAK,mBAAmB,EACxB,KAAK,UAAU,EACf,KAAK,eAAe,EACrB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAOjE,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAsBrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"Agent.d.ts","sourceRoot":"","sources":["../../../src/core/Agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -48,6 +48,11 @@ import type { MemoryDefinition } from '../../memory/define.types.js';
|
|
|
48
48
|
export interface AgentChartDeps {
|
|
49
49
|
/** Memory READ/WRITE pipeline definitions (one per `.memory()`). */
|
|
50
50
|
readonly memories: readonly MemoryDefinition[];
|
|
51
|
+
/** Evidence bridge (#5): `causalEvidenceRecorder().collect`, threaded into
|
|
52
|
+
* CAUSAL memories' write mounts so snapshots persist real evidence
|
|
53
|
+
* (decisions/toolCalls/iterations/duration/tokens) instead of zeros.
|
|
54
|
+
* Set by the Agent when any mounted memory is CAUSAL. */
|
|
55
|
+
readonly causalEvidenceSource?: () => import('../../memory/causal/evidenceRecorder.js').RunEvidence;
|
|
51
56
|
/** Cache policy for the system-prompt slot, threaded into
|
|
52
57
|
* CacheDecision's inputMapper so its decision rules can match. */
|
|
53
58
|
readonly systemPromptCachePolicy: CachePolicy;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildAgentChart.d.ts","sourceRoot":"","sources":["../../../../src/core/agent/buildAgentChart.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAc,MAAM,aAAa,CAAC;AAE5E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAOxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AASrE;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,oEAAoE;IACpE,QAAQ,CAAC,QAAQ,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAE/C;uEACmE;IACnE,QAAQ,CAAC,uBAAuB,EAAE,WAAW,CAAC;IAE9C;kDAC8C;IAC9C,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAG/B,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAClD,QAAQ,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,YAAY,GAAG,OAAO,CAAC;IAChE,QAAQ,CAAC,gBAAgB,EAAE,OAAO,aAAa,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC;IAGxE,QAAQ,CAAC,sBAAsB,EAAE,SAAS,CAAC;IAC3C,QAAQ,CAAC,mBAAmB,EAAE,SAAS,CAAC;IACxC,QAAQ,CAAC,eAAe,EAAE,SAAS,CAAC;IACpC,QAAQ,CAAC,YAAY,EAAE,SAAS,CAAC;IACjC;;;;;;OAMG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,SAAS,CAAC;IAMrC,QAAQ,CAAC,uBAAuB,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAEzD;;;;;;;OAOG;IACH,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAE5B;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAG3C;;;;0CAIsC;IACtC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;CAC5D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,cAAc,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"buildAgentChart.d.ts","sourceRoot":"","sources":["../../../../src/core/agent/buildAgentChart.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAc,MAAM,aAAa,CAAC;AAE5E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAOxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AASrE;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,oEAAoE;IACpE,QAAQ,CAAC,QAAQ,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAE/C;;;8DAG0D;IAC1D,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,OAAO,yCAAyC,EAAE,WAAW,CAAC;IAEpG;uEACmE;IACnE,QAAQ,CAAC,uBAAuB,EAAE,WAAW,CAAC;IAE9C;kDAC8C;IAC9C,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAG/B,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAClD,QAAQ,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,YAAY,GAAG,OAAO,CAAC;IAChE,QAAQ,CAAC,gBAAgB,EAAE,OAAO,aAAa,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC;IAGxE,QAAQ,CAAC,sBAAsB,EAAE,SAAS,CAAC;IAC3C,QAAQ,CAAC,mBAAmB,EAAE,SAAS,CAAC;IACxC,QAAQ,CAAC,eAAe,EAAE,SAAS,CAAC;IACpC,QAAQ,CAAC,YAAY,EAAE,SAAS,CAAC;IACjC;;;;;;OAMG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,SAAS,CAAC;IAMrC,QAAQ,CAAC,uBAAuB,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAEzD;;;;;;;OAOG;IACH,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAE5B;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAG3C;;;;0CAIsC;IACtC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;CAC5D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,cAAc,GAAG,SAAS,CAkU/D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildDynamicAgentChart.d.ts","sourceRoot":"","sources":["../../../../src/core/agent/buildDynamicAgentChart.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAc,MAAM,aAAa,CAAC;AAczD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAgD3D;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,cAAc,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"buildDynamicAgentChart.d.ts","sourceRoot":"","sources":["../../../../src/core/agent/buildDynamicAgentChart.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAc,MAAM,aAAa,CAAC;AAczD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAgD3D;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,cAAc,GAAG,SAAS,CA8TtE"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Event registry —
|
|
2
|
+
* Event registry — every typed `agentfootprint.*` event (see ALL_EVENT_TYPES;
|
|
3
|
+
* the event/domain counts in the docs are asserted against this file by
|
|
4
|
+
* test/events/unit/registry.test.ts, so don't hardcode counts here).
|
|
3
5
|
*
|
|
4
6
|
* Pattern: Discriminated Union + Typed Factory (Gang of Four adapted for TS).
|
|
5
7
|
* Role: The stable public event contract — the "ports" of the hexagonal
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/events/registry.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/events/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AAC9D,OAAO,KAAK,EACV,mBAAmB,EACnB,wBAAwB,EACxB,0BAA0B,EAC1B,wBAAwB,EACxB,mBAAmB,EACnB,qBAAqB,EACrB,uBAAuB,EACvB,sBAAsB,EACtB,8BAA8B,EAC9B,4BAA4B,EAC5B,uBAAuB,EACvB,qBAAqB,EACrB,sBAAsB,EACtB,0BAA0B,EAC1B,mBAAmB,EACnB,eAAe,EACf,yBAAyB,EACzB,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,EACnB,gBAAgB,EAChB,2BAA2B,EAC3B,wCAAwC,EACxC,+BAA+B,EAC/B,0BAA0B,EAC1B,wBAAwB,EACxB,wBAAwB,EACxB,aAAa,EACb,eAAe,EACf,eAAe,EACf,wBAAwB,EACxB,yBAAyB,EACzB,qBAAqB,EACrB,qBAAqB,EACrB,4BAA4B,EAC5B,oBAAoB,EACpB,6BAA6B,EAC7B,wBAAwB,EACxB,uBAAuB,EACvB,mBAAmB,EACnB,kBAAkB,EAClB,sBAAsB,EACtB,2BAA2B,EAC3B,qBAAqB,EACrB,2BAA2B,EAC3B,0BAA0B,EAC1B,yBAAyB,EACzB,sCAAsC,EACtC,uBAAuB,EACvB,0BAA0B,EAC1B,yBAAyB,EACzB,2BAA2B,EAC3B,kBAAkB,EAClB,qBAAqB,EACrB,uBAAuB,EACvB,cAAc,EACd,qBAAqB,EACrB,uBAAuB,EACvB,4BAA4B,EAC5B,8BAA8B,EAC9B,2BAA2B,EAC3B,mBAAmB,EACnB,gBAAgB,EACjB,MAAM,eAAe,CAAC;AAKvB,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkGd,CAAC;AAKX,MAAM,WAAW,sBAAsB;IAErC,kCAAkC,EAAE,2BAA2B,CAC7D,kCAAkC,EAClC,uBAAuB,CACxB,CAAC;IACF,iCAAiC,EAAE,2BAA2B,CAC5D,iCAAiC,EACjC,sBAAsB,CACvB,CAAC;IACF,uCAAuC,EAAE,2BAA2B,CAClE,uCAAuC,EACvC,wBAAwB,CACzB,CAAC;IACF,4CAA4C,EAAE,2BAA2B,CACvE,4CAA4C,EAC5C,6BAA6B,CAC9B,CAAC;IACF,sCAAsC,EAAE,2BAA2B,CACjE,sCAAsC,EACtC,uBAAuB,CACxB,CAAC;IACF,0CAA0C,EAAE,2BAA2B,CACrE,0CAA0C,EAC1C,8BAA8B,CAC/B,CAAC;IACF,4CAA4C,EAAE,2BAA2B,CACvE,4CAA4C,EAC5C,yBAAyB,CAC1B,CAAC;IACF,2CAA2C,EAAE,2BAA2B,CACtE,2CAA2C,EAC3C,wBAAwB,CACzB,CAAC;IAEF,iCAAiC,EAAE,2BAA2B,CAC5D,iCAAiC,EACjC,qBAAqB,CACtB,CAAC;IACF,+BAA+B,EAAE,2BAA2B,CAC1D,+BAA+B,EAC/B,mBAAmB,CACpB,CAAC;IACF,sCAAsC,EAAE,2BAA2B,CACjE,sCAAsC,EACtC,0BAA0B,CAC3B,CAAC;IACF,oCAAoC,EAAE,2BAA2B,CAC/D,oCAAoC,EACpC,wBAAwB,CACzB,CAAC;IACF,oCAAoC,EAAE,2BAA2B,CAC/D,oCAAoC,EACpC,wBAAwB,CACzB,CAAC;IACF,8BAA8B,EAAE,2BAA2B,CACzD,8BAA8B,EAC9B,mBAAmB,CACpB,CAAC;IACF,sDAAsD,EAAE,2BAA2B,CACjF,sDAAsD,EACtD,wCAAwC,CACzC,CAAC;IACF,4CAA4C,EAAE,2BAA2B,CACvE,4CAA4C,EAC5C,+BAA+B,CAChC,CAAC;IAEF,iCAAiC,EAAE,2BAA2B,CAC5D,iCAAiC,EACjC,eAAe,CAChB,CAAC;IACF,+BAA+B,EAAE,2BAA2B,CAC1D,+BAA+B,EAC/B,aAAa,CACd,CAAC;IACF,6BAA6B,EAAE,2BAA2B,CACxD,6BAA6B,EAC7B,eAAe,CAChB,CAAC;IACF,kCAAkC,EAAE,2BAA2B,CAC7D,kCAAkC,EAClC,gBAAgB,CACjB,CAAC;IACF,gCAAgC,EAAE,2BAA2B,CAC3D,gCAAgC,EAChC,cAAc,CACf,CAAC;IACF,sCAAsC,EAAE,2BAA2B,CACjE,sCAAsC,EACtC,0BAA0B,CAC3B,CAAC;IACF,oCAAoC,EAAE,2BAA2B,CAC/D,oCAAoC,EACpC,wBAAwB,CACzB,CAAC;IAEF,iCAAiC,EAAE,2BAA2B,CAC5D,iCAAiC,EACjC,sBAAsB,CACvB,CAAC;IACF,gCAAgC,EAAE,2BAA2B,CAC3D,gCAAgC,EAChC,qBAAqB,CACtB,CAAC;IACF,sCAAsC,EAAE,2BAA2B,CACjE,sCAAsC,EACtC,0BAA0B,CAC3B,CAAC;IACF,wCAAwC,EAAE,2BAA2B,CACnE,wCAAwC,EACxC,4BAA4B,CAC7B,CAAC;IACF,kCAAkC,EAAE,2BAA2B,CAC7D,kCAAkC,EAClC,uBAAuB,CACxB,CAAC;IAEF,wCAAwC,EAAE,2BAA2B,CACnE,wCAAwC,EACxC,4BAA4B,CAC7B,CAAC;IACF,gCAAgC,EAAE,2BAA2B,CAC3D,gCAAgC,EAChC,qBAAqB,CACtB,CAAC;IACF,gCAAgC,EAAE,2BAA2B,CAC3D,gCAAgC,EAChC,qBAAqB,CACtB,CAAC;IACF,+BAA+B,EAAE,2BAA2B,CAC1D,+BAA+B,EAC/B,oBAAoB,CACrB,CAAC;IAEF,8BAA8B,EAAE,2BAA2B,CACzD,8BAA8B,EAC9B,mBAAmB,CACpB,CAAC;IACF,gCAAgC,EAAE,2BAA2B,CAC3D,gCAAgC,EAChC,qBAAqB,CACtB,CAAC;IACF,kCAAkC,EAAE,2BAA2B,CAC7D,kCAAkC,EAClC,uBAAuB,CACxB,CAAC;IACF,wCAAwC,EAAE,2BAA2B,CACnE,wCAAwC,EACxC,4BAA4B,CAC7B,CAAC;IACF,0CAA0C,EAAE,2BAA2B,CACrE,0CAA0C,EAC1C,8BAA8B,CAC/B,CAAC;IACF,uCAAuC,EAAE,2BAA2B,CAClE,uCAAuC,EACvC,2BAA2B,CAC5B,CAAC;IAEF,gCAAgC,EAAE,2BAA2B,CAC3D,gCAAgC,EAChC,qBAAqB,CACtB,CAAC;IACF,kCAAkC,EAAE,2BAA2B,CAC7D,kCAAkC,EAClC,uBAAuB,CACxB,CAAC;IAEF,iCAAiC,EAAE,2BAA2B,CAC5D,iCAAiC,EACjC,sBAAsB,CACvB,CAAC;IACF,uCAAuC,EAAE,2BAA2B,CAClE,uCAAuC,EACvC,2BAA2B,CAC5B,CAAC;IACF,uCAAuC,EAAE,2BAA2B,CAClE,uCAAuC,EACvC,2BAA2B,CAC5B,CAAC;IACF,gCAAgC,EAAE,2BAA2B,CAC3D,gCAAgC,EAChC,qBAAqB,CACtB,CAAC;IAEF,qCAAqC,EAAE,2BAA2B,CAChE,qCAAqC,EACrC,0BAA0B,CAC3B,CAAC;IACF,oCAAoC,EAAE,2BAA2B,CAC/D,oCAAoC,EACpC,yBAAyB,CAC1B,CAAC;IACF,kDAAkD,EAAE,2BAA2B,CAC7E,kDAAkD,EAClD,sCAAsC,CACvC,CAAC;IACF,kCAAkC,EAAE,2BAA2B,CAC7D,kCAAkC,EAClC,uBAAuB,CACxB,CAAC;IAEF,6BAA6B,EAAE,2BAA2B,CACxD,6BAA6B,EAC7B,kBAAkB,CACnB,CAAC;IACF,mCAAmC,EAAE,2BAA2B,CAC9D,mCAAmC,EACnC,wBAAwB,CACzB,CAAC;IAEF,0BAA0B,EAAE,2BAA2B,CACrD,0BAA0B,EAC1B,eAAe,CAChB,CAAC;IACF,+BAA+B,EAAE,2BAA2B,CAC1D,+BAA+B,EAC/B,mBAAmB,CACpB,CAAC;IAEF,2BAA2B,EAAE,2BAA2B,CACtD,2BAA2B,EAC3B,gBAAgB,CACjB,CAAC;IACF,uCAAuC,EAAE,2BAA2B,CAClE,uCAAuC,EACvC,2BAA2B,CAC5B,CAAC;IAEF,8BAA8B,EAAE,2BAA2B,CACzD,8BAA8B,EAC9B,mBAAmB,CACpB,CAAC;IACF,gCAAgC,EAAE,2BAA2B,CAC3D,gCAAgC,EAChC,qBAAqB,CACtB,CAAC;IACF,4BAA4B,EAAE,2BAA2B,CACvD,4BAA4B,EAC5B,iBAAiB,CAClB,CAAC;IAEF,sCAAsC,EAAE,2BAA2B,CACjE,sCAAsC,EACtC,0BAA0B,CAC3B,CAAC;IACF,oCAAoC,EAAE,2BAA2B,CAC/D,oCAAoC,EACpC,yBAAyB,CAC1B,CAAC;IACF,sCAAsC,EAAE,2BAA2B,CACjE,sCAAsC,EACtC,2BAA2B,CAC5B,CAAC;IAEF,8BAA8B,EAAE,2BAA2B,CACzD,8BAA8B,EAC9B,mBAAmB,CACpB,CAAC;IACF,6BAA6B,EAAE,2BAA2B,CACxD,6BAA6B,EAC7B,kBAAkB,CACnB,CAAC;IAEF,oCAAoC,EAAE,2BAA2B,CAC/D,oCAAoC,EACpC,yBAAyB,CAC1B,CAAC;CACH;AAED,8EAA8E;AAC9E,MAAM,MAAM,mBAAmB,GAAG,sBAAsB,CAAC,MAAM,sBAAsB,CAAC,CAAC;AAEvF,yEAAyE;AACzE,MAAM,MAAM,uBAAuB,GAAG,MAAM,sBAAsB,CAAC;AAEnE;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,SAAS,uBAAuB,EAgEpD,CAAC"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* EventMeta + shared event vocabulary.
|
|
3
3
|
*
|
|
4
4
|
* Pattern: Domain-Driven Design value objects (Evans, 2003).
|
|
5
|
-
* Role: Shared vocabulary for
|
|
5
|
+
* Role: Shared vocabulary for the typed events in registry.ts.
|
|
6
6
|
* Emits: (types only — no runtime behavior here).
|
|
7
7
|
*/
|
|
8
8
|
export type ContextSlot = 'system-prompt' | 'messages' | 'tools';
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* causalEvidenceRecorder — the evidence bridge (backlog Phase-1 #5).
|
|
3
|
+
*
|
|
4
|
+
* Harvests, DURING the run, everything a causal snapshot needs beyond
|
|
5
|
+
* (query, finalContent) — from events the engine already fires:
|
|
6
|
+
*
|
|
7
|
+
* stream.tool_start/tool_end → ToolCallRecord (name, args, resultPreview, errored)
|
|
8
|
+
* stream.llm_end → tokenUsage accumulation + iteration high-water
|
|
9
|
+
* agent.turn_start/turn_end → durationMs (+ authoritative totals when seen)
|
|
10
|
+
* FlowRecorder.onDecision → DecisionRecord with footprintjs decide()/select()
|
|
11
|
+
* operator-level evidence (rule, conditions, chosen)
|
|
12
|
+
* context.evaluated routing → DecisionRecord per skill the graph routed to
|
|
13
|
+
*
|
|
14
|
+
* Pattern: CombinedRecorder (Convention 1 — single purpose: evidence
|
|
15
|
+
* accumulation); per-turn reset anchored on `agent.turn_start`
|
|
16
|
+
* (Convention 4 — executor `clear()` resets between runs; same-
|
|
17
|
+
* executor pause/resume PRESERVES pre-pause evidence by design).
|
|
18
|
+
* PII note: tool args/results and decide() evidence persist into snapshots.
|
|
19
|
+
* footprintjs `RedactionPolicy.emitPatterns` redacts the emit channel
|
|
20
|
+
* BEFORE this recorder IF the consumer configures one on the executor
|
|
21
|
+
* — the Agent does NOT configure one by default. Values are bounded
|
|
22
|
+
* (`maxPreviewChars` for results, `maxFieldChars` for args/evidence);
|
|
23
|
+
* treat the snapshot store as PII-bearing and protect it accordingly.
|
|
24
|
+
*
|
|
25
|
+
* The Agent attaches this automatically when a CAUSAL memory is mounted and
|
|
26
|
+
* threads `collect` into the memory write mount (`evidenceSource`) — so
|
|
27
|
+
* `writeSnapshot` persists real evidence instead of zeros.
|
|
28
|
+
*/
|
|
29
|
+
import type { FlowDecisionEvent, FlowSelectedEvent } from 'footprintjs';
|
|
30
|
+
import type { DecisionRecord, ToolCallRecord } from './types.js';
|
|
31
|
+
/** What the bridge delivers to `writeSnapshot` for one run. */
|
|
32
|
+
export interface RunEvidence {
|
|
33
|
+
readonly iterations: number;
|
|
34
|
+
readonly decisions: ReadonlyArray<DecisionRecord>;
|
|
35
|
+
readonly toolCalls: ReadonlyArray<ToolCallRecord>;
|
|
36
|
+
readonly durationMs: number;
|
|
37
|
+
readonly tokenUsage: {
|
|
38
|
+
readonly input: number;
|
|
39
|
+
readonly output: number;
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
export interface CausalEvidenceRecorderOptions {
|
|
43
|
+
/** Recorder id (default 'causal-evidence'). */
|
|
44
|
+
readonly id?: string;
|
|
45
|
+
/** Max chars kept of each tool result preview. Default 200. */
|
|
46
|
+
readonly maxPreviewChars?: number;
|
|
47
|
+
/** Max serialized chars kept of tool ARGS and decision EVIDENCE (the
|
|
48
|
+
* PII-dense fields). Oversized values are replaced by a truncated
|
|
49
|
+
* preview marker. Default 2000. */
|
|
50
|
+
readonly maxFieldChars?: number;
|
|
51
|
+
}
|
|
52
|
+
export interface CausalEvidenceRecorderHandle {
|
|
53
|
+
readonly id: string;
|
|
54
|
+
/** Snapshot the evidence accumulated for the CURRENT run. */
|
|
55
|
+
collect(): RunEvidence;
|
|
56
|
+
clear(): void;
|
|
57
|
+
onEmit(event: {
|
|
58
|
+
name: string;
|
|
59
|
+
payload: unknown;
|
|
60
|
+
}): void;
|
|
61
|
+
onDecision(event: FlowDecisionEvent): void;
|
|
62
|
+
onSelected(event: FlowSelectedEvent): void;
|
|
63
|
+
}
|
|
64
|
+
/** Build the evidence-harvesting recorder. Attach via `.recorder(rec)` (the
|
|
65
|
+
* Agent does this automatically for CAUSAL memories). */
|
|
66
|
+
export declare function causalEvidenceRecorder(options?: CausalEvidenceRecorderOptions): CausalEvidenceRecorderHandle;
|
|
67
|
+
//# sourceMappingURL=evidenceRecorder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evidenceRecorder.d.ts","sourceRoot":"","sources":["../../../../src/memory/causal/evidenceRecorder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjE,+DAA+D;AAC/D,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;IAClD,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;IAClD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CAC1E;AAED,MAAM,WAAW,6BAA6B;IAC5C,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACrB,+DAA+D;IAC/D,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC;;wCAEoC;IACpC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,6DAA6D;IAC7D,OAAO,IAAI,WAAW,CAAC;IACvB,KAAK,IAAI,IAAI,CAAC;IAEd,MAAM,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAC;IACxD,UAAU,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAC3C,UAAU,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,CAAC;CAC5C;AAgCD;0DAC0D;AAC1D,wBAAgB,sBAAsB,CACpC,OAAO,GAAE,6BAAkC,GAC1C,4BAA4B,CA8K9B"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export type { SnapshotEntry, DecisionRecord, ToolCallRecord, ProjectedSnapshot, SnapshotMessage, } from './types.js';
|
|
2
2
|
export { DEFAULT_TOOL_RESULT_PREVIEW_LEN } from './types.js';
|
|
3
|
+
export { causalEvidenceRecorder, type CausalEvidenceRecorderHandle, type CausalEvidenceRecorderOptions, type RunEvidence, } from './evidenceRecorder.js';
|
|
3
4
|
export { writeSnapshot, type WriteSnapshotConfig } from './writeSnapshot.js';
|
|
4
5
|
export { loadSnapshot, type LoadSnapshotConfig } from './loadSnapshot.js';
|
|
5
6
|
export { snapshotPipeline, type SnapshotPipelineConfig } from './snapshotPipeline.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/memory/causal/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,aAAa,EACb,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,eAAe,GAChB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,+BAA+B,EAAE,MAAM,YAAY,CAAC;AAE7D,OAAO,EAAE,aAAa,EAAE,KAAK,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,KAAK,sBAAsB,EAAE,MAAM,uBAAuB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/memory/causal/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,aAAa,EACb,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,eAAe,GAChB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,+BAA+B,EAAE,MAAM,YAAY,CAAC;AAE7D,OAAO,EACL,sBAAsB,EACtB,KAAK,4BAA4B,EACjC,KAAK,6BAA6B,EAClC,KAAK,WAAW,GACjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,KAAK,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,KAAK,sBAAsB,EAAE,MAAM,uBAAuB,CAAC"}
|
|
@@ -46,9 +46,9 @@ export interface SnapshotEntry {
|
|
|
46
46
|
/**
|
|
47
47
|
* Decision records collected via `decide()`/`select()` during the
|
|
48
48
|
* run. Empty when the agent's flowchart didn't use any decision
|
|
49
|
-
* primitives. THE killer field: each entry carries the rule
|
|
50
|
-
* matched + the evidence values that satisfied it
|
|
51
|
-
*
|
|
49
|
+
* primitives. THE killer field (by design): each entry carries the rule
|
|
50
|
+
* that matched + the evidence values that satisfied it. STATUS: persisted
|
|
51
|
+
* EMPTY today — the evidence bridge (backlog #5) wires it.
|
|
52
52
|
*/
|
|
53
53
|
readonly decisions: ReadonlyArray<DecisionRecord>;
|
|
54
54
|
/**
|