pi-agent-flow 1.8.1 → 1.8.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -30
- package/agents/audit.md +1 -2
- package/agents/build.md +1 -0
- package/agents/craft.md +12 -8
- package/agents/debug.md +2 -2
- package/agents/ideas.md +1 -0
- package/agents/scout.md +1 -0
- package/dist/agents.d.ts +41 -0
- package/dist/agents.d.ts.map +1 -0
- package/dist/agents.js +283 -0
- package/dist/agents.js.map +1 -0
- package/dist/batch/batch-bash.d.ts +87 -0
- package/dist/batch/batch-bash.d.ts.map +1 -0
- package/dist/batch/batch-bash.js +369 -0
- package/dist/batch/batch-bash.js.map +1 -0
- package/dist/batch/constants.d.ts +100 -0
- package/dist/batch/constants.d.ts.map +1 -0
- package/dist/batch/constants.js +15 -0
- package/dist/batch/constants.js.map +1 -0
- package/dist/batch/execute.d.ts +21 -0
- package/dist/batch/execute.d.ts.map +1 -0
- package/dist/batch/execute.js +440 -0
- package/dist/batch/execute.js.map +1 -0
- package/dist/batch/fuzzy-edit.d.ts +29 -0
- package/dist/batch/fuzzy-edit.d.ts.map +1 -0
- package/dist/batch/fuzzy-edit.js +257 -0
- package/dist/batch/fuzzy-edit.js.map +1 -0
- package/dist/batch/index.d.ts +85 -0
- package/dist/batch/index.d.ts.map +1 -0
- package/dist/batch/index.js +422 -0
- package/dist/batch/index.js.map +1 -0
- package/dist/batch/render.d.ts +14 -0
- package/dist/batch/render.d.ts.map +1 -0
- package/dist/batch/render.js +74 -0
- package/dist/batch/render.js.map +1 -0
- package/dist/batch/symbols.d.ts +9 -0
- package/dist/batch/symbols.d.ts.map +1 -0
- package/dist/batch/symbols.js +310 -0
- package/dist/batch/symbols.js.map +1 -0
- package/dist/batch.d.ts +12 -0
- package/dist/batch.d.ts.map +1 -0
- package/dist/batch.js +11 -0
- package/dist/batch.js.map +1 -0
- package/dist/cli-args.d.ts +27 -0
- package/dist/cli-args.d.ts.map +1 -0
- package/dist/cli-args.js +265 -0
- package/dist/cli-args.js.map +1 -0
- package/dist/config.d.ts +58 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +296 -0
- package/dist/config.js.map +1 -0
- package/dist/depth.d.ts +25 -0
- package/dist/depth.d.ts.map +1 -0
- package/dist/depth.js +160 -0
- package/dist/depth.js.map +1 -0
- package/dist/executor.d.ts +87 -0
- package/dist/executor.d.ts.map +1 -0
- package/dist/executor.js +295 -0
- package/dist/executor.js.map +1 -0
- package/dist/flow-prompt.d.ts +23 -0
- package/dist/flow-prompt.d.ts.map +1 -0
- package/dist/flow-prompt.js +99 -0
- package/dist/flow-prompt.js.map +1 -0
- package/dist/flow.d.ts +76 -0
- package/dist/flow.d.ts.map +1 -0
- package/dist/flow.js +704 -0
- package/dist/flow.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +327 -0
- package/dist/index.js.map +1 -0
- package/dist/reasoning-strip.d.ts +26 -0
- package/dist/reasoning-strip.d.ts.map +1 -0
- package/dist/reasoning-strip.js +58 -0
- package/dist/reasoning-strip.js.map +1 -0
- package/dist/render-utils.d.ts +42 -0
- package/dist/render-utils.d.ts.map +1 -0
- package/dist/render-utils.js +182 -0
- package/dist/render-utils.js.map +1 -0
- package/dist/render.d.ts +24 -0
- package/dist/render.d.ts.map +1 -0
- package/dist/render.js +409 -0
- package/dist/render.js.map +1 -0
- package/dist/runner-events.d.ts +59 -0
- package/dist/runner-events.d.ts.map +1 -0
- package/dist/runner-events.js +539 -0
- package/dist/runner-events.js.map +1 -0
- package/dist/session-mode.d.ts +10 -0
- package/dist/session-mode.d.ts.map +1 -0
- package/dist/session-mode.js +25 -0
- package/dist/session-mode.js.map +1 -0
- package/dist/settings-resolver.d.ts +28 -0
- package/dist/settings-resolver.d.ts.map +1 -0
- package/dist/settings-resolver.js +148 -0
- package/dist/settings-resolver.js.map +1 -0
- package/dist/sliding-prompt.d.ts +40 -0
- package/dist/sliding-prompt.d.ts.map +1 -0
- package/dist/sliding-prompt.js +121 -0
- package/dist/sliding-prompt.js.map +1 -0
- package/dist/snapshot.d.ts +29 -0
- package/dist/snapshot.d.ts.map +1 -0
- package/dist/snapshot.js +199 -0
- package/dist/snapshot.js.map +1 -0
- package/dist/structured-output.d.ts +36 -0
- package/dist/structured-output.d.ts.map +1 -0
- package/dist/structured-output.js +244 -0
- package/dist/structured-output.js.map +1 -0
- package/dist/timed-bash.d.ts +45 -0
- package/dist/timed-bash.d.ts.map +1 -0
- package/dist/timed-bash.js +219 -0
- package/dist/timed-bash.js.map +1 -0
- package/dist/tool-utils.d.ts +20 -0
- package/dist/tool-utils.d.ts.map +1 -0
- package/dist/tool-utils.js +38 -0
- package/dist/tool-utils.js.map +1 -0
- package/dist/transitions.d.ts +39 -0
- package/dist/transitions.d.ts.map +1 -0
- package/dist/transitions.js +59 -0
- package/dist/transitions.js.map +1 -0
- package/dist/types.d.ts +207 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +143 -0
- package/dist/types.js.map +1 -0
- package/dist/web-tool.d.ts +35 -0
- package/dist/web-tool.d.ts.map +1 -0
- package/dist/web-tool.js +545 -0
- package/dist/web-tool.js.map +1 -0
- package/package.json +7 -5
- package/src/agents.ts +0 -299
- package/src/ambient.d.ts +0 -107
- package/src/batch/batch-bash.ts +0 -443
- package/src/batch/constants.ts +0 -128
- package/src/batch/execute.ts +0 -551
- package/src/batch/fuzzy-edit.ts +0 -323
- package/src/batch/index.ts +0 -494
- package/src/batch/render.ts +0 -81
- package/src/batch/symbols.ts +0 -341
- package/src/batch.ts +0 -28
- package/src/cli-args.ts +0 -315
- package/src/config.ts +0 -391
- package/src/executor.ts +0 -445
- package/src/flow.ts +0 -834
- package/src/hooks.ts +0 -294
- package/src/index.ts +0 -1132
- package/src/render-utils.ts +0 -205
- package/src/render.ts +0 -524
- package/src/runner-events.ts +0 -692
- package/src/session-mode.ts +0 -33
- package/src/sliding-prompt.ts +0 -144
- package/src/structured-output.ts +0 -195
- package/src/timed-bash.ts +0 -270
- package/src/transitions.ts +0 -86
- package/src/types.ts +0 -386
- package/src/web-tool.ts +0 -663
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render.js","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Helpers for parsing Pi JSON mode events and summarizing flow results.
|
|
3
|
+
*/
|
|
4
|
+
import type { Message } from "@mariozechner/pi-ai";
|
|
5
|
+
/**
|
|
6
|
+
* Drain the accumulated streaming text buffer and return it.
|
|
7
|
+
* Updates the last-emitted word count for threshold tracking.
|
|
8
|
+
*/
|
|
9
|
+
export declare function drainStreamingText(result: object): string;
|
|
10
|
+
/**
|
|
11
|
+
* Update the EMA-smoothed tokens-per-second based on a new sample.
|
|
12
|
+
* Called from emitUpdate() with the estimated output tokens since last emit.
|
|
13
|
+
* Accumulates tokens in pendingTokens and only computes a rate when
|
|
14
|
+
* MIN_TPS_SAMPLE_MS has elapsed. Applies MAX_INSTANT_TPS cap before EMA.
|
|
15
|
+
*/
|
|
16
|
+
export declare function updateSmoothedTps(result: object, estimatedTokens: number): void;
|
|
17
|
+
/**
|
|
18
|
+
* Return the current EMA-smoothed tokens-per-second value.
|
|
19
|
+
*/
|
|
20
|
+
export declare function drainSmoothedTps(result: object): number;
|
|
21
|
+
/**
|
|
22
|
+
* Drain the current streaming estimate and return estimated output tokens.
|
|
23
|
+
* Returns 0 when no streaming has occurred.
|
|
24
|
+
*/
|
|
25
|
+
export declare function drainStreamingEstimate(result: object): number;
|
|
26
|
+
/**
|
|
27
|
+
* Return the estimated context tokens: last known real totalTokens (baseline)
|
|
28
|
+
* plus any additional output tokens estimated since that baseline was set.
|
|
29
|
+
* Returns 0 before the first message_end when no baseline exists yet,
|
|
30
|
+
* in which case the caller should fall back to the streaming output estimate.
|
|
31
|
+
*/
|
|
32
|
+
export declare function drainCtxEstimate(result: object): number;
|
|
33
|
+
export declare function stableStringify(value: unknown, seen?: WeakSet<object>): string;
|
|
34
|
+
export interface FlowResult {
|
|
35
|
+
messages: Message[];
|
|
36
|
+
model?: string;
|
|
37
|
+
stopReason?: string;
|
|
38
|
+
exitCode?: number;
|
|
39
|
+
stderr?: string;
|
|
40
|
+
errorMessage?: string;
|
|
41
|
+
usage?: {
|
|
42
|
+
input: number;
|
|
43
|
+
output: number;
|
|
44
|
+
cacheRead: number;
|
|
45
|
+
cacheWrite: number;
|
|
46
|
+
cost: number;
|
|
47
|
+
totalTokens?: number;
|
|
48
|
+
turns: number;
|
|
49
|
+
toolCalls: number;
|
|
50
|
+
smoothedTps?: number;
|
|
51
|
+
contextTokens: number;
|
|
52
|
+
};
|
|
53
|
+
sawAgentEnd?: boolean;
|
|
54
|
+
streamingText?: string;
|
|
55
|
+
}
|
|
56
|
+
export declare function processFlowJsonLine(line: string, result: FlowResult): boolean;
|
|
57
|
+
export declare function getFlowFinalText(messages: Message[]): string;
|
|
58
|
+
export declare function getFlowSummaryText(result?: FlowResult | null): string;
|
|
59
|
+
//# sourceMappingURL=runner-events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runner-events.d.ts","sourceRoot":"","sources":["../src/runner-events.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAuCnD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAOzD;AA0DD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,IAAI,CAgD/E;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAGvD;AAsCD;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAK7D;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAIvD;AAkBD,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,kBAAwB,GAAG,MAAM,CAsBpF;AAkCD,MAAM,WAAW,UAAU;IAC1B,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,aAAa,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;CACvB;AAoID,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAW7E;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,CAuB5D;AA0GD,wBAAgB,kBAAkB,CAAC,MAAM,CAAC,EAAE,UAAU,GAAG,IAAI,GAAG,MAAM,CA6DrE"}
|
|
@@ -0,0 +1,539 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Helpers for parsing Pi JSON mode events and summarizing flow results.
|
|
3
|
+
*/
|
|
4
|
+
// WeakMap-based side tables to avoid polluting caller objects and survive frozen/sealed objects.
|
|
5
|
+
const seenSignaturesMap = new WeakMap();
|
|
6
|
+
const streamingTextBufferMap = new WeakMap();
|
|
7
|
+
const lastEmittedWordCountMap = new WeakMap();
|
|
8
|
+
const streamingEstimateMap = new WeakMap();
|
|
9
|
+
const smoothedTpsMap = new WeakMap();
|
|
10
|
+
const lastEmitTimeMap = new WeakMap();
|
|
11
|
+
const pendingTokensMap = new WeakMap();
|
|
12
|
+
const pauseAfterNextEmitMap = new WeakMap();
|
|
13
|
+
const ctxBaselineMap = new WeakMap();
|
|
14
|
+
const ctxStreamingCharsMap = new WeakMap();
|
|
15
|
+
function getSeenFlowMessageSignatures(result) {
|
|
16
|
+
if (!seenSignaturesMap.has(result)) {
|
|
17
|
+
seenSignaturesMap.set(result, new Set());
|
|
18
|
+
}
|
|
19
|
+
return seenSignaturesMap.get(result);
|
|
20
|
+
}
|
|
21
|
+
function getStreamingTextState(result) {
|
|
22
|
+
if (!streamingTextBufferMap.has(result)) {
|
|
23
|
+
streamingTextBufferMap.set(result, "");
|
|
24
|
+
lastEmittedWordCountMap.set(result, 0);
|
|
25
|
+
}
|
|
26
|
+
return {
|
|
27
|
+
get buffer() { return streamingTextBufferMap.get(result); },
|
|
28
|
+
set buffer(v) { streamingTextBufferMap.set(result, v); },
|
|
29
|
+
get lastEmittedWordCount() { return lastEmittedWordCountMap.get(result); },
|
|
30
|
+
set lastEmittedWordCount(v) { lastEmittedWordCountMap.set(result, v); },
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Drain the accumulated streaming text buffer and return it.
|
|
35
|
+
* Updates the last-emitted word count for threshold tracking.
|
|
36
|
+
*/
|
|
37
|
+
export function drainStreamingText(result) {
|
|
38
|
+
const state = getStreamingTextState(result);
|
|
39
|
+
const buf = state.buffer;
|
|
40
|
+
if (!buf)
|
|
41
|
+
return "";
|
|
42
|
+
state.buffer = "";
|
|
43
|
+
state.lastEmittedWordCount = 0;
|
|
44
|
+
return buf;
|
|
45
|
+
}
|
|
46
|
+
// ---------------------------------------------------------------------------
|
|
47
|
+
// Streaming token estimate
|
|
48
|
+
// ---------------------------------------------------------------------------
|
|
49
|
+
/** Chars per token heuristic for output estimation. */
|
|
50
|
+
const CHARS_PER_TOKEN = 4;
|
|
51
|
+
/** Minimum elapsed ms between TPS samples. */
|
|
52
|
+
const MIN_TPS_SAMPLE_MS = 50;
|
|
53
|
+
/** Cap on instantaneous TPS to suppress burst artifacts. */
|
|
54
|
+
const MAX_INSTANT_TPS = 300;
|
|
55
|
+
/** Calibration scale to align heuristic tokens with empirical display range. */
|
|
56
|
+
const TPS_CALIBRATION = 1.0;
|
|
57
|
+
/** EMA smoothing factor for tokens-per-second (higher = more responsive). */
|
|
58
|
+
const EMA_ALPHA = 0.35;
|
|
59
|
+
/** Emit streaming text as soon as any non-empty delta arrives. */
|
|
60
|
+
const STREAMING_EMIT_CHARS = 1;
|
|
61
|
+
function getStreamingEstimate(result) {
|
|
62
|
+
if (!streamingEstimateMap.has(result)) {
|
|
63
|
+
streamingEstimateMap.set(result, { chars: 0 });
|
|
64
|
+
}
|
|
65
|
+
return streamingEstimateMap.get(result);
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Lazily initialize TPS tracking state on the result object.
|
|
69
|
+
* Returns an accessor object backed by a WeakMap so frozen/sealed
|
|
70
|
+
* objects do not throw.
|
|
71
|
+
*/
|
|
72
|
+
function getTpsState(result) {
|
|
73
|
+
if (!smoothedTpsMap.has(result)) {
|
|
74
|
+
smoothedTpsMap.set(result, 0);
|
|
75
|
+
lastEmitTimeMap.set(result, 0);
|
|
76
|
+
pendingTokensMap.set(result, 0);
|
|
77
|
+
pauseAfterNextEmitMap.set(result, false);
|
|
78
|
+
}
|
|
79
|
+
return {
|
|
80
|
+
get smoothedTps() { return smoothedTpsMap.get(result); },
|
|
81
|
+
set smoothedTps(v) { smoothedTpsMap.set(result, v); },
|
|
82
|
+
get lastEmitTime() { return lastEmitTimeMap.get(result); },
|
|
83
|
+
set lastEmitTime(v) { lastEmitTimeMap.set(result, v); },
|
|
84
|
+
get pendingTokens() { return pendingTokensMap.get(result); },
|
|
85
|
+
set pendingTokens(v) { pendingTokensMap.set(result, v); },
|
|
86
|
+
get pauseAfterNextEmit() { return pauseAfterNextEmitMap.get(result); },
|
|
87
|
+
set pauseAfterNextEmit(v) { pauseAfterNextEmitMap.set(result, v); },
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Update the EMA-smoothed tokens-per-second based on a new sample.
|
|
92
|
+
* Called from emitUpdate() with the estimated output tokens since last emit.
|
|
93
|
+
* Accumulates tokens in pendingTokens and only computes a rate when
|
|
94
|
+
* MIN_TPS_SAMPLE_MS has elapsed. Applies MAX_INSTANT_TPS cap before EMA.
|
|
95
|
+
*/
|
|
96
|
+
export function updateSmoothedTps(result, estimatedTokens) {
|
|
97
|
+
const tracker = getTpsState(result);
|
|
98
|
+
if (estimatedTokens <= 0) {
|
|
99
|
+
if (tracker.pauseAfterNextEmit) {
|
|
100
|
+
tracker.lastEmitTime = 0;
|
|
101
|
+
tracker.pauseAfterNextEmit = false;
|
|
102
|
+
}
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
if (tracker.lastEmitTime === 0) {
|
|
106
|
+
// First emit after a gap — seed the value directly
|
|
107
|
+
tracker.lastEmitTime = Date.now();
|
|
108
|
+
tracker.pauseAfterNextEmit = false;
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
tracker.pendingTokens += estimatedTokens;
|
|
112
|
+
const now = Date.now();
|
|
113
|
+
const deltaMs = now - tracker.lastEmitTime;
|
|
114
|
+
if (deltaMs < MIN_TPS_SAMPLE_MS) {
|
|
115
|
+
// If a pause was requested but we can't compute yet, reset the timer
|
|
116
|
+
// so the upcoming gap (e.g., tool execution) isn't counted.
|
|
117
|
+
if (tracker.pauseAfterNextEmit) {
|
|
118
|
+
tracker.lastEmitTime = 0;
|
|
119
|
+
tracker.pauseAfterNextEmit = false;
|
|
120
|
+
tracker.pendingTokens = 0;
|
|
121
|
+
}
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
const deltaSec = deltaMs / 1000;
|
|
125
|
+
let instantRate = (tracker.pendingTokens * TPS_CALIBRATION) / deltaSec;
|
|
126
|
+
if (instantRate > MAX_INSTANT_TPS) {
|
|
127
|
+
instantRate = MAX_INSTANT_TPS;
|
|
128
|
+
}
|
|
129
|
+
if (tracker.smoothedTps === 0) {
|
|
130
|
+
tracker.smoothedTps = instantRate;
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
tracker.smoothedTps = EMA_ALPHA * instantRate + (1 - EMA_ALPHA) * tracker.smoothedTps;
|
|
134
|
+
}
|
|
135
|
+
tracker.lastEmitTime = now;
|
|
136
|
+
tracker.pendingTokens = 0;
|
|
137
|
+
if (tracker.pauseAfterNextEmit) {
|
|
138
|
+
tracker.lastEmitTime = 0;
|
|
139
|
+
tracker.pauseAfterNextEmit = false;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Return the current EMA-smoothed tokens-per-second value.
|
|
144
|
+
*/
|
|
145
|
+
export function drainSmoothedTps(result) {
|
|
146
|
+
const tracker = getTpsState(result);
|
|
147
|
+
return tracker.smoothedTps;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Lazily initialize ctx baseline tracking state on the result object.
|
|
151
|
+
* Returns an accessor object backed by a WeakMap so frozen/sealed
|
|
152
|
+
* objects do not throw.
|
|
153
|
+
*/
|
|
154
|
+
function getCtxState(result) {
|
|
155
|
+
if (!ctxBaselineMap.has(result)) {
|
|
156
|
+
ctxBaselineMap.set(result, 0);
|
|
157
|
+
ctxStreamingCharsMap.set(result, 0);
|
|
158
|
+
}
|
|
159
|
+
return {
|
|
160
|
+
get baseline() { return ctxBaselineMap.get(result); },
|
|
161
|
+
set baseline(v) { ctxBaselineMap.set(result, v); },
|
|
162
|
+
get streamingChars() { return ctxStreamingCharsMap.get(result); },
|
|
163
|
+
set streamingChars(v) { ctxStreamingCharsMap.set(result, v); },
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Track streaming characters and estimate output tokens.
|
|
168
|
+
* Called on every streaming delta.
|
|
169
|
+
*/
|
|
170
|
+
function updateStreamingEstimate(result, deltaLength) {
|
|
171
|
+
if (deltaLength <= 0)
|
|
172
|
+
return;
|
|
173
|
+
const est = getStreamingEstimate(result);
|
|
174
|
+
est.chars += deltaLength;
|
|
175
|
+
// Also accumulate chars for ctx estimation (not drained on emit)
|
|
176
|
+
const ctxState = getCtxState(result);
|
|
177
|
+
ctxState.streamingChars += deltaLength;
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Drain the current streaming estimate and return estimated output tokens.
|
|
181
|
+
* Returns 0 when no streaming has occurred.
|
|
182
|
+
*/
|
|
183
|
+
export function drainStreamingEstimate(result) {
|
|
184
|
+
const est = getStreamingEstimate(result);
|
|
185
|
+
const tokens = Math.floor(est.chars / CHARS_PER_TOKEN);
|
|
186
|
+
est.chars = est.chars % CHARS_PER_TOKEN;
|
|
187
|
+
return tokens;
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Return the estimated context tokens: last known real totalTokens (baseline)
|
|
191
|
+
* plus any additional output tokens estimated since that baseline was set.
|
|
192
|
+
* Returns 0 before the first message_end when no baseline exists yet,
|
|
193
|
+
* in which case the caller should fall back to the streaming output estimate.
|
|
194
|
+
*/
|
|
195
|
+
export function drainCtxEstimate(result) {
|
|
196
|
+
const ctxState = getCtxState(result);
|
|
197
|
+
const streamingTokens = Math.floor(ctxState.streamingChars / CHARS_PER_TOKEN);
|
|
198
|
+
return ctxState.baseline + streamingTokens;
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Accumulate a text or thinking delta into the streaming buffer.
|
|
202
|
+
* Returns true if the caller should emit an update.
|
|
203
|
+
*/
|
|
204
|
+
function accumulateStreamingDelta(result, delta) {
|
|
205
|
+
if (!delta)
|
|
206
|
+
return false;
|
|
207
|
+
const state = getStreamingTextState(result);
|
|
208
|
+
state.buffer = state.buffer + delta;
|
|
209
|
+
updateStreamingEstimate(result, delta.length);
|
|
210
|
+
if (state.buffer.length - state.lastEmittedWordCount >= STREAMING_EMIT_CHARS) {
|
|
211
|
+
state.lastEmittedWordCount = state.buffer.length;
|
|
212
|
+
return true;
|
|
213
|
+
}
|
|
214
|
+
return false;
|
|
215
|
+
}
|
|
216
|
+
export function stableStringify(value, seen = new WeakSet()) {
|
|
217
|
+
if (value === null || typeof value !== "object") {
|
|
218
|
+
return JSON.stringify(value);
|
|
219
|
+
}
|
|
220
|
+
if (seen.has(value)) {
|
|
221
|
+
return '"[Circular]"';
|
|
222
|
+
}
|
|
223
|
+
seen.add(value);
|
|
224
|
+
if (Array.isArray(value)) {
|
|
225
|
+
const out = `[${value.map((item) => stableStringify(item, seen)).join(",")}]`;
|
|
226
|
+
seen.delete(value);
|
|
227
|
+
return out;
|
|
228
|
+
}
|
|
229
|
+
const entries = Object.entries(value).sort(([a], [b]) => a.localeCompare(b));
|
|
230
|
+
const out = `{${entries
|
|
231
|
+
.map(([key, entryValue]) => `${JSON.stringify(key)}:${stableStringify(entryValue, seen)}`)
|
|
232
|
+
.join(",")}}`;
|
|
233
|
+
seen.delete(value);
|
|
234
|
+
return out;
|
|
235
|
+
}
|
|
236
|
+
function getMessageSignature(message) {
|
|
237
|
+
return stableStringify(message);
|
|
238
|
+
}
|
|
239
|
+
function updateAssistantMetadata(result, message) {
|
|
240
|
+
if (!message || message.role !== "assistant")
|
|
241
|
+
return;
|
|
242
|
+
if (!result.model && message.model)
|
|
243
|
+
result.model = message.model;
|
|
244
|
+
if (message.stopReason)
|
|
245
|
+
result.stopReason = message.stopReason;
|
|
246
|
+
if (message.errorMessage)
|
|
247
|
+
result.errorMessage = message.errorMessage;
|
|
248
|
+
}
|
|
249
|
+
// Canonical reasoning stripping imported from ./reasoning-strip.js
|
|
250
|
+
import { stripReasoningFromAssistantMessage as stripReasoning } from "./reasoning-strip.js";
|
|
251
|
+
function addFlowAssistantMessage(result, message) {
|
|
252
|
+
if (!message || message.role !== "assistant")
|
|
253
|
+
return false;
|
|
254
|
+
// Strip reasoning/thinking from the message before storing
|
|
255
|
+
const { message: sanitized } = stripReasoning(message);
|
|
256
|
+
updateAssistantMetadata(result, sanitized);
|
|
257
|
+
const signature = getMessageSignature(sanitized);
|
|
258
|
+
const seen = getSeenFlowMessageSignatures(result);
|
|
259
|
+
if (seen.has(signature))
|
|
260
|
+
return false;
|
|
261
|
+
seen.add(signature);
|
|
262
|
+
result.messages.push(sanitized);
|
|
263
|
+
// Reset streaming estimate when actual usage arrives
|
|
264
|
+
const est = getStreamingEstimate(result);
|
|
265
|
+
est.chars = 0;
|
|
266
|
+
result.usage.turns++;
|
|
267
|
+
const usage = message.usage;
|
|
268
|
+
if (usage) {
|
|
269
|
+
result.usage.input += usage.input || 0;
|
|
270
|
+
result.usage.output += usage.output || 0;
|
|
271
|
+
result.usage.cacheRead += usage.cacheRead || 0;
|
|
272
|
+
result.usage.cacheWrite += usage.cacheWrite || 0;
|
|
273
|
+
result.usage.cost += usage.cost?.total || 0;
|
|
274
|
+
result.usage.contextTokens = usage.totalTokens || 0;
|
|
275
|
+
// Snapshot ctx baseline for smooth streaming estimation
|
|
276
|
+
const ctxState = getCtxState(result);
|
|
277
|
+
ctxState.baseline = usage.totalTokens || 0;
|
|
278
|
+
ctxState.streamingChars = 0;
|
|
279
|
+
}
|
|
280
|
+
// Count tool call parts in the message content and estimate their tokens
|
|
281
|
+
if (Array.isArray(message.content)) {
|
|
282
|
+
let toolCallChars = 0;
|
|
283
|
+
for (const part of message.content) {
|
|
284
|
+
if (part.type === "toolCall") {
|
|
285
|
+
result.usage.toolCalls++;
|
|
286
|
+
const tcText = JSON.stringify({ name: part.name, args: part.arguments || part.input || {} });
|
|
287
|
+
toolCallChars += tcText.length;
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
if (toolCallChars > 0) {
|
|
291
|
+
updateStreamingEstimate(result, toolCallChars);
|
|
292
|
+
const tracker = getTpsState(result);
|
|
293
|
+
tracker.pauseAfterNextEmit = true;
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
return true;
|
|
297
|
+
}
|
|
298
|
+
function addFlowToolMessage(result, message) {
|
|
299
|
+
if (!message || message.role !== "tool")
|
|
300
|
+
return false;
|
|
301
|
+
const signature = getMessageSignature(message);
|
|
302
|
+
const seen = getSeenFlowMessageSignatures(result);
|
|
303
|
+
if (seen.has(signature))
|
|
304
|
+
return false;
|
|
305
|
+
seen.add(signature);
|
|
306
|
+
result.messages.push(message);
|
|
307
|
+
return true;
|
|
308
|
+
}
|
|
309
|
+
function addFlowMessages(result, messages) {
|
|
310
|
+
if (!Array.isArray(messages))
|
|
311
|
+
return false;
|
|
312
|
+
let changed = false;
|
|
313
|
+
for (const message of messages) {
|
|
314
|
+
if (message && message.role === "tool") {
|
|
315
|
+
if (addFlowToolMessage(result, message))
|
|
316
|
+
changed = true;
|
|
317
|
+
}
|
|
318
|
+
else if (message && message.role === "assistant") {
|
|
319
|
+
if (addFlowAssistantMessage(result, message))
|
|
320
|
+
changed = true;
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
return changed;
|
|
324
|
+
}
|
|
325
|
+
function processFlowEvent(event, result) {
|
|
326
|
+
if (!event || typeof event !== "object")
|
|
327
|
+
return false;
|
|
328
|
+
switch (event.type) {
|
|
329
|
+
case "message_end":
|
|
330
|
+
return addFlowMessages(result, [event.message]);
|
|
331
|
+
case "turn_end":
|
|
332
|
+
return addFlowMessages(result, [event.message]);
|
|
333
|
+
case "agent_end":
|
|
334
|
+
result.sawAgentEnd = true;
|
|
335
|
+
return addFlowMessages(result, event.messages ?? []);
|
|
336
|
+
case "message_update": {
|
|
337
|
+
const evt = event.assistantMessageEvent;
|
|
338
|
+
if (!evt || typeof evt !== "object")
|
|
339
|
+
return false;
|
|
340
|
+
if (evt.type === "text_delta") {
|
|
341
|
+
return accumulateStreamingDelta(result, evt.delta ?? "");
|
|
342
|
+
}
|
|
343
|
+
// thinking_delta is intentionally NOT accumulated into the streaming buffer.
|
|
344
|
+
// Reasoning content is stripped from flow results to keep output clean.
|
|
345
|
+
if (evt.type === "thinking_delta") {
|
|
346
|
+
return false;
|
|
347
|
+
}
|
|
348
|
+
return false;
|
|
349
|
+
}
|
|
350
|
+
default:
|
|
351
|
+
return false;
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
export function processFlowJsonLine(line, result) {
|
|
355
|
+
if (!line.trim())
|
|
356
|
+
return false;
|
|
357
|
+
let event;
|
|
358
|
+
try {
|
|
359
|
+
event = JSON.parse(line);
|
|
360
|
+
}
|
|
361
|
+
catch {
|
|
362
|
+
return false;
|
|
363
|
+
}
|
|
364
|
+
return processFlowEvent(event, result);
|
|
365
|
+
}
|
|
366
|
+
export function getFlowFinalText(messages) {
|
|
367
|
+
if (!Array.isArray(messages))
|
|
368
|
+
return "";
|
|
369
|
+
for (let i = messages.length - 1; i >= 0; i--) {
|
|
370
|
+
const message = messages[i];
|
|
371
|
+
if (!message || message.role !== "assistant") {
|
|
372
|
+
continue;
|
|
373
|
+
}
|
|
374
|
+
if (typeof message.content === "string" && message.content.length > 0) {
|
|
375
|
+
return message.content;
|
|
376
|
+
}
|
|
377
|
+
if (!Array.isArray(message.content)) {
|
|
378
|
+
continue;
|
|
379
|
+
}
|
|
380
|
+
for (const part of message.content) {
|
|
381
|
+
if (part?.type === "text" && typeof part.text === "string" && part.text.length > 0) {
|
|
382
|
+
return part.text;
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
return "";
|
|
387
|
+
}
|
|
388
|
+
function extractNonReadToolCalls(messages) {
|
|
389
|
+
const calls = [];
|
|
390
|
+
if (!Array.isArray(messages))
|
|
391
|
+
return calls;
|
|
392
|
+
for (const msg of messages) {
|
|
393
|
+
if (msg.role !== "assistant" || !Array.isArray(msg.content))
|
|
394
|
+
continue;
|
|
395
|
+
for (const part of msg.content) {
|
|
396
|
+
if (part.type === "toolCall" && part.name !== "read") {
|
|
397
|
+
calls.push({ name: part.name, args: (part.arguments || part.input || {}) });
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
return calls;
|
|
402
|
+
}
|
|
403
|
+
function formatToolCallShort(tc) {
|
|
404
|
+
const args = tc.args || {};
|
|
405
|
+
switch (tc.name) {
|
|
406
|
+
case "edit":
|
|
407
|
+
case "write":
|
|
408
|
+
return `${tc.name} ${(args.file_path || args.path || "?").split("/").pop()}`;
|
|
409
|
+
case "bash": {
|
|
410
|
+
const cmd = (args.command || "").replace(/[\n\r\t]+/g, " ").replace(/ +/g, " ").trim();
|
|
411
|
+
return `bash ${cmd.length > 40 ? cmd.slice(0, 40) + "..." : cmd}`;
|
|
412
|
+
}
|
|
413
|
+
case "grep":
|
|
414
|
+
return `grep /${args.pattern || "?"}/ in ${args.path || "."}`;
|
|
415
|
+
case "find":
|
|
416
|
+
return `find ${args.pattern || "*"} in ${args.path || "."}`;
|
|
417
|
+
case "ls":
|
|
418
|
+
return `ls ${args.path || "."}`;
|
|
419
|
+
case "batch": {
|
|
420
|
+
const ops = Array.isArray(args.o) ? args.o : Array.isArray(args.op) ? args.op : Array.isArray(args.operations) ? args.operations : Array.isArray(args) ? args : [];
|
|
421
|
+
if (ops.length === 0)
|
|
422
|
+
return "batch (empty)";
|
|
423
|
+
const first = ops[0] || {};
|
|
424
|
+
const firstPath = ((first.p ?? first.path) ?? "?").split("/").pop();
|
|
425
|
+
const opType = (first.o ?? first.op) ?? "?";
|
|
426
|
+
const label = ops.length === 1 ? `${opType} ${firstPath}` : `${opType} ${firstPath} +${ops.length - 1} more`;
|
|
427
|
+
return `batch ${label}`;
|
|
428
|
+
}
|
|
429
|
+
case "batch_bash_poll": {
|
|
430
|
+
const ids = Array.isArray(args.i) ? args.i : [];
|
|
431
|
+
const idStr = ids.length <= 3
|
|
432
|
+
? ids.join(", ")
|
|
433
|
+
: `${ids.slice(0, 3).join(", ")} +${ids.length - 3}`;
|
|
434
|
+
return `batch_bash_poll [${idStr}]`;
|
|
435
|
+
}
|
|
436
|
+
default:
|
|
437
|
+
return tc.name;
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
/**
|
|
441
|
+
* Match tool calls with their results to build a paired list.
|
|
442
|
+
* Returns [{ name, command/args, output }] limited to the most recent pairs.
|
|
443
|
+
*/
|
|
444
|
+
function matchToolCallsWithResults(messages, maxPairs) {
|
|
445
|
+
if (!Array.isArray(messages))
|
|
446
|
+
return [];
|
|
447
|
+
const pairs = [];
|
|
448
|
+
// Build a map of toolCallId -> tool result output
|
|
449
|
+
const resultMap = new Map();
|
|
450
|
+
for (const msg of messages) {
|
|
451
|
+
if (msg.role !== "tool" || !Array.isArray(msg.content))
|
|
452
|
+
continue;
|
|
453
|
+
const id = msg.toolCallId || msg.tool_call_id || "";
|
|
454
|
+
if (!id)
|
|
455
|
+
continue;
|
|
456
|
+
const text = msg.content
|
|
457
|
+
.filter((p) => p.type === "text" && typeof p.text === "string")
|
|
458
|
+
.map((p) => p.text)
|
|
459
|
+
.join("\n");
|
|
460
|
+
resultMap.set(id, text);
|
|
461
|
+
}
|
|
462
|
+
// Walk assistant messages to find tool calls that have matching results
|
|
463
|
+
for (const msg of messages) {
|
|
464
|
+
if (msg.role !== "assistant" || !Array.isArray(msg.content))
|
|
465
|
+
continue;
|
|
466
|
+
for (const part of msg.content) {
|
|
467
|
+
if (part.type !== "toolCall")
|
|
468
|
+
continue;
|
|
469
|
+
const id = part.toolCallId || part.tool_call_id || "";
|
|
470
|
+
if (!id || !resultMap.has(id))
|
|
471
|
+
continue;
|
|
472
|
+
const name = part.name || part.toolName || "unknown";
|
|
473
|
+
const args = part.arguments || part.input || {};
|
|
474
|
+
const output = resultMap.get(id);
|
|
475
|
+
pairs.push({ name, args: args, output });
|
|
476
|
+
}
|
|
477
|
+
}
|
|
478
|
+
// Return the most recent pairs
|
|
479
|
+
return pairs.slice(-maxPairs);
|
|
480
|
+
}
|
|
481
|
+
/** Max tool result output chars to include per tool call in the summary. */
|
|
482
|
+
const TOOL_RESULT_MAX_CHARS = 2000;
|
|
483
|
+
export function getFlowSummaryText(result) {
|
|
484
|
+
const finalText = getFlowFinalText(result?.messages ?? []);
|
|
485
|
+
const isError = (typeof result?.exitCode === "number" && result.exitCode > 0) ||
|
|
486
|
+
result?.stopReason === "error" ||
|
|
487
|
+
result?.stopReason === "aborted";
|
|
488
|
+
// Build error base for failed flows
|
|
489
|
+
let errorBase = "";
|
|
490
|
+
if (isError) {
|
|
491
|
+
if (typeof result?.errorMessage === "string" && result.errorMessage.trim()) {
|
|
492
|
+
errorBase = result.errorMessage.trim();
|
|
493
|
+
}
|
|
494
|
+
else if (typeof result?.stderr === "string" && result.stderr.trim()) {
|
|
495
|
+
errorBase = result.stderr.trim();
|
|
496
|
+
}
|
|
497
|
+
else {
|
|
498
|
+
errorBase = "Flow failed";
|
|
499
|
+
}
|
|
500
|
+
}
|
|
501
|
+
// Extract tool call/result pairs for context
|
|
502
|
+
const toolPairs = matchToolCallsWithResults(result?.messages ?? [], 10);
|
|
503
|
+
const toolSummaryParts = [];
|
|
504
|
+
for (const pair of toolPairs) {
|
|
505
|
+
const callLabel = formatToolCallShort({ name: pair.name, args: pair.args });
|
|
506
|
+
if (pair.output.trim()) {
|
|
507
|
+
const truncated = pair.output.length > TOOL_RESULT_MAX_CHARS
|
|
508
|
+
? pair.output.slice(0, TOOL_RESULT_MAX_CHARS) + "\n... (truncated)"
|
|
509
|
+
: pair.output;
|
|
510
|
+
toolSummaryParts.push(`${callLabel}:\n${truncated}`);
|
|
511
|
+
}
|
|
512
|
+
else {
|
|
513
|
+
toolSummaryParts.push(`${callLabel}: (no output)`);
|
|
514
|
+
}
|
|
515
|
+
}
|
|
516
|
+
const toolContext = toolSummaryParts.length > 0
|
|
517
|
+
? "\n\n[Tool Results]\n" + toolSummaryParts.join("\n---\n")
|
|
518
|
+
: "";
|
|
519
|
+
// If there's final text, include it plus tool context
|
|
520
|
+
if (finalText) {
|
|
521
|
+
return finalText + toolContext;
|
|
522
|
+
}
|
|
523
|
+
// No final text
|
|
524
|
+
if (isError) {
|
|
525
|
+
// Surface partial tool calls (excluding read) for failed/aborted flows
|
|
526
|
+
const toolCalls = extractNonReadToolCalls(result?.messages ?? []);
|
|
527
|
+
if (toolCalls.length > 0) {
|
|
528
|
+
const formatted = toolCalls.map(formatToolCallShort).join(", ");
|
|
529
|
+
return `${errorBase}\nPartial work: ${formatted}${toolContext}`;
|
|
530
|
+
}
|
|
531
|
+
return errorBase;
|
|
532
|
+
}
|
|
533
|
+
// Success but no final text — show tool results if any
|
|
534
|
+
if (toolContext) {
|
|
535
|
+
return toolContext.trim();
|
|
536
|
+
}
|
|
537
|
+
return "(no output)";
|
|
538
|
+
}
|
|
539
|
+
//# sourceMappingURL=runner-events.js.map
|