@pellux/goodvibes-sdk 0.18.37 → 0.18.40
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/dist/_internal/platform/control-plane/gateway.d.ts +9 -1
- package/dist/_internal/platform/control-plane/gateway.d.ts.map +1 -1
- package/dist/_internal/platform/control-plane/gateway.js +49 -12
- package/dist/_internal/platform/core/conversation.d.ts +9 -0
- package/dist/_internal/platform/core/conversation.d.ts.map +1 -1
- package/dist/_internal/platform/core/conversation.js +30 -0
- package/dist/_internal/platform/providers/registry.d.ts +3 -0
- package/dist/_internal/platform/providers/registry.d.ts.map +1 -1
- package/dist/_internal/platform/providers/registry.js +18 -1
- package/dist/_internal/platform/version.js +1 -1
- package/package.json +1 -1
|
@@ -42,10 +42,17 @@ export declare class ControlPlaneGateway {
|
|
|
42
42
|
private readonly liveClients;
|
|
43
43
|
private readonly websocketClients;
|
|
44
44
|
private readonly recentMessages;
|
|
45
|
-
private readonly
|
|
45
|
+
private readonly _recentEventsRing;
|
|
46
|
+
private _recentEventsHead;
|
|
47
|
+
private _recentEventsCount;
|
|
48
|
+
private readonly _recentEventsCapacity;
|
|
49
|
+
/** Back-compat accessor used by getSnapshot / listRecentEvents */
|
|
50
|
+
private get recentEvents();
|
|
46
51
|
private requestCount;
|
|
47
52
|
private errorCount;
|
|
48
53
|
private lastRequestAt;
|
|
54
|
+
private _syncScheduled;
|
|
55
|
+
private _lastEventAt;
|
|
49
56
|
constructor(config?: ControlPlaneGatewayConfig);
|
|
50
57
|
attachRuntime(config: {
|
|
51
58
|
readonly runtimeBus?: RuntimeEventBus | null;
|
|
@@ -88,6 +95,7 @@ export declare class ControlPlaneGateway {
|
|
|
88
95
|
private replayRecentTraffic;
|
|
89
96
|
createEventStream(request: Request, options?: ControlPlaneEventStreamOptions): Response;
|
|
90
97
|
renderWebUi(authTokenHint?: string): Response;
|
|
98
|
+
private _scheduleControlPlaneSync;
|
|
91
99
|
private rememberEvent;
|
|
92
100
|
}
|
|
93
101
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gateway.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/control-plane/gateway.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"gateway.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/control-plane/gateway.ts"],"names":[],"mappings":"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"}
|
|
@@ -51,11 +51,36 @@ export class ControlPlaneGateway {
|
|
|
51
51
|
liveClients = new Map();
|
|
52
52
|
websocketClients = new Map();
|
|
53
53
|
recentMessages = [];
|
|
54
|
-
|
|
54
|
+
// Circular ring buffer for O(1) insert instead of O(n) unshift.
|
|
55
|
+
_recentEventsRing;
|
|
56
|
+
_recentEventsHead = 0;
|
|
57
|
+
_recentEventsCount = 0;
|
|
58
|
+
_recentEventsCapacity = 500;
|
|
59
|
+
/** Back-compat accessor used by getSnapshot / listRecentEvents */
|
|
60
|
+
get recentEvents() {
|
|
61
|
+
const out = [];
|
|
62
|
+
const count = this._recentEventsCount;
|
|
63
|
+
const cap = this._recentEventsCapacity;
|
|
64
|
+
for (let i = 0; i < count; i++) {
|
|
65
|
+
const idx = (this._recentEventsHead - 1 - i + cap) % cap;
|
|
66
|
+
const entry = this._recentEventsRing[idx];
|
|
67
|
+
if (entry) {
|
|
68
|
+
out.push(entry);
|
|
69
|
+
}
|
|
70
|
+
else if (process.env.NODE_ENV !== 'production') {
|
|
71
|
+
// Dev-only: undefined slot despite valid count — ring buffer accounting bug.
|
|
72
|
+
console.error('[ControlPlaneGateway] recentEvents: undefined slot at ring index', idx, { head: this._recentEventsHead, count: this._recentEventsCount, i });
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return out;
|
|
76
|
+
}
|
|
55
77
|
requestCount = 0;
|
|
56
78
|
errorCount = 0;
|
|
57
79
|
lastRequestAt;
|
|
80
|
+
_syncScheduled = false;
|
|
81
|
+
_lastEventAt = 0;
|
|
58
82
|
constructor(config = {}) {
|
|
83
|
+
this._recentEventsRing = new Array(this._recentEventsCapacity);
|
|
59
84
|
this.runtimeBus = config.runtimeBus ?? null;
|
|
60
85
|
this.dispatch = config.runtimeStore ? createDomainDispatch(config.runtimeStore) : null;
|
|
61
86
|
this.serverConfig = {
|
|
@@ -101,7 +126,7 @@ export class ControlPlaneGateway {
|
|
|
101
126
|
clients: this.clients.size,
|
|
102
127
|
activeClients: active.length,
|
|
103
128
|
surfaceMessages: this.recentMessages.length,
|
|
104
|
-
recentEvents: this.
|
|
129
|
+
recentEvents: this._recentEventsCount,
|
|
105
130
|
requests: this.requestCount,
|
|
106
131
|
errors: this.errorCount,
|
|
107
132
|
},
|
|
@@ -560,6 +585,20 @@ export class ControlPlaneGateway {
|
|
|
560
585
|
renderWebUi(authTokenHint = '') {
|
|
561
586
|
return renderControlPlaneGatewayWebUi(authTokenHint);
|
|
562
587
|
}
|
|
588
|
+
_scheduleControlPlaneSync() {
|
|
589
|
+
if (this._syncScheduled || !this.dispatch)
|
|
590
|
+
return;
|
|
591
|
+
this._syncScheduled = true;
|
|
592
|
+
setImmediate(() => {
|
|
593
|
+
this._syncScheduled = false;
|
|
594
|
+
this.dispatch?.syncControlPlaneState({
|
|
595
|
+
requestCount: this.requestCount,
|
|
596
|
+
errorCount: this.errorCount,
|
|
597
|
+
lastRequestAt: this.lastRequestAt,
|
|
598
|
+
lastEventAt: this._lastEventAt,
|
|
599
|
+
}, 'control-plane.gateway.event');
|
|
600
|
+
});
|
|
601
|
+
}
|
|
563
602
|
rememberEvent(event, payload) {
|
|
564
603
|
const record = {
|
|
565
604
|
id: `cpe-${randomUUID().slice(0, 8)}`,
|
|
@@ -567,16 +606,14 @@ export class ControlPlaneGateway {
|
|
|
567
606
|
createdAt: Date.now(),
|
|
568
607
|
payload,
|
|
569
608
|
};
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
lastEventAt: record.createdAt,
|
|
579
|
-
}, 'control-plane.gateway.event');
|
|
609
|
+
// O(1) circular ring buffer write — no array shifting.
|
|
610
|
+
this._recentEventsRing[this._recentEventsHead] = record;
|
|
611
|
+
this._recentEventsHead = (this._recentEventsHead + 1) % this._recentEventsCapacity;
|
|
612
|
+
if (this._recentEventsCount < this._recentEventsCapacity)
|
|
613
|
+
this._recentEventsCount++;
|
|
614
|
+
this._lastEventAt = record.createdAt;
|
|
615
|
+
// Debounced: coalesce N events/frame into 1 store sync.
|
|
616
|
+
this._scheduleControlPlaneSync();
|
|
580
617
|
return record;
|
|
581
618
|
}
|
|
582
619
|
}
|
|
@@ -52,12 +52,21 @@ export declare class ConversationManager {
|
|
|
52
52
|
private currentBranch;
|
|
53
53
|
private streamingMessageIndex;
|
|
54
54
|
private undoStack;
|
|
55
|
+
private _messagesRevision;
|
|
56
|
+
private _cachedLLMMessages;
|
|
57
|
+
private _cachedLLMRevision;
|
|
55
58
|
constructor();
|
|
56
59
|
private findToolName;
|
|
57
60
|
setSessionMemoryStore(store: Pick<SessionMemoryStore, 'list'>): void;
|
|
58
61
|
getSessionMemoryStore(): Pick<SessionMemoryStore, 'list'> | null;
|
|
59
62
|
setSessionLineageTracker(tracker: Pick<SessionLineageTracker, 'addCompactionEntry'>): void;
|
|
60
63
|
getSessionLineageTracker(): Pick<SessionLineageTracker, 'addCompactionEntry'>;
|
|
64
|
+
/**
|
|
65
|
+
* Returns the conversation messages formatted for the LLM provider.
|
|
66
|
+
*
|
|
67
|
+
* @returns readonly reference — do not mutate; the array is shared across
|
|
68
|
+
* cache-hit callers until the next conversation mutation.
|
|
69
|
+
*/
|
|
61
70
|
getMessagesForLLM(): ProviderMessage[];
|
|
62
71
|
addUserMessage(content: string | ContentPart[]): void;
|
|
63
72
|
addAssistantMessage(content: string, opts?: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversation.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/core/conversation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAC9E,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,4CAA4C,CAAC;AACvF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oDAAoD,CAAC;AAC7F,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qDAAqD,CAAC;AAYjG,MAAM,MAAM,UAAU,GAAG;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,KAAK,gBAAgB,GAAG;IACtB,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,2BAA2B,GACnC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,GAAG,WAAW,EAAE,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,GACtE,gBAAgB,GAChB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzE,KAAK,OAAO,GAAG,2BAA2B,CAAC;AAC3C,MAAM,MAAM,uBAAuB,GAAG,QAAQ,GAAG,MAAM,CAAC;AAExD,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;IAC5C,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,YAAY,CAAqC;IACzD,OAAO,CAAC,kBAAkB,CAAiD;IAC3E,OAAO,CAAC,qBAAqB,CAE3B;IACF,OAAO,CAAC,QAAQ,CAAgC;IAChD,OAAO,CAAC,aAAa,CAAU;IAC/B,OAAO,CAAC,qBAAqB,CAAM;IACnC,OAAO,CAAC,SAAS,CAAmB;;
|
|
1
|
+
{"version":3,"file":"conversation.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/core/conversation.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,6 +14,9 @@ export class ConversationManager {
|
|
|
14
14
|
currentBranch = 'main';
|
|
15
15
|
streamingMessageIndex = -1;
|
|
16
16
|
undoStack = [];
|
|
17
|
+
_messagesRevision = 0;
|
|
18
|
+
_cachedLLMMessages = null;
|
|
19
|
+
_cachedLLMRevision = -1;
|
|
17
20
|
constructor() { }
|
|
18
21
|
findToolName(callId) {
|
|
19
22
|
for (let i = this.messages.length - 1; i >= 0; i--) {
|
|
@@ -38,7 +41,16 @@ export class ConversationManager {
|
|
|
38
41
|
getSessionLineageTracker() {
|
|
39
42
|
return this.sessionLineageTracker;
|
|
40
43
|
}
|
|
44
|
+
/**
|
|
45
|
+
* Returns the conversation messages formatted for the LLM provider.
|
|
46
|
+
*
|
|
47
|
+
* @returns readonly reference — do not mutate; the array is shared across
|
|
48
|
+
* cache-hit callers until the next conversation mutation.
|
|
49
|
+
*/
|
|
41
50
|
getMessagesForLLM() {
|
|
51
|
+
if (this._cachedLLMMessages !== null && this._cachedLLMRevision === this._messagesRevision) {
|
|
52
|
+
return this._cachedLLMMessages;
|
|
53
|
+
}
|
|
42
54
|
const result = [];
|
|
43
55
|
for (const message of this.messages) {
|
|
44
56
|
if (message.role === 'system')
|
|
@@ -62,6 +74,8 @@ export class ConversationManager {
|
|
|
62
74
|
...(message.toolName ? { name: message.toolName } : {}),
|
|
63
75
|
});
|
|
64
76
|
}
|
|
77
|
+
this._cachedLLMMessages = result;
|
|
78
|
+
this._cachedLLMRevision = this._messagesRevision;
|
|
65
79
|
return result;
|
|
66
80
|
}
|
|
67
81
|
addUserMessage(content) {
|
|
@@ -71,6 +85,7 @@ export class ConversationManager {
|
|
|
71
85
|
this.messages.push({ role: 'user', content });
|
|
72
86
|
// Clear undo stack when new user input is added (can't redo past new input)
|
|
73
87
|
this.undoStack = [];
|
|
88
|
+
this._messagesRevision++;
|
|
74
89
|
}
|
|
75
90
|
addAssistantMessage(content, opts) {
|
|
76
91
|
this.messages.push({
|
|
@@ -83,6 +98,7 @@ export class ConversationManager {
|
|
|
83
98
|
model: opts?.model,
|
|
84
99
|
provider: opts?.provider,
|
|
85
100
|
});
|
|
101
|
+
this._messagesRevision++;
|
|
86
102
|
}
|
|
87
103
|
/**
|
|
88
104
|
* undo - Remove the last complete turn (the last user message and all subsequent
|
|
@@ -101,6 +117,7 @@ export class ConversationManager {
|
|
|
101
117
|
return false;
|
|
102
118
|
const turn = this.messages.splice(lastUserIdx);
|
|
103
119
|
this.undoStack.push(turn);
|
|
120
|
+
this._messagesRevision++;
|
|
104
121
|
return true;
|
|
105
122
|
}
|
|
106
123
|
/**
|
|
@@ -112,6 +129,7 @@ export class ConversationManager {
|
|
|
112
129
|
return false;
|
|
113
130
|
const turn = this.undoStack.pop();
|
|
114
131
|
this.messages.push(...turn);
|
|
132
|
+
this._messagesRevision++;
|
|
115
133
|
return true;
|
|
116
134
|
}
|
|
117
135
|
addToolResults(results) {
|
|
@@ -127,9 +145,11 @@ export class ConversationManager {
|
|
|
127
145
|
...(toolName ? { toolName } : {}),
|
|
128
146
|
});
|
|
129
147
|
}
|
|
148
|
+
this._messagesRevision++;
|
|
130
149
|
}
|
|
131
150
|
addSystemMessage(content) {
|
|
132
151
|
this.messages.push({ role: 'system', content });
|
|
152
|
+
this._messagesRevision++;
|
|
133
153
|
}
|
|
134
154
|
getLastUserMessage() {
|
|
135
155
|
for (let i = this.messages.length - 1; i >= 0; i--) {
|
|
@@ -146,12 +166,14 @@ export class ConversationManager {
|
|
|
146
166
|
removeMessagesAfter(count) {
|
|
147
167
|
if (count < this.messages.length) {
|
|
148
168
|
this.messages.length = count;
|
|
169
|
+
this._messagesRevision++;
|
|
149
170
|
}
|
|
150
171
|
}
|
|
151
172
|
markLastUserMessageCancelled() {
|
|
152
173
|
for (let i = this.messages.length - 1; i >= 0; i--) {
|
|
153
174
|
if (this.messages[i].role === 'user') {
|
|
154
175
|
this.messages[i].cancelled = true;
|
|
176
|
+
this._messagesRevision++;
|
|
155
177
|
return;
|
|
156
178
|
}
|
|
157
179
|
}
|
|
@@ -159,6 +181,7 @@ export class ConversationManager {
|
|
|
159
181
|
startStreamingBlock() {
|
|
160
182
|
this.messages.push({ role: 'assistant', content: '' });
|
|
161
183
|
this.streamingMessageIndex = this.messages.length - 1;
|
|
184
|
+
this._messagesRevision++;
|
|
162
185
|
}
|
|
163
186
|
updateStreamingBlock(content) {
|
|
164
187
|
if (this.streamingMessageIndex < 0)
|
|
@@ -166,6 +189,7 @@ export class ConversationManager {
|
|
|
166
189
|
const message = this.messages[this.streamingMessageIndex];
|
|
167
190
|
if (message?.role === 'assistant') {
|
|
168
191
|
message.content = content;
|
|
192
|
+
this._messagesRevision++;
|
|
169
193
|
}
|
|
170
194
|
}
|
|
171
195
|
finalizeStreamingBlock() {
|
|
@@ -173,6 +197,7 @@ export class ConversationManager {
|
|
|
173
197
|
this.messages.splice(this.streamingMessageIndex, 1);
|
|
174
198
|
}
|
|
175
199
|
this.streamingMessageIndex = -1;
|
|
200
|
+
this._messagesRevision++;
|
|
176
201
|
}
|
|
177
202
|
getMessageSnapshot() {
|
|
178
203
|
return cloneMessages(this.messages);
|
|
@@ -184,6 +209,7 @@ export class ConversationManager {
|
|
|
184
209
|
const systemMessages = this.messages.filter((message) => message.role === 'system');
|
|
185
210
|
this.messages = [...systemMessages, ...messagesToInternal(newMessages)];
|
|
186
211
|
this.streamingMessageIndex = -1;
|
|
212
|
+
this._messagesRevision++;
|
|
187
213
|
}
|
|
188
214
|
async compact(registry, modelId, trigger = 'manual', provider, context) {
|
|
189
215
|
return compactConversation(this, registry, modelId, trigger, provider, context);
|
|
@@ -212,6 +238,7 @@ export class ConversationManager {
|
|
|
212
238
|
this.currentBranch = 'main';
|
|
213
239
|
this.streamingMessageIndex = -1;
|
|
214
240
|
this.undoStack = [];
|
|
241
|
+
this._messagesRevision++;
|
|
215
242
|
}
|
|
216
243
|
forkBranch(name, force = false) {
|
|
217
244
|
const branchName = name?.trim() || `branch-${Date.now()}`;
|
|
@@ -240,6 +267,7 @@ export class ConversationManager {
|
|
|
240
267
|
this.messages = cloneMessages(stored);
|
|
241
268
|
this.currentBranch = name;
|
|
242
269
|
this.streamingMessageIndex = -1;
|
|
270
|
+
this._messagesRevision++;
|
|
243
271
|
return true;
|
|
244
272
|
}
|
|
245
273
|
mergeBranch(name) {
|
|
@@ -251,6 +279,7 @@ export class ConversationManager {
|
|
|
251
279
|
if (toAppend.length === 0)
|
|
252
280
|
return true;
|
|
253
281
|
this.messages.push(...cloneMessages(toAppend));
|
|
282
|
+
this._messagesRevision++;
|
|
254
283
|
return true;
|
|
255
284
|
}
|
|
256
285
|
getCurrentBranch() {
|
|
@@ -275,6 +304,7 @@ export class ConversationManager {
|
|
|
275
304
|
this.branches = restoreBranchMap(data.branches);
|
|
276
305
|
this.currentBranch = data.currentBranch ?? 'main';
|
|
277
306
|
this.streamingMessageIndex = -1;
|
|
307
|
+
this._messagesRevision++;
|
|
278
308
|
}
|
|
279
309
|
}
|
|
280
310
|
export { parseDiffForApply, applyDiffContent } from './conversation-diff.js';
|
|
@@ -35,6 +35,8 @@ export declare class ProviderRegistry {
|
|
|
35
35
|
private catalogModels;
|
|
36
36
|
private pricingCatalog;
|
|
37
37
|
private syntheticCanonicalModels;
|
|
38
|
+
private _cachedModelRegistry;
|
|
39
|
+
private _modelRegistryRevision;
|
|
38
40
|
constructor(options: ProviderRegistryOptions);
|
|
39
41
|
private registerBuiltins;
|
|
40
42
|
private getPersistenceRoot;
|
|
@@ -44,6 +46,7 @@ export declare class ProviderRegistry {
|
|
|
44
46
|
private getSyntheticBuiltins;
|
|
45
47
|
private updateCatalogState;
|
|
46
48
|
private getSuppressedCatalogModelIds;
|
|
49
|
+
private _invalidateModelRegistry;
|
|
47
50
|
private getModelRegistry;
|
|
48
51
|
/** Register a provider. Overwrites any existing entry with the same name. */
|
|
49
52
|
register(provider: LLMProvider): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/providers/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,uBAAuB,EAA+B,MAAM,gBAAgB,CAAC;AAGxG,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACtB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kDAAkD,CAAC;AAIzF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAGlE,OAAO,EAcL,KAAK,YAAY,EAEjB,KAAK,sBAAsB,EAE5B,MAAM,oBAAoB,CAAC;AAQ5B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAgBrD,OAAO,KAAK,EACV,eAAe,EACf,uBAAuB,EACvB,2BAA2B,EAC3B,WAAW,EACZ,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACV,uBAAuB,EACvB,eAAe,EACf,SAAS,EACT,uBAAuB,EACvB,2BAA2B,EAC3B,WAAW,GACZ,MAAM,qBAAqB,CAAC;AAE7B;;;GAGG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,SAAS,CAAuC;IACxD,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,uBAAuB,CAA0B;IACzD,OAAO,CAAC,oBAAoB,CAA0B;IACtD,OAAO,CAAC,YAAY,CAAyB;IAC7C,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,gBAAgB,CAAyB;IACjD,OAAO,CAAC,QAAQ,CAAC,0BAA0B,CAAwC;IACnF,OAAO,CAAC,QAAQ,CAAoC;IACpD,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA0E;IACxG,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAA8F;IAClI,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAA6B;IAChE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkB;IAClD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA+C;IAC5E,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA+B;IAC9D,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAoE;IACnG,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAqB;IACxD,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAA8B;IAClE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAyB;IACpD,OAAO,CAAC,QAAQ,CAAC,4BAA4B,CAAsC;IACnF,OAAO,CAAC,aAAa,CAAsB;IAC3C,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,wBAAwB,CAAwB;
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/providers/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -43,6 +43,8 @@ export class ProviderRegistry {
|
|
|
43
43
|
catalogModels = [];
|
|
44
44
|
pricingCatalog = null;
|
|
45
45
|
syntheticCanonicalModels = [];
|
|
46
|
+
_cachedModelRegistry = null;
|
|
47
|
+
_modelRegistryRevision = 0;
|
|
46
48
|
constructor(options) {
|
|
47
49
|
this.configManager = options.configManager;
|
|
48
50
|
this.subscriptionManager = options.subscriptionManager;
|
|
@@ -98,12 +100,19 @@ export class ProviderRegistry {
|
|
|
98
100
|
this.catalogModels = [...models];
|
|
99
101
|
this.pricingCatalog = { fetchedAt: Date.now(), models: this.catalogModels };
|
|
100
102
|
this.syntheticCanonicalModels = buildSyntheticCanonicalModels(this.catalogModels);
|
|
103
|
+
this._invalidateModelRegistry();
|
|
101
104
|
}
|
|
102
105
|
getSuppressedCatalogModelIds() {
|
|
103
106
|
return new Set([...this.runtimeCatalogSuppressions.values()].flat());
|
|
104
107
|
}
|
|
108
|
+
_invalidateModelRegistry() {
|
|
109
|
+
this._cachedModelRegistry = null;
|
|
110
|
+
this._modelRegistryRevision++;
|
|
111
|
+
}
|
|
105
112
|
getModelRegistry() {
|
|
106
|
-
|
|
113
|
+
if (this._cachedModelRegistry !== null)
|
|
114
|
+
return this._cachedModelRegistry;
|
|
115
|
+
this._cachedModelRegistry = buildModelRegistry({
|
|
107
116
|
customModels: this.customModels,
|
|
108
117
|
runtimeModels: this.runtimeModels,
|
|
109
118
|
syntheticModels: this.getSyntheticBuiltins(),
|
|
@@ -111,10 +120,12 @@ export class ProviderRegistry {
|
|
|
111
120
|
discoveredModels: this.discoveredModels,
|
|
112
121
|
suppressedCatalogIds: this.getSuppressedCatalogModelIds(),
|
|
113
122
|
});
|
|
123
|
+
return this._cachedModelRegistry;
|
|
114
124
|
}
|
|
115
125
|
/** Register a provider. Overwrites any existing entry with the same name. */
|
|
116
126
|
register(provider) {
|
|
117
127
|
this.providers.set(provider.name, provider);
|
|
128
|
+
this._invalidateModelRegistry();
|
|
118
129
|
}
|
|
119
130
|
/**
|
|
120
131
|
* Register a runtime/plugin-owned provider and optional model definitions.
|
|
@@ -138,6 +149,7 @@ export class ProviderRegistry {
|
|
|
138
149
|
];
|
|
139
150
|
this.runtimeCatalogSuppressions.set(provider.name, [...new Set(suppressCatalogModels)]);
|
|
140
151
|
this.capabilityRegistry.invalidate();
|
|
152
|
+
this._invalidateModelRegistry();
|
|
141
153
|
return () => {
|
|
142
154
|
if (!this.runtimeProviderNames.has(provider.name))
|
|
143
155
|
return;
|
|
@@ -146,6 +158,7 @@ export class ProviderRegistry {
|
|
|
146
158
|
this.runtimeModels = this.runtimeModels.filter((model) => model.provider !== provider.name);
|
|
147
159
|
this.runtimeCatalogSuppressions.delete(provider.name);
|
|
148
160
|
this.capabilityRegistry.invalidate();
|
|
161
|
+
this._invalidateModelRegistry();
|
|
149
162
|
};
|
|
150
163
|
}
|
|
151
164
|
listProviders() {
|
|
@@ -196,6 +209,7 @@ export class ProviderRegistry {
|
|
|
196
209
|
});
|
|
197
210
|
}
|
|
198
211
|
}
|
|
212
|
+
this._invalidateModelRegistry();
|
|
199
213
|
}
|
|
200
214
|
/** Retrieve a provider by name. Throws if not found. */
|
|
201
215
|
get(name) {
|
|
@@ -379,6 +393,7 @@ export class ProviderRegistry {
|
|
|
379
393
|
contextWindow: cap,
|
|
380
394
|
contextWindowProvenance: 'configured_cap',
|
|
381
395
|
};
|
|
396
|
+
this._invalidateModelRegistry();
|
|
382
397
|
return;
|
|
383
398
|
}
|
|
384
399
|
const discoveredIdx = this.discoveredModels.findIndex((m) => m.registryKey === registryKey || m.id === registryKey);
|
|
@@ -388,6 +403,7 @@ export class ProviderRegistry {
|
|
|
388
403
|
contextWindow: cap,
|
|
389
404
|
contextWindowProvenance: 'configured_cap',
|
|
390
405
|
};
|
|
406
|
+
this._invalidateModelRegistry();
|
|
391
407
|
return;
|
|
392
408
|
}
|
|
393
409
|
logger.warn('[registry] setModelContextCap: model not found', { registryKey });
|
|
@@ -450,6 +466,7 @@ export class ProviderRegistry {
|
|
|
450
466
|
}
|
|
451
467
|
// Swap custom models
|
|
452
468
|
this.customModels = result.models;
|
|
469
|
+
this._invalidateModelRegistry();
|
|
453
470
|
return { warnings: result.warnings, added, removed, updated };
|
|
454
471
|
}
|
|
455
472
|
/**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { readFileSync } from 'node:fs';
|
|
2
2
|
import { join } from 'node:path';
|
|
3
|
-
let version = '0.18.
|
|
3
|
+
let version = '0.18.40';
|
|
4
4
|
try {
|
|
5
5
|
const pkg = JSON.parse(readFileSync(join(import.meta.dir, '..', '..', 'package.json'), 'utf-8'));
|
|
6
6
|
version = pkg.version ?? version;
|