@holostaff/sdk 0.9.3 → 0.9.4
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/stage/anamFace.d.ts +12 -3
- package/dist/stage/anamFace.d.ts.map +1 -1
- package/dist/stage/anamFace.js +109 -41
- package/dist/stage/anamFace.js.map +1 -1
- package/dist/stage/index.d.ts.map +1 -1
- package/dist/stage/index.js +19 -2
- package/dist/stage/index.js.map +1 -1
- package/dist/stage/realtime.d.ts +2 -0
- package/dist/stage/realtime.d.ts.map +1 -1
- package/dist/stage/realtime.js +5 -0
- package/dist/stage/realtime.js.map +1 -1
- package/package.json +4 -2
package/dist/stage/anamFace.d.ts
CHANGED
|
@@ -8,10 +8,19 @@
|
|
|
8
8
|
* BYO-audio path is deleted). This is the de-Vue-ified port of tutorLM's
|
|
9
9
|
* anamSessionManager.
|
|
10
10
|
*
|
|
11
|
+
* Feed model (mirrors tutorLM's proven queue):
|
|
12
|
+
* - Sentences are QUEUED and spoken ONE AT A TIME.
|
|
13
|
+
* - Each sentence opens a FRESH talkStream (unique correlation id) and
|
|
14
|
+
* sends a single chunk with endOfSpeech=true. Reusing one stream for
|
|
15
|
+
* the whole turn makes Anam fall many turns behind ("pipeline stalled"
|
|
16
|
+
* / "throughput dropped") and become un-interruptible.
|
|
17
|
+
* - We pace the next sentence on a spoken-duration estimate so the queue
|
|
18
|
+
* stays short — which is what makes barge-in feel instant.
|
|
19
|
+
* - interrupt() clears the queue AND calls interruptPersona() so the
|
|
20
|
+
* avatar stops mid-utterance the moment the user speaks.
|
|
21
|
+
*
|
|
11
22
|
* @anam-ai/js-sdk is an OPTIONAL dependency, lazy-loaded only when a
|
|
12
|
-
* Stage opens (keeps the base SDK lean — like rrweb).
|
|
13
|
-
* variable so the base build doesn't require it installed; if it's
|
|
14
|
-
* absent, voice is gracefully unavailable.
|
|
23
|
+
* Stage opens (keeps the base SDK lean — like rrweb).
|
|
15
24
|
*/
|
|
16
25
|
export interface AnamFace {
|
|
17
26
|
/** Speak a sentence (the model's text → Anam TTS + lip-sync). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anamFace.d.ts","sourceRoot":"","sources":["../../src/stage/anamFace.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"anamFace.d.ts","sourceRoot":"","sources":["../../src/stage/anamFace.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,MAAM,WAAW,QAAQ;IACvB,iEAAiE;IACjE,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnC,kEAAkE;IAClE,SAAS,IAAI,IAAI,CAAA;IACjB,IAAI,IAAI,IAAI,CAAA;CACb;AAED;;;GAGG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE;IACxC,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,EAAE,gBAAgB,CAAA;IACzB,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,CAAA;CAC/B,GAAG,OAAO,CAAC,QAAQ,CAAC,CA6HpB"}
|
package/dist/stage/anamFace.js
CHANGED
|
@@ -8,10 +8,19 @@
|
|
|
8
8
|
* BYO-audio path is deleted). This is the de-Vue-ified port of tutorLM's
|
|
9
9
|
* anamSessionManager.
|
|
10
10
|
*
|
|
11
|
+
* Feed model (mirrors tutorLM's proven queue):
|
|
12
|
+
* - Sentences are QUEUED and spoken ONE AT A TIME.
|
|
13
|
+
* - Each sentence opens a FRESH talkStream (unique correlation id) and
|
|
14
|
+
* sends a single chunk with endOfSpeech=true. Reusing one stream for
|
|
15
|
+
* the whole turn makes Anam fall many turns behind ("pipeline stalled"
|
|
16
|
+
* / "throughput dropped") and become un-interruptible.
|
|
17
|
+
* - We pace the next sentence on a spoken-duration estimate so the queue
|
|
18
|
+
* stays short — which is what makes barge-in feel instant.
|
|
19
|
+
* - interrupt() clears the queue AND calls interruptPersona() so the
|
|
20
|
+
* avatar stops mid-utterance the moment the user speaks.
|
|
21
|
+
*
|
|
11
22
|
* @anam-ai/js-sdk is an OPTIONAL dependency, lazy-loaded only when a
|
|
12
|
-
* Stage opens (keeps the base SDK lean — like rrweb).
|
|
13
|
-
* variable so the base build doesn't require it installed; if it's
|
|
14
|
-
* absent, voice is gracefully unavailable.
|
|
23
|
+
* Stage opens (keeps the base SDK lean — like rrweb).
|
|
15
24
|
*/
|
|
16
25
|
/**
|
|
17
26
|
* Connect Anam to a <video> element and return the text sink. Anam owns
|
|
@@ -49,66 +58,111 @@ export async function startAnamFace(opts) {
|
|
|
49
58
|
catch { /* best-effort */ }
|
|
50
59
|
// Bind the avatar to the video element (API name varies by version).
|
|
51
60
|
const videoId = ensureId(opts.videoEl);
|
|
52
|
-
try {
|
|
53
|
-
console.log('[holostaff:anam] streamToVideoElement →', videoId, 'found?', !!document.getElementById(videoId));
|
|
54
|
-
}
|
|
55
|
-
catch { /* */ }
|
|
56
61
|
if (typeof client.streamToVideoElement === 'function') {
|
|
57
62
|
await client.streamToVideoElement(videoId);
|
|
58
63
|
}
|
|
59
64
|
else if (typeof client.startSession === 'function') {
|
|
60
65
|
await client.startSession();
|
|
61
66
|
}
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
let
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
67
|
+
// ── Sequential speak queue (tutorLM's pattern) ───────────────────────
|
|
68
|
+
const queue = [];
|
|
69
|
+
let pumping = false;
|
|
70
|
+
// Bumped on every interrupt/stop; the pump drops any work whose epoch
|
|
71
|
+
// is stale so a cancelled turn can't resume after barge-in.
|
|
72
|
+
let epoch = 0;
|
|
73
|
+
let activeStream = null;
|
|
74
|
+
const endActiveStream = async () => {
|
|
75
|
+
const s = activeStream;
|
|
76
|
+
activeStream = null;
|
|
77
|
+
if (s?.endMessage) {
|
|
78
|
+
try {
|
|
79
|
+
await s.endMessage();
|
|
80
|
+
}
|
|
81
|
+
catch { /* */ }
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
const pump = async () => {
|
|
85
|
+
if (pumping)
|
|
86
|
+
return;
|
|
87
|
+
pumping = true;
|
|
88
|
+
try {
|
|
89
|
+
while (queue.length) {
|
|
90
|
+
const myEpoch = epoch;
|
|
91
|
+
const text = queue.shift();
|
|
92
|
+
if (!text)
|
|
93
|
+
continue;
|
|
94
|
+
// Fresh stream per sentence — Anam closes a stream once the
|
|
95
|
+
// persona finishes; reusing it silently drops chunks.
|
|
96
|
+
await endActiveStream();
|
|
97
|
+
if (myEpoch !== epoch)
|
|
98
|
+
break;
|
|
99
|
+
let stream = null;
|
|
100
|
+
const correlationId = `hs-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 8)}`;
|
|
101
|
+
try {
|
|
102
|
+
if (typeof client.createTalkMessageStream === 'function') {
|
|
103
|
+
stream = client.createTalkMessageStream(correlationId);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
catch { /* */ }
|
|
107
|
+
if (!stream) {
|
|
108
|
+
// No streaming API — fall back to one-shot talk().
|
|
109
|
+
if (typeof client.talk === 'function') {
|
|
110
|
+
try {
|
|
111
|
+
await client.talk(text);
|
|
112
|
+
}
|
|
113
|
+
catch { /* */ }
|
|
114
|
+
}
|
|
115
|
+
continue;
|
|
116
|
+
}
|
|
117
|
+
activeStream = stream;
|
|
118
|
+
const chunk = text + ' ';
|
|
119
|
+
try {
|
|
120
|
+
// true = end of this utterance; Anam plays it, then closes.
|
|
121
|
+
if (stream.streamMessageChunk)
|
|
122
|
+
await stream.streamMessageChunk(chunk, true);
|
|
123
|
+
}
|
|
124
|
+
catch (err) {
|
|
125
|
+
opts.onError?.(err instanceof Error ? err : new Error(String(err)));
|
|
126
|
+
}
|
|
127
|
+
// Pace the next sentence on a spoken-duration estimate (~70ms/char,
|
|
128
|
+
// floor 1.2s) so the queue tracks playback instead of racing ahead.
|
|
129
|
+
// A short poll lets barge-in cut the wait the instant epoch changes.
|
|
130
|
+
await waitPaced(Math.max(1200, Math.ceil(chunk.length * 70)), () => myEpoch !== epoch);
|
|
131
|
+
if (myEpoch !== epoch)
|
|
132
|
+
break;
|
|
133
|
+
await endActiveStream();
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
finally {
|
|
137
|
+
pumping = false;
|
|
75
138
|
}
|
|
76
|
-
return stream;
|
|
77
139
|
};
|
|
78
140
|
return {
|
|
79
141
|
enqueueSentence(text) {
|
|
80
142
|
const t = text.trim();
|
|
81
143
|
if (!t)
|
|
82
144
|
return;
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
if (s?.streamMessageChunk)
|
|
86
|
-
s.streamMessageChunk(t, false);
|
|
87
|
-
else if (typeof client.talk === 'function')
|
|
88
|
-
void client.talk(t);
|
|
89
|
-
}
|
|
90
|
-
catch (err) {
|
|
91
|
-
opts.onError?.(err instanceof Error ? err : new Error(String(err)));
|
|
92
|
-
}
|
|
145
|
+
queue.push(t);
|
|
146
|
+
void pump();
|
|
93
147
|
},
|
|
94
148
|
interrupt() {
|
|
149
|
+
// Barge-in: drop everything queued and stop the avatar NOW.
|
|
150
|
+
epoch++;
|
|
151
|
+
queue.length = 0;
|
|
95
152
|
try {
|
|
96
|
-
|
|
97
|
-
// sentence starts a fresh turn (stale chunks are abandoned).
|
|
98
|
-
if (stream?.endMessage)
|
|
99
|
-
stream.endMessage();
|
|
100
|
-
else if (typeof client.interruptPersona === 'function')
|
|
101
|
-
client.interruptPersona();
|
|
153
|
+
client.interruptPersona?.();
|
|
102
154
|
}
|
|
103
|
-
catch { /*
|
|
104
|
-
|
|
155
|
+
catch { /* */ }
|
|
156
|
+
void endActiveStream();
|
|
105
157
|
},
|
|
106
158
|
stop() {
|
|
159
|
+
epoch++;
|
|
160
|
+
queue.length = 0;
|
|
107
161
|
try {
|
|
108
|
-
|
|
162
|
+
client.interruptPersona?.();
|
|
109
163
|
}
|
|
110
164
|
catch { /* */ }
|
|
111
|
-
|
|
165
|
+
void endActiveStream();
|
|
112
166
|
try {
|
|
113
167
|
if (typeof client.stopStreaming === 'function')
|
|
114
168
|
void client.stopStreaming();
|
|
@@ -119,6 +173,20 @@ export async function startAnamFace(opts) {
|
|
|
119
173
|
},
|
|
120
174
|
};
|
|
121
175
|
}
|
|
176
|
+
/** Resolve after `ms`, polling so a cancel (`cancelled()`) returns early. */
|
|
177
|
+
function waitPaced(ms, cancelled) {
|
|
178
|
+
return new Promise(resolve => {
|
|
179
|
+
const start = Date.now();
|
|
180
|
+
const tick = () => {
|
|
181
|
+
if (cancelled() || Date.now() - start >= ms) {
|
|
182
|
+
resolve();
|
|
183
|
+
return;
|
|
184
|
+
}
|
|
185
|
+
setTimeout(tick, 100);
|
|
186
|
+
};
|
|
187
|
+
tick();
|
|
188
|
+
});
|
|
189
|
+
}
|
|
122
190
|
function ensureId(el) {
|
|
123
191
|
if (!el.id)
|
|
124
192
|
el.id = `holostaff-anam-${Math.random().toString(36).slice(2, 9)}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anamFace.js","sourceRoot":"","sources":["../../src/stage/anamFace.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"anamFace.js","sourceRoot":"","sources":["../../src/stage/anamFace.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/stage/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAkB,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACtE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAC7C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAKzD,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,eAAe,CAAA;IACpB,YAAY,EAAE,MAAM,MAAM,CAAA;IAC1B,SAAS,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACxC,QAAQ,EAAE,eAAe,CAAA;IACzB,uEAAuE;IACvE,OAAO,EAAE,cAAc,GAAG,IAAI,CAAA;IAC9B,IAAI,EAAE,UAAU,CAAA;IAChB,iEAAiE;IACjE,wBAAwB,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAA;CACpD;AAED,MAAM,WAAW,SAAS;IACxB,mDAAmD;IACnD,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,IAAI,CAAC,EAAE,SAAS,GAAG,IAAI,CAAA;IAC5B,KAAK,IAAI,IAAI,CAAA;IACb,MAAM,IAAI,OAAO,CAAA;IACjB,OAAO,IAAI,IAAI,CAAA;CAChB;AAyBD,wBAAgB,UAAU,CAAC,IAAI,EAAE,SAAS,GAAG,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/stage/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAkB,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACtE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAC7C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAKzD,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,eAAe,CAAA;IACpB,YAAY,EAAE,MAAM,MAAM,CAAA;IAC1B,SAAS,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACxC,QAAQ,EAAE,eAAe,CAAA;IACzB,uEAAuE;IACvE,OAAO,EAAE,cAAc,GAAG,IAAI,CAAA;IAC9B,IAAI,EAAE,UAAU,CAAA;IAChB,iEAAiE;IACjE,wBAAwB,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAA;CACpD;AAED,MAAM,WAAW,SAAS;IACxB,mDAAmD;IACnD,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,IAAI,CAAC,EAAE,SAAS,GAAG,IAAI,CAAA;IAC5B,KAAK,IAAI,IAAI,CAAA;IACb,MAAM,IAAI,OAAO,CAAA;IACjB,OAAO,IAAI,IAAI,CAAA;CAChB;AAyBD,wBAAgB,UAAU,CAAC,IAAI,EAAE,SAAS,GAAG,YAAY,CA4JxD"}
|
package/dist/stage/index.js
CHANGED
|
@@ -36,6 +36,11 @@ export function startStage(deps) {
|
|
|
36
36
|
let realtime = null;
|
|
37
37
|
let micStream = null;
|
|
38
38
|
let sentenceBuf = '';
|
|
39
|
+
// Barge-in bookkeeping: the turn the user interrupted. Trailing deltas
|
|
40
|
+
// from a cancelled response share its turnId and must be dropped, or
|
|
41
|
+
// they'd refill the buffer and the avatar would resume the old answer.
|
|
42
|
+
let lastTurnId = '';
|
|
43
|
+
let mutedTurnId = null;
|
|
39
44
|
const reportErr = (err) => {
|
|
40
45
|
deps.cfg.onError?.(err, { method: 'STAGE', path: '(voice)' });
|
|
41
46
|
};
|
|
@@ -127,18 +132,30 @@ export function startStage(deps) {
|
|
|
127
132
|
? `The visitor tapped "Talk" on your suggestion: "${seed.intent}". Open the conversation on that.`
|
|
128
133
|
: undefined,
|
|
129
134
|
}, {
|
|
130
|
-
onTextDelta: (delta) => {
|
|
135
|
+
onTextDelta: (delta, turnId) => {
|
|
136
|
+
lastTurnId = turnId;
|
|
137
|
+
// Drop trailing deltas from a turn the user barged in on.
|
|
138
|
+
if (turnId === mutedTurnId)
|
|
139
|
+
return;
|
|
131
140
|
ui?.setState('speaking');
|
|
132
141
|
sentenceBuf += delta;
|
|
133
142
|
ui?.appendCaption(delta);
|
|
134
143
|
flushSentences(false);
|
|
135
144
|
},
|
|
136
|
-
onTurnDone: () => {
|
|
145
|
+
onTurnDone: (turnId) => {
|
|
146
|
+
if (turnId === mutedTurnId) {
|
|
147
|
+
mutedTurnId = null;
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
137
150
|
flushSentences(true);
|
|
138
151
|
ui?.setState('listening');
|
|
139
152
|
},
|
|
140
153
|
onUserSpeechStarted: () => {
|
|
154
|
+
// Barge-in: mute the in-flight turn, stop generation, stop the
|
|
155
|
+
// avatar, drop the half-formed sentence.
|
|
156
|
+
mutedTurnId = lastTurnId;
|
|
141
157
|
sentenceBuf = '';
|
|
158
|
+
realtime?.cancelResponse();
|
|
142
159
|
face?.interrupt();
|
|
143
160
|
ui?.setState('listening');
|
|
144
161
|
},
|
package/dist/stage/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/stage/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,cAAc,EAAwB,MAAM,iBAAiB,CAAA;AAItE,OAAO,EAAE,eAAe,EAA2C,MAAM,eAAe,CAAA;AACxF,OAAO,EAAE,aAAa,EAAiB,MAAM,eAAe,CAAA;AAC5D,OAAO,EAAE,YAAY,EAAgB,MAAM,SAAS,CAAA;AAoCpD,MAAM,YAAY,GAAiB;IACjC,IAAI,EAAE,SAAS;IACf,WAAW,EAAE,mGAAmG;IAChH,UAAU,EAAE;QACV,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,2CAA2C,EAAE;YACpF,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,sCAAsC,EAAE;SACjF;QACD,QAAQ,EAAE,CAAC,QAAQ,CAAC;KACrB;CACF,CAAA;AAED,MAAM,UAAU,UAAU,CAAC,IAAe;IACxC,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QAClC,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,CAAA;IACpF,CAAC;IAED,IAAI,IAAI,GAAG,KAAK,CAAA;IAChB,IAAI,EAAE,GAAmB,IAAI,CAAA;IAC7B,IAAI,IAAI,GAAoB,IAAI,CAAA;IAChC,IAAI,QAAQ,GAA2B,IAAI,CAAA;IAC3C,IAAI,SAAS,GAAuB,IAAI,CAAA;IACxC,IAAI,WAAW,GAAG,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/stage/index.ts"],"names":[],"mappings":"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"}
|
package/dist/stage/realtime.d.ts
CHANGED
|
@@ -44,6 +44,8 @@ export interface RealtimeCallbacks {
|
|
|
44
44
|
export interface RealtimeSession {
|
|
45
45
|
/** Return a tool result + ask the model to continue. */
|
|
46
46
|
sendToolResult(callId: string, output: unknown): void;
|
|
47
|
+
/** Barge-in: cancel the in-flight response so it stops emitting text. */
|
|
48
|
+
cancelResponse(): void;
|
|
47
49
|
close(): void;
|
|
48
50
|
}
|
|
49
51
|
export declare function connectRealtime(opts: RealtimeConnectOptions, cb: RealtimeCallbacks): Promise<RealtimeSession>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"realtime.d.ts","sourceRoot":"","sources":["../../src/stage/realtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACpC;AAED,MAAM,WAAW,sBAAsB;IACrC,YAAY,EAAE,MAAM,CAAA;IACpB,6CAA6C;IAC7C,WAAW,EAAE,MAAM,CAAA;IACnB,aAAa,EAAE,MAAM,CAAA;IACrB,yEAAyE;IACzE,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,KAAK,EAAE,YAAY,EAAE,CAAA;IACrB,SAAS,EAAE,WAAW,CAAA;IACtB;2DACuD;IACvD,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,2DAA2D;IAC3D,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IAChD,6DAA6D;IAC7D,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC,gEAAgE;IAChE,mBAAmB,IAAI,IAAI,CAAA;IAC3B,gCAAgC;IAChC,UAAU,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAA;IACvF,OAAO,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI,CAAA;CAC1B;AAED,MAAM,WAAW,eAAe;IAC9B,wDAAwD;IACxD,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI,CAAA;IACrD,KAAK,IAAI,IAAI,CAAA;CACd;AAED,wBAAsB,eAAe,CACnC,IAAI,EAAE,sBAAsB,EAC5B,EAAE,EAAE,iBAAiB,GACpB,OAAO,CAAC,eAAe,CAAC,
|
|
1
|
+
{"version":3,"file":"realtime.d.ts","sourceRoot":"","sources":["../../src/stage/realtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACpC;AAED,MAAM,WAAW,sBAAsB;IACrC,YAAY,EAAE,MAAM,CAAA;IACpB,6CAA6C;IAC7C,WAAW,EAAE,MAAM,CAAA;IACnB,aAAa,EAAE,MAAM,CAAA;IACrB,yEAAyE;IACzE,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,KAAK,EAAE,YAAY,EAAE,CAAA;IACrB,SAAS,EAAE,WAAW,CAAA;IACtB;2DACuD;IACvD,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,2DAA2D;IAC3D,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IAChD,6DAA6D;IAC7D,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC,gEAAgE;IAChE,mBAAmB,IAAI,IAAI,CAAA;IAC3B,gCAAgC;IAChC,UAAU,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAA;IACvF,OAAO,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI,CAAA;CAC1B;AAED,MAAM,WAAW,eAAe;IAC9B,wDAAwD;IACxD,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI,CAAA;IACrD,yEAAyE;IACzE,cAAc,IAAI,IAAI,CAAA;IACtB,KAAK,IAAI,IAAI,CAAA;CACd;AAED,wBAAsB,eAAe,CACnC,IAAI,EAAE,sBAAsB,EAC5B,EAAE,EAAE,iBAAiB,GACpB,OAAO,CAAC,eAAe,CAAC,CAwI1B"}
|
package/dist/stage/realtime.js
CHANGED
|
@@ -154,6 +154,11 @@ export async function connectRealtime(opts, cb) {
|
|
|
154
154
|
});
|
|
155
155
|
send({ type: 'response.create' });
|
|
156
156
|
},
|
|
157
|
+
cancelResponse() {
|
|
158
|
+
// Stop the current generation. Harmless if none is active (the
|
|
159
|
+
// server may emit a benign error event, which we swallow).
|
|
160
|
+
send({ type: 'response.cancel' });
|
|
161
|
+
},
|
|
157
162
|
close() {
|
|
158
163
|
try {
|
|
159
164
|
dc.close();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"realtime.js","sourceRoot":"","sources":["../../src/stage/realtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;
|
|
1
|
+
{"version":3,"file":"realtime.js","sourceRoot":"","sources":["../../src/stage/realtime.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@holostaff/sdk",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.4",
|
|
4
4
|
"description": "Holostaff SDK — lifetime identity, stage detection, custom signal probes, and the living-portrait presence layer (chip, note, Theater, voice Stage) for the Holostaff runtime.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"homepage": "https://docs.holostaff.ai",
|
|
@@ -46,6 +46,8 @@
|
|
|
46
46
|
"@anam-ai/js-sdk": ">=3"
|
|
47
47
|
},
|
|
48
48
|
"peerDependenciesMeta": {
|
|
49
|
-
"@anam-ai/js-sdk": {
|
|
49
|
+
"@anam-ai/js-sdk": {
|
|
50
|
+
"optional": true
|
|
51
|
+
}
|
|
50
52
|
}
|
|
51
53
|
}
|