@gkorepanov/ccodex 0.4.10 → 0.4.12
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/config/compatibility.json +1 -1
- package/dist/claude/modelCatalog.d.ts +3 -0
- package/dist/claude/modelCatalog.js +20 -0
- package/dist/claude/modelCatalog.js.map +1 -1
- package/dist/claude/modelSelection.d.ts +1 -0
- package/dist/claude/modelSelection.js +7 -0
- package/dist/claude/modelSelection.js.map +1 -1
- package/dist/claude/service.d.ts +2 -0
- package/dist/claude/service.js +22 -28
- package/dist/claude/service.js.map +1 -1
- package/dist/claude/session/scopeState.d.ts +4 -0
- package/dist/claude/session/scopeState.js +28 -3
- package/dist/claude/session/scopeState.js.map +1 -1
- package/dist/claude/session/session.js +12 -6
- package/dist/claude/session/session.js.map +1 -1
- package/dist/gateway/clientConnection.js +6 -6
- package/dist/gateway/clientConnection.js.map +1 -1
- package/dist/gateway/sideFork.d.ts +3 -0
- package/dist/gateway/sideFork.js +11 -0
- package/dist/gateway/sideFork.js.map +1 -0
- package/dist/gateway/stockSideThreads.js +2 -4
- package/dist/gateway/stockSideThreads.js.map +1 -1
- package/dist/handoff/lineageStore.d.ts +1 -0
- package/dist/handoff/lineageStore.js +18 -5
- package/dist/handoff/lineageStore.js.map +1 -1
- package/dist/handoff/service.js +4 -17
- package/dist/handoff/service.js.map +1 -1
- package/dist/protocol/turnPagination.d.ts +5 -0
- package/dist/protocol/turnPagination.js +63 -0
- package/dist/protocol/turnPagination.js.map +1 -0
- package/dist/state/stockStateTracker.js +1 -0
- package/dist/state/stockStateTracker.js.map +1 -1
- package/dist/store/sqliteStore.d.ts +1 -0
- package/dist/store/sqliteStore.js +27 -0
- package/dist/store/sqliteStore.js.map +1 -1
- package/dist/store/threadFilter.js +2 -0
- package/dist/store/threadFilter.js.map +1 -1
- package/package.json +4 -4
|
@@ -7,15 +7,18 @@ export declare function assertClaudeControlSurface(value: unknown): asserts valu
|
|
|
7
7
|
export declare function claudeModelDisplayName(model: ModelInfo): string;
|
|
8
8
|
export declare function mapClaudeModel(model: ModelInfo, prefix: string): Model;
|
|
9
9
|
export declare function mapClaudeModels(models: readonly ModelInfo[], prefix: string): Model[];
|
|
10
|
+
export declare function claudeModelPickerIds(models: readonly ModelInfo[], prefix: string): ReadonlyMap<string, string>;
|
|
10
11
|
export declare class ClaudeModelCatalog {
|
|
11
12
|
private readonly config;
|
|
12
13
|
private readonly logger;
|
|
13
14
|
private readonly metrics;
|
|
14
15
|
private cache;
|
|
15
16
|
private loading;
|
|
17
|
+
private pickerIds;
|
|
16
18
|
constructor(config: HybridConfig, logger: Logger, metrics?: MetricsRegistry);
|
|
17
19
|
list(): Promise<Model[]>;
|
|
18
20
|
invalidate(): void;
|
|
21
|
+
cachedPickerId(model: string): string | undefined;
|
|
19
22
|
private load;
|
|
20
23
|
private cacheKey;
|
|
21
24
|
}
|
|
@@ -74,6 +74,18 @@ export function mapClaudeModels(models, prefix) {
|
|
|
74
74
|
return models.filter((model) => model.value !== "default")
|
|
75
75
|
.map((model) => mapClaudeModel(model, prefix));
|
|
76
76
|
}
|
|
77
|
+
export function claudeModelPickerIds(models, prefix) {
|
|
78
|
+
const ids = new Map();
|
|
79
|
+
for (const model of models) {
|
|
80
|
+
if (model.value === "default")
|
|
81
|
+
continue;
|
|
82
|
+
const id = `${prefix}${modelCatalogValue(model)}`;
|
|
83
|
+
ids.set(normalizeClaudeModelIdentifier(model.value), id);
|
|
84
|
+
if (model.resolvedModel)
|
|
85
|
+
ids.set(normalizeClaudeModelIdentifier(model.resolvedModel), id);
|
|
86
|
+
}
|
|
87
|
+
return ids;
|
|
88
|
+
}
|
|
77
89
|
async function* idlePrompt(signal) {
|
|
78
90
|
if (signal.aborted)
|
|
79
91
|
return;
|
|
@@ -85,6 +97,7 @@ export class ClaudeModelCatalog {
|
|
|
85
97
|
metrics;
|
|
86
98
|
cache;
|
|
87
99
|
loading;
|
|
100
|
+
pickerIds = new Map();
|
|
88
101
|
constructor(config, logger, metrics = new MetricsRegistry()) {
|
|
89
102
|
this.config = config;
|
|
90
103
|
this.logger = logger;
|
|
@@ -104,6 +117,12 @@ export class ClaudeModelCatalog {
|
|
|
104
117
|
invalidate() {
|
|
105
118
|
this.cache = undefined;
|
|
106
119
|
}
|
|
120
|
+
cachedPickerId(model) {
|
|
121
|
+
const normalized = normalizeClaudeModelIdentifier(model);
|
|
122
|
+
const value = normalized.startsWith(this.config.modelPrefix)
|
|
123
|
+
? normalized.slice(this.config.modelPrefix.length) : normalized;
|
|
124
|
+
return this.pickerIds.get(value);
|
|
125
|
+
}
|
|
107
126
|
async load() {
|
|
108
127
|
const abort = new AbortController();
|
|
109
128
|
const sdkQuery = query({
|
|
@@ -127,6 +146,7 @@ export class ClaudeModelCatalog {
|
|
|
127
146
|
await sdkQuery.reinitialize();
|
|
128
147
|
await sdkQuery.interrupt();
|
|
129
148
|
const mapped = mapClaudeModels(models, this.config.modelPrefix);
|
|
149
|
+
this.pickerIds = claudeModelPickerIds(models, this.config.modelPrefix);
|
|
130
150
|
this.cache = {
|
|
131
151
|
key: this.cacheKey(),
|
|
132
152
|
expiresAt: Date.now() + this.config.modelCacheSeconds * 1_000,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modelCatalog.js","sourceRoot":"","sources":["../../src/claude/modelCatalog.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"modelCatalog.js","sourceRoot":"","sources":["../../src/claude/modelCatalog.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@ import type { ModelInfo } from "@anthropic-ai/claude-agent-sdk";
|
|
|
2
2
|
import type { HybridConfig } from "../config/config.js";
|
|
3
3
|
export declare const DEFAULT_CLAUDE_MODEL_ALIASES: Readonly<Record<string, string>>;
|
|
4
4
|
export declare function normalizeClaudeModelIdentifier(value: string): string;
|
|
5
|
+
export declare function claudeModelLabel(value: string): string;
|
|
5
6
|
export declare function modelCatalogValue(model: ModelInfo): string;
|
|
6
7
|
export declare function isClaudeModelAlias(config: HybridConfig, pickerId: string): boolean;
|
|
7
8
|
export declare function resolveClaudeModel(config: HybridConfig, pickerId: string): string | undefined;
|
|
@@ -4,6 +4,13 @@ const LITERAL_STYLE_SUFFIX = /(?:\[(?:\d{1,3};)*\d{1,3}m\])+$/u;
|
|
|
4
4
|
export function normalizeClaudeModelIdentifier(value) {
|
|
5
5
|
return value.replace(ANSI_SEQUENCE, "").replace(LITERAL_STYLE_SUFFIX, "");
|
|
6
6
|
}
|
|
7
|
+
export function claudeModelLabel(value) {
|
|
8
|
+
const normalized = normalizeClaudeModelIdentifier(value);
|
|
9
|
+
const version = /^claude-([a-z][a-z0-9]*?)-(\d+)(?:-(\d{1,2})(?=-|$))?/u.exec(normalized);
|
|
10
|
+
const family = version?.[1] ?? /^(?:claude-)?([a-z][a-z0-9]*)/u.exec(normalized)?.[1] ?? normalized;
|
|
11
|
+
const label = `${family[0]?.toUpperCase() ?? ""}${family.slice(1)}`;
|
|
12
|
+
return version ? `${label} ${version[2]}${version[3] ? `.${version[3]}` : ""}` : label;
|
|
13
|
+
}
|
|
7
14
|
export function modelCatalogValue(model) {
|
|
8
15
|
const value = normalizeClaudeModelIdentifier(model.value);
|
|
9
16
|
const resolved = model.resolvedModel && normalizeClaudeModelIdentifier(model.resolvedModel);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modelSelection.js","sourceRoot":"","sources":["../../src/claude/modelSelection.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,4BAA4B,GAAqC,EAAE,CAAC;AAEjF,MAAM,aAAa,GAAG,6BAA6B,CAAC;AACpD,MAAM,oBAAoB,GAAG,kCAAkC,CAAC;AAEhE,MAAM,UAAU,8BAA8B,CAAC,KAAa;IAC1D,OAAO,KAAK,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;AAC5E,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAgB;IAChD,MAAM,KAAK,GAAG,8BAA8B,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC1D,MAAM,QAAQ,GAAG,KAAK,CAAC,aAAa,IAAI,8BAA8B,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAC5F,OAAO,KAAK,KAAK,KAAK,CAAC,KAAK,IAAI,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC;AAC9D,CAAC;AAED,SAAS,OAAO,CAAC,MAAoB;IACnC,OAAO,MAAM,CAAC,YAAY,IAAI,4BAA4B,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAAoB,EAAE,QAAgB;IACvE,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAAoB,EAAE,QAAgB;IACvE,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC;QACxD,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC;QAC3C,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC;IAC9B,IAAI,CAAC,UAAU;QAAE,OAAO,SAAS,CAAC;IAClC,MAAM,KAAK,GAAG,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC;QACrD,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC;QAC7C,CAAC,CAAC,UAAU,CAAC;IACf,OAAO,8BAA8B,CAAC,KAAK,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAoB,EAAE,QAAgB;IACpE,MAAM,KAAK,GAAG,kBAAkB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACnD,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,WAAW,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,MAAoB,EACpB,QAAgB,EAChB,WAAsC;IAEtC,IAAI,WAAW,KAAK,UAAU,IAAI,kBAAkB,CAAC,MAAM,EAAE,QAAQ,CAAC;QAAE,OAAO,MAAM,CAAC;IACtF,OAAO,WAAW,IAAI,IAAI,CAAC;AAC7B,CAAC"}
|
|
1
|
+
{"version":3,"file":"modelSelection.js","sourceRoot":"","sources":["../../src/claude/modelSelection.ts"],"names":[],"mappings":"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"}
|
package/dist/claude/service.d.ts
CHANGED
|
@@ -52,6 +52,7 @@ import { type ThreadStateSnapshot } from "../state/stateCommand.js";
|
|
|
52
52
|
interface ModelCatalog {
|
|
53
53
|
list(): Promise<Model[]>;
|
|
54
54
|
invalidate?(): void;
|
|
55
|
+
cachedPickerId?(model: string): string | undefined;
|
|
55
56
|
}
|
|
56
57
|
type PreparedGoalHandle<T> = {
|
|
57
58
|
readonly response: T;
|
|
@@ -112,6 +113,7 @@ export declare class ClaudeService {
|
|
|
112
113
|
unsubscribeRateLimits(connectionId: string): void;
|
|
113
114
|
handoffSource(threadId: string, lastTurnId?: string | null): Promise<ClaudeHandoffSource>;
|
|
114
115
|
currentThreadSettings(threadId: string): ThreadSettings;
|
|
116
|
+
private withCatalogModel;
|
|
115
117
|
sideSnapshot(sourceThreadId: string, targetThreadId: string, visibleForkedFromId: string): ThreadForkResponse;
|
|
116
118
|
loadedThreadIds(): string[];
|
|
117
119
|
reportError(threadId: string, requestedTurnId: string | undefined, message: string, codexErrorInfo: CodexErrorInfo): Promise<boolean>;
|
package/dist/claude/service.js
CHANGED
|
@@ -8,6 +8,7 @@ import { LayeredHybridStore } from "../store/memoryStore.js";
|
|
|
8
8
|
import { createClaudeQuery } from "./queryFactory.js";
|
|
9
9
|
import { claudeEnvironment } from "./environment.js";
|
|
10
10
|
import { invalidParams } from "../protocol/errors.js";
|
|
11
|
+
import { paginateTurns, turnCursor } from "../protocol/turnPagination.js";
|
|
11
12
|
import { MetricsRegistry } from "../observability/metrics.js";
|
|
12
13
|
import { SdkTranscriptBrancher } from "./transcriptBrancher.js";
|
|
13
14
|
import { ClaudeRateLimitCoordinator, } from "./rateLimits.js";
|
|
@@ -224,8 +225,8 @@ export class ClaudeService {
|
|
|
224
225
|
interactiveQuestions: this.config.features?.interactiveQuestions ?? true,
|
|
225
226
|
resolveChildModel: (model) => {
|
|
226
227
|
const value = normalizeClaudeModelIdentifier(model);
|
|
227
|
-
const modelPickerId =
|
|
228
|
-
? value : `${this.config.modelPrefix}${value}
|
|
228
|
+
const modelPickerId = this.modelCatalog?.cachedPickerId?.(value)
|
|
229
|
+
?? (value.startsWith(this.config.modelPrefix) ? value : `${this.config.modelPrefix}${value}`);
|
|
229
230
|
const claudeModelValue = resolveClaudeModel(this.config, modelPickerId);
|
|
230
231
|
return claudeModelValue ? { modelPickerId, claudeModelValue } : undefined;
|
|
231
232
|
},
|
|
@@ -335,7 +336,14 @@ export class ClaudeService {
|
|
|
335
336
|
};
|
|
336
337
|
}
|
|
337
338
|
currentThreadSettings(threadId) {
|
|
338
|
-
return threadSettings(this.requireRecord(threadId, false));
|
|
339
|
+
return threadSettings(this.withCatalogModel(this.requireRecord(threadId, false)));
|
|
340
|
+
}
|
|
341
|
+
withCatalogModel(record) {
|
|
342
|
+
const modelPickerId = this.modelCatalog?.cachedPickerId?.(record.resolvedModel ?? record.claudeModelValue);
|
|
343
|
+
if (!modelPickerId || modelPickerId === record.modelPickerId)
|
|
344
|
+
return record;
|
|
345
|
+
const claudeModelValue = resolveClaudeModel(this.config, modelPickerId);
|
|
346
|
+
return claudeModelValue ? { ...record, modelPickerId, claudeModelValue } : record;
|
|
339
347
|
}
|
|
340
348
|
sideSnapshot(sourceThreadId, targetThreadId, visibleForkedFromId) {
|
|
341
349
|
const record = this.requireRecord(sourceThreadId, false);
|
|
@@ -346,6 +354,7 @@ export class ClaudeService {
|
|
|
346
354
|
thread: {
|
|
347
355
|
...source,
|
|
348
356
|
id: targetThreadId,
|
|
357
|
+
sessionId: targetThreadId,
|
|
349
358
|
forkedFromId: visibleForkedFromId,
|
|
350
359
|
ephemeral: true,
|
|
351
360
|
path: null,
|
|
@@ -419,9 +428,10 @@ export class ClaudeService {
|
|
|
419
428
|
if (!record)
|
|
420
429
|
throw invalidParams(`Unknown Claude thread '${threadId}'.`);
|
|
421
430
|
if (record.thread.parentThreadId) {
|
|
431
|
+
record = this.withCatalogModel(record);
|
|
422
432
|
return {
|
|
423
433
|
...threadResponse(record, !resume.excludeTurns),
|
|
424
|
-
turnsBackwardsCursor: record.thread.turns.length ?
|
|
434
|
+
turnsBackwardsCursor: record.thread.turns.length ? turnCursor(record.thread.turns.at(-1).id, true) : null,
|
|
425
435
|
itemsBackwardsCursor: record.thread.turns.some((turn) => turn.items.length) ? "hyb-item:0" : null,
|
|
426
436
|
initialTurnsPage: resume.initialTurnsPage
|
|
427
437
|
? this.turnsPage({
|
|
@@ -435,9 +445,10 @@ export class ClaudeService {
|
|
|
435
445
|
}
|
|
436
446
|
await (await this.sessions.getOrCreate(threadId)).materializeRuntime();
|
|
437
447
|
record = await this.sessions.submit(threadId, { type: "readThread", includeTurns: true });
|
|
448
|
+
record = this.withCatalogModel(record);
|
|
438
449
|
return {
|
|
439
450
|
...threadResponse(record, !resume.excludeTurns),
|
|
440
|
-
turnsBackwardsCursor: record.thread.turns.length ?
|
|
451
|
+
turnsBackwardsCursor: record.thread.turns.length ? turnCursor(record.thread.turns.at(-1).id, true) : null,
|
|
441
452
|
itemsBackwardsCursor: record.thread.turns.some((turn) => turn.items.length) ? "hyb-item:0" : null,
|
|
442
453
|
initialTurnsPage: resume.initialTurnsPage
|
|
443
454
|
? this.turnsPage({
|
|
@@ -780,25 +791,7 @@ export class ClaudeService {
|
|
|
780
791
|
}
|
|
781
792
|
turnsPage(params) {
|
|
782
793
|
this.assertThreadAvailable(params.threadId);
|
|
783
|
-
|
|
784
|
-
const ordered = params.sortDirection === "asc" ? turns : [...turns].reverse();
|
|
785
|
-
if (params.cursor && !params.cursor.startsWith("hyb-turn:"))
|
|
786
|
-
throw invalidParams("Invalid Claude turn cursor.");
|
|
787
|
-
const offset = params.cursor?.startsWith("hyb-turn:") ? Number(params.cursor.slice("hyb-turn:".length)) : 0;
|
|
788
|
-
if (!Number.isInteger(offset) || offset < 0)
|
|
789
|
-
throw invalidParams("Invalid Claude turn cursor.");
|
|
790
|
-
const limit = Math.max(1, Math.min(params.limit ?? 50, 100));
|
|
791
|
-
const itemsView = params.itemsView ?? "summary";
|
|
792
|
-
const data = ordered.slice(offset, offset + limit).map((turn) => ({
|
|
793
|
-
...turn,
|
|
794
|
-
itemsView,
|
|
795
|
-
...(itemsView === "notLoaded" ? { items: [] } : {}),
|
|
796
|
-
}));
|
|
797
|
-
return {
|
|
798
|
-
data,
|
|
799
|
-
nextCursor: offset + data.length < ordered.length ? `hyb-turn:${offset + data.length}` : null,
|
|
800
|
-
backwardsCursor: data.length > 0 ? `hyb-turn:${Math.max(0, offset - limit)}` : null,
|
|
801
|
-
};
|
|
794
|
+
return paginateTurns(this.listTurns(params.threadId), params, ["hyb-turn:"]);
|
|
802
795
|
}
|
|
803
796
|
listThreads(params) {
|
|
804
797
|
return this.store.listThreads(params)
|
|
@@ -989,7 +982,7 @@ export class ClaudeService {
|
|
|
989
982
|
throw invalidParams("Invalid Claude search cursor.");
|
|
990
983
|
const turns = this.store.listTurns(params.threadId);
|
|
991
984
|
const needle = searchTerm.toLocaleLowerCase();
|
|
992
|
-
const occurrences = turns.flatMap((turn
|
|
985
|
+
const occurrences = turns.flatMap((turn) => turn.items.flatMap((item) => {
|
|
993
986
|
const text = item.type === "userMessage"
|
|
994
987
|
? item.content.flatMap((part) => part.type === "text" ? [part.text] : []).join("\n")
|
|
995
988
|
: item.type === "agentMessage" && item.phase !== "commentary" ? item.text : undefined;
|
|
@@ -1003,7 +996,7 @@ export class ClaudeService {
|
|
|
1003
996
|
itemId: item.id,
|
|
1004
997
|
snippet: text,
|
|
1005
998
|
snippetMatchRange: { start, end: start + needle.length },
|
|
1006
|
-
turnCursor:
|
|
999
|
+
turnCursor: turnCursor(turn.id, true),
|
|
1007
1000
|
});
|
|
1008
1001
|
}
|
|
1009
1002
|
return matches;
|
|
@@ -1101,9 +1094,10 @@ export class ClaudeService {
|
|
|
1101
1094
|
}
|
|
1102
1095
|
const createdAt = nowSeconds();
|
|
1103
1096
|
const cwd = existingThreadCwd(params.cwd ?? sourceRecord.thread.cwd);
|
|
1097
|
+
const threadId = uuidv7();
|
|
1104
1098
|
const thread = {
|
|
1105
|
-
...sourceRecord.thread, id:
|
|
1106
|
-
sessionId:
|
|
1099
|
+
...sourceRecord.thread, id: threadId, ephemeral: params.ephemeral ?? false,
|
|
1100
|
+
sessionId: threadId, forkedFromId: visibleForkedFromId,
|
|
1107
1101
|
cwd, modelProvider: "claude", createdAt, updatedAt: createdAt, recencyAt: createdAt,
|
|
1108
1102
|
status: params.ephemeral ? { type: "idle" } : { type: "notLoaded" },
|
|
1109
1103
|
canAcceptDirectInput: true,
|