@pellux/goodvibes-sdk 0.25.6 → 0.25.8
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/contracts/artifacts/operator-contract.json +280 -4
- package/dist/_internal/contracts/generated/foundation-metadata.d.ts +2 -2
- package/dist/_internal/contracts/generated/foundation-metadata.js +2 -2
- package/dist/_internal/contracts/generated/operator-contract.d.ts.map +1 -1
- package/dist/_internal/contracts/generated/operator-contract.js +280 -4
- package/dist/_internal/contracts/generated/operator-method-ids.d.ts +1 -1
- package/dist/_internal/contracts/generated/operator-method-ids.d.ts.map +1 -1
- package/dist/_internal/contracts/generated/operator-method-ids.js +2 -0
- package/dist/_internal/contracts/zod-schemas/providers.d.ts +132 -0
- package/dist/_internal/contracts/zod-schemas/providers.d.ts.map +1 -1
- package/dist/_internal/contracts/zod-schemas/providers.js +16 -0
- package/dist/_internal/daemon/context.d.ts +1 -0
- package/dist/_internal/daemon/context.d.ts.map +1 -1
- package/dist/_internal/daemon/media-route-types.d.ts +10 -0
- package/dist/_internal/daemon/media-route-types.d.ts.map +1 -1
- package/dist/_internal/daemon/media-routes.d.ts +1 -1
- package/dist/_internal/daemon/media-routes.d.ts.map +1 -1
- package/dist/_internal/daemon/media-routes.js +91 -10
- package/dist/_internal/daemon/operator.d.ts +1 -1
- package/dist/_internal/daemon/operator.d.ts.map +1 -1
- package/dist/_internal/daemon/operator.js +2 -0
- package/dist/_internal/platform/adapters/ntfy/index.js +13 -2
- package/dist/_internal/platform/adapters/types.d.ts +2 -0
- package/dist/_internal/platform/adapters/types.d.ts.map +1 -1
- package/dist/_internal/platform/batch/index.d.ts +4 -0
- package/dist/_internal/platform/batch/index.d.ts.map +1 -0
- package/dist/_internal/platform/batch/index.js +2 -0
- package/dist/_internal/platform/batch/manager.d.ts +41 -0
- package/dist/_internal/platform/batch/manager.d.ts.map +1 -0
- package/dist/_internal/platform/batch/manager.js +400 -0
- package/dist/_internal/platform/batch/types.d.ts +85 -0
- package/dist/_internal/platform/batch/types.d.ts.map +1 -0
- package/dist/_internal/platform/batch/types.js +10 -0
- package/dist/_internal/platform/channels/builtin/plugins.d.ts.map +1 -1
- package/dist/_internal/platform/channels/builtin/plugins.js +1 -0
- package/dist/_internal/platform/channels/reply-pipeline.d.ts +9 -1
- package/dist/_internal/platform/channels/reply-pipeline.d.ts.map +1 -1
- package/dist/_internal/platform/channels/reply-pipeline.js +156 -6
- package/dist/_internal/platform/companion/companion-chat-manager.d.ts +2 -1
- package/dist/_internal/platform/companion/companion-chat-manager.d.ts.map +1 -1
- package/dist/_internal/platform/companion/companion-chat-manager.js +21 -0
- package/dist/_internal/platform/companion/companion-chat-routes.d.ts +1 -0
- package/dist/_internal/platform/companion/companion-chat-routes.d.ts.map +1 -1
- package/dist/_internal/platform/companion/companion-chat-routes.js +76 -0
- package/dist/_internal/platform/companion/companion-chat-types.d.ts +9 -0
- package/dist/_internal/platform/companion/companion-chat-types.d.ts.map +1 -1
- package/dist/_internal/platform/companion/index.d.ts +1 -1
- package/dist/_internal/platform/companion/index.d.ts.map +1 -1
- package/dist/_internal/platform/config/schema-domain-core.d.ts +6 -0
- package/dist/_internal/platform/config/schema-domain-core.d.ts.map +1 -1
- package/dist/_internal/platform/config/schema-domain-core.js +30 -0
- package/dist/_internal/platform/config/schema-domain-runtime.d.ts +19 -0
- package/dist/_internal/platform/config/schema-domain-runtime.d.ts.map +1 -1
- package/dist/_internal/platform/config/schema-domain-runtime.js +118 -0
- package/dist/_internal/platform/config/schema-types.d.ts +33 -2
- package/dist/_internal/platform/config/schema-types.d.ts.map +1 -1
- package/dist/_internal/platform/config/schema.d.ts.map +1 -1
- package/dist/_internal/platform/config/schema.js +3 -0
- package/dist/_internal/platform/control-plane/method-catalog-control-core.d.ts.map +1 -1
- package/dist/_internal/platform/control-plane/method-catalog-control-core.js +17 -0
- package/dist/_internal/platform/control-plane/method-catalog-media.d.ts.map +1 -1
- package/dist/_internal/platform/control-plane/method-catalog-media.js +17 -0
- package/dist/_internal/platform/control-plane/routes/operator.d.ts +1 -1
- package/dist/_internal/platform/control-plane/routes/operator.d.ts.map +1 -1
- package/dist/_internal/platform/control-plane/routes/operator.js +2 -0
- package/dist/_internal/platform/daemon/facade-composition.d.ts +2 -0
- package/dist/_internal/platform/daemon/facade-composition.d.ts.map +1 -1
- package/dist/_internal/platform/daemon/facade-composition.js +10 -0
- package/dist/_internal/platform/daemon/http/batch-routes.d.ts +8 -0
- package/dist/_internal/platform/daemon/http/batch-routes.d.ts.map +1 -0
- package/dist/_internal/platform/daemon/http/batch-routes.js +113 -0
- package/dist/_internal/platform/daemon/http/provider-routes.d.ts +3 -0
- package/dist/_internal/platform/daemon/http/provider-routes.d.ts.map +1 -1
- package/dist/_internal/platform/daemon/http/provider-routes.js +79 -20
- package/dist/_internal/platform/daemon/http/router-route-contexts.d.ts.map +1 -1
- package/dist/_internal/platform/daemon/http/router-route-contexts.js +1 -0
- package/dist/_internal/platform/daemon/http/router.d.ts +4 -0
- package/dist/_internal/platform/daemon/http/router.d.ts.map +1 -1
- package/dist/_internal/platform/daemon/http/router.js +15 -0
- package/dist/_internal/platform/daemon/http/runtime-route-types.d.ts +2 -0
- package/dist/_internal/platform/daemon/http/runtime-route-types.d.ts.map +1 -1
- package/dist/_internal/platform/daemon/surface-actions.d.ts +6 -0
- package/dist/_internal/platform/daemon/surface-actions.d.ts.map +1 -1
- package/dist/_internal/platform/daemon/surface-actions.js +13 -0
- package/dist/_internal/platform/daemon/surface-delivery.d.ts +3 -0
- package/dist/_internal/platform/daemon/surface-delivery.d.ts.map +1 -1
- package/dist/_internal/platform/daemon/surface-delivery.js +42 -6
- package/dist/_internal/platform/daemon/types.d.ts +2 -0
- package/dist/_internal/platform/daemon/types.d.ts.map +1 -1
- package/dist/_internal/platform/providers/anthropic.d.ts +13 -1
- package/dist/_internal/platform/providers/anthropic.d.ts.map +1 -1
- package/dist/_internal/platform/providers/anthropic.js +219 -1
- package/dist/_internal/platform/providers/interface.d.ts +48 -0
- package/dist/_internal/platform/providers/interface.d.ts.map +1 -1
- package/dist/_internal/platform/providers/openai.d.ts +13 -1
- package/dist/_internal/platform/providers/openai.d.ts.map +1 -1
- package/dist/_internal/platform/providers/openai.js +189 -1
- package/dist/_internal/platform/version.js +1 -1
- package/dist/_internal/platform/voice/index.d.ts +1 -1
- package/dist/_internal/platform/voice/index.d.ts.map +1 -1
- package/dist/_internal/platform/voice/providers/elevenlabs.d.ts.map +1 -1
- package/dist/_internal/platform/voice/providers/elevenlabs.js +150 -4
- package/dist/_internal/platform/voice/service.d.ts +2 -1
- package/dist/_internal/platform/voice/service.d.ts.map +1 -1
- package/dist/_internal/platform/voice/service.js +7 -0
- package/dist/_internal/platform/voice/types.d.ts +18 -1
- package/dist/_internal/platform/voice/types.d.ts.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/workers.d.ts +40 -0
- package/dist/workers.d.ts.map +1 -0
- package/dist/workers.js +144 -0
- package/package.json +5 -1
|
@@ -194,7 +194,10 @@ function buildRenderedText(explicitText, events, policy, phase) {
|
|
|
194
194
|
if (phase === 'final' && explicitText.trim().length > 0) {
|
|
195
195
|
return trimText(explicitText, policy.maxChunkChars);
|
|
196
196
|
}
|
|
197
|
-
const
|
|
197
|
+
const renderableEvents = policy.surface === 'ntfy'
|
|
198
|
+
? events.filter((event) => event.kind !== 'assistant_text' && event.kind !== 'reasoning')
|
|
199
|
+
: events;
|
|
200
|
+
const lines = renderableEvents
|
|
198
201
|
.slice(-policy.maxEventsPerUpdate)
|
|
199
202
|
.map((event) => eventLine(event, policy.reasoningVisibility))
|
|
200
203
|
.filter((line) => Boolean(line && line.trim().length > 0));
|
|
@@ -217,6 +220,16 @@ function resolveEnvelopeAgentId(envelope) {
|
|
|
217
220
|
const payload = envelope.payload;
|
|
218
221
|
return typeof payload.agentId === 'string' ? payload.agentId : null;
|
|
219
222
|
}
|
|
223
|
+
function isWorkflowEventPayload(payload) {
|
|
224
|
+
return payload.type.startsWith('WORKFLOW_');
|
|
225
|
+
}
|
|
226
|
+
function resolveEnvelopeWorkflowChainId(envelope) {
|
|
227
|
+
const payload = envelope.payload;
|
|
228
|
+
return typeof payload.chainId === 'string' && payload.chainId.length > 0 ? payload.chainId : null;
|
|
229
|
+
}
|
|
230
|
+
function isAgentFinalEvent(type) {
|
|
231
|
+
return type === 'AGENT_COMPLETED' || type === 'AGENT_FAILED' || type === 'AGENT_CANCELLED';
|
|
232
|
+
}
|
|
220
233
|
export function normalizeChannelRenderEventFromRuntime(envelope) {
|
|
221
234
|
const payload = envelope.payload;
|
|
222
235
|
switch (payload.type) {
|
|
@@ -297,6 +310,50 @@ export function normalizeChannelRenderEventFromRuntime(envelope) {
|
|
|
297
310
|
return [renderEvent(payload.type === 'COMPACTION_FAILED' ? 'error' : 'compaction', 'progress', envelope, {
|
|
298
311
|
text: payload.type.replace(/^COMPACTION_/, '').toLowerCase().replace(/_/g, ' '),
|
|
299
312
|
})];
|
|
313
|
+
case 'WORKFLOW_CHAIN_CREATED':
|
|
314
|
+
return [renderEvent('status', 'progress', envelope, {
|
|
315
|
+
text: `WRFC chain ${payload.chainId.slice(0, 12)} started: ${trimText(payload.task, 180)}`,
|
|
316
|
+
})];
|
|
317
|
+
case 'WORKFLOW_STATE_CHANGED':
|
|
318
|
+
return [renderEvent('status', 'progress', envelope, {
|
|
319
|
+
text: `WRFC chain ${payload.chainId.slice(0, 12)} moved from ${payload.from} to ${payload.to}`,
|
|
320
|
+
})];
|
|
321
|
+
case 'WORKFLOW_REVIEW_COMPLETED': {
|
|
322
|
+
const constraintSummary = typeof payload.constraintsSatisfied === 'number' && typeof payload.constraintsTotal === 'number'
|
|
323
|
+
? `, constraints ${payload.constraintsSatisfied}/${payload.constraintsTotal}`
|
|
324
|
+
: '';
|
|
325
|
+
return [renderEvent(payload.passed ? 'status' : 'error', 'progress', envelope, {
|
|
326
|
+
text: `WRFC review ${payload.passed ? 'passed' : 'needs fixes'}: score ${payload.score}/10${constraintSummary}`,
|
|
327
|
+
})];
|
|
328
|
+
}
|
|
329
|
+
case 'WORKFLOW_FIX_ATTEMPTED':
|
|
330
|
+
return [renderEvent('status', 'progress', envelope, {
|
|
331
|
+
text: `WRFC fix attempt ${payload.attempt}/${payload.maxAttempts} started`,
|
|
332
|
+
})];
|
|
333
|
+
case 'WORKFLOW_GATE_RESULT':
|
|
334
|
+
return [renderEvent(payload.passed ? 'status' : 'error', 'progress', envelope, {
|
|
335
|
+
text: `WRFC gate ${payload.gate} ${payload.passed ? 'passed' : 'failed'}`,
|
|
336
|
+
})];
|
|
337
|
+
case 'WORKFLOW_AUTO_COMMITTED':
|
|
338
|
+
return [renderEvent('status', 'progress', envelope, {
|
|
339
|
+
text: `WRFC changes committed${payload.commitHash ? `: ${payload.commitHash}` : ''}`,
|
|
340
|
+
})];
|
|
341
|
+
case 'WORKFLOW_CASCADE_ABORTED':
|
|
342
|
+
return [renderEvent('error', 'progress', envelope, {
|
|
343
|
+
text: `WRFC cascade warning: ${payload.reason}`,
|
|
344
|
+
})];
|
|
345
|
+
case 'WORKFLOW_CONSTRAINTS_ENUMERATED':
|
|
346
|
+
return [renderEvent('status', 'progress', envelope, {
|
|
347
|
+
text: `WRFC constraints enumerated: ${payload.constraints.length}`,
|
|
348
|
+
})];
|
|
349
|
+
case 'WORKFLOW_CHAIN_PASSED':
|
|
350
|
+
return [renderEvent('status', 'final', envelope, {
|
|
351
|
+
text: `WRFC chain ${payload.chainId.slice(0, 12)} passed`,
|
|
352
|
+
})];
|
|
353
|
+
case 'WORKFLOW_CHAIN_FAILED':
|
|
354
|
+
return [renderEvent('error', 'final', envelope, {
|
|
355
|
+
text: `WRFC chain ${payload.chainId.slice(0, 12)} failed: ${payload.reason}`,
|
|
356
|
+
})];
|
|
300
357
|
case 'TURN_COMPLETED':
|
|
301
358
|
return payload.response.trim().length > 0
|
|
302
359
|
? [renderEvent('assistant_text', 'final', envelope, { text: payload.response })]
|
|
@@ -312,6 +369,7 @@ export class ChannelReplyPipeline {
|
|
|
312
369
|
routeBindings;
|
|
313
370
|
now;
|
|
314
371
|
buffers = new Map();
|
|
372
|
+
workflowChains = new Map();
|
|
315
373
|
unsubscribers = [];
|
|
316
374
|
constructor(deps) {
|
|
317
375
|
this.channelPlugins = deps.channelPlugins;
|
|
@@ -331,6 +389,7 @@ export class ChannelReplyPipeline {
|
|
|
331
389
|
'permissions',
|
|
332
390
|
'providers',
|
|
333
391
|
'compaction',
|
|
392
|
+
'workflows',
|
|
334
393
|
];
|
|
335
394
|
for (const domain of domains) {
|
|
336
395
|
this.unsubscribers.push(runtimeBus.onDomain(domain, (envelope) => {
|
|
@@ -341,15 +400,24 @@ export class ChannelReplyPipeline {
|
|
|
341
400
|
dispose() {
|
|
342
401
|
this.disposeSubscriptions();
|
|
343
402
|
this.buffers.clear();
|
|
403
|
+
this.workflowChains.clear();
|
|
344
404
|
}
|
|
345
405
|
trackPending(pending) {
|
|
346
406
|
this.buffers.set(pending.agentId, {
|
|
347
407
|
pending,
|
|
348
408
|
events: [],
|
|
349
409
|
});
|
|
410
|
+
if (typeof pending.workflowChainId === 'string' && pending.workflowChainId.length > 0) {
|
|
411
|
+
this.workflowChains.set(pending.workflowChainId, pending.agentId);
|
|
412
|
+
}
|
|
350
413
|
}
|
|
351
414
|
untrack(agentId) {
|
|
352
415
|
this.buffers.delete(agentId);
|
|
416
|
+
for (const [chainId, mappedAgentId] of this.workflowChains.entries()) {
|
|
417
|
+
if (mappedAgentId === agentId) {
|
|
418
|
+
this.workflowChains.delete(chainId);
|
|
419
|
+
}
|
|
420
|
+
}
|
|
353
421
|
}
|
|
354
422
|
has(agentId) {
|
|
355
423
|
return this.buffers.has(agentId);
|
|
@@ -362,7 +430,7 @@ export class ChannelReplyPipeline {
|
|
|
362
430
|
if (!state)
|
|
363
431
|
return null;
|
|
364
432
|
const policy = await this.resolvePolicy(state.pending.surfaceKind);
|
|
365
|
-
const text = buildRenderedText(explicitText ?? '', state.events, policy, 'progress');
|
|
433
|
+
const text = buildRenderedText(policy.surface === 'ntfy' ? '' : explicitText ?? '', state.events, policy, 'progress');
|
|
366
434
|
if (!text)
|
|
367
435
|
return null;
|
|
368
436
|
if (!force && state.lastDeliveredText === text && (this.now() - (state.lastDeliveredAt ?? 0)) < DEFAULT_PROGRESS_INTERVAL_MS) {
|
|
@@ -373,7 +441,7 @@ export class ChannelReplyPipeline {
|
|
|
373
441
|
state.lastDeliveredAt = this.now();
|
|
374
442
|
return result;
|
|
375
443
|
}
|
|
376
|
-
async deliverFinal(agentId, explicitText) {
|
|
444
|
+
async deliverFinal(agentId, explicitText, options = {}) {
|
|
377
445
|
const state = this.buffers.get(agentId);
|
|
378
446
|
if (!state)
|
|
379
447
|
return null;
|
|
@@ -388,10 +456,16 @@ export class ChannelReplyPipeline {
|
|
|
388
456
|
metadata: {},
|
|
389
457
|
};
|
|
390
458
|
const result = await this.dispatch(state, policy, 'final', buildRenderedText(explicitText, finalEvents.length > 0 ? finalEvents : [...state.events, statusEvent], policy, 'final'), finalEvents.length > 0 ? finalEvents : [...state.events.slice(-policy.maxEventsPerUpdate + 1), statusEvent]);
|
|
391
|
-
|
|
459
|
+
if (!options.keepTracking) {
|
|
460
|
+
this.untrack(agentId);
|
|
461
|
+
}
|
|
392
462
|
return result;
|
|
393
463
|
}
|
|
394
464
|
async handleEnvelope(envelope) {
|
|
465
|
+
if (isWorkflowEventPayload(envelope.payload)) {
|
|
466
|
+
await this.handleWorkflowEnvelope(envelope);
|
|
467
|
+
return;
|
|
468
|
+
}
|
|
395
469
|
if (envelope.payload.type === 'AGENT_SPAWNING'
|
|
396
470
|
&& typeof envelope.payload.parentAgentId === 'string'
|
|
397
471
|
&& envelope.payload.parentAgentId.length > 0) {
|
|
@@ -412,17 +486,62 @@ export class ChannelReplyPipeline {
|
|
|
412
486
|
}
|
|
413
487
|
const hasFinal = events.some((event) => event.phase === 'final');
|
|
414
488
|
if (hasFinal) {
|
|
489
|
+
const finalKinds = state.pending.surfaceKind === 'ntfy'
|
|
490
|
+
? new Set(['error', 'status'])
|
|
491
|
+
: new Set(['assistant_text', 'error', 'status']);
|
|
415
492
|
const text = events
|
|
416
|
-
.filter((event) =>
|
|
493
|
+
.filter((event) => finalKinds.has(event.kind))
|
|
417
494
|
.map((event) => event.text ?? '')
|
|
418
495
|
.filter(Boolean)
|
|
419
496
|
.join('\n')
|
|
420
497
|
.trim();
|
|
421
|
-
await this.deliverFinal(agentId, text
|
|
498
|
+
await this.deliverFinal(agentId, text, {
|
|
499
|
+
keepTracking: state.pending.surfaceKind === 'ntfy'
|
|
500
|
+
&& typeof state.pending.workflowChainId === 'string'
|
|
501
|
+
&& isAgentFinalEvent(envelope.payload.type),
|
|
502
|
+
});
|
|
422
503
|
return;
|
|
423
504
|
}
|
|
424
505
|
await this.deliverProgress(agentId);
|
|
425
506
|
}
|
|
507
|
+
async handleWorkflowEnvelope(envelope) {
|
|
508
|
+
if (envelope.payload.type === 'WORKFLOW_CHAIN_CREATED') {
|
|
509
|
+
const matched = this.findPendingForWorkflowTask(envelope.payload.task);
|
|
510
|
+
if (matched) {
|
|
511
|
+
this.associateWorkflowChain(matched.pending.agentId, envelope.payload.chainId);
|
|
512
|
+
}
|
|
513
|
+
}
|
|
514
|
+
const chainId = resolveEnvelopeWorkflowChainId(envelope);
|
|
515
|
+
if (!chainId)
|
|
516
|
+
return;
|
|
517
|
+
const agentId = this.workflowChains.get(chainId);
|
|
518
|
+
if (!agentId)
|
|
519
|
+
return;
|
|
520
|
+
const state = this.buffers.get(agentId);
|
|
521
|
+
if (!state) {
|
|
522
|
+
this.workflowChains.delete(chainId);
|
|
523
|
+
return;
|
|
524
|
+
}
|
|
525
|
+
const events = normalizeChannelRenderEventFromRuntime(envelope);
|
|
526
|
+
if (events.length === 0)
|
|
527
|
+
return;
|
|
528
|
+
state.events.push(...events);
|
|
529
|
+
if (state.events.length > MAX_BUFFERED_EVENTS) {
|
|
530
|
+
state.events.splice(0, state.events.length - MAX_BUFFERED_EVENTS);
|
|
531
|
+
}
|
|
532
|
+
const hasFinal = events.some((event) => event.phase === 'final');
|
|
533
|
+
if (hasFinal) {
|
|
534
|
+
const text = events
|
|
535
|
+
.filter((event) => event.kind === 'error' || event.kind === 'status')
|
|
536
|
+
.map((event) => event.text ?? '')
|
|
537
|
+
.filter(Boolean)
|
|
538
|
+
.join('\n')
|
|
539
|
+
.trim();
|
|
540
|
+
await this.deliverFinal(agentId, text);
|
|
541
|
+
return;
|
|
542
|
+
}
|
|
543
|
+
await this.deliverProgress(agentId, undefined, true);
|
|
544
|
+
}
|
|
426
545
|
trackChildPendingReply(agentId, parentAgentId, task) {
|
|
427
546
|
if (this.buffers.has(agentId))
|
|
428
547
|
return;
|
|
@@ -443,6 +562,37 @@ export class ChannelReplyPipeline {
|
|
|
443
562
|
events: [],
|
|
444
563
|
});
|
|
445
564
|
}
|
|
565
|
+
findPendingForWorkflowTask(task) {
|
|
566
|
+
const normalizedTask = task.trim();
|
|
567
|
+
if (!normalizedTask)
|
|
568
|
+
return null;
|
|
569
|
+
let fallback = null;
|
|
570
|
+
for (const state of this.buffers.values()) {
|
|
571
|
+
if (typeof state.pending.workflowChainId === 'string')
|
|
572
|
+
continue;
|
|
573
|
+
const agentTask = typeof state.pending.agentTask === 'string' ? state.pending.agentTask.trim() : '';
|
|
574
|
+
const pendingTask = state.pending.task.trim();
|
|
575
|
+
if (agentTask === normalizedTask)
|
|
576
|
+
return state;
|
|
577
|
+
if (!fallback && pendingTask === normalizedTask) {
|
|
578
|
+
fallback = state;
|
|
579
|
+
}
|
|
580
|
+
}
|
|
581
|
+
return fallback;
|
|
582
|
+
}
|
|
583
|
+
associateWorkflowChain(agentId, chainId) {
|
|
584
|
+
const state = this.buffers.get(agentId);
|
|
585
|
+
if (!state)
|
|
586
|
+
return;
|
|
587
|
+
this.workflowChains.set(chainId, agentId);
|
|
588
|
+
this.buffers.set(agentId, {
|
|
589
|
+
...state,
|
|
590
|
+
pending: {
|
|
591
|
+
...state.pending,
|
|
592
|
+
workflowChainId: chainId,
|
|
593
|
+
},
|
|
594
|
+
});
|
|
595
|
+
}
|
|
446
596
|
async resolvePolicy(surface) {
|
|
447
597
|
return await this.channelPlugins.getRenderPolicy(surface) ?? DEFAULT_POLICY[surface];
|
|
448
598
|
}
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
* for that specific session — never the global TUI event feed.
|
|
20
20
|
* - A GC sweep closes sessions that have been idle beyond the TTL.
|
|
21
21
|
*/
|
|
22
|
-
import type { CompanionChatMessage, CompanionChatSession, CreateCompanionChatSessionInput } from './companion-chat-types.js';
|
|
22
|
+
import type { CompanionChatMessage, CompanionChatSession, CreateCompanionChatSessionInput, UpdateCompanionChatSessionInput } from './companion-chat-types.js';
|
|
23
23
|
import type { CompanionChatRateLimiterOptions } from './companion-chat-rate-limiter.js';
|
|
24
24
|
import type { ToolRegistry } from '../tools/registry.js';
|
|
25
25
|
export interface CompanionProviderMessage {
|
|
@@ -113,6 +113,7 @@ export declare class CompanionChatManager {
|
|
|
113
113
|
createSession(input?: CreateCompanionChatSessionInput): CompanionChatSession;
|
|
114
114
|
getSession(sessionId: string): CompanionChatSession | null;
|
|
115
115
|
getMessages(sessionId: string): CompanionChatMessage[];
|
|
116
|
+
updateSession(sessionId: string, input: UpdateCompanionChatSessionInput): CompanionChatSession;
|
|
116
117
|
/**
|
|
117
118
|
* Register the SSE clientId for this session so events are routed only to
|
|
118
119
|
* the correct subscriber. Replaces any previous registration (single subscriber
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"companion-chat-manager.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/companion/companion-chat-manager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"companion-chat-manager.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/companion/companion-chat-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAIH,OAAO,KAAK,EACV,oBAAoB,EACpB,oBAAoB,EAGpB,+BAA+B,EAC/B,+BAA+B,EAChC,MAAM,2BAA2B,CAAC;AAMnC,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,kCAAkC,CAAC;AACxF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAMzD,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,EAAE,YAAY,GAAG,WAAW,GAAG,aAAa,GAAG,MAAM,GAAG,OAAO,CAAC;IAC7E,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,oBAAoB;IACnC,wDAAwD;IACxD,UAAU,CACR,QAAQ,EAAE,wBAAwB,EAAE,EACpC,OAAO,EAAE;QACP,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACtC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC/B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAClC,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC;KACpC,GACA,aAAa,CAAC,sBAAsB,CAAC,CAAC;CAC1C;AAMD,MAAM,WAAW,2BAA2B;IAC1C,YAAY,CACV,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,OAAO,EAChB,MAAM,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAC7B,IAAI,CAAC;CACT;AA4BD,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAWD,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,CAAC;IACxC,QAAQ,CAAC,cAAc,EAAE,2BAA2B,CAAC;IACrD;;;;OAIG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC;IACrC;;;OAGG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B;;;OAGG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,mFAAmF;IACnF,QAAQ,CAAC,WAAW,CAAC,EAAE,+BAA+B,GAAG,KAAK,CAAC;IAC/D,yBAAyB;IACzB,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,yBAAyB;IACzB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,yBAAyB;IACzB,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAsC;IAC/D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAuB;IAChD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA8B;IAC7D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsB;IACnD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAkC;IAC9D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAkC;IAC9D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,OAAO,CAA+C;IAC9D,qDAAqD;IACrD,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAmC;IAClE;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAoC;gBAEtD,MAAM,EAAE,0BAA0B;IAmC9C;;;;OAIG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAuC3B,aAAa,CAAC,KAAK,GAAE,+BAAoC,GAAG,oBAAoB;IAkChF,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,oBAAoB,GAAG,IAAI;IAI1D,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,oBAAoB,EAAE;IAItD,aAAa,CACX,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,+BAA+B,GACrC,oBAAoB;IAoBvB;;;;OAIG;IACH,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAQ7D;;;OAGG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,oBAAoB,GAAG,IAAI;IAe5D;;;;;;;;;;;;OAYG;IACG,WAAW,CACf,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,QAAQ,SAAK,GACZ,OAAO,CAAC,MAAM,CAAC;IAIZ,0BAA0B,CAC9B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,QAAQ,SAAK,EACb,OAAO,GAAE;QAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAO,GAC5C,OAAO,CAAC,wBAAwB,CAAC;YAqBtB,oBAAoB;IAiDlC,OAAO,IAAI,IAAI;YAgBD,QAAQ;IAgKtB,QAAQ,IAAI,IAAI;IA6BhB,OAAO,CAAC,WAAW;IASnB;;;;;OAKG;IACH,OAAO,CAAC,QAAQ;YAeF,OAAO;IAOrB,OAAO,CAAC,mBAAmB;CAO5B"}
|
|
@@ -153,6 +153,27 @@ export class CompanionChatManager {
|
|
|
153
153
|
getMessages(sessionId) {
|
|
154
154
|
return this.sessions.get(sessionId)?.messages ?? [];
|
|
155
155
|
}
|
|
156
|
+
updateSession(sessionId, input) {
|
|
157
|
+
const session = this.sessions.get(sessionId);
|
|
158
|
+
if (!session) {
|
|
159
|
+
throw Object.assign(new Error(`Session not found: ${sessionId}`), { code: 'SESSION_NOT_FOUND', status: 404 });
|
|
160
|
+
}
|
|
161
|
+
if (session.meta.status === 'closed') {
|
|
162
|
+
throw Object.assign(new Error(`Session is closed: ${sessionId}`), { code: 'SESSION_CLOSED', status: 409 });
|
|
163
|
+
}
|
|
164
|
+
const patch = { updatedAt: Date.now() };
|
|
165
|
+
if (input.title !== undefined)
|
|
166
|
+
patch.title = input.title;
|
|
167
|
+
if (input.model !== undefined)
|
|
168
|
+
patch.model = input.model;
|
|
169
|
+
if (input.provider !== undefined)
|
|
170
|
+
patch.provider = input.provider;
|
|
171
|
+
if (input.systemPrompt !== undefined)
|
|
172
|
+
patch.systemPrompt = input.systemPrompt;
|
|
173
|
+
const updated = this._updateMeta(session, patch);
|
|
174
|
+
void this._persist(sessionId);
|
|
175
|
+
return updated;
|
|
176
|
+
}
|
|
156
177
|
/**
|
|
157
178
|
* Register the SSE clientId for this session so events are routed only to
|
|
158
179
|
* the correct subscriber. Replaces any previous registration (single subscriber
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
* Routes:
|
|
7
7
|
* POST /api/companion/chat/sessions
|
|
8
8
|
* GET /api/companion/chat/sessions/:sessionId
|
|
9
|
+
* PATCH /api/companion/chat/sessions/:sessionId
|
|
9
10
|
* DELETE /api/companion/chat/sessions/:sessionId
|
|
10
11
|
* POST /api/companion/chat/sessions/:sessionId/messages
|
|
11
12
|
* GET /api/companion/chat/sessions/:sessionId/messages
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"companion-chat-routes.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/companion/companion-chat-routes.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"companion-chat-routes.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/companion/companion-chat-routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAOH,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAMjF;;;GAGG;AACH,wBAAsB,2BAA2B,CAC/C,GAAG,EAAE,OAAO,EACZ,OAAO,EAAE,yBAAyB,GACjC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAmD1B;AA2KD;;;;;;;;;;;GAWG;AACH,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAMlF"}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
* Routes:
|
|
7
7
|
* POST /api/companion/chat/sessions
|
|
8
8
|
* GET /api/companion/chat/sessions/:sessionId
|
|
9
|
+
* PATCH /api/companion/chat/sessions/:sessionId
|
|
9
10
|
* DELETE /api/companion/chat/sessions/:sessionId
|
|
10
11
|
* POST /api/companion/chat/sessions/:sessionId/messages
|
|
11
12
|
* GET /api/companion/chat/sessions/:sessionId/messages
|
|
@@ -38,6 +39,10 @@ export async function dispatchCompanionChatRoutes(req, context) {
|
|
|
38
39
|
if (!sub && req.method === 'GET') {
|
|
39
40
|
return handleGetSession(sessionId, context);
|
|
40
41
|
}
|
|
42
|
+
// PATCH /api/companion/chat/sessions/:sessionId
|
|
43
|
+
if (!sub && req.method === 'PATCH') {
|
|
44
|
+
return handleUpdateSession(req, sessionId, context);
|
|
45
|
+
}
|
|
41
46
|
// DELETE /api/companion/chat/sessions/:sessionId
|
|
42
47
|
if (!sub && req.method === 'DELETE') {
|
|
43
48
|
return handleDeleteSession(sessionId, context);
|
|
@@ -99,6 +104,77 @@ async function handleGetSession(sessionId, context) {
|
|
|
99
104
|
return Response.json({ session, messages });
|
|
100
105
|
}
|
|
101
106
|
// ---------------------------------------------------------------------------
|
|
107
|
+
// PATCH /api/companion/chat/sessions/:sessionId
|
|
108
|
+
// ---------------------------------------------------------------------------
|
|
109
|
+
function hasOwn(body, key) {
|
|
110
|
+
return Object.prototype.hasOwnProperty.call(body, key);
|
|
111
|
+
}
|
|
112
|
+
function readOptionalNonEmptyString(body, key) {
|
|
113
|
+
if (!hasOwn(body, key))
|
|
114
|
+
return undefined;
|
|
115
|
+
const value = body[key];
|
|
116
|
+
if (typeof value !== 'string' || value.trim().length === 0) {
|
|
117
|
+
return Response.json({ error: `${key} must be a non-empty string`, code: 'INVALID_INPUT' }, { status: 400 });
|
|
118
|
+
}
|
|
119
|
+
return value.trim();
|
|
120
|
+
}
|
|
121
|
+
function readOptionalSystemPrompt(body) {
|
|
122
|
+
if (!hasOwn(body, 'systemPrompt'))
|
|
123
|
+
return undefined;
|
|
124
|
+
const value = body['systemPrompt'];
|
|
125
|
+
if (value === null)
|
|
126
|
+
return null;
|
|
127
|
+
if (typeof value !== 'string') {
|
|
128
|
+
return Response.json({ error: 'systemPrompt must be a string or null', code: 'INVALID_INPUT' }, { status: 400 });
|
|
129
|
+
}
|
|
130
|
+
return value;
|
|
131
|
+
}
|
|
132
|
+
async function handleUpdateSession(req, sessionId, context) {
|
|
133
|
+
const bodyOrResponse = await context.parseJsonBody(req);
|
|
134
|
+
if (bodyOrResponse instanceof Response)
|
|
135
|
+
return bodyOrResponse;
|
|
136
|
+
const body = bodyOrResponse;
|
|
137
|
+
const input = {};
|
|
138
|
+
const title = readOptionalNonEmptyString(body, 'title');
|
|
139
|
+
if (title instanceof Response)
|
|
140
|
+
return title;
|
|
141
|
+
if (title !== undefined)
|
|
142
|
+
input.title = title;
|
|
143
|
+
const model = readOptionalNonEmptyString(body, 'model');
|
|
144
|
+
if (model instanceof Response)
|
|
145
|
+
return model;
|
|
146
|
+
if (model !== undefined) {
|
|
147
|
+
input.model = model;
|
|
148
|
+
if (!hasOwn(body, 'provider') && model.includes(':')) {
|
|
149
|
+
const providerId = model.split(':')[0];
|
|
150
|
+
if (providerId)
|
|
151
|
+
input.provider = providerId;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
const provider = readOptionalNonEmptyString(body, 'provider');
|
|
155
|
+
if (provider instanceof Response)
|
|
156
|
+
return provider;
|
|
157
|
+
if (provider !== undefined)
|
|
158
|
+
input.provider = provider;
|
|
159
|
+
const systemPrompt = readOptionalSystemPrompt(body);
|
|
160
|
+
if (systemPrompt instanceof Response)
|
|
161
|
+
return systemPrompt;
|
|
162
|
+
if (systemPrompt !== undefined)
|
|
163
|
+
input.systemPrompt = systemPrompt;
|
|
164
|
+
if (Object.keys(input).length === 0) {
|
|
165
|
+
return Response.json({ error: 'At least one of title, provider, model, or systemPrompt is required', code: 'INVALID_INPUT' }, { status: 400 });
|
|
166
|
+
}
|
|
167
|
+
try {
|
|
168
|
+
const session = context.chatManager.updateSession(sessionId, input);
|
|
169
|
+
return Response.json({ session });
|
|
170
|
+
}
|
|
171
|
+
catch (err) {
|
|
172
|
+
const e = err;
|
|
173
|
+
const status = e.status ?? 500;
|
|
174
|
+
return Response.json({ error: e.message ?? 'Internal error', code: e.code ?? 'INTERNAL_ERROR' }, { status });
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
// ---------------------------------------------------------------------------
|
|
102
178
|
// DELETE /api/companion/chat/sessions/:sessionId
|
|
103
179
|
// ---------------------------------------------------------------------------
|
|
104
180
|
async function handleDeleteSession(sessionId, context) {
|
|
@@ -42,10 +42,19 @@ export interface CreateCompanionChatSessionInput {
|
|
|
42
42
|
readonly provider?: string;
|
|
43
43
|
readonly systemPrompt?: string;
|
|
44
44
|
}
|
|
45
|
+
export interface UpdateCompanionChatSessionInput {
|
|
46
|
+
readonly title?: string;
|
|
47
|
+
readonly model?: string;
|
|
48
|
+
readonly provider?: string;
|
|
49
|
+
readonly systemPrompt?: string | null;
|
|
50
|
+
}
|
|
45
51
|
export interface CreateCompanionChatSessionOutput {
|
|
46
52
|
readonly sessionId: string;
|
|
47
53
|
readonly createdAt: number;
|
|
48
54
|
}
|
|
55
|
+
export interface UpdateCompanionChatSessionOutput {
|
|
56
|
+
readonly session: CompanionChatSession;
|
|
57
|
+
}
|
|
49
58
|
export interface PostCompanionChatMessageInput {
|
|
50
59
|
readonly content: string;
|
|
51
60
|
readonly metadata?: Record<string, unknown>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"companion-chat-types.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/companion/companion-chat-types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"companion-chat-types.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/companion/companion-chat-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type { CompanionChatMessage, CompanionChatSession, CompanionChatSessionKind, CompanionChatSessionStatus, CompanionChatMessageRole, CompanionChatTurnEvent, CompanionChatTurnStartedEvent, CompanionChatTurnDeltaEvent, CompanionChatTurnToolCallEvent, CompanionChatTurnToolResultEvent, CompanionChatTurnCompletedEvent, CompanionChatTurnErrorEvent, CreateCompanionChatSessionInput, CreateCompanionChatSessionOutput, PostCompanionChatMessageInput, PostCompanionChatMessageOutput, GetCompanionChatSessionOutput, ConversationMessageEnvelope, } from './companion-chat-types.js';
|
|
1
|
+
export type { CompanionChatMessage, CompanionChatSession, CompanionChatSessionKind, CompanionChatSessionStatus, CompanionChatMessageRole, CompanionChatTurnEvent, CompanionChatTurnStartedEvent, CompanionChatTurnDeltaEvent, CompanionChatTurnToolCallEvent, CompanionChatTurnToolResultEvent, CompanionChatTurnCompletedEvent, CompanionChatTurnErrorEvent, CreateCompanionChatSessionInput, CreateCompanionChatSessionOutput, UpdateCompanionChatSessionInput, UpdateCompanionChatSessionOutput, PostCompanionChatMessageInput, PostCompanionChatMessageOutput, GetCompanionChatSessionOutput, ConversationMessageEnvelope, } from './companion-chat-types.js';
|
|
2
2
|
export type { CompanionLLMProvider, CompanionChatEventPublisher, CompanionChatManagerConfig, CompanionProviderMessage, CompanionProviderChunk, } from './companion-chat-manager.js';
|
|
3
3
|
export { CompanionChatManager } from './companion-chat-manager.js';
|
|
4
4
|
export { dispatchCompanionChatRoutes } from './companion-chat-routes.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/companion/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,oBAAoB,EACpB,oBAAoB,EACpB,wBAAwB,EACxB,0BAA0B,EAC1B,wBAAwB,EACxB,sBAAsB,EACtB,6BAA6B,EAC7B,2BAA2B,EAC3B,8BAA8B,EAC9B,gCAAgC,EAChC,+BAA+B,EAC/B,2BAA2B,EAC3B,+BAA+B,EAC/B,gCAAgC,EAChC,6BAA6B,EAC7B,8BAA8B,EAC9B,6BAA6B,EAC7B,2BAA2B,GAC5B,MAAM,2BAA2B,CAAC;AAEnC,YAAY,EACV,oBAAoB,EACpB,2BAA2B,EAC3B,0BAA0B,EAC1B,wBAAwB,EACxB,sBAAsB,GACvB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAEnE,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AACzE,YAAY,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAEjF,OAAO,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAC/F,YAAY,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAC5E,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,YAAY,EAAE,+BAA+B,EAAE,MAAM,kCAAkC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/companion/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,oBAAoB,EACpB,oBAAoB,EACpB,wBAAwB,EACxB,0BAA0B,EAC1B,wBAAwB,EACxB,sBAAsB,EACtB,6BAA6B,EAC7B,2BAA2B,EAC3B,8BAA8B,EAC9B,gCAAgC,EAChC,+BAA+B,EAC/B,2BAA2B,EAC3B,+BAA+B,EAC/B,gCAAgC,EAChC,+BAA+B,EAC/B,gCAAgC,EAChC,6BAA6B,EAC7B,8BAA8B,EAC9B,6BAA6B,EAC7B,2BAA2B,GAC5B,MAAM,2BAA2B,CAAC;AAEnC,YAAY,EACV,oBAAoB,EACpB,2BAA2B,EAC3B,0BAA0B,EAC1B,wBAAwB,EACxB,sBAAsB,GACvB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAEnE,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AACzE,YAAY,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAEjF,OAAO,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAC/F,YAAY,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAC5E,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,YAAY,EAAE,+BAA+B,EAAE,MAAM,kCAAkC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-domain-core.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/config/schema-domain-core.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAElE,eAAO,MAAM,kBAAkB
|
|
1
|
+
{"version":3,"file":"schema-domain-core.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/config/schema-domain-core.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAElE,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0H9B,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,uBAAuB,EA2Y3D,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,uBAAuB,EA+H3D,CAAC"}
|
|
@@ -74,6 +74,12 @@ export const coreConfigDefaults = {
|
|
|
74
74
|
operationalMessages: 'panel',
|
|
75
75
|
wrfcMessages: 'both',
|
|
76
76
|
},
|
|
77
|
+
tts: {
|
|
78
|
+
provider: 'elevenlabs',
|
|
79
|
+
voice: '',
|
|
80
|
+
llmProvider: '',
|
|
81
|
+
llmModel: '',
|
|
82
|
+
},
|
|
77
83
|
release: {
|
|
78
84
|
channel: 'stable',
|
|
79
85
|
},
|
|
@@ -465,6 +471,30 @@ export const coreHeadConfigSettings = [
|
|
|
465
471
|
description: 'Where operational system messages render by default: panel, conversation, or both',
|
|
466
472
|
enumValues: ['panel', 'conversation', 'both'],
|
|
467
473
|
},
|
|
474
|
+
{
|
|
475
|
+
key: 'tts.provider',
|
|
476
|
+
type: 'string',
|
|
477
|
+
default: 'elevenlabs',
|
|
478
|
+
description: 'Default TTS provider used by spoken-output clients when no provider is supplied on the request',
|
|
479
|
+
},
|
|
480
|
+
{
|
|
481
|
+
key: 'tts.voice',
|
|
482
|
+
type: 'string',
|
|
483
|
+
default: '',
|
|
484
|
+
description: 'Default TTS voice id used by spoken-output clients when no voice is supplied on the request',
|
|
485
|
+
},
|
|
486
|
+
{
|
|
487
|
+
key: 'tts.llmProvider',
|
|
488
|
+
type: 'string',
|
|
489
|
+
default: '',
|
|
490
|
+
description: 'Optional LLM provider override for spoken-output turns; empty means use the active chat provider',
|
|
491
|
+
},
|
|
492
|
+
{
|
|
493
|
+
key: 'tts.llmModel',
|
|
494
|
+
type: 'string',
|
|
495
|
+
default: '',
|
|
496
|
+
description: 'Optional LLM model override for spoken-output turns; empty means use the active chat model',
|
|
497
|
+
},
|
|
468
498
|
{
|
|
469
499
|
key: 'ui.operationalMessages',
|
|
470
500
|
type: 'enum',
|
|
@@ -8,6 +8,25 @@ export declare const runtimeConfigDefaults: {
|
|
|
8
8
|
maxListeners: number;
|
|
9
9
|
};
|
|
10
10
|
};
|
|
11
|
+
batch: {
|
|
12
|
+
mode: string;
|
|
13
|
+
fallback: string;
|
|
14
|
+
queueBackend: string;
|
|
15
|
+
tickIntervalMs: number;
|
|
16
|
+
maxDelayMs: number;
|
|
17
|
+
maxJobsPerProviderBatch: number;
|
|
18
|
+
maxQueuePayloadBytes: number;
|
|
19
|
+
maxQueueMessagesPerDay: number;
|
|
20
|
+
};
|
|
21
|
+
cloudflare: {
|
|
22
|
+
enabled: boolean;
|
|
23
|
+
freeTierMode: boolean;
|
|
24
|
+
workerBaseUrl: string;
|
|
25
|
+
workerTokenRef: string;
|
|
26
|
+
queueName: string;
|
|
27
|
+
deadLetterQueueName: string;
|
|
28
|
+
maxQueueOpsPerDay: number;
|
|
29
|
+
};
|
|
11
30
|
telemetry: {
|
|
12
31
|
includeRawPrompts: boolean;
|
|
13
32
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-domain-runtime.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/config/schema-domain-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAElE,eAAO,MAAM,qBAAqB
|
|
1
|
+
{"version":3,"file":"schema-domain-runtime.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/config/schema-domain-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAElE,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmGjC,CAAC;AAEF,eAAO,MAAM,4BAA4B,EAAE,uBAAuB,EAyMjE,CAAC;AAEF,eAAO,MAAM,8BAA8B,EAAE,uBAAuB,EA8NnE,CAAC"}
|