claude-code-infinite 1.0.20 → 1.0.22
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 +165 -30
- package/dist/auto-update-runner.d.ts +52 -0
- package/dist/auto-update-runner.d.ts.map +1 -0
- package/dist/auto-update-runner.js +307 -0
- package/dist/auto-update-runner.js.map +1 -0
- package/dist/auto-update-setup.d.ts +38 -0
- package/dist/auto-update-setup.d.ts.map +1 -0
- package/dist/auto-update-setup.js +72 -0
- package/dist/auto-update-setup.js.map +1 -0
- package/dist/auto-update.d.ts +170 -0
- package/dist/auto-update.d.ts.map +1 -0
- package/dist/auto-update.js +401 -0
- package/dist/auto-update.js.map +1 -0
- package/dist/claude-env.d.ts +14 -1
- package/dist/claude-env.d.ts.map +1 -1
- package/dist/claude-env.js +17 -1
- package/dist/claude-env.js.map +1 -1
- package/dist/cli-lifecycle.d.ts +4 -0
- package/dist/cli-lifecycle.d.ts.map +1 -1
- package/dist/cli-lifecycle.js +18 -0
- package/dist/cli-lifecycle.js.map +1 -1
- package/dist/cli-main.js +139 -19
- package/dist/cli-main.js.map +1 -1
- package/dist/config.d.ts +4 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js.map +1 -1
- package/dist/count-tokens.d.ts +38 -3
- package/dist/count-tokens.d.ts.map +1 -1
- package/dist/count-tokens.js +94 -19
- package/dist/count-tokens.js.map +1 -1
- package/dist/diagnostics-schema.d.ts +44 -0
- package/dist/diagnostics-schema.d.ts.map +1 -0
- package/dist/diagnostics-schema.js +162 -0
- package/dist/diagnostics-schema.js.map +1 -0
- package/dist/diagnostics.d.ts +116 -0
- package/dist/diagnostics.d.ts.map +1 -0
- package/dist/diagnostics.js +316 -0
- package/dist/diagnostics.js.map +1 -0
- package/dist/first-tree.d.ts +11 -0
- package/dist/first-tree.d.ts.map +1 -0
- package/dist/first-tree.js +45 -0
- package/dist/first-tree.js.map +1 -0
- package/dist/hooks.d.ts +37 -0
- package/dist/hooks.d.ts.map +1 -1
- package/dist/hooks.js +69 -9
- package/dist/hooks.js.map +1 -1
- package/dist/memtree-finder.d.ts +11 -0
- package/dist/memtree-finder.d.ts.map +1 -1
- package/dist/memtree-finder.js +18 -0
- package/dist/memtree-finder.js.map +1 -1
- package/dist/memtree-links.d.ts +2 -0
- package/dist/memtree-links.d.ts.map +1 -1
- package/dist/memtree-links.js +4 -0
- package/dist/memtree-links.js.map +1 -1
- package/dist/memtree-mcp-config.d.ts.map +1 -1
- package/dist/memtree-mcp-config.js +4 -2
- package/dist/memtree-mcp-config.js.map +1 -1
- package/dist/memtree-mcp.d.ts +24 -4
- package/dist/memtree-mcp.d.ts.map +1 -1
- package/dist/memtree-mcp.js +47 -14
- package/dist/memtree-mcp.js.map +1 -1
- package/dist/memtree-tools.d.ts +17 -1
- package/dist/memtree-tools.d.ts.map +1 -1
- package/dist/memtree-tools.js +50 -2
- package/dist/memtree-tools.js.map +1 -1
- package/dist/memtree.d.ts +17 -1
- package/dist/memtree.d.ts.map +1 -1
- package/dist/memtree.js +62 -19
- package/dist/memtree.js.map +1 -1
- package/dist/notices.d.ts +6 -1
- package/dist/notices.d.ts.map +1 -1
- package/dist/notices.js +13 -1
- package/dist/notices.js.map +1 -1
- package/dist/prefix-store.js +3 -0
- package/dist/prefix-store.js.map +1 -1
- package/dist/proxy.d.ts +45 -3
- package/dist/proxy.d.ts.map +1 -1
- package/dist/proxy.js +193 -54
- package/dist/proxy.js.map +1 -1
- package/dist/reqlog.d.ts +27 -1
- package/dist/reqlog.d.ts.map +1 -1
- package/dist/reqlog.js.map +1 -1
- package/dist/request-sizing.d.ts +21 -2
- package/dist/request-sizing.d.ts.map +1 -1
- package/dist/request-sizing.js +60 -7
- package/dist/request-sizing.js.map +1 -1
- package/dist/resume-hint.d.ts +25 -0
- package/dist/resume-hint.d.ts.map +1 -0
- package/dist/resume-hint.js +36 -0
- package/dist/resume-hint.js.map +1 -0
- package/dist/token-estimate.d.ts +35 -0
- package/dist/token-estimate.d.ts.map +1 -0
- package/dist/token-estimate.js +97 -0
- package/dist/token-estimate.js.map +1 -0
- package/dist/update-check.d.ts +4 -3
- package/dist/update-check.d.ts.map +1 -1
- package/dist/update-check.js +4 -3
- package/dist/update-check.js.map +1 -1
- package/dist/update-lock.d.ts +68 -0
- package/dist/update-lock.d.ts.map +1 -0
- package/dist/update-lock.js +176 -0
- package/dist/update-lock.js.map +1 -0
- package/package.json +3 -3
package/dist/count-tokens.js
CHANGED
|
@@ -16,8 +16,33 @@
|
|
|
16
16
|
import { createHash } from "node:crypto";
|
|
17
17
|
import https from "node:https";
|
|
18
18
|
import { approxTokensFromBytes } from "./reqlog.js";
|
|
19
|
-
/**
|
|
19
|
+
/**
|
|
20
|
+
* A request's counting allowance: past it the caller keeps its estimate.
|
|
21
|
+
* Measured 2026-10-15 (reports/2026-10-15-count-tokens-latency.md): latency is
|
|
22
|
+
* upload-bound, ~0.2 s plus body bytes at ~12 MB/s on a fast uplink (27 MB in
|
|
23
|
+
* ~2.5 s, text or images alike), so a flat 3 s timed out on the 17-27 MB
|
|
24
|
+
* image-heavy bodies that most needed a count. The allowance is 3 s plus 1 ms
|
|
25
|
+
* per kB (a 1 MB/s, 8 Mbit/s uplink), capped at 30 s. It only binds when the
|
|
26
|
+
* count is slow: a fast count returns as soon as it is done.
|
|
27
|
+
*/
|
|
20
28
|
export const COUNT_TOKENS_TIMEOUT_MS = 3_000;
|
|
29
|
+
/**
|
|
30
|
+
* Less deadline than this left is none: no count completes that fast, and a
|
|
31
|
+
* timer can fire a millisecond before Date.now() says it is due (Node 20), so
|
|
32
|
+
* a timed-out attempt would otherwise leave a sliver for a pointless second one.
|
|
33
|
+
*/
|
|
34
|
+
const MIN_COUNT_ATTEMPT_MS = 5;
|
|
35
|
+
/** Upload rate the allowance still covers, in bytes per ms (1 MB/s). */
|
|
36
|
+
export const COUNT_UPLOAD_BYTES_PER_MS = 1_000;
|
|
37
|
+
/** Most a request waits on counting, however large its bodies. */
|
|
38
|
+
export const COUNT_DEADLINE_MAX_MS = 30_000;
|
|
39
|
+
/**
|
|
40
|
+
* Anthropic's request size limit, the same on Messages and Count Tokens:
|
|
41
|
+
* 67,108,864 bytes (64 MiB) is accepted, one byte more is answered 413
|
|
42
|
+
* request_too_large from Content-Length alone (measured 2026-10-15). A body
|
|
43
|
+
* over it cannot be sent natively at all, so it is never counted.
|
|
44
|
+
*/
|
|
45
|
+
export const ANTHROPIC_MAX_REQUEST_BYTES = 64 * 1024 * 1024;
|
|
21
46
|
const MAX_COUNT_RESPONSE_BYTES = 64 * 1024;
|
|
22
47
|
const MAX_COUNT_COOLDOWNS = 128;
|
|
23
48
|
const COUNT_COOLDOWN_MS = 60_000;
|
|
@@ -43,6 +68,15 @@ const COUNTABLE_FIELDS = [
|
|
|
43
68
|
"context_management", "output_config", "output_format", "cache_control",
|
|
44
69
|
"mcp_servers", "speed", "compaction",
|
|
45
70
|
];
|
|
71
|
+
/** The counting allowance for a body of `bytes` (see COUNT_TOKENS_TIMEOUT_MS). */
|
|
72
|
+
export function countDeadlineMs(bytes) {
|
|
73
|
+
const extra = Number.isFinite(bytes) && bytes > 0 ? Math.ceil(bytes / COUNT_UPLOAD_BYTES_PER_MS) : 0;
|
|
74
|
+
return Math.min(COUNT_DEADLINE_MAX_MS, COUNT_TOKENS_TIMEOUT_MS + extra);
|
|
75
|
+
}
|
|
76
|
+
/** Whether Anthropic rejects a body of `bytes` as too large (413), unseen. */
|
|
77
|
+
export function exceedsRequestLimit(bytes) {
|
|
78
|
+
return bytes > ANTHROPIC_MAX_REQUEST_BYTES;
|
|
79
|
+
}
|
|
46
80
|
/** Whether a sample's tokens-per-byte ratio can describe a request body. */
|
|
47
81
|
export function plausibleSample(sample) {
|
|
48
82
|
if (!sample || !(sample.tokens > 0) || !(sample.forwardedBytes > 0))
|
|
@@ -100,12 +134,18 @@ export class CountTokensCooldowns {
|
|
|
100
134
|
this.entries.set(key, now + cooldownDuration(result.retryAfter, now));
|
|
101
135
|
}
|
|
102
136
|
}
|
|
103
|
-
/**
|
|
137
|
+
/**
|
|
138
|
+
* Exact results belong to this request and body, never a shared sample slot.
|
|
139
|
+
* All counts of one request share one allowance: the largest body's
|
|
140
|
+
* (countDeadlineMs), spent only while a count is in flight, so time between
|
|
141
|
+
* counts (a compression before the replacement is counted) is not charged.
|
|
142
|
+
*/
|
|
104
143
|
export function createCountTokensSession(options, cooldowns = new CountTokensCooldowns()) {
|
|
105
144
|
const pending = new Map();
|
|
106
145
|
const completed = new Map();
|
|
107
146
|
const account = countAccountKey(options);
|
|
108
|
-
|
|
147
|
+
const clock = new CountingClock();
|
|
148
|
+
let allowance = 0;
|
|
109
149
|
return {
|
|
110
150
|
peek: (body) => completed.get(bodyHash(body)),
|
|
111
151
|
count: (body) => {
|
|
@@ -113,22 +153,19 @@ export function createCountTokensSession(options, cooldowns = new CountTokensCoo
|
|
|
113
153
|
const existing = pending.get(key);
|
|
114
154
|
if (existing)
|
|
115
155
|
return existing;
|
|
116
|
-
|
|
117
|
-
|
|
156
|
+
const tooLarge = exceedsRequestLimit(body.length);
|
|
157
|
+
if (!tooLarge)
|
|
158
|
+
allowance = Math.max(allowance, requestAllowance(options, body.length));
|
|
159
|
+
const remaining = allowance - clock.spent();
|
|
118
160
|
const skipped = options.signal?.aborted ? "aborted"
|
|
119
|
-
:
|
|
161
|
+
: tooLarge ? "too-large" : cooldowns.active(account) ? "cooldown"
|
|
162
|
+
: remaining < MIN_COUNT_ATTEMPT_MS ? "deadline" : undefined;
|
|
120
163
|
const attempt = skipped
|
|
121
|
-
? Promise.resolve({ ms: 0, outcome: skipped })
|
|
122
|
-
: countUpstreamTokens({ ...options, body, timeoutMs: remaining })
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
options.onAttempt?.(result);
|
|
127
|
-
}
|
|
128
|
-
catch { /* diagnostics cannot break forwarding */ }
|
|
129
|
-
}
|
|
130
|
-
return result;
|
|
131
|
-
});
|
|
164
|
+
? Promise.resolve({ ms: 0, outcome: skipped, bytes: body.length })
|
|
165
|
+
: clock.track(() => countUpstreamTokens({ ...options, body, timeoutMs: remaining }))
|
|
166
|
+
.then((result) => recordAttempt(options, cooldowns, account, result));
|
|
167
|
+
if (skipped === "too-large")
|
|
168
|
+
attempt.then((result) => notifyAttempt(options, result));
|
|
132
169
|
const saved = attempt.then((result) => { completed.set(key, result); return result; });
|
|
133
170
|
pending.set(key, saved);
|
|
134
171
|
return saved;
|
|
@@ -138,12 +175,16 @@ export function createCountTokensSession(options, cooldowns = new CountTokensCoo
|
|
|
138
175
|
/** All failures resolve without tokens, including synchronous request errors. */
|
|
139
176
|
export function countUpstreamTokens(args) {
|
|
140
177
|
const started = Date.now();
|
|
178
|
+
const timeoutMs = args.timeoutMs ?? COUNT_TOKENS_TIMEOUT_MS;
|
|
141
179
|
const payload = countTokensBody(args.body);
|
|
142
180
|
if (!payload || args.signal?.aborted)
|
|
143
181
|
return Promise.resolve({
|
|
144
182
|
ms: 0, outcome: args.signal?.aborted ? "aborted" : "invalid-request",
|
|
145
183
|
});
|
|
146
|
-
const
|
|
184
|
+
const bytes = payload.length;
|
|
185
|
+
if (exceedsRequestLimit(bytes))
|
|
186
|
+
return Promise.resolve({ ms: 0, outcome: "too-large", bytes });
|
|
187
|
+
const remaining = timeoutMs - (Date.now() - started);
|
|
147
188
|
if (remaining <= 0)
|
|
148
189
|
return Promise.resolve({ ms: Date.now() - started, outcome: "deadline" });
|
|
149
190
|
return new Promise((resolve) => {
|
|
@@ -156,7 +197,7 @@ export function countUpstreamTokens(args) {
|
|
|
156
197
|
done = true;
|
|
157
198
|
clearTimeout(timer);
|
|
158
199
|
args.signal?.removeEventListener("abort", abort);
|
|
159
|
-
resolve({ ...result, ms: Date.now() - started });
|
|
200
|
+
resolve({ ...result, ms: Date.now() - started, bytes, timeoutMs: remaining });
|
|
160
201
|
request?.destroy();
|
|
161
202
|
};
|
|
162
203
|
const abort = () => finish({ outcome: "aborted" });
|
|
@@ -274,4 +315,38 @@ function cooldownDuration(retryAfter, now) {
|
|
|
274
315
|
return Number.isFinite(duration)
|
|
275
316
|
? Math.max(1000, Math.min(COUNT_COOLDOWN_MS, duration)) : COUNT_COOLDOWN_MS;
|
|
276
317
|
}
|
|
318
|
+
function requestAllowance(options, bytes) {
|
|
319
|
+
return options.timeoutMs ?? (options.deadlineMs ?? countDeadlineMs)(bytes);
|
|
320
|
+
}
|
|
321
|
+
function recordAttempt(options, cooldowns, account, result) {
|
|
322
|
+
cooldowns.record(account, result);
|
|
323
|
+
if (result.outcome !== "invalid-request" && result.outcome !== "deadline") {
|
|
324
|
+
notifyAttempt(options, result);
|
|
325
|
+
}
|
|
326
|
+
return result;
|
|
327
|
+
}
|
|
328
|
+
function notifyAttempt(options, result) {
|
|
329
|
+
try {
|
|
330
|
+
options.onAttempt?.(result);
|
|
331
|
+
}
|
|
332
|
+
catch { /* diagnostics cannot break forwarding */ }
|
|
333
|
+
}
|
|
334
|
+
/** Wall time with at least one count in flight: what a request's allowance is spent on. */
|
|
335
|
+
class CountingClock {
|
|
336
|
+
inFlight = 0;
|
|
337
|
+
since = 0;
|
|
338
|
+
total = 0;
|
|
339
|
+
spent() {
|
|
340
|
+
return this.total + (this.inFlight > 0 ? Date.now() - this.since : 0);
|
|
341
|
+
}
|
|
342
|
+
/** Starts the clock before `start` runs: preparing the count body is counting time too. */
|
|
343
|
+
track(start) {
|
|
344
|
+
if (this.inFlight++ === 0)
|
|
345
|
+
this.since = Date.now();
|
|
346
|
+
return start().finally(() => {
|
|
347
|
+
if (--this.inFlight === 0)
|
|
348
|
+
this.total += Date.now() - this.since;
|
|
349
|
+
});
|
|
350
|
+
}
|
|
351
|
+
}
|
|
277
352
|
//# sourceMappingURL=count-tokens.js.map
|
package/dist/count-tokens.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"count-tokens.js","sourceRoot":"","sources":["../src/count-tokens.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"count-tokens.js","sourceRoot":"","sources":["../src/count-tokens.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Allowlist for client diagnostics (polychat plans/2026-10-16_PLAN_ccc_client_diagnostics.md).
|
|
3
|
+
*
|
|
4
|
+
* Every event is rebuilt here from named fields only, each checked against an enum, a tight
|
|
5
|
+
* pattern or an integer range; anything else is dropped before it is queued. The server
|
|
6
|
+
* (polychat/ccc_diagnostics.py) enforces the same list again. There is no free-text field:
|
|
7
|
+
* errors travel as codes, because a Node error message can quote its input (JSON.parse
|
|
8
|
+
* does) and so carry conversation content.
|
|
9
|
+
*/
|
|
10
|
+
export declare const DIAGNOSTICS_SCHEMA = 1;
|
|
11
|
+
type Validator = (value: unknown) => unknown;
|
|
12
|
+
/**
|
|
13
|
+
* Error codes and class names are fixed vocabularies; anything else is sent as "other"
|
|
14
|
+
* (errnoName / errorClassName). A shape check would let a project or customer name through.
|
|
15
|
+
*/
|
|
16
|
+
export declare const ERRNOS: readonly ["EACCES", "EPERM", "ENOENT", "ENOTDIR", "EISDIR", "EEXIST", "ENOSPC", "EROFS", "EMFILE", "EBUSY", "ECONNREFUSED", "ECONNRESET", "ECONNABORTED", "ETIMEDOUT", "ENOTFOUND", "EAI_AGAIN", "EHOSTUNREACH", "ENETUNREACH", "EPIPE", "EADDRINUSE", "ERR_INVALID_URL", "UND_ERR_CONNECT_TIMEOUT", "UND_ERR_SOCKET", "UND_ERR_HEADERS_TIMEOUT", "CERT_HAS_EXPIRED", "UNABLE_TO_VERIFY_LEAF_SIGNATURE", "SELF_SIGNED_CERT_IN_CHAIN", "DEPTH_ZERO_SELF_SIGNED_CERT", "ERR_TLS_CERT_ALTNAME_INVALID", "other"];
|
|
17
|
+
export declare const SIGNALS: readonly ["SIGINT", "SIGTERM", "SIGKILL", "SIGHUP", "SIGQUIT", "SIGABRT", "SIGSEGV", "SIGBUS", "SIGPIPE", "SIGUSR1", "SIGUSR2", "SIGTSTP", "SIGILL", "SIGFPE", "SIGTRAP", "SIGSYS", "SIGXCPU", "SIGXFSZ", "SIGALRM", "other"];
|
|
18
|
+
/** A signal name from the fixed list, else "other"; undefined when there is none. */
|
|
19
|
+
export declare function signalName(value: unknown): string | undefined;
|
|
20
|
+
export declare const ERROR_NAMES: readonly ["Error", "TypeError", "RangeError", "SyntaxError", "ReferenceError", "AbortError", "TimeoutError", "SystemError", "other"];
|
|
21
|
+
/** A Node errno code from the fixed list, else "other"; undefined when there is none. */
|
|
22
|
+
export declare function errnoName(value: unknown): string | undefined;
|
|
23
|
+
/** An error class name from the fixed list, else "other"; undefined when there is none. */
|
|
24
|
+
export declare function errorClassName(value: unknown): string | undefined;
|
|
25
|
+
export declare const ERROR_CODES: readonly ["startup_failed", "spawn_failed", "proxy_start_failed", "config_write_failed", "status_probe_failed", "update_check_failed", "plugin_failed", "mcp_config_failed"];
|
|
26
|
+
export type DiagnosticsErrorCode = (typeof ERROR_CODES)[number];
|
|
27
|
+
export declare const INSTALL_METHODS: readonly ["npm-global", "npm-link", "git-checkout", "npx", "local", "pnpm", "yarn", "bun", "volta", "not-writable", "root", "unsupported-platform", "unknown"];
|
|
28
|
+
export declare const TERMINALS: readonly ["Apple_Terminal", "iTerm.app", "vscode", "WezTerm", "ghostty", "WarpTerminal", "tmux", "Hyper", "Tabby", "alacritty", "kitty", "cursor", "zed", "JetBrains-JediTerm", "rio", "Windows_Terminal", "mintty", "konsole", "gnome-terminal", "none", "other"];
|
|
29
|
+
export declare const TURN_TYPES: readonly ["first-user", "tool", "tool-memory", "tool-prefix", "tool-recompressed", "followup-compressed", "followup-prefix", "followup-noop", "followup-empty-memory", "followup-no-flatten", "followup-degraded", "fork-memory", "side-request", "foreign", "followup-client-closed", "unparseable", "other"];
|
|
30
|
+
export type DiagnosticsFields = Record<string, string | number | boolean>;
|
|
31
|
+
export interface DiagnosticsEvent extends DiagnosticsFields {
|
|
32
|
+
name: string;
|
|
33
|
+
t: number;
|
|
34
|
+
}
|
|
35
|
+
/** The event, rebuilt from allowed fields only; null when its name is not allowed. */
|
|
36
|
+
export declare function sanitizeEvent(name: string, fields: Record<string, unknown>, t: number): DiagnosticsEvent | null;
|
|
37
|
+
export declare function sanitizeContext(fields: Record<string, unknown>): DiagnosticsFields;
|
|
38
|
+
export declare function sanitizeFields(fields: Record<string, unknown>, allowed: Record<string, Validator>): DiagnosticsFields;
|
|
39
|
+
/** `2.1.301.241` → `2.1.301`; anything not version-shaped → undefined. */
|
|
40
|
+
export declare function threePartVersion(raw: unknown): string | undefined;
|
|
41
|
+
export declare const CONTEXT_FIELDS: Record<string, Validator>;
|
|
42
|
+
export declare const EVENT_FIELDS: Record<string, Record<string, Validator>>;
|
|
43
|
+
export {};
|
|
44
|
+
//# sourceMappingURL=diagnostics-schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnostics-schema.d.ts","sourceRoot":"","sources":["../src/diagnostics-schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,eAAO,MAAM,kBAAkB,IAAI,CAAC;AAEpC,KAAK,SAAS,GAAG,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;AAM7C;;;GAGG;AACH,eAAO,MAAM,MAAM,+eAOT,CAAC;AACX,eAAO,MAAM,OAAO,+NAIV,CAAC;AAEX,qFAAqF;AACrF,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAG7D;AAED,eAAO,MAAM,WAAW,sIAGd,CAAC;AAEX,yFAAyF;AACzF,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAG5D;AAED,2FAA2F;AAC3F,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAGjE;AAED,eAAO,MAAM,WAAW,8KAGd,CAAC;AACX,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAEhE,eAAO,MAAM,eAAe,gKAGlB,CAAC;AAEX,eAAO,MAAM,SAAS,oQAIZ,CAAC;AAEX,eAAO,MAAM,UAAU,gTAKb,CAAC;AAEX,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;AAC1E,MAAM,WAAW,gBAAiB,SAAQ,iBAAiB;IACzD,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,EAAE,MAAM,CAAC;CACX;AAED,sFAAsF;AACtF,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,EAAE,MAAM,GAClF,gBAAgB,GAAG,IAAI,CAM1B;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,iBAAiB,CAElF;AAED,wBAAgB,cAAc,CAC5B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAClE,iBAAiB,CAUnB;AAED,0EAA0E;AAC1E,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAIjE;AAyBD,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAepD,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAuBlE,CAAC"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Allowlist for client diagnostics (polychat plans/2026-10-16_PLAN_ccc_client_diagnostics.md).
|
|
3
|
+
*
|
|
4
|
+
* Every event is rebuilt here from named fields only, each checked against an enum, a tight
|
|
5
|
+
* pattern or an integer range; anything else is dropped before it is queued. The server
|
|
6
|
+
* (polychat/ccc_diagnostics.py) enforces the same list again. There is no free-text field:
|
|
7
|
+
* errors travel as codes, because a Node error message can quote its input (JSON.parse
|
|
8
|
+
* does) and so carry conversation content.
|
|
9
|
+
*/
|
|
10
|
+
export const DIAGNOSTICS_SCHEMA = 1;
|
|
11
|
+
/** A validator's "not allowed" answer. */
|
|
12
|
+
const DROP = Symbol("drop");
|
|
13
|
+
/** Three parts only: a fourth (Claude Code's build suffix) would let an IPv4 address through. */
|
|
14
|
+
const VERSION_RE = /^\d{1,4}\.\d{1,4}\.\d{1,6}(?:-(?:alpha|beta|rc|next|canary)(?:\.\d{1,4})?)?$/;
|
|
15
|
+
/**
|
|
16
|
+
* Error codes and class names are fixed vocabularies; anything else is sent as "other"
|
|
17
|
+
* (errnoName / errorClassName). A shape check would let a project or customer name through.
|
|
18
|
+
*/
|
|
19
|
+
export const ERRNOS = [
|
|
20
|
+
"EACCES", "EPERM", "ENOENT", "ENOTDIR", "EISDIR", "EEXIST", "ENOSPC", "EROFS", "EMFILE",
|
|
21
|
+
"EBUSY", "ECONNREFUSED", "ECONNRESET", "ECONNABORTED", "ETIMEDOUT", "ENOTFOUND",
|
|
22
|
+
"EAI_AGAIN", "EHOSTUNREACH", "ENETUNREACH", "EPIPE", "EADDRINUSE", "ERR_INVALID_URL",
|
|
23
|
+
"UND_ERR_CONNECT_TIMEOUT", "UND_ERR_SOCKET", "UND_ERR_HEADERS_TIMEOUT", "CERT_HAS_EXPIRED",
|
|
24
|
+
"UNABLE_TO_VERIFY_LEAF_SIGNATURE", "SELF_SIGNED_CERT_IN_CHAIN",
|
|
25
|
+
"DEPTH_ZERO_SELF_SIGNED_CERT", "ERR_TLS_CERT_ALTNAME_INVALID", "other",
|
|
26
|
+
];
|
|
27
|
+
export const SIGNALS = [
|
|
28
|
+
"SIGINT", "SIGTERM", "SIGKILL", "SIGHUP", "SIGQUIT", "SIGABRT", "SIGSEGV", "SIGBUS",
|
|
29
|
+
"SIGPIPE", "SIGUSR1", "SIGUSR2", "SIGTSTP", "SIGILL", "SIGFPE", "SIGTRAP", "SIGSYS",
|
|
30
|
+
"SIGXCPU", "SIGXFSZ", "SIGALRM", "other",
|
|
31
|
+
];
|
|
32
|
+
/** A signal name from the fixed list, else "other"; undefined when there is none. */
|
|
33
|
+
export function signalName(value) {
|
|
34
|
+
if (typeof value !== "string")
|
|
35
|
+
return undefined;
|
|
36
|
+
return SIGNALS.includes(value) ? value : "other";
|
|
37
|
+
}
|
|
38
|
+
export const ERROR_NAMES = [
|
|
39
|
+
"Error", "TypeError", "RangeError", "SyntaxError", "ReferenceError", "AbortError",
|
|
40
|
+
"TimeoutError", "SystemError", "other",
|
|
41
|
+
];
|
|
42
|
+
/** A Node errno code from the fixed list, else "other"; undefined when there is none. */
|
|
43
|
+
export function errnoName(value) {
|
|
44
|
+
if (typeof value !== "string")
|
|
45
|
+
return undefined;
|
|
46
|
+
return ERRNOS.includes(value) ? value : "other";
|
|
47
|
+
}
|
|
48
|
+
/** An error class name from the fixed list, else "other"; undefined when there is none. */
|
|
49
|
+
export function errorClassName(value) {
|
|
50
|
+
if (typeof value !== "string")
|
|
51
|
+
return undefined;
|
|
52
|
+
return ERROR_NAMES.includes(value) ? value : "other";
|
|
53
|
+
}
|
|
54
|
+
export const ERROR_CODES = [
|
|
55
|
+
"startup_failed", "spawn_failed", "proxy_start_failed", "config_write_failed",
|
|
56
|
+
"status_probe_failed", "update_check_failed", "plugin_failed", "mcp_config_failed",
|
|
57
|
+
];
|
|
58
|
+
export const INSTALL_METHODS = [
|
|
59
|
+
"npm-global", "npm-link", "git-checkout", "npx", "local", "pnpm", "yarn", "bun", "volta",
|
|
60
|
+
"not-writable", "root", "unsupported-platform", "unknown",
|
|
61
|
+
];
|
|
62
|
+
export const TERMINALS = [
|
|
63
|
+
"Apple_Terminal", "iTerm.app", "vscode", "WezTerm", "ghostty", "WarpTerminal", "tmux",
|
|
64
|
+
"Hyper", "Tabby", "alacritty", "kitty", "cursor", "zed", "JetBrains-JediTerm", "rio",
|
|
65
|
+
"Windows_Terminal", "mintty", "konsole", "gnome-terminal", "none", "other",
|
|
66
|
+
];
|
|
67
|
+
export const TURN_TYPES = [
|
|
68
|
+
"first-user", "tool", "tool-memory", "tool-prefix", "tool-recompressed",
|
|
69
|
+
"followup-compressed", "followup-prefix", "followup-noop", "followup-empty-memory",
|
|
70
|
+
"followup-no-flatten", "followup-degraded", "fork-memory", "side-request", "foreign",
|
|
71
|
+
"followup-client-closed", "unparseable", "other",
|
|
72
|
+
];
|
|
73
|
+
/** The event, rebuilt from allowed fields only; null when its name is not allowed. */
|
|
74
|
+
export function sanitizeEvent(name, fields, t) {
|
|
75
|
+
if (typeof name !== "string" || !Object.prototype.hasOwnProperty.call(EVENT_FIELDS, name)) {
|
|
76
|
+
return null;
|
|
77
|
+
}
|
|
78
|
+
const allowed = EVENT_FIELDS[name];
|
|
79
|
+
return { ...sanitizeFields(fields, allowed), name, t: Math.floor(t) };
|
|
80
|
+
}
|
|
81
|
+
export function sanitizeContext(fields) {
|
|
82
|
+
return sanitizeFields(fields, CONTEXT_FIELDS);
|
|
83
|
+
}
|
|
84
|
+
export function sanitizeFields(fields, allowed) {
|
|
85
|
+
const out = {};
|
|
86
|
+
for (const [key, check] of Object.entries(allowed)) {
|
|
87
|
+
if (!Object.prototype.hasOwnProperty.call(fields, key))
|
|
88
|
+
continue;
|
|
89
|
+
const value = check(fields[key]);
|
|
90
|
+
if (value !== DROP && value !== undefined && value !== null) {
|
|
91
|
+
out[key] = value;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
return out;
|
|
95
|
+
}
|
|
96
|
+
/** `2.1.301.241` → `2.1.301`; anything not version-shaped → undefined. */
|
|
97
|
+
export function threePartVersion(raw) {
|
|
98
|
+
if (typeof raw !== "string")
|
|
99
|
+
return undefined;
|
|
100
|
+
const m = /^(\d{1,4}\.\d{1,4}\.\d{1,6})/.exec(raw.trim());
|
|
101
|
+
return m ? m[1] : undefined;
|
|
102
|
+
}
|
|
103
|
+
function oneOf(values) {
|
|
104
|
+
const set = new Set(values);
|
|
105
|
+
return (v) => (typeof v === "string" && set.has(v) ? v : DROP);
|
|
106
|
+
}
|
|
107
|
+
function matching(re, maxLength = 40) {
|
|
108
|
+
return (v) => (typeof v === "string" && v.length <= maxLength && re.test(v) ? v : DROP);
|
|
109
|
+
}
|
|
110
|
+
function integer(lo, hi) {
|
|
111
|
+
return (v) => {
|
|
112
|
+
if (typeof v !== "number" || !Number.isFinite(v))
|
|
113
|
+
return DROP;
|
|
114
|
+
return Math.max(lo, Math.min(hi, Math.round(v)));
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
const bool = (v) => (typeof v === "boolean" ? v : DROP);
|
|
118
|
+
const VERSION = matching(VERSION_RE);
|
|
119
|
+
const STATUS = integer(0, 999);
|
|
120
|
+
const MS = integer(0, 24 * 3600 * 1000);
|
|
121
|
+
const KB = integer(0, 1_000_000);
|
|
122
|
+
export const CONTEXT_FIELDS = {
|
|
123
|
+
ccc_version: VERSION,
|
|
124
|
+
cc_version: VERSION,
|
|
125
|
+
node: VERSION,
|
|
126
|
+
install_method: oneOf(INSTALL_METHODS),
|
|
127
|
+
os: oneOf(["darwin", "linux", "win32", "freebsd", "openbsd", "sunos", "aix", "android",
|
|
128
|
+
"other"]),
|
|
129
|
+
os_release: matching(/^\d{1,4}(?:\.\d{1,6}){0,2}$/),
|
|
130
|
+
arch: oneOf(["arm64", "x64", "ia32", "arm", "ppc64", "s390x", "riscv64", "loong64",
|
|
131
|
+
"other"]),
|
|
132
|
+
terminal: oneOf(TERMINALS),
|
|
133
|
+
locale: matching(/^(?:[a-z]{2,3}(?:-[A-Z][a-z]{3})?(?:-(?:[A-Z]{2}|\d{3}))?|other)$/, 16),
|
|
134
|
+
wsl: bool,
|
|
135
|
+
interactive: bool,
|
|
136
|
+
mode: oneOf(["production", "staging", "local"]),
|
|
137
|
+
};
|
|
138
|
+
export const EVENT_FIELDS = {
|
|
139
|
+
first_run: {},
|
|
140
|
+
sign_in_prompt: {},
|
|
141
|
+
key_saved: {},
|
|
142
|
+
key_status: { result: oneOf(["ok", "invalid", "payment_required", "unknown"]), status: STATUS },
|
|
143
|
+
payment_gate: { choice: oneOf(["subscribe", "continue", "quit", "paid", "still_unpaid"]) },
|
|
144
|
+
session_start: { source: oneOf(["startup", "resume", "clear", "compact", "other"]) },
|
|
145
|
+
first_request: { status: STATUS, turn_type: oneOf(TURN_TYPES), ttfb_ms: MS, total_ms: MS,
|
|
146
|
+
request_kb: KB },
|
|
147
|
+
first_turn: { status: STATUS, turn_type: oneOf(TURN_TYPES), ttfb_ms: MS, total_ms: MS,
|
|
148
|
+
request_kb: KB },
|
|
149
|
+
upstream_error: { status: STATUS, turn_type: oneOf(TURN_TYPES), total_ms: MS,
|
|
150
|
+
request_kb: KB },
|
|
151
|
+
memtree_error: { status: STATUS, index_only: bool, ms: MS, request_kb: KB },
|
|
152
|
+
compress_timeout: { ms: MS, request_kb: KB },
|
|
153
|
+
refusal: { status: STATUS, input_ktokens: KB, budget_ktokens: KB, attempt: integer(0, 1000) },
|
|
154
|
+
paused_notice: { trigger: oneOf(["turn", "resume"]) },
|
|
155
|
+
update_hint: { latest: VERSION },
|
|
156
|
+
auto_update: { result: oneOf(["started", "locked", "not-planned", "spawn-failed", "skipped"]) },
|
|
157
|
+
claude_exit: { code: integer(-1000, 1000), signal: oneOf(SIGNALS) },
|
|
158
|
+
claude_missing: {},
|
|
159
|
+
error: { code: oneOf(ERROR_CODES), errno: oneOf(ERRNOS),
|
|
160
|
+
error_name: oneOf(ERROR_NAMES) },
|
|
161
|
+
};
|
|
162
|
+
//# sourceMappingURL=diagnostics-schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnostics-schema.js","sourceRoot":"","sources":["../src/diagnostics-schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Client diagnostics: why a session stalls, without ever sending its content
|
|
3
|
+
* (polychat plans/2026-10-16_PLAN_ccc_client_diagnostics.md).
|
|
4
|
+
*
|
|
5
|
+
* What is sent: ccc / Claude Code / Node versions, install method, OS and arch,
|
|
6
|
+
* terminal type, locale, and lifecycle and error events made of enums, status
|
|
7
|
+
* codes, sizes and timings (diagnostics-schema.ts is the allowlist; polychat
|
|
8
|
+
* enforces it again). Never prompts, paths, hostnames, usernames, env values,
|
|
9
|
+
* keys or error message text.
|
|
10
|
+
*
|
|
11
|
+
* Hard constraints, like reqlog.ts: never throw and never block. Events go into
|
|
12
|
+
* a capped in-memory queue; batches are POSTed fire-and-forget (every
|
|
13
|
+
* FLUSH_INTERVAL_MS, after the sign-in prompt, and at shutdown under a short
|
|
14
|
+
* bound); a failed POST drops its batch.
|
|
15
|
+
*
|
|
16
|
+
* Off with CCC_NO_DIAGNOSTICS=1, `"diagnostics": false` in the config,
|
|
17
|
+
* DO_NOT_TRACK=1, or Claude Code's DISABLE_TELEMETRY /
|
|
18
|
+
* CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC.
|
|
19
|
+
*/
|
|
20
|
+
import { type DiagnosticsErrorCode, type DiagnosticsEvent } from "./diagnostics-schema.js";
|
|
21
|
+
import type { RequestLogSink, RequestRecord } from "./reqlog.js";
|
|
22
|
+
export declare const DIAGNOSTICS_PATH = "/v1/ccc/diagnostics";
|
|
23
|
+
export declare const INSTALL_ID_FILE = "install_id";
|
|
24
|
+
export declare const FLUSH_INTERVAL_MS = 30000;
|
|
25
|
+
export declare const MAX_QUEUE = 200;
|
|
26
|
+
export declare const BATCH_SIZE = 50;
|
|
27
|
+
export declare const SEND_TIMEOUT_MS = 3000;
|
|
28
|
+
export declare const SHUTDOWN_FLUSH_MS = 1000;
|
|
29
|
+
/** Repeats of one error kind (event + status) reported per process. */
|
|
30
|
+
export declare const MAX_REPEATS = 5;
|
|
31
|
+
/** What the proxy and the launcher need: record an event, never fail. */
|
|
32
|
+
export interface DiagnosticsRecorder {
|
|
33
|
+
record(name: string, fields?: Record<string, unknown>): void;
|
|
34
|
+
}
|
|
35
|
+
export interface DiagnosticsOptions {
|
|
36
|
+
baseUrl: string;
|
|
37
|
+
configDir: string;
|
|
38
|
+
clientName: string;
|
|
39
|
+
clientVersion: string;
|
|
40
|
+
env?: NodeJS.ProcessEnv;
|
|
41
|
+
config?: {
|
|
42
|
+
diagnostics?: boolean;
|
|
43
|
+
};
|
|
44
|
+
apiKey?: string;
|
|
45
|
+
fetchImpl?: typeof fetch;
|
|
46
|
+
now?: () => number;
|
|
47
|
+
flushIntervalMs?: number;
|
|
48
|
+
maxQueue?: number;
|
|
49
|
+
}
|
|
50
|
+
/** False when any opt-out is set. */
|
|
51
|
+
export declare function diagnosticsEnabled(env: NodeJS.ProcessEnv, config: {
|
|
52
|
+
diagnostics?: boolean;
|
|
53
|
+
}): boolean;
|
|
54
|
+
export declare class Diagnostics implements DiagnosticsRecorder {
|
|
55
|
+
private readonly opts;
|
|
56
|
+
readonly enabled: boolean;
|
|
57
|
+
/** True when this launch created the install id (the machine's first run). */
|
|
58
|
+
readonly firstRun: boolean;
|
|
59
|
+
/** Events dropped because the queue was full. */
|
|
60
|
+
dropped: number;
|
|
61
|
+
private readonly installId;
|
|
62
|
+
private readonly queue;
|
|
63
|
+
private readonly inFlight;
|
|
64
|
+
private readonly repeats;
|
|
65
|
+
private context;
|
|
66
|
+
private apiKey;
|
|
67
|
+
private timer;
|
|
68
|
+
constructor(opts: DiagnosticsOptions);
|
|
69
|
+
setApiKey(apiKey: string | undefined): void;
|
|
70
|
+
/** Add context fields (allowlisted; later values win). */
|
|
71
|
+
setContext(fields: Record<string, unknown>): void;
|
|
72
|
+
record(name: string, fields?: Record<string, unknown>): void;
|
|
73
|
+
/** Like record, but at most MAX_REPEATS times per `key` in this process. */
|
|
74
|
+
recordLimited(key: string, name: string, fields?: Record<string, unknown>): void;
|
|
75
|
+
/** Flush every FLUSH_INTERVAL_MS without keeping the process alive. */
|
|
76
|
+
start(): void;
|
|
77
|
+
/** Send what is queued now; fire-and-forget. */
|
|
78
|
+
flushNow(): void;
|
|
79
|
+
/** Shutdown: send what is queued and wait for in-flight sends, at most `timeoutMs`. */
|
|
80
|
+
flush(timeoutMs?: number): Promise<void>;
|
|
81
|
+
/** The exact JSON body a batch of these events is sent as (tests read it). */
|
|
82
|
+
batchBody(events: DiagnosticsEvent[]): string;
|
|
83
|
+
private send;
|
|
84
|
+
private headers;
|
|
85
|
+
private track;
|
|
86
|
+
private now;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Tee for the request log: every record still goes to `inner` unchanged, and a
|
|
90
|
+
* few named numeric/enum fields of some records become diagnostics events.
|
|
91
|
+
* Records are never copied: they can hold content (client.systemHead, URLs).
|
|
92
|
+
*/
|
|
93
|
+
export declare class DiagnosticsRequestSink implements RequestLogSink {
|
|
94
|
+
private readonly inner;
|
|
95
|
+
private readonly diagnostics;
|
|
96
|
+
private firstRequest;
|
|
97
|
+
private firstTurn;
|
|
98
|
+
constructor(inner: RequestLogSink | undefined, diagnostics: Diagnostics);
|
|
99
|
+
log(record: RequestRecord): void;
|
|
100
|
+
private observe;
|
|
101
|
+
private observeMessages;
|
|
102
|
+
private observeMessageErrors;
|
|
103
|
+
private observeMemtree;
|
|
104
|
+
}
|
|
105
|
+
/** Record a launcher error by code only: Node's errno and class name, never its message. */
|
|
106
|
+
export declare function recordError(diagnostics: DiagnosticsRecorder, code: DiagnosticsErrorCode, err: unknown): void;
|
|
107
|
+
/** The install id, created (0600) on first use; null when it cannot be read or written. */
|
|
108
|
+
export declare function readOrCreateInstallId(configDir: string): {
|
|
109
|
+
id: string;
|
|
110
|
+
created: boolean;
|
|
111
|
+
} | null;
|
|
112
|
+
/** Environment context; every value is mapped onto an allowlisted shape. */
|
|
113
|
+
export declare function environmentContext(env: NodeJS.ProcessEnv, cccVersion: string): Record<string, unknown>;
|
|
114
|
+
export declare function terminalName(env: NodeJS.ProcessEnv): string;
|
|
115
|
+
export declare function localeName(): string;
|
|
116
|
+
//# sourceMappingURL=diagnostics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../src/diagnostics.ts"],"names":[],"mappings":"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"}
|