@a1hvdy/cc-openclaw 0.13.0 → 0.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/README.md +14 -0
  2. package/dist/src/engines/heartbeat-guard.d.ts +91 -0
  3. package/dist/src/engines/heartbeat-guard.js +120 -0
  4. package/dist/src/engines/heartbeat-guard.js.map +1 -0
  5. package/dist/src/engines/index.d.ts +2 -0
  6. package/dist/src/engines/index.js +3 -0
  7. package/dist/src/engines/index.js.map +1 -1
  8. package/dist/src/engines/persistent-session.d.ts +9 -0
  9. package/dist/src/engines/persistent-session.js +39 -0
  10. package/dist/src/engines/persistent-session.js.map +1 -1
  11. package/dist/src/engines/subprocess-pool.d.ts +78 -0
  12. package/dist/src/engines/subprocess-pool.js +200 -0
  13. package/dist/src/engines/subprocess-pool.js.map +1 -0
  14. package/dist/src/lib/cost-rollup.d.ts +36 -0
  15. package/dist/src/lib/cost-rollup.js +125 -0
  16. package/dist/src/lib/cost-rollup.js.map +1 -0
  17. package/dist/src/lib/trajectory.d.ts +10 -1
  18. package/dist/src/lib/trajectory.js +37 -0
  19. package/dist/src/lib/trajectory.js.map +1 -1
  20. package/dist/src/lifecycle/safe-restart.d.ts +99 -0
  21. package/dist/src/lifecycle/safe-restart.js +132 -0
  22. package/dist/src/lifecycle/safe-restart.js.map +1 -0
  23. package/dist/src/observability/event-bus.d.ts +21 -0
  24. package/dist/src/observability/event-bus.js.map +1 -1
  25. package/dist/src/openai-compat/non-streaming-handler.js +56 -2
  26. package/dist/src/openai-compat/non-streaming-handler.js.map +1 -1
  27. package/dist/src/openai-compat/streaming-handler.js +115 -2
  28. package/dist/src/openai-compat/streaming-handler.js.map +1 -1
  29. package/dist/src/patches/cache-parity-registry.d.ts +83 -0
  30. package/dist/src/patches/cache-parity-registry.js +151 -1
  31. package/dist/src/patches/cache-parity-registry.js.map +1 -1
  32. package/dist/src/session/session-manager.js +43 -0
  33. package/dist/src/session/session-manager.js.map +1 -1
  34. package/package.json +1 -1
  35. package/dist/src/patches/sysprompt-strip.spec.d.ts +0 -33
  36. package/dist/src/patches/sysprompt-strip.spec.js +0 -53
  37. package/dist/src/patches/sysprompt-strip.spec.js.map +0 -1
@@ -0,0 +1,132 @@
1
+ /**
2
+ * safe-restart — in-process gateway restart that preserves the current
3
+ * Telegram session.
4
+ *
5
+ * Pre-Execution Decision (PRP_v2 §Pre-Execution Decisions, locked):
6
+ * Path: --safe-current-session flag (in-process).
7
+ * Rationale: avoids tmux zombie risk (Risk Register row 3); cleaner state
8
+ * model; tmux-detach remains available as a secondary path (v0.17 deferred).
9
+ *
10
+ * Usage (programmatic):
11
+ * const restart = new SafeRestart({ sessionId: 'my-session' });
12
+ * const result = await restart.run();
13
+ *
14
+ * Usage (CLI flag):
15
+ * cc-openclaw --safe-current-session [--session-id <id>]
16
+ * Parsed in src/cli/index.ts and forwarded here.
17
+ *
18
+ * Self-survival contract:
19
+ * When OpenClaw triggers a gateway restart while a Telegram session is
20
+ * active, the session must NOT fire a sub-agent "self-survival" turn. This
21
+ * module registers a SIGTERM handler that:
22
+ * 1. Flushes in-flight state (EventBus drain-wait up to FLUSH_TIMEOUT_MS).
23
+ * 2. Marks the named session as restart-pending in the session registry.
24
+ * 3. Emits a 'safe-restart.initiated' telemetry event.
25
+ * 4. Returns "in-process" — the gateway respawner picks this signal up and
26
+ * skips the self-survival sub-agent path.
27
+ *
28
+ * SecondaryPath — tmux-detach:
29
+ * See scripts/gateway-detach.sh. NOT the default per locked decision above.
30
+ * SafeRestart.run() returns { mode: 'not-implemented' } when forced into
31
+ * tmux-detach mode so callers handle it cleanly without crashing.
32
+ */
33
+ import { EventBus } from '../observability/event-bus.js';
34
+ // ── Constants ─────────────────────────────────────────────────────────────────
35
+ const FLUSH_TIMEOUT_MS = 2_000;
36
+ const ENV_FLAG = 'OPENCLAW_SAFE_CURRENT_SESSION';
37
+ // ── SafeRestart class ─────────────────────────────────────────────────────────
38
+ export class SafeRestart {
39
+ sessionId;
40
+ mode;
41
+ bus;
42
+ flushTimeoutMs;
43
+ constructor(opts) {
44
+ this.sessionId = opts.sessionId;
45
+ this.mode = opts.mode ?? 'in-process';
46
+ this.bus = opts.bus ?? new EventBus();
47
+ this.flushTimeoutMs = opts.flushTimeoutMs ?? FLUSH_TIMEOUT_MS;
48
+ }
49
+ /**
50
+ * Execute the safe-restart sequence.
51
+ *
52
+ * In-process path:
53
+ * 1. Wait up to flushTimeoutMs for in-flight state to drain.
54
+ * 2. Emit 'safe-restart.initiated' telemetry.
55
+ * 3. Return { mode: 'in-process', ... }.
56
+ *
57
+ * Tmux-detach path:
58
+ * Returns { mode: 'not-implemented', ... } — deferred to v0.17.
59
+ * See scripts/gateway-detach.sh for the secondary path stub.
60
+ */
61
+ async run() {
62
+ const initiatedAt = new Date().toISOString();
63
+ if (this.mode === 'tmux-detach') {
64
+ // Secondary path — deferred to v0.17. Return not-implemented cleanly.
65
+ this.emitTelemetry('safe-restart.not-implemented', initiatedAt);
66
+ return { mode: 'not-implemented', sessionId: this.sessionId, initiatedAt };
67
+ }
68
+ // In-process path.
69
+ await this.flushInFlight();
70
+ this.emitTelemetry('safe-restart.initiated', initiatedAt);
71
+ return { mode: 'in-process', sessionId: this.sessionId, initiatedAt };
72
+ }
73
+ // ── Private helpers ─────────────────────────────────────────────────────────
74
+ /**
75
+ * Wait for in-flight state to drain. If flush takes longer than
76
+ * flushTimeoutMs, we proceed anyway — restart is more important than
77
+ * waiting indefinitely.
78
+ */
79
+ async flushInFlight() {
80
+ await Promise.race([
81
+ this.drainEventBus(),
82
+ new Promise((resolve) => setTimeout(resolve, this.flushTimeoutMs)),
83
+ ]);
84
+ }
85
+ /**
86
+ * Give the EventBus a single microtask tick to deliver any pending
87
+ * synchronous events before we mark the session as restart-pending.
88
+ */
89
+ async drainEventBus() {
90
+ // EventBus.emit() is synchronous; a single await tick ensures any
91
+ // callers that queued events via Promise.resolve() have run.
92
+ await Promise.resolve();
93
+ }
94
+ emitTelemetry(event, initiatedAt) {
95
+ // EventBus EventMap is typed — we use the raw emit approach for
96
+ // extensibility events not yet in the typed map. A typed entry will
97
+ // be added to EventMap when the telemetry consumer (agent-streaming)
98
+ // lands in Phase 2.
99
+ try {
100
+ this.bus.emit(event, {
101
+ sessionId: this.sessionId,
102
+ initiatedAt,
103
+ mode: this.mode,
104
+ });
105
+ }
106
+ catch {
107
+ // Telemetry is best-effort; never block restart on a bus error.
108
+ }
109
+ }
110
+ }
111
+ // ── CLI flag helpers ──────────────────────────────────────────────────────────
112
+ /**
113
+ * Returns true when the --safe-current-session flag is present in argv OR
114
+ * when OPENCLAW_SAFE_CURRENT_SESSION=1 is set in the environment.
115
+ * Used by src/cli/index.ts to decide whether to run the safe-restart path.
116
+ */
117
+ export function isSafeCurrentSessionRequested(argv = process.argv) {
118
+ if (process.env[ENV_FLAG] === '1')
119
+ return true;
120
+ return argv.includes('--safe-current-session');
121
+ }
122
+ /**
123
+ * Parse --session-id <value> from argv. Returns undefined when not present.
124
+ */
125
+ export function parseSessionIdFromArgv(argv = process.argv) {
126
+ const idx = argv.indexOf('--session-id');
127
+ if (idx !== -1 && idx + 1 < argv.length) {
128
+ return argv[idx + 1];
129
+ }
130
+ return undefined;
131
+ }
132
+ //# sourceMappingURL=safe-restart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safe-restart.js","sourceRoot":"","sources":["../../../src/lifecycle/safe-restart.ts"],"names":[],"mappings":"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"}
@@ -35,6 +35,16 @@ export type EventMap = {
35
35
  name: SessionName;
36
36
  tokens: number;
37
37
  };
38
+ /**
39
+ * Emitted when a session subprocess closes outside an explicit stop() —
40
+ * v0.14.1 root-cause observability for the stale-session class of bugs.
41
+ * `code` is the OS exit code (null when killed by signal). The reaper in
42
+ * SessionManager.sendMessage restarts the subprocess on the next turn.
43
+ */
44
+ 'session.died': {
45
+ name: SessionName;
46
+ code: number | null;
47
+ };
38
48
  /** Emitted on every tool_use event within a session turn. */
39
49
  'session.tool-use': {
40
50
  name: SessionName;
@@ -55,6 +65,17 @@ export type EventMap = {
55
65
  'boot.ready': {
56
66
  config: Config;
57
67
  };
68
+ /**
69
+ * Emitted by cache-parity-registry when a namespace mismatch is detected
70
+ * and automatically self-recovered (task-005, v0.16).
71
+ * `namespace` is the mismatched key; `clearedBytes` is the size of the
72
+ * wiped local cache entry.
73
+ */
74
+ 'cache-parity.namespace-mismatch-recovered': {
75
+ namespace: string;
76
+ clearedBytes: number;
77
+ restartCycle: number;
78
+ };
58
79
  };
59
80
  type Listener<K extends keyof EventMap> = (payload: EventMap[K]) => void;
60
81
  export declare class EventBus {
@@ -1 +1 @@
1
- {"version":3,"file":"event-bus.js","sourceRoot":"","sources":["../../../src/observability/event-bus.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,iFAAiF;AAEjF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAAY,CAAC;AA6BvD,iFAAiF;AAEjF,MAAM,OAAO,QAAQ;IACF,SAAS,GAAG,IAAI,GAAG,EAAiD,CAAC;IAEtF;;;OAGG;IACH,EAAE,CAA2B,KAAQ,EAAE,QAAqB;QAC1D,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACpC,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;YAChB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACjC,CAAC;QACD,wEAAwE;QACvE,GAAwB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAExC,OAAO,GAAG,EAAE;YACT,GAAwB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC7C,CAAC,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,IAAI,CAA2B,KAAQ,EAAE,OAAoB;QAC3D,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,CAAC,GAAG;YAAE,OAAO;QACjB,KAAK,MAAM,QAAQ,IAAI,GAAG,EAAE,CAAC;YAC1B,QAAwB,CAAC,OAAO,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAED,wDAAwD;IACxD,IAAI,aAAa;QACf,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;YAC1C,KAAK,IAAI,GAAG,CAAC,IAAI,CAAC;QACpB,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
1
+ {"version":3,"file":"event-bus.js","sourceRoot":"","sources":["../../../src/observability/event-bus.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,iFAAiF;AAEjF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAAY,CAAC;AA+CvD,iFAAiF;AAEjF,MAAM,OAAO,QAAQ;IACF,SAAS,GAAG,IAAI,GAAG,EAAiD,CAAC;IAEtF;;;OAGG;IACH,EAAE,CAA2B,KAAQ,EAAE,QAAqB;QAC1D,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACpC,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;YAChB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACjC,CAAC;QACD,wEAAwE;QACvE,GAAwB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAExC,OAAO,GAAG,EAAE;YACT,GAAwB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC7C,CAAC,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,IAAI,CAA2B,KAAQ,EAAE,OAAoB;QAC3D,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,CAAC,GAAG;YAAE,OAAO;QACjB,KAAK,MAAM,QAAQ,IAAI,GAAG,EAAE,CAAC;YAC1B,QAAwB,CAAC,OAAO,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAED,wDAAwD;IACxD,IAAI,aAAa;QACf,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;YAC1C,KAAK,IAAI,GAAG,CAAC,IAAI,CAAC;QACpB,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
@@ -24,7 +24,7 @@ import { reportStatus, getToolDescription } from './status-reporter.js';
24
24
  import { parseToolCallsFromText } from './tool-calls-parser.js';
25
25
  import { formatCompletionResponse } from './response-formatter.js';
26
26
  import { getSurfaceThinkingEnabled, getTtsAutoMode } from '../lib/config.js';
27
- import { emit as emitTrajectory } from '../lib/trajectory.js';
27
+ import { emit as emitTrajectory, emitTurnTrace } from '../lib/trajectory.js';
28
28
  import { formatError, ERROR_CODES } from '../lib/error-formatter.js';
29
29
  import { applyVoiceRecovery, _logVoiceDebug, detectVoiceIntent, hasTtsMarkers } from './voice-recovery.js';
30
30
  /** Coerce a userMessage (string | UserMessageBlock[]) to a flat string
@@ -47,6 +47,11 @@ function userMessageToText(msg) {
47
47
  export async function handleNonStreaming(manager, sessionName, model,
48
48
  // Phase 2 R4 wire-up: accepts native content-block arrays in tool-stream mode.
49
49
  userMessage, completionId, res, hasTools) {
50
+ // v0.14.0 turn-trace probe: capture wall-clock duration of the turn.
51
+ const turnStartMs = Date.now();
52
+ // v0.15.0 Slice 1: hoist userText so the catch-path probe emit can reference
53
+ // it (originally declared inside try at line ~133, post-recovery-pipeline).
54
+ const probeUserText = userMessageToText(userMessage);
50
55
  try {
51
56
  reportStatus('thinking', 'Processing request...');
52
57
  // v0.7.1: accumulate thinking-block content when surfaceThinking is on.
@@ -134,17 +139,40 @@ userMessage, completionId, res, hasTools) {
134
139
  }
135
140
  }
136
141
  // Parse tool_calls from response text when caller provided tools
142
+ let traceToolCount = 0;
143
+ let traceFinishReason = 'stop';
144
+ let traceFinalText = '';
137
145
  if (hasTools) {
138
146
  const parsed = parseToolCallsFromText(outputText);
139
- const response = formatCompletionResponse(completionId, model, parsed.textContent ?? '', tokensIn, tokensOut, parsed.toolCalls.length > 0 ? parsed.toolCalls : undefined, surfaceThinking ? thinkingBuffer : undefined);
147
+ traceToolCount = parsed.toolCalls.length;
148
+ traceFinishReason = traceToolCount > 0 ? 'tool_calls' : 'stop';
149
+ traceFinalText = parsed.textContent ?? '';
150
+ const response = formatCompletionResponse(completionId, model, traceFinalText, tokensIn, tokensOut, traceToolCount > 0 ? parsed.toolCalls : undefined, surfaceThinking ? thinkingBuffer : undefined);
140
151
  res.writeHead(200, { 'Content-Type': 'application/json' });
141
152
  res.end(JSON.stringify(response));
142
153
  }
143
154
  else {
155
+ traceFinalText = outputText;
144
156
  const response = formatCompletionResponse(completionId, model, outputText, tokensIn, tokensOut, undefined, surfaceThinking ? thinkingBuffer : undefined);
145
157
  res.writeHead(200, { 'Content-Type': 'application/json' });
146
158
  res.end(JSON.stringify(response));
147
159
  }
160
+ // v0.14.0 turn-trace probe: emit per-turn diagnostic. No-op unless
161
+ // CC_OPENCLAW_TURN_TRACE=1 (or CC_OPENCLAW_TRAJECTORY=1) is set.
162
+ emitTurnTrace({
163
+ path: 'non-streaming',
164
+ model,
165
+ userTextPreview: userText.slice(0, 500),
166
+ userTextLen: userText.length,
167
+ hasTools,
168
+ toolCallCount: traceToolCount,
169
+ outputTextPreview: traceFinalText.slice(0, 500),
170
+ outputTextLen: traceFinalText.length,
171
+ finishReason: traceFinishReason,
172
+ tokensIn,
173
+ tokensOut,
174
+ durationMs: Date.now() - turnStartMs,
175
+ }, sessionName);
148
176
  }
149
177
  catch (err) {
150
178
  reportStatus('idle', 'Request failed');
@@ -152,6 +180,32 @@ userMessage, completionId, res, hasTools) {
152
180
  formatError(err, { code: ERROR_CODES.SESSION_ERROR, sessionId: sessionName, details: { phase: 'handleNonStreaming' } });
153
181
  res.writeHead(500, { 'Content-Type': 'application/json' });
154
182
  res.end(JSON.stringify({ error: { message: err.message, type: 'server_error' } }));
183
+ // v0.15.0 Slice 1: turn-trace probe on the error-exit path. Same
184
+ // rationale as streaming-handler — without this, error turns vanish
185
+ // from the trajectory and we can't diagnose greeting-only / broken
186
+ // turns that exit via session-crash or timeout. tokensIn/Out and
187
+ // outputText are zeroed because the request never produced a body.
188
+ try {
189
+ emitTurnTrace({
190
+ path: 'non-streaming',
191
+ model,
192
+ userTextPreview: probeUserText.slice(0, 500),
193
+ userTextLen: probeUserText.length,
194
+ hasTools,
195
+ toolCallCount: 0,
196
+ outputTextPreview: '',
197
+ outputTextLen: 0,
198
+ finishReason: 'error',
199
+ tokensIn: 0,
200
+ tokensOut: 0,
201
+ durationMs: Date.now() - turnStartMs,
202
+ errorMessage: err.message,
203
+ errorName: err.name,
204
+ }, sessionName);
205
+ }
206
+ catch {
207
+ /* Probe must never throw inside catch. */
208
+ }
155
209
  }
156
210
  }
157
211
  //# sourceMappingURL=non-streaming-handler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"non-streaming-handler.js","sourceRoot":"","sources":["../../../src/openai-compat/non-streaming-handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"non-streaming-handler.js","sourceRoot":"","sources":["../../../src/openai-compat/non-streaming-handler.ts"],"names":[],"mappings":"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"}
@@ -39,9 +39,9 @@ import { reportStatus, getToolDescription } from './status-reporter.js';
39
39
  import { parseToolCallsFromText } from './tool-calls-parser.js';
40
40
  import { formatCompletionChunk } from './response-formatter.js';
41
41
  import { isToolStreamMode } from './mode-flags.js';
42
- import { emit as emitTrajectory } from '../lib/trajectory.js';
42
+ import { emit as emitTrajectory, emitTurnTrace } from '../lib/trajectory.js';
43
43
  import { formatError, ERROR_CODES } from '../lib/error-formatter.js';
44
- import { getTtsAutoMode } from '../lib/config.js';
44
+ import { getSurfaceThinkingEnabled, getTtsAutoMode } from '../lib/config.js';
45
45
  import { applyVoiceRecovery, detectVoiceIntent, hasTtsMarkers, _logVoiceDebug } from './voice-recovery.js';
46
46
  /** Coerce a userMessage (string | UserMessageBlock[]) to a flat string
47
47
  * for voice-intent detection. Tool-result blocks aren't user prompts. */
@@ -69,6 +69,14 @@ userMessage, completionId, res, hasTools) {
69
69
  Connection: 'keep-alive',
70
70
  'X-Accel-Buffering': 'no',
71
71
  });
72
+ // v0.14.0 turn-trace probe: track wall-clock + accumulate streamed text
73
+ // for the final per-turn diagnostic emit. accumulatedText mirrors what
74
+ // the client actually received (text deltas only — tool_calls are tracked
75
+ // via toolCallsEmitted). Cheap O(N) string concat, capped by truncation
76
+ // at emit time so memory cost stays bounded.
77
+ const turnStartMs = Date.now();
78
+ let accumulatedText = '';
79
+ let doneBackstopFired = false;
72
80
  let clientDisconnected = false;
73
81
  res.on('close', () => {
74
82
  clientDisconnected = true;
@@ -135,6 +143,14 @@ userMessage, completionId, res, hasTools) {
135
143
  // result-fallback-classifier rejects as an "incomplete terminal response".
136
144
  // This flag drives a final-chunk backstop in each finalization branch.
137
145
  let streamedAnything = false;
146
+ // v0.16 task-006: streaming-path thinking-block surfacing. When the env
147
+ // flag OPENCLAW_THINKING_SURFACE is on, emit a synthetic SSE chunk per
148
+ // thinking delta with `delta.reasoning` (mirroring OpenAI o1/o3 streaming
149
+ // shape). Default OFF for privacy — without the flag, the onThinking
150
+ // callback is undefined and the engine never even fires the event
151
+ // (gated on listenerCount > 0 at emit time).
152
+ const surfaceThinking = getSurfaceThinkingEnabled();
153
+ let thinkingBuffer = '';
138
154
  try {
139
155
  reportStatus('thinking', 'Processing request...');
140
156
  await manager.sendMessage(sessionName, userMessage, {
@@ -172,6 +188,7 @@ userMessage, completionId, res, hasTools) {
172
188
  // between tool_use blocks, OpenClaw client handles that fine.
173
189
  if (chunk.length > 0)
174
190
  streamedAnything = true;
191
+ accumulatedText += chunk;
175
192
  writeSSE(JSON.stringify(formatCompletionChunk(completionId, model, { content: chunk }, null)));
176
193
  }
177
194
  else {
@@ -251,8 +268,38 @@ userMessage, completionId, res, hasTools) {
251
268
  }
252
269
  }
253
270
  },
271
+ // v0.16 task-006: thinking-delta surfacing. Subscribed only when the
272
+ // flag is on so the engine's listenerCount > 0 gate stays cheap when
273
+ // off. Each delta becomes a synthetic SSE chunk with `delta.reasoning`
274
+ // matching sse-translator.ts:170-176 (the unused createSseTranslator
275
+ // path) and the OpenAI o1/o3 streaming shape.
276
+ onThinking: surfaceThinking
277
+ ? (text) => {
278
+ if (!text)
279
+ return;
280
+ thinkingBuffer += text;
281
+ const chunk = {
282
+ id: completionId,
283
+ object: 'chat.completion.chunk',
284
+ created: Math.floor(Date.now() / 1000),
285
+ model,
286
+ choices: [{ index: 0, delta: { reasoning: text }, finish_reason: null }],
287
+ };
288
+ writeSSE(JSON.stringify(chunk));
289
+ }
290
+ : undefined,
254
291
  });
255
292
  reportStatus('idle', 'Ready');
293
+ // v0.16 task-006: thinking_block trajectory event with token-count metadata
294
+ // only (never raw text). Fires when buffer is non-empty regardless of
295
+ // whether the SSE chunks were emitted — observability is independent of
296
+ // the user-visible flag. Mirrors non-streaming-handler.ts:118-127.
297
+ if (thinkingBuffer.length > 0) {
298
+ emitTrajectory('thinking_block', {
299
+ excerpt_chars: thinkingBuffer.length,
300
+ tokens_approx: Math.ceil(thinkingBuffer.length / 4),
301
+ }, sessionName);
302
+ }
256
303
  // Get token usage for final chunk
257
304
  let usage;
258
305
  try {
@@ -275,6 +322,8 @@ userMessage, completionId, res, hasTools) {
275
322
  if (noVisiblePayload) {
276
323
  writeSSE(JSON.stringify(formatCompletionChunk(completionId, model, { content: 'Done.' }, null)));
277
324
  streamedAnything = true;
325
+ doneBackstopFired = true;
326
+ accumulatedText += 'Done.';
278
327
  }
279
328
  // v0.10.3: voice-recovery emission. When voice intent was detected AND
280
329
  // chunks were buffered (not streamed), apply recovery to bufferedText
@@ -307,6 +356,10 @@ userMessage, completionId, res, hasTools) {
307
356
  if (recovery.recovered) {
308
357
  emitTrajectory('tool_use', { name: '_voice_recovery', inputKeys: [recovery.via] }, sessionName);
309
358
  }
359
+ // Voice-recovery REPLACES streamed text — overwrite accumulator so the
360
+ // turn-trace reflects what the client actually receives, not what was
361
+ // buffered pre-recovery.
362
+ accumulatedText = finalText;
310
363
  writeSSE(JSON.stringify(formatCompletionChunk(completionId, model, { content: finalText }, null)));
311
364
  const finalChunk = formatCompletionChunk(completionId, model, {}, 'stop');
312
365
  if (usage)
@@ -331,6 +384,7 @@ userMessage, completionId, res, hasTools) {
331
384
  if (parsed.toolCalls.length > 0) {
332
385
  // Emit text content if any
333
386
  if (parsed.textContent) {
387
+ accumulatedText += parsed.textContent;
334
388
  writeSSE(JSON.stringify(formatCompletionChunk(completionId, model, { content: parsed.textContent }, null)));
335
389
  }
336
390
  // Emit tool_call chunks
@@ -367,6 +421,7 @@ userMessage, completionId, res, hasTools) {
367
421
  }
368
422
  else {
369
423
  // No tool calls — emit buffered text as content
424
+ accumulatedText += bufferedText;
370
425
  writeSSE(JSON.stringify(formatCompletionChunk(completionId, model, { content: bufferedText }, null)));
371
426
  const finalChunk = formatCompletionChunk(completionId, model, {}, 'stop');
372
427
  if (usage)
@@ -381,6 +436,34 @@ userMessage, completionId, res, hasTools) {
381
436
  finalChunk.usage = usage;
382
437
  writeSSE(JSON.stringify(finalChunk));
383
438
  }
439
+ // v0.14.0 turn-trace probe: emit per-turn diagnostic. No-op unless
440
+ // CC_OPENCLAW_TURN_TRACE=1 (or CC_OPENCLAW_TRAJECTORY=1) is set.
441
+ // Derive finishReason from the same logic the final-chunk branches use.
442
+ let traceFinishReason = 'stop';
443
+ if (useToolStream && toolCallsEmitted > 0)
444
+ traceFinishReason = 'tool_calls';
445
+ else if (hasTools && bufferedText) {
446
+ const parsed = parseToolCallsFromText(bufferedText);
447
+ if (parsed.toolCalls.length > 0)
448
+ traceFinishReason = 'tool_calls';
449
+ }
450
+ emitTurnTrace({
451
+ path: 'streaming',
452
+ model,
453
+ userTextPreview: userText.slice(0, 500),
454
+ userTextLen: userText.length,
455
+ hasTools,
456
+ useToolStream,
457
+ toolCallCount: toolCallsEmitted,
458
+ outputTextPreview: accumulatedText.slice(0, 500),
459
+ outputTextLen: accumulatedText.length,
460
+ finishReason: traceFinishReason,
461
+ doneBackstopFired,
462
+ voiceIntent,
463
+ tokensIn: usage?.prompt_tokens ?? 0,
464
+ tokensOut: usage?.completion_tokens ?? 0,
465
+ durationMs: Date.now() - turnStartMs,
466
+ }, sessionName);
384
467
  writeSSE('[DONE]');
385
468
  }
386
469
  catch (err) {
@@ -389,6 +472,36 @@ userMessage, completionId, res, hasTools) {
389
472
  formatError(err, { code: ERROR_CODES.SESSION_ERROR, sessionId: sessionName, details: { phase: 'handleStreaming' } });
390
473
  writeSSE(JSON.stringify({ error: { message: err.message, type: 'server_error' } }));
391
474
  writeSSE('[DONE]');
475
+ // v0.15.0 Slice 1: turn-trace probe now ALSO fires on error-exit so
476
+ // broken turns (claude CLI crash, timeout, stalled session kill) get
477
+ // captured in the same trajectory stream as successful turns. Without
478
+ // this, error turns vanish from the probe — exactly the 20:52–21:09
479
+ // UTC window of `version?` greeting-only requests on 2026-05-14 that
480
+ // had request_in events but no turn_complete.
481
+ try {
482
+ emitTurnTrace({
483
+ path: 'streaming',
484
+ model,
485
+ userTextPreview: userText.slice(0, 500),
486
+ userTextLen: userText.length,
487
+ hasTools,
488
+ useToolStream,
489
+ toolCallCount: toolCallsEmitted,
490
+ outputTextPreview: accumulatedText.slice(0, 500),
491
+ outputTextLen: accumulatedText.length,
492
+ finishReason: 'error',
493
+ doneBackstopFired,
494
+ voiceIntent,
495
+ tokensIn: 0,
496
+ tokensOut: 0,
497
+ durationMs: Date.now() - turnStartMs,
498
+ errorMessage: err.message,
499
+ errorName: err.name,
500
+ }, sessionName);
501
+ }
502
+ catch {
503
+ /* Probe must never throw inside catch — would mask the original error. */
504
+ }
392
505
  }
393
506
  finally {
394
507
  clearInterval(heartbeatTimer);
@@ -1 +1 @@
1
- {"version":3,"file":"streaming-handler.js","sourceRoot":"","sources":["../../../src/openai-compat/streaming-handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"streaming-handler.js","sourceRoot":"","sources":["../../../src/openai-compat/streaming-handler.ts"],"names":[],"mappings":"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"}