agentfootprint 2.14.1 → 2.14.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/observe.js +1 -0
- package/dist/esm/observe.js.map +1 -1
- package/dist/esm/recorders/observability/LiveStateRecorder.js +302 -0
- package/dist/esm/recorders/observability/LiveStateRecorder.js.map +1 -0
- package/dist/index.js +9 -3
- package/dist/index.js.map +1 -1
- package/dist/observe.js +7 -1
- package/dist/observe.js.map +1 -1
- package/dist/recorders/observability/LiveStateRecorder.js +310 -0
- package/dist/recorders/observability/LiveStateRecorder.js.map +1 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/observe.d.ts +1 -0
- package/dist/types/observe.d.ts.map +1 -1
- package/dist/types/recorders/observability/LiveStateRecorder.d.ts +215 -0
- package/dist/types/recorders/observability/LiveStateRecorder.d.ts.map +1 -0
- package/package.json +3 -3
package/dist/esm/index.js
CHANGED
|
@@ -59,6 +59,7 @@ export { attachThinking, } from './recorders/observability/ThinkingRecorder.js';
|
|
|
59
59
|
export { attachLogging, LoggingDomains, } from './recorders/observability/LoggingRecorder.js';
|
|
60
60
|
export { attachFlowchart, } from './recorders/observability/FlowchartRecorder.js';
|
|
61
61
|
export { BoundaryRecorder, boundaryRecorder, } from './recorders/observability/BoundaryRecorder.js';
|
|
62
|
+
export { liveStateRecorder, LiveStateRecorder, LiveLLMTracker, LiveToolTracker, LiveAgentTurnTracker, } from './recorders/observability/LiveStateRecorder.js';
|
|
62
63
|
// Commentary — bundled prose templates + engine for narrating a run.
|
|
63
64
|
// Consumers ship their own JSON locale / brand voice via the same
|
|
64
65
|
// shape; viewers (Lens, CLI tail, log file) consume this surface.
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,oEAAoE;AACpE,8DAA8D;AAC9D,uEAAuE;AACvE,kEAAkE;AAClE,sEAAsE;AACtE,sDAAsD;AACtD,OAAO,8CAA8C,CAAC;AACtD,OAAO,2CAA2C,CAAC;AACnD,OAAO,4CAA4C,CAAC;AAsCpD,qCAAqC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,OAAO,EACL,WAAW,EACX,eAAe,GAIhB,MAAM,sBAAsB,CAAC;AAE9B,aAAa;AACb,OAAO,EACL,eAAe,GAQhB,MAAM,wBAAwB,CAAC;AAEhC,6BAA6B;AAC7B,cAAc,qBAAqB,CAAC;AAEpC,yEAAyE;AACzE,uDAAuD;AACvD,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,cAAc,GAEf,MAAM,kBAAkB,CAAC;AAC1B,oEAAoE;AACpE,yEAAyE;AACzE,wEAAwE;AACxE,qEAAqE;AACrE,kDAAkD;AAClD,OAAO,EACL,gBAAgB,GAMjB,MAAM,2BAA2B,CAAC;AAEnC,gBAAgB;AAChB,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAmB,MAAM,uBAAuB,CAAC;AAE1F,iBAAiB;AACjB,OAAO,EAAE,eAAe,EAA+B,MAAM,qCAAqC,CAAC;AACnG,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,GAKjB,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,UAAU,EAA0B,MAAM,gCAAgC,CAAC;AACpF,OAAO,EAAE,cAAc,EAA8B,MAAM,oCAAoC,CAAC;AAChG,OAAO,EAAE,aAAa,EAA6B,MAAM,mCAAmC,CAAC;AAC7F,OAAO,EACL,mBAAmB,GAEpB,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAAE,YAAY,EAA4B,MAAM,kCAAkC,CAAC;AAC1F,OAAO,EACL,kBAAkB,GAEnB,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,YAAY,EAA4B,MAAM,kCAAkC,CAAC;AAC1F,OAAO,EAAE,cAAc,EAA8B,MAAM,oCAAoC,CAAC;AAChG,OAAO,EAAE,aAAa,EAA6B,MAAM,mCAAmC,CAAC;AAC7F,OAAO,EAAE,aAAa,EAA6B,MAAM,mCAAmC,CAAC;AAC7F,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAI1D,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAE7D,sEAAsE;AACtE,wEAAwE;AACxE,iEAAiE;AACjE,sEAAsE;AACtE,uEAAuE;AACvE,OAAO,EACL,SAAS,EACT,QAAQ,EACR,cAAc,EACd,QAAQ,GAET,MAAM,iBAAiB,CAAC;AAEzB,4CAA4C;AAC5C,OAAO,EACL,cAAc,GAGf,MAAM,+CAA+C,CAAC;AACvD,OAAO,EACL,aAAa,EACb,cAAc,GAIf,MAAM,8CAA8C,CAAC;AACtD,OAAO,EACL,eAAe,GAOhB,MAAM,gDAAgD,CAAC;AACxD,OAAO,EACL,gBAAgB,EAChB,gBAAgB,GAcjB,MAAM,+CAA+C,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/observe.js
CHANGED
|
@@ -38,6 +38,7 @@ export { compositionRecorder, } from './recorders/core/CompositionRecorder.js';
|
|
|
38
38
|
export { agentRecorder } from './recorders/core/AgentRecorder.js';
|
|
39
39
|
export { boundaryRecorder, BoundaryRecorder, } from './recorders/observability/BoundaryRecorder.js';
|
|
40
40
|
export { attachFlowchart, buildStepGraph, } from './recorders/observability/FlowchartRecorder.js';
|
|
41
|
+
export { liveStateRecorder, LiveStateRecorder, LiveLLMTracker, LiveToolTracker, LiveAgentTurnTracker, } from './recorders/observability/LiveStateRecorder.js';
|
|
41
42
|
// Tier 3 — domain dashboards
|
|
42
43
|
export { costRecorder } from './recorders/core/CostRecorder.js';
|
|
43
44
|
export { evalRecorder } from './recorders/core/EvalRecorder.js';
|
package/dist/esm/observe.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"observe.js","sourceRoot":"","sources":["../../src/observe.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,4BAA4B;AAC5B,OAAO,EAAE,eAAe,EAA+B,MAAM,qCAAqC,CAAC;AACnG,OAAO,EAAE,cAAc,EAA8B,MAAM,oCAAoC,CAAC;AAEhG,+BAA+B;AAC/B,OAAO,EACL,mBAAmB,GAEpB,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAAE,aAAa,EAA6B,MAAM,mCAAmC,CAAC;AAC7F,OAAO,EACL,gBAAgB,EAChB,gBAAgB,GAQjB,MAAM,+CAA+C,CAAC;AACvD,OAAO,EACL,eAAe,EACf,cAAc,GAQf,MAAM,gDAAgD,CAAC;AAExD,6BAA6B;AAC7B,OAAO,EAAE,YAAY,EAA4B,MAAM,kCAAkC,CAAC;AAC1F,OAAO,EAAE,YAAY,EAA4B,MAAM,kCAAkC,CAAC;AAC1F,OAAO,EAAE,cAAc,EAA8B,MAAM,oCAAoC,CAAC;AAChG,OAAO,EACL,kBAAkB,GAEnB,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,aAAa,EAA6B,MAAM,mCAAmC,CAAC;AAC7F,OAAO,EACL,aAAa,EACb,cAAc,GAIf,MAAM,8CAA8C,CAAC;AACtD,OAAO,EACL,cAAc,GAGf,MAAM,+CAA+C,CAAC;AAEvD,uDAAuD;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC"}
|
|
1
|
+
{"version":3,"file":"observe.js","sourceRoot":"","sources":["../../src/observe.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,4BAA4B;AAC5B,OAAO,EAAE,eAAe,EAA+B,MAAM,qCAAqC,CAAC;AACnG,OAAO,EAAE,cAAc,EAA8B,MAAM,oCAAoC,CAAC;AAEhG,+BAA+B;AAC/B,OAAO,EACL,mBAAmB,GAEpB,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAAE,aAAa,EAA6B,MAAM,mCAAmC,CAAC;AAC7F,OAAO,EACL,gBAAgB,EAChB,gBAAgB,GAQjB,MAAM,+CAA+C,CAAC;AACvD,OAAO,EACL,eAAe,EACf,cAAc,GAQf,MAAM,gDAAgD,CAAC;AACxD,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,oBAAoB,GAKrB,MAAM,gDAAgD,CAAC;AAExD,6BAA6B;AAC7B,OAAO,EAAE,YAAY,EAA4B,MAAM,kCAAkC,CAAC;AAC1F,OAAO,EAAE,YAAY,EAA4B,MAAM,kCAAkC,CAAC;AAC1F,OAAO,EAAE,cAAc,EAA8B,MAAM,oCAAoC,CAAC;AAChG,OAAO,EACL,kBAAkB,GAEnB,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,aAAa,EAA6B,MAAM,mCAAmC,CAAC;AAC7F,OAAO,EACL,aAAa,EACb,cAAc,GAIf,MAAM,8CAA8C,CAAC;AACtD,OAAO,EACL,cAAc,GAGf,MAAM,+CAA+C,CAAC;AAEvD,uDAAuD;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC"}
|
|
@@ -0,0 +1,302 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LiveStateRecorder — domain trackers built on the footprintjs
|
|
3
|
+
* `BoundaryStateTracker<TState>` storage primitive (v4.17.2+).
|
|
4
|
+
*
|
|
5
|
+
* **What this answers:** "Right now, mid-run, what's happening?"
|
|
6
|
+
*
|
|
7
|
+
* - Is an LLM call in flight? What's the partial answer so far?
|
|
8
|
+
* - Is a tool executing? Which tool? What args?
|
|
9
|
+
* - Is the agent in a turn? Which turn index?
|
|
10
|
+
*
|
|
11
|
+
* All reads are O(1) — the trackers maintain incremental state via
|
|
12
|
+
* the framework's bracket-scoped storage primitive. No event-log fold,
|
|
13
|
+
* no walking arrays per render.
|
|
14
|
+
*
|
|
15
|
+
* **Mental model — observers vs. bookkeepers:**
|
|
16
|
+
*
|
|
17
|
+
* `BoundaryStateTracker<TState>` (footprintjs) = STORAGE shelf.
|
|
18
|
+
* `EventDispatcher.on(...)` (agentfootprint) = OBSERVER source.
|
|
19
|
+
*
|
|
20
|
+
* Each domain tracker (`LiveLLMTracker`, `LiveToolTracker`,
|
|
21
|
+
* `LiveAgentTurnTracker`) extends the storage shelf AND subscribes
|
|
22
|
+
* to the dispatcher. The composition `LiveStateRecorder` bundles
|
|
23
|
+
* all three so a consumer only attaches once.
|
|
24
|
+
*
|
|
25
|
+
* **Tier 1 (live) only.** Past states are not stored — when a boundary
|
|
26
|
+
* closes, its transient state clears. For time-travel queries, snapshot
|
|
27
|
+
* to a `SequenceRecorder<TState>` instead. See the BoundaryStateTracker
|
|
28
|
+
* JSDoc for the rationale.
|
|
29
|
+
*
|
|
30
|
+
* @example Use the bundled façade — one attach, three live views:
|
|
31
|
+
*
|
|
32
|
+
* ```typescript
|
|
33
|
+
* import { LiveStateRecorder } from 'agentfootprint';
|
|
34
|
+
*
|
|
35
|
+
* const liveState = new LiveStateRecorder();
|
|
36
|
+
* liveState.subscribe(runner);
|
|
37
|
+
*
|
|
38
|
+
* await runner.run({ input });
|
|
39
|
+
*
|
|
40
|
+
* // Read at any moment during the run (e.g., from another async task):
|
|
41
|
+
* liveState.isLLMInFlight(); // true between llm_start ↔ llm_end
|
|
42
|
+
* liveState.getPartialLLM(); // accumulated tokens so far
|
|
43
|
+
* liveState.isToolExecuting(); // true between tool_start ↔ tool_end
|
|
44
|
+
* liveState.isAgentInTurn(); // true between turn_start ↔ turn_end
|
|
45
|
+
*
|
|
46
|
+
* liveState.unsubscribe();
|
|
47
|
+
* ```
|
|
48
|
+
*
|
|
49
|
+
* @example Use a single tracker directly when you only need one slice:
|
|
50
|
+
*
|
|
51
|
+
* ```typescript
|
|
52
|
+
* import { LiveLLMTracker } from 'agentfootprint';
|
|
53
|
+
*
|
|
54
|
+
* const llm = new LiveLLMTracker();
|
|
55
|
+
* llm.subscribe(runner);
|
|
56
|
+
* await runner.run({ input });
|
|
57
|
+
*
|
|
58
|
+
* llm.isInFlight(); // O(1)
|
|
59
|
+
* llm.getLatestPartial(); // most recent active call's partial
|
|
60
|
+
* llm.getActive(rid)?.tokens; // tokens accumulated for one call
|
|
61
|
+
* ```
|
|
62
|
+
*/
|
|
63
|
+
import { BoundaryStateTracker } from 'footprintjs/trace';
|
|
64
|
+
// ─── LiveLLMTracker ─────────────────────────────────────────────────
|
|
65
|
+
/**
|
|
66
|
+
* Tracks the in-flight state of LLM calls. Subscribes to:
|
|
67
|
+
* - `agentfootprint.stream.llm_start` → opens a boundary
|
|
68
|
+
* - `agentfootprint.stream.token` → appends to partial
|
|
69
|
+
* - `agentfootprint.stream.llm_end` → closes the boundary
|
|
70
|
+
*
|
|
71
|
+
* Boundary key: `runtimeStageId` of the call-llm stage. Parallel LLM
|
|
72
|
+
* calls (Parallel composition with multiple branches) get distinct
|
|
73
|
+
* keys and are tracked independently.
|
|
74
|
+
*/
|
|
75
|
+
export class LiveLLMTracker extends BoundaryStateTracker {
|
|
76
|
+
id = 'live-llm';
|
|
77
|
+
/** Subscribe to a runner's dispatcher. Returns an Unsubscribe. */
|
|
78
|
+
subscribe(runner) {
|
|
79
|
+
const offs = [];
|
|
80
|
+
offs.push(runner.on('agentfootprint.stream.llm_start', (event) => {
|
|
81
|
+
const p = event.payload;
|
|
82
|
+
this.startBoundary(event.meta.runtimeStageId, {
|
|
83
|
+
partial: '',
|
|
84
|
+
tokens: 0,
|
|
85
|
+
iteration: p.iteration,
|
|
86
|
+
provider: p.provider,
|
|
87
|
+
model: p.model,
|
|
88
|
+
startedAtMs: event.meta.wallClockMs,
|
|
89
|
+
});
|
|
90
|
+
}));
|
|
91
|
+
offs.push(runner.on('agentfootprint.stream.token', (event) => {
|
|
92
|
+
this.updateBoundary(event.meta.runtimeStageId, (s) => ({
|
|
93
|
+
...s,
|
|
94
|
+
partial: s.partial + event.payload.content,
|
|
95
|
+
tokens: s.tokens + 1,
|
|
96
|
+
}));
|
|
97
|
+
}));
|
|
98
|
+
offs.push(runner.on('agentfootprint.stream.llm_end', (event) => {
|
|
99
|
+
this.stopBoundary(event.meta.runtimeStageId);
|
|
100
|
+
}));
|
|
101
|
+
return () => offs.forEach((off) => off());
|
|
102
|
+
}
|
|
103
|
+
/** True if any LLM call is currently in flight. Same as `hasActive`. */
|
|
104
|
+
isInFlight() {
|
|
105
|
+
return this.hasActive;
|
|
106
|
+
}
|
|
107
|
+
/** Accumulated partial content of the MOST RECENTLY started active
|
|
108
|
+
* LLM call. Empty string when no call is active. Useful for the
|
|
109
|
+
* classic "Chatbot is responding: …" live commentary line. */
|
|
110
|
+
getLatestPartial() {
|
|
111
|
+
if (!this.hasActive)
|
|
112
|
+
return '';
|
|
113
|
+
let latest;
|
|
114
|
+
let latestStart = -Infinity;
|
|
115
|
+
for (const state of this.getAllActive().values()) {
|
|
116
|
+
if (state.startedAtMs > latestStart) {
|
|
117
|
+
latestStart = state.startedAtMs;
|
|
118
|
+
latest = state;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
return latest?.partial ?? '';
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
// ─── LiveToolTracker ────────────────────────────────────────────────
|
|
125
|
+
/**
|
|
126
|
+
* Tracks in-flight tool calls. Subscribes to:
|
|
127
|
+
* - `agentfootprint.stream.tool_start` → opens a boundary
|
|
128
|
+
* - `agentfootprint.stream.tool_end` → closes the boundary
|
|
129
|
+
*
|
|
130
|
+
* Boundary key: `toolCallId` (more granular than `runtimeStageId` —
|
|
131
|
+
* parallel tools share one calling stage but have distinct toolCallIds).
|
|
132
|
+
*/
|
|
133
|
+
export class LiveToolTracker extends BoundaryStateTracker {
|
|
134
|
+
id = 'live-tool';
|
|
135
|
+
subscribe(runner) {
|
|
136
|
+
const offs = [];
|
|
137
|
+
offs.push(runner.on('agentfootprint.stream.tool_start', (event) => {
|
|
138
|
+
const p = event.payload;
|
|
139
|
+
this.startBoundary(p.toolCallId, {
|
|
140
|
+
toolName: p.toolName,
|
|
141
|
+
args: p.args,
|
|
142
|
+
toolCallId: p.toolCallId,
|
|
143
|
+
startedAtMs: event.meta.wallClockMs,
|
|
144
|
+
});
|
|
145
|
+
}));
|
|
146
|
+
offs.push(runner.on('agentfootprint.stream.tool_end', (event) => {
|
|
147
|
+
this.stopBoundary(event.payload.toolCallId);
|
|
148
|
+
}));
|
|
149
|
+
return () => offs.forEach((off) => off());
|
|
150
|
+
}
|
|
151
|
+
/** True if any tool is currently executing. */
|
|
152
|
+
isExecuting() {
|
|
153
|
+
return this.hasActive;
|
|
154
|
+
}
|
|
155
|
+
/** Names of tools currently executing. Empty when none. */
|
|
156
|
+
getExecutingToolNames() {
|
|
157
|
+
return [...this.getAllActive().values()].map((s) => s.toolName);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
// ─── LiveAgentTurnTracker ───────────────────────────────────────────
|
|
161
|
+
/**
|
|
162
|
+
* Tracks in-flight agent turns. Subscribes to:
|
|
163
|
+
* - `agentfootprint.agent.turn_start` → opens a boundary
|
|
164
|
+
* - `agentfootprint.agent.turn_end` → closes the boundary
|
|
165
|
+
*
|
|
166
|
+
* Boundary key: stringified `turnIndex` from the payload — survives
|
|
167
|
+
* across runner instances because turnIndex resets per-session.
|
|
168
|
+
*/
|
|
169
|
+
export class LiveAgentTurnTracker extends BoundaryStateTracker {
|
|
170
|
+
id = 'live-agent-turn';
|
|
171
|
+
subscribe(runner) {
|
|
172
|
+
const offs = [];
|
|
173
|
+
offs.push(runner.on('agentfootprint.agent.turn_start', (event) => {
|
|
174
|
+
const p = event.payload;
|
|
175
|
+
this.startBoundary(String(p.turnIndex), {
|
|
176
|
+
turnIndex: p.turnIndex,
|
|
177
|
+
userPrompt: p.userPrompt,
|
|
178
|
+
startedAtMs: event.meta.wallClockMs,
|
|
179
|
+
});
|
|
180
|
+
}));
|
|
181
|
+
offs.push(runner.on('agentfootprint.agent.turn_end', (event) => {
|
|
182
|
+
this.stopBoundary(String(event.payload.turnIndex));
|
|
183
|
+
}));
|
|
184
|
+
return () => offs.forEach((off) => off());
|
|
185
|
+
}
|
|
186
|
+
/** True if the agent is currently inside a turn. */
|
|
187
|
+
isInTurn() {
|
|
188
|
+
return this.hasActive;
|
|
189
|
+
}
|
|
190
|
+
/** Index of the most-recently started active turn (-1 if none). */
|
|
191
|
+
getCurrentTurnIndex() {
|
|
192
|
+
if (!this.hasActive)
|
|
193
|
+
return -1;
|
|
194
|
+
let latest = -1;
|
|
195
|
+
let latestStart = -Infinity;
|
|
196
|
+
for (const state of this.getAllActive().values()) {
|
|
197
|
+
if (state.startedAtMs > latestStart) {
|
|
198
|
+
latestStart = state.startedAtMs;
|
|
199
|
+
latest = state.turnIndex;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
return latest;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
// ─── LiveStateRecorder — façade composing the three trackers ────────
|
|
206
|
+
/**
|
|
207
|
+
* One-stop façade bundling `LiveLLMTracker` + `LiveToolTracker` +
|
|
208
|
+
* `LiveAgentTurnTracker`. Consumers attach this once and get O(1)
|
|
209
|
+
* reads across all three live-state slices.
|
|
210
|
+
*
|
|
211
|
+
* Use the bundled façade unless you ONLY need one slice — using a
|
|
212
|
+
* single tracker directly avoids subscribing to events you don't read.
|
|
213
|
+
*
|
|
214
|
+
* **Lifecycle**: call `subscribe(runner)` to wire all three trackers,
|
|
215
|
+
* then `unsubscribe()` to detach. `clear()` resets all transient state
|
|
216
|
+
* across the three (called automatically by consumers like Lens between
|
|
217
|
+
* runs).
|
|
218
|
+
*
|
|
219
|
+
* **What this is NOT for:**
|
|
220
|
+
* - Time-travel queries (Tier 1 only — live state)
|
|
221
|
+
* - Aggregations (use SequenceRecorder.aggregate)
|
|
222
|
+
* - Stage-level observation (use Recorder.onStageStart/End)
|
|
223
|
+
*
|
|
224
|
+
* **Composition over inheritance:** the façade does NOT extend
|
|
225
|
+
* `BoundaryStateTracker` itself — different boundary kinds need
|
|
226
|
+
* separate active maps to avoid key collisions between LLM and tool
|
|
227
|
+
* boundaries. Each sub-tracker keeps its own state.
|
|
228
|
+
*/
|
|
229
|
+
export class LiveStateRecorder {
|
|
230
|
+
id = 'live-state';
|
|
231
|
+
/** LLM call live state. */
|
|
232
|
+
llm;
|
|
233
|
+
/** Tool execution live state. */
|
|
234
|
+
tool;
|
|
235
|
+
/** Agent turn live state. */
|
|
236
|
+
turn;
|
|
237
|
+
/** Active subscription disposer, if `subscribe()` is called. */
|
|
238
|
+
active;
|
|
239
|
+
constructor() {
|
|
240
|
+
this.llm = new LiveLLMTracker();
|
|
241
|
+
this.tool = new LiveToolTracker();
|
|
242
|
+
this.turn = new LiveAgentTurnTracker();
|
|
243
|
+
}
|
|
244
|
+
/** Subscribe all three trackers to one runner. Idempotent — calling
|
|
245
|
+
* twice on the same recorder unsubscribes the prior subscription
|
|
246
|
+
* first to avoid double-counting. */
|
|
247
|
+
subscribe(runner) {
|
|
248
|
+
this.unsubscribe();
|
|
249
|
+
const offs = [
|
|
250
|
+
this.llm.subscribe(runner),
|
|
251
|
+
this.tool.subscribe(runner),
|
|
252
|
+
this.turn.subscribe(runner),
|
|
253
|
+
];
|
|
254
|
+
this.active = () => offs.forEach((off) => off());
|
|
255
|
+
return this.active;
|
|
256
|
+
}
|
|
257
|
+
/** Detach all three trackers from the current runner. Idempotent. */
|
|
258
|
+
unsubscribe() {
|
|
259
|
+
if (this.active) {
|
|
260
|
+
this.active();
|
|
261
|
+
this.active = undefined;
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
/** Reset transient state across all three trackers. Called by the
|
|
265
|
+
* executor / consumer between runs. */
|
|
266
|
+
clear() {
|
|
267
|
+
this.llm.clear();
|
|
268
|
+
this.tool.clear();
|
|
269
|
+
this.turn.clear();
|
|
270
|
+
}
|
|
271
|
+
// ── Convenience reads (O(1)) ──────────────────────────────────────
|
|
272
|
+
/** True if any LLM call is currently in flight. */
|
|
273
|
+
isLLMInFlight() {
|
|
274
|
+
return this.llm.isInFlight();
|
|
275
|
+
}
|
|
276
|
+
/** Accumulated partial content of the most-recently started LLM call. */
|
|
277
|
+
getPartialLLM() {
|
|
278
|
+
return this.llm.getLatestPartial();
|
|
279
|
+
}
|
|
280
|
+
/** True if any tool is currently executing. */
|
|
281
|
+
isToolExecuting() {
|
|
282
|
+
return this.tool.isExecuting();
|
|
283
|
+
}
|
|
284
|
+
/** Names of tools currently executing. */
|
|
285
|
+
getExecutingToolNames() {
|
|
286
|
+
return this.tool.getExecutingToolNames();
|
|
287
|
+
}
|
|
288
|
+
/** True if the agent is currently inside a turn. */
|
|
289
|
+
isAgentInTurn() {
|
|
290
|
+
return this.turn.isInTurn();
|
|
291
|
+
}
|
|
292
|
+
/** Current turn index (-1 if not in a turn). */
|
|
293
|
+
getCurrentTurnIndex() {
|
|
294
|
+
return this.turn.getCurrentTurnIndex();
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
/** Convenience factory — same shape as `boundaryRecorder()` /
|
|
298
|
+
* `topologyRecorder()` / `inOutRecorder()` in footprintjs. */
|
|
299
|
+
export function liveStateRecorder() {
|
|
300
|
+
return new LiveStateRecorder();
|
|
301
|
+
}
|
|
302
|
+
//# sourceMappingURL=LiveStateRecorder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LiveStateRecorder.js","sourceRoot":"","sources":["../../../../src/recorders/observability/LiveStateRecorder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6DG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAgDzD,uEAAuE;AAEvE;;;;;;;;;GASG;AACH,MAAM,OAAO,cAAe,SAAQ,oBAAkC;IAC3D,EAAE,GAAG,UAAU,CAAC;IAEzB,kEAAkE;IAClE,SAAS,CAAC,MAA2B;QACnC,MAAM,IAAI,GAAkB,EAAE,CAAC;QAC/B,IAAI,CAAC,IAAI,CACP,MAAM,CAAC,EAAE,CAAC,iCAAiC,EAAE,CAAC,KAAK,EAAE,EAAE;YACrD,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC;YACxB,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE;gBAC5C,OAAO,EAAE,EAAE;gBACX,MAAM,EAAE,CAAC;gBACT,SAAS,EAAE,CAAC,CAAC,SAAS;gBACtB,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,WAAW;aACpC,CAAC,CAAC;QACL,CAAC,CAAC,CACH,CAAC;QACF,IAAI,CAAC,IAAI,CACP,MAAM,CAAC,EAAE,CAAC,6BAA6B,EAAE,CAAC,KAAK,EAAE,EAAE;YACjD,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACrD,GAAG,CAAC;gBACJ,OAAO,EAAE,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO;gBAC1C,MAAM,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC;aACrB,CAAC,CAAC,CAAC;QACN,CAAC,CAAC,CACH,CAAC;QACF,IAAI,CAAC,IAAI,CACP,MAAM,CAAC,EAAE,CAAC,+BAA+B,EAAE,CAAC,KAAK,EAAE,EAAE;YACnD,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC/C,CAAC,CAAC,CACH,CAAC;QACF,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,wEAAwE;IACxE,UAAU;QACR,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED;;mEAE+D;IAC/D,gBAAgB;QACd,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,OAAO,EAAE,CAAC;QAC/B,IAAI,MAAgC,CAAC;QACrC,IAAI,WAAW,GAAG,CAAC,QAAQ,CAAC;QAC5B,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC;YACjD,IAAI,KAAK,CAAC,WAAW,GAAG,WAAW,EAAE,CAAC;gBACpC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;gBAChC,MAAM,GAAG,KAAK,CAAC;YACjB,CAAC;QACH,CAAC;QACD,OAAO,MAAM,EAAE,OAAO,IAAI,EAAE,CAAC;IAC/B,CAAC;CACF;AAED,uEAAuE;AAEvE;;;;;;;GAOG;AACH,MAAM,OAAO,eAAgB,SAAQ,oBAAmC;IAC7D,EAAE,GAAG,WAAW,CAAC;IAE1B,SAAS,CAAC,MAA2B;QACnC,MAAM,IAAI,GAAkB,EAAE,CAAC;QAC/B,IAAI,CAAC,IAAI,CACP,MAAM,CAAC,EAAE,CAAC,kCAAkC,EAAE,CAAC,KAAK,EAAE,EAAE;YACtD,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC;YACxB,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,EAAE;gBAC/B,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,UAAU,EAAE,CAAC,CAAC,UAAU;gBACxB,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,WAAW;aACpC,CAAC,CAAC;QACL,CAAC,CAAC,CACH,CAAC;QACF,IAAI,CAAC,IAAI,CACP,MAAM,CAAC,EAAE,CAAC,gCAAgC,EAAE,CAAC,KAAK,EAAE,EAAE;YACpD,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC9C,CAAC,CAAC,CACH,CAAC;QACF,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,+CAA+C;IAC/C,WAAW;QACT,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,2DAA2D;IAC3D,qBAAqB;QACnB,OAAO,CAAC,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IAClE,CAAC;CACF;AAED,uEAAuE;AAEvE;;;;;;;GAOG;AACH,MAAM,OAAO,oBAAqB,SAAQ,oBAAwC;IACvE,EAAE,GAAG,iBAAiB,CAAC;IAEhC,SAAS,CAAC,MAA2B;QACnC,MAAM,IAAI,GAAkB,EAAE,CAAC;QAC/B,IAAI,CAAC,IAAI,CACP,MAAM,CAAC,EAAE,CAAC,iCAAiC,EAAE,CAAC,KAAK,EAAE,EAAE;YACrD,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC;YACxB,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE;gBACtC,SAAS,EAAE,CAAC,CAAC,SAAS;gBACtB,UAAU,EAAE,CAAC,CAAC,UAAU;gBACxB,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,WAAW;aACpC,CAAC,CAAC;QACL,CAAC,CAAC,CACH,CAAC;QACF,IAAI,CAAC,IAAI,CACP,MAAM,CAAC,EAAE,CAAC,+BAA+B,EAAE,CAAC,KAAK,EAAE,EAAE;YACnD,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;QACrD,CAAC,CAAC,CACH,CAAC;QACF,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,oDAAoD;IACpD,QAAQ;QACN,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,mEAAmE;IACnE,mBAAmB;QACjB,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,OAAO,CAAC,CAAC,CAAC;QAC/B,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC;QAChB,IAAI,WAAW,GAAG,CAAC,QAAQ,CAAC;QAC5B,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC;YACjD,IAAI,KAAK,CAAC,WAAW,GAAG,WAAW,EAAE,CAAC;gBACpC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;gBAChC,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC;YAC3B,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAED,uEAAuE;AAEvE;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,OAAO,iBAAiB;IACnB,EAAE,GAAG,YAAY,CAAC;IAE3B,2BAA2B;IAClB,GAAG,CAAiB;IAC7B,iCAAiC;IACxB,IAAI,CAAkB;IAC/B,6BAA6B;IACpB,IAAI,CAAuB;IAEpC,gEAAgE;IACxD,MAAM,CAA0B;IAExC;QACE,IAAI,CAAC,GAAG,GAAG,IAAI,cAAc,EAAE,CAAC;QAChC,IAAI,CAAC,IAAI,GAAG,IAAI,eAAe,EAAE,CAAC;QAClC,IAAI,CAAC,IAAI,GAAG,IAAI,oBAAoB,EAAE,CAAC;IACzC,CAAC;IAED;;0CAEsC;IACtC,SAAS,CAAC,MAA2B;QACnC,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,MAAM,IAAI,GAAG;YACX,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC;YAC1B,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;YAC3B,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;SAC5B,CAAC;QACF,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;QACjD,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,qEAAqE;IACrE,WAAW;QACT,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,EAAE,CAAC;YACd,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;QAC1B,CAAC;IACH,CAAC;IAED;4CACwC;IACxC,KAAK;QACH,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;QACjB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAClB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;IACpB,CAAC;IAED,qEAAqE;IAErE,mDAAmD;IACnD,aAAa;QACX,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;IAC/B,CAAC;IAED,yEAAyE;IACzE,aAAa;QACX,OAAO,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IACrC,CAAC;IAED,+CAA+C;IAC/C,eAAe;QACb,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IACjC,CAAC;IAED,0CAA0C;IAC1C,qBAAqB;QACnB,OAAO,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC3C,CAAC;IAED,oDAAoD;IACpD,aAAa;QACX,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC9B,CAAC;IAED,gDAAgD;IAChD,mBAAmB;QACjB,OAAO,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC;IACzC,CAAC;CACF;AAED;+DAC+D;AAC/D,MAAM,UAAU,iBAAiB;IAC/B,OAAO,IAAI,iBAAiB,EAAE,CAAC;AACjC,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -21,9 +21,9 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
21
21
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
22
22
|
};
|
|
23
23
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
24
|
-
exports.
|
|
25
|
-
exports.
|
|
26
|
-
exports.validateMessages = exports.composeMessages = exports.defaultThinkingMessages = exports.defaultCommentaryMessages = exports.PolicyHaltError = exports.PermissionPolicy = exports.skillScopedTools = exports.gatedTools = exports.staticTools = exports.mockMcpClient = exports.mcpClient = exports.indexDocuments = exports.defineRAG = exports.identityNamespace = exports.mockEmbedder = void 0;
|
|
24
|
+
exports.renderThinkingLine = exports.selectThinkingState = exports.defaultThinkingTemplates = exports.renderCommentary = exports.extractCommentaryVars = exports.selectCommentaryKey = exports.defaultCommentaryTemplates = exports.LiveAgentTurnTracker = exports.LiveToolTracker = exports.LiveLLMTracker = exports.LiveStateRecorder = exports.liveStateRecorder = exports.boundaryRecorder = exports.BoundaryRecorder = exports.attachFlowchart = exports.LoggingDomains = exports.attachLogging = exports.attachThinking = exports.isPaused = exports.isPauseRequest = exports.askHuman = exports.pauseHere = exports.makeRunId = exports.RunnerBase = exports.typedEmit = exports.toolsRecorder = exports.skillRecorder = exports.memoryRecorder = exports.evalRecorder = exports.permissionRecorder = exports.costRecorder = exports.compositionRecorder = exports.agentRecorder = exports.streamRecorder = exports.EmitBridge = exports.BASELINE_SOURCES = exports.ENGINEERED_SOURCES = exports.isBaselineSource = exports.isEngineeredSource = exports.contextEngineering = exports.ContextRecorder = exports.parseSubflowPath = exports.buildEventMeta = exports.COMPOSITION_KEYS = exports.isInjectionKey = exports.injectionKeyForSlot = exports.INJECTION_KEYS = exports.EventDispatcher = exports.ALL_EVENT_TYPES = exports.EVENT_NAMES = void 0;
|
|
25
|
+
exports.defineMemory = exports.llmFactExtractor = exports.patternFactExtractor = exports.llmExtractor = exports.heuristicExtractor = exports.autoPipeline = exports.semanticPipeline = exports.narrativePipeline = exports.factPipeline = exports.ephemeralPipeline = exports.defaultPipeline = exports.defineFact = exports.defineSteering = exports.buildReadSkillTool = exports.buildListSkillsTool = exports.SkillRegistry = exports.resolveSurfaceMode = exports.defineSkill = exports.defineInstruction = exports.projectActiveInjection = exports.buildInjectionEngineSubflow = exports.evaluateInjections = exports.encodeSSE = exports.SSEFormatter = exports.toSSE = exports.createProvider = exports.BrowserOpenAIProvider = exports.browserOpenai = exports.BrowserAnthropicProvider = exports.browserAnthropic = exports.mock = exports.MockProvider = exports.LoopBuilder = exports.Loop = exports.ConditionalBuilder = exports.Conditional = exports.ParallelBuilder = exports.Parallel = exports.SequenceBuilder = exports.Sequence = exports.defineTool = exports.flowchartAsTool = exports.RunCheckpointError = exports.buildDefaultInstruction = exports.applyOutputSchema = exports.OutputSchemaError = exports.AgentBuilder = exports.Agent = exports.LLMCallBuilder = exports.LLMCall = void 0;
|
|
26
|
+
exports.validateMessages = exports.composeMessages = exports.defaultThinkingMessages = exports.defaultCommentaryMessages = exports.PolicyHaltError = exports.PermissionPolicy = exports.skillScopedTools = exports.gatedTools = exports.staticTools = exports.mockMcpClient = exports.mcpClient = exports.indexDocuments = exports.defineRAG = exports.identityNamespace = exports.mockEmbedder = exports.InMemoryStore = exports.SNAPSHOT_PROJECTIONS = exports.MEMORY_TIMING = exports.MEMORY_STRATEGIES = exports.MEMORY_TYPES = void 0;
|
|
27
27
|
// Side-effect imports — auto-register v2.6+ cache strategies in the
|
|
28
28
|
// strategy registry. Without these, only the wildcard NoOp is
|
|
29
29
|
// registered and `Agent.create({ provider: browserAnthropic({...}) })`
|
|
@@ -116,6 +116,12 @@ Object.defineProperty(exports, "attachFlowchart", { enumerable: true, get: funct
|
|
|
116
116
|
var BoundaryRecorder_js_1 = require("./recorders/observability/BoundaryRecorder.js");
|
|
117
117
|
Object.defineProperty(exports, "BoundaryRecorder", { enumerable: true, get: function () { return BoundaryRecorder_js_1.BoundaryRecorder; } });
|
|
118
118
|
Object.defineProperty(exports, "boundaryRecorder", { enumerable: true, get: function () { return BoundaryRecorder_js_1.boundaryRecorder; } });
|
|
119
|
+
var LiveStateRecorder_js_1 = require("./recorders/observability/LiveStateRecorder.js");
|
|
120
|
+
Object.defineProperty(exports, "liveStateRecorder", { enumerable: true, get: function () { return LiveStateRecorder_js_1.liveStateRecorder; } });
|
|
121
|
+
Object.defineProperty(exports, "LiveStateRecorder", { enumerable: true, get: function () { return LiveStateRecorder_js_1.LiveStateRecorder; } });
|
|
122
|
+
Object.defineProperty(exports, "LiveLLMTracker", { enumerable: true, get: function () { return LiveStateRecorder_js_1.LiveLLMTracker; } });
|
|
123
|
+
Object.defineProperty(exports, "LiveToolTracker", { enumerable: true, get: function () { return LiveStateRecorder_js_1.LiveToolTracker; } });
|
|
124
|
+
Object.defineProperty(exports, "LiveAgentTurnTracker", { enumerable: true, get: function () { return LiveStateRecorder_js_1.LiveAgentTurnTracker; } });
|
|
119
125
|
// Commentary — bundled prose templates + engine for narrating a run.
|
|
120
126
|
// Consumers ship their own JSON locale / brand voice via the same
|
|
121
127
|
// shape; viewers (Lens, CLI tail, log file) consume this surface.
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;;;;;;;;;;;;;;AAEH,oEAAoE;AACpE,8DAA8D;AAC9D,uEAAuE;AACvE,kEAAkE;AAClE,sEAAsE;AACtE,sDAAsD;AACtD,wDAAsD;AACtD,qDAAmD;AACnD,sDAAoD;AAsCpD,qCAAqC;AACrC,oDAAkC;AAClC,uDAAqC;AACrC,oDAM8B;AAL5B,0GAAA,WAAW,OAAA;AACX,8GAAA,eAAe,OAAA;AAMjB,aAAa;AACb,wDASgC;AAR9B,gHAAA,eAAe,OAAA;AAUjB,6BAA6B;AAC7B,sDAAoC;AAEpC,yEAAyE;AACzE,uDAAuD;AACvD,mDAK0B;AAJxB,gHAAA,cAAc,OAAA;AACd,qHAAA,mBAAmB,OAAA;AACnB,gHAAA,cAAc,OAAA;AAGhB,oEAAoE;AACpE,yEAAyE;AACzE,wEAAwE;AACxE,qEAAqE;AACrE,kDAAkD;AAClD,sDAOmC;AANjC,4GAAA,gBAAgB,OAAA;AAQlB,gBAAgB;AAChB,sDAA0F;AAAjF,8GAAA,cAAc,OAAA;AAAE,gHAAA,gBAAgB,OAAA;AAEzC,iBAAiB;AACjB,0EAAmG;AAA1F,qHAAA,eAAe,OAAA;AACxB,gFAUgD;AAT9C,2HAAA,kBAAkB,OAAA;AAClB,2HAAA,kBAAkB,OAAA;AAClB,yHAAA,gBAAgB,OAAA;AAChB,2HAAA,kBAAkB,OAAA;AAClB,yHAAA,gBAAgB,OAAA;AAMlB,gEAAoF;AAA3E,2GAAA,UAAU,OAAA;AACnB,wEAAgG;AAAvF,mHAAA,cAAc,OAAA;AACvB,sEAA6F;AAApF,iHAAA,aAAa,OAAA;AACtB,kFAGiD;AAF/C,6HAAA,mBAAmB,OAAA;AAGrB,oEAA0F;AAAjF,+GAAA,YAAY,OAAA;AACrB,gFAGgD;AAF9C,2HAAA,kBAAkB,OAAA;AAGpB,oEAA0F;AAAjF,+GAAA,YAAY,OAAA;AACrB,wEAAgG;AAAvF,mHAAA,cAAc,OAAA;AACvB,sEAA6F;AAApF,iHAAA,aAAa,OAAA;AACtB,sEAA6F;AAApF,iHAAA,aAAa,OAAA;AACtB,8DAA0D;AAAjD,yGAAA,SAAS,OAAA;AAIlB,sDAA6D;AAApD,2GAAA,UAAU,OAAA;AAAE,0GAAA,SAAS,OAAA;AAE9B,sEAAsE;AACtE,wEAAwE;AACxE,iEAAiE;AACjE,sEAAsE;AACtE,uEAAuE;AACvE,4CAMyB;AALvB,qGAAA,SAAS,OAAA;AACT,oGAAA,QAAQ,OAAA;AACR,0GAAA,cAAc,OAAA;AACd,oGAAA,QAAQ,OAAA;AAIV,4CAA4C;AAC5C,qFAIuD;AAHrD,qHAAA,cAAc,OAAA;AAIhB,mFAMsD;AALpD,mHAAA,aAAa,OAAA;AACb,oHAAA,cAAc,OAAA;AAKhB,uFAQwD;AAPtD,uHAAA,eAAe,OAAA;AAQjB,qFAgBuD;AAfrD,uHAAA,gBAAgB,OAAA;AAChB,uHAAA,gBAAgB,OAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.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.attachThinking = exports.LoggingDomains = exports.attachLogging = exports.skillRecorder = exports.permissionRecorder = exports.memoryRecorder = exports.evalRecorder = exports.costRecorder = exports.buildStepGraph = exports.attachFlowchart = exports.BoundaryRecorder = exports.boundaryRecorder = exports.agentRecorder = exports.compositionRecorder = exports.streamRecorder = exports.ContextRecorder = void 0;
|
|
35
|
+
exports.typedEmit = exports.attachThinking = exports.LoggingDomains = exports.attachLogging = exports.skillRecorder = exports.permissionRecorder = exports.memoryRecorder = exports.evalRecorder = exports.costRecorder = exports.LiveAgentTurnTracker = exports.LiveToolTracker = exports.LiveLLMTracker = exports.LiveStateRecorder = exports.liveStateRecorder = exports.buildStepGraph = exports.attachFlowchart = 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; } });
|
|
@@ -49,6 +49,12 @@ Object.defineProperty(exports, "BoundaryRecorder", { enumerable: true, get: func
|
|
|
49
49
|
var FlowchartRecorder_js_1 = require("./recorders/observability/FlowchartRecorder.js");
|
|
50
50
|
Object.defineProperty(exports, "attachFlowchart", { enumerable: true, get: function () { return FlowchartRecorder_js_1.attachFlowchart; } });
|
|
51
51
|
Object.defineProperty(exports, "buildStepGraph", { enumerable: true, get: function () { return FlowchartRecorder_js_1.buildStepGraph; } });
|
|
52
|
+
var LiveStateRecorder_js_1 = require("./recorders/observability/LiveStateRecorder.js");
|
|
53
|
+
Object.defineProperty(exports, "liveStateRecorder", { enumerable: true, get: function () { return LiveStateRecorder_js_1.liveStateRecorder; } });
|
|
54
|
+
Object.defineProperty(exports, "LiveStateRecorder", { enumerable: true, get: function () { return LiveStateRecorder_js_1.LiveStateRecorder; } });
|
|
55
|
+
Object.defineProperty(exports, "LiveLLMTracker", { enumerable: true, get: function () { return LiveStateRecorder_js_1.LiveLLMTracker; } });
|
|
56
|
+
Object.defineProperty(exports, "LiveToolTracker", { enumerable: true, get: function () { return LiveStateRecorder_js_1.LiveToolTracker; } });
|
|
57
|
+
Object.defineProperty(exports, "LiveAgentTurnTracker", { enumerable: true, get: function () { return LiveStateRecorder_js_1.LiveAgentTurnTracker; } });
|
|
52
58
|
// Tier 3 — domain dashboards
|
|
53
59
|
var CostRecorder_js_1 = require("./recorders/core/CostRecorder.js");
|
|
54
60
|
Object.defineProperty(exports, "costRecorder", { enumerable: true, get: function () { return CostRecorder_js_1.costRecorder; } });
|
package/dist/observe.js.map
CHANGED
|
@@ -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,qFAUuD;AATrD,uHAAA,gBAAgB,OAAA;AAChB,uHAAA,gBAAgB,OAAA;AASlB,uFAUwD;AATtD,uHAAA,eAAe,OAAA;AACf,sHAAA,cAAc,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,qFAUuD;AATrD,uHAAA,gBAAgB,OAAA;AAChB,uHAAA,gBAAgB,OAAA;AASlB,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,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,qFAIuD;AAHrD,qHAAA,cAAc,OAAA;AAKhB,uDAAuD;AACvD,8DAA0D;AAAjD,yGAAA,SAAS,OAAA"}
|
|
@@ -0,0 +1,310 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* LiveStateRecorder — domain trackers built on the footprintjs
|
|
4
|
+
* `BoundaryStateTracker<TState>` storage primitive (v4.17.2+).
|
|
5
|
+
*
|
|
6
|
+
* **What this answers:** "Right now, mid-run, what's happening?"
|
|
7
|
+
*
|
|
8
|
+
* - Is an LLM call in flight? What's the partial answer so far?
|
|
9
|
+
* - Is a tool executing? Which tool? What args?
|
|
10
|
+
* - Is the agent in a turn? Which turn index?
|
|
11
|
+
*
|
|
12
|
+
* All reads are O(1) — the trackers maintain incremental state via
|
|
13
|
+
* the framework's bracket-scoped storage primitive. No event-log fold,
|
|
14
|
+
* no walking arrays per render.
|
|
15
|
+
*
|
|
16
|
+
* **Mental model — observers vs. bookkeepers:**
|
|
17
|
+
*
|
|
18
|
+
* `BoundaryStateTracker<TState>` (footprintjs) = STORAGE shelf.
|
|
19
|
+
* `EventDispatcher.on(...)` (agentfootprint) = OBSERVER source.
|
|
20
|
+
*
|
|
21
|
+
* Each domain tracker (`LiveLLMTracker`, `LiveToolTracker`,
|
|
22
|
+
* `LiveAgentTurnTracker`) extends the storage shelf AND subscribes
|
|
23
|
+
* to the dispatcher. The composition `LiveStateRecorder` bundles
|
|
24
|
+
* all three so a consumer only attaches once.
|
|
25
|
+
*
|
|
26
|
+
* **Tier 1 (live) only.** Past states are not stored — when a boundary
|
|
27
|
+
* closes, its transient state clears. For time-travel queries, snapshot
|
|
28
|
+
* to a `SequenceRecorder<TState>` instead. See the BoundaryStateTracker
|
|
29
|
+
* JSDoc for the rationale.
|
|
30
|
+
*
|
|
31
|
+
* @example Use the bundled façade — one attach, three live views:
|
|
32
|
+
*
|
|
33
|
+
* ```typescript
|
|
34
|
+
* import { LiveStateRecorder } from 'agentfootprint';
|
|
35
|
+
*
|
|
36
|
+
* const liveState = new LiveStateRecorder();
|
|
37
|
+
* liveState.subscribe(runner);
|
|
38
|
+
*
|
|
39
|
+
* await runner.run({ input });
|
|
40
|
+
*
|
|
41
|
+
* // Read at any moment during the run (e.g., from another async task):
|
|
42
|
+
* liveState.isLLMInFlight(); // true between llm_start ↔ llm_end
|
|
43
|
+
* liveState.getPartialLLM(); // accumulated tokens so far
|
|
44
|
+
* liveState.isToolExecuting(); // true between tool_start ↔ tool_end
|
|
45
|
+
* liveState.isAgentInTurn(); // true between turn_start ↔ turn_end
|
|
46
|
+
*
|
|
47
|
+
* liveState.unsubscribe();
|
|
48
|
+
* ```
|
|
49
|
+
*
|
|
50
|
+
* @example Use a single tracker directly when you only need one slice:
|
|
51
|
+
*
|
|
52
|
+
* ```typescript
|
|
53
|
+
* import { LiveLLMTracker } from 'agentfootprint';
|
|
54
|
+
*
|
|
55
|
+
* const llm = new LiveLLMTracker();
|
|
56
|
+
* llm.subscribe(runner);
|
|
57
|
+
* await runner.run({ input });
|
|
58
|
+
*
|
|
59
|
+
* llm.isInFlight(); // O(1)
|
|
60
|
+
* llm.getLatestPartial(); // most recent active call's partial
|
|
61
|
+
* llm.getActive(rid)?.tokens; // tokens accumulated for one call
|
|
62
|
+
* ```
|
|
63
|
+
*/
|
|
64
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
65
|
+
exports.liveStateRecorder = exports.LiveStateRecorder = exports.LiveAgentTurnTracker = exports.LiveToolTracker = exports.LiveLLMTracker = void 0;
|
|
66
|
+
const trace_1 = require("footprintjs/trace");
|
|
67
|
+
// ─── LiveLLMTracker ─────────────────────────────────────────────────
|
|
68
|
+
/**
|
|
69
|
+
* Tracks the in-flight state of LLM calls. Subscribes to:
|
|
70
|
+
* - `agentfootprint.stream.llm_start` → opens a boundary
|
|
71
|
+
* - `agentfootprint.stream.token` → appends to partial
|
|
72
|
+
* - `agentfootprint.stream.llm_end` → closes the boundary
|
|
73
|
+
*
|
|
74
|
+
* Boundary key: `runtimeStageId` of the call-llm stage. Parallel LLM
|
|
75
|
+
* calls (Parallel composition with multiple branches) get distinct
|
|
76
|
+
* keys and are tracked independently.
|
|
77
|
+
*/
|
|
78
|
+
class LiveLLMTracker extends trace_1.BoundaryStateTracker {
|
|
79
|
+
id = 'live-llm';
|
|
80
|
+
/** Subscribe to a runner's dispatcher. Returns an Unsubscribe. */
|
|
81
|
+
subscribe(runner) {
|
|
82
|
+
const offs = [];
|
|
83
|
+
offs.push(runner.on('agentfootprint.stream.llm_start', (event) => {
|
|
84
|
+
const p = event.payload;
|
|
85
|
+
this.startBoundary(event.meta.runtimeStageId, {
|
|
86
|
+
partial: '',
|
|
87
|
+
tokens: 0,
|
|
88
|
+
iteration: p.iteration,
|
|
89
|
+
provider: p.provider,
|
|
90
|
+
model: p.model,
|
|
91
|
+
startedAtMs: event.meta.wallClockMs,
|
|
92
|
+
});
|
|
93
|
+
}));
|
|
94
|
+
offs.push(runner.on('agentfootprint.stream.token', (event) => {
|
|
95
|
+
this.updateBoundary(event.meta.runtimeStageId, (s) => ({
|
|
96
|
+
...s,
|
|
97
|
+
partial: s.partial + event.payload.content,
|
|
98
|
+
tokens: s.tokens + 1,
|
|
99
|
+
}));
|
|
100
|
+
}));
|
|
101
|
+
offs.push(runner.on('agentfootprint.stream.llm_end', (event) => {
|
|
102
|
+
this.stopBoundary(event.meta.runtimeStageId);
|
|
103
|
+
}));
|
|
104
|
+
return () => offs.forEach((off) => off());
|
|
105
|
+
}
|
|
106
|
+
/** True if any LLM call is currently in flight. Same as `hasActive`. */
|
|
107
|
+
isInFlight() {
|
|
108
|
+
return this.hasActive;
|
|
109
|
+
}
|
|
110
|
+
/** Accumulated partial content of the MOST RECENTLY started active
|
|
111
|
+
* LLM call. Empty string when no call is active. Useful for the
|
|
112
|
+
* classic "Chatbot is responding: …" live commentary line. */
|
|
113
|
+
getLatestPartial() {
|
|
114
|
+
if (!this.hasActive)
|
|
115
|
+
return '';
|
|
116
|
+
let latest;
|
|
117
|
+
let latestStart = -Infinity;
|
|
118
|
+
for (const state of this.getAllActive().values()) {
|
|
119
|
+
if (state.startedAtMs > latestStart) {
|
|
120
|
+
latestStart = state.startedAtMs;
|
|
121
|
+
latest = state;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
return latest?.partial ?? '';
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
exports.LiveLLMTracker = LiveLLMTracker;
|
|
128
|
+
// ─── LiveToolTracker ────────────────────────────────────────────────
|
|
129
|
+
/**
|
|
130
|
+
* Tracks in-flight tool calls. Subscribes to:
|
|
131
|
+
* - `agentfootprint.stream.tool_start` → opens a boundary
|
|
132
|
+
* - `agentfootprint.stream.tool_end` → closes the boundary
|
|
133
|
+
*
|
|
134
|
+
* Boundary key: `toolCallId` (more granular than `runtimeStageId` —
|
|
135
|
+
* parallel tools share one calling stage but have distinct toolCallIds).
|
|
136
|
+
*/
|
|
137
|
+
class LiveToolTracker extends trace_1.BoundaryStateTracker {
|
|
138
|
+
id = 'live-tool';
|
|
139
|
+
subscribe(runner) {
|
|
140
|
+
const offs = [];
|
|
141
|
+
offs.push(runner.on('agentfootprint.stream.tool_start', (event) => {
|
|
142
|
+
const p = event.payload;
|
|
143
|
+
this.startBoundary(p.toolCallId, {
|
|
144
|
+
toolName: p.toolName,
|
|
145
|
+
args: p.args,
|
|
146
|
+
toolCallId: p.toolCallId,
|
|
147
|
+
startedAtMs: event.meta.wallClockMs,
|
|
148
|
+
});
|
|
149
|
+
}));
|
|
150
|
+
offs.push(runner.on('agentfootprint.stream.tool_end', (event) => {
|
|
151
|
+
this.stopBoundary(event.payload.toolCallId);
|
|
152
|
+
}));
|
|
153
|
+
return () => offs.forEach((off) => off());
|
|
154
|
+
}
|
|
155
|
+
/** True if any tool is currently executing. */
|
|
156
|
+
isExecuting() {
|
|
157
|
+
return this.hasActive;
|
|
158
|
+
}
|
|
159
|
+
/** Names of tools currently executing. Empty when none. */
|
|
160
|
+
getExecutingToolNames() {
|
|
161
|
+
return [...this.getAllActive().values()].map((s) => s.toolName);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
exports.LiveToolTracker = LiveToolTracker;
|
|
165
|
+
// ─── LiveAgentTurnTracker ───────────────────────────────────────────
|
|
166
|
+
/**
|
|
167
|
+
* Tracks in-flight agent turns. Subscribes to:
|
|
168
|
+
* - `agentfootprint.agent.turn_start` → opens a boundary
|
|
169
|
+
* - `agentfootprint.agent.turn_end` → closes the boundary
|
|
170
|
+
*
|
|
171
|
+
* Boundary key: stringified `turnIndex` from the payload — survives
|
|
172
|
+
* across runner instances because turnIndex resets per-session.
|
|
173
|
+
*/
|
|
174
|
+
class LiveAgentTurnTracker extends trace_1.BoundaryStateTracker {
|
|
175
|
+
id = 'live-agent-turn';
|
|
176
|
+
subscribe(runner) {
|
|
177
|
+
const offs = [];
|
|
178
|
+
offs.push(runner.on('agentfootprint.agent.turn_start', (event) => {
|
|
179
|
+
const p = event.payload;
|
|
180
|
+
this.startBoundary(String(p.turnIndex), {
|
|
181
|
+
turnIndex: p.turnIndex,
|
|
182
|
+
userPrompt: p.userPrompt,
|
|
183
|
+
startedAtMs: event.meta.wallClockMs,
|
|
184
|
+
});
|
|
185
|
+
}));
|
|
186
|
+
offs.push(runner.on('agentfootprint.agent.turn_end', (event) => {
|
|
187
|
+
this.stopBoundary(String(event.payload.turnIndex));
|
|
188
|
+
}));
|
|
189
|
+
return () => offs.forEach((off) => off());
|
|
190
|
+
}
|
|
191
|
+
/** True if the agent is currently inside a turn. */
|
|
192
|
+
isInTurn() {
|
|
193
|
+
return this.hasActive;
|
|
194
|
+
}
|
|
195
|
+
/** Index of the most-recently started active turn (-1 if none). */
|
|
196
|
+
getCurrentTurnIndex() {
|
|
197
|
+
if (!this.hasActive)
|
|
198
|
+
return -1;
|
|
199
|
+
let latest = -1;
|
|
200
|
+
let latestStart = -Infinity;
|
|
201
|
+
for (const state of this.getAllActive().values()) {
|
|
202
|
+
if (state.startedAtMs > latestStart) {
|
|
203
|
+
latestStart = state.startedAtMs;
|
|
204
|
+
latest = state.turnIndex;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
return latest;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
exports.LiveAgentTurnTracker = LiveAgentTurnTracker;
|
|
211
|
+
// ─── LiveStateRecorder — façade composing the three trackers ────────
|
|
212
|
+
/**
|
|
213
|
+
* One-stop façade bundling `LiveLLMTracker` + `LiveToolTracker` +
|
|
214
|
+
* `LiveAgentTurnTracker`. Consumers attach this once and get O(1)
|
|
215
|
+
* reads across all three live-state slices.
|
|
216
|
+
*
|
|
217
|
+
* Use the bundled façade unless you ONLY need one slice — using a
|
|
218
|
+
* single tracker directly avoids subscribing to events you don't read.
|
|
219
|
+
*
|
|
220
|
+
* **Lifecycle**: call `subscribe(runner)` to wire all three trackers,
|
|
221
|
+
* then `unsubscribe()` to detach. `clear()` resets all transient state
|
|
222
|
+
* across the three (called automatically by consumers like Lens between
|
|
223
|
+
* runs).
|
|
224
|
+
*
|
|
225
|
+
* **What this is NOT for:**
|
|
226
|
+
* - Time-travel queries (Tier 1 only — live state)
|
|
227
|
+
* - Aggregations (use SequenceRecorder.aggregate)
|
|
228
|
+
* - Stage-level observation (use Recorder.onStageStart/End)
|
|
229
|
+
*
|
|
230
|
+
* **Composition over inheritance:** the façade does NOT extend
|
|
231
|
+
* `BoundaryStateTracker` itself — different boundary kinds need
|
|
232
|
+
* separate active maps to avoid key collisions between LLM and tool
|
|
233
|
+
* boundaries. Each sub-tracker keeps its own state.
|
|
234
|
+
*/
|
|
235
|
+
class LiveStateRecorder {
|
|
236
|
+
id = 'live-state';
|
|
237
|
+
/** LLM call live state. */
|
|
238
|
+
llm;
|
|
239
|
+
/** Tool execution live state. */
|
|
240
|
+
tool;
|
|
241
|
+
/** Agent turn live state. */
|
|
242
|
+
turn;
|
|
243
|
+
/** Active subscription disposer, if `subscribe()` is called. */
|
|
244
|
+
active;
|
|
245
|
+
constructor() {
|
|
246
|
+
this.llm = new LiveLLMTracker();
|
|
247
|
+
this.tool = new LiveToolTracker();
|
|
248
|
+
this.turn = new LiveAgentTurnTracker();
|
|
249
|
+
}
|
|
250
|
+
/** Subscribe all three trackers to one runner. Idempotent — calling
|
|
251
|
+
* twice on the same recorder unsubscribes the prior subscription
|
|
252
|
+
* first to avoid double-counting. */
|
|
253
|
+
subscribe(runner) {
|
|
254
|
+
this.unsubscribe();
|
|
255
|
+
const offs = [
|
|
256
|
+
this.llm.subscribe(runner),
|
|
257
|
+
this.tool.subscribe(runner),
|
|
258
|
+
this.turn.subscribe(runner),
|
|
259
|
+
];
|
|
260
|
+
this.active = () => offs.forEach((off) => off());
|
|
261
|
+
return this.active;
|
|
262
|
+
}
|
|
263
|
+
/** Detach all three trackers from the current runner. Idempotent. */
|
|
264
|
+
unsubscribe() {
|
|
265
|
+
if (this.active) {
|
|
266
|
+
this.active();
|
|
267
|
+
this.active = undefined;
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
/** Reset transient state across all three trackers. Called by the
|
|
271
|
+
* executor / consumer between runs. */
|
|
272
|
+
clear() {
|
|
273
|
+
this.llm.clear();
|
|
274
|
+
this.tool.clear();
|
|
275
|
+
this.turn.clear();
|
|
276
|
+
}
|
|
277
|
+
// ── Convenience reads (O(1)) ──────────────────────────────────────
|
|
278
|
+
/** True if any LLM call is currently in flight. */
|
|
279
|
+
isLLMInFlight() {
|
|
280
|
+
return this.llm.isInFlight();
|
|
281
|
+
}
|
|
282
|
+
/** Accumulated partial content of the most-recently started LLM call. */
|
|
283
|
+
getPartialLLM() {
|
|
284
|
+
return this.llm.getLatestPartial();
|
|
285
|
+
}
|
|
286
|
+
/** True if any tool is currently executing. */
|
|
287
|
+
isToolExecuting() {
|
|
288
|
+
return this.tool.isExecuting();
|
|
289
|
+
}
|
|
290
|
+
/** Names of tools currently executing. */
|
|
291
|
+
getExecutingToolNames() {
|
|
292
|
+
return this.tool.getExecutingToolNames();
|
|
293
|
+
}
|
|
294
|
+
/** True if the agent is currently inside a turn. */
|
|
295
|
+
isAgentInTurn() {
|
|
296
|
+
return this.turn.isInTurn();
|
|
297
|
+
}
|
|
298
|
+
/** Current turn index (-1 if not in a turn). */
|
|
299
|
+
getCurrentTurnIndex() {
|
|
300
|
+
return this.turn.getCurrentTurnIndex();
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
exports.LiveStateRecorder = LiveStateRecorder;
|
|
304
|
+
/** Convenience factory — same shape as `boundaryRecorder()` /
|
|
305
|
+
* `topologyRecorder()` / `inOutRecorder()` in footprintjs. */
|
|
306
|
+
function liveStateRecorder() {
|
|
307
|
+
return new LiveStateRecorder();
|
|
308
|
+
}
|
|
309
|
+
exports.liveStateRecorder = liveStateRecorder;
|
|
310
|
+
//# sourceMappingURL=LiveStateRecorder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LiveStateRecorder.js","sourceRoot":"","sources":["../../../src/recorders/observability/LiveStateRecorder.ts"],"names":[],"mappings":"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"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -37,6 +37,7 @@ export { attachThinking, type ThinkingEvent, type ThinkingOptions, } from './rec
|
|
|
37
37
|
export { attachLogging, LoggingDomains, type LoggingDomain, type LoggingLogger, type LoggingOptions, } from './recorders/observability/LoggingRecorder.js';
|
|
38
38
|
export { attachFlowchart, type ContextInjection, type FlowchartHandle, type FlowchartOptions, type StepEdge, type StepGraph, type StepNode, } from './recorders/observability/FlowchartRecorder.js';
|
|
39
39
|
export { BoundaryRecorder, boundaryRecorder, type ActorArrow, type BoundaryRecorderOptions, type DomainContextInjectedEvent, type DomainDecisionBranchEvent, type DomainEvent, type DomainForkBranchEvent, type DomainLLMEndEvent, type DomainLLMStartEvent, type DomainLoopIterationEvent, type DomainRunEvent, type DomainSubflowEvent, type DomainToolEndEvent, type DomainToolStartEvent, } from './recorders/observability/BoundaryRecorder.js';
|
|
40
|
+
export { liveStateRecorder, LiveStateRecorder, LiveLLMTracker, LiveToolTracker, LiveAgentTurnTracker, type LLMLiveState, type ToolLiveState, type AgentTurnLiveState, type LiveStateRunnerLike, } from './recorders/observability/LiveStateRecorder.js';
|
|
40
41
|
export { defaultCommentaryTemplates, selectCommentaryKey, extractCommentaryVars, renderCommentary, type CommentaryContext, type CommentaryTemplates, } from './recorders/observability/commentary/commentaryTemplates.js';
|
|
41
42
|
export { defaultThinkingTemplates, selectThinkingState, renderThinkingLine, type ThinkingContext, type ThinkingState, type ThinkingStateKind, type ThinkingTemplates, } from './recorders/observability/thinking/thinkingTemplates.js';
|
|
42
43
|
export { LLMCall, LLMCallBuilder, type LLMCallInput, type LLMCallOptions, type LLMCallOutput, } from './core/LLMCall.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/types/observe.d.ts
CHANGED
|
@@ -36,6 +36,7 @@ export { compositionRecorder, type CompositionRecorderOptions, } from './recorde
|
|
|
36
36
|
export { agentRecorder, type AgentRecorderOptions } from './recorders/core/AgentRecorder.js';
|
|
37
37
|
export { boundaryRecorder, BoundaryRecorder, type DomainEvent, type DomainLLMEndEvent, type DomainLLMStartEvent, type DomainToolStartEvent, type DomainToolEndEvent, type DomainSubflowEvent, type DomainLoopIterationEvent, } from './recorders/observability/BoundaryRecorder.js';
|
|
38
38
|
export { attachFlowchart, buildStepGraph, type StepGraph, type StepNode, type StepEdge, type SlotBoundary, type ContextInjection, type FlowchartOptions, type FlowchartHandle, } from './recorders/observability/FlowchartRecorder.js';
|
|
39
|
+
export { liveStateRecorder, LiveStateRecorder, LiveLLMTracker, LiveToolTracker, LiveAgentTurnTracker, type LLMLiveState, type ToolLiveState, type AgentTurnLiveState, type LiveStateRunnerLike, } from './recorders/observability/LiveStateRecorder.js';
|
|
39
40
|
export { costRecorder, type CostRecorderOptions } from './recorders/core/CostRecorder.js';
|
|
40
41
|
export { evalRecorder, type EvalRecorderOptions } from './recorders/core/EvalRecorder.js';
|
|
41
42
|
export { memoryRecorder, type MemoryRecorderOptions } from './recorders/core/MemoryRecorder.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"observe.d.ts","sourceRoot":"","sources":["../../src/observe.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAGH,OAAO,EAAE,eAAe,EAAE,KAAK,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AACnG,OAAO,EAAE,cAAc,EAAE,KAAK,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAGhG,OAAO,EACL,mBAAmB,EACnB,KAAK,0BAA0B,GAChC,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAC7F,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,wBAAwB,GAC9B,MAAM,+CAA+C,CAAC;AACvD,OAAO,EACL,eAAe,EACf,cAAc,EACd,KAAK,SAAS,EACd,KAAK,QAAQ,EACb,KAAK,QAAQ,EACb,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,eAAe,GACrB,MAAM,gDAAgD,CAAC;AAGxD,OAAO,EAAE,YAAY,EAAE,KAAK,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAC1F,OAAO,EAAE,YAAY,EAAE,KAAK,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAC1F,OAAO,EAAE,cAAc,EAAE,KAAK,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAChG,OAAO,EACL,kBAAkB,EAClB,KAAK,yBAAyB,GAC/B,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAC7F,OAAO,EACL,aAAa,EACb,cAAc,EACd,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,cAAc,GACpB,MAAM,8CAA8C,CAAC;AACtD,OAAO,EACL,cAAc,EACd,KAAK,aAAa,EAClB,KAAK,eAAe,GACrB,MAAM,+CAA+C,CAAC;AAGvD,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC"}
|
|
1
|
+
{"version":3,"file":"observe.d.ts","sourceRoot":"","sources":["../../src/observe.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAGH,OAAO,EAAE,eAAe,EAAE,KAAK,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AACnG,OAAO,EAAE,cAAc,EAAE,KAAK,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAGhG,OAAO,EACL,mBAAmB,EACnB,KAAK,0BAA0B,GAChC,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAC7F,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,wBAAwB,GAC9B,MAAM,+CAA+C,CAAC;AACvD,OAAO,EACL,eAAe,EACf,cAAc,EACd,KAAK,SAAS,EACd,KAAK,QAAQ,EACb,KAAK,QAAQ,EACb,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,eAAe,GACrB,MAAM,gDAAgD,CAAC;AACxD,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,oBAAoB,EACpB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,GACzB,MAAM,gDAAgD,CAAC;AAGxD,OAAO,EAAE,YAAY,EAAE,KAAK,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAC1F,OAAO,EAAE,YAAY,EAAE,KAAK,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAC1F,OAAO,EAAE,cAAc,EAAE,KAAK,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAChG,OAAO,EACL,kBAAkB,EAClB,KAAK,yBAAyB,GAC/B,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAC7F,OAAO,EACL,aAAa,EACb,cAAc,EACd,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,cAAc,GACpB,MAAM,8CAA8C,CAAC;AACtD,OAAO,EACL,cAAc,EACd,KAAK,aAAa,EAClB,KAAK,eAAe,GACrB,MAAM,+CAA+C,CAAC;AAGvD,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC"}
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LiveStateRecorder — domain trackers built on the footprintjs
|
|
3
|
+
* `BoundaryStateTracker<TState>` storage primitive (v4.17.2+).
|
|
4
|
+
*
|
|
5
|
+
* **What this answers:** "Right now, mid-run, what's happening?"
|
|
6
|
+
*
|
|
7
|
+
* - Is an LLM call in flight? What's the partial answer so far?
|
|
8
|
+
* - Is a tool executing? Which tool? What args?
|
|
9
|
+
* - Is the agent in a turn? Which turn index?
|
|
10
|
+
*
|
|
11
|
+
* All reads are O(1) — the trackers maintain incremental state via
|
|
12
|
+
* the framework's bracket-scoped storage primitive. No event-log fold,
|
|
13
|
+
* no walking arrays per render.
|
|
14
|
+
*
|
|
15
|
+
* **Mental model — observers vs. bookkeepers:**
|
|
16
|
+
*
|
|
17
|
+
* `BoundaryStateTracker<TState>` (footprintjs) = STORAGE shelf.
|
|
18
|
+
* `EventDispatcher.on(...)` (agentfootprint) = OBSERVER source.
|
|
19
|
+
*
|
|
20
|
+
* Each domain tracker (`LiveLLMTracker`, `LiveToolTracker`,
|
|
21
|
+
* `LiveAgentTurnTracker`) extends the storage shelf AND subscribes
|
|
22
|
+
* to the dispatcher. The composition `LiveStateRecorder` bundles
|
|
23
|
+
* all three so a consumer only attaches once.
|
|
24
|
+
*
|
|
25
|
+
* **Tier 1 (live) only.** Past states are not stored — when a boundary
|
|
26
|
+
* closes, its transient state clears. For time-travel queries, snapshot
|
|
27
|
+
* to a `SequenceRecorder<TState>` instead. See the BoundaryStateTracker
|
|
28
|
+
* JSDoc for the rationale.
|
|
29
|
+
*
|
|
30
|
+
* @example Use the bundled façade — one attach, three live views:
|
|
31
|
+
*
|
|
32
|
+
* ```typescript
|
|
33
|
+
* import { LiveStateRecorder } from 'agentfootprint';
|
|
34
|
+
*
|
|
35
|
+
* const liveState = new LiveStateRecorder();
|
|
36
|
+
* liveState.subscribe(runner);
|
|
37
|
+
*
|
|
38
|
+
* await runner.run({ input });
|
|
39
|
+
*
|
|
40
|
+
* // Read at any moment during the run (e.g., from another async task):
|
|
41
|
+
* liveState.isLLMInFlight(); // true between llm_start ↔ llm_end
|
|
42
|
+
* liveState.getPartialLLM(); // accumulated tokens so far
|
|
43
|
+
* liveState.isToolExecuting(); // true between tool_start ↔ tool_end
|
|
44
|
+
* liveState.isAgentInTurn(); // true between turn_start ↔ turn_end
|
|
45
|
+
*
|
|
46
|
+
* liveState.unsubscribe();
|
|
47
|
+
* ```
|
|
48
|
+
*
|
|
49
|
+
* @example Use a single tracker directly when you only need one slice:
|
|
50
|
+
*
|
|
51
|
+
* ```typescript
|
|
52
|
+
* import { LiveLLMTracker } from 'agentfootprint';
|
|
53
|
+
*
|
|
54
|
+
* const llm = new LiveLLMTracker();
|
|
55
|
+
* llm.subscribe(runner);
|
|
56
|
+
* await runner.run({ input });
|
|
57
|
+
*
|
|
58
|
+
* llm.isInFlight(); // O(1)
|
|
59
|
+
* llm.getLatestPartial(); // most recent active call's partial
|
|
60
|
+
* llm.getActive(rid)?.tokens; // tokens accumulated for one call
|
|
61
|
+
* ```
|
|
62
|
+
*/
|
|
63
|
+
import { BoundaryStateTracker } from 'footprintjs/trace';
|
|
64
|
+
import type { Unsubscribe } from '../../events/dispatcher.js';
|
|
65
|
+
import type { AgentfootprintEvent, AgentfootprintEventType } from '../../events/registry.js';
|
|
66
|
+
/** Minimal Runner shape this recorder needs — only the public `on(...)`
|
|
67
|
+
* subscription method, so the same trackers can attach to a real Runner
|
|
68
|
+
* (Agent, etc.) OR to a test mock without exposing the protected
|
|
69
|
+
* internal dispatcher. */
|
|
70
|
+
export interface LiveStateRunnerLike {
|
|
71
|
+
on<K extends AgentfootprintEventType>(type: K, listener: (event: Extract<AgentfootprintEvent, {
|
|
72
|
+
type: K;
|
|
73
|
+
}>) => void): Unsubscribe;
|
|
74
|
+
}
|
|
75
|
+
/** Live transient state of one in-flight LLM call. */
|
|
76
|
+
export interface LLMLiveState {
|
|
77
|
+
/** Accumulated content from `stream.token` events since `llm_start`. */
|
|
78
|
+
readonly partial: string;
|
|
79
|
+
/** Number of tokens received so far. */
|
|
80
|
+
readonly tokens: number;
|
|
81
|
+
/** Iteration index (from the LLMStartPayload). */
|
|
82
|
+
readonly iteration: number;
|
|
83
|
+
/** Provider name (e.g., 'anthropic', 'openai'). */
|
|
84
|
+
readonly provider: string;
|
|
85
|
+
/** Model id. */
|
|
86
|
+
readonly model: string;
|
|
87
|
+
/** Wall-clock ms when llm_start fired. */
|
|
88
|
+
readonly startedAtMs: number;
|
|
89
|
+
}
|
|
90
|
+
/** Live transient state of one in-flight tool call. */
|
|
91
|
+
export interface ToolLiveState {
|
|
92
|
+
readonly toolName: string;
|
|
93
|
+
readonly args: Readonly<Record<string, unknown>>;
|
|
94
|
+
readonly toolCallId: string;
|
|
95
|
+
readonly startedAtMs: number;
|
|
96
|
+
}
|
|
97
|
+
/** Live transient state of one in-flight agent turn. */
|
|
98
|
+
export interface AgentTurnLiveState {
|
|
99
|
+
readonly turnIndex: number;
|
|
100
|
+
readonly userPrompt: string;
|
|
101
|
+
readonly startedAtMs: number;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Tracks the in-flight state of LLM calls. Subscribes to:
|
|
105
|
+
* - `agentfootprint.stream.llm_start` → opens a boundary
|
|
106
|
+
* - `agentfootprint.stream.token` → appends to partial
|
|
107
|
+
* - `agentfootprint.stream.llm_end` → closes the boundary
|
|
108
|
+
*
|
|
109
|
+
* Boundary key: `runtimeStageId` of the call-llm stage. Parallel LLM
|
|
110
|
+
* calls (Parallel composition with multiple branches) get distinct
|
|
111
|
+
* keys and are tracked independently.
|
|
112
|
+
*/
|
|
113
|
+
export declare class LiveLLMTracker extends BoundaryStateTracker<LLMLiveState> {
|
|
114
|
+
readonly id = "live-llm";
|
|
115
|
+
/** Subscribe to a runner's dispatcher. Returns an Unsubscribe. */
|
|
116
|
+
subscribe(runner: LiveStateRunnerLike): Unsubscribe;
|
|
117
|
+
/** True if any LLM call is currently in flight. Same as `hasActive`. */
|
|
118
|
+
isInFlight(): boolean;
|
|
119
|
+
/** Accumulated partial content of the MOST RECENTLY started active
|
|
120
|
+
* LLM call. Empty string when no call is active. Useful for the
|
|
121
|
+
* classic "Chatbot is responding: …" live commentary line. */
|
|
122
|
+
getLatestPartial(): string;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Tracks in-flight tool calls. Subscribes to:
|
|
126
|
+
* - `agentfootprint.stream.tool_start` → opens a boundary
|
|
127
|
+
* - `agentfootprint.stream.tool_end` → closes the boundary
|
|
128
|
+
*
|
|
129
|
+
* Boundary key: `toolCallId` (more granular than `runtimeStageId` —
|
|
130
|
+
* parallel tools share one calling stage but have distinct toolCallIds).
|
|
131
|
+
*/
|
|
132
|
+
export declare class LiveToolTracker extends BoundaryStateTracker<ToolLiveState> {
|
|
133
|
+
readonly id = "live-tool";
|
|
134
|
+
subscribe(runner: LiveStateRunnerLike): Unsubscribe;
|
|
135
|
+
/** True if any tool is currently executing. */
|
|
136
|
+
isExecuting(): boolean;
|
|
137
|
+
/** Names of tools currently executing. Empty when none. */
|
|
138
|
+
getExecutingToolNames(): readonly string[];
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Tracks in-flight agent turns. Subscribes to:
|
|
142
|
+
* - `agentfootprint.agent.turn_start` → opens a boundary
|
|
143
|
+
* - `agentfootprint.agent.turn_end` → closes the boundary
|
|
144
|
+
*
|
|
145
|
+
* Boundary key: stringified `turnIndex` from the payload — survives
|
|
146
|
+
* across runner instances because turnIndex resets per-session.
|
|
147
|
+
*/
|
|
148
|
+
export declare class LiveAgentTurnTracker extends BoundaryStateTracker<AgentTurnLiveState> {
|
|
149
|
+
readonly id = "live-agent-turn";
|
|
150
|
+
subscribe(runner: LiveStateRunnerLike): Unsubscribe;
|
|
151
|
+
/** True if the agent is currently inside a turn. */
|
|
152
|
+
isInTurn(): boolean;
|
|
153
|
+
/** Index of the most-recently started active turn (-1 if none). */
|
|
154
|
+
getCurrentTurnIndex(): number;
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* One-stop façade bundling `LiveLLMTracker` + `LiveToolTracker` +
|
|
158
|
+
* `LiveAgentTurnTracker`. Consumers attach this once and get O(1)
|
|
159
|
+
* reads across all three live-state slices.
|
|
160
|
+
*
|
|
161
|
+
* Use the bundled façade unless you ONLY need one slice — using a
|
|
162
|
+
* single tracker directly avoids subscribing to events you don't read.
|
|
163
|
+
*
|
|
164
|
+
* **Lifecycle**: call `subscribe(runner)` to wire all three trackers,
|
|
165
|
+
* then `unsubscribe()` to detach. `clear()` resets all transient state
|
|
166
|
+
* across the three (called automatically by consumers like Lens between
|
|
167
|
+
* runs).
|
|
168
|
+
*
|
|
169
|
+
* **What this is NOT for:**
|
|
170
|
+
* - Time-travel queries (Tier 1 only — live state)
|
|
171
|
+
* - Aggregations (use SequenceRecorder.aggregate)
|
|
172
|
+
* - Stage-level observation (use Recorder.onStageStart/End)
|
|
173
|
+
*
|
|
174
|
+
* **Composition over inheritance:** the façade does NOT extend
|
|
175
|
+
* `BoundaryStateTracker` itself — different boundary kinds need
|
|
176
|
+
* separate active maps to avoid key collisions between LLM and tool
|
|
177
|
+
* boundaries. Each sub-tracker keeps its own state.
|
|
178
|
+
*/
|
|
179
|
+
export declare class LiveStateRecorder {
|
|
180
|
+
readonly id = "live-state";
|
|
181
|
+
/** LLM call live state. */
|
|
182
|
+
readonly llm: LiveLLMTracker;
|
|
183
|
+
/** Tool execution live state. */
|
|
184
|
+
readonly tool: LiveToolTracker;
|
|
185
|
+
/** Agent turn live state. */
|
|
186
|
+
readonly turn: LiveAgentTurnTracker;
|
|
187
|
+
/** Active subscription disposer, if `subscribe()` is called. */
|
|
188
|
+
private active;
|
|
189
|
+
constructor();
|
|
190
|
+
/** Subscribe all three trackers to one runner. Idempotent — calling
|
|
191
|
+
* twice on the same recorder unsubscribes the prior subscription
|
|
192
|
+
* first to avoid double-counting. */
|
|
193
|
+
subscribe(runner: LiveStateRunnerLike): Unsubscribe;
|
|
194
|
+
/** Detach all three trackers from the current runner. Idempotent. */
|
|
195
|
+
unsubscribe(): void;
|
|
196
|
+
/** Reset transient state across all three trackers. Called by the
|
|
197
|
+
* executor / consumer between runs. */
|
|
198
|
+
clear(): void;
|
|
199
|
+
/** True if any LLM call is currently in flight. */
|
|
200
|
+
isLLMInFlight(): boolean;
|
|
201
|
+
/** Accumulated partial content of the most-recently started LLM call. */
|
|
202
|
+
getPartialLLM(): string;
|
|
203
|
+
/** True if any tool is currently executing. */
|
|
204
|
+
isToolExecuting(): boolean;
|
|
205
|
+
/** Names of tools currently executing. */
|
|
206
|
+
getExecutingToolNames(): readonly string[];
|
|
207
|
+
/** True if the agent is currently inside a turn. */
|
|
208
|
+
isAgentInTurn(): boolean;
|
|
209
|
+
/** Current turn index (-1 if not in a turn). */
|
|
210
|
+
getCurrentTurnIndex(): number;
|
|
211
|
+
}
|
|
212
|
+
/** Convenience factory — same shape as `boundaryRecorder()` /
|
|
213
|
+
* `topologyRecorder()` / `inOutRecorder()` in footprintjs. */
|
|
214
|
+
export declare function liveStateRecorder(): LiveStateRecorder;
|
|
215
|
+
//# sourceMappingURL=LiveStateRecorder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LiveStateRecorder.d.ts","sourceRoot":"","sources":["../../../../src/recorders/observability/LiveStateRecorder.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agentfootprint",
|
|
3
|
-
"version": "2.14.
|
|
3
|
+
"version": "2.14.2",
|
|
4
4
|
"description": "The explainable agent framework — build AI agents you can explain, audit, and trust. Built on footprintjs.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Sanjay Krishna Anbalagan",
|
|
@@ -184,7 +184,7 @@
|
|
|
184
184
|
"@aws-sdk/client-xray": "*",
|
|
185
185
|
"@modelcontextprotocol/sdk": "*",
|
|
186
186
|
"@opentelemetry/api": "*",
|
|
187
|
-
"footprintjs": ">=4.17.
|
|
187
|
+
"footprintjs": ">=4.17.2",
|
|
188
188
|
"ioredis": "*",
|
|
189
189
|
"openai": "*",
|
|
190
190
|
"zod": "*"
|
|
@@ -228,7 +228,7 @@
|
|
|
228
228
|
"@vitest/coverage-v8": "^4.1.5",
|
|
229
229
|
"eslint": "^8.44.0",
|
|
230
230
|
"eslint-config-prettier": "^6.15.0",
|
|
231
|
-
"footprintjs": "^4.17.
|
|
231
|
+
"footprintjs": "^4.17.2",
|
|
232
232
|
"prettier": "^2.8.1",
|
|
233
233
|
"typedoc": "^0.28.19",
|
|
234
234
|
"typedoc-plugin-markdown": "^4.11.0",
|