@a1hvdy/cc-openclaw 0.17.0 → 0.18.1
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 +0 -14
- package/dist/src/channels/telegram/completion-summary.js +24 -2
- package/dist/src/channels/telegram/completion-summary.js.map +1 -1
- package/dist/src/channels/telegram/event-reducer.js +15 -3
- package/dist/src/channels/telegram/event-reducer.js.map +1 -1
- package/dist/src/channels/telegram/live-card.d.ts +90 -7
- package/dist/src/channels/telegram/live-card.js +286 -25
- package/dist/src/channels/telegram/live-card.js.map +1 -1
- package/dist/src/channels/telegram/tool-tracker.d.ts +16 -2
- package/dist/src/channels/telegram/tool-tracker.js +81 -18
- package/dist/src/channels/telegram/tool-tracker.js.map +1 -1
- package/dist/src/config/loader.js +2 -0
- package/dist/src/config/loader.js.map +1 -1
- package/dist/src/config/schema.d.ts +20 -1
- package/dist/src/config/schema.js +12 -1
- package/dist/src/config/schema.js.map +1 -1
- package/dist/src/constants.d.ts +13 -1
- package/dist/src/constants.js +13 -1
- package/dist/src/constants.js.map +1 -1
- package/dist/src/engines/index.d.ts +0 -2
- package/dist/src/engines/index.js +0 -3
- package/dist/src/engines/index.js.map +1 -1
- package/dist/src/engines/persistent-session.d.ts +0 -9
- package/dist/src/engines/persistent-session.js +0 -39
- package/dist/src/engines/persistent-session.js.map +1 -1
- package/dist/src/lib/config.d.ts +6 -0
- package/dist/src/lib/config.js +81 -0
- package/dist/src/lib/config.js.map +1 -1
- package/dist/src/lib/sysprompt-strip.d.ts +14 -0
- package/dist/src/lib/sysprompt-strip.js +79 -2
- package/dist/src/lib/sysprompt-strip.js.map +1 -1
- package/dist/src/lib/trajectory.d.ts +1 -10
- package/dist/src/lib/trajectory.js +6 -37
- package/dist/src/lib/trajectory.js.map +1 -1
- package/dist/src/lib/turn-trace.d.ts +34 -0
- package/dist/src/lib/turn-trace.js +75 -0
- package/dist/src/lib/turn-trace.js.map +1 -0
- package/dist/src/observability/event-bus.d.ts +0 -21
- package/dist/src/observability/event-bus.js.map +1 -1
- package/dist/src/openai-compat/insight-format.d.ts +36 -0
- package/dist/src/openai-compat/insight-format.js +140 -0
- package/dist/src/openai-compat/insight-format.js.map +1 -0
- package/dist/src/openai-compat/non-streaming-handler.js +38 -58
- package/dist/src/openai-compat/non-streaming-handler.js.map +1 -1
- package/dist/src/openai-compat/openai-compat.js +23 -0
- package/dist/src/openai-compat/openai-compat.js.map +1 -1
- package/dist/src/openai-compat/response-formatter.d.ts +6 -1
- package/dist/src/openai-compat/response-formatter.js +9 -2
- package/dist/src/openai-compat/response-formatter.js.map +1 -1
- package/dist/src/openai-compat/streaming-handler.js +35 -120
- package/dist/src/openai-compat/streaming-handler.js.map +1 -1
- package/dist/src/patches/cache-parity-registry.d.ts +0 -83
- package/dist/src/patches/cache-parity-registry.js +1 -151
- package/dist/src/patches/cache-parity-registry.js.map +1 -1
- package/dist/src/session/session-manager.d.ts +8 -4
- package/dist/src/session/session-manager.js +86 -76
- package/dist/src/session/session-manager.js.map +1 -1
- package/dist/src/session-bootstrap/cwd-patch.js +35 -0
- package/dist/src/session-bootstrap/cwd-patch.js.map +1 -1
- package/mcp-tools.json +1 -1
- package/package.json +1 -1
- package/dist/src/engines/heartbeat-guard.d.ts +0 -91
- package/dist/src/engines/heartbeat-guard.js +0 -120
- package/dist/src/engines/heartbeat-guard.js.map +0 -1
- package/dist/src/engines/subprocess-pool.d.ts +0 -78
- package/dist/src/engines/subprocess-pool.js +0 -200
- package/dist/src/engines/subprocess-pool.js.map +0 -1
- package/dist/src/lib/cost-rollup.d.ts +0 -36
- package/dist/src/lib/cost-rollup.js +0 -125
- package/dist/src/lib/cost-rollup.js.map +0 -1
- package/dist/src/lifecycle/safe-restart.d.ts +0 -99
- package/dist/src/lifecycle/safe-restart.js +0 -132
- package/dist/src/lifecycle/safe-restart.js.map +0 -1
|
@@ -39,10 +39,11 @@ 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
|
|
42
|
+
import { emit as emitTrajectory } from '../lib/trajectory.js';
|
|
43
43
|
import { formatError, ERROR_CODES } from '../lib/error-formatter.js';
|
|
44
|
-
import {
|
|
44
|
+
import { getTtsAutoMode, isDoneBackstopEnabled } from '../lib/config.js';
|
|
45
45
|
import { applyVoiceRecovery, detectVoiceIntent, hasTtsMarkers, _logVoiceDebug } from './voice-recovery.js';
|
|
46
|
+
import { applyInsightAndGreetingFilters } from './insight-format.js';
|
|
46
47
|
/** Coerce a userMessage (string | UserMessageBlock[]) to a flat string
|
|
47
48
|
* for voice-intent detection. Tool-result blocks aren't user prompts. */
|
|
48
49
|
function userMessageToText(msg) {
|
|
@@ -69,14 +70,6 @@ userMessage, completionId, res, hasTools) {
|
|
|
69
70
|
Connection: 'keep-alive',
|
|
70
71
|
'X-Accel-Buffering': 'no',
|
|
71
72
|
});
|
|
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;
|
|
80
73
|
let clientDisconnected = false;
|
|
81
74
|
res.on('close', () => {
|
|
82
75
|
clientDisconnected = true;
|
|
@@ -143,14 +136,6 @@ userMessage, completionId, res, hasTools) {
|
|
|
143
136
|
// result-fallback-classifier rejects as an "incomplete terminal response".
|
|
144
137
|
// This flag drives a final-chunk backstop in each finalization branch.
|
|
145
138
|
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 = '';
|
|
154
139
|
try {
|
|
155
140
|
reportStatus('thinking', 'Processing request...');
|
|
156
141
|
await manager.sendMessage(sessionName, userMessage, {
|
|
@@ -188,7 +173,6 @@ userMessage, completionId, res, hasTools) {
|
|
|
188
173
|
// between tool_use blocks, OpenClaw client handles that fine.
|
|
189
174
|
if (chunk.length > 0)
|
|
190
175
|
streamedAnything = true;
|
|
191
|
-
accumulatedText += chunk;
|
|
192
176
|
writeSSE(JSON.stringify(formatCompletionChunk(completionId, model, { content: chunk }, null)));
|
|
193
177
|
}
|
|
194
178
|
else {
|
|
@@ -268,38 +252,8 @@ userMessage, completionId, res, hasTools) {
|
|
|
268
252
|
}
|
|
269
253
|
}
|
|
270
254
|
},
|
|
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,
|
|
291
255
|
});
|
|
292
256
|
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
|
-
}
|
|
303
257
|
// Get token usage for final chunk
|
|
304
258
|
let usage;
|
|
305
259
|
try {
|
|
@@ -318,12 +272,28 @@ userMessage, completionId, res, hasTools) {
|
|
|
318
272
|
// chunk before the finish chunk so the upstream classifier sees a
|
|
319
273
|
// payload. Skip when tool_calls were emitted — those are openai-spec
|
|
320
274
|
// valid as the only payload (multi-turn tool-use sessions).
|
|
275
|
+
//
|
|
276
|
+
// v0.17.0: gated by `isDoneBackstopEnabled()` (default true, opt-out
|
|
277
|
+
// via CC_OPENCLAW_DONE_BACKSTOP=0). Whether enabled or suppressed,
|
|
278
|
+
// we emit a `false_done_backstop` trajectory event so we can measure
|
|
279
|
+
// the firing rate independently of the safety net (plan F1 + F6).
|
|
321
280
|
const noVisiblePayload = !streamedAnything && bufferedText.length === 0 && toolCallsEmitted === 0;
|
|
322
281
|
if (noVisiblePayload) {
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
282
|
+
const backstopEnabled = isDoneBackstopEnabled();
|
|
283
|
+
emitTrajectory('false_done_backstop', {
|
|
284
|
+
path: 'streaming',
|
|
285
|
+
suppressed: !backstopEnabled,
|
|
286
|
+
model,
|
|
287
|
+
toolCallsEmitted,
|
|
288
|
+
bufferedLen: bufferedText.length,
|
|
289
|
+
useToolStream,
|
|
290
|
+
hasTools,
|
|
291
|
+
voiceIntent,
|
|
292
|
+
}, sessionName);
|
|
293
|
+
if (backstopEnabled) {
|
|
294
|
+
writeSSE(JSON.stringify(formatCompletionChunk(completionId, model, { content: 'Done.' }, null)));
|
|
295
|
+
streamedAnything = true;
|
|
296
|
+
}
|
|
327
297
|
}
|
|
328
298
|
// v0.10.3: voice-recovery emission. When voice intent was detected AND
|
|
329
299
|
// chunks were buffered (not streamed), apply recovery to bufferedText
|
|
@@ -344,7 +314,10 @@ userMessage, completionId, res, hasTools) {
|
|
|
344
314
|
});
|
|
345
315
|
if (voiceIntent && !useToolStream && bufferedText) {
|
|
346
316
|
const recovery = applyVoiceRecovery(userText, bufferedText);
|
|
347
|
-
|
|
317
|
+
// v0.18 Slice 1: strip empty insights → strip greeting → normalize
|
|
318
|
+
// fence runs. Single composite filter replaces the three separate
|
|
319
|
+
// passes the streaming handler used to need.
|
|
320
|
+
const finalText = applyInsightAndGreetingFilters(recovery.text, sessionName);
|
|
348
321
|
_logVoiceDebug('streaming.recovery', {
|
|
349
322
|
sessionName,
|
|
350
323
|
recovered: recovery.recovered,
|
|
@@ -356,10 +329,6 @@ userMessage, completionId, res, hasTools) {
|
|
|
356
329
|
if (recovery.recovered) {
|
|
357
330
|
emitTrajectory('tool_use', { name: '_voice_recovery', inputKeys: [recovery.via] }, sessionName);
|
|
358
331
|
}
|
|
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;
|
|
363
332
|
writeSSE(JSON.stringify(formatCompletionChunk(completionId, model, { content: finalText }, null)));
|
|
364
333
|
const finalChunk = formatCompletionChunk(completionId, model, {}, 'stop');
|
|
365
334
|
if (usage)
|
|
@@ -384,8 +353,11 @@ userMessage, completionId, res, hasTools) {
|
|
|
384
353
|
if (parsed.toolCalls.length > 0) {
|
|
385
354
|
// Emit text content if any
|
|
386
355
|
if (parsed.textContent) {
|
|
387
|
-
|
|
388
|
-
|
|
356
|
+
// v0.18 Slice 1: composite filter on the text portion of mixed
|
|
357
|
+
// tool+text output. Greeting-strip is rare in this path but
|
|
358
|
+
// the empty-insight pass still matters.
|
|
359
|
+
const normalizedText = applyInsightAndGreetingFilters(parsed.textContent, sessionName);
|
|
360
|
+
writeSSE(JSON.stringify(formatCompletionChunk(completionId, model, { content: normalizedText }, null)));
|
|
389
361
|
}
|
|
390
362
|
// Emit tool_call chunks
|
|
391
363
|
for (let i = 0; i < parsed.toolCalls.length; i++) {
|
|
@@ -421,8 +393,9 @@ userMessage, completionId, res, hasTools) {
|
|
|
421
393
|
}
|
|
422
394
|
else {
|
|
423
395
|
// No tool calls — emit buffered text as content
|
|
424
|
-
|
|
425
|
-
|
|
396
|
+
// v0.18 Slice 1: composite filter (strip-empty → strip-greeting → normalize).
|
|
397
|
+
const normalizedBuffered = applyInsightAndGreetingFilters(bufferedText, sessionName);
|
|
398
|
+
writeSSE(JSON.stringify(formatCompletionChunk(completionId, model, { content: normalizedBuffered }, null)));
|
|
426
399
|
const finalChunk = formatCompletionChunk(completionId, model, {}, 'stop');
|
|
427
400
|
if (usage)
|
|
428
401
|
finalChunk.usage = usage;
|
|
@@ -436,34 +409,6 @@ userMessage, completionId, res, hasTools) {
|
|
|
436
409
|
finalChunk.usage = usage;
|
|
437
410
|
writeSSE(JSON.stringify(finalChunk));
|
|
438
411
|
}
|
|
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);
|
|
467
412
|
writeSSE('[DONE]');
|
|
468
413
|
}
|
|
469
414
|
catch (err) {
|
|
@@ -472,36 +417,6 @@ userMessage, completionId, res, hasTools) {
|
|
|
472
417
|
formatError(err, { code: ERROR_CODES.SESSION_ERROR, sessionId: sessionName, details: { phase: 'handleStreaming' } });
|
|
473
418
|
writeSSE(JSON.stringify({ error: { message: err.message, type: 'server_error' } }));
|
|
474
419
|
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
|
-
}
|
|
505
420
|
}
|
|
506
421
|
finally {
|
|
507
422
|
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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"}
|
|
@@ -11,93 +11,10 @@
|
|
|
11
11
|
* refactor accidentally removes the registry writer, this probe surfaces
|
|
12
12
|
* a DriftError at boot phase 3, preventing silent cache-parity regressions
|
|
13
13
|
* of the v0.6.0 namespace-bug class.
|
|
14
|
-
*
|
|
15
|
-
* v0.16 extension (task-005):
|
|
16
|
-
* Self-recovery on namespace mismatch. When the registry detects a
|
|
17
|
-
* namespace mismatch (previously required a manual wipe), it now:
|
|
18
|
-
* 1. Clears only the mismatched namespace entries from the local cache.
|
|
19
|
-
* 2. Emits a 'cache-parity.namespace-mismatch-recovered' telemetry event
|
|
20
|
-
* via the EventBus so the drift can be observed without interruption.
|
|
21
|
-
* 3. Increments an internal restart-cycle counter so the test harness can
|
|
22
|
-
* verify N consecutive mismatches all self-recovered.
|
|
23
|
-
*
|
|
24
|
-
* The self-recovery logic lives in CacheParityRecovery (exported below)
|
|
25
|
-
* and is also exercised by the PatchSpec's expectedBehavior probe so every
|
|
26
|
-
* boot validates that recovery works before traffic starts.
|
|
27
14
|
*/
|
|
28
15
|
import type { PatchSpec } from '../lifecycle/patch-manifest.js';
|
|
29
|
-
import { EventBus } from '../observability/event-bus.js';
|
|
30
16
|
interface CacheParityTarget {
|
|
31
17
|
readonly module: Record<string, unknown>;
|
|
32
18
|
}
|
|
33
19
|
export declare const cacheParityRegistrySpec: PatchSpec<CacheParityTarget>;
|
|
34
|
-
export interface CacheParityRecoveryOptions {
|
|
35
|
-
/** EventBus for emitting 'cache-parity.namespace-mismatch-recovered'. */
|
|
36
|
-
bus: EventBus;
|
|
37
|
-
/**
|
|
38
|
-
* Path to the JSONL file where warning events are appended. Defaults to
|
|
39
|
-
* REGISTRY_PATH (cc-openclaw-cache-registry.jsonl). Overridable in tests.
|
|
40
|
-
*/
|
|
41
|
-
registryPath?: string;
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* CacheParityRecovery — self-healing logic for namespace mismatches.
|
|
45
|
-
*
|
|
46
|
-
* Previously, a namespace mismatch in the cache-parity registry required a
|
|
47
|
-
* manual wipe (OPENCLAW_CACHE_PARITY=0, delete file, re-enable). This class
|
|
48
|
-
* automates recovery:
|
|
49
|
-
* 1. Clear only the mismatched namespace's entries from the in-memory cache.
|
|
50
|
-
* 2. Emit a telemetry event so the mismatch is observable in trajectory logs.
|
|
51
|
-
* 3. Return the number of bytes cleared so the caller/test can assert on it.
|
|
52
|
-
*
|
|
53
|
-
* Lifecycle:
|
|
54
|
-
* - One instance per gateway session (or per-test via constructor injection).
|
|
55
|
-
* - restartCycle auto-increments on each recoverNamespaceMismatch() call,
|
|
56
|
-
* allowing the test harness to verify 3 consecutive recoveries.
|
|
57
|
-
* - The in-memory namespace cache is an independent Map — it does NOT write
|
|
58
|
-
* to disk (that is src/lib/cache-parity.ts's job). This keeps concerns
|
|
59
|
-
* separated and makes testing trivial.
|
|
60
|
-
*/
|
|
61
|
-
export declare class CacheParityRecovery {
|
|
62
|
-
private readonly bus;
|
|
63
|
-
private readonly registryPath;
|
|
64
|
-
/** In-memory namespace → cached prompt-hash map. */
|
|
65
|
-
private readonly namespaceCache;
|
|
66
|
-
/** Number of namespace mismatches recovered since construction. */
|
|
67
|
-
private _restartCycle;
|
|
68
|
-
constructor(opts: CacheParityRecoveryOptions);
|
|
69
|
-
/**
|
|
70
|
-
* Record a namespace entry. Called by the session bootstrap when it attaches
|
|
71
|
-
* a system prompt under a given namespace key.
|
|
72
|
-
*/
|
|
73
|
-
registerNamespace(namespace: string, promptHash: string): void;
|
|
74
|
-
/**
|
|
75
|
-
* Detect and self-recover a namespace mismatch.
|
|
76
|
-
*
|
|
77
|
-
* A mismatch is detected when `namespace` is present in the local cache
|
|
78
|
-
* but the caller reports that the live registry's hash for that namespace
|
|
79
|
-
* differs (i.e. a gateway restart changed the prompt). Recovery:
|
|
80
|
-
* 1. Measure the number of entries about to be cleared.
|
|
81
|
-
* 2. Delete the stale namespace from the in-memory cache.
|
|
82
|
-
* 3. Emit 'cache-parity.namespace-mismatch-recovered' telemetry.
|
|
83
|
-
* 4. Increment restartCycle.
|
|
84
|
-
*
|
|
85
|
-
* @returns The number of stale hash entries cleared.
|
|
86
|
-
*/
|
|
87
|
-
recoverNamespaceMismatch(namespace: string): Promise<number>;
|
|
88
|
-
/**
|
|
89
|
-
* Check whether `namespace` is present in the local cache. Used by the
|
|
90
|
-
* session bootstrap to decide whether a mismatch has occurred.
|
|
91
|
-
*/
|
|
92
|
-
hasNamespace(namespace: string): boolean;
|
|
93
|
-
/** Current number of recovered mismatch cycles. */
|
|
94
|
-
get restartCycle(): number;
|
|
95
|
-
/** Number of distinct namespaces currently tracked. */
|
|
96
|
-
get namespaceCount(): number;
|
|
97
|
-
private appendWarningToRegistry;
|
|
98
|
-
/** Expose internal cache snapshot for test assertions. */
|
|
99
|
-
_snapshotForTests(): Map<string, string[]>;
|
|
100
|
-
/** Reset to clean state — used between test cycles. */
|
|
101
|
-
_resetForTests(): void;
|
|
102
|
-
}
|
|
103
20
|
export {};
|
|
@@ -11,24 +11,7 @@
|
|
|
11
11
|
* refactor accidentally removes the registry writer, this probe surfaces
|
|
12
12
|
* a DriftError at boot phase 3, preventing silent cache-parity regressions
|
|
13
13
|
* of the v0.6.0 namespace-bug class.
|
|
14
|
-
*
|
|
15
|
-
* v0.16 extension (task-005):
|
|
16
|
-
* Self-recovery on namespace mismatch. When the registry detects a
|
|
17
|
-
* namespace mismatch (previously required a manual wipe), it now:
|
|
18
|
-
* 1. Clears only the mismatched namespace entries from the local cache.
|
|
19
|
-
* 2. Emits a 'cache-parity.namespace-mismatch-recovered' telemetry event
|
|
20
|
-
* via the EventBus so the drift can be observed without interruption.
|
|
21
|
-
* 3. Increments an internal restart-cycle counter so the test harness can
|
|
22
|
-
* verify N consecutive mismatches all self-recovered.
|
|
23
|
-
*
|
|
24
|
-
* The self-recovery logic lives in CacheParityRecovery (exported below)
|
|
25
|
-
* and is also exercised by the PatchSpec's expectedBehavior probe so every
|
|
26
|
-
* boot validates that recovery works before traffic starts.
|
|
27
14
|
*/
|
|
28
|
-
import { appendFileSync, existsSync, mkdirSync } from 'node:fs';
|
|
29
|
-
import { dirname } from 'node:path';
|
|
30
|
-
import { EventBus } from '../observability/event-bus.js';
|
|
31
|
-
import { REGISTRY_PATH } from '../lib/cache-parity.js';
|
|
32
15
|
export const cacheParityRegistrySpec = {
|
|
33
16
|
id: 'cache-parity-registry',
|
|
34
17
|
targetModule: 'src/lib/cache-parity.ts',
|
|
@@ -68,18 +51,7 @@ export const cacheParityRegistrySpec = {
|
|
|
68
51
|
return false;
|
|
69
52
|
// Determinism — same input must produce same output.
|
|
70
53
|
const hash2 = mod.hashPrompt('cc-openclaw-probe');
|
|
71
|
-
|
|
72
|
-
return false;
|
|
73
|
-
// v0.16 task-005: also verify that CacheParityRecovery can self-recover
|
|
74
|
-
// from a simulated mismatch without throwing.
|
|
75
|
-
const recovery = new CacheParityRecovery({ bus: new EventBus() });
|
|
76
|
-
try {
|
|
77
|
-
await recovery.recoverNamespaceMismatch('probe-namespace');
|
|
78
|
-
}
|
|
79
|
-
catch {
|
|
80
|
-
return false;
|
|
81
|
-
}
|
|
82
|
-
return true;
|
|
54
|
+
return hash === hash2;
|
|
83
55
|
},
|
|
84
56
|
install(_target) {
|
|
85
57
|
// Drift-detection-only mode: no install. Phase E#3 wires the
|
|
@@ -89,126 +61,4 @@ export const cacheParityRegistrySpec = {
|
|
|
89
61
|
// Drift-detection-only mode: no uninstall.
|
|
90
62
|
},
|
|
91
63
|
};
|
|
92
|
-
/**
|
|
93
|
-
* CacheParityRecovery — self-healing logic for namespace mismatches.
|
|
94
|
-
*
|
|
95
|
-
* Previously, a namespace mismatch in the cache-parity registry required a
|
|
96
|
-
* manual wipe (OPENCLAW_CACHE_PARITY=0, delete file, re-enable). This class
|
|
97
|
-
* automates recovery:
|
|
98
|
-
* 1. Clear only the mismatched namespace's entries from the in-memory cache.
|
|
99
|
-
* 2. Emit a telemetry event so the mismatch is observable in trajectory logs.
|
|
100
|
-
* 3. Return the number of bytes cleared so the caller/test can assert on it.
|
|
101
|
-
*
|
|
102
|
-
* Lifecycle:
|
|
103
|
-
* - One instance per gateway session (or per-test via constructor injection).
|
|
104
|
-
* - restartCycle auto-increments on each recoverNamespaceMismatch() call,
|
|
105
|
-
* allowing the test harness to verify 3 consecutive recoveries.
|
|
106
|
-
* - The in-memory namespace cache is an independent Map — it does NOT write
|
|
107
|
-
* to disk (that is src/lib/cache-parity.ts's job). This keeps concerns
|
|
108
|
-
* separated and makes testing trivial.
|
|
109
|
-
*/
|
|
110
|
-
export class CacheParityRecovery {
|
|
111
|
-
bus;
|
|
112
|
-
registryPath;
|
|
113
|
-
/** In-memory namespace → cached prompt-hash map. */
|
|
114
|
-
namespaceCache = new Map();
|
|
115
|
-
/** Number of namespace mismatches recovered since construction. */
|
|
116
|
-
_restartCycle = 0;
|
|
117
|
-
constructor(opts) {
|
|
118
|
-
this.bus = opts.bus;
|
|
119
|
-
this.registryPath = opts.registryPath ?? REGISTRY_PATH;
|
|
120
|
-
}
|
|
121
|
-
/**
|
|
122
|
-
* Record a namespace entry. Called by the session bootstrap when it attaches
|
|
123
|
-
* a system prompt under a given namespace key.
|
|
124
|
-
*/
|
|
125
|
-
registerNamespace(namespace, promptHash) {
|
|
126
|
-
let hashes = this.namespaceCache.get(namespace);
|
|
127
|
-
if (!hashes) {
|
|
128
|
-
hashes = [];
|
|
129
|
-
this.namespaceCache.set(namespace, hashes);
|
|
130
|
-
}
|
|
131
|
-
hashes.push(promptHash);
|
|
132
|
-
}
|
|
133
|
-
/**
|
|
134
|
-
* Detect and self-recover a namespace mismatch.
|
|
135
|
-
*
|
|
136
|
-
* A mismatch is detected when `namespace` is present in the local cache
|
|
137
|
-
* but the caller reports that the live registry's hash for that namespace
|
|
138
|
-
* differs (i.e. a gateway restart changed the prompt). Recovery:
|
|
139
|
-
* 1. Measure the number of entries about to be cleared.
|
|
140
|
-
* 2. Delete the stale namespace from the in-memory cache.
|
|
141
|
-
* 3. Emit 'cache-parity.namespace-mismatch-recovered' telemetry.
|
|
142
|
-
* 4. Increment restartCycle.
|
|
143
|
-
*
|
|
144
|
-
* @returns The number of stale hash entries cleared.
|
|
145
|
-
*/
|
|
146
|
-
async recoverNamespaceMismatch(namespace) {
|
|
147
|
-
const staleHashes = this.namespaceCache.get(namespace) ?? [];
|
|
148
|
-
const clearedBytes = staleHashes.reduce((acc, h) => acc + h.length, 0);
|
|
149
|
-
// Clear the stale namespace.
|
|
150
|
-
this.namespaceCache.delete(namespace);
|
|
151
|
-
// Increment cycle counter BEFORE emitting so the telemetry payload
|
|
152
|
-
// reflects the new cycle number.
|
|
153
|
-
this._restartCycle += 1;
|
|
154
|
-
const payload = {
|
|
155
|
-
namespace,
|
|
156
|
-
clearedBytes,
|
|
157
|
-
restartCycle: this._restartCycle,
|
|
158
|
-
};
|
|
159
|
-
// Emit telemetry — best-effort; never throw on bus errors.
|
|
160
|
-
try {
|
|
161
|
-
this.bus.emit('cache-parity.namespace-mismatch-recovered', payload);
|
|
162
|
-
}
|
|
163
|
-
catch {
|
|
164
|
-
// Best-effort.
|
|
165
|
-
}
|
|
166
|
-
// Append warning event to JSONL registry so the mismatch is observable
|
|
167
|
-
// in cc-openclaw-cache-registry.jsonl without requiring manual wipe.
|
|
168
|
-
this.appendWarningToRegistry(payload);
|
|
169
|
-
return clearedBytes;
|
|
170
|
-
}
|
|
171
|
-
/**
|
|
172
|
-
* Check whether `namespace` is present in the local cache. Used by the
|
|
173
|
-
* session bootstrap to decide whether a mismatch has occurred.
|
|
174
|
-
*/
|
|
175
|
-
hasNamespace(namespace) {
|
|
176
|
-
return this.namespaceCache.has(namespace);
|
|
177
|
-
}
|
|
178
|
-
/** Current number of recovered mismatch cycles. */
|
|
179
|
-
get restartCycle() {
|
|
180
|
-
return this._restartCycle;
|
|
181
|
-
}
|
|
182
|
-
/** Number of distinct namespaces currently tracked. */
|
|
183
|
-
get namespaceCount() {
|
|
184
|
-
return this.namespaceCache.size;
|
|
185
|
-
}
|
|
186
|
-
// ── Private helpers ──────────────────────────────────────────────────────────
|
|
187
|
-
appendWarningToRegistry(payload) {
|
|
188
|
-
try {
|
|
189
|
-
const dir = dirname(this.registryPath);
|
|
190
|
-
if (!existsSync(dir))
|
|
191
|
-
mkdirSync(dir, { recursive: true });
|
|
192
|
-
const row = JSON.stringify({
|
|
193
|
-
ts: new Date().toISOString(),
|
|
194
|
-
event: 'cache-parity.namespace-mismatch-recovered',
|
|
195
|
-
...payload,
|
|
196
|
-
});
|
|
197
|
-
appendFileSync(this.registryPath, row + '\n', 'utf8');
|
|
198
|
-
}
|
|
199
|
-
catch {
|
|
200
|
-
// Best-effort — telemetry must never block recovery.
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
// ── Test helpers ─────────────────────────────────────────────────────────────
|
|
204
|
-
/** Expose internal cache snapshot for test assertions. */
|
|
205
|
-
_snapshotForTests() {
|
|
206
|
-
return new Map(this.namespaceCache);
|
|
207
|
-
}
|
|
208
|
-
/** Reset to clean state — used between test cycles. */
|
|
209
|
-
_resetForTests() {
|
|
210
|
-
this.namespaceCache.clear();
|
|
211
|
-
this._restartCycle = 0;
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
64
|
//# sourceMappingURL=cache-parity-registry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache-parity-registry.js","sourceRoot":"","sources":["../../../src/patches/cache-parity-registry.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"cache-parity-registry.js","sourceRoot":"","sources":["../../../src/patches/cache-parity-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAQH,MAAM,CAAC,MAAM,uBAAuB,GAAiC;IACnE,EAAE,EAAE,uBAAuB;IAC3B,YAAY,EAAE,yBAAyB;IACvC,YAAY,EAAE,mCAAmC;IAEjD,KAAK,CAAC,OAAO;QACX,uEAAuE;QACvE,uEAAuE;QACvE,8DAA8D;QAC9D,MAAM,GAAG,GAAG,CAAC,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAY,CAAC;QAChE,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YAC5C,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAClE,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,GAA8B,EAAE,CAAC;IACpD,CAAC;IAED,aAAa,CAAC,MAAyB;QACrC,8DAA8D;QAC9D,qEAAqE;QACrE,sEAAsE;QACtE,gDAAgD;QAChD,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC;QAC1B,OAAO,CACL,OAAO,GAAG,CAAC,aAAa,KAAK,QAAQ;YACrC,OAAO,GAAG,CAAC,oBAAoB,KAAK,UAAU;YAC9C,OAAO,GAAG,CAAC,UAAU,KAAK,UAAU;YACpC,OAAO,GAAG,CAAC,gBAAgB,KAAK,UAAU;YAC1C,OAAO,GAAG,CAAC,YAAY,KAAK,UAAU,CACvC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,MAAyB;QAC9C,uEAAuE;QACvE,sEAAsE;QACtE,wEAAwE;QACxE,qEAAqE;QACrE,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC;QAC1B,IAAI,OAAO,GAAG,CAAC,UAAU,KAAK,UAAU;YAAE,OAAO,KAAK,CAAC;QACvD,MAAM,IAAI,GAAI,GAAG,CAAC,UAAoC,CAAC,mBAAmB,CAAC,CAAC;QAC5E,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QAChE,qDAAqD;QACrD,MAAM,KAAK,GAAI,GAAG,CAAC,UAAoC,CAAC,mBAAmB,CAAC,CAAC;QAC7E,OAAO,IAAI,KAAK,KAAK,CAAC;IACxB,CAAC;IAED,OAAO,CAAC,OAA0B;QAChC,6DAA6D;QAC7D,6DAA6D;IAC/D,CAAC;IAED,SAAS,CAAC,OAA0B;QAClC,2CAA2C;IAC7C,CAAC;CACF,CAAC"}
|
|
@@ -224,11 +224,15 @@ export declare class SessionManager {
|
|
|
224
224
|
*/
|
|
225
225
|
private _watchStalledSessions;
|
|
226
226
|
/**
|
|
227
|
-
* Resolve the
|
|
228
|
-
*
|
|
229
|
-
*
|
|
227
|
+
* v0.14.0: Resolve the split watchdog thresholds.
|
|
228
|
+
*
|
|
229
|
+
* - `idleMs` — sessions with ZERO subprocess output. Env: CC_OPENCLAW_IDLE_KILL_MS.
|
|
230
|
+
* Falls back to CC_OPENCLAW_STALLED_KILL_MS (back-compat alias).
|
|
231
|
+
* Default: IDLE_SESSION_KILL_MS (180s).
|
|
232
|
+
* - `pendingMs` — sessions emitting output but no final event. Env: CC_OPENCLAW_PENDING_KILL_MS.
|
|
233
|
+
* NOT shortened by the legacy alias. Default: PENDING_SESSION_KILL_MS (600s).
|
|
230
234
|
*/
|
|
231
|
-
private
|
|
235
|
+
private _stalledThresholds;
|
|
232
236
|
/**
|
|
233
237
|
* v0.10.1 — record a fresh subprocess spawn for the runaway-loop
|
|
234
238
|
* watchdog. Trims entries older than RUNAWAY_LOOP_WINDOW_MS so the
|