@a1hvdy/cc-openclaw 0.18.1 → 0.19.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 +14 -0
- package/dist/src/channels/telegram/completion-summary.js +2 -24
- package/dist/src/channels/telegram/completion-summary.js.map +1 -1
- package/dist/src/channels/telegram/event-reducer.js +70 -16
- package/dist/src/channels/telegram/event-reducer.js.map +1 -1
- package/dist/src/channels/telegram/live-card.d.ts +23 -90
- package/dist/src/channels/telegram/live-card.js +97 -284
- package/dist/src/channels/telegram/live-card.js.map +1 -1
- package/dist/src/channels/telegram/tool-tracker.d.ts +2 -16
- package/dist/src/channels/telegram/tool-tracker.js +18 -81
- package/dist/src/channels/telegram/tool-tracker.js.map +1 -1
- package/dist/src/config/loader.js +0 -2
- package/dist/src/config/loader.js.map +1 -1
- package/dist/src/config/schema.d.ts +1 -20
- package/dist/src/config/schema.js +1 -12
- package/dist/src/config/schema.js.map +1 -1
- package/dist/src/constants.d.ts +1 -13
- package/dist/src/constants.js +1 -13
- package/dist/src/constants.js.map +1 -1
- package/dist/src/engines/heartbeat-guard.d.ts +91 -0
- package/dist/src/engines/heartbeat-guard.js +120 -0
- package/dist/src/engines/heartbeat-guard.js.map +1 -0
- package/dist/src/engines/index.d.ts +2 -0
- package/dist/src/engines/index.js +3 -0
- package/dist/src/engines/index.js.map +1 -1
- package/dist/src/engines/persistent-session.d.ts +9 -0
- package/dist/src/engines/persistent-session.js +47 -0
- package/dist/src/engines/persistent-session.js.map +1 -1
- package/dist/src/engines/subprocess-pool.d.ts +78 -0
- package/dist/src/engines/subprocess-pool.js +200 -0
- package/dist/src/engines/subprocess-pool.js.map +1 -0
- package/dist/src/lib/config.d.ts +0 -6
- package/dist/src/lib/config.js +0 -81
- package/dist/src/lib/config.js.map +1 -1
- package/dist/src/lib/cost-rollup.d.ts +36 -0
- package/dist/src/lib/cost-rollup.js +125 -0
- package/dist/src/lib/cost-rollup.js.map +1 -0
- package/dist/src/lib/sysprompt-strip.d.ts +0 -14
- package/dist/src/lib/sysprompt-strip.js +2 -79
- package/dist/src/lib/sysprompt-strip.js.map +1 -1
- package/dist/src/lib/trajectory.d.ts +10 -1
- package/dist/src/lib/trajectory.js +37 -6
- package/dist/src/lib/trajectory.js.map +1 -1
- package/dist/src/lifecycle/safe-restart.d.ts +99 -0
- package/dist/src/lifecycle/safe-restart.js +132 -0
- package/dist/src/lifecycle/safe-restart.js.map +1 -0
- package/dist/src/observability/event-bus.d.ts +21 -0
- package/dist/src/observability/event-bus.js.map +1 -1
- package/dist/src/openai-compat/message-extractor.d.ts +5 -0
- package/dist/src/openai-compat/message-extractor.js +7 -4
- package/dist/src/openai-compat/message-extractor.js.map +1 -1
- package/dist/src/openai-compat/non-streaming-handler.d.ts +4 -1
- package/dist/src/openai-compat/non-streaming-handler.js +62 -39
- package/dist/src/openai-compat/non-streaming-handler.js.map +1 -1
- package/dist/src/openai-compat/openai-compat.js +2 -25
- package/dist/src/openai-compat/openai-compat.js.map +1 -1
- package/dist/src/openai-compat/response-formatter.d.ts +1 -6
- package/dist/src/openai-compat/response-formatter.js +2 -9
- package/dist/src/openai-compat/response-formatter.js.map +1 -1
- package/dist/src/openai-compat/skill-resolver.d.ts +12 -0
- package/dist/src/openai-compat/skill-resolver.js +19 -0
- package/dist/src/openai-compat/skill-resolver.js.map +1 -1
- package/dist/src/openai-compat/streaming-handler.d.ts +4 -1
- package/dist/src/openai-compat/streaming-handler.js +126 -36
- package/dist/src/openai-compat/streaming-handler.js.map +1 -1
- package/dist/src/patches/cache-parity-registry.d.ts +83 -0
- package/dist/src/patches/cache-parity-registry.js +151 -1
- package/dist/src/patches/cache-parity-registry.js.map +1 -1
- package/dist/src/patches/sysprompt-strip.spec.d.ts +33 -0
- package/dist/src/patches/sysprompt-strip.spec.js +53 -0
- package/dist/src/patches/sysprompt-strip.spec.js.map +1 -0
- package/dist/src/session/session-manager.d.ts +4 -8
- package/dist/src/session/session-manager.js +76 -86
- package/dist/src/session/session-manager.js.map +1 -1
- package/dist/src/session-bootstrap/cwd-patch.js +0 -35
- 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/lib/turn-trace.d.ts +0 -34
- package/dist/src/lib/turn-trace.js +0 -75
- package/dist/src/lib/turn-trace.js.map +0 -1
- package/dist/src/openai-compat/insight-format.d.ts +0 -36
- package/dist/src/openai-compat/insight-format.js +0 -140
- package/dist/src/openai-compat/insight-format.js.map +0 -1
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SubprocessPool — warm claude CLI subprocess pool for conversation-boundary recycle.
|
|
3
|
+
*
|
|
4
|
+
* DARK-FLAGGED: only consulted when OPENCLAW_SUBPROCESS_POOL=1.
|
|
5
|
+
* When the flag is off, this module is a no-op and all behaviour is
|
|
6
|
+
* byte-identical to the pre-v0.16 code path.
|
|
7
|
+
*
|
|
8
|
+
* Goal: cut Telegram cold-turn wall-clock toward direct CLI baseline
|
|
9
|
+
* (currently ~3× direct CLI) by keeping a pool of warm `claude` CLI
|
|
10
|
+
* subprocesses ready to accept the first message of a new conversation,
|
|
11
|
+
* amortising the ~800-1200ms spawn + init cost.
|
|
12
|
+
*
|
|
13
|
+
* Pool policy:
|
|
14
|
+
* - Maintains `minIdle` warm sessions (default 1).
|
|
15
|
+
* - On conversation start: borrow the head idle session; the pool
|
|
16
|
+
* immediately spawns a replacement to maintain the idle floor.
|
|
17
|
+
* - On conversation boundary (session.stop() / recycle()): return the
|
|
18
|
+
* session to the pool — the session's subprocess is killed, a fresh
|
|
19
|
+
* one is spawned and warmed, then placed back into the idle queue.
|
|
20
|
+
* - Hard cap: `maxSize` total (idle + borrowed) sessions (default 4).
|
|
21
|
+
* - Idle sessions are reaped after `idleTtlMs` (default 5 min) to
|
|
22
|
+
* avoid orphaning warm processes during quiet periods.
|
|
23
|
+
*/
|
|
24
|
+
import { EventEmitter } from 'node:events';
|
|
25
|
+
import { PersistentClaudeSession } from './persistent-session.js';
|
|
26
|
+
import { getClaudeBin } from '../lib/config.js';
|
|
27
|
+
// ─── Env gate ────────────────────────────────────────────────────────────────
|
|
28
|
+
/**
|
|
29
|
+
* Returns true only when the pool feature flag is explicitly enabled.
|
|
30
|
+
* Default off — behaviour is byte-identical to pre-v0.16 when off.
|
|
31
|
+
*/
|
|
32
|
+
export function isSubprocessPoolEnabled() {
|
|
33
|
+
return process.env.OPENCLAW_SUBPROCESS_POOL === '1';
|
|
34
|
+
}
|
|
35
|
+
// ─── SubprocessPool ──────────────────────────────────────────────────────────
|
|
36
|
+
export class SubprocessPool extends EventEmitter {
|
|
37
|
+
opts;
|
|
38
|
+
idle = [];
|
|
39
|
+
borrowed = 0;
|
|
40
|
+
reaperTimer = null;
|
|
41
|
+
_destroyed = false;
|
|
42
|
+
constructor(options) {
|
|
43
|
+
super();
|
|
44
|
+
this.opts = {
|
|
45
|
+
minIdle: options.minIdle ?? 1,
|
|
46
|
+
maxSize: options.maxSize ?? 4,
|
|
47
|
+
idleTtlMs: options.idleTtlMs ?? 300_000,
|
|
48
|
+
baseConfig: options.baseConfig,
|
|
49
|
+
claudeBin: options.claudeBin ?? getClaudeBin() ?? 'claude',
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
// ─── Lifecycle ─────────────────────────────────────────────────────────────
|
|
53
|
+
/**
|
|
54
|
+
* Start the pool: pre-warm `minIdle` sessions and schedule the idle reaper.
|
|
55
|
+
*/
|
|
56
|
+
async start() {
|
|
57
|
+
if (this._destroyed)
|
|
58
|
+
throw new Error('SubprocessPool: already destroyed');
|
|
59
|
+
await this._fillIdle();
|
|
60
|
+
this.reaperTimer = setInterval(() => this._reapStale(), 60_000);
|
|
61
|
+
// Allow the Node process to exit even if the reaper is still pending.
|
|
62
|
+
if (this.reaperTimer.unref)
|
|
63
|
+
this.reaperTimer.unref();
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Borrow a warm session for a new conversation.
|
|
67
|
+
* Returns null if pool is disabled or at capacity and no idle sessions exist.
|
|
68
|
+
* Callers MUST call recycle(session) when the conversation ends.
|
|
69
|
+
*/
|
|
70
|
+
async borrow() {
|
|
71
|
+
if (this._destroyed)
|
|
72
|
+
return null;
|
|
73
|
+
if (!isSubprocessPoolEnabled())
|
|
74
|
+
return null;
|
|
75
|
+
if (this.idle.length > 0) {
|
|
76
|
+
const entry = this.idle.shift();
|
|
77
|
+
this.borrowed++;
|
|
78
|
+
this.emit('borrow', { remaining: this.idle.length, borrowed: this.borrowed });
|
|
79
|
+
// Spawn a replacement asynchronously to restore the idle floor.
|
|
80
|
+
this._fillIdle().catch((err) => this.emit('error', err));
|
|
81
|
+
return entry.session;
|
|
82
|
+
}
|
|
83
|
+
// No idle sessions: try to spawn one on-demand if under cap.
|
|
84
|
+
const total = this.idle.length + this.borrowed;
|
|
85
|
+
if (total < this.opts.maxSize) {
|
|
86
|
+
const session = await this._spawnWarm();
|
|
87
|
+
if (session) {
|
|
88
|
+
this.borrowed++;
|
|
89
|
+
this.emit('borrow', { remaining: 0, borrowed: this.borrowed });
|
|
90
|
+
return session;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
this.emit('pool_exhausted', { borrowed: this.borrowed, maxSize: this.opts.maxSize });
|
|
94
|
+
return null;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Recycle a borrowed session back into the pool.
|
|
98
|
+
* The session's subprocess is terminated; a fresh warmed session replaces it.
|
|
99
|
+
*/
|
|
100
|
+
async recycle(session) {
|
|
101
|
+
this.borrowed = Math.max(0, this.borrowed - 1);
|
|
102
|
+
// Kill the in-use session — it has conversation state we do not want to
|
|
103
|
+
// bleed into the next borrower.
|
|
104
|
+
try {
|
|
105
|
+
session.stop();
|
|
106
|
+
}
|
|
107
|
+
catch {
|
|
108
|
+
// Ignore stop errors — process may already be gone.
|
|
109
|
+
}
|
|
110
|
+
this.emit('recycle', { idle: this.idle.length, borrowed: this.borrowed });
|
|
111
|
+
// Restore idle floor without blocking the caller.
|
|
112
|
+
this._fillIdle().catch((err) => this.emit('error', err));
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Destroy the pool: kill all idle sessions and stop the reaper.
|
|
116
|
+
*/
|
|
117
|
+
destroy() {
|
|
118
|
+
if (this._destroyed)
|
|
119
|
+
return;
|
|
120
|
+
this._destroyed = true;
|
|
121
|
+
if (this.reaperTimer) {
|
|
122
|
+
clearInterval(this.reaperTimer);
|
|
123
|
+
this.reaperTimer = null;
|
|
124
|
+
}
|
|
125
|
+
for (const entry of this.idle) {
|
|
126
|
+
try {
|
|
127
|
+
entry.session.stop();
|
|
128
|
+
}
|
|
129
|
+
catch {
|
|
130
|
+
/* ignore */
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
this.idle = [];
|
|
134
|
+
this.emit('destroyed');
|
|
135
|
+
}
|
|
136
|
+
// ─── Diagnostics ──────────────────────────────────────────────────────────
|
|
137
|
+
get stats() {
|
|
138
|
+
return { idle: this.idle.length, borrowed: this.borrowed, maxSize: this.opts.maxSize };
|
|
139
|
+
}
|
|
140
|
+
// ─── Private ──────────────────────────────────────────────────────────────
|
|
141
|
+
async _fillIdle() {
|
|
142
|
+
const needed = this.opts.minIdle - this.idle.length;
|
|
143
|
+
const capacity = this.opts.maxSize - this.idle.length - this.borrowed;
|
|
144
|
+
const toSpawn = Math.min(needed, capacity);
|
|
145
|
+
if (toSpawn <= 0)
|
|
146
|
+
return;
|
|
147
|
+
await Promise.allSettled(Array.from({ length: toSpawn }, async () => {
|
|
148
|
+
const session = await this._spawnWarm();
|
|
149
|
+
if (session && !this._destroyed) {
|
|
150
|
+
this.idle.push({ session, warmAt: Date.now() });
|
|
151
|
+
this.emit('idle_ready', { idle: this.idle.length });
|
|
152
|
+
}
|
|
153
|
+
}));
|
|
154
|
+
}
|
|
155
|
+
async _spawnWarm() {
|
|
156
|
+
try {
|
|
157
|
+
const session = new PersistentClaudeSession({
|
|
158
|
+
...this.opts.baseConfig,
|
|
159
|
+
// Pool sessions are pre-spawned without a specific task — keep
|
|
160
|
+
// them lean: no custom session ID, no resume.
|
|
161
|
+
claudeResumeId: undefined,
|
|
162
|
+
resumeSessionId: undefined,
|
|
163
|
+
customSessionId: undefined,
|
|
164
|
+
}, this.opts.claudeBin);
|
|
165
|
+
await session.start();
|
|
166
|
+
return session;
|
|
167
|
+
}
|
|
168
|
+
catch (err) {
|
|
169
|
+
this.emit('spawn_error', { error: err });
|
|
170
|
+
return null;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
_reapStale() {
|
|
174
|
+
if (this._destroyed)
|
|
175
|
+
return;
|
|
176
|
+
const now = Date.now();
|
|
177
|
+
const stale = [];
|
|
178
|
+
this.idle = this.idle.filter((entry) => {
|
|
179
|
+
if (now - entry.warmAt > this.opts.idleTtlMs) {
|
|
180
|
+
stale.push(entry);
|
|
181
|
+
return false;
|
|
182
|
+
}
|
|
183
|
+
return true;
|
|
184
|
+
});
|
|
185
|
+
for (const entry of stale) {
|
|
186
|
+
try {
|
|
187
|
+
entry.session.stop();
|
|
188
|
+
}
|
|
189
|
+
catch {
|
|
190
|
+
/* ignore */
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
if (stale.length > 0) {
|
|
194
|
+
this.emit('idle_reaped', { reaped: stale.length, remaining: this.idle.length });
|
|
195
|
+
// Restore floor if reaping dropped below minIdle.
|
|
196
|
+
this._fillIdle().catch((err) => this.emit('error', err));
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
//# sourceMappingURL=subprocess-pool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subprocess-pool.js","sourceRoot":"","sources":["../../../src/engines/subprocess-pool.ts"],"names":[],"mappings":"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"}
|
package/dist/src/lib/config.d.ts
CHANGED
|
@@ -24,7 +24,6 @@
|
|
|
24
24
|
* env-read fallback and hard-fail when ConfigService is missing.
|
|
25
25
|
*/
|
|
26
26
|
export declare function getAggressiveStripEnabled(): boolean;
|
|
27
|
-
export declare function getColdPromptStripV2Enabled(): boolean;
|
|
28
27
|
export declare function getCacheParityEnabled(): boolean;
|
|
29
28
|
/** Strict opt-in variant used by cwd-patch route patch (Track B append). */
|
|
30
29
|
export declare function isCacheParityTrackB(): boolean;
|
|
@@ -95,9 +94,4 @@ export declare function isDriftAlertsEnabled(): boolean;
|
|
|
95
94
|
export declare function getDriftDedupeWindowMs(): number;
|
|
96
95
|
export declare function isAutoRecoveryEnabled(): boolean;
|
|
97
96
|
export declare function getSurfaceThinkingEnabled(): boolean;
|
|
98
|
-
export declare function isDoneBackstopEnabled(): boolean;
|
|
99
97
|
export declare function getThinkingExcerptEnabled(): boolean;
|
|
100
|
-
export declare function getProgressCollapseMs(): number;
|
|
101
|
-
export declare function getEditIntervalMs(): number;
|
|
102
|
-
export declare function getEditBurstIntervalMs(): number;
|
|
103
|
-
export declare function getEditBurstThreshold(): number;
|
package/dist/src/lib/config.js
CHANGED
|
@@ -41,13 +41,6 @@ export function getAggressiveStripEnabled() {
|
|
|
41
41
|
return false;
|
|
42
42
|
return true;
|
|
43
43
|
}
|
|
44
|
-
// Track C v0.18 — cold-prompt strip V2. Opt-in only.
|
|
45
|
-
// Activates additional strips for stub/disabled/promoted-tail bloat in
|
|
46
|
-
// OpenClaw-injected workspace files. Default OFF for safe rollback per
|
|
47
|
-
// Track C §C3 (workspace/plans/cc-openclaw-gap-closure-v0.18.md).
|
|
48
|
-
export function getColdPromptStripV2Enabled() {
|
|
49
|
-
return process.env.OPENCLAW_COLD_PROMPT_STRIP_V2 === '1';
|
|
50
|
-
}
|
|
51
44
|
// ── Cache parity (Cluster A: dual-default split resolved) ────────────────
|
|
52
45
|
// Pre-existing latent bug at config.ts:39-42 (now historical):
|
|
53
46
|
// getCacheParityEnabled → default ON → maps to cacheParityModuleEnabled
|
|
@@ -415,20 +408,6 @@ export function getSurfaceThinkingEnabled() {
|
|
|
415
408
|
return cfg.config.surfaceThinking;
|
|
416
409
|
return process.env.CC_OPENCLAW_SURFACE_THINKING === '1';
|
|
417
410
|
}
|
|
418
|
-
// ── "Done." backstop (v0.7.2, src/openai-compat/{streaming,response-formatter}) ─
|
|
419
|
-
// Default-ON. When a turn produces zero visible payload (no text, no
|
|
420
|
-
// tool_calls), the backstop emits a minimal "Done." text chunk so the
|
|
421
|
-
// upstream "incomplete terminal response" classifier sees content and
|
|
422
|
-
// doesn't burn a retry attempt.
|
|
423
|
-
//
|
|
424
|
-
// v0.17.0: opt-out via CC_OPENCLAW_DONE_BACKSTOP=0. When disabled, we
|
|
425
|
-
// still emit a `false_done_backstop` trajectory event (suppressed=true)
|
|
426
|
-
// so we can measure how often the condition fires without the safety
|
|
427
|
-
// net. The plan (workspace/plans/openclaw-2026.5.12-cherrypick-and-bugfix.md
|
|
428
|
-
// F1 + F6) flips default after one soak cycle proves rate is acceptable.
|
|
429
|
-
export function isDoneBackstopEnabled() {
|
|
430
|
-
return process.env.CC_OPENCLAW_DONE_BACKSTOP !== '0';
|
|
431
|
-
}
|
|
432
411
|
// ── Thinking excerpt → live-card preview (v0.7.0) ────────────────────────
|
|
433
412
|
// Second-tier opt-in for surfacing thinking text on the Telegram live card.
|
|
434
413
|
// Telegram has additional surface (chat history, screenshots) so opt-in
|
|
@@ -440,64 +419,4 @@ export function getThinkingExcerptEnabled() {
|
|
|
440
419
|
return cfg.config.thinkingExcerpt;
|
|
441
420
|
return process.env.CC_OPENCLAW_THINKING_EXCERPT === '1';
|
|
442
421
|
}
|
|
443
|
-
// ── Progress card collapse delay (v0.17.0 F4) ─────────────────────────────
|
|
444
|
-
// completion-summary.ts:138-140 hardcoded 20000/30000ms collapse delays for
|
|
445
|
-
// the Savvy progress card after reply_dispatch. The card sits in full state
|
|
446
|
-
// (toolCount / elapsed / files / quality) for that window before collapsing
|
|
447
|
-
// to the minimal form ("✅ Savvy — N tools in Ms"). The screenshot evidence
|
|
448
|
-
// captured 2026-05-15 showed the full-state card lingering alongside the
|
|
449
|
-
// final answer message, making the rotation feel slow.
|
|
450
|
-
//
|
|
451
|
-
// F4 default 5000ms — the card still confirms completion visually, but
|
|
452
|
-
// collapses quickly enough to feel like a "rotation" not a "linger". Yellow
|
|
453
|
-
// (🟡, partial-error) cards use 3× to preserve more time to inspect mixed
|
|
454
|
-
// outcomes. Red (🔴) cards bypass this entirely — they stay full-state +
|
|
455
|
-
// pinned for incident review.
|
|
456
|
-
//
|
|
457
|
-
// Env override: CC_OPENCLAW_PROGRESS_COLLAPSE_MS=<ms> (>= 0; 0 means collapse
|
|
458
|
-
// instantly the next event-loop tick). Out-of-range / non-numeric values
|
|
459
|
-
// fall back to the 5000 default.
|
|
460
|
-
export function getProgressCollapseMs() {
|
|
461
|
-
const v = process.env.CC_OPENCLAW_PROGRESS_COLLAPSE_MS;
|
|
462
|
-
if (v === undefined || v === '')
|
|
463
|
-
return 5000;
|
|
464
|
-
const n = parseInt(v, 10);
|
|
465
|
-
return Number.isFinite(n) && n >= 0 ? n : 5000;
|
|
466
|
-
}
|
|
467
|
-
// ── Edit-throttle adaptive backoff (v0.17.0 F5) ──────────────────────────
|
|
468
|
-
// tool-tracker.ts:118 had a fixed `SAVVY_EDIT_INTERVAL_MS = 2000` throttle.
|
|
469
|
-
// During sub-agent fan-out turns (3+ tool starts in a single second), the
|
|
470
|
-
// fixed throttle drops state snapshots so the card feels frozen mid-burst.
|
|
471
|
-
//
|
|
472
|
-
// Adaptive logic: default 2000ms. When 3+ throttled edits arrive within a
|
|
473
|
-
// 1000ms sliding window, drop the interval to 800ms for the burst window
|
|
474
|
-
// so the card stays "live" during multi-tool turns. Telegram's editMessage
|
|
475
|
-
// rate ceiling permits this — the 2s default is conservative, not a hard
|
|
476
|
-
// API limit.
|
|
477
|
-
//
|
|
478
|
-
// All three knobs env-tunable for soak tuning; out-of-range falls back.
|
|
479
|
-
// CC_OPENCLAW_EDIT_INTERVAL_MS normal throttle (default 2000)
|
|
480
|
-
// CC_OPENCLAW_EDIT_BURST_INTERVAL_MS burst throttle (default 800)
|
|
481
|
-
// CC_OPENCLAW_EDIT_BURST_THRESHOLD edits-per-1s to engage burst (default 3)
|
|
482
|
-
export function getEditIntervalMs() {
|
|
483
|
-
const v = process.env.CC_OPENCLAW_EDIT_INTERVAL_MS;
|
|
484
|
-
if (v === undefined || v === '')
|
|
485
|
-
return 2000;
|
|
486
|
-
const n = parseInt(v, 10);
|
|
487
|
-
return Number.isFinite(n) && n >= 0 ? n : 2000;
|
|
488
|
-
}
|
|
489
|
-
export function getEditBurstIntervalMs() {
|
|
490
|
-
const v = process.env.CC_OPENCLAW_EDIT_BURST_INTERVAL_MS;
|
|
491
|
-
if (v === undefined || v === '')
|
|
492
|
-
return 800;
|
|
493
|
-
const n = parseInt(v, 10);
|
|
494
|
-
return Number.isFinite(n) && n >= 0 ? n : 800;
|
|
495
|
-
}
|
|
496
|
-
export function getEditBurstThreshold() {
|
|
497
|
-
const v = process.env.CC_OPENCLAW_EDIT_BURST_THRESHOLD;
|
|
498
|
-
if (v === undefined || v === '')
|
|
499
|
-
return 3;
|
|
500
|
-
const n = parseInt(v, 10);
|
|
501
|
-
return Number.isFinite(n) && n >= 1 ? n : 3;
|
|
502
|
-
}
|
|
503
422
|
//# sourceMappingURL=config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/lib/config.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/lib/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v0.16 task-012 — cost rollup.
|
|
3
|
+
*
|
|
4
|
+
* Aggregates per-turn entries from `cc-openclaw-cost.jsonl` (emitted by the
|
|
5
|
+
* openai-compat handlers) into daily and ISO-week buckets, with per-model
|
|
6
|
+
* pricing applied to compute USD cost. Pure function — accepts a file path
|
|
7
|
+
* and returns a structured aggregate. Consumer is the `/status` command +
|
|
8
|
+
* the workspace `metrics` skill.
|
|
9
|
+
*
|
|
10
|
+
* JSONL line shape (from streaming-handler.ts + non-streaming-handler.ts):
|
|
11
|
+
* { ts, sessionId, turn, model, inputTokens, outputTokens, durationMs }
|
|
12
|
+
*
|
|
13
|
+
* `costUsd` is NOT in the JSONL — it's computed here from the `model` field
|
|
14
|
+
* via the pricing table. Model values can be either full IDs
|
|
15
|
+
* (`claude-opus-4-7`) or shorthand (`opus`, `sonnet`, `haiku`). Pricing per
|
|
16
|
+
* 1M tokens, Anthropic public list pricing as of 2026-Q2. Unknown models
|
|
17
|
+
* fall back to sonnet-rate so the aggregate is never NaN.
|
|
18
|
+
*/
|
|
19
|
+
interface BucketAggregate {
|
|
20
|
+
tokensIn: number;
|
|
21
|
+
tokensOut: number;
|
|
22
|
+
turns: number;
|
|
23
|
+
costUsd: number;
|
|
24
|
+
durationMsTotal: number;
|
|
25
|
+
}
|
|
26
|
+
export interface CostRollupResult {
|
|
27
|
+
daily: Record<string, BucketAggregate>;
|
|
28
|
+
weekly: Record<string, BucketAggregate>;
|
|
29
|
+
totals: BucketAggregate;
|
|
30
|
+
rowCount: number;
|
|
31
|
+
skippedCount: number;
|
|
32
|
+
}
|
|
33
|
+
export declare function rollupCosts(jsonlPath: string): CostRollupResult;
|
|
34
|
+
/** Compact one-line summary for /status output. */
|
|
35
|
+
export declare function formatRollupLine(rollup: CostRollupResult, today: string): string;
|
|
36
|
+
export {};
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v0.16 task-012 — cost rollup.
|
|
3
|
+
*
|
|
4
|
+
* Aggregates per-turn entries from `cc-openclaw-cost.jsonl` (emitted by the
|
|
5
|
+
* openai-compat handlers) into daily and ISO-week buckets, with per-model
|
|
6
|
+
* pricing applied to compute USD cost. Pure function — accepts a file path
|
|
7
|
+
* and returns a structured aggregate. Consumer is the `/status` command +
|
|
8
|
+
* the workspace `metrics` skill.
|
|
9
|
+
*
|
|
10
|
+
* JSONL line shape (from streaming-handler.ts + non-streaming-handler.ts):
|
|
11
|
+
* { ts, sessionId, turn, model, inputTokens, outputTokens, durationMs }
|
|
12
|
+
*
|
|
13
|
+
* `costUsd` is NOT in the JSONL — it's computed here from the `model` field
|
|
14
|
+
* via the pricing table. Model values can be either full IDs
|
|
15
|
+
* (`claude-opus-4-7`) or shorthand (`opus`, `sonnet`, `haiku`). Pricing per
|
|
16
|
+
* 1M tokens, Anthropic public list pricing as of 2026-Q2. Unknown models
|
|
17
|
+
* fall back to sonnet-rate so the aggregate is never NaN.
|
|
18
|
+
*/
|
|
19
|
+
import * as fs from 'node:fs';
|
|
20
|
+
const PRICING = {
|
|
21
|
+
'claude-opus-4-7': { inputPerM: 15, outputPerM: 75 },
|
|
22
|
+
'claude-opus-4-6': { inputPerM: 15, outputPerM: 75 },
|
|
23
|
+
opus: { inputPerM: 15, outputPerM: 75 },
|
|
24
|
+
'claude-sonnet-4-6': { inputPerM: 3, outputPerM: 15 },
|
|
25
|
+
'claude-sonnet-4-5': { inputPerM: 3, outputPerM: 15 },
|
|
26
|
+
sonnet: { inputPerM: 3, outputPerM: 15 },
|
|
27
|
+
'claude-haiku-4-5': { inputPerM: 0.8, outputPerM: 4 },
|
|
28
|
+
'claude-haiku-4-5-20251001': { inputPerM: 0.8, outputPerM: 4 },
|
|
29
|
+
haiku: { inputPerM: 0.8, outputPerM: 4 },
|
|
30
|
+
};
|
|
31
|
+
const DEFAULT_PRICING = PRICING.sonnet;
|
|
32
|
+
function resolvePricing(model) {
|
|
33
|
+
if (PRICING[model])
|
|
34
|
+
return PRICING[model];
|
|
35
|
+
const lower = model.toLowerCase();
|
|
36
|
+
for (const key of Object.keys(PRICING)) {
|
|
37
|
+
if (lower.includes(key))
|
|
38
|
+
return PRICING[key];
|
|
39
|
+
}
|
|
40
|
+
return DEFAULT_PRICING;
|
|
41
|
+
}
|
|
42
|
+
function computeCostUsd(row) {
|
|
43
|
+
const p = resolvePricing(row.model);
|
|
44
|
+
return (row.inputTokens / 1_000_000) * p.inputPerM + (row.outputTokens / 1_000_000) * p.outputPerM;
|
|
45
|
+
}
|
|
46
|
+
function isoDateKey(ts) {
|
|
47
|
+
return ts.slice(0, 10);
|
|
48
|
+
}
|
|
49
|
+
/** ISO-8601 week key: `<YYYY>-W<WW>`. Week 1 contains the first Thursday. */
|
|
50
|
+
function isoWeekKey(ts) {
|
|
51
|
+
const d = new Date(ts);
|
|
52
|
+
if (Number.isNaN(d.getTime()))
|
|
53
|
+
return 'invalid';
|
|
54
|
+
const target = new Date(Date.UTC(d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate()));
|
|
55
|
+
const day = target.getUTCDay() || 7;
|
|
56
|
+
target.setUTCDate(target.getUTCDate() + 4 - day);
|
|
57
|
+
const yearStart = new Date(Date.UTC(target.getUTCFullYear(), 0, 1));
|
|
58
|
+
const weekNum = Math.ceil(((target.getTime() - yearStart.getTime()) / 86_400_000 + 1) / 7);
|
|
59
|
+
return `${target.getUTCFullYear()}-W${String(weekNum).padStart(2, '0')}`;
|
|
60
|
+
}
|
|
61
|
+
function emptyBucket() {
|
|
62
|
+
return { tokensIn: 0, tokensOut: 0, turns: 0, costUsd: 0, durationMsTotal: 0 };
|
|
63
|
+
}
|
|
64
|
+
function addToBucket(bucket, row, cost) {
|
|
65
|
+
bucket.tokensIn += row.inputTokens;
|
|
66
|
+
bucket.tokensOut += row.outputTokens;
|
|
67
|
+
bucket.turns += 1;
|
|
68
|
+
bucket.costUsd += cost;
|
|
69
|
+
bucket.durationMsTotal += row.durationMs ?? 0;
|
|
70
|
+
}
|
|
71
|
+
export function rollupCosts(jsonlPath) {
|
|
72
|
+
const result = {
|
|
73
|
+
daily: {},
|
|
74
|
+
weekly: {},
|
|
75
|
+
totals: emptyBucket(),
|
|
76
|
+
rowCount: 0,
|
|
77
|
+
skippedCount: 0,
|
|
78
|
+
};
|
|
79
|
+
let raw;
|
|
80
|
+
try {
|
|
81
|
+
raw = fs.readFileSync(jsonlPath, 'utf8');
|
|
82
|
+
}
|
|
83
|
+
catch {
|
|
84
|
+
return result;
|
|
85
|
+
}
|
|
86
|
+
for (const line of raw.split('\n')) {
|
|
87
|
+
if (!line.trim())
|
|
88
|
+
continue;
|
|
89
|
+
let row;
|
|
90
|
+
try {
|
|
91
|
+
row = JSON.parse(line);
|
|
92
|
+
}
|
|
93
|
+
catch {
|
|
94
|
+
result.skippedCount += 1;
|
|
95
|
+
continue;
|
|
96
|
+
}
|
|
97
|
+
if (!row.ts || typeof row.inputTokens !== 'number' || typeof row.outputTokens !== 'number') {
|
|
98
|
+
result.skippedCount += 1;
|
|
99
|
+
continue;
|
|
100
|
+
}
|
|
101
|
+
const dayKey = isoDateKey(row.ts);
|
|
102
|
+
const weekKey = isoWeekKey(row.ts);
|
|
103
|
+
const cost = computeCostUsd(row);
|
|
104
|
+
if (!result.daily[dayKey])
|
|
105
|
+
result.daily[dayKey] = emptyBucket();
|
|
106
|
+
if (!result.weekly[weekKey])
|
|
107
|
+
result.weekly[weekKey] = emptyBucket();
|
|
108
|
+
addToBucket(result.daily[dayKey], row, cost);
|
|
109
|
+
addToBucket(result.weekly[weekKey], row, cost);
|
|
110
|
+
addToBucket(result.totals, row, cost);
|
|
111
|
+
result.rowCount += 1;
|
|
112
|
+
}
|
|
113
|
+
return result;
|
|
114
|
+
}
|
|
115
|
+
/** Compact one-line summary for /status output. */
|
|
116
|
+
export function formatRollupLine(rollup, today) {
|
|
117
|
+
const day = rollup.daily[today] ?? emptyBucket();
|
|
118
|
+
const yearWeek = isoWeekKey(`${today}T00:00:00Z`);
|
|
119
|
+
const week = rollup.weekly[yearWeek] ?? emptyBucket();
|
|
120
|
+
return [
|
|
121
|
+
`today $${day.costUsd.toFixed(4)} (${day.turns} turns, ${day.tokensIn + day.tokensOut} tok)`,
|
|
122
|
+
`week $${week.costUsd.toFixed(4)} (${week.turns} turns, ${week.tokensIn + week.tokensOut} tok)`,
|
|
123
|
+
].join(' | ');
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=cost-rollup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cost-rollup.js","sourceRoot":"","sources":["../../../src/lib/cost-rollup.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,18 +14,6 @@
|
|
|
14
14
|
* Source: savvy-claude-code/cwd-enhancer.js lines 800–856 (inside applyRoutePatch)
|
|
15
15
|
* Original P1 port: src/session-bootstrap/sysprompt-strip.ts
|
|
16
16
|
*/
|
|
17
|
-
/**
|
|
18
|
-
* Extract the last ★ Insight block from assistant text, applying the same
|
|
19
|
-
* empty-body and length guards as the renderer-side tips-engine.
|
|
20
|
-
*
|
|
21
|
-
* Returns null when:
|
|
22
|
-
* - no fence is found
|
|
23
|
-
* - the body is whitespace-only
|
|
24
|
-
* - the body is shorter than MIN_INSIGHT_CHARS (20)
|
|
25
|
-
*
|
|
26
|
-
* Used by trajectory.ts to avoid emitting empty insight_strip events.
|
|
27
|
-
*/
|
|
28
|
-
export declare function extractInsight(assistantText: string | null | undefined): string | null;
|
|
29
17
|
export interface StripOptions {
|
|
30
18
|
/** Override env detection — force strip enabled. Used by tests + lifecycle wiring. */
|
|
31
19
|
forceEnabled?: boolean;
|
|
@@ -38,8 +26,6 @@ export interface StripResult {
|
|
|
38
26
|
changed: boolean;
|
|
39
27
|
/** true if aggressive strip made additional changes (always true when enabled) */
|
|
40
28
|
aggressiveStripped: boolean;
|
|
41
|
-
/** true if Track C v2 cold-prompt strips applied (opt-in via OPENCLAW_COLD_PROMPT_STRIP_V2=1) */
|
|
42
|
-
coldPromptV2Stripped?: boolean;
|
|
43
29
|
}
|
|
44
30
|
/**
|
|
45
31
|
* Resolve whether strip should run based on env + options.
|