@shogo-ai/voice 1.9.13 → 2.4.1
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/README.md +89 -0
- package/dist/{chunk-S3S2RNO6.js → chunk-BI6SL35K.js} +1 -184
- package/dist/chunk-CLF25CZC.js +987 -0
- package/dist/chunk-KMSL5PWK.js +540 -0
- package/dist/chunk-ME3SIZZU.js +581 -0
- package/dist/chunk-TQOBJMEK.js +17 -0
- package/dist/{chunk-T3T4EBWY.js → chunk-UH75UVM2.js} +6 -2
- package/dist/chunk-UW7VQ3S6.js +148 -0
- package/dist/chunk-XE4LLC7Z.js +1067 -0
- package/dist/chunk-ZAW6F3YT.js +172 -0
- package/dist/index.cjs +735 -25
- package/dist/index.d.cts +373 -3
- package/dist/index.d.ts +373 -3
- package/dist/index.js +59 -3
- package/dist/live/client.cjs +173 -0
- package/dist/live/client.d.cts +132 -0
- package/dist/live/client.d.ts +132 -0
- package/dist/live/client.js +9 -0
- package/dist/native/index.d.cts +5 -2
- package/dist/native/index.d.ts +5 -2
- package/dist/native/index.js +15 -11
- package/dist/{organicParticlesShaders-DIva0vBO.d.ts → organicParticlesShaders-seZq7jYX.d.cts} +1 -421
- package/dist/{organicParticlesShaders-DIva0vBO.d.cts → organicParticlesShaders-seZq7jYX.d.ts} +1 -421
- package/dist/particlesConfig-0YbdPOdY.d.cts +223 -0
- package/dist/particlesConfig-0YbdPOdY.d.ts +223 -0
- package/dist/react/conversation.cjs +789 -0
- package/dist/react/conversation.d.cts +134 -0
- package/dist/react/conversation.d.ts +134 -0
- package/dist/react/conversation.js +13 -0
- package/dist/react/index.cjs +374 -36
- package/dist/react/index.d.cts +10 -141
- package/dist/react/index.d.ts +10 -141
- package/dist/react/index.js +23 -770
- package/dist/react/visuals.cjs +1048 -0
- package/dist/react/visuals.d.cts +70 -0
- package/dist/react/visuals.d.ts +70 -0
- package/dist/react/visuals.js +10 -0
- package/dist/route/agent.cjs +1038 -85
- package/dist/route/agent.js +3 -3
- package/dist/route/audio-tags.cjs +1038 -85
- package/dist/route/audio-tags.js +3 -3
- package/dist/route/index.cjs +1042 -85
- package/dist/route/index.d.cts +19 -3
- package/dist/route/index.d.ts +19 -3
- package/dist/route/index.js +3 -3
- package/dist/route/music.cjs +1038 -85
- package/dist/route/music.js +3 -3
- package/dist/route/op.cjs +2118 -0
- package/dist/route/op.d.cts +43 -0
- package/dist/route/op.d.ts +43 -0
- package/dist/route/op.js +27 -0
- package/dist/route/signed-url.cjs +1038 -85
- package/dist/route/signed-url.js +3 -3
- package/dist/route/tts-preview.cjs +1038 -85
- package/dist/route/tts-preview.d.cts +6 -4
- package/dist/route/tts-preview.d.ts +6 -4
- package/dist/route/tts-preview.js +3 -3
- package/dist/server.cjs +1038 -85
- package/dist/server.d.cts +40 -8
- package/dist/server.d.ts +40 -8
- package/dist/server.js +2 -2
- package/dist/types-Bfhu-aQH.d.cts +199 -0
- package/dist/types-Bfhu-aQH.d.ts +199 -0
- package/dist/{types-W9y6eMj3.d.ts → types-CadjTXNH.d.cts} +193 -12
- package/dist/{types-W9y6eMj3.d.cts → types-CadjTXNH.d.ts} +193 -12
- package/package.json +21 -1
- package/dist/chunk-B4JC3DK2.js +0 -529
- package/dist/chunk-O362EJQR.js +0 -524
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
import {
|
|
2
|
+
stripAudioTags
|
|
3
|
+
} from "./chunk-Q3TJAJ54.js";
|
|
4
|
+
|
|
5
|
+
// src/shared/postJson.ts
|
|
6
|
+
function createPostJson({
|
|
7
|
+
authHeaders,
|
|
8
|
+
fetchCredentials
|
|
9
|
+
}) {
|
|
10
|
+
return async function postJson(path, body) {
|
|
11
|
+
return fetch(path, {
|
|
12
|
+
method: "POST",
|
|
13
|
+
headers: { "content-type": "application/json", ...authHeaders() },
|
|
14
|
+
credentials: fetchCredentials,
|
|
15
|
+
body: JSON.stringify(body)
|
|
16
|
+
});
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
// src/shared/memory.ts
|
|
21
|
+
function createMemoryAddTool({
|
|
22
|
+
postJson,
|
|
23
|
+
memoryAddPath
|
|
24
|
+
}) {
|
|
25
|
+
return async (params) => {
|
|
26
|
+
const fact = typeof params.fact === "string" ? params.fact : "";
|
|
27
|
+
if (!fact.trim()) return "Memory save failed: empty fact.";
|
|
28
|
+
try {
|
|
29
|
+
const res = await postJson(memoryAddPath, { fact });
|
|
30
|
+
if (!res.ok) return "Failed to save memory.";
|
|
31
|
+
return "Memory saved.";
|
|
32
|
+
} catch {
|
|
33
|
+
return "Memory save failed.";
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
function createMemoryContextInjector({
|
|
38
|
+
postJson,
|
|
39
|
+
memoryRetrievePath,
|
|
40
|
+
conversationRef,
|
|
41
|
+
enabled,
|
|
42
|
+
lastInjectedRef
|
|
43
|
+
}) {
|
|
44
|
+
return async function inject(userText) {
|
|
45
|
+
if (!enabled) return;
|
|
46
|
+
try {
|
|
47
|
+
const res = await postJson(memoryRetrievePath, { query: userText, limit: 4 });
|
|
48
|
+
if (!res.ok) return;
|
|
49
|
+
const data = await res.json();
|
|
50
|
+
const results = data.results ?? [];
|
|
51
|
+
if (!results.length) return;
|
|
52
|
+
const lines = results.map((r) => `- ${r.chunk.trim().replace(/\s+/g, " ").slice(0, 200)}`).join("\n");
|
|
53
|
+
if (lines === lastInjectedRef.current) return;
|
|
54
|
+
lastInjectedRef.current = lines;
|
|
55
|
+
const payload = `Relevant memory about this user:
|
|
56
|
+
${lines}`;
|
|
57
|
+
conversationRef.current?.sendContextualUpdate(payload);
|
|
58
|
+
} catch {
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
// src/shared/transcript.ts
|
|
64
|
+
function createTranscriptDisconnectHandler({
|
|
65
|
+
isRestartingRef,
|
|
66
|
+
weStartedSessionRef,
|
|
67
|
+
transcriptRef,
|
|
68
|
+
onTranscript,
|
|
69
|
+
transcriptIngestPath,
|
|
70
|
+
postJson
|
|
71
|
+
}) {
|
|
72
|
+
return function handleTranscriptOnDisconnect() {
|
|
73
|
+
if (isRestartingRef.current) {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
if (!weStartedSessionRef.current) {
|
|
77
|
+
transcriptRef.current = [];
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
weStartedSessionRef.current = false;
|
|
81
|
+
const transcript = transcriptRef.current.join("\n");
|
|
82
|
+
transcriptRef.current = [];
|
|
83
|
+
if (onTranscript) {
|
|
84
|
+
void onTranscript(transcript);
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
const trimmed = transcript.trim();
|
|
88
|
+
if (trimmed.length < 20) return;
|
|
89
|
+
void postJson(transcriptIngestPath, { transcript: trimmed }).catch(() => {
|
|
90
|
+
});
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
function appendTranscriptLine(msg, { transcriptRef, weStartedSessionRef }) {
|
|
94
|
+
if (!msg?.message || !msg?.source) return;
|
|
95
|
+
if (!weStartedSessionRef.current) return;
|
|
96
|
+
const speaker = msg.source === "user" ? "User" : "Agent";
|
|
97
|
+
const cleaned = msg.source === "user" ? msg.message : stripAudioTags(msg.message);
|
|
98
|
+
if (!cleaned) return;
|
|
99
|
+
transcriptRef.current.push(`${speaker}: ${cleaned}`);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
// src/shared/sessionPayload.ts
|
|
103
|
+
function sanitizeDynamicVariables(raw) {
|
|
104
|
+
if (raw == null) return {};
|
|
105
|
+
const out = {};
|
|
106
|
+
for (const [k, v] of Object.entries(raw)) {
|
|
107
|
+
if (v == null) continue;
|
|
108
|
+
out[k] = typeof v === "string" ? v : String(v);
|
|
109
|
+
}
|
|
110
|
+
return out;
|
|
111
|
+
}
|
|
112
|
+
function buildSessionPayload(opts) {
|
|
113
|
+
const dynamicVariables = {
|
|
114
|
+
...sanitizeDynamicVariables(opts.dynamicVariables),
|
|
115
|
+
character_name: opts.characterName,
|
|
116
|
+
user_context: opts.userContext
|
|
117
|
+
};
|
|
118
|
+
if (typeof opts.conversationId === "string" && opts.conversationId.length > 0) {
|
|
119
|
+
dynamicVariables.conversation_id = opts.conversationId;
|
|
120
|
+
}
|
|
121
|
+
const payload = {
|
|
122
|
+
signedUrl: opts.signedUrl,
|
|
123
|
+
dynamicVariables
|
|
124
|
+
};
|
|
125
|
+
const agentOverrides = {};
|
|
126
|
+
if (opts.suppressFirstMessage) {
|
|
127
|
+
agentOverrides.firstMessage = "";
|
|
128
|
+
}
|
|
129
|
+
if (typeof opts.agentPromptOverride === "string" && opts.agentPromptOverride.length > 0) {
|
|
130
|
+
agentOverrides.prompt = { prompt: opts.agentPromptOverride };
|
|
131
|
+
}
|
|
132
|
+
if (Object.keys(agentOverrides).length > 0) {
|
|
133
|
+
payload.overrides = { agent: agentOverrides };
|
|
134
|
+
}
|
|
135
|
+
return payload;
|
|
136
|
+
}
|
|
137
|
+
async function fetchSignedUrl({
|
|
138
|
+
path,
|
|
139
|
+
fetchCredentials,
|
|
140
|
+
authHeaders
|
|
141
|
+
}) {
|
|
142
|
+
const res = await fetch(path, {
|
|
143
|
+
credentials: fetchCredentials,
|
|
144
|
+
headers: authHeaders()
|
|
145
|
+
});
|
|
146
|
+
if (!res.ok) throw new Error(`Signed URL request failed: ${res.status}`);
|
|
147
|
+
return await res.json();
|
|
148
|
+
}
|
|
149
|
+
function withProjectQuery(signedUrlPath, params) {
|
|
150
|
+
const tail = [];
|
|
151
|
+
if (typeof params.projectId === "string" && params.projectId.length > 0) {
|
|
152
|
+
tail.push(`projectId=${encodeURIComponent(params.projectId)}`);
|
|
153
|
+
}
|
|
154
|
+
if (typeof params.agentName === "string" && params.agentName.length > 0) {
|
|
155
|
+
tail.push(`agentName=${encodeURIComponent(params.agentName)}`);
|
|
156
|
+
}
|
|
157
|
+
if (tail.length === 0) return signedUrlPath;
|
|
158
|
+
const sep = signedUrlPath.includes("?") ? "&" : "?";
|
|
159
|
+
return `${signedUrlPath}${sep}${tail.join("&")}`;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
export {
|
|
163
|
+
createPostJson,
|
|
164
|
+
createMemoryAddTool,
|
|
165
|
+
createMemoryContextInjector,
|
|
166
|
+
createTranscriptDisconnectHandler,
|
|
167
|
+
appendTranscriptLine,
|
|
168
|
+
buildSessionPayload,
|
|
169
|
+
fetchSignedUrl,
|
|
170
|
+
withProjectQuery
|
|
171
|
+
};
|
|
172
|
+
//# sourceMappingURL=chunk-ZAW6F3YT.js.map
|