agentfootprint 6.0.0 → 6.2.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.
Files changed (42) hide show
  1. package/dist/core/agent/buildAgentChart.js +11 -1
  2. package/dist/core/agent/buildAgentChart.js.map +1 -1
  3. package/dist/core/agent/buildDynamicAgentChart.js +10 -1
  4. package/dist/core/agent/buildDynamicAgentChart.js.map +1 -1
  5. package/dist/esm/core/agent/buildAgentChart.js +11 -1
  6. package/dist/esm/core/agent/buildAgentChart.js.map +1 -1
  7. package/dist/esm/core/agent/buildDynamicAgentChart.js +10 -1
  8. package/dist/esm/core/agent/buildDynamicAgentChart.js.map +1 -1
  9. package/dist/esm/lib/injection-engine/buildInjectionEngineSubflow.js +131 -13
  10. package/dist/esm/lib/injection-engine/buildInjectionEngineSubflow.js.map +1 -1
  11. package/dist/esm/observe.js +6 -0
  12. package/dist/esm/observe.js.map +1 -1
  13. package/dist/esm/recorders/observability/AgentThinkingTraceRecorder.js +190 -0
  14. package/dist/esm/recorders/observability/AgentThinkingTraceRecorder.js.map +1 -0
  15. package/dist/esm/recorders/observability/ToolLineageRecorder.js +0 -0
  16. package/dist/esm/recorders/observability/ToolLineageRecorder.js.map +1 -0
  17. package/dist/esm/recorders/observability/commentary/commentaryTemplates.js +8 -0
  18. package/dist/esm/recorders/observability/commentary/commentaryTemplates.js.map +1 -1
  19. package/dist/lib/injection-engine/buildInjectionEngineSubflow.js +134 -14
  20. package/dist/lib/injection-engine/buildInjectionEngineSubflow.js.map +1 -1
  21. package/dist/observe.js +9 -1
  22. package/dist/observe.js.map +1 -1
  23. package/dist/recorders/observability/AgentThinkingTraceRecorder.js +194 -0
  24. package/dist/recorders/observability/AgentThinkingTraceRecorder.js.map +1 -0
  25. package/dist/recorders/observability/ToolLineageRecorder.js +0 -0
  26. package/dist/recorders/observability/ToolLineageRecorder.js.map +1 -0
  27. package/dist/recorders/observability/commentary/commentaryTemplates.js +8 -0
  28. package/dist/recorders/observability/commentary/commentaryTemplates.js.map +1 -1
  29. package/dist/types/core/agent/buildAgentChart.d.ts.map +1 -1
  30. package/dist/types/core/agent/buildDynamicAgentChart.d.ts.map +1 -1
  31. package/dist/types/events/payloads.d.ts +11 -0
  32. package/dist/types/events/payloads.d.ts.map +1 -1
  33. package/dist/types/lib/injection-engine/buildInjectionEngineSubflow.d.ts +65 -7
  34. package/dist/types/lib/injection-engine/buildInjectionEngineSubflow.d.ts.map +1 -1
  35. package/dist/types/observe.d.ts +2 -0
  36. package/dist/types/observe.d.ts.map +1 -1
  37. package/dist/types/recorders/observability/AgentThinkingTraceRecorder.d.ts +101 -0
  38. package/dist/types/recorders/observability/AgentThinkingTraceRecorder.d.ts.map +1 -0
  39. package/dist/types/recorders/observability/ToolLineageRecorder.d.ts +72 -0
  40. package/dist/types/recorders/observability/ToolLineageRecorder.d.ts.map +1 -0
  41. package/dist/types/recorders/observability/commentary/commentaryTemplates.d.ts.map +1 -1
  42. package/package.json +3 -3
@@ -0,0 +1,190 @@
1
+ /**
2
+ * AgentThinkingTraceRecorder — produce an AgentThinkingUI `Trace` from a run.
3
+ *
4
+ * AgentThinkingUI (the "watch it think" player) consumes a framework-agnostic
5
+ * `Trace` — a list of beats: `prompt → ask → return → answer`, where a tool
6
+ * reply is `data` (reason) or an `instruction` (a skill that says how to act).
7
+ * This recorder builds that `Trace` from agentfootprint's emit stream AS THE RUN
8
+ * TRAVERSES (no post-processing) — so any agentfootprint agent gets the
9
+ * domain-expert view for free, and AgentThinkingUI stays vendor-agnostic (it
10
+ * just renders the `Trace` JSON, exactly as it renders the OTLP adapter's output).
11
+ *
12
+ * Mapping (from the events already on the stream):
13
+ * stream.llm_end (toolCalls>0) → the brain reasoned; content + usage become
14
+ * the upcoming ask's `brain` + `cost`.
15
+ * stream.llm_end (toolCalls==0) → the final `answer`.
16
+ * stream.tool_start → `ask` (read_skill → reaching for a skill).
17
+ * stream.tool_end → `return` (read_skill → replyType:'instruction'
18
+ * + skill; any other tool → replyType:'data').
19
+ *
20
+ * Commentary (each beat's `brain`): filled from agentfootprint's OWN commentary
21
+ * engine — the SAME `selectCommentaryKey`/`extractCommentaryVars`/`renderCommentary`
22
+ * the Lens uses — so AgentThinkingUI's Notepad / bottom caption read identically
23
+ * to the Lens commentary panel (one engine, consumer-overridable via
24
+ * `commentaryTemplates`). The LLM's own reasoning still wins on the first ask of
25
+ * an iteration; the engine fills every other beat so no line is ever blank.
26
+ *
27
+ * Convention 1 (one purpose) + Convention 4 (run-scoped — resets per run).
28
+ */
29
+ import { defaultCommentaryTemplates, selectCommentaryKey, extractCommentaryVars, renderCommentary, } from './commentary/commentaryTemplates.js';
30
+ const LLM_END = 'agentfootprint.stream.llm_end';
31
+ const TOOL_START = 'agentfootprint.stream.tool_start';
32
+ const TOOL_END = 'agentfootprint.stream.tool_end';
33
+ function asObject(x) {
34
+ if (x != null && typeof x === 'object' && !Array.isArray(x))
35
+ return x;
36
+ return { value: x };
37
+ }
38
+ function headlineOf(s) {
39
+ const line = (s ?? '').split('\n').find((l) => l.trim().length > 0) ?? '';
40
+ return line.length > 140 ? line.slice(0, 140) + '…' : line || 'Done';
41
+ }
42
+ /** `EmitEvent.subflowPath` may arrive as a `/`-joined string or already split;
43
+ * normalize to the array shape the commentary engine's `extractAgentName` reads. */
44
+ function splitPath(p) {
45
+ if (Array.isArray(p))
46
+ return p;
47
+ if (typeof p === 'string' && p.length > 0)
48
+ return p.split('/');
49
+ return [];
50
+ }
51
+ export function agentThinkingTrace(options = {}) {
52
+ let lastPipelineId;
53
+ let task = '';
54
+ let steps = [];
55
+ // The most recent reasoning + its cost, awaiting the iteration's ask step(s).
56
+ let pendingBrain = '';
57
+ let pendingCost = { ms: 0, tokens: 0 };
58
+ let pendingCostUsed = false;
59
+ const byId = new Map();
60
+ // Commentary engine — the SAME one the Lens uses. Merged once: consumer
61
+ // overrides spread over the bundled defaults.
62
+ const templates = options.commentaryTemplates
63
+ ? { ...defaultCommentaryTemplates, ...options.commentaryTemplates }
64
+ : defaultCommentaryTemplates;
65
+ const appName = options.agent ?? 'Agent';
66
+ /** Narrate one emit event into a prose `brain` line via agentfootprint's
67
+ * commentary engine. The raw `EmitEvent` is adapted to the typed
68
+ * `AgentfootprintEvent` shape the engine reads (`type`/`payload`/`meta`).
69
+ * Returns '' for events the engine deliberately skips. */
70
+ function narrate(e) {
71
+ const ev = {
72
+ type: e.name,
73
+ payload: e.payload,
74
+ meta: { subflowPath: splitPath(e.subflowPath) },
75
+ };
76
+ const key = selectCommentaryKey(ev);
77
+ if (!key)
78
+ return '';
79
+ const vars = extractCommentaryVars(ev, { appName }, templates);
80
+ return renderCommentary(templates[key] ?? '', vars);
81
+ }
82
+ function reset() {
83
+ task = '';
84
+ steps = [];
85
+ pendingBrain = '';
86
+ pendingCost = { ms: 0, tokens: 0 };
87
+ pendingCostUsed = false;
88
+ byId.clear();
89
+ }
90
+ return {
91
+ id: options.id ?? 'agent-thinking-trace',
92
+ onEmit(e) {
93
+ if (lastPipelineId !== undefined && e.pipelineId !== lastPipelineId)
94
+ reset();
95
+ lastPipelineId = e.pipelineId;
96
+ if (e.name === LLM_END) {
97
+ const p = e.payload;
98
+ const cost = {
99
+ ms: p.durationMs ?? 0,
100
+ tokens: (p.usage?.input ?? 0) + (p.usage?.output ?? 0),
101
+ tokensIn: p.usage?.input,
102
+ tokensOut: p.usage?.output,
103
+ tokensCached: p.usage?.cacheRead,
104
+ };
105
+ if ((p.toolCallCount ?? 0) === 0) {
106
+ // No tool calls → this is the final answer.
107
+ const content = p.content ?? '';
108
+ steps.push({
109
+ kind: 'answer',
110
+ to: options.asker ?? 'you',
111
+ brain: content,
112
+ answer: { headline: headlineOf(content), text: content },
113
+ cost,
114
+ });
115
+ }
116
+ else {
117
+ // Reasoning that will drive the upcoming ask step(s) this iteration.
118
+ pendingBrain = p.content ?? '';
119
+ pendingCost = cost;
120
+ pendingCostUsed = false;
121
+ }
122
+ return;
123
+ }
124
+ if (e.name === TOOL_START) {
125
+ const p = e.payload;
126
+ if (!p?.toolCallId)
127
+ return;
128
+ const isSkill = p.toolName === 'read_skill';
129
+ const skillId = isSkill
130
+ ? p.args?.id ?? undefined
131
+ : undefined;
132
+ byId.set(p.toolCallId, { toolName: p.toolName ?? '(tool)', isSkill, skillId });
133
+ steps.push({
134
+ kind: 'ask',
135
+ tool: isSkill ? skillId ?? 'skill' : p.toolName ?? '(tool)',
136
+ toolName: p.toolName,
137
+ input: asObject(p.args),
138
+ // First ask of the iteration carries the LLM's own reasoning; later
139
+ // asks (and the reasoning-less ones) fall back to engine commentary so
140
+ // the Notepad never shows a blank line.
141
+ brain: pendingCostUsed ? narrate(e) : pendingBrain || narrate(e),
142
+ cost: pendingCostUsed ? { ms: 0, tokens: 0 } : pendingCost, // attribute the LLM cost to the first ask of the iteration
143
+ });
144
+ pendingCostUsed = true;
145
+ return;
146
+ }
147
+ if (e.name === TOOL_END) {
148
+ const p = e.payload;
149
+ const started = p?.toolCallId ? byId.get(p.toolCallId) : undefined;
150
+ if (!started)
151
+ return;
152
+ byId.delete(p.toolCallId);
153
+ steps.push({
154
+ kind: 'return',
155
+ tool: started.isSkill ? started.skillId ?? 'skill' : started.toolName,
156
+ toolName: started.toolName,
157
+ replyType: started.isSkill ? 'instruction' : 'data',
158
+ output: asObject(p.result),
159
+ // The tool-result beat has no LLM reasoning of its own — narrate the
160
+ // mechanics via the commentary engine (matches the Lens).
161
+ brain: narrate(e),
162
+ brainMode: started.isSkill ? 'act' : 'reason',
163
+ ...(started.isSkill && started.skillId ? { skill: started.skillId } : {}),
164
+ cost: { ms: p.durationMs ?? 0, tokens: 0 },
165
+ ...(p.error ? { error: 'tool failed' } : {}),
166
+ });
167
+ }
168
+ },
169
+ getTrace(overrides = {}) {
170
+ const prompt = {
171
+ kind: 'prompt',
172
+ brain: overrides.task ?? task,
173
+ cost: { ms: 0, tokens: 0 },
174
+ };
175
+ return {
176
+ task: overrides.task ?? task,
177
+ ...(overrides.title ? { title: overrides.title } : {}),
178
+ agent: overrides.agent ?? options.agent ?? 'Agent',
179
+ model: overrides.model ?? options.model ?? 'model',
180
+ asker: overrides.asker ?? options.asker ?? 'you',
181
+ steps: [prompt, ...steps],
182
+ };
183
+ },
184
+ clear() {
185
+ reset();
186
+ lastPipelineId = undefined;
187
+ },
188
+ };
189
+ }
190
+ //# sourceMappingURL=AgentThinkingTraceRecorder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AgentThinkingTraceRecorder.js","sourceRoot":"","sources":["../../../../src/recorders/observability/AgentThinkingTraceRecorder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolLineageRecorder.js","sourceRoot":"","sources":["../../../../src/recorders/observability/ToolLineageRecorder.ts"],"names":[],"mappings":"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"}
@@ -243,6 +243,14 @@ export function extractCommentaryVars(event, ctx, templates = defaultCommentaryT
243
243
  durationMs: String(p.durationMs ?? 0),
244
244
  };
245
245
  }
246
+ case 'agentfootprint.context.injected': {
247
+ const p = event.payload;
248
+ // Feed the injection's content summary into `descClause` so an
249
+ // instruction/rule line reads "added a rule: <summary>" instead of an
250
+ // empty ": .". (The instructions/onToolReturn/alwaysOn templates all use
251
+ // {{descClause}}.) Empty summary → empty clause, handled by the templates.
252
+ return { ...base, descClause: (p.contentSummary ?? '').trim() };
253
+ }
246
254
  // Most templates only need {{appName}} / {{agentName}} — no token
247
255
  // counts, no IDs, no durations make it into prose. Those live in
248
256
  // DETAILS.
@@ -1 +1 @@
1
- {"version":3,"file":"commentaryTemplates.js","sourceRoot":"","sources":["../../../../../src/recorders/observability/commentary/commentaryTemplates.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"commentaryTemplates.js","sourceRoot":"","sources":["../../../../../src/recorders/observability/commentary/commentaryTemplates.ts"],"names":[],"mappings":"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"}
@@ -8,9 +8,31 @@
8
8
  * three slot subflows in any primitive (Agent, LLMCall) that
9
9
  * uses Injections. Evaluates every Injection's trigger once
10
10
  * per iteration.
11
- * Emits: `agentfootprint.context.evaluated` at exit, with
12
- * aggregate metadata. The slot subflows that follow emit
13
- * `agentfootprint.context.injected` per InjectionRecord placed.
11
+ *
12
+ * Four small, readable stages (was one monolithic `evaluate`):
13
+ * 1. Gather — snapshot the turn's inputs (iteration, history size,
14
+ * last tool, LLM-activated count). Observability only.
15
+ * 2. Evaluate — run every trigger → `activeInjections` (the REAL output
16
+ * the slot subflows read). Logic is UNCHANGED from the old
17
+ * single stage: `activeInjections` is byte-identical, so the
18
+ * slots are 100% unaffected. (Safety invariant.)
19
+ * 3. Route — partition `activeInjections` into per-slot buckets
20
+ * (`activeByslot`), mirroring how the slots filter. Pure
21
+ * annotation — the slots still do their own filtering.
22
+ * 4. Delta — diff this turn's buckets vs last turn's (`slotDelta`):
23
+ * per slot, what activated / deactivated / stayed. The
24
+ * explainability win ("tools +skill X, system-prompt
25
+ * unchanged"). Reads last turn via `priorActiveByslot`
26
+ * carried by the mount's input/output mappers.
27
+ *
28
+ * Nothing here SKIPS a slot — Route/Delta only annotate. See
29
+ * docs (injection-algorithm blog) + memory agentfootprint_slot_plan_review
30
+ * for why per-turn skip was deferred.
31
+ *
32
+ * Emits: `agentfootprint.context.evaluated` at the Evaluate stage, with
33
+ * aggregate metadata. The per-slot route/delta ride visible stage
34
+ * STATE (`activeByslot` / `slotDelta`) so the lens reads them from
35
+ * the commit log without a new event-type contract.
14
36
  *
15
37
  * Mount with:
16
38
  * builder.addSubFlowChartNext(
@@ -24,24 +46,55 @@
24
46
  * history: parent.history,
25
47
  * lastToolResult: parent.lastToolResult,
26
48
  * activatedInjectionIds: parent.activatedInjectionIds ?? [],
49
+ * priorActiveByslot: parent.activeByslot ?? EMPTY_ACTIVE_BY_SLOT,
50
+ * }),
51
+ * outputMapper: (sf) => ({
52
+ * activeInjections: sf.activeInjections,
53
+ * activeByslot: sf.activeByslot, // carried so next turn's Delta can diff
27
54
  * }),
28
- * outputMapper: (sf) => ({ activeInjections: sf.activeInjections }),
29
55
  * },
30
56
  * )
31
57
  */
32
58
  Object.defineProperty(exports, "__esModule", { value: true });
33
- exports.buildInjectionEngineSubflow = void 0;
59
+ exports.diffActiveBySlot = exports.routeActiveInjections = exports.buildInjectionEngineSubflow = exports.EMPTY_ACTIVE_BY_SLOT = void 0;
34
60
  const footprintjs_1 = require("footprintjs");
35
61
  const typedEmit_js_1 = require("../../recorders/core/typedEmit.js");
36
62
  const evaluator_js_1 = require("./evaluator.js");
37
63
  const types_js_1 = require("./types.js");
64
+ /** Empty buckets — turn-1 prior, and the safe default for the mappers. */
65
+ exports.EMPTY_ACTIVE_BY_SLOT = {
66
+ systemPrompt: [],
67
+ messages: [],
68
+ tools: [],
69
+ };
38
70
  /**
39
- * Build the Injection Engine subflow. One stage: `evaluate`.
40
- * Pure function over the injection list + the iteration context.
71
+ * Build the Injection Engine subflow Gather → Evaluate → Route → Delta.
41
72
  */
42
73
  function buildInjectionEngineSubflow(config) {
43
74
  const injections = config.injections;
44
- return (0, footprintjs_1.flowChart)('Evaluate', (scope) => {
75
+ return (0, footprintjs_1.flowChart)('Gather', gatherStage, 'gather', {
76
+ description: "Snapshot this turn's injection inputs (iteration, history, last tool, LLM-activated)",
77
+ })
78
+ .addFunction('Evaluate', makeEvaluateStage(injections), 'evaluate', 'Evaluate every Injection trigger; produce activeInjections + metadata')
79
+ .addFunction('Route', routeStage, 'route', 'Partition active injections into per-slot buckets (system-prompt / messages / tools)')
80
+ .addFunction('Delta', deltaStage, 'delta', 'Per-slot delta vs last turn: what activated / deactivated / stayed')
81
+ .build();
82
+ }
83
+ exports.buildInjectionEngineSubflow = buildInjectionEngineSubflow;
84
+ // ── Stage 1: Gather ──────────────────────────────────────────────────────
85
+ /** Observability-only: record what this turn is being evaluated against. */
86
+ function gatherStage(scope) {
87
+ const args = scope.$getArgs();
88
+ scope.$setValue('injectionContextSummary', {
89
+ iteration: args.iteration ?? 1,
90
+ historyLength: args.history?.length ?? 0,
91
+ lastToolName: args.lastToolResult?.toolName,
92
+ activatedInjectionCount: args.activatedInjectionIds?.length ?? 0,
93
+ });
94
+ }
95
+ // ── Stage 2: Evaluate (logic identical to the old single stage) ──────────
96
+ function makeEvaluateStage(injections) {
97
+ return (scope) => {
45
98
  const args = scope.$getArgs();
46
99
  const ctx = {
47
100
  iteration: args.iteration ?? 1,
@@ -61,10 +114,6 @@ function buildInjectionEngineSubflow(config) {
61
114
  // Aggregate evaluation metadata is pure OBSERVABILITY — no flow stage
62
115
  // reads it — so it goes out the EMIT channel where a recorder/Lens can
63
116
  // observe "what was considered, what won, what was skipped and why".
64
- // This is the upstream counterpart to context.slot_composed (what landed
65
- // in each slot). (Previously this was a dead `scope.$setValue(
66
- // 'injectionEvaluation', …)` that nothing read and that never even left
67
- // the subflow — see CHANGELOG.)
68
117
  (0, typedEmit_js_1.typedEmit)(scope, 'agentfootprint.context.evaluated', {
69
118
  iteration: ctx.iteration,
70
119
  activeCount: evaluation.active.length,
@@ -73,10 +122,81 @@ function buildInjectionEngineSubflow(config) {
73
122
  activeIds: evaluation.active.map((i) => i.id),
74
123
  skippedDetails: evaluation.skipped,
75
124
  triggerKindCounts: countTriggerKinds(evaluation.active),
125
+ // The Skill menu the LLM was offered (same text as the read_skill tool
126
+ // description) — pair "offered" with "chosen" (activatedInjectionIds) to
127
+ // debug a missed/wrong read_skill call.
128
+ skillCatalog: skillCatalogOf(injections),
76
129
  });
77
- }, 'evaluate', { description: 'Evaluate every Injection trigger; produce activeInjections + metadata' }).build();
130
+ };
131
+ }
132
+ // ── Stage 3: Route ───────────────────────────────────────────────────────
133
+ /** Partition active injections by the slot(s) each contributes to. Mirrors
134
+ * the slot subflows' own filters so this view matches what they compose.
135
+ * Pure — exported for unit tests + reuse (e.g. the lens). */
136
+ function routeActiveInjections(active) {
137
+ const systemPrompt = [];
138
+ const messages = [];
139
+ const tools = [];
140
+ for (const inj of active) {
141
+ const entry = {
142
+ id: inj.id,
143
+ source: inj.flavor,
144
+ reason: inj.description ?? `${inj.flavor} '${inj.id}' active`,
145
+ };
146
+ // system-prompt: has prompt content AND not a tool-only Skill
147
+ // (mirrors buildSystemPromptSlot's Block C suppression).
148
+ if (inj.inject.systemPrompt &&
149
+ inj.inject.systemPrompt.length > 0 &&
150
+ !(inj.flavor === 'skill' && inj.surfaceMode === 'tool-only')) {
151
+ systemPrompt.push(entry);
152
+ }
153
+ if (inj.inject.messages && inj.inject.messages.length > 0)
154
+ messages.push(entry);
155
+ if (inj.inject.tools && inj.inject.tools.length > 0)
156
+ tools.push(entry);
157
+ }
158
+ return { systemPrompt, messages, tools };
159
+ }
160
+ exports.routeActiveInjections = routeActiveInjections;
161
+ function routeStage(scope) {
162
+ const active = scope.$getValue('activeInjections') ?? [];
163
+ scope.$setValue('activeByslot', routeActiveInjections(active));
164
+ }
165
+ // ── Stage 4: Delta ───────────────────────────────────────────────────────
166
+ /** Diff this turn's per-slot buckets against last turn's (carried via the
167
+ * mount mappers as `priorActiveByslot`). Turn 1 / unwired → all "added". */
168
+ function deltaStage(scope) {
169
+ const current = scope.$getValue('activeByslot') ?? exports.EMPTY_ACTIVE_BY_SLOT;
170
+ const prior = scope.$getArgs().priorActiveByslot ?? exports.EMPTY_ACTIVE_BY_SLOT;
171
+ scope.$setValue('slotDelta', diffActiveBySlot(prior, current));
172
+ }
173
+ /** Diff two per-slot snapshots into a per-slot delta. Pure — exported for
174
+ * unit tests + reuse. */
175
+ function diffActiveBySlot(prior, current) {
176
+ return {
177
+ systemPrompt: diffSlot(prior.systemPrompt, current.systemPrompt),
178
+ messages: diffSlot(prior.messages, current.messages),
179
+ tools: diffSlot(prior.tools, current.tools),
180
+ };
181
+ }
182
+ exports.diffActiveBySlot = diffActiveBySlot;
183
+ /** added = now-not-before, removed = before-not-now, kept = both. */
184
+ function diffSlot(prior, current) {
185
+ const priorIds = new Set(prior.map((e) => e.id));
186
+ const currentIds = new Set(current.map((e) => e.id));
187
+ return {
188
+ added: [...currentIds].filter((id) => !priorIds.has(id)),
189
+ removed: [...priorIds].filter((id) => !currentIds.has(id)),
190
+ kept: [...currentIds].filter((id) => priorIds.has(id)),
191
+ };
192
+ }
193
+ /** The Skill catalog the LLM was offered — id + description for every Skill
194
+ * injection, mirroring buildReadSkillTool's `(no description)` fallback. */
195
+ function skillCatalogOf(injections) {
196
+ return injections
197
+ .filter((i) => i.flavor === 'skill')
198
+ .map((i) => ({ id: i.id, description: i.description ?? '(no description)' }));
78
199
  }
79
- exports.buildInjectionEngineSubflow = buildInjectionEngineSubflow;
80
200
  /** Count active injections by trigger kind (observability metric). */
81
201
  function countTriggerKinds(active) {
82
202
  const counts = {};
@@ -1 +1 @@
1
- {"version":3,"file":"buildInjectionEngineSubflow.js","sourceRoot":"","sources":["../../../src/lib/injection-engine/buildInjectionEngineSubflow.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;;;AAEH,6CAAwC;AAExC,oEAA8D;AAC9D,iDAAoD;AACpD,yCAA2F;AAe3F;;;GAGG;AACH,SAAgB,2BAA2B,CAAC,MAA6B;IACvE,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;IAErC,OAAO,IAAA,uBAAS,EACd,UAAU,EACV,CAAC,KAAuC,EAAE,EAAE;QAC1C,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,EAMvB,CAAC;QAEL,MAAM,GAAG,GAAqB;YAC5B,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,CAAC;YAC9B,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,EAAE;YACnC,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE;YAC3B,GAAG,CAAC,IAAI,CAAC,cAAc,IAAI,EAAE,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;YACnE,qBAAqB,EAAE,IAAI,CAAC,qBAAqB,IAAI,EAAE;SACxD,CAAC;QAEF,MAAM,UAAU,GAAG,IAAA,iCAAkB,EAAC,UAAU,EAAE,GAAG,CAAC,CAAC;QAEvD,kEAAkE;QAClE,wEAAwE;QACxE,oEAAoE;QACpE,oEAAoE;QACpE,4DAA4D;QAC5D,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,iCAAsB,CAAC,CAAC;QAClE,KAAK,CAAC,SAAS,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAC;QAEjD,sEAAsE;QACtE,uEAAuE;QACvE,qEAAqE;QACrE,yEAAyE;QACzE,+DAA+D;QAC/D,wEAAwE;QACxE,gCAAgC;QAChC,IAAA,wBAAS,EAAC,KAAK,EAAE,kCAAkC,EAAE;YACnD,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,WAAW,EAAE,UAAU,CAAC,MAAM,CAAC,MAAM;YACrC,YAAY,EAAE,UAAU,CAAC,OAAO,CAAC,MAAM;YACvC,cAAc,EAAE,UAAU,CAAC,MAAM;YACjC,SAAS,EAAE,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7C,cAAc,EAAE,UAAU,CAAC,OAAO;YAClC,iBAAiB,EAAE,iBAAiB,CAAC,UAAU,CAAC,MAAM,CAAC;SACxD,CAAC,CAAC;IACL,CAAC,EACD,UAAU,EACV,EAAE,WAAW,EAAE,uEAAuE,EAAE,CACzF,CAAC,KAAK,EAAE,CAAC;AACZ,CAAC;AApDD,kEAoDC;AAED,sEAAsE;AACtE,SAAS,iBAAiB,CAAC,MAA4B;IACrD,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;QACzB,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IACjE,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"buildInjectionEngineSubflow.js","sourceRoot":"","sources":["../../../src/lib/injection-engine/buildInjectionEngineSubflow.ts"],"names":[],"mappings":"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"}
package/dist/observe.js CHANGED
@@ -32,7 +32,7 @@
32
32
  * directly; Tier 3 dashboards are opt-in.
33
33
  */
34
34
  Object.defineProperty(exports, "__esModule", { value: true });
35
- exports.typedEmit = exports.attachStatus = exports.LoggingDomains = exports.attachLogging = exports.skillRecorder = exports.permissionRecorder = exports.memoryRecorder = exports.evalRecorder = exports.contextEvaluatedRecorder = exports.toolsRecorder = exports.costRecorder = exports.LiveAgentTurnTracker = exports.LiveToolTracker = exports.LiveLLMTracker = exports.LiveStateRecorder = exports.liveStateRecorder = exports.buildStepGraph = exports.attachFlowchart = exports.runStepRecorder = exports.RunStepRecorder = exports.buildRunSteps = exports.BoundaryRecorder = exports.boundaryRecorder = exports.agentRecorder = exports.compositionRecorder = exports.streamRecorder = exports.ContextRecorder = void 0;
35
+ exports.typedEmit = exports.agentThinkingTrace = exports.toolLineageRecorder = exports.attachStatus = exports.LoggingDomains = exports.attachLogging = exports.skillRecorder = exports.permissionRecorder = exports.memoryRecorder = exports.evalRecorder = exports.contextEvaluatedRecorder = exports.toolsRecorder = exports.costRecorder = exports.LiveAgentTurnTracker = exports.LiveToolTracker = exports.LiveLLMTracker = exports.LiveStateRecorder = exports.liveStateRecorder = exports.buildStepGraph = exports.attachFlowchart = exports.runStepRecorder = exports.RunStepRecorder = exports.buildRunSteps = exports.BoundaryRecorder = exports.boundaryRecorder = exports.agentRecorder = exports.compositionRecorder = exports.streamRecorder = exports.ContextRecorder = void 0;
36
36
  // Tier 1 — context + stream
37
37
  var ContextRecorder_js_1 = require("./recorders/core/ContextRecorder.js");
38
38
  Object.defineProperty(exports, "ContextRecorder", { enumerable: true, get: function () { return ContextRecorder_js_1.ContextRecorder; } });
@@ -79,6 +79,14 @@ Object.defineProperty(exports, "attachLogging", { enumerable: true, get: functio
79
79
  Object.defineProperty(exports, "LoggingDomains", { enumerable: true, get: function () { return LoggingRecorder_js_1.LoggingDomains; } });
80
80
  var StatusRecorder_js_1 = require("./recorders/observability/StatusRecorder.js");
81
81
  Object.defineProperty(exports, "attachStatus", { enumerable: true, get: function () { return StatusRecorder_js_1.attachStatus; } });
82
+ // Tool→tool DATA-FLOW graph, derived by value provenance from the tool emit
83
+ // stream (see finding 2: causalChain can't see LLM-mediated tool dependencies).
84
+ var ToolLineageRecorder_js_1 = require("./recorders/observability/ToolLineageRecorder.js");
85
+ Object.defineProperty(exports, "toolLineageRecorder", { enumerable: true, get: function () { return ToolLineageRecorder_js_1.toolLineageRecorder; } });
86
+ // AgentThinkingUI Trace (run → the "watch it think" beat list, collected during
87
+ // traversal). Lets any agentfootprint run drive AgentThinkingUI / domain views.
88
+ var AgentThinkingTraceRecorder_js_1 = require("./recorders/observability/AgentThinkingTraceRecorder.js");
89
+ Object.defineProperty(exports, "agentThinkingTrace", { enumerable: true, get: function () { return AgentThinkingTraceRecorder_js_1.agentThinkingTrace; } });
82
90
  // Emit primitive — used by every Tier-3 source-domain.
83
91
  var typedEmit_js_1 = require("./recorders/core/typedEmit.js");
84
92
  Object.defineProperty(exports, "typedEmit", { enumerable: true, get: function () { return typedEmit_js_1.typedEmit; } });
@@ -1 +1 @@
1
- {"version":3,"file":"observe.js","sourceRoot":"","sources":["../src/observe.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;;;AAEH,4BAA4B;AAC5B,0EAAmG;AAA1F,qHAAA,eAAe,OAAA;AACxB,wEAAgG;AAAvF,mHAAA,cAAc,OAAA;AAEvB,+BAA+B;AAC/B,kFAGiD;AAF/C,6HAAA,mBAAmB,OAAA;AAGrB,sEAA6F;AAApF,iHAAA,aAAa,OAAA;AACtB,qFAkBuD;AAjBrD,uHAAA,gBAAgB,OAAA;AAChB,uHAAA,gBAAgB,OAAA;AAiBlB,mFAWsD;AAVpD,mHAAA,aAAa,OAAA;AACb,qHAAA,eAAe,OAAA;AACf,qHAAA,eAAe,OAAA;AASjB,uFAUwD;AATtD,uHAAA,eAAe,OAAA;AACf,sHAAA,cAAc,OAAA;AAShB,uFAUwD;AATtD,yHAAA,iBAAiB,OAAA;AACjB,yHAAA,iBAAiB,OAAA;AACjB,sHAAA,cAAc,OAAA;AACd,uHAAA,eAAe,OAAA;AACf,4HAAA,oBAAoB,OAAA;AAOtB,6BAA6B;AAC7B,oEAA0F;AAAjF,+GAAA,YAAY,OAAA;AACrB,sEAA6F;AAApF,iHAAA,aAAa,OAAA;AACtB,4FAGsD;AAFpD,uIAAA,wBAAwB,OAAA;AAG1B,oEAA0F;AAAjF,+GAAA,YAAY,OAAA;AACrB,wEAAgG;AAAvF,mHAAA,cAAc,OAAA;AACvB,gFAGgD;AAF9C,2HAAA,kBAAkB,OAAA;AAGpB,sEAA6F;AAApF,iHAAA,aAAa,OAAA;AACtB,mFAMsD;AALpD,mHAAA,aAAa,OAAA;AACb,oHAAA,cAAc,OAAA;AAKhB,iFAIqD;AAHnD,iHAAA,YAAY,OAAA;AAKd,uDAAuD;AACvD,8DAA0D;AAAjD,yGAAA,SAAS,OAAA"}
1
+ {"version":3,"file":"observe.js","sourceRoot":"","sources":["../src/observe.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;;;AAEH,4BAA4B;AAC5B,0EAAmG;AAA1F,qHAAA,eAAe,OAAA;AACxB,wEAAgG;AAAvF,mHAAA,cAAc,OAAA;AAEvB,+BAA+B;AAC/B,kFAGiD;AAF/C,6HAAA,mBAAmB,OAAA;AAGrB,sEAA6F;AAApF,iHAAA,aAAa,OAAA;AACtB,qFAkBuD;AAjBrD,uHAAA,gBAAgB,OAAA;AAChB,uHAAA,gBAAgB,OAAA;AAiBlB,mFAWsD;AAVpD,mHAAA,aAAa,OAAA;AACb,qHAAA,eAAe,OAAA;AACf,qHAAA,eAAe,OAAA;AASjB,uFAUwD;AATtD,uHAAA,eAAe,OAAA;AACf,sHAAA,cAAc,OAAA;AAShB,uFAUwD;AATtD,yHAAA,iBAAiB,OAAA;AACjB,yHAAA,iBAAiB,OAAA;AACjB,sHAAA,cAAc,OAAA;AACd,uHAAA,eAAe,OAAA;AACf,4HAAA,oBAAoB,OAAA;AAOtB,6BAA6B;AAC7B,oEAA0F;AAAjF,+GAAA,YAAY,OAAA;AACrB,sEAA6F;AAApF,iHAAA,aAAa,OAAA;AACtB,4FAGsD;AAFpD,uIAAA,wBAAwB,OAAA;AAG1B,oEAA0F;AAAjF,+GAAA,YAAY,OAAA;AACrB,wEAAgG;AAAvF,mHAAA,cAAc,OAAA;AACvB,gFAGgD;AAF9C,2HAAA,kBAAkB,OAAA;AAGpB,sEAA6F;AAApF,iHAAA,aAAa,OAAA;AACtB,mFAMsD;AALpD,mHAAA,aAAa,OAAA;AACb,oHAAA,cAAc,OAAA;AAKhB,iFAIqD;AAHnD,iHAAA,YAAY,OAAA;AAId,4EAA4E;AAC5E,gFAAgF;AAChF,2FAO0D;AANxD,6HAAA,mBAAmB,OAAA;AAOrB,gFAAgF;AAChF,gFAAgF;AAChF,yGAQiE;AAP/D,mIAAA,kBAAkB,OAAA;AASpB,uDAAuD;AACvD,8DAA0D;AAAjD,yGAAA,SAAS,OAAA"}