@happyvertical/smrt-chat 0.55.9 → 0.55.10
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/AGENTS.md +25 -14
- package/README.md +12 -0
- package/agents/dev-workbench.md +69 -0
- package/agents/helper-preferences.md +65 -0
- package/agents/overview-tools.md +172 -0
- package/agents/token-streaming.md +3 -2
- package/dist/chunks/{ChatService-C9UxuJaw.js → ChatService-CFaaDHyU.js} +2 -2
- package/dist/chunks/{ChatService-C9UxuJaw.js.map → ChatService-CFaaDHyU.js.map} +1 -1
- package/dist/chunks/chat-stream-DN6Tw-Xu.js +2027 -0
- package/dist/chunks/chat-stream-DN6Tw-Xu.js.map +1 -0
- package/dist/dev-assistant-transport.d.ts +5 -0
- package/dist/dev-assistant-transport.d.ts.map +1 -0
- package/dist/dev-character-persistence-client.d.ts +24 -0
- package/dist/dev-character-persistence-client.d.ts.map +1 -0
- package/dist/dev-helper-client.d.ts +4 -0
- package/dist/dev-helper-client.d.ts.map +1 -0
- package/dist/dev-helper-server.d.ts +18 -0
- package/dist/dev-helper-server.d.ts.map +1 -0
- package/dist/helper-preferences-service.d.ts +22 -0
- package/dist/helper-preferences-service.d.ts.map +1 -0
- package/dist/helper-preferences.d.ts +84 -0
- package/dist/helper-preferences.d.ts.map +1 -0
- package/dist/helper-preferences.js +32 -0
- package/dist/helper-preferences.js.map +1 -0
- package/dist/helper-profile-store.d.ts +27 -0
- package/dist/helper-profile-store.d.ts.map +1 -0
- package/dist/index.d.ts +5 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +683 -5
- package/dist/index.js.map +1 -1
- package/dist/internal/agent-runtime.js +1 -1
- package/dist/manifest.json +122 -3
- package/dist/overview-tools.d.ts +221 -0
- package/dist/overview-tools.d.ts.map +1 -0
- package/dist/playground.d.ts +1 -1
- package/dist/playground.d.ts.map +1 -1
- package/dist/playground.js +99 -88
- package/dist/playground.js.map +1 -1
- package/dist/recipes.d.ts +81 -0
- package/dist/recipes.d.ts.map +1 -1
- package/dist/routes/api/dev-character-conversation/protocol.d.ts +33 -0
- package/dist/routes/api/dev-character-conversation/protocol.d.ts.map +1 -0
- package/dist/routes/api/dev-character-persistence/config.d.ts +24 -0
- package/dist/routes/api/dev-character-persistence/config.d.ts.map +1 -0
- package/dist/scripts/provision-dev-character-persistence.d.ts +3 -0
- package/dist/scripts/provision-dev-character-persistence.d.ts.map +1 -0
- package/dist/smrt-knowledge.json +144 -11
- package/dist/svelte/components/assistant/AssistantDock.svelte +58 -2
- package/dist/svelte/components/assistant/AssistantDock.svelte.d.ts +9 -0
- package/dist/svelte/components/assistant/AssistantDock.svelte.d.ts.map +1 -1
- package/dist/svelte/components/assistant/FloatingAssistant.svelte +309 -0
- package/dist/svelte/components/assistant/FloatingAssistant.svelte.d.ts +27 -0
- package/dist/svelte/components/assistant/FloatingAssistant.svelte.d.ts.map +1 -0
- package/dist/svelte/components/assistant/captions/CaptionOverlay.svelte +105 -0
- package/dist/svelte/components/assistant/captions/CaptionOverlay.svelte.d.ts +11 -0
- package/dist/svelte/components/assistant/captions/CaptionOverlay.svelte.d.ts.map +1 -0
- package/dist/svelte/components/assistant/captions/HeardCaptions.svelte +65 -0
- package/dist/svelte/components/assistant/captions/HeardCaptions.svelte.d.ts +19 -0
- package/dist/svelte/components/assistant/captions/HeardCaptions.svelte.d.ts.map +1 -0
- package/dist/svelte/components/assistant/captions/SpokenCaptions.svelte +65 -0
- package/dist/svelte/components/assistant/captions/SpokenCaptions.svelte.d.ts +21 -0
- package/dist/svelte/components/assistant/captions/SpokenCaptions.svelte.d.ts.map +1 -0
- package/dist/svelte/components/assistant/captions/caption-overlay-context.d.ts +3 -0
- package/dist/svelte/components/assistant/captions/caption-overlay-context.d.ts.map +1 -0
- package/dist/svelte/components/assistant/captions/caption-overlay-context.js +2 -0
- package/dist/svelte/components/assistant/captions/caption-state.svelte.d.ts +71 -0
- package/dist/svelte/components/assistant/captions/caption-state.svelte.d.ts.map +1 -0
- package/dist/svelte/components/assistant/captions/caption-state.svelte.js +225 -0
- package/dist/svelte/components/assistant/create-assistant-dock-controller.svelte.d.ts.map +1 -1
- package/dist/svelte/components/assistant/create-assistant-dock-controller.svelte.js +3 -1
- package/dist/svelte/components/helper/HelperControlPanel.svelte +401 -0
- package/dist/svelte/components/helper/HelperControlPanel.svelte.d.ts +23 -0
- package/dist/svelte/components/helper/HelperControlPanel.svelte.d.ts.map +1 -0
- package/dist/svelte/components/helper/registry.d.ts +53 -0
- package/dist/svelte/components/helper/registry.d.ts.map +1 -0
- package/dist/svelte/components/helper/registry.js +100 -0
- package/dist/svelte/i18n.d.ts +14 -0
- package/dist/svelte/i18n.d.ts.map +1 -1
- package/dist/svelte/i18n.js +17 -0
- package/dist/svelte/i18n.messages.d.ts +32 -0
- package/dist/svelte/i18n.messages.d.ts.map +1 -1
- package/dist/svelte/i18n.messages.js +33 -0
- package/dist/svelte/index.d.ts +7 -0
- package/dist/svelte/index.d.ts.map +1 -1
- package/dist/svelte/index.js +15 -5
- package/dist/svelte/playground.d.ts +94 -0
- package/dist/svelte/playground.d.ts.map +1 -1
- package/dist/svelte/playground.js +16 -5
- package/dist/sveltekit.js +2 -2
- package/package.json +27 -17
- package/dist/chunks/chat-stream-BBk_5_Ph.js +0 -2027
- package/dist/chunks/chat-stream-BBk_5_Ph.js.map +0 -1
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bounded, user-facing caption state for an assistant conversation (#3644).
|
|
3
|
+
*
|
|
4
|
+
* This module intentionally accepts only transcript and playback seams. It
|
|
5
|
+
* does not consume chat messages, model tokens, tool calls, or reasoning.
|
|
6
|
+
*/
|
|
7
|
+
import type { DictationOptions } from '@happyvertical/smrt-ui/forms';
|
|
8
|
+
/** The playback subset of smrt-svelte's TTSAdapter; structural on purpose so
|
|
9
|
+
* chat stays independent of the browser AI package. */
|
|
10
|
+
export interface CaptionTTSAdapter {
|
|
11
|
+
speak(text: string, options?: unknown): Promise<void>;
|
|
12
|
+
stop(): void;
|
|
13
|
+
onStart(callback: () => void): () => void;
|
|
14
|
+
onEnd(callback: () => void): () => void;
|
|
15
|
+
onError(callback: (error: Error) => void): () => void;
|
|
16
|
+
onBoundary(callback: (charIndex: number, charLength: number) => void): () => void;
|
|
17
|
+
}
|
|
18
|
+
/** One plain-text caption line. Svelte text interpolation escapes it. */
|
|
19
|
+
export interface CaptionLine {
|
|
20
|
+
id: string;
|
|
21
|
+
text: string;
|
|
22
|
+
speaker: 'heard' | 'spoken';
|
|
23
|
+
createdAt: number;
|
|
24
|
+
}
|
|
25
|
+
export interface CaptionChannelOptions {
|
|
26
|
+
/** Maximum completed lines retained in the visible history. Default 3. */
|
|
27
|
+
maxLines?: number;
|
|
28
|
+
/** Remove a completed line after this duration. Omit to retain it. */
|
|
29
|
+
ttlMs?: number;
|
|
30
|
+
now?: () => number;
|
|
31
|
+
}
|
|
32
|
+
export interface CaptionChannel {
|
|
33
|
+
readonly lines: CaptionLine[];
|
|
34
|
+
readonly interim: string;
|
|
35
|
+
setInterim(text: string): void;
|
|
36
|
+
addFinal(text: string): void;
|
|
37
|
+
clear(): void;
|
|
38
|
+
dispose(): void;
|
|
39
|
+
}
|
|
40
|
+
export declare function createCaptionChannel(speaker: CaptionLine['speaker'], options?: CaptionChannelOptions): CaptionChannel;
|
|
41
|
+
/**
|
|
42
|
+
* Pass these callbacks to the single host-owned Dictation instance. Doing so
|
|
43
|
+
* observes the same recogniser the composer uses; it never starts or stops a
|
|
44
|
+
* microphone and therefore cannot create a second recogniser.
|
|
45
|
+
*/
|
|
46
|
+
export declare function createHeardCaptionCallbacks(captions: CaptionChannel): Pick<DictationOptions, 'onText' | 'onInterim'>;
|
|
47
|
+
/** Host-driven playback events, including SDK realtime audio transports. */
|
|
48
|
+
export interface SpokenCaptionCallbacks {
|
|
49
|
+
/** Call only when audio starts playing, with its user-facing transcript. */
|
|
50
|
+
onStart(playbackId: string, text: string): void;
|
|
51
|
+
/** Character offsets refer to the original transcript supplied at start. */
|
|
52
|
+
onBoundary(playbackId: string, charIndex: number, charLength: number): void;
|
|
53
|
+
/** Call on completed playback, never merely on completed generation. */
|
|
54
|
+
onEnd(playbackId: string): void;
|
|
55
|
+
/** Cancel/error for this playback; late events are ignored. */
|
|
56
|
+
onCancel(playbackId: string): void;
|
|
57
|
+
dispose(): void;
|
|
58
|
+
}
|
|
59
|
+
/** Bridges existing playback signals without requiring a TTS adapter. */
|
|
60
|
+
export declare function createSpokenCaptionCallbacks(captions: CaptionChannel): SpokenCaptionCallbacks;
|
|
61
|
+
/**
|
|
62
|
+
* Couples one TTS adapter invocation to captions of audio it actually plays.
|
|
63
|
+
* Do not call this for model streaming text: `speak` is the playback boundary.
|
|
64
|
+
*/
|
|
65
|
+
export interface SpokenCaptionSession {
|
|
66
|
+
speak(text: string, options?: unknown): Promise<void>;
|
|
67
|
+
stop(): void;
|
|
68
|
+
dispose(): void;
|
|
69
|
+
}
|
|
70
|
+
export declare function createSpokenCaptionSession(adapter: CaptionTTSAdapter, captions: CaptionChannel): SpokenCaptionSession;
|
|
71
|
+
//# sourceMappingURL=caption-state.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"caption-state.svelte.d.ts","sourceRoot":"","sources":["../../../../../src/svelte/components/assistant/captions/caption-state.svelte.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAErE;uDACuD;AACvD,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,IAAI,IAAI,IAAI,CAAC;IACb,OAAO,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;IAC1C,KAAK,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;IACxC,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IACtD,UAAU,CACR,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,IAAI,GACxD,MAAM,IAAI,CAAC;CACf;AAED,yEAAyE;AACzE,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,GAAG,QAAQ,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,qBAAqB;IACpC,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sEAAsE;IACtE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,KAAK,IAAI,IAAI,CAAC;IACd,OAAO,IAAI,IAAI,CAAC;CACjB;AAkBD,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,WAAW,CAAC,SAAS,CAAC,EAC/B,OAAO,GAAE,qBAA0B,GAClC,cAAc,CAEhB;AAuED;;;;GAIG;AACH,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,cAAc,GACvB,IAAI,CAAC,gBAAgB,EAAE,QAAQ,GAAG,WAAW,CAAC,CAKhD;AAED,4EAA4E;AAC5E,MAAM,WAAW,sBAAsB;IACrC,4EAA4E;IAC5E,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAChD,4EAA4E;IAC5E,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5E,wEAAwE;IACxE,KAAK,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,+DAA+D;IAC/D,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,yEAAyE;AACzE,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,cAAc,GACvB,sBAAsB,CAqCxB;AAED;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,IAAI,IAAI,IAAI,CAAC;IACb,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,iBAAiB,EAC1B,QAAQ,EAAE,cAAc,GACvB,oBAAoB,CAsFtB"}
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
const MAX_CAPTION_TEXT = 2_000;
|
|
2
|
+
function captionText(value) {
|
|
3
|
+
// Keep captions one visible line of ordinary text. This also prevents
|
|
4
|
+
// terminal/control characters from becoming part of an accessibility name.
|
|
5
|
+
return Array.from(value, (character) => character.charCodeAt(0) < 32 || character.charCodeAt(0) === 127
|
|
6
|
+
? ' '
|
|
7
|
+
: character)
|
|
8
|
+
.join('')
|
|
9
|
+
.replace(/\s+/g, ' ')
|
|
10
|
+
.trim()
|
|
11
|
+
.slice(0, MAX_CAPTION_TEXT);
|
|
12
|
+
}
|
|
13
|
+
export function createCaptionChannel(speaker, options = {}) {
|
|
14
|
+
return new CaptionChannelState(speaker, options);
|
|
15
|
+
}
|
|
16
|
+
class CaptionChannelState {
|
|
17
|
+
lines = $state([]);
|
|
18
|
+
interim = $state('');
|
|
19
|
+
#lineSequence = 0;
|
|
20
|
+
#expiry = new Map();
|
|
21
|
+
#maxLines;
|
|
22
|
+
#now;
|
|
23
|
+
#speaker;
|
|
24
|
+
#options;
|
|
25
|
+
constructor(speaker, options) {
|
|
26
|
+
this.#speaker = speaker;
|
|
27
|
+
this.#options = options;
|
|
28
|
+
this.#maxLines = Math.max(1, Math.floor(options.maxLines ?? 3));
|
|
29
|
+
this.#now = options.now ?? Date.now;
|
|
30
|
+
}
|
|
31
|
+
setInterim(value) {
|
|
32
|
+
this.interim = captionText(value);
|
|
33
|
+
}
|
|
34
|
+
addFinal(value) {
|
|
35
|
+
const text = captionText(value);
|
|
36
|
+
this.interim = '';
|
|
37
|
+
if (!text)
|
|
38
|
+
return;
|
|
39
|
+
const id = `${this.#speaker}-${++this.#lineSequence}`;
|
|
40
|
+
this.lines = [
|
|
41
|
+
...this.lines,
|
|
42
|
+
{
|
|
43
|
+
id,
|
|
44
|
+
text,
|
|
45
|
+
speaker: this.#speaker,
|
|
46
|
+
createdAt: this.#now(),
|
|
47
|
+
},
|
|
48
|
+
].slice(-this.#maxLines);
|
|
49
|
+
// Eviction retires the line's deadline too, keeping timers bounded by
|
|
50
|
+
// the retained history rather than by the lifetime of a conversation.
|
|
51
|
+
const retained = new Set(this.lines.map((line) => line.id));
|
|
52
|
+
for (const [expiredId, timer] of this.#expiry) {
|
|
53
|
+
if (!retained.has(expiredId)) {
|
|
54
|
+
clearTimeout(timer);
|
|
55
|
+
this.#expiry.delete(expiredId);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
if (this.#options.ttlMs !== undefined)
|
|
59
|
+
this.#scheduleExpiry(id);
|
|
60
|
+
}
|
|
61
|
+
clear() {
|
|
62
|
+
this.interim = '';
|
|
63
|
+
this.lines = [];
|
|
64
|
+
for (const timer of this.#expiry.values())
|
|
65
|
+
clearTimeout(timer);
|
|
66
|
+
this.#expiry.clear();
|
|
67
|
+
}
|
|
68
|
+
dispose() {
|
|
69
|
+
this.clear();
|
|
70
|
+
}
|
|
71
|
+
#scheduleExpiry(id) {
|
|
72
|
+
const timer = setTimeout(() => {
|
|
73
|
+
// A cancelled callback may already be queued. It must not affect a
|
|
74
|
+
// cleared/reused channel or any line created after that cancellation.
|
|
75
|
+
if (this.#expiry.get(id) !== timer)
|
|
76
|
+
return;
|
|
77
|
+
this.#expiry.delete(id);
|
|
78
|
+
this.lines = this.lines.filter((line) => line.id !== id);
|
|
79
|
+
}, Math.max(0, this.#options.ttlMs ?? 0));
|
|
80
|
+
this.#expiry.set(id, timer);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Pass these callbacks to the single host-owned Dictation instance. Doing so
|
|
85
|
+
* observes the same recogniser the composer uses; it never starts or stops a
|
|
86
|
+
* microphone and therefore cannot create a second recogniser.
|
|
87
|
+
*/
|
|
88
|
+
export function createHeardCaptionCallbacks(captions) {
|
|
89
|
+
return {
|
|
90
|
+
onText: (text) => captions.addFinal(text),
|
|
91
|
+
onInterim: (text) => captions.setInterim(text),
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
/** Bridges existing playback signals without requiring a TTS adapter. */
|
|
95
|
+
export function createSpokenCaptionCallbacks(captions) {
|
|
96
|
+
let current = null;
|
|
97
|
+
let disposed = false;
|
|
98
|
+
return {
|
|
99
|
+
onStart(id, text) {
|
|
100
|
+
if (disposed)
|
|
101
|
+
return;
|
|
102
|
+
current = { id, text };
|
|
103
|
+
captions.setInterim(text);
|
|
104
|
+
},
|
|
105
|
+
onBoundary(id, index, length) {
|
|
106
|
+
if (disposed ||
|
|
107
|
+
current?.id !== id ||
|
|
108
|
+
!Number.isFinite(index) ||
|
|
109
|
+
!Number.isFinite(length) ||
|
|
110
|
+
index < 0 ||
|
|
111
|
+
length < 0)
|
|
112
|
+
return;
|
|
113
|
+
captions.setInterim(current.text.slice(0, index + length));
|
|
114
|
+
},
|
|
115
|
+
onEnd(id) {
|
|
116
|
+
if (disposed || current?.id !== id)
|
|
117
|
+
return;
|
|
118
|
+
captions.addFinal(current.text);
|
|
119
|
+
current = null;
|
|
120
|
+
},
|
|
121
|
+
onCancel(id) {
|
|
122
|
+
if (disposed || current?.id !== id)
|
|
123
|
+
return;
|
|
124
|
+
captions.setInterim('');
|
|
125
|
+
current = null;
|
|
126
|
+
},
|
|
127
|
+
dispose() {
|
|
128
|
+
disposed = true;
|
|
129
|
+
current = null;
|
|
130
|
+
captions.setInterim('');
|
|
131
|
+
},
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
export function createSpokenCaptionSession(adapter, captions) {
|
|
135
|
+
let generation = 0;
|
|
136
|
+
let disposed = false;
|
|
137
|
+
let pending = null;
|
|
138
|
+
let remove = [];
|
|
139
|
+
function detach() {
|
|
140
|
+
for (const unsubscribe of remove)
|
|
141
|
+
unsubscribe();
|
|
142
|
+
remove = [];
|
|
143
|
+
}
|
|
144
|
+
function stop() {
|
|
145
|
+
generation++;
|
|
146
|
+
detach();
|
|
147
|
+
captions.setInterim('');
|
|
148
|
+
adapter.stop();
|
|
149
|
+
}
|
|
150
|
+
return {
|
|
151
|
+
async speak(text, options) {
|
|
152
|
+
if (disposed || !captionText(text))
|
|
153
|
+
return;
|
|
154
|
+
// TTS events have no utterance id. Invalidate old listener closures,
|
|
155
|
+
// cancel playback, and wait for its completion promise before attaching
|
|
156
|
+
// the next utterance. A host must dedicate this adapter to this session.
|
|
157
|
+
const previous = pending;
|
|
158
|
+
stop();
|
|
159
|
+
const current = generation;
|
|
160
|
+
if (previous)
|
|
161
|
+
await previous.catch(() => undefined);
|
|
162
|
+
if (disposed || current !== generation)
|
|
163
|
+
return;
|
|
164
|
+
let started = false;
|
|
165
|
+
const active = () => !disposed && current === generation;
|
|
166
|
+
remove = [
|
|
167
|
+
adapter.onStart(() => {
|
|
168
|
+
if (active()) {
|
|
169
|
+
started = true;
|
|
170
|
+
captions.setInterim(text);
|
|
171
|
+
}
|
|
172
|
+
}),
|
|
173
|
+
adapter.onBoundary((charIndex, charLength) => {
|
|
174
|
+
if (!active() || !started)
|
|
175
|
+
return;
|
|
176
|
+
if (!Number.isFinite(charIndex) ||
|
|
177
|
+
!Number.isFinite(charLength) ||
|
|
178
|
+
charIndex < 0 ||
|
|
179
|
+
charLength < 0)
|
|
180
|
+
return;
|
|
181
|
+
captions.setInterim(text.slice(0, charIndex + charLength));
|
|
182
|
+
}),
|
|
183
|
+
adapter.onEnd(() => {
|
|
184
|
+
if (!active() || !started)
|
|
185
|
+
return;
|
|
186
|
+
captions.addFinal(text);
|
|
187
|
+
generation++;
|
|
188
|
+
detach();
|
|
189
|
+
}),
|
|
190
|
+
adapter.onError(() => {
|
|
191
|
+
if (!active())
|
|
192
|
+
return;
|
|
193
|
+
captions.setInterim('');
|
|
194
|
+
generation++;
|
|
195
|
+
detach();
|
|
196
|
+
}),
|
|
197
|
+
];
|
|
198
|
+
let playback = null;
|
|
199
|
+
try {
|
|
200
|
+
// Preserve the exact playback string so boundary indices still refer
|
|
201
|
+
// to what the adapter is speaking. Normalize only displayed text.
|
|
202
|
+
playback = adapter.speak(text, options);
|
|
203
|
+
pending = playback;
|
|
204
|
+
await playback;
|
|
205
|
+
}
|
|
206
|
+
finally {
|
|
207
|
+
if (pending === playback)
|
|
208
|
+
pending = null;
|
|
209
|
+
if (active()) {
|
|
210
|
+
captions.setInterim('');
|
|
211
|
+
generation++;
|
|
212
|
+
detach();
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
},
|
|
216
|
+
stop,
|
|
217
|
+
dispose() {
|
|
218
|
+
if (disposed)
|
|
219
|
+
return;
|
|
220
|
+
disposed = true;
|
|
221
|
+
stop();
|
|
222
|
+
captions.dispose();
|
|
223
|
+
},
|
|
224
|
+
};
|
|
225
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-assistant-dock-controller.svelte.d.ts","sourceRoot":"","sources":["../../../../src/svelte/components/assistant/create-assistant-dock-controller.svelte.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"create-assistant-dock-controller.svelte.d.ts","sourceRoot":"","sources":["../../../../src/svelte/components/assistant/create-assistant-dock-controller.svelte.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,OAAO,EACL,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,EAC5B,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EAGzB,MAAM,qCAAqC,CAAC;AAG7C,OAAO,KAAK,EAGV,eAAe,EACf,iBAAiB,EAClB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,6BAA6B,EAEnC,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EACV,sBAAsB,EACtB,gBAAgB,EAEhB,sBAAsB,EACtB,kBAAkB,EAElB,WAAW,EACZ,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,yBAAyB,EAC9B,KAAK,yBAAyB,EAC9B,KAAK,oBAAoB,EAG1B,MAAM,mBAAmB,CAAC;AAE3B,MAAM,MAAM,0BAA0B,GAClC,SAAS,GACT,YAAY,GACZ,OAAO,GACP,QAAQ,CAAC;AAEb,MAAM,WAAW,oBAAoB;IACnC,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,0BAA0B,CAAC;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,sBAAsB,EAAE,CAAC;CACxC;AAED,sEAAsE;AACtE,MAAM,WAAW,qBAAqB;IACpC,OAAO,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAC;IAC7E;;;;uEAImE;IACnE,KAAK,CACH,OAAO,EAAE,wBAAwB,EACjC,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,uBAAuB,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,wBAAwB,CAAC;IAClC,aAAa,CAAC,EAAE,uBAAuB,CAAC;IACxC,WAAW,CAAC,EAAE,uBAAuB,CAAC;IACtC,MAAM,EAAE,YAAY,GAAG,WAAW,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,CAAC;IACvE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;sEAGkE;IAClE,cAAc,EAAE,MAAM,CAAC;IACvB;;;;;;;;;uDASmD;IACnD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;;;;;;;iEAU6D;IAC7D,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;gCAKgC;AAChC,eAAO,MAAM,wCAAwC,EAAE,SAAS,MAAM,EACP,CAAC;AAEhE;;;;;;;;;;oBAUoB;AACpB,MAAM,MAAM,sBAAsB,GAC9B;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,uBAAuB,CAAA;CAAE,GACtD;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,EAAE,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,uBAAuB,CAAA;CAAE,GACrE;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,MAAM,CAAC,EAAE,uBAAuB,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAS5E;;;;;;;;;GASG;AACH,MAAM,MAAM,iBAAiB,GACzB,SAAS,GACT,QAAQ,GACR,SAAS,GACT,MAAM,GACN,QAAQ,GACR,WAAW,CAAC;AAEhB;;;;;;;;GAQG;AACH,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,CAAC;IACnD,yCAAyC;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,+DAA+D;IAC/D,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,uBAAuB;AACvB,MAAM,MAAM,sBAAsB,GAC9B,WAAW,GACX,QAAQ,GACR,iBAAiB,GACjB,MAAM,GACN,OAAO,CAAC;AAEZ,MAAM,WAAW,YAAY;IAC3B,oCAAoC;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,0EAA0E;IAC1E,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,iBAAiB,CAAC;IACzB,qEAAqE;IACrE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,oDAAoD;IACpD,SAAS,EAAE,MAAM,CAAC;IAClB;+DAC2D;IAC3D,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACvC,aAAa,EAAE,sBAAsB,GAAG,IAAI,CAAC;IAC7C,wCAAwC;IACxC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,kEAAkE;IAClE,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;IACtC,6DAA6D;IAC7D,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,8BAA8B;IAC7C,SAAS,EAAE,kBAAkB,CAAC;IAC9B,QAAQ,EAAE,mBAAmB,CAAC;IAC9B;;;;;6BAKyB;IACzB,QAAQ,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACjC,YAAY,CAAC,EAAE,qBAAqB,CAAC;IACrC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,qBAAqB,CAAC,EAAE,MAAM,MAAM,CAAC;IACrC;4CACwC;IACxC,oBAAoB,CAAC,EAAE,MAAM,MAAM,CAAC;IACpC,8DAA8D;IAC9D,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,iFAAiF;IACjF,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,gFAAgF;IAChF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,wEAAwE;IACxE,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC;IACxB;;;;;;2EAMuE;IACvE,eAAe,CAAC,EAAE,CAChB,OAAO,EAAE,wBAAwB,EACjC,MAAM,EAAE,uBAAuB,KAC5B,IAAI,CAAC;IACV;;;;;;;;;;;;;2EAauE;IACvE,eAAe,CAAC,EAAE,CAChB,OAAO,EAAE,wBAAwB,EACjC,OAAO,EAAE,sBAAsB,KAC5B,IAAI,CAAC;IACV;uCACmC;IACnC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;eAIW;IACX,SAAS,CAAC,EAAE,yBAAyB,CAAC;IACtC;mDAC+C;IAC/C,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,mBAAmB,KAAK,yBAAyB,CAAC;IAC5E,gDAAgD;IAChD,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,CAAC;IAC7C;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACpC,wEAAwE;IACxE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,mBAAmB,KAAK,OAAO,CAAC;IAC1D;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wDAAwD;IACxD,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,YAAY,GAAG,IAAI,KAAK,IAAI,CAAC;IAC3C;;;;OAIG;IACH,aAAa,CAAC,EAAE,6BAA6B,CAAC;CAC/C;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,OAAO,EAAE,sBAAsB,EAAE,CAAC;IAC3C,wEAAwE;IACxE,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IACtC,QAAQ,CAAC,YAAY,EAAE,oBAAoB,EAAE,CAAC;IAC9C,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,EAAE,CAAC;IACzC,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;IACpD,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC;IAC/B,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3C;;;;uBAImB;IACnB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B;;;4DAGwD;IACxD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB;;qDAEiD;IACjD,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B;;;+EAG2E;IAC3E,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,8DAA8D;IAC9D,QAAQ,CAAC,KAAK,EAAE,iBAAiB,EAAE,CAAC;IACpC;kCAC8B;IAC9B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,oEAAoE;IACpE,QAAQ,CAAC,YAAY,EAAE,oBAAoB,EAAE,CAAC;IAC9C,wEAAwE;IACxE,QAAQ,CAAC,OAAO,EAAE,kBAAkB,EAAE,CAAC;IACvC,gEAAgE;IAChE,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7D,iFAAiF;IACjF,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9D,0EAA0E;IAC1E,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,iEAAiE;IACjE,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,oDAAoD;IACpD,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,4CAA4C;IAC5C,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,8EAA8E;IAC9E,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC;qEACiE;IACjE,MAAM,IAAI,IAAI,CAAC;IACf,wEAAwE;IACxE,QAAQ,CAAC,GAAG,EAAE,YAAY,GAAG,IAAI,CAAC;IAClC;yDACqD;IACrD,QAAQ,IAAI,IAAI,CAAC;IACjB,6BAA6B;IAC7B,WAAW,IAAI,IAAI,CAAC;IACpB;;;;OAIG;IACH,cAAc,IAAI,IAAI,CAAC;IACvB,4EAA4E;IAC5E,UAAU,IAAI,IAAI,CAAC;IACnB;;;;OAIG;IACH,WAAW,CAAC,IAAI,EAAE,iBAAiB,GAAG,MAAM,IAAI,CAAC;IACjD;;;;;8EAK0E;IAC1E,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IACvC,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IACpD,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAC7D,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,sBAAsB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7E,KAAK,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,aAAa,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChE;+EAC2E;IAC3E,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C;;iEAE6D;IAC7D,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,YAAY,IAAI,IAAI,CAAC;IACrB,WAAW,IAAI,IAAI,CAAC;IACpB;;;;;;2EAMuE;IACvE,YAAY,IAAI,IAAI,CAAC;IACrB;;;;;;gBAMY;IACZ,YAAY,IAAI,IAAI,CAAC;IACrB;;;;;;;;mCAQ+B;IAC/B,aAAa,IAAI,IAAI,CAAC;IACtB,OAAO,IAAI,IAAI,CAAC;CACjB;AA0BD,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,8BAA8B,GACtC,uBAAuB,CA+4DzB"}
|
|
@@ -634,7 +634,9 @@ export function createAssistantDockController(options) {
|
|
|
634
634
|
// earlier already-answered repeat of the same text (e.g. "yes") can
|
|
635
635
|
// never be mistaken for this send's own reply.
|
|
636
636
|
pendingSends = pendingSends.filter((p) => {
|
|
637
|
-
|
|
637
|
+
// An unresolved transport call owns its completion. Historical text
|
|
638
|
+
// matches cannot acknowledge it, even when the person repeats a turn.
|
|
639
|
+
if (p.status === 'sending' || p.threadId !== threadId)
|
|
638
640
|
return true;
|
|
639
641
|
const byId = p.clientRequestId
|
|
640
642
|
? messages.findIndex((m) => m.role === 'user' && m.clientRequestId === p.clientRequestId)
|