sidekick-shared 0.29.0 → 0.29.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/CHANGELOG.md +22 -0
- package/README.md +56 -25
- package/dist/aggregation/EventAggregator.d.ts +19 -0
- package/dist/aggregation/EventAggregator.js +174 -35
- package/dist/aggregation/snapshot.d.ts +37 -8
- package/dist/aggregation/snapshot.js +31 -9
- package/dist/aggregation/types.d.ts +13 -0
- package/dist/browser.d.ts +5 -1
- package/dist/browser.js +9 -3
- package/dist/context/sessionContext.js +4 -0
- package/dist/esm/aggregation/EventAggregator.js +174 -35
- package/dist/esm/aggregation/snapshot.js +31 -9
- package/dist/esm/browser.js +1 -0
- package/dist/esm/context/sessionContext.js +4 -0
- package/dist/esm/formatters/toolSummary.js +4 -1
- package/dist/esm/index.js +3 -1
- package/dist/esm/modelCatalog.js +5 -4
- package/dist/esm/modelContext.js +4 -3
- package/dist/esm/modelInfo.js +4 -3
- package/dist/esm/node.js +1 -1
- package/dist/esm/observedContextWindows.js +2 -1
- package/dist/esm/ownKey.js +26 -0
- package/dist/esm/parsers/codexParser.js +180 -4
- package/dist/esm/parsers/openCodeParser.js +2 -1
- package/dist/esm/parsers/subagentScanner.js +33 -12
- package/dist/esm/parsers/subagentTraceParser.js +97 -37
- package/dist/esm/pricingCatalog.js +3 -2
- package/dist/esm/providers/claudeCode.js +10 -2
- package/dist/esm/providers/codex.js +82 -38
- package/dist/esm/schemas/sessionEvent.js +35 -14
- package/dist/esm/subagentSpawn.js +163 -0
- package/dist/esm/transcript.js +4 -0
- package/dist/esm/turns/assistantTurn.js +3 -2
- package/dist/esm/usage/claudeUsageDedupe.js +68 -0
- package/dist/esm/watchers/eventBridge.js +15 -0
- package/dist/esm/watchers/factory.js +5 -3
- package/dist/esm/watchers/jsonlTail.js +73 -8
- package/dist/esm/watchers/jsonlWatcher.js +51 -4
- package/dist/esm/watchers/providerReaderWatcher.js +13 -0
- package/dist/esm/zaiQuota.js +2 -1
- package/dist/formatters/toolSummary.js +4 -1
- package/dist/index.d.ts +8 -3
- package/dist/index.js +18 -9
- package/dist/modelCatalog.js +5 -4
- package/dist/modelContext.js +4 -3
- package/dist/modelInfo.js +4 -3
- package/dist/node.d.ts +1 -1
- package/dist/node.js +3 -1
- package/dist/observedContextWindows.js +2 -1
- package/dist/ownKey.d.ts +16 -0
- package/dist/ownKey.js +30 -0
- package/dist/parsers/codexParser.d.ts +63 -0
- package/dist/parsers/codexParser.js +181 -4
- package/dist/parsers/openCodeParser.js +2 -1
- package/dist/parsers/subagentScanner.d.ts +19 -6
- package/dist/parsers/subagentScanner.js +33 -12
- package/dist/parsers/subagentTraceParser.d.ts +25 -5
- package/dist/parsers/subagentTraceParser.js +97 -37
- package/dist/pricingCatalog.js +3 -2
- package/dist/providers/claudeCode.js +9 -1
- package/dist/providers/codex.js +82 -38
- package/dist/providers/types.d.ts +14 -0
- package/dist/schemas/index.d.ts +1 -0
- package/dist/schemas/sessionEvent.d.ts +27 -10
- package/dist/schemas/sessionEvent.js +35 -14
- package/dist/subagentSpawn.d.ts +80 -0
- package/dist/subagentSpawn.js +174 -0
- package/dist/transcript.js +4 -0
- package/dist/turns/assistantTurn.d.ts +1 -0
- package/dist/turns/assistantTurn.js +3 -2
- package/dist/usage/claudeUsageDedupe.d.ts +31 -0
- package/dist/usage/claudeUsageDedupe.js +68 -0
- package/dist/watchers/eventBridge.js +15 -0
- package/dist/watchers/factory.d.ts +6 -0
- package/dist/watchers/factory.js +5 -3
- package/dist/watchers/jsonlTail.d.ts +27 -4
- package/dist/watchers/jsonlTail.js +75 -8
- package/dist/watchers/jsonlWatcher.d.ts +18 -1
- package/dist/watchers/jsonlWatcher.js +50 -3
- package/dist/watchers/providerReaderWatcher.d.ts +7 -0
- package/dist/watchers/providerReaderWatcher.js +13 -0
- package/dist/watchers/types.d.ts +12 -0
- package/dist/zaiQuota.js +2 -1
- package/package.json +1 -1
|
@@ -60,6 +60,63 @@ export class JsonlTailSymlinkError extends Error {
|
|
|
60
60
|
export function createJsonlTail(options) {
|
|
61
61
|
return new JsonlTailReader(options);
|
|
62
62
|
}
|
|
63
|
+
/**
|
|
64
|
+
* Records a {@link JsonlTailCheckpoint} for byte `offset` of `filePath`
|
|
65
|
+
* without a tail, for readers that keep their own offset (a snapshot that
|
|
66
|
+
* stores a reader position, for example). The checkpoint carries the file's
|
|
67
|
+
* current device and inode and a digest of its first bytes, so
|
|
68
|
+
* {@link verifyJsonlCheckpoint} (or {@link JsonlTail.resumeFrom}) can later
|
|
69
|
+
* tell whether `offset` still refers to the same, append-only content.
|
|
70
|
+
*
|
|
71
|
+
* Returns `null` when the file is missing or unreadable, or when `offset` is
|
|
72
|
+
* not a resume-safe position in it: negative, past the end, or not 0 and not
|
|
73
|
+
* just after a newline. Follows symbolic links.
|
|
74
|
+
*/
|
|
75
|
+
export function captureJsonlCheckpoint(filePath, offset) {
|
|
76
|
+
if (!Number.isSafeInteger(offset) || offset < 0)
|
|
77
|
+
return null;
|
|
78
|
+
let fd = null;
|
|
79
|
+
try {
|
|
80
|
+
fd = fs.openSync(filePath, 'r');
|
|
81
|
+
const stat = fs.fstatSync(fd);
|
|
82
|
+
if (offset > stat.size)
|
|
83
|
+
return null;
|
|
84
|
+
if (offset > 0 && readAt(fd, offset - 1, 1)[0] !== 0x0a)
|
|
85
|
+
return null;
|
|
86
|
+
return checkpointOf(offset, stat, fileHeadOf(readPrefix(fd, stat)));
|
|
87
|
+
}
|
|
88
|
+
catch {
|
|
89
|
+
return null;
|
|
90
|
+
}
|
|
91
|
+
finally {
|
|
92
|
+
closeQuietly(fd);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Whether `checkpoint` (any value, typically parsed from JSON) is a valid
|
|
97
|
+
* {@link JsonlTailCheckpoint} that still describes `filePath`: same device
|
|
98
|
+
* and inode, the recorded first bytes unchanged, and its offset within the
|
|
99
|
+
* file and just after a newline (or 0). This is the check
|
|
100
|
+
* {@link JsonlTail.resumeFrom} applies. `false` on any error, including a
|
|
101
|
+
* missing file. Follows symbolic links.
|
|
102
|
+
*/
|
|
103
|
+
export function verifyJsonlCheckpoint(filePath, checkpoint) {
|
|
104
|
+
const parsed = parseCheckpoint(checkpoint);
|
|
105
|
+
if (parsed === null)
|
|
106
|
+
return false;
|
|
107
|
+
let fd = null;
|
|
108
|
+
try {
|
|
109
|
+
fd = fs.openSync(filePath, 'r');
|
|
110
|
+
const stat = fs.fstatSync(fd);
|
|
111
|
+
return checkpointMatches(parsed, fd, stat, readPrefix(fd, stat));
|
|
112
|
+
}
|
|
113
|
+
catch {
|
|
114
|
+
return false;
|
|
115
|
+
}
|
|
116
|
+
finally {
|
|
117
|
+
closeQuietly(fd);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
63
120
|
class JsonlTailReader {
|
|
64
121
|
options;
|
|
65
122
|
active = false;
|
|
@@ -292,7 +349,7 @@ class JsonlTailReader {
|
|
|
292
349
|
}
|
|
293
350
|
probeSync(fd, stat) {
|
|
294
351
|
return {
|
|
295
|
-
prefix:
|
|
352
|
+
prefix: readPrefix(fd, stat),
|
|
296
353
|
before: this.committedOffset > 0 && this.committedOffset <= stat.size
|
|
297
354
|
? readAt(fd, this.committedOffset - 1, 1)
|
|
298
355
|
: null,
|
|
@@ -412,12 +469,7 @@ class JsonlTailReader {
|
|
|
412
469
|
this.position(Math.max(0, offset));
|
|
413
470
|
}
|
|
414
471
|
checkpoint() {
|
|
415
|
-
return
|
|
416
|
-
version: JSONL_TAIL_CHECKPOINT_VERSION,
|
|
417
|
-
offset: this.committedOffset,
|
|
418
|
-
identity: this.identity ? { dev: this.identity.dev, ino: this.identity.ino } : null,
|
|
419
|
-
prefixDigest: this.head ? { bytes: this.head.bytes, hash: this.head.hash } : null,
|
|
420
|
-
};
|
|
472
|
+
return checkpointOf(this.committedOffset, this.identity, this.head);
|
|
421
473
|
}
|
|
422
474
|
resumeFrom(checkpoint) {
|
|
423
475
|
this.generation += 1;
|
|
@@ -427,7 +479,7 @@ class JsonlTailReader {
|
|
|
427
479
|
try {
|
|
428
480
|
fd = this.openSync();
|
|
429
481
|
const stat = fs.fstatSync(fd);
|
|
430
|
-
const prefix =
|
|
482
|
+
const prefix = readPrefix(fd, stat);
|
|
431
483
|
const matches = parsed !== null && checkpointMatches(parsed, fd, stat, prefix);
|
|
432
484
|
const offset = matches
|
|
433
485
|
? parsed.offset
|
|
@@ -559,6 +611,15 @@ function parseCheckpoint(value) {
|
|
|
559
611
|
prefixDigest: parsedDigest,
|
|
560
612
|
};
|
|
561
613
|
}
|
|
614
|
+
/** A fresh checkpoint for `offset` in the file with `identity` and recorded `head`. */
|
|
615
|
+
function checkpointOf(offset, identity, head) {
|
|
616
|
+
return {
|
|
617
|
+
version: JSONL_TAIL_CHECKPOINT_VERSION,
|
|
618
|
+
offset,
|
|
619
|
+
identity: identity ? { dev: identity.dev, ino: identity.ino } : null,
|
|
620
|
+
prefixDigest: head ? { bytes: head.bytes, hash: head.hash } : null,
|
|
621
|
+
};
|
|
622
|
+
}
|
|
562
623
|
/** Whether `checkpoint` still describes the open file. */
|
|
563
624
|
function checkpointMatches(checkpoint, fd, stat, prefix) {
|
|
564
625
|
const { offset, identity, prefixDigest } = checkpoint;
|
|
@@ -601,6 +662,10 @@ function readAt(fd, position, length) {
|
|
|
601
662
|
const count = length > 0 ? fs.readSync(fd, buffer, 0, length, position) : 0;
|
|
602
663
|
return buffer.subarray(0, count);
|
|
603
664
|
}
|
|
665
|
+
/** The file's first `min(HEAD_BYTES, size)` bytes: what a checkpoint digests. */
|
|
666
|
+
function readPrefix(fd, stat) {
|
|
667
|
+
return readAt(fd, 0, Math.min(HEAD_BYTES, stat.size));
|
|
668
|
+
}
|
|
604
669
|
async function readAtAsync(handle, position, length) {
|
|
605
670
|
const buffer = Buffer.alloc(length);
|
|
606
671
|
const count = length > 0 ? (await handle.read(buffer, 0, length, position)).bytesRead : 0;
|
|
@@ -3,9 +3,10 @@
|
|
|
3
3
|
* Uses byte-offset tracking + fs.watch with debounce + catch-up polling.
|
|
4
4
|
*/
|
|
5
5
|
import { createJsonlTail } from './jsonlTail';
|
|
6
|
-
import { normalizeCodexToolName, resolveCodexCallUsage } from '../parsers/codexParser';
|
|
6
|
+
import { codexTokenUsageFrom, normalizeCodexToolName, resolveCodexCallUsage, } from '../parsers/codexParser';
|
|
7
7
|
import { formatToolSummary } from '../formatters/toolSummary';
|
|
8
8
|
import { ClaudeUsageDeduper, normalizeClaudeUsage } from '../usage/claudeUsageDedupe';
|
|
9
|
+
import { parseTaskNotification, taskNotificationPromptFromAttachment } from '../subagentSpawn';
|
|
9
10
|
// ── Normalizers ──
|
|
10
11
|
/**
|
|
11
12
|
* Split lines of one Claude response repeat its usage; run the raw usage
|
|
@@ -21,7 +22,7 @@ function dedupedClaudeUsage(raw, deduper) {
|
|
|
21
22
|
}));
|
|
22
23
|
return { usage: event.message?.usage, usageKind: event.message?.usageKind };
|
|
23
24
|
}
|
|
24
|
-
function normalizeClaudeCodeEvent(raw, deduper) {
|
|
25
|
+
function normalizeClaudeCodeEvent(raw, deduper, includeTaskNotifications) {
|
|
25
26
|
const events = [];
|
|
26
27
|
const ts = raw.timestamp || new Date().toISOString();
|
|
27
28
|
const permissionMode = raw.permissionMode;
|
|
@@ -133,6 +134,19 @@ function normalizeClaudeCodeEvent(raw, deduper) {
|
|
|
133
134
|
raw,
|
|
134
135
|
});
|
|
135
136
|
}
|
|
137
|
+
else if (includeTaskNotifications) {
|
|
138
|
+
// A task notification that landed mid-turn is only an attachment line.
|
|
139
|
+
const notification = parseTaskNotification(taskNotificationPromptFromAttachment(raw));
|
|
140
|
+
if (notification) {
|
|
141
|
+
events.push({
|
|
142
|
+
providerId: 'claude-code',
|
|
143
|
+
type: 'system',
|
|
144
|
+
timestamp: ts,
|
|
145
|
+
summary: notification.summary ?? `Background task ${notification.status ?? 'finished'}`,
|
|
146
|
+
raw,
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
}
|
|
136
150
|
}
|
|
137
151
|
// Propagate permission mode to all generated events
|
|
138
152
|
if (permissionMode) {
|
|
@@ -204,16 +218,18 @@ export class JsonlSessionWatcher {
|
|
|
204
218
|
providerId;
|
|
205
219
|
sessionPath;
|
|
206
220
|
callbacks;
|
|
221
|
+
options;
|
|
207
222
|
tail;
|
|
208
223
|
startOffset;
|
|
209
224
|
codexInPlanMode = false;
|
|
210
225
|
claudeUsageDeduper = new ClaudeUsageDeduper();
|
|
211
226
|
/** Last Codex cumulative usage seen; repeated `token_count` events carry the same value. */
|
|
212
227
|
codexPrevTotal;
|
|
213
|
-
constructor(providerId, sessionPath, callbacks) {
|
|
228
|
+
constructor(providerId, sessionPath, callbacks, options = {}) {
|
|
214
229
|
this.providerId = providerId;
|
|
215
230
|
this.sessionPath = sessionPath;
|
|
216
231
|
this.callbacks = callbacks;
|
|
232
|
+
this.options = options;
|
|
217
233
|
}
|
|
218
234
|
get isActive() {
|
|
219
235
|
return this.tail?.isActive ?? false;
|
|
@@ -227,6 +243,37 @@ export class JsonlSessionWatcher {
|
|
|
227
243
|
getPosition() {
|
|
228
244
|
return this.tail?.getOffset() ?? this.startOffset ?? 0;
|
|
229
245
|
}
|
|
246
|
+
/**
|
|
247
|
+
* Parse state for {@link getPosition}: for Claude Code, the usage deduper's
|
|
248
|
+
* recent message ids (a `ClaudeUsageDedupeState`); for Codex, the previous
|
|
249
|
+
* cumulative token total and plan mode.
|
|
250
|
+
*/
|
|
251
|
+
getResumeState() {
|
|
252
|
+
if (this.providerId === 'codex') {
|
|
253
|
+
return {
|
|
254
|
+
version: 1,
|
|
255
|
+
prevTotalUsage: this.codexPrevTotal ? { ...this.codexPrevTotal } : null,
|
|
256
|
+
inPlanMode: this.codexInPlanMode,
|
|
257
|
+
};
|
|
258
|
+
}
|
|
259
|
+
return this.claudeUsageDeduper.exportState();
|
|
260
|
+
}
|
|
261
|
+
/** Restores state from {@link getResumeState} after `seekTo()` and before `start()`. */
|
|
262
|
+
restoreResumeState(state) {
|
|
263
|
+
if (this.providerId !== 'codex')
|
|
264
|
+
return this.claudeUsageDeduper.importState(state);
|
|
265
|
+
if (!state || typeof state !== 'object')
|
|
266
|
+
return false;
|
|
267
|
+
const { version, prevTotalUsage, inPlanMode } = state;
|
|
268
|
+
if (version !== 1 || typeof inPlanMode !== 'boolean')
|
|
269
|
+
return false;
|
|
270
|
+
const total = codexTokenUsageFrom(prevTotalUsage);
|
|
271
|
+
if (total === undefined)
|
|
272
|
+
return false;
|
|
273
|
+
this.codexPrevTotal = total ?? undefined;
|
|
274
|
+
this.codexInPlanMode = inPlanMode;
|
|
275
|
+
return true;
|
|
276
|
+
}
|
|
230
277
|
start(replay) {
|
|
231
278
|
if (this.isActive)
|
|
232
279
|
return;
|
|
@@ -258,7 +305,7 @@ export class JsonlSessionWatcher {
|
|
|
258
305
|
// JsonlParser parses any JSON object. Cast to Record for codex normalizer.
|
|
259
306
|
const followEvents = this.providerId === 'codex'
|
|
260
307
|
? this.normalizeCodexEvent(event)
|
|
261
|
-
: normalizeClaudeCodeEvent(event, this.claudeUsageDeduper);
|
|
308
|
+
: normalizeClaudeCodeEvent(event, this.claudeUsageDeduper, this.options.includeTaskNotifications === true);
|
|
262
309
|
for (const fe of followEvents) {
|
|
263
310
|
this.callbacks.onEvent(fe);
|
|
264
311
|
}
|
|
@@ -32,6 +32,19 @@ export class ProviderReaderSessionWatcher {
|
|
|
32
32
|
getPosition() {
|
|
33
33
|
return this.reader.getPosition();
|
|
34
34
|
}
|
|
35
|
+
/** The reader's resume state, if it keeps any. */
|
|
36
|
+
getResumeState() {
|
|
37
|
+
return this.reader.getResumeState?.();
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Restores the reader's resume state after `seekTo()`. A reader that keeps
|
|
41
|
+
* none accepts only `undefined`.
|
|
42
|
+
*/
|
|
43
|
+
restoreResumeState(state) {
|
|
44
|
+
if (!this.reader.restoreResumeState)
|
|
45
|
+
return state === undefined;
|
|
46
|
+
return this.reader.restoreResumeState(state);
|
|
47
|
+
}
|
|
35
48
|
start(replay) {
|
|
36
49
|
if (this._isActive)
|
|
37
50
|
return;
|
package/dist/esm/zaiQuota.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ownValue } from './ownKey';
|
|
1
2
|
// ── Tier budgets ──
|
|
2
3
|
/**
|
|
3
4
|
* Published z.ai coding-plan prompt budgets.
|
|
@@ -215,7 +216,7 @@ export function parseZaiQuotaError(error) {
|
|
|
215
216
|
if (!error)
|
|
216
217
|
return null;
|
|
217
218
|
const code = String(error.code ?? '');
|
|
218
|
-
const kind = ZAI_ERROR_CODES
|
|
219
|
+
const kind = ownValue(ZAI_ERROR_CODES, code);
|
|
219
220
|
if (!kind)
|
|
220
221
|
return null;
|
|
221
222
|
const message = error.message ?? '';
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.formatToolSummary = formatToolSummary;
|
|
13
13
|
exports.truncate = truncate;
|
|
14
|
+
const ownKey_1 = require("../ownKey");
|
|
14
15
|
// ── Helpers ──
|
|
15
16
|
function truncate(text, maxLen) {
|
|
16
17
|
const clean = text.replace(/\s+/g, ' ').trim();
|
|
@@ -175,6 +176,8 @@ const TOOL_FORMATTERS = {
|
|
|
175
176
|
Bash: formatBash,
|
|
176
177
|
Grep: formatGrep,
|
|
177
178
|
Glob: formatGlob,
|
|
179
|
+
// Claude Code's subagent tool; `Task` is its earlier name.
|
|
180
|
+
Agent: formatTask,
|
|
178
181
|
Task: formatTask,
|
|
179
182
|
WebFetch: formatWebFetch,
|
|
180
183
|
WebSearch: formatWebSearch,
|
|
@@ -218,7 +221,7 @@ function genericFallback(input) {
|
|
|
218
221
|
function formatToolSummary(toolName, input) {
|
|
219
222
|
// Strip MCP prefixes: "mcp__server__tool" → use "tool" for matching
|
|
220
223
|
const baseName = toolName.includes('__') ? (toolName.split('__').pop() ?? toolName) : toolName;
|
|
221
|
-
const formatter = TOOL_FORMATTERS
|
|
224
|
+
const formatter = (0, ownKey_1.ownValue)(TOOL_FORMATTERS, toolName) ?? (0, ownKey_1.ownValue)(TOOL_FORMATTERS, baseName);
|
|
222
225
|
if (formatter) {
|
|
223
226
|
const result = formatter(input);
|
|
224
227
|
if (result)
|
package/dist/index.d.ts
CHANGED
|
@@ -91,11 +91,13 @@ export { JsonlParser, TRUNCATION_PATTERNS } from './parsers/jsonl';
|
|
|
91
91
|
export type { RawSessionEvent, JsonlParserCallbacks, JsonlParserOptions } from './parsers/jsonl';
|
|
92
92
|
export { normalizeToolName, normalizeToolInput, detectPlanModeFromText, convertOpenCodeMessage, parseDbMessageData, parseDbPartData, } from './parsers/openCodeParser';
|
|
93
93
|
export { CodexRolloutParser, DEFAULT_MAX_TRACKED_TOOL_CALLS, extractPatchFilePaths, normalizeCodexToolName, normalizeCodexToolInput, resolveCodexCallUsage, } from './parsers/codexParser';
|
|
94
|
-
export type { CodexPendingStats, CodexRolloutParserOptions } from './parsers/codexParser';
|
|
94
|
+
export type { CodexPendingStats, CodexRolloutParserOptions, CodexRolloutResumeState, } from './parsers/codexParser';
|
|
95
95
|
export { codexRolloutOrigin, codexSpawnParentFromSource } from './parsers/codexRolloutOrigin';
|
|
96
96
|
export type { CodexRolloutOrigin } from './parsers/codexRolloutOrigin';
|
|
97
97
|
export { scanSubagentDir, extractTaskInfo, readAgentMeta } from './parsers/subagentScanner';
|
|
98
|
+
export type { AgentMeta } from './parsers/subagentScanner';
|
|
98
99
|
export { ClaudeUsageDeduper, SYNTHETIC_MODEL, dedupedRawClaudeUsage, normalizeClaudeUsage, } from './usage/claudeUsageDedupe';
|
|
100
|
+
export type { ClaudeUsageDedupeBuckets, ClaudeUsageDedupeState } from './usage/claudeUsageDedupe';
|
|
99
101
|
export { addUsageToSubagent } from './usage/subagentUsage';
|
|
100
102
|
export { collectSessionTokenTotals, combineSessionTokenTotals, readMainThreadTokenTotals, scanSessionSubagents, subagentTokenTotals, } from './sessionTokenTotals';
|
|
101
103
|
export type { SessionTokenTotals, SubagentTokenSummary } from './sessionTokenTotals';
|
|
@@ -122,6 +124,8 @@ export { composeContext } from './context/composer';
|
|
|
122
124
|
export type { Fidelity, ContextResult } from './context/composer';
|
|
123
125
|
export { buildSessionContextSnapshot, calculateSessionContextPressure, createSessionContextProjector, readSessionContextSnapshot, } from './context/sessionContext';
|
|
124
126
|
export type { BuildSessionContextSnapshotOptions, ReadSessionContextSnapshotOptions, SessionContextCapabilities, SessionContextLayerBreakdown, SessionContextPressure, SessionContextProjector, SessionContextSnapshot, SessionContextSource, SessionContextSourceType, } from './context/sessionContext';
|
|
127
|
+
export { SUBAGENT_SPAWN_TOOL_NAMES, isSubagentSpawnTool, isTaskNotificationSystemEvent, parseTaskNotification, taskNotificationFromEvent, } from './subagentSpawn';
|
|
128
|
+
export type { TaskNotification } from './subagentSpawn';
|
|
125
129
|
export { assistantTurnEventsFromSessionEvents, extractTurnSubagents, isAssistantTurnSubagentTool, reasoningSummary, segmentAssistantTurn, } from './turns/assistantTurn';
|
|
126
130
|
export type { AssistantTurnEvent, AssistantTurnEventType, AssistantTurnProcess, AssistantTurnProcessStep, AssistantTurnProjection, AssistantTurnSubagent, AssistantTurnSubagentStatus, AssistantTurnTimelineItem, AssistantTurnToolRef, ExtractTurnSubagentsOptions, ReasoningSummary, SegmentAssistantTurnOptions, } from './turns/assistantTurn';
|
|
127
131
|
export { PlanExtractor, parsePlanMarkdown as parsePlanMarkdownShared, extractProposedPlan as extractProposedPlanShared, } from './parsers/planExtractor';
|
|
@@ -132,7 +136,7 @@ export type { FollowEvent, FollowEventType, SessionWatcher, SessionWatcherCallba
|
|
|
132
136
|
export { createWatcher, resolveSessionPath } from './watchers/factory';
|
|
133
137
|
export type { CreateWatcherOptions } from './watchers/factory';
|
|
134
138
|
export { toFollowEvents } from './watchers/eventBridge';
|
|
135
|
-
export { createJsonlTail, DEFAULT_JSONL_TAIL_MAX_LINE_BYTES, DEFAULT_JSONL_TAIL_READ_BYTES, JSONL_TAIL_CHECKPOINT_VERSION, JsonlTailSymlinkError, } from './watchers/jsonlTail';
|
|
139
|
+
export { captureJsonlCheckpoint, createJsonlTail, DEFAULT_JSONL_TAIL_MAX_LINE_BYTES, DEFAULT_JSONL_TAIL_READ_BYTES, JSONL_TAIL_CHECKPOINT_VERSION, JsonlTailSymlinkError, verifyJsonlCheckpoint, } from './watchers/jsonlTail';
|
|
136
140
|
export type { JsonlTail, JsonlTailCheckpoint, JsonlTailReadResult, JsonlTailEntry, JsonlTailRewritePolicy, JsonlTailBatch, JsonlTailLine, JsonlTailOptions, JsonlTailReset, JsonlTailResetReason, } from './watchers/jsonlTail';
|
|
137
141
|
export { addLocalDays, formatDurationMs, formatLocalDateKey, formatTokenCount, parseLocalDateKey, } from './formatting';
|
|
138
142
|
export type { FormatDurationMsOptions, FormatTokenCountOptions } from './formatting';
|
|
@@ -151,7 +155,7 @@ export type { SessionMonitorOptions, SessionMonitorSubscribeOptions } from './se
|
|
|
151
155
|
export type { SerializedAggregatorState } from './aggregation/EventAggregator';
|
|
152
156
|
export { saveSnapshot, loadSnapshot, deleteSnapshot, isSnapshotValid, pruneSnapshots, MAX_SNAPSHOT_FILES, getSnapshotPath, } from './aggregation/snapshot';
|
|
153
157
|
export type { SessionSnapshot } from './aggregation/snapshot';
|
|
154
|
-
export type { EventAggregatorOptions, AggregatedCostProvenance, AggregatedTokens, ModelUsageStats, BurnRateInfo, SubagentLifecycle, AggregatedMetrics, FrequencyMetric, PatternMetric, HeatmapBucketMetric, ErrorRollup, ErrorRollupEntry, ErrorBucketMetric, } from './aggregation/types';
|
|
158
|
+
export type { EventAggregatorOptions, AggregatedCostProvenance, AggregatedTokens, ModelUsageStats, BurnRateInfo, SubagentLifecycle, SubagentOutcome, AggregatedMetrics, FrequencyMetric, PatternMetric, HeatmapBucketMetric, ErrorRollup, ErrorRollupEntry, ErrorBucketMetric, } from './aggregation/types';
|
|
155
159
|
export { ERROR_HISTORY_SCHEMA_VERSION, MAX_ERROR_HISTORY_SESSIONS, appendErrorHistory, getTopFailingTools, readErrorHistory, } from './errorHistory';
|
|
156
160
|
export type { ErrorHistorySessionRecord, ErrorHistoryStore, TopFailingTool } from './errorHistory';
|
|
157
161
|
export { FrequencyTracker } from './aggregation/FrequencyTracker';
|
|
@@ -271,6 +275,7 @@ export type { ErrorCategory } from './extractors/errorTaxonomy';
|
|
|
271
275
|
export { extractToolCall, extractToolCalls, ToolCallTracker } from './extractors/toolCall';
|
|
272
276
|
export type { GatherAssetsOptions, GatherAssetsResult } from './extractors/gatherAssets';
|
|
273
277
|
export { messageUsageSchema, sessionMessageSchema, sessionEventSchema, permissionModeSchema, extractSessionEvents, } from './schemas/sessionEvent';
|
|
278
|
+
export type { ExtractSessionEventsOptions } from './schemas/sessionEvent';
|
|
274
279
|
export { quotaWindowSchema, quotaStateSchema, quotaLimitRowSchema, quotaExtraUsageSchema, quotaFailureKindSchema, quotaProviderIdSchema, quotaSourceSchema, codexResetCreditSchema, codexResetCreditsSnapshotSchema, peakHoursStateSchema, quotaFailureDescriptorSchema, runtimeQuotaProviderSchema, providerQuotaStateSchema, claudeProviderQuotaStateSchema, codexProviderQuotaStateSchema, zaiProviderQuotaStateSchema, providerQuotaMapSchema, } from './schemas/quota';
|
|
275
280
|
export { quotaHistoryRuntimeProviderSchema, quotaHistorySampleSchema, quotaHistoryDailyBucketSchema, } from './schemas/quotaHistory';
|
|
276
281
|
export { providerAuthenticationEvidenceSchema, providerFailureEvidenceSchema, providerRetryAfterSchema, providerFailureDiagnosisSchema, } from './schemas/providerFailure';
|
package/dist/index.js
CHANGED
|
@@ -6,15 +6,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.applySessionSummary = exports.pruneUsageCache = exports.getUsageCacheDir = exports.collectUsageEvents = exports.USAGE_CACHE_VERSION = exports.MAX_USAGE_CACHE_FILES = exports.findActiveBillingBlock = exports.computeBillingBlocks = exports.BILLING_BLOCK_DURATION_MS = exports.writeStateFile = exports.readStateFile = exports.quotaToStateFile = exports.getStateFilePath = exports.billingBlockToStateFile = exports.STATE_FILE_SCHEMA_VERSION = exports.STATE_FILE_NAME = exports.sessionFingerprintParts = exports.fingerprintString = exports.readSessionReportInputs = exports.readSessionFileStats = exports.providerContextSizeFn = exports.firstUserPrompt = exports.computeSessionFileStats = exports.isHumanPrompt = exports.humanPromptText = exports.HUMAN_CODEX_SOURCES = exports.HUMAN_CLAUDE_ENTRYPOINTS = exports.collectSessionPromptHistory = exports.findToolCallOrigins = exports.PROMPT_HISTORY_ORDINAL_MAX_RECORD_BYTES = exports.parsePromptHistoryCursor = exports.isPromptHistorySessionSettled = exports.collectPromptHistory = exports.readSessionTranscript = exports.listRecentSessions = exports.projectSessionTranscript = exports.estimateSerializedTokens = exports.estimateTextTokens = exports.ASCII_CHARS_PER_TOKEN = exports.TOKEN_TOTAL_LABEL = exports.TOKEN_SUBAGENTS_LABEL = exports.TOKEN_SESSION_TOTAL_LABEL = exports.TOKEN_MAIN_THREAD_LABEL = exports.TOKEN_CONTEXT_LABEL = exports.sumTokenTotals = exports.summarizeTokens = exports.formatTokenBreakdown = exports.calculateNormalizedUsageCost = exports.extractNormalizedUsage = exports.normalizeProviderUsage = void 0;
|
|
7
7
|
exports.getPlanAnalytics = exports.writePlans = exports.getLatestPlan = exports.readPlans = exports.readLatestHandoff = exports.readHistory = exports.readNotes = exports.readDecisions = exports.readTasks = exports.migrateLegacyProjectStores = exports.resolveProjectIdentity = exports.getProjectSlugRaw = exports.getProjectSlug = exports.encodeWorkspacePath = exports.getGlobalDataPath = exports.getProjectDataPath = exports.setConfigDir = exports.getDefaultConfigDir = exports.getConfigDirOverride = exports.getConfigDir = exports.CONFIG_DIR_ENV_VAR = exports.MAX_PLANS_PER_PROJECT = exports.PLAN_SCHEMA_VERSION = exports.createEmptyDataStore = exports.createEmptyTokenTotals = exports.HISTORICAL_SESSION_RETENTION_LIMIT = exports.HISTORICAL_DATA_SCHEMA_VERSION = exports.STALENESS_THRESHOLDS = exports.IMPORTANCE_DECAY_FACTORS = exports.KNOWLEDGE_NOTE_SCHEMA_VERSION = exports.DECISION_LOG_SCHEMA_VERSION = exports.normalizeTaskStatus = exports.TASK_PERSISTENCE_SCHEMA_VERSION = exports.isAggregateCodexLimit = exports.splitWatchedPath = exports.DirectoryListingCache = exports.fileFingerprintParts = exports.fileFingerprint = exports.observedSessionSourceFromProvider = exports.ObservedSessionCollector = exports.weekKey = exports.usageBucketKey = exports.summarizeUsageRows = exports.bucketUsage = exports.importSessionHistory = exports.ACTIVE_SESSION_MTIME_THRESHOLD_MS = exports.sessionSummaryFromStats = exports.removeSessionSummary = exports.markFileImported = exports.isFileImported = void 0;
|
|
8
8
|
exports.dedupedRawClaudeUsage = exports.SYNTHETIC_MODEL = exports.ClaudeUsageDeduper = exports.readAgentMeta = exports.extractTaskInfo = exports.scanSubagentDir = exports.codexSpawnParentFromSource = exports.codexRolloutOrigin = exports.resolveCodexCallUsage = exports.normalizeCodexToolInput = exports.normalizeCodexToolName = exports.extractPatchFilePaths = exports.DEFAULT_MAX_TRACKED_TOOL_CALLS = exports.CodexRolloutParser = exports.parseDbPartData = exports.parseDbMessageData = exports.convertOpenCodeMessage = exports.detectPlanModeFromText = exports.normalizeToolInput = exports.normalizeToolName = exports.TRUNCATION_PATTERNS = exports.JsonlParser = exports.walkRolloutFilesAsync = exports.walkRolloutFiles = exports.findCodexRolloutFile = exports.CodexProvider = exports.getOpenCodeDataDir = exports.OpenCodeProvider = exports.ClaudeCodeProvider = exports.getAllDetectedProviders = exports.detectProvider = exports._resetProviderDetectionCache = exports.getObservedActivityReason = exports.derivePendingUserRequestV1 = exports.createProviderSessionAdapterV1 = exports.createSessionProviders = exports.SESSION_PROVIDER_IDS = exports.renderHandoffUrlTemplate = exports.addNote = exports.decisionFingerprint = exports.addDecision = exports.completeTask = exports.addTask = exports.withFileLockSync = exports.updateJsonStoreAtomicSync = exports.updateJsonStoreAtomic = exports.atomicWriteFileSync = exports.atomicWriteJsonSync = exports.atomicWriteJson = exports.readClaudeCodePlanFiles = void 0;
|
|
9
|
-
exports.
|
|
10
|
-
exports.
|
|
11
|
-
exports.
|
|
12
|
-
exports.
|
|
13
|
-
exports.
|
|
14
|
-
exports.
|
|
15
|
-
exports.
|
|
16
|
-
exports.
|
|
17
|
-
exports.resolveWorkspaceRoots = exports.TOOL_CATEGORIES = exports.classifyTool = exports.CODEX_ARCHIVED_SESSIONS_SUBDIR = exports.CODEX_SESSIONS_SUBDIR = exports.forceFileCredentialStore = exports.getCodexSessionsDirs = exports.syncCodexLiveStateAsync = exports.readStoredCodexAccount = exports.repairCodexCredentialStores = exports.inspectCodexCredentialStores = exports.fetchProviderServiceStatus = exports.parseCodexLoginStatus = exports.parseClaudeAuthStatus = exports.decodeCodexErrorInfo = exports.CODEX_ERROR_INFO_KINDS = exports.PROVIDER_RECOVERY_ACTIONS = exports.PROVIDER_FAILURE_EVIDENCE_SOURCES = exports.PROVIDER_FAILURE_CODES = exports.PROVIDER_CREDENTIAL_KINDS = exports.PROVIDER_AUTHENTICATION_STATES = exports.PROVIDER_AUTHENTICATION_SOURCES = exports.diagnoseProviderFailure = exports.mergeFailingToolWindows = exports.failingToolTrend = exports.FAILING_TOOL_TREND_ARROWS = exports.scopePeakHoursToSessionProvider = exports.PEAK_HOURS_DESCRIPTION = exports.PEAK_HOURS_CACHE_MS = exports.isClaudeCodeSessionProvider = exports.getScheduledPeakHoursState = exports.fetchPeakHoursStatus = exports.DEFAULT_PEAK_HOURS_TIMEOUT_MS = exports.createPeakHoursNotApplicableState = exports._resetPeakHoursCache = exports.runDoctor = exports.getSessionDiagnostics = exports.formatHealthReport = exports.toLegacyProviderStatus = exports.fetchOpenAIStatus = void 0;
|
|
9
|
+
exports.parseTaskNotification = exports.isTaskNotificationSystemEvent = exports.isSubagentSpawnTool = exports.SUBAGENT_SPAWN_TOOL_NAMES = exports.readSessionContextSnapshot = exports.createSessionContextProjector = exports.calculateSessionContextPressure = exports.buildSessionContextSnapshot = exports.composeContext = exports.FilterEngine = exports.searchSessions = exports.CodexDatabase = exports.OpenCodeDatabase = exports.discoverDebugLogs = exports.collapseDuplicates = exports.filterByLevel = exports.parseDebugLog = exports.readSessionPreviewAsync = exports.readSessionPreview = exports.listSessionPreviewsAsync = exports.listSessionPreviews = exports.readCodexHistory = exports.parseMcpToolName = exports.scanSubagentTraces = exports.findAllSessionsWithWorktrees = exports.discoverWorktreeSiblings = exports.resolveWorktreeMainRepo = exports.getAllClaudeProjectFolders = exports.decodeEncodedPath = exports.getMostRecentlyActiveSessionDir = exports.findSubdirectorySessionDirs = exports.findSessionFilesWithStats = exports.findSessionsInDirectory = exports.findAllClaudeSessions = exports.findActiveClaudeSession = exports.discoverSessionDirectory = exports.getClaudeSessionDirectory = exports.encodeClaudeWorkspacePath = exports.SESSION_ACTIVITY_STALENESS_MS = exports.SESSION_ACTIVITY_GRACE_PERIOD_MS = exports.refreshSessionActivityState = exports.detectSessionActivity = exports.classifySessionActivity = exports.subagentTokenTotals = exports.scanSessionSubagents = exports.readMainThreadTokenTotals = exports.combineSessionTokenTotals = exports.collectSessionTokenTotals = exports.addUsageToSubagent = exports.normalizeClaudeUsage = void 0;
|
|
10
|
+
exports.pruneSnapshots = exports.isSnapshotValid = exports.deleteSnapshot = exports.loadSnapshot = exports.saveSnapshot = exports.SessionMonitor = exports.parseTodoDependencies = exports.EventAggregator = exports.getRandomPhrase = exports.PHRASE_CATEGORIES = exports.ALL_PHRASES = exports.HIGHLIGHT_CSS = exports.clearHighlightCache = exports.highlightEvent = exports.formatSessionJson = exports.formatSessionMarkdown = exports.formatSessionText = exports.classifyNoise = exports.shouldMergeWithPrevious = exports.classifyFollowEvent = exports.classifyMessage = exports.getSoftNoiseReason = exports.isHardNoiseFollowEvent = exports.isHardNoise = exports.formatToolSummary = exports.parseLocalDateKey = exports.formatTokenCount = exports.formatLocalDateKey = exports.formatDurationMs = exports.addLocalDays = exports.verifyJsonlCheckpoint = exports.JsonlTailSymlinkError = exports.JSONL_TAIL_CHECKPOINT_VERSION = exports.DEFAULT_JSONL_TAIL_READ_BYTES = exports.DEFAULT_JSONL_TAIL_MAX_LINE_BYTES = exports.createJsonlTail = exports.captureJsonlCheckpoint = exports.toFollowEvents = exports.resolveSessionPath = exports.createWatcher = exports.parseChangelog = exports.extractProposedPlanShared = exports.parsePlanMarkdownShared = exports.PlanExtractor = exports.segmentAssistantTurn = exports.reasoningSummary = exports.isAssistantTurnSubagentTool = exports.extractTurnSubagents = exports.assistantTurnEventsFromSessionEvents = exports.taskNotificationFromEvent = void 0;
|
|
11
|
+
exports.codexIdentitiesMatch = exports.readCodexAccessTokenExpiry = exports.readCodexLastRefresh = exports.readCodexAuthIdentity = exports.parseCodexAuthJson = exports.CLAUDE_REFRESH_TOKEN_LIFETIME_ESTIMATE_MS = exports.CLAUDE_ACCESS_TOKEN_LIFETIME_MS = exports.mergeClaudeLoginIntoLive = exports.claudeLoginOnly = exports.claudeRefreshFingerprint = exports.resolveClaudeRefreshExpiry = exports.isNewerClaudeCredential = exports.claudeCredentialFreshness = exports.parseClaudeCredentialBlob = exports.readClaudeMaxAccessTokenSync = exports.readClaudeMaxCredentialsRaw = exports.readClaudeMaxCredentials = exports.parseKeychainDump = exports.repairClaudeCredentialStores = exports.inspectClaudeCredentialStores = exports.getClaudeCredentialLedgerPath = exports.readClaudeCredentialLedger = exports.decideLiveClaudeWrite = exports.SIDEKICK_KEYCHAIN_COMMENT_PREFIX = exports.ClaudeCredentialWriteError = exports.deleteStoredCredentials = exports.writeActiveCredentials = exports.readClaudeCredentialStore = exports.readActiveCredentials = exports.openInBrowser = exports.parseTranscriptFromEvents = exports.parseTranscript = exports.generateHtmlReport = exports.formatCompactionLedger = exports.calculateCompactionLedger = exports.describeCostProvenance = exports.classifyCostProvenance = exports.calculateCodeImpact = exports.scoreSessionQuality = exports.calculateQualityTrend = exports.PatternExtractor = exports.HeatmapTracker = exports.FrequencyTracker = exports.readErrorHistory = exports.getTopFailingTools = exports.appendErrorHistory = exports.MAX_ERROR_HISTORY_SESSIONS = exports.ERROR_HISTORY_SCHEMA_VERSION = exports.getSnapshotPath = exports.MAX_SNAPSHOT_FILES = void 0;
|
|
12
|
+
exports.ACCOUNT_CONSUMER_REACHABILITY = exports.describeAccountConsumer = exports.detectRunningAccountConsumersSync = exports.detectRunningAccountConsumers = exports.findRunningProcessesSync = exports.findRunningProcesses = exports.keepAliveCommand = exports.refreshInactiveAccounts = exports.getAccountLaunchEnv = exports.getHealthSidecarPath = exports.readHealthSidecar = exports.listAccountsWithHealth = exports.getAccountHealth = exports.cleanupAbandonedLogins = exports.syncLiveAccountStateSync = exports.syncLiveAccountState = exports.getLastSwitchPath = exports.readLastSwitch = exports.discardAccountLogin = exports.resolveClaudeLoginCommand = exports.listAllAccounts = exports.getLastSwitch = exports.undoLastSwitch = exports.switchAccountAsync = exports.switchAccount = exports.spawnAccountLogin = exports.finalizeAccountLoginAsync = exports.finalizeAccountLogin = exports.getAccountLoginStatusAsync = exports.getAccountLoginStatus = exports.beginAccountLogin = exports.isMultiAccountEnabled = exports.resolveActiveClaudeAccount = exports.getActiveAccount = exports.listAccounts = exports.removeAccount = exports.reconcileClaudeAuthState = exports.applyActiveClaudeToLiveHome = exports.resolveActiveClaudeHome = exports.cleanupAbandonedClaudeLogins = exports.syncClaudeLiveState = exports.switchToAccountAsync = exports.switchToAccount = exports.addCurrentAccount = exports.readActiveClaudeAccount = exports.writeAccountRegistry = exports.readAccountRegistry = exports.ensureDefaultAccounts = exports.compareCodexAuthFreshness = exports.codexRefreshFingerprint = void 0;
|
|
13
|
+
exports.removeLauncher = exports.writeLauncher = exports.writeAccountLauncher = exports.CODEX_KEYRING_FIX_HINT = exports.getCodexCredentialStoreMode = exports.cleanupAbandonedCodexLogins = exports.syncCodexLiveState = exports.removeCodexAccount = exports.switchToCodexAccountAsync = exports.switchToCodexAccount = exports.finalizeCodexAccountAsync = exports.finalizeCodexAccount = exports.prepareCodexAccountAsync = exports.prepareCodexAccount = exports.getCodexExecutionEnv = exports.resolveSidekickCodexHome = exports.resolveActiveCodexAccount = exports.getActiveCodexAccount = exports.listCodexAccounts = exports.getSystemCodexHome = exports.getCodexMonitoringHomes = exports.getCodexProfileHome = exports.getCodexProfilesDir = exports.getClaudeProjectsDir = exports.isDefaultClaudeHome = exports.getDefaultClaudeHome = exports.getLiveClaudeHome = exports.readLiveClaudeIdentity = exports.readClaudeProfileIdentity = exports.isClaudeProfileAuthenticated = exports.CLAUDE_SECURESTORAGE_CONFIG_DIR_ENV = exports.buildClaudeChildEnv = exports.claudeKeychainAccountName = exports.claudeKeychainService = exports.claudeKeychainSuffix = exports.getClaudeConfigPath = exports.getClaudeProfileHome = exports.getClaudeProfilesDir = exports.onAccountsChanged = exports.getActiveAccountStatus = exports.ACCOUNT_PROVIDER_IDS = exports.removeSavedAccountProfile = exports.replaceSavedAccountProfiles = exports.setActiveSavedAccount = exports.upsertSavedAccountProfile = exports.getActiveSavedAccount = exports.listSavedAccountProfiles = exports.writeSavedAccountRegistry = exports.readSavedAccountRegistry = exports.getAccountsDir = void 0;
|
|
14
|
+
exports.resolveZaiQuota = exports.readZaiCredentials = exports.quotaStateFromZaiQuotaLimitPayload = exports.fetchZaiQuotaFromApi = exports.CodexQuotaWatcher = exports.resolveCodexQuotaFromLocalSources = exports.resolveCodexQuota = exports.readLatestCodexQuotaFromRollouts = exports.quotaFromCodexRateLimits = exports.fetchCodexQuotaFromApi = exports.fetchCodexResetCreditsFromApi = exports.quotaHistoryWindow = exports.getWorkspaceIdFromPath = exports.pruneQuotaHistory = exports.readQuotaHistoryDailyBuckets = exports.readQuotaHistoryRange = exports.appendQuotaHistorySample = exports.quotaFromStatuslinePayload = exports.parseClaudeStatuslinePayload = exports.evaluateQuotaThresholds = exports.describeQuotaThresholdAlert = exports.DEFAULT_QUOTA_THRESHOLDS = exports.QUOTA_FRESH_MAX_AGE_MS = exports.QUOTA_AGING_MAX_AGE_MS = exports.formatQuotaAge = exports.classifyQuotaFreshness = exports.resolveQuota = exports.writeQuotaSnapshot = exports.readQuotaSnapshot = exports.QuotaPoller = exports.describeQuotaFailure = exports.withQuotaProjections = exports.withClaudePlan = exports.quotaWindowShortLabel = exports.quotaWindowLabel = exports.quotaWindowHasData = exports.quotaWindowApplies = exports.quotaStateFromClaudeUsagePayload = exports.quotaSampleExpired = exports.projectQuotaWindow = exports.formatExtraUsage = exports.fetchQuota = exports.extraQuotaRows = exports.claudePlanLabel = exports.SEVEN_DAY_WINDOW_MS = exports.QUOTA_PROVIDER_IDS = exports.FIVE_HOUR_WINDOW_MS = exports.AutoSwitchController = exports.decideAutoSwitch = exports.DEFAULT_AUTO_SWITCH_CONFIG = void 0;
|
|
15
|
+
exports.codexSessions = exports.readCodexAssets = exports.claudeSessions = exports.readClaudeAssets = exports.extractCommands = exports.extractFilePaths = exports.extractUrls = exports.extractTokenUsage = exports.getObservedContextWindowPath = exports.recordObservedContextWindow = exports.loadObservedContextWindows = exports.LITELLM_CATALOG_URL = exports.normalizeLiteLlmContextWindows = exports.normalizeLiteLlmCatalog = exports.hydratePricingCatalog = exports.RESOLVED_MODEL_CATALOG_SCHEMA_VERSION = exports.resolveModelAlias = exports.registerModelAlias = exports.importResolvedModelCatalog = exports.exportResolvedModelCatalog = exports.mergeCostComponents = exports.costSourceFromPricingProvenance = exports.getPricingCatalogInfo = exports.clearRegisteredModelPricing = exports.registerModelPricing = exports.isMovingModelAlias = exports.canonicalModelId = exports.MODEL_PROVIDER_IDS = exports.formatCost = exports.sortModelIds = exports.compareModelIds = exports.getModelDisplayInfo = exports.shortModelName = exports.mergeCostSources = exports.calculateCostWithProvenance = exports.calculateCostWithPricing = exports.calculateCost = exports.getModelInfo = exports.resolveModelPricing = exports.getModelPricing = exports.parseModelId = exports.DEFAULT_CONTEXT_WINDOW = exports.resolveModelContextWindow = exports.getModelContextWindowSize = exports.selectStatuslineAccount = exports.formatStatusline = exports.estimateTimeToQuota = exports.BurnRateCalculator = exports.RUNTIME_QUOTA_PROVIDER_IDS = exports.MultiProviderQuotaService = void 0;
|
|
16
|
+
exports.assistantTurnProjectionSchema = exports.assistantTurnProcessStepSchema = exports.assistantTurnProcessSchema = exports.assistantTurnNarrationStepSchema = exports.assistantTurnEventTypeSchema = exports.assistantTurnEventSchema = exports.listAllAccountsResultSchema = exports.savedAccountProfileSchema = exports.accountEntrySchema = exports.accountLoginStatusSchema = exports.beginAccountLoginResultSchema = exports.accountManagerResultSchema = exports.accountProviderIdSchema = exports.activeAccountStatusSchema = exports.activeProviderAccountStatusSchema = exports.providerFailureDiagnosisSchema = exports.providerRetryAfterSchema = exports.providerFailureEvidenceSchema = exports.providerAuthenticationEvidenceSchema = exports.quotaHistoryDailyBucketSchema = exports.quotaHistorySampleSchema = exports.quotaHistoryRuntimeProviderSchema = exports.providerQuotaMapSchema = exports.zaiProviderQuotaStateSchema = exports.codexProviderQuotaStateSchema = exports.claudeProviderQuotaStateSchema = exports.providerQuotaStateSchema = exports.runtimeQuotaProviderSchema = exports.quotaFailureDescriptorSchema = exports.peakHoursStateSchema = exports.codexResetCreditsSnapshotSchema = exports.codexResetCreditSchema = exports.quotaSourceSchema = exports.quotaProviderIdSchema = exports.quotaFailureKindSchema = exports.quotaExtraUsageSchema = exports.quotaLimitRowSchema = exports.quotaStateSchema = exports.quotaWindowSchema = exports.extractSessionEvents = exports.permissionModeSchema = exports.sessionEventSchema = exports.sessionMessageSchema = exports.messageUsageSchema = exports.ToolCallTracker = exports.extractToolCalls = exports.extractToolCall = exports.extractErrorMessage = exports.categorizeError = exports.gatherAssetsForCwd = void 0;
|
|
17
|
+
exports.resolveWorkspaceRoots = exports.TOOL_CATEGORIES = exports.classifyTool = exports.CODEX_ARCHIVED_SESSIONS_SUBDIR = exports.CODEX_SESSIONS_SUBDIR = exports.forceFileCredentialStore = exports.getCodexSessionsDirs = exports.syncCodexLiveStateAsync = exports.readStoredCodexAccount = exports.repairCodexCredentialStores = exports.inspectCodexCredentialStores = exports.fetchProviderServiceStatus = exports.parseCodexLoginStatus = exports.parseClaudeAuthStatus = exports.decodeCodexErrorInfo = exports.CODEX_ERROR_INFO_KINDS = exports.PROVIDER_RECOVERY_ACTIONS = exports.PROVIDER_FAILURE_EVIDENCE_SOURCES = exports.PROVIDER_FAILURE_CODES = exports.PROVIDER_CREDENTIAL_KINDS = exports.PROVIDER_AUTHENTICATION_STATES = exports.PROVIDER_AUTHENTICATION_SOURCES = exports.diagnoseProviderFailure = exports.mergeFailingToolWindows = exports.failingToolTrend = exports.FAILING_TOOL_TREND_ARROWS = exports.scopePeakHoursToSessionProvider = exports.PEAK_HOURS_DESCRIPTION = exports.PEAK_HOURS_CACHE_MS = exports.isClaudeCodeSessionProvider = exports.getScheduledPeakHoursState = exports.fetchPeakHoursStatus = exports.DEFAULT_PEAK_HOURS_TIMEOUT_MS = exports.createPeakHoursNotApplicableState = exports._resetPeakHoursCache = exports.runDoctor = exports.getSessionDiagnostics = exports.formatHealthReport = exports.toLegacyProviderStatus = exports.fetchOpenAIStatus = exports.fetchProviderStatus = exports.assistantTurnToolRefSchema = exports.assistantTurnToolGroupStepSchema = exports.assistantTurnTimelineItemSchema = exports.assistantTurnSubagentStatusSchema = exports.assistantTurnSubagentSchema = exports.assistantTurnReasoningTimelineItemSchema = void 0;
|
|
18
18
|
var usageNormalization_1 = require("./usageNormalization");
|
|
19
19
|
Object.defineProperty(exports, "normalizeProviderUsage", { enumerable: true, get: function () { return usageNormalization_1.normalizeProviderUsage; } });
|
|
20
20
|
Object.defineProperty(exports, "extractNormalizedUsage", { enumerable: true, get: function () { return usageNormalization_1.extractNormalizedUsage; } });
|
|
@@ -297,6 +297,13 @@ Object.defineProperty(exports, "buildSessionContextSnapshot", { enumerable: true
|
|
|
297
297
|
Object.defineProperty(exports, "calculateSessionContextPressure", { enumerable: true, get: function () { return sessionContext_1.calculateSessionContextPressure; } });
|
|
298
298
|
Object.defineProperty(exports, "createSessionContextProjector", { enumerable: true, get: function () { return sessionContext_1.createSessionContextProjector; } });
|
|
299
299
|
Object.defineProperty(exports, "readSessionContextSnapshot", { enumerable: true, get: function () { return sessionContext_1.readSessionContextSnapshot; } });
|
|
300
|
+
// Subagent spawns (`Agent` / `Task`) and background-task notifications
|
|
301
|
+
var subagentSpawn_1 = require("./subagentSpawn");
|
|
302
|
+
Object.defineProperty(exports, "SUBAGENT_SPAWN_TOOL_NAMES", { enumerable: true, get: function () { return subagentSpawn_1.SUBAGENT_SPAWN_TOOL_NAMES; } });
|
|
303
|
+
Object.defineProperty(exports, "isSubagentSpawnTool", { enumerable: true, get: function () { return subagentSpawn_1.isSubagentSpawnTool; } });
|
|
304
|
+
Object.defineProperty(exports, "isTaskNotificationSystemEvent", { enumerable: true, get: function () { return subagentSpawn_1.isTaskNotificationSystemEvent; } });
|
|
305
|
+
Object.defineProperty(exports, "parseTaskNotification", { enumerable: true, get: function () { return subagentSpawn_1.parseTaskNotification; } });
|
|
306
|
+
Object.defineProperty(exports, "taskNotificationFromEvent", { enumerable: true, get: function () { return subagentSpawn_1.taskNotificationFromEvent; } });
|
|
300
307
|
// Assistant turn projection
|
|
301
308
|
var assistantTurn_1 = require("./turns/assistantTurn");
|
|
302
309
|
Object.defineProperty(exports, "assistantTurnEventsFromSessionEvents", { enumerable: true, get: function () { return assistantTurn_1.assistantTurnEventsFromSessionEvents; } });
|
|
@@ -318,11 +325,13 @@ Object.defineProperty(exports, "resolveSessionPath", { enumerable: true, get: fu
|
|
|
318
325
|
var eventBridge_1 = require("./watchers/eventBridge");
|
|
319
326
|
Object.defineProperty(exports, "toFollowEvents", { enumerable: true, get: function () { return eventBridge_1.toFollowEvents; } });
|
|
320
327
|
var jsonlTail_1 = require("./watchers/jsonlTail");
|
|
328
|
+
Object.defineProperty(exports, "captureJsonlCheckpoint", { enumerable: true, get: function () { return jsonlTail_1.captureJsonlCheckpoint; } });
|
|
321
329
|
Object.defineProperty(exports, "createJsonlTail", { enumerable: true, get: function () { return jsonlTail_1.createJsonlTail; } });
|
|
322
330
|
Object.defineProperty(exports, "DEFAULT_JSONL_TAIL_MAX_LINE_BYTES", { enumerable: true, get: function () { return jsonlTail_1.DEFAULT_JSONL_TAIL_MAX_LINE_BYTES; } });
|
|
323
331
|
Object.defineProperty(exports, "DEFAULT_JSONL_TAIL_READ_BYTES", { enumerable: true, get: function () { return jsonlTail_1.DEFAULT_JSONL_TAIL_READ_BYTES; } });
|
|
324
332
|
Object.defineProperty(exports, "JSONL_TAIL_CHECKPOINT_VERSION", { enumerable: true, get: function () { return jsonlTail_1.JSONL_TAIL_CHECKPOINT_VERSION; } });
|
|
325
333
|
Object.defineProperty(exports, "JsonlTailSymlinkError", { enumerable: true, get: function () { return jsonlTail_1.JsonlTailSymlinkError; } });
|
|
334
|
+
Object.defineProperty(exports, "verifyJsonlCheckpoint", { enumerable: true, get: function () { return jsonlTail_1.verifyJsonlCheckpoint; } });
|
|
326
335
|
// Formatters
|
|
327
336
|
var formatting_1 = require("./formatting");
|
|
328
337
|
Object.defineProperty(exports, "addLocalDays", { enumerable: true, get: function () { return formatting_1.addLocalDays; } });
|
package/dist/modelCatalog.js
CHANGED
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.resolveModelAlias = exports.registerModelAlias = exports.RESOLVED_MODEL_CATALOG_SCHEMA_VERSION = void 0;
|
|
4
4
|
exports.exportResolvedModelCatalog = exportResolvedModelCatalog;
|
|
5
5
|
exports.importResolvedModelCatalog = importResolvedModelCatalog;
|
|
6
|
+
const ownKey_1 = require("./ownKey");
|
|
6
7
|
const modelContext_1 = require("./modelContext");
|
|
7
8
|
const modelInfo_1 = require("./modelInfo");
|
|
8
9
|
const modelAliases_1 = require("./modelAliases");
|
|
@@ -31,13 +32,13 @@ function exportResolvedModelCatalog(ids) {
|
|
|
31
32
|
const selectedIds = normalizedIds(ids);
|
|
32
33
|
for (const id of selectedIds) {
|
|
33
34
|
const canonicalId = (0, modelAliases_1.resolveModelAlias)(id);
|
|
34
|
-
models
|
|
35
|
+
(0, ownKey_1.setOwnValue)(models, id, {
|
|
35
36
|
id,
|
|
36
37
|
canonicalId,
|
|
37
38
|
contextWindow: (0, modelContext_1.resolveModelContextWindow)(id),
|
|
38
39
|
// Registered prices are this realm's local configuration, never exported.
|
|
39
40
|
pricing: (0, modelInfo_1.resolveModelPricing)(id, { includeRegistered: false }),
|
|
40
|
-
};
|
|
41
|
+
});
|
|
41
42
|
}
|
|
42
43
|
const selectedCanonicalIds = new Set(Object.values(models).flatMap(({ id, canonicalId }) => [id, canonicalId]));
|
|
43
44
|
const aliases = Object.fromEntries(Object.entries((0, modelAliases_1._getModelAliases)()).filter(([alias, canonicalId]) => selectedCanonicalIds.has(alias) || selectedCanonicalIds.has(canonicalId)));
|
|
@@ -82,9 +83,9 @@ function importResolvedModelCatalog(snapshot) {
|
|
|
82
83
|
if (!id)
|
|
83
84
|
continue;
|
|
84
85
|
if (contextResolved)
|
|
85
|
-
contexts
|
|
86
|
+
(0, ownKey_1.setOwnValue)(contexts, id, context);
|
|
86
87
|
if (pricingResolved)
|
|
87
|
-
prices
|
|
88
|
+
(0, ownKey_1.setOwnValue)(prices, id, pricing);
|
|
88
89
|
}
|
|
89
90
|
imported++;
|
|
90
91
|
}
|
package/dist/modelContext.js
CHANGED
|
@@ -42,6 +42,7 @@ exports._getModelContextIds = _getModelContextIds;
|
|
|
42
42
|
exports.resolveModelContextWindow = resolveModelContextWindow;
|
|
43
43
|
exports.getModelContextWindowSize = getModelContextWindowSize;
|
|
44
44
|
const modelAliases_1 = require("./modelAliases");
|
|
45
|
+
const ownKey_1 = require("./ownKey");
|
|
45
46
|
/** Known model context window sizes (in tokens); current models verified 2026-09-05. */
|
|
46
47
|
const MODEL_CONTEXT_SIZES = {
|
|
47
48
|
// Published API limits verified 2026-10-30; GLM's API documents 1M even
|
|
@@ -158,7 +159,7 @@ function normalizeOverrides(overrides) {
|
|
|
158
159
|
for (const [key, value] of Object.entries(overrides)) {
|
|
159
160
|
if (!Number.isFinite(value) || value <= 0)
|
|
160
161
|
continue;
|
|
161
|
-
out
|
|
162
|
+
(0, ownKey_1.setOwnValue)(out, key.trim().toLowerCase(), value);
|
|
162
163
|
}
|
|
163
164
|
return out;
|
|
164
165
|
}
|
|
@@ -222,7 +223,7 @@ function _getModelContextIds() {
|
|
|
222
223
|
// ── Lookup ──
|
|
223
224
|
/** Exact match against one table. */
|
|
224
225
|
function exactWindow(table, modelId) {
|
|
225
|
-
const hit = table
|
|
226
|
+
const hit = (0, ownKey_1.ownValue)(table, modelId);
|
|
226
227
|
return hit === undefined ? null : hit;
|
|
227
228
|
}
|
|
228
229
|
function exactWindowMatch(table, modelId) {
|
|
@@ -270,7 +271,7 @@ function resolveModelContextWindow(modelId) {
|
|
|
270
271
|
// Imported resolutions rank below local observed data: a window this realm
|
|
271
272
|
// saw first-hand is fresher than a snapshot transferred from another realm.
|
|
272
273
|
if (!observedExact) {
|
|
273
|
-
const imported = importedTable
|
|
274
|
+
const imported = (0, ownKey_1.ownValue)(importedTable, stripped) ?? (0, ownKey_1.ownValue)(importedTable, canonicalModelId);
|
|
274
275
|
if (imported) {
|
|
275
276
|
return { ...imported, modelId: rawModelId, canonicalModelId };
|
|
276
277
|
}
|
package/dist/modelInfo.js
CHANGED
|
@@ -51,6 +51,7 @@ exports.compareModelIds = compareModelIds;
|
|
|
51
51
|
exports.sortModelIds = sortModelIds;
|
|
52
52
|
const modelContext_1 = require("./modelContext");
|
|
53
53
|
const modelAliases_1 = require("./modelAliases");
|
|
54
|
+
const ownKey_1 = require("./ownKey");
|
|
54
55
|
var providerIds_1 = require("./providerIds");
|
|
55
56
|
Object.defineProperty(exports, "MODEL_PROVIDER_IDS", { enumerable: true, get: function () { return providerIds_1.MODEL_PROVIDER_IDS; } });
|
|
56
57
|
var formatting_1 = require("./formatting");
|
|
@@ -1108,11 +1109,11 @@ function resolveModelPricing(modelId, options) {
|
|
|
1108
1109
|
});
|
|
1109
1110
|
if (registered && !registered.entry.onlyIfMissing)
|
|
1110
1111
|
return registeredResult(registered);
|
|
1111
|
-
const imported = importedTable
|
|
1112
|
+
const imported = (0, ownKey_1.ownValue)(importedTable, rawId) ?? (0, ownKey_1.ownValue)(importedTable, aliasId);
|
|
1112
1113
|
if (imported)
|
|
1113
1114
|
return { ...imported, modelId, canonicalModelId: aliasId };
|
|
1114
1115
|
for (const id of candidateIds) {
|
|
1115
|
-
const exactOverride = overrideTable
|
|
1116
|
+
const exactOverride = (0, ownKey_1.ownValue)(overrideTable, id);
|
|
1116
1117
|
if (exactOverride) {
|
|
1117
1118
|
return {
|
|
1118
1119
|
modelId,
|
|
@@ -1128,7 +1129,7 @@ function resolveModelPricing(modelId, options) {
|
|
|
1128
1129
|
}
|
|
1129
1130
|
}
|
|
1130
1131
|
for (const id of candidateIds) {
|
|
1131
|
-
const exactStatic = PRICING_TABLE
|
|
1132
|
+
const exactStatic = (0, ownKey_1.ownValue)(PRICING_TABLE, id);
|
|
1132
1133
|
if (exactStatic) {
|
|
1133
1134
|
return {
|
|
1134
1135
|
modelId,
|
package/dist/node.d.ts
CHANGED
|
@@ -76,5 +76,5 @@ export type { ClassifyToolOptions, ToolCategory } from './toolCategory';
|
|
|
76
76
|
export { resolveWorkspaceRoots } from './workspaceRoots';
|
|
77
77
|
export type { ResolveWorkspaceRootsOptions, ResolvedWorkspaceRoots } from './workspaceRoots';
|
|
78
78
|
export { discoverWorktreeSiblings, resolveWorktreeMainRepo } from './parsers/sessionPathResolver';
|
|
79
|
-
export { createJsonlTail, DEFAULT_JSONL_TAIL_MAX_LINE_BYTES, DEFAULT_JSONL_TAIL_READ_BYTES, JSONL_TAIL_CHECKPOINT_VERSION, JsonlTailSymlinkError, } from './watchers/jsonlTail';
|
|
79
|
+
export { captureJsonlCheckpoint, createJsonlTail, DEFAULT_JSONL_TAIL_MAX_LINE_BYTES, DEFAULT_JSONL_TAIL_READ_BYTES, JSONL_TAIL_CHECKPOINT_VERSION, JsonlTailSymlinkError, verifyJsonlCheckpoint, } from './watchers/jsonlTail';
|
|
80
80
|
export type { JsonlTail, JsonlTailCheckpoint, JsonlTailReadResult, JsonlTailEntry, JsonlTailRewritePolicy, JsonlTailBatch, JsonlTailLine, JsonlTailOptions, JsonlTailReset, JsonlTailResetReason, } from './watchers/jsonlTail';
|
package/dist/node.js
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
10
|
exports.removeSessionSummary = exports.markFileImported = exports.isFileImported = exports.applySessionSummary = exports.subagentTokenTotals = exports.scanSessionSubagents = exports.readMainThreadTokenTotals = exports.combineSessionTokenTotals = exports.collectSessionTokenTotals = exports.pruneUsageCache = exports.getUsageCacheDir = exports.collectUsageEvents = exports.USAGE_CACHE_VERSION = exports.MAX_USAGE_CACHE_FILES = exports.findActiveBillingBlock = exports.computeBillingBlocks = exports.BILLING_BLOCK_DURATION_MS = exports.writeStateFile = exports.readStateFile = exports.quotaToStateFile = exports.getStateFilePath = exports.billingBlockToStateFile = exports.STATE_FILE_SCHEMA_VERSION = exports.STATE_FILE_NAME = exports.sessionFingerprintParts = exports.fingerprintString = exports.readSessionReportInputs = exports.readSessionFileStats = exports.providerContextSizeFn = exports.firstUserPrompt = exports.computeSessionFileStats = exports.isHumanPrompt = exports.humanPromptText = exports.HUMAN_CODEX_SOURCES = exports.HUMAN_CLAUDE_ENTRYPOINTS = exports.collectSessionPromptHistory = exports.findToolCallOrigins = exports.PROMPT_HISTORY_ORDINAL_MAX_RECORD_BYTES = exports.parsePromptHistoryCursor = exports.isPromptHistorySessionSettled = exports.collectPromptHistory = exports.readSessionTranscript = exports.listRecentSessions = exports.getObservedContextWindowPath = exports.recordObservedContextWindow = exports.loadObservedContextWindows = exports.LITELLM_CATALOG_URL = exports.normalizeLiteLlmContextWindows = exports.normalizeLiteLlmCatalog = exports.hydratePricingCatalog = void 0;
|
|
11
11
|
exports.atomicWriteJson = exports.compareCodexAuthFreshness = exports.codexRefreshFingerprint = exports.codexIdentitiesMatch = exports.readCodexAccessTokenExpiry = exports.readCodexLastRefresh = exports.readCodexAuthIdentity = exports.parseCodexAuthJson = exports.CODEX_ARCHIVED_SESSIONS_SUBDIR = exports.CODEX_SESSIONS_SUBDIR = exports.forceFileCredentialStore = exports.getCodexCredentialStoreMode = exports.getCodexSessionsDirs = exports.getCodexExecutionEnv = exports.resolveSidekickCodexHome = exports.getCodexMonitoringHomes = exports.getSystemCodexHome = exports.getClaudeProjectsDir = exports.isDefaultClaudeHome = exports.getDefaultClaudeHome = exports.getLiveClaudeHome = exports.getClaudeSessionDirectory = exports.encodeClaudeWorkspacePath = exports.getDefaultConfigDir = exports.getConfigDirOverride = exports.getConfigDir = exports.CONFIG_DIR_ENV_VAR = exports.SYNTHETIC_MODEL = exports.createSessionProviders = exports.splitWatchedPath = exports.DirectoryListingCache = exports.fileFingerprintParts = exports.fileFingerprint = exports.observedSessionSourceFromProvider = exports.ObservedSessionCollector = exports.readSessionPreviewAsync = exports.readSessionPreview = exports.listSessionPreviewsAsync = exports.listSessionPreviews = exports.readCodexHistory = exports.walkRolloutFilesAsync = exports.walkRolloutFiles = exports.findCodexRolloutFile = exports.weekKey = exports.usageBucketKey = exports.summarizeUsageRows = exports.bucketUsage = exports.importSessionHistory = exports.ACTIVE_SESSION_MTIME_THRESHOLD_MS = exports.sessionSummaryFromStats = void 0;
|
|
12
|
-
exports.JsonlTailSymlinkError = exports.JSONL_TAIL_CHECKPOINT_VERSION = exports.DEFAULT_JSONL_TAIL_READ_BYTES = exports.DEFAULT_JSONL_TAIL_MAX_LINE_BYTES = exports.createJsonlTail = exports.resolveWorktreeMainRepo = exports.discoverWorktreeSiblings = exports.resolveWorkspaceRoots = exports.TOOL_CATEGORIES = exports.classifyTool = exports.fetchProviderServiceStatus = exports.clearRegisteredModelPricing = exports.registerModelPricing = exports.getPricingCatalogInfo = exports.codexSpawnParentFromSource = exports.codexRolloutOrigin = exports.parseCodexLoginStatus = exports.parseClaudeAuthStatus = exports.atomicWriteJsonSync = void 0;
|
|
12
|
+
exports.verifyJsonlCheckpoint = exports.JsonlTailSymlinkError = exports.JSONL_TAIL_CHECKPOINT_VERSION = exports.DEFAULT_JSONL_TAIL_READ_BYTES = exports.DEFAULT_JSONL_TAIL_MAX_LINE_BYTES = exports.createJsonlTail = exports.captureJsonlCheckpoint = exports.resolveWorktreeMainRepo = exports.discoverWorktreeSiblings = exports.resolveWorkspaceRoots = exports.TOOL_CATEGORIES = exports.classifyTool = exports.fetchProviderServiceStatus = exports.clearRegisteredModelPricing = exports.registerModelPricing = exports.getPricingCatalogInfo = exports.codexSpawnParentFromSource = exports.codexRolloutOrigin = exports.parseCodexLoginStatus = exports.parseClaudeAuthStatus = exports.atomicWriteJsonSync = void 0;
|
|
13
13
|
var pricingCatalog_1 = require("./pricingCatalog");
|
|
14
14
|
Object.defineProperty(exports, "hydratePricingCatalog", { enumerable: true, get: function () { return pricingCatalog_1.hydratePricingCatalog; } });
|
|
15
15
|
Object.defineProperty(exports, "normalizeLiteLlmCatalog", { enumerable: true, get: function () { return pricingCatalog_1.normalizeLiteLlmCatalog; } });
|
|
@@ -169,8 +169,10 @@ Object.defineProperty(exports, "discoverWorktreeSiblings", { enumerable: true, g
|
|
|
169
169
|
Object.defineProperty(exports, "resolveWorktreeMainRepo", { enumerable: true, get: function () { return sessionPathResolver_2.resolveWorktreeMainRepo; } });
|
|
170
170
|
// Bounded JSONL tail reader
|
|
171
171
|
var jsonlTail_1 = require("./watchers/jsonlTail");
|
|
172
|
+
Object.defineProperty(exports, "captureJsonlCheckpoint", { enumerable: true, get: function () { return jsonlTail_1.captureJsonlCheckpoint; } });
|
|
172
173
|
Object.defineProperty(exports, "createJsonlTail", { enumerable: true, get: function () { return jsonlTail_1.createJsonlTail; } });
|
|
173
174
|
Object.defineProperty(exports, "DEFAULT_JSONL_TAIL_MAX_LINE_BYTES", { enumerable: true, get: function () { return jsonlTail_1.DEFAULT_JSONL_TAIL_MAX_LINE_BYTES; } });
|
|
174
175
|
Object.defineProperty(exports, "DEFAULT_JSONL_TAIL_READ_BYTES", { enumerable: true, get: function () { return jsonlTail_1.DEFAULT_JSONL_TAIL_READ_BYTES; } });
|
|
175
176
|
Object.defineProperty(exports, "JSONL_TAIL_CHECKPOINT_VERSION", { enumerable: true, get: function () { return jsonlTail_1.JSONL_TAIL_CHECKPOINT_VERSION; } });
|
|
176
177
|
Object.defineProperty(exports, "JsonlTailSymlinkError", { enumerable: true, get: function () { return jsonlTail_1.JsonlTailSymlinkError; } });
|
|
178
|
+
Object.defineProperty(exports, "verifyJsonlCheckpoint", { enumerable: true, get: function () { return jsonlTail_1.verifyJsonlCheckpoint; } });
|
|
@@ -72,6 +72,7 @@ exports.recordObservedContextWindow = recordObservedContextWindow;
|
|
|
72
72
|
const node_fs_1 = require("node:fs");
|
|
73
73
|
const path = __importStar(require("node:path"));
|
|
74
74
|
const modelContext_1 = require("./modelContext");
|
|
75
|
+
const ownKey_1 = require("./ownKey");
|
|
75
76
|
const paths_1 = require("./paths");
|
|
76
77
|
const atomic_1 = require("./writers/atomic");
|
|
77
78
|
// ── Constants ──
|
|
@@ -120,7 +121,7 @@ function toOverrideMap(store, now = Date.now()) {
|
|
|
120
121
|
const observedAt = typeof entry.observedAt === 'string' ? Date.parse(entry.observedAt) : NaN;
|
|
121
122
|
if (Number.isFinite(observedAt) && now - observedAt > exports.OBSERVED_CONTEXT_WINDOW_TTL_MS)
|
|
122
123
|
continue;
|
|
123
|
-
out
|
|
124
|
+
(0, ownKey_1.setOwnValue)(out, modelId, window);
|
|
124
125
|
}
|
|
125
126
|
return out;
|
|
126
127
|
}
|