@gkorepanov/ccodex 0.4.11 → 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 +18 -26
- 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/handoff/service.js +2 -16
- 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/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":"AAAA,OAAO,EAAE,KAAK,EAAmD,MAAM,gCAAgC,CAAC;AAIxG,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,8BAA8B,EAAE,MAAM,qBAAqB,CAAC;AACxF,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,MAAM,kBAAkB,GAA2B;IACjD,GAAG,EAAE,uCAAuC;IAC5C,MAAM,EAAE,4BAA4B;IACpC,IAAI,EAAE,kCAAkC;IACxC,KAAK,EAAE,8BAA8B;IACrC,GAAG,EAAE,qCAAqC;CAC3C,CAAC;AAEF,MAAM,gBAAgB,GAAG,CAAC,sBAAsB,EAAE,iBAAiB,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,CAAU,CAAC;AAEhI,MAAM,UAAU,0BAA0B,CAAC,KAAc;IACvD,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IAC9G,MAAM,OAAO,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,OAAQ,KAAiC,CAAC,MAAM,CAAC,KAAK,UAAU,CAAC,CAAC;IACtH,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,kDAAkD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACnH,CAAC;AAED,SAAS,aAAa,CAAC,MAAyB;IAC9C,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAC;IAC3C,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC/C,OAAO,MAAM,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,KAAgB;IACrD,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,yBAAyB,EAAE,EAAE,CAAC,CAAC;IAC7E,MAAM,QAAQ,GAAG,KAAK,CAAC,aAAa,IAAI,8BAA8B,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAC5F,MAAM,OAAO,GAAG,QAAQ,IAAI,wDAAwD,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACpG,IAAI,CAAC,OAAO;QAAE,OAAO,WAAW,CAAC;IACjC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,OAAO,CAAC;IACzC,MAAM,KAAK,GAAG,GAAG,MAAO,CAAC,CAAC,CAAE,CAAC,WAAW,EAAE,GAAG,MAAO,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACpG,IAAI,WAAW,CAAC,iBAAiB,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAAE,OAAO,WAAW,CAAC;IAC5F,IAAI,WAAW,CAAC,iBAAiB,EAAE,CAAC,UAAU,CAAC,MAAO,CAAC,EAAE,CAAC;QACxD,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,MAAO,CAAC,MAAM,CAAC,IAAI,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,WAAW,CAAC,KAAK,CAAC,MAAO,CAAC,MAAM,CAAC,EAAE,CAAC;IAC3H,CAAC;IACD,OAAO,GAAG,WAAW,MAAM,KAAK,EAAE,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAgB,EAAE,MAAc;IAC7D,MAAM,OAAO,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,qBAAqB,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAChF,MAAM,YAAY,GAAG,KAAK,CAAC,gBAAgB;QACzC,CAAC,CAAC;YACE,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,4BAA4B,EAAE;YAC7E,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,mBAAmB,EAAE;SAC/D;QACH,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,EAAE,GAAG,GAAG,MAAM,GAAG,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC;IAClD,OAAO;QACL,EAAE;QACF,KAAK,EAAE,EAAE;QACT,OAAO,EAAE,IAAI;QACb,WAAW,EAAE,IAAI;QACjB,eAAe,EAAE,IAAI;QACrB,WAAW,EAAE,sBAAsB,CAAC,KAAK,CAAC;QAC1C,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,MAAM,EAAE,KAAK;QACb,yBAAyB,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;YAC3D,eAAe;YACf,WAAW,EAAE,kBAAkB,CAAC,eAAe,CAAC,IAAI,GAAG,eAAe,oBAAoB;SAC3F,CAAC,CAAC;QACH,sBAAsB,EAAE,aAAa,CAAC,OAAO,CAAC;QAC9C,eAAe,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;QAClC,mBAAmB,EAAE,IAAI;QACzB,oBAAoB,EAAE,EAAE;QACxB,YAAY;QACZ,kBAAkB,EAAE,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI;QAC9D,SAAS,EAAE,KAAK;KACjB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAA4B,EAAE,MAAc;IAC1E,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC;SACvD,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAA4B,EAAE,MAAc;IAC/E,MAAM,GAAG,GAAG,IAAI,GAAG,EAAkB,CAAC;IACtC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;YAAE,SAAS;QACxC,MAAM,EAAE,GAAG,GAAG,MAAM,GAAG,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC;QAClD,GAAG,CAAC,GAAG,CAAC,8BAA8B,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;QACzD,IAAI,KAAK,CAAC,aAAa;YAAE,GAAG,CAAC,GAAG,CAAC,8BAA8B,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,EAAE,CAAC,CAAC;IAC5F,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,KAAK,SAAS,CAAC,CAAC,UAAU,CAAC,MAAmB;IAC5C,IAAI,MAAM,CAAC,OAAO;QAAE,OAAO;IAC3B,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAC1G,CAAC;AAED,MAAM,OAAO,kBAAkB;IAUV;IACA;IACA;IAXX,KAAK,CAIC;IACN,OAAO,CAA+B;IACtC,SAAS,GAAgC,IAAI,GAAG,EAAE,CAAC;IAE3D,YACmB,MAAoB,EACpB,MAAc,EACd,UAA2B,IAAI,eAAe,EAAE;QAFhD,WAAM,GAAN,MAAM,CAAc;QACpB,WAAM,GAAN,MAAM,CAAQ;QACd,YAAO,GAAP,OAAO,CAAyC;IAChE,CAAC;IAEG,KAAK,CAAC,IAAI;QACf,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC5B,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE;YAAE,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;QACxG,IAAI,IAAI,CAAC,KAAK,EAAE,GAAG,KAAK,GAAG;YAAE,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;QACpD,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;YACxC,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;QAC3B,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAEM,UAAU;QACf,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;IACzB,CAAC;IAEM,cAAc,CAAC,KAAa;QACjC,MAAM,UAAU,GAAG,8BAA8B,CAAC,KAAK,CAAC,CAAC;QACzD,MAAM,KAAK,GAAG,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;YAC1D,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;QAClE,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IAEO,KAAK,CAAC,IAAI;QAChB,MAAM,KAAK,GAAG,IAAI,eAAe,EAAE,CAAC;QACpC,MAAM,QAAQ,GAAG,KAAK,CAAC;YACrB,MAAM,EAAE,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC;YAChC,OAAO,EAAE;gBACP,0BAA0B,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY;gBACpD,cAAc,EAAE,KAAK;gBACrB,eAAe,EAAE,KAAK;gBACtB,YAAY,EAAE,EAAE;gBAChB,cAAc,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC;gBAC5C,GAAG,EAAE,iBAAiB,EAAE;gBACxB,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,2BAA2B,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;aACnF;SACF,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,0BAA0B,CAAC,QAAQ,CAAC,CAAC;YACrC,MAAM,CAAC,EAAE,MAAM,CAAC,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;gBACpC,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,oBAAoB,EAAE,EAAE,QAAQ,CAAC,eAAe,EAAE,CAAC,CAAC;gBAC1E,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAC/B,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC,EAAE,MAAM,CAAC,CAC7E;aACF,CAAC,CAAC;YACH,MAAM,QAAQ,CAAC,YAAY,EAAE,CAAC;YAC9B,MAAM,QAAQ,CAAC,SAAS,EAAE,CAAC;YAC3B,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YAChE,IAAI,CAAC,SAAS,GAAG,oBAAoB,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YACvE,IAAI,CAAC,KAAK,GAAG;gBACX,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE;gBACpB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAiB,GAAG,KAAK;gBAC7D,MAAM,EAAE,MAAM;aACf,CAAC;YACF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,sBAAsB,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,gBAAgB,EAAE,CAAC,CAAC;YAC/F,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC;YAChC,MAAM,KAAK,CAAC;QACd,CAAC;gBAAS,CAAC;YACT,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,CAAC;IACH,CAAC;IAEO,QAAQ;QACd,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;QACxH,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACnE,MAAM,WAAW,GAAG;YAClB,MAAM,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,yBAAyB;YAC5E,wBAAwB,EAAE,yBAAyB;SACpD,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;QACnD,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;YAChD,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,IAAI,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,IAAI,IAAI,EAAE,WAAW;SACtF,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;CACF;AACD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC"}
|
|
@@ -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);
|
|
@@ -420,9 +428,10 @@ export class ClaudeService {
|
|
|
420
428
|
if (!record)
|
|
421
429
|
throw invalidParams(`Unknown Claude thread '${threadId}'.`);
|
|
422
430
|
if (record.thread.parentThreadId) {
|
|
431
|
+
record = this.withCatalogModel(record);
|
|
423
432
|
return {
|
|
424
433
|
...threadResponse(record, !resume.excludeTurns),
|
|
425
|
-
turnsBackwardsCursor: record.thread.turns.length ?
|
|
434
|
+
turnsBackwardsCursor: record.thread.turns.length ? turnCursor(record.thread.turns.at(-1).id, true) : null,
|
|
426
435
|
itemsBackwardsCursor: record.thread.turns.some((turn) => turn.items.length) ? "hyb-item:0" : null,
|
|
427
436
|
initialTurnsPage: resume.initialTurnsPage
|
|
428
437
|
? this.turnsPage({
|
|
@@ -436,9 +445,10 @@ export class ClaudeService {
|
|
|
436
445
|
}
|
|
437
446
|
await (await this.sessions.getOrCreate(threadId)).materializeRuntime();
|
|
438
447
|
record = await this.sessions.submit(threadId, { type: "readThread", includeTurns: true });
|
|
448
|
+
record = this.withCatalogModel(record);
|
|
439
449
|
return {
|
|
440
450
|
...threadResponse(record, !resume.excludeTurns),
|
|
441
|
-
turnsBackwardsCursor: record.thread.turns.length ?
|
|
451
|
+
turnsBackwardsCursor: record.thread.turns.length ? turnCursor(record.thread.turns.at(-1).id, true) : null,
|
|
442
452
|
itemsBackwardsCursor: record.thread.turns.some((turn) => turn.items.length) ? "hyb-item:0" : null,
|
|
443
453
|
initialTurnsPage: resume.initialTurnsPage
|
|
444
454
|
? this.turnsPage({
|
|
@@ -781,25 +791,7 @@ export class ClaudeService {
|
|
|
781
791
|
}
|
|
782
792
|
turnsPage(params) {
|
|
783
793
|
this.assertThreadAvailable(params.threadId);
|
|
784
|
-
|
|
785
|
-
const ordered = params.sortDirection === "asc" ? turns : [...turns].reverse();
|
|
786
|
-
if (params.cursor && !params.cursor.startsWith("hyb-turn:"))
|
|
787
|
-
throw invalidParams("Invalid Claude turn cursor.");
|
|
788
|
-
const offset = params.cursor?.startsWith("hyb-turn:") ? Number(params.cursor.slice("hyb-turn:".length)) : 0;
|
|
789
|
-
if (!Number.isInteger(offset) || offset < 0)
|
|
790
|
-
throw invalidParams("Invalid Claude turn cursor.");
|
|
791
|
-
const limit = Math.max(1, Math.min(params.limit ?? 50, 100));
|
|
792
|
-
const itemsView = params.itemsView ?? "summary";
|
|
793
|
-
const data = ordered.slice(offset, offset + limit).map((turn) => ({
|
|
794
|
-
...turn,
|
|
795
|
-
itemsView,
|
|
796
|
-
...(itemsView === "notLoaded" ? { items: [] } : {}),
|
|
797
|
-
}));
|
|
798
|
-
return {
|
|
799
|
-
data,
|
|
800
|
-
nextCursor: offset + data.length < ordered.length ? `hyb-turn:${offset + data.length}` : null,
|
|
801
|
-
backwardsCursor: data.length > 0 ? `hyb-turn:${Math.max(0, offset - limit)}` : null,
|
|
802
|
-
};
|
|
794
|
+
return paginateTurns(this.listTurns(params.threadId), params, ["hyb-turn:"]);
|
|
803
795
|
}
|
|
804
796
|
listThreads(params) {
|
|
805
797
|
return this.store.listThreads(params)
|
|
@@ -990,7 +982,7 @@ export class ClaudeService {
|
|
|
990
982
|
throw invalidParams("Invalid Claude search cursor.");
|
|
991
983
|
const turns = this.store.listTurns(params.threadId);
|
|
992
984
|
const needle = searchTerm.toLocaleLowerCase();
|
|
993
|
-
const occurrences = turns.flatMap((turn
|
|
985
|
+
const occurrences = turns.flatMap((turn) => turn.items.flatMap((item) => {
|
|
994
986
|
const text = item.type === "userMessage"
|
|
995
987
|
? item.content.flatMap((part) => part.type === "text" ? [part.text] : []).join("\n")
|
|
996
988
|
: item.type === "agentMessage" && item.phase !== "commentary" ? item.text : undefined;
|
|
@@ -1004,7 +996,7 @@ export class ClaudeService {
|
|
|
1004
996
|
itemId: item.id,
|
|
1005
997
|
snippet: text,
|
|
1006
998
|
snippetMatchRange: { start, end: start + needle.length },
|
|
1007
|
-
turnCursor:
|
|
999
|
+
turnCursor: turnCursor(turn.id, true),
|
|
1008
1000
|
});
|
|
1009
1001
|
}
|
|
1010
1002
|
return matches;
|