@daniel156161/prism 0.2.98 → 0.2.100

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.
@@ -1,194 +0,0 @@
1
- import { readSettings } from "./shared-config.js";
2
- function nonEmpty(value) {
3
- return typeof value === "string" && value.trim() ? value.trim() : undefined;
4
- }
5
- function boolSetting(value) {
6
- if (typeof value === "boolean")
7
- return value;
8
- if (typeof value === "string" && /^(1|true|yes|on)$/i.test(value.trim()))
9
- return true;
10
- if (typeof value === "string" && /^(0|false|no|off)$/i.test(value.trim()))
11
- return false;
12
- return undefined;
13
- }
14
- function numberSetting(value) {
15
- if (typeof value === "number" && Number.isFinite(value))
16
- return value;
17
- if (typeof value === "string" && value.trim()) {
18
- const parsed = Number(value);
19
- if (Number.isFinite(parsed))
20
- return parsed;
21
- }
22
- return undefined;
23
- }
24
- function getVoiceboxSettings(env) {
25
- const settings = readSettings(undefined, env);
26
- return settings?.voicebox ?? settings?.voice?.voicebox ?? {};
27
- }
28
- function getVoiceSettings(env) {
29
- return readSettings(undefined, env)?.voice ?? {};
30
- }
31
- export function normalizeVoiceboxBaseUrl(value) {
32
- return value.replace(/\/+$/, "");
33
- }
34
- export function resolveVoiceboxConfig(env = process.env) {
35
- const voicebox = getVoiceboxSettings(env);
36
- return {
37
- baseUrl: normalizeVoiceboxBaseUrl(nonEmpty(env.PRISM_VOICEBOX_URL) ?? nonEmpty(voicebox.url) ?? nonEmpty(voicebox.baseUrl) ?? "http://127.0.0.1:17493"),
38
- profile: nonEmpty(env.PRISM_VOICEBOX_PROFILE) ?? nonEmpty(voicebox.profile),
39
- language: nonEmpty(env.PRISM_VOICEBOX_LANGUAGE) ?? nonEmpty(voicebox.language) ?? "en",
40
- engine: nonEmpty(env.PRISM_VOICEBOX_ENGINE) ?? nonEmpty(voicebox.engine),
41
- personality: boolSetting(env.PRISM_VOICEBOX_PERSONALITY) ?? boolSetting(voicebox.personality) ?? false,
42
- clientId: nonEmpty(env.PRISM_VOICEBOX_CLIENT_ID) ?? nonEmpty(voicebox.clientId) ?? "prism",
43
- timeoutMs: Math.max(1_000, numberSetting(env.PRISM_VOICEBOX_TIMEOUT_MS) ?? numberSetting(voicebox.timeoutMs) ?? 30_000),
44
- generationTimeoutMs: Math.max(1_000, numberSetting(env.PRISM_VOICEBOX_GENERATION_TIMEOUT_MS) ?? numberSetting(voicebox.generationTimeoutMs) ?? 180_000),
45
- };
46
- }
47
- export function resolveVoiceBackend(env = process.env) {
48
- return nonEmpty(env.PRISM_VOICE_BACKEND) ?? nonEmpty(getVoiceSettings(env).backend);
49
- }
50
- export function isVoiceboxBackend(env = process.env) {
51
- return /^(voicebox|auto)$/i.test(resolveVoiceBackend(env) ?? "") || !!nonEmpty(env.PRISM_VOICEBOX_URL) || !!nonEmpty(getVoiceboxSettings(env).url) || !!nonEmpty(getVoiceboxSettings(env).baseUrl);
52
- }
53
- async function fetchJson(url, init, timeoutMs) {
54
- const response = await fetch(url, { ...init, signal: AbortSignal.timeout(timeoutMs) });
55
- const text = await response.text();
56
- const parsed = parseJsonOrText(text);
57
- if (!response.ok) {
58
- const detail = typeof parsed?.detail === "string" ? parsed.detail : typeof parsed === "string" ? parsed : `HTTP ${response.status}`;
59
- throw new Error(detail);
60
- }
61
- return parsed;
62
- }
63
- async function fetchBuffer(url, init, timeoutMs) {
64
- const response = await fetch(url, { ...init, signal: AbortSignal.timeout(timeoutMs) });
65
- if (!response.ok)
66
- throw new Error(`HTTP ${response.status}`);
67
- return Buffer.from(await response.arrayBuffer());
68
- }
69
- async function fetchStream(url, init, timeoutMs, onChunk) {
70
- const response = await fetch(url, { ...init, signal: AbortSignal.timeout(timeoutMs) });
71
- if (!response.ok)
72
- throw new Error(`HTTP ${response.status}`);
73
- if (!response.body)
74
- return;
75
- const reader = response.body.getReader();
76
- try {
77
- while (true) {
78
- const { done, value } = await reader.read();
79
- if (done)
80
- break;
81
- if (value?.byteLength)
82
- await onChunk(value);
83
- }
84
- }
85
- finally {
86
- reader.releaseLock();
87
- }
88
- }
89
- function parseJsonOrText(text) {
90
- try {
91
- return text ? JSON.parse(text) : undefined;
92
- }
93
- catch {
94
- return text;
95
- }
96
- }
97
- function parseVoiceboxStatusEvent(text) {
98
- for (const line of text.split(/\r?\n/)) {
99
- if (!line.startsWith("data:"))
100
- continue;
101
- const parsed = parseJsonOrText(line.replace(/^data:\s*/, ""));
102
- if (parsed && typeof parsed === "object" && typeof parsed.status === "string")
103
- return parsed;
104
- }
105
- const parsed = parseJsonOrText(text);
106
- if (parsed && typeof parsed === "object" && typeof parsed.status === "string")
107
- return parsed;
108
- return undefined;
109
- }
110
- export async function checkVoiceboxHealth(config = resolveVoiceboxConfig()) {
111
- try {
112
- await fetchJson(`${config.baseUrl}/health`, { method: "GET" }, Math.min(config.timeoutMs, 5_000));
113
- return true;
114
- }
115
- catch {
116
- return false;
117
- }
118
- }
119
- export async function speakWithVoicebox(text, config = resolveVoiceboxConfig()) {
120
- return fetchJson(`${config.baseUrl}/speak`, {
121
- method: "POST",
122
- headers: {
123
- "Content-Type": "application/json",
124
- "X-Voicebox-Client-Id": config.clientId,
125
- },
126
- body: JSON.stringify({
127
- text,
128
- profile: config.profile,
129
- language: config.language,
130
- engine: config.engine,
131
- personality: config.personality,
132
- }),
133
- }, config.timeoutMs);
134
- }
135
- function isAbortLikeError(error) {
136
- return error instanceof Error && (error.name === "AbortError" || error.name === "TimeoutError");
137
- }
138
- export async function waitForVoiceboxGeneration(id, config = resolveVoiceboxConfig()) {
139
- const deadline = Date.now() + config.generationTimeoutMs;
140
- let lastStatus;
141
- while (Date.now() < deadline) {
142
- try {
143
- const response = await fetch(`${config.baseUrl}/generate/${encodeURIComponent(id)}/status`, { method: "GET", signal: AbortSignal.timeout(Math.min(config.timeoutMs, 10_000)) });
144
- const text = await response.text();
145
- if (!response.ok)
146
- throw new Error(`HTTP ${response.status}`);
147
- lastStatus = parseVoiceboxStatusEvent(text) ?? lastStatus;
148
- if (lastStatus?.status === "completed")
149
- return lastStatus;
150
- if (lastStatus?.status === "failed")
151
- throw new Error(lastStatus.error || "Voicebox generation failed");
152
- }
153
- catch (error) {
154
- if (!isAbortLikeError(error))
155
- throw error;
156
- // Voicebox can block status responses while lazily loading a TTS model.
157
- // Treat individual poll timeouts as transient; the overall generation
158
- // timeout below remains the hard limit.
159
- }
160
- await new Promise((resolve) => setTimeout(resolve, 500));
161
- }
162
- throw new Error(`Voicebox generation timed out${lastStatus?.status ? ` (${lastStatus.status})` : ""}`);
163
- }
164
- export async function downloadVoiceboxAudio(id, config = resolveVoiceboxConfig()) {
165
- return fetchBuffer(`${config.baseUrl}/audio/${encodeURIComponent(id)}`, { method: "GET" }, config.timeoutMs);
166
- }
167
- export async function synthesizeSpeechWithVoicebox(text, config = resolveVoiceboxConfig()) {
168
- const generation = await speakWithVoicebox(text, config);
169
- const id = String(generation?.id ?? "");
170
- if (!id)
171
- throw new Error("Voicebox did not return a generation id");
172
- await waitForVoiceboxGeneration(id, config);
173
- return downloadVoiceboxAudio(id, config);
174
- }
175
- export async function streamSpeechWithVoicebox(text, onChunk, config = resolveVoiceboxConfig()) {
176
- const generation = await speakWithVoicebox(text, config);
177
- const id = String(generation?.id ?? "");
178
- if (!id)
179
- throw new Error("Voicebox did not return a generation id");
180
- await waitForVoiceboxGeneration(id, config);
181
- await fetchStream(`${config.baseUrl}/audio/${encodeURIComponent(id)}`, { method: "GET" }, config.timeoutMs, onChunk);
182
- }
183
- export async function transcribeWithVoicebox(audio, options = {}, config = resolveVoiceboxConfig()) {
184
- const form = new FormData();
185
- const file = audio instanceof Blob ? audio : new Blob([new Uint8Array(audio)]);
186
- form.append("file", file, options.fileName ?? "audio.wav");
187
- if (options.language)
188
- form.append("language", options.language);
189
- if (options.model)
190
- form.append("model", options.model);
191
- const result = await fetchJson(`${config.baseUrl}/transcribe`, { method: "POST", body: form }, config.timeoutMs);
192
- return String(result?.text ?? "");
193
- }
194
- //# sourceMappingURL=voicebox-client.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"voicebox-client.js","sourceRoot":"","sources":["../../../src/prism-extensions/core/voicebox-client.ts"],"names":[],"mappings":"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"}
@@ -1,19 +0,0 @@
1
- import { spawnSync } from "node:child_process";
2
- export interface VoiceboxServiceConfig {
3
- autoInstall: boolean;
4
- autoStart: boolean;
5
- autoStop: boolean;
6
- installDir: string;
7
- installCommand: string;
8
- startCommand: string;
9
- stopCommand: string;
10
- startupTimeoutMs: number;
11
- installTimeoutMs: number;
12
- stopTimeoutMs: number;
13
- }
14
- export declare function resolveVoiceboxServiceConfig(env?: NodeJS.ProcessEnv): VoiceboxServiceConfig;
15
- export declare function isVoiceboxServiceInstalled(env?: NodeJS.ProcessEnv): boolean;
16
- export declare function installVoiceboxService(env?: NodeJS.ProcessEnv, spawnSyncProcess?: typeof spawnSync): Promise<boolean>;
17
- export declare function startVoiceboxService(env?: NodeJS.ProcessEnv, spawnSyncProcess?: typeof spawnSync): Promise<boolean>;
18
- export declare function stopVoiceboxService(env?: NodeJS.ProcessEnv, spawnSyncProcess?: typeof spawnSync): Promise<boolean>;
19
- export declare function ensureVoiceboxServiceRunning(env?: NodeJS.ProcessEnv, spawnSyncProcess?: typeof spawnSync, onStatus?: (message: string, level?: string) => void): Promise<boolean>;
@@ -1,122 +0,0 @@
1
- import * as fs from "node:fs";
2
- import * as os from "node:os";
3
- import * as path from "node:path";
4
- import { spawnSync } from "node:child_process";
5
- import { readSettings } from "./shared-config.js";
6
- import { checkVoiceboxHealth, resolveVoiceboxConfig } from "./voicebox-client.js";
7
- const VOICEBOX_REPO_URL = "https://github.com/jamiepine/voicebox.git";
8
- function nonEmpty(value) {
9
- return typeof value === "string" && value.trim() ? value.trim() : undefined;
10
- }
11
- function boolSetting(value) {
12
- if (typeof value === "boolean")
13
- return value;
14
- if (typeof value === "string" && /^(1|true|yes|on)$/i.test(value.trim()))
15
- return true;
16
- if (typeof value === "string" && /^(0|false|no|off)$/i.test(value.trim()))
17
- return false;
18
- return undefined;
19
- }
20
- function numberSetting(value) {
21
- if (typeof value === "number" && Number.isFinite(value))
22
- return value;
23
- if (typeof value === "string" && value.trim()) {
24
- const parsed = Number(value);
25
- if (Number.isFinite(parsed))
26
- return parsed;
27
- }
28
- return undefined;
29
- }
30
- function quote(value) {
31
- return JSON.stringify(value);
32
- }
33
- function defaultInstallDir(env) {
34
- return nonEmpty(env.PRISM_VOICEBOX_DIR) ?? path.join(os.homedir(), ".local", "share", "prism", "voicebox");
35
- }
36
- function defaultInstallCommand(installDir) {
37
- return `mkdir -p ${quote(path.dirname(installDir))} && git clone ${quote(VOICEBOX_REPO_URL)} ${quote(installDir)}`;
38
- }
39
- function defaultStartCommand(installDir) {
40
- return `if command -v prism-voicebox >/dev/null 2>&1; then prism-voicebox start; else cd ${quote(installDir)} && docker compose up -d --build; fi`;
41
- }
42
- function defaultStopCommand(installDir) {
43
- return `if command -v prism-voicebox >/dev/null 2>&1; then prism-voicebox stop; else cd ${quote(installDir)} && docker compose down; fi`;
44
- }
45
- export function resolveVoiceboxServiceConfig(env = process.env) {
46
- const settings = readSettings(undefined, env)?.voicebox ?? {};
47
- const installDir = nonEmpty(env.PRISM_VOICEBOX_DIR) ?? nonEmpty(settings.installDir) ?? defaultInstallDir(env);
48
- return {
49
- autoInstall: boolSetting(env.PRISM_VOICEBOX_AUTO_INSTALL) ?? boolSetting(settings.autoInstall) ?? true,
50
- autoStart: boolSetting(env.PRISM_VOICEBOX_AUTO_START) ?? boolSetting(settings.autoStart) ?? true,
51
- autoStop: boolSetting(env.PRISM_VOICEBOX_AUTO_STOP) ?? boolSetting(settings.autoStop) ?? true,
52
- installDir,
53
- installCommand: nonEmpty(env.PRISM_VOICEBOX_INSTALL_COMMAND) ?? nonEmpty(settings.installCommand) ?? defaultInstallCommand(installDir),
54
- startCommand: nonEmpty(env.PRISM_VOICEBOX_START_COMMAND) ?? nonEmpty(settings.startCommand) ?? defaultStartCommand(installDir),
55
- stopCommand: nonEmpty(env.PRISM_VOICEBOX_STOP_COMMAND) ?? nonEmpty(settings.stopCommand) ?? defaultStopCommand(installDir),
56
- startupTimeoutMs: Math.max(1_000, numberSetting(env.PRISM_VOICEBOX_STARTUP_TIMEOUT_MS) ?? numberSetting(settings.startupTimeoutMs) ?? 120_000),
57
- installTimeoutMs: Math.max(1_000, numberSetting(env.PRISM_VOICEBOX_INSTALL_TIMEOUT_MS) ?? numberSetting(settings.installTimeoutMs) ?? 300_000),
58
- stopTimeoutMs: Math.max(1_000, numberSetting(env.PRISM_VOICEBOX_STOP_TIMEOUT_MS) ?? numberSetting(settings.stopTimeoutMs) ?? 60_000),
59
- };
60
- }
61
- async function sleep(ms) {
62
- await new Promise((resolve) => setTimeout(resolve, ms));
63
- }
64
- function runShell(command, timeoutMs, env, spawnSyncProcess) {
65
- const result = spawnSyncProcess("sh", ["-lc", command], { env, stdio: "ignore", timeout: timeoutMs });
66
- return !result.error && (result.status === 0 || result.status === null);
67
- }
68
- export function isVoiceboxServiceInstalled(env = process.env) {
69
- const service = resolveVoiceboxServiceConfig(env);
70
- return fs.existsSync(path.join(service.installDir, "docker-compose.yml")) || fs.existsSync(path.join(service.installDir, "compose.yml"));
71
- }
72
- export async function installVoiceboxService(env = process.env, spawnSyncProcess = spawnSync) {
73
- const service = resolveVoiceboxServiceConfig(env);
74
- if (isVoiceboxServiceInstalled(env))
75
- return true;
76
- if (!service.autoInstall)
77
- return false;
78
- return runShell(service.installCommand, service.installTimeoutMs, env, spawnSyncProcess) && isVoiceboxServiceInstalled(env);
79
- }
80
- export async function startVoiceboxService(env = process.env, spawnSyncProcess = spawnSync) {
81
- const service = resolveVoiceboxServiceConfig(env);
82
- if (!service.autoStart)
83
- return false;
84
- if (!isVoiceboxServiceInstalled(env) && !(await installVoiceboxService(env, spawnSyncProcess)))
85
- return false;
86
- return runShell(service.startCommand, service.startupTimeoutMs, env, spawnSyncProcess);
87
- }
88
- export async function stopVoiceboxService(env = process.env, spawnSyncProcess = spawnSync) {
89
- const service = resolveVoiceboxServiceConfig(env);
90
- if (!service.autoStop)
91
- return false;
92
- if (!isVoiceboxServiceInstalled(env))
93
- return false;
94
- return runShell(service.stopCommand, service.stopTimeoutMs, env, spawnSyncProcess);
95
- }
96
- export async function ensureVoiceboxServiceRunning(env = process.env, spawnSyncProcess = spawnSync, onStatus) {
97
- const config = resolveVoiceboxConfig(env);
98
- if (await checkVoiceboxHealth(config))
99
- return true;
100
- const service = resolveVoiceboxServiceConfig(env);
101
- if (!isVoiceboxServiceInstalled(env)) {
102
- if (!service.autoInstall)
103
- return false;
104
- onStatus?.(`Voicebox is not installed. Installing to ${service.installDir}…`, "info");
105
- if (!(await installVoiceboxService(env, spawnSyncProcess)))
106
- return false;
107
- }
108
- if (!service.autoStart)
109
- return false;
110
- onStatus?.("Voicebox is not running. Starting local Voicebox container…", "info");
111
- const started = await startVoiceboxService(env, spawnSyncProcess);
112
- if (!started)
113
- return false;
114
- const deadline = Date.now() + service.startupTimeoutMs;
115
- while (Date.now() < deadline) {
116
- if (await checkVoiceboxHealth(config))
117
- return true;
118
- await sleep(1_000);
119
- }
120
- return false;
121
- }
122
- //# sourceMappingURL=voicebox-service.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"voicebox-service.js","sourceRoot":"","sources":["../../../src/prism-extensions/core/voicebox-service.ts"],"names":[],"mappings":"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"}
@@ -1,31 +0,0 @@
1
- export type ExtensionAPI = any;
2
- export type HonchoConfig = {
3
- baseUrl?: string;
4
- apiKey?: string;
5
- workspace: string;
6
- userPeer: string;
7
- assistantPeer: string;
8
- sessionId?: string;
9
- autoCapture: boolean;
10
- maxCaptureChars: number;
11
- };
12
- type HonchoMessage = {
13
- role?: string;
14
- content?: unknown;
15
- customType?: string;
16
- stopReason?: string;
17
- metadata?: Record<string, unknown>;
18
- };
19
- export declare function sanitizeHonchoId(value: string): string;
20
- export declare function readHonchoSettings(env?: NodeJS.ProcessEnv): any;
21
- export declare function resolveHonchoConfig(env?: NodeJS.ProcessEnv, settings?: any): HonchoConfig;
22
- export declare function isHonchoConfigured(env?: NodeJS.ProcessEnv): boolean;
23
- export declare function shouldCaptureHonchoMessage(message: HonchoMessage): boolean;
24
- export declare function honchoSessionIdFromContext(ctx: any, fallback?: string): string;
25
- export declare function buildCapturedHonchoMessages(messages: HonchoMessage[], config: HonchoConfig): Array<{
26
- peer_id: string;
27
- content: string;
28
- metadata: Record<string, unknown>;
29
- }>;
30
- export default function honchoMemoryExtension(pi: ExtensionAPI): Promise<void>;
31
- export {};