@hyperdreamer/pi-webui 1.17.0 → 1.18.2

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.
@@ -0,0 +1,369 @@
1
+ import { SPEECH_INPUT_MAX_TRANSCRIPT_BYTES } from "../../shared/speechInputAudio.js";
2
+ import { SPEECH_INPUT_POLISHING_ROUTE_TIMEOUT_MS } from "../../shared/speechInputPolishing.js";
3
+ import { SpeechInputPolishingAbortedError, SpeechInputPolishingUnavailableError, } from "./speechInputPolishingService.js";
4
+ export { SPEECH_INPUT_POLISHING_ROUTE_TIMEOUT_MS };
5
+ // JSON escaping can expand a valid UTF-8 transcript by up to six bytes per
6
+ // source byte. This route-local limit leaves room for the JSON envelope without
7
+ // changing the process-wide Fastify body limit.
8
+ const DEFAULT_BODY_LIMIT = SPEECH_INPUT_MAX_TRANSCRIPT_BYTES * 6 + 1024;
9
+ const POLISHING_PATH = "/speech-input/polish";
10
+ const GATEWAY_POLISHING_PATH = "/api/speech-input/polish";
11
+ const INVALID_REQUEST_MESSAGE = "Invalid speech input polishing request.";
12
+ const ADMISSION_REJECTED_MESSAGE = "Speech input polishing is busy. Try again.";
13
+ const UNAVAILABLE_MESSAGE = "Speech input polishing is unavailable.";
14
+ const DAEMON_FAILURE_MESSAGE = "Speech input polishing daemon unavailable.";
15
+ const TIMEOUT_MESSAGE = "Speech input polishing timed out.";
16
+ const UNEXPECTED_FAILURE_MESSAGE = "Speech input polishing failed.";
17
+ const NO_STORE = "no-store";
18
+ export function registerSpeechInputPolishingRoutes(app, service, options = {}) {
19
+ registerPolishingHttpRoute(app, POLISHING_PATH, options, async (request, state) => {
20
+ const input = parsePolishingRequest(request.body);
21
+ if (input === undefined) {
22
+ sendResponse(state, 400, { error: INVALID_REQUEST_MESSAGE });
23
+ return undefined;
24
+ }
25
+ try {
26
+ const text = await service.polish(input.text, state.controller.signal);
27
+ if (!isCurrent(state)) {
28
+ state.cleanup();
29
+ return undefined;
30
+ }
31
+ if (!isValidTranscript(text)) {
32
+ sendResponse(state, 500, { error: UNEXPECTED_FAILURE_MESSAGE });
33
+ return undefined;
34
+ }
35
+ sendResponse(state, 200, { text });
36
+ return undefined;
37
+ }
38
+ catch (error) {
39
+ if (!isCurrent(state)) {
40
+ state.cleanup();
41
+ return undefined;
42
+ }
43
+ mapDaemonServiceError(state, error);
44
+ return undefined;
45
+ }
46
+ });
47
+ }
48
+ /** Registers only the gateway-owned, local-sessiond polishing endpoint. */
49
+ export function registerSpeechInputPolishingGatewayRoute(app, daemon, options = {}) {
50
+ registerPolishingHttpRoute(app, GATEWAY_POLISHING_PATH, options, async (request, state) => {
51
+ const input = parsePolishingRequest(request.body);
52
+ if (input === undefined) {
53
+ sendResponse(state, 400, { error: INVALID_REQUEST_MESSAGE });
54
+ return undefined;
55
+ }
56
+ try {
57
+ const upstream = await daemon.request("POST", POLISHING_PATH, { text: input.text }, state.controller.signal);
58
+ if (!isSuccessfulStatus(upstream.statusCode)) {
59
+ sendResponse(state, statusForUpstream(upstream.statusCode), { error: messageForUpstream(upstream.statusCode) });
60
+ return undefined;
61
+ }
62
+ if (!isJsonContentType(headerValue(upstream.headers, "content-type"))) {
63
+ sendResponse(state, 500, { error: UNEXPECTED_FAILURE_MESSAGE });
64
+ return undefined;
65
+ }
66
+ const text = parsePolishingResponse(upstream.body);
67
+ if (text === undefined) {
68
+ sendResponse(state, 500, { error: UNEXPECTED_FAILURE_MESSAGE });
69
+ return undefined;
70
+ }
71
+ sendResponse(state, 200, { text });
72
+ return undefined;
73
+ }
74
+ catch {
75
+ if (!isCurrent(state)) {
76
+ state.cleanup();
77
+ return undefined;
78
+ }
79
+ sendResponse(state, 502, { error: DAEMON_FAILURE_MESSAGE });
80
+ return undefined;
81
+ }
82
+ });
83
+ }
84
+ function registerPolishingHttpRoute(app, path, options, handler) {
85
+ const admissionLimit = options.admissionLimit ?? 2;
86
+ const bodyLimit = options.bodyLimit ?? DEFAULT_BODY_LIMIT;
87
+ const scheduleDeadline = options.scheduleDeadline ?? defaultScheduleDeadline;
88
+ app.register((scope, _pluginOptions, done) => {
89
+ const admission = createAdmission(admissionLimit);
90
+ const active = new WeakMap();
91
+ const activeRequests = new Set();
92
+ scope.setErrorHandler((error, request, reply) => {
93
+ const state = active.get(request);
94
+ const statusCode = isContentParsingError(error) ? 400 : 500;
95
+ const body = { error: statusCode === 400 ? INVALID_REQUEST_MESSAGE : UNEXPECTED_FAILURE_MESSAGE };
96
+ reply.header("cache-control", NO_STORE);
97
+ if (state === undefined)
98
+ return reply.code(statusCode).send(body);
99
+ if (!isCurrent(state)) {
100
+ state.cleanup();
101
+ return undefined;
102
+ }
103
+ return sendResponse(state, statusCode, body);
104
+ });
105
+ scope.addHook("onRequest", (request, reply, hookDone) => {
106
+ reply.header("cache-control", NO_STORE);
107
+ const releaseAdmission = admission.acquire();
108
+ if (releaseAdmission === undefined) {
109
+ reply.code(429).send({ error: ADMISSION_REJECTED_MESSAGE });
110
+ hookDone();
111
+ return;
112
+ }
113
+ const state = createActiveRequest(request, reply, releaseAdmission);
114
+ active.set(request, state);
115
+ activeRequests.add(state);
116
+ state.cleanup = () => { cleanup(state); };
117
+ request.raw.once("aborted", state.onRawAborted);
118
+ reply.raw.once("close", state.onResponseClose);
119
+ let deadlineCancelled = false;
120
+ const scheduled = { cancel: () => undefined };
121
+ state.cancelDeadline = () => {
122
+ if (deadlineCancelled)
123
+ return;
124
+ deadlineCancelled = true;
125
+ scheduled.cancel();
126
+ };
127
+ scheduled.cancel = scheduleDeadline(() => {
128
+ if (!state.active)
129
+ return;
130
+ const canWrite = canWriteResponse(state);
131
+ cleanup(state);
132
+ if (canWrite) {
133
+ state.responseStarted = true;
134
+ try {
135
+ state.reply.code(504).header("cache-control", NO_STORE).send({ error: TIMEOUT_MESSAGE });
136
+ }
137
+ catch {
138
+ // A concurrent close has already made the response unwritable.
139
+ }
140
+ return;
141
+ }
142
+ if (!state.rawAborted && !state.request.raw.destroyed) {
143
+ try {
144
+ state.request.raw.destroy();
145
+ }
146
+ catch {
147
+ // A concurrent disconnect has the same terminal result.
148
+ }
149
+ }
150
+ }, SPEECH_INPUT_POLISHING_ROUTE_TIMEOUT_MS);
151
+ if (!state.active)
152
+ scheduled.cancel();
153
+ if (request.raw.destroyed || reply.raw.destroyed)
154
+ cleanup(state);
155
+ hookDone();
156
+ });
157
+ scope.addHook("onResponse", (request, _reply, hookDone) => {
158
+ const state = active.get(request);
159
+ if (state !== undefined)
160
+ cleanup(state);
161
+ hookDone();
162
+ });
163
+ scope.addHook("onClose", (_instance, hookDone) => {
164
+ for (const state of activeRequests)
165
+ cleanup(state);
166
+ hookDone();
167
+ });
168
+ scope.post(path, { bodyLimit }, async (request) => {
169
+ const state = active.get(request);
170
+ if (state === undefined || !isCurrent(state)) {
171
+ state?.cleanup();
172
+ return undefined;
173
+ }
174
+ return handler(request, state);
175
+ });
176
+ done();
177
+ function cleanup(state) {
178
+ if (!state.active)
179
+ return;
180
+ state.active = false;
181
+ active.delete(state.request);
182
+ activeRequests.delete(state);
183
+ try {
184
+ state.cancelDeadline();
185
+ }
186
+ catch {
187
+ // Admission and downstream cancellation must still happen.
188
+ }
189
+ state.request.raw.removeListener("aborted", state.onRawAborted);
190
+ state.reply.raw.removeListener("close", state.onResponseClose);
191
+ try {
192
+ if (!state.controller.signal.aborted)
193
+ state.controller.abort();
194
+ }
195
+ finally {
196
+ state.releaseAdmission();
197
+ }
198
+ }
199
+ });
200
+ }
201
+ function createActiveRequest(request, reply, releaseAdmission) {
202
+ const controller = new AbortController();
203
+ const state = {
204
+ request,
205
+ reply,
206
+ controller,
207
+ releaseAdmission,
208
+ cancelDeadline: () => undefined,
209
+ onRawAborted: () => undefined,
210
+ onResponseClose: () => undefined,
211
+ cleanup: () => undefined,
212
+ active: true,
213
+ responseStarted: false,
214
+ rawAborted: false,
215
+ };
216
+ state.onRawAborted = () => {
217
+ state.rawAborted = true;
218
+ state.cleanup();
219
+ };
220
+ state.onResponseClose = () => {
221
+ if (!state.active || state.responseStarted || state.reply.sent || state.reply.raw.writableEnded)
222
+ return;
223
+ state.cleanup();
224
+ };
225
+ return state;
226
+ }
227
+ function parsePolishingRequest(value) {
228
+ if (!isRecord(value))
229
+ return undefined;
230
+ const keys = Object.keys(value);
231
+ if (keys.length !== 1 || keys[0] !== "text")
232
+ return undefined;
233
+ const text = value["text"];
234
+ return isValidTranscript(text) ? { text } : undefined;
235
+ }
236
+ function parsePolishingResponse(body) {
237
+ if (Buffer.byteLength(body, "utf8") > DEFAULT_BODY_LIMIT)
238
+ return undefined;
239
+ let value;
240
+ try {
241
+ value = JSON.parse(body);
242
+ }
243
+ catch {
244
+ return undefined;
245
+ }
246
+ if (!isRecord(value))
247
+ return undefined;
248
+ const keys = Object.keys(value);
249
+ if (keys.length !== 1 || keys[0] !== "text")
250
+ return undefined;
251
+ const text = value["text"];
252
+ return isValidTranscript(text) ? text : undefined;
253
+ }
254
+ function isValidTranscript(value) {
255
+ return typeof value === "string"
256
+ && value.trim() !== ""
257
+ && Buffer.byteLength(value, "utf8") <= SPEECH_INPUT_MAX_TRANSCRIPT_BYTES;
258
+ }
259
+ function isRecord(value) {
260
+ return typeof value === "object" && value !== null && !Array.isArray(value);
261
+ }
262
+ function mapDaemonServiceError(state, error) {
263
+ if (error instanceof SpeechInputPolishingUnavailableError) {
264
+ return sendResponse(state, 503, { error: UNAVAILABLE_MESSAGE });
265
+ }
266
+ if (error instanceof SpeechInputPolishingAbortedError) {
267
+ return sendResponse(state, 500, { error: UNEXPECTED_FAILURE_MESSAGE });
268
+ }
269
+ // Do not inspect or serialize unexpected service errors at this boundary.
270
+ void error;
271
+ return sendResponse(state, 500, { error: UNEXPECTED_FAILURE_MESSAGE });
272
+ }
273
+ function isSuccessfulStatus(statusCode) {
274
+ return statusCode >= 200 && statusCode < 300;
275
+ }
276
+ function statusForUpstream(statusCode) {
277
+ if (statusCode === 400)
278
+ return 400;
279
+ if (statusCode === 429)
280
+ return 429;
281
+ if (statusCode === 503)
282
+ return 503;
283
+ if (statusCode === 504)
284
+ return 504;
285
+ return 502;
286
+ }
287
+ function messageForUpstream(statusCode) {
288
+ const mapped = statusForUpstream(statusCode);
289
+ if (mapped === 400)
290
+ return INVALID_REQUEST_MESSAGE;
291
+ if (mapped === 429)
292
+ return ADMISSION_REJECTED_MESSAGE;
293
+ if (mapped === 503)
294
+ return UNAVAILABLE_MESSAGE;
295
+ if (mapped === 504)
296
+ return TIMEOUT_MESSAGE;
297
+ return DAEMON_FAILURE_MESSAGE;
298
+ }
299
+ function isContentParsingError(error) {
300
+ if (!isRecord(error))
301
+ return false;
302
+ const code = error["code"];
303
+ return typeof code === "string" && code.startsWith("FST_ERR_CTP_");
304
+ }
305
+ function isJsonContentType(contentType) {
306
+ const mediaType = contentType?.split(";", 1)[0]?.trim().toLowerCase();
307
+ return mediaType === "application/json" || mediaType?.endsWith("+json") === true;
308
+ }
309
+ function headerValue(headers, name) {
310
+ const target = name.toLowerCase();
311
+ for (const [key, value] of Object.entries(headers)) {
312
+ if (key.toLowerCase() === target)
313
+ return value;
314
+ }
315
+ return undefined;
316
+ }
317
+ function isCurrent(state) {
318
+ return state.active
319
+ && !state.controller.signal.aborted
320
+ && !state.rawAborted
321
+ && !state.reply.raw.destroyed;
322
+ }
323
+ function canWriteResponse(state) {
324
+ return isCurrent(state)
325
+ && !state.responseStarted
326
+ && !state.reply.sent
327
+ && !state.reply.raw.destroyed
328
+ && !state.reply.raw.writableEnded;
329
+ }
330
+ function sendResponse(state, statusCode, body) {
331
+ if (!canWriteResponse(state)) {
332
+ state.cleanup();
333
+ return undefined;
334
+ }
335
+ state.responseStarted = true;
336
+ try {
337
+ return state.reply.code(statusCode).header("cache-control", NO_STORE).send(body);
338
+ }
339
+ catch {
340
+ return undefined;
341
+ }
342
+ finally {
343
+ // The operation is terminal once the response has been handed to Fastify.
344
+ // The lifecycle hook remains an idempotent backstop for parser/close paths.
345
+ state.cleanup();
346
+ }
347
+ }
348
+ function createAdmission(limit) {
349
+ let active = 0;
350
+ return {
351
+ acquire() {
352
+ if (active >= limit)
353
+ return undefined;
354
+ active += 1;
355
+ let released = false;
356
+ return () => {
357
+ if (released)
358
+ return;
359
+ released = true;
360
+ active -= 1;
361
+ };
362
+ },
363
+ };
364
+ }
365
+ function defaultScheduleDeadline(callback, delayMs) {
366
+ const timer = setTimeout(callback, delayMs);
367
+ return () => { clearTimeout(timer); };
368
+ }
369
+ //# sourceMappingURL=speechInputPolishingRoutes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"speechInputPolishingRoutes.js","sourceRoot":"","sources":["../../../src/server/speechInput/speechInputPolishingRoutes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,150 @@
1
+ import { SPEECH_INPUT_MAX_TRANSCRIPT_BYTES } from "../../shared/speechInputAudio.js";
2
+ import { SPEECH_INPUT_POLISHING_MODEL_TIMEOUT_MS } from "../../shared/speechInputPolishing.js";
3
+ export const SPEECH_INPUT_POLISHING_MAX_TOKENS = 512;
4
+ export const SPEECH_INPUT_POLISHING_MAX_OUTPUT_BYTES = SPEECH_INPUT_MAX_TRANSCRIPT_BYTES;
5
+ export const SPEECH_INPUT_POLISHING_SYSTEM_PROMPT = "Return only polished plain text. Preserve meaning, intent, technical tokens, and explicit requirements. Correct capitalization, punctuation, spacing, and unambiguous disfluencies only. Do not add, delete, or infer requirements. Do not include explanations, markdown, quotation wrappers, labels, or commentary.";
6
+ const UNAVAILABLE_MESSAGE = "Speech input polishing is unavailable.";
7
+ const ABORTED_MESSAGE = "Speech input polishing was cancelled.";
8
+ export class SpeechInputPolishingError extends Error {
9
+ constructor(code, message, name) {
10
+ super(message);
11
+ this.name = name;
12
+ this.code = code;
13
+ }
14
+ }
15
+ export class SpeechInputPolishingUnavailableError extends SpeechInputPolishingError {
16
+ constructor() {
17
+ super("SPEECH_INPUT_POLISHING_UNAVAILABLE", UNAVAILABLE_MESSAGE, "SpeechInputPolishingUnavailableError");
18
+ }
19
+ }
20
+ export class SpeechInputPolishingAbortedError extends SpeechInputPolishingError {
21
+ constructor() {
22
+ super("SPEECH_INPUT_POLISHING_ABORTED", ABORTED_MESSAGE, "SpeechInputPolishingAbortedError");
23
+ }
24
+ }
25
+ export class SpeechInputPolishingService {
26
+ constructor(dependencies) {
27
+ this.dependencies = dependencies;
28
+ }
29
+ async polish(text, signal) {
30
+ throwIfAborted(signal);
31
+ let candidates;
32
+ try {
33
+ const candidatePromise = this.dependencies.utilityModelResolver.configuredCandidates("lightweight");
34
+ candidates = signal === undefined
35
+ ? await candidatePromise
36
+ : await raceWithAbort(candidatePromise, signal);
37
+ }
38
+ catch (error) {
39
+ if (error instanceof SpeechInputPolishingAbortedError || signal?.aborted === true) {
40
+ throw new SpeechInputPolishingAbortedError();
41
+ }
42
+ throw new SpeechInputPolishingUnavailableError();
43
+ }
44
+ throwIfAborted(signal);
45
+ const lightweightCandidates = candidates.filter((candidate) => candidate.slot === "lightweight");
46
+ if (lightweightCandidates.length === 0) {
47
+ throw new SpeechInputPolishingUnavailableError();
48
+ }
49
+ for (const candidate of lightweightCandidates) {
50
+ throwIfAborted(signal);
51
+ try {
52
+ const context = {
53
+ systemPrompt: SPEECH_INPUT_POLISHING_SYSTEM_PROMPT,
54
+ messages: [{ role: "user", content: text, timestamp: Date.now() }],
55
+ };
56
+ const options = {
57
+ // pi-ai represents "off" by omitting its optional reasoning field.
58
+ ...(candidate.thinkingLevel === "off" ? {} : { reasoning: candidate.thinkingLevel }),
59
+ maxTokens: SPEECH_INPUT_POLISHING_MAX_TOKENS,
60
+ maxRetries: 0,
61
+ cacheRetention: "none",
62
+ timeoutMs: SPEECH_INPUT_POLISHING_MODEL_TIMEOUT_MS,
63
+ ...(signal === undefined ? {} : { signal }),
64
+ };
65
+ const completion = this.dependencies.modelRuntime.completeSimple(candidate.model, context, options);
66
+ const message = signal === undefined
67
+ ? await completion
68
+ : await raceWithAbort(completion, signal);
69
+ throwIfAborted(signal);
70
+ const polished = extractPolishedText(message);
71
+ if (polished !== undefined) {
72
+ throwIfAborted(signal);
73
+ return polished;
74
+ }
75
+ }
76
+ catch (error) {
77
+ if (error instanceof SpeechInputPolishingAbortedError || signal?.aborted === true) {
78
+ throw new SpeechInputPolishingAbortedError();
79
+ }
80
+ // Candidate and provider details stay inside the daemon runtime. The
81
+ // route receives one stable, credential-blind failure after fallback.
82
+ }
83
+ }
84
+ throwIfAborted(signal);
85
+ throw new SpeechInputPolishingUnavailableError();
86
+ }
87
+ }
88
+ export function createSpeechInputPolishingService(dependencies) {
89
+ return new SpeechInputPolishingService(dependencies);
90
+ }
91
+ function extractPolishedText(message) {
92
+ if (message.stopReason !== "stop")
93
+ return undefined;
94
+ let hasText = false;
95
+ let text = "";
96
+ for (const block of message.content) {
97
+ if (block.type === "text") {
98
+ if (typeof block.text !== "string")
99
+ return undefined;
100
+ hasText = true;
101
+ text += block.text;
102
+ continue;
103
+ }
104
+ if (block.type === "thinking")
105
+ continue;
106
+ return undefined;
107
+ }
108
+ if (!hasText || text.trim() === "")
109
+ return undefined;
110
+ if (Buffer.byteLength(text, "utf8") > SPEECH_INPUT_POLISHING_MAX_OUTPUT_BYTES) {
111
+ return undefined;
112
+ }
113
+ return text;
114
+ }
115
+ function throwIfAborted(signal) {
116
+ if (signal?.aborted === true)
117
+ throw new SpeechInputPolishingAbortedError();
118
+ }
119
+ function raceWithAbort(promise, signal) {
120
+ return new Promise((resolve, reject) => {
121
+ let settled = false;
122
+ const cleanup = () => {
123
+ signal.removeEventListener("abort", onAbort);
124
+ };
125
+ const settle = (callback, value) => {
126
+ if (settled)
127
+ return;
128
+ settled = true;
129
+ cleanup();
130
+ callback(value);
131
+ };
132
+ const fail = (error) => {
133
+ if (settled)
134
+ return;
135
+ settled = true;
136
+ cleanup();
137
+ reject(error instanceof SpeechInputPolishingAbortedError
138
+ ? error
139
+ : new Error("Speech input polishing failed."));
140
+ };
141
+ const onAbort = () => {
142
+ fail(new SpeechInputPolishingAbortedError());
143
+ };
144
+ signal.addEventListener("abort", onAbort, { once: true });
145
+ Promise.resolve(promise).then((value) => { settle(resolve, value); }, (error) => { fail(error); });
146
+ if (signal.aborted)
147
+ onAbort();
148
+ });
149
+ }
150
+ //# sourceMappingURL=speechInputPolishingService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"speechInputPolishingService.js","sourceRoot":"","sources":["../../../src/server/speechInput/speechInputPolishingService.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,iCAAiC,EAAE,MAAM,kCAAkC,CAAC;AACrF,OAAO,EAAE,uCAAuC,EAAE,MAAM,sCAAsC,CAAC;AAM/F,MAAM,CAAC,MAAM,iCAAiC,GAAG,GAAG,CAAC;AACrD,MAAM,CAAC,MAAM,uCAAuC,GAAG,iCAAiC,CAAC;AACzF,MAAM,CAAC,MAAM,oCAAoC,GAC/C,uTAAuT,CAAC;AAE1T,MAAM,mBAAmB,GAAG,wCAAwC,CAAC;AACrE,MAAM,eAAe,GAAG,uCAAuC,CAAC;AAOhE,MAAM,OAAO,yBAA0B,SAAQ,KAAK;IAGlD,YAAY,IAAY,EAAE,OAAe,EAAE,IAAY;QACrD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAED,MAAM,OAAO,oCAAqC,SAAQ,yBAAyB;IACjF;QACE,KAAK,CACH,oCAAoC,EACpC,mBAAmB,EACnB,sCAAsC,CACvC,CAAC;IACJ,CAAC;CACF;AAED,MAAM,OAAO,gCAAiC,SAAQ,yBAAyB;IAC7E;QACE,KAAK,CACH,gCAAgC,EAChC,eAAe,EACf,kCAAkC,CACnC,CAAC;IACJ,CAAC;CACF;AAED,MAAM,OAAO,2BAA2B;IACtC,YACmB,YAAqD;QAArD,iBAAY,GAAZ,YAAY,CAAyC;IACrE,CAAC;IAEJ,KAAK,CAAC,MAAM,CAAC,IAAY,EAAE,MAAoB;QAC7C,cAAc,CAAC,MAAM,CAAC,CAAC;QAEvB,IAAI,UAAuD,CAAC;QAC5D,IAAI,CAAC;YACH,MAAM,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC;YACpG,UAAU,GAAG,MAAM,KAAK,SAAS;gBAC/B,CAAC,CAAC,MAAM,gBAAgB;gBACxB,CAAC,CAAC,MAAM,aAAa,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;QACpD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,gCAAgC,IAAI,MAAM,EAAE,OAAO,KAAK,IAAI,EAAE,CAAC;gBAClF,MAAM,IAAI,gCAAgC,EAAE,CAAC;YAC/C,CAAC;YACD,MAAM,IAAI,oCAAoC,EAAE,CAAC;QACnD,CAAC;QAED,cAAc,CAAC,MAAM,CAAC,CAAC;QACvB,MAAM,qBAAqB,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC;QACjG,IAAI,qBAAqB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvC,MAAM,IAAI,oCAAoC,EAAE,CAAC;QACnD,CAAC;QAED,KAAK,MAAM,SAAS,IAAI,qBAAqB,EAAE,CAAC;YAC9C,cAAc,CAAC,MAAM,CAAC,CAAC;YACvB,IAAI,CAAC;gBACH,MAAM,OAAO,GAAY;oBACvB,YAAY,EAAE,oCAAoC;oBAClD,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;iBACnE,CAAC;gBACF,MAAM,OAAO,GAA8B;oBACzC,mEAAmE;oBACnE,GAAG,CAAC,SAAS,CAAC,aAAa,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,SAAS,CAAC,aAAa,EAAE,CAAC;oBACpF,SAAS,EAAE,iCAAiC;oBAC5C,UAAU,EAAE,CAAC;oBACb,cAAc,EAAE,MAAM;oBACtB,SAAS,EAAE,uCAAuC;oBAClD,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;iBAC5C,CAAC;gBACF,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,cAAc,CAC9D,SAAS,CAAC,KAAK,EACf,OAAO,EACP,OAAO,CACR,CAAC;gBACF,MAAM,OAAO,GAAG,MAAM,KAAK,SAAS;oBAClC,CAAC,CAAC,MAAM,UAAU;oBAClB,CAAC,CAAC,MAAM,aAAa,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;gBAC5C,cAAc,CAAC,MAAM,CAAC,CAAC;gBACvB,MAAM,QAAQ,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;gBAC9C,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;oBAC3B,cAAc,CAAC,MAAM,CAAC,CAAC;oBACvB,OAAO,QAAQ,CAAC;gBAClB,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,KAAK,YAAY,gCAAgC,IAAI,MAAM,EAAE,OAAO,KAAK,IAAI,EAAE,CAAC;oBAClF,MAAM,IAAI,gCAAgC,EAAE,CAAC;gBAC/C,CAAC;gBACD,qEAAqE;gBACrE,sEAAsE;YACxE,CAAC;QACH,CAAC;QAED,cAAc,CAAC,MAAM,CAAC,CAAC;QACvB,MAAM,IAAI,oCAAoC,EAAE,CAAC;IACnD,CAAC;CACF;AAED,MAAM,UAAU,iCAAiC,CAC/C,YAAqD;IAErD,OAAO,IAAI,2BAA2B,CAAC,YAAY,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAyB;IACpD,IAAI,OAAO,CAAC,UAAU,KAAK,MAAM;QAAE,OAAO,SAAS,CAAC;IAEpD,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC1B,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;gBAAE,OAAO,SAAS,CAAC;YACrD,OAAO,GAAG,IAAI,CAAC;YACf,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC;YACnB,SAAS;QACX,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU;YAAE,SAAS;QACxC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,SAAS,CAAC;IACrD,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,uCAAuC,EAAE,CAAC;QAC9E,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,cAAc,CAAC,MAA+B;IACrD,IAAI,MAAM,EAAE,OAAO,KAAK,IAAI;QAAE,MAAM,IAAI,gCAAgC,EAAE,CAAC;AAC7E,CAAC;AAED,SAAS,aAAa,CAAI,OAAmB,EAAE,MAAmB;IAChE,OAAO,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACxC,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,MAAM,OAAO,GAAG,GAAS,EAAE;YACzB,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC/C,CAAC,CAAC;QACF,MAAM,MAAM,GAAG,CAAC,QAA4B,EAAE,KAAQ,EAAQ,EAAE;YAC9D,IAAI,OAAO;gBAAE,OAAO;YACpB,OAAO,GAAG,IAAI,CAAC;YACf,OAAO,EAAE,CAAC;YACV,QAAQ,CAAC,KAAK,CAAC,CAAC;QAClB,CAAC,CAAC;QACF,MAAM,IAAI,GAAG,CAAC,KAAc,EAAQ,EAAE;YACpC,IAAI,OAAO;gBAAE,OAAO;YACpB,OAAO,GAAG,IAAI,CAAC;YACf,OAAO,EAAE,CAAC;YACV,MAAM,CACJ,KAAK,YAAY,gCAAgC;gBAC/C,CAAC,CAAC,KAAK;gBACP,CAAC,CAAC,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAChD,CAAC;QACJ,CAAC,CAAC;QACF,MAAM,OAAO,GAAG,GAAS,EAAE;YACzB,IAAI,CAAC,IAAI,gCAAgC,EAAE,CAAC,CAAC;QAC/C,CAAC,CAAC;QAEF,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1D,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAC3B,CAAC,KAAK,EAAE,EAAE,GAAG,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EACtC,CAAC,KAAc,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CACrC,CAAC;QACF,IAAI,MAAM,CAAC,OAAO;YAAE,OAAO,EAAE,CAAC;IAChC,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -31,7 +31,7 @@ export function createSpeechInputSettingsService(dependencies) {
31
31
  const responseFromSnapshot = (snapshot) => {
32
32
  const speech = snapshot.loaded.config.speechInput;
33
33
  return {
34
- contractVersion: 1,
34
+ contractVersion: 2,
35
35
  revision: snapshot.speechInputRevision,
36
36
  settings: effectiveSpeechInputSettings(speech),
37
37
  credential: inspectPiCompatibleCredentialSource(speech?.cloud?.apiKey, env),
@@ -81,6 +81,7 @@ function applyPreserve(currentConfig, update) {
81
81
  speechInput: {
82
82
  provider: update.settings.provider,
83
83
  ...(update.settings.language === undefined ? {} : { language: update.settings.language }),
84
+ ...retainedPolishVoiceInput(currentConfig, update),
84
85
  cloud: {
85
86
  baseUrl: update.settings.cloud.baseUrl,
86
87
  model: update.settings.cloud.model,
@@ -95,6 +96,7 @@ function applyReplace(currentConfig, update, credentialValue) {
95
96
  speechInput: {
96
97
  provider: update.settings.provider,
97
98
  ...(update.settings.language === undefined ? {} : { language: update.settings.language }),
99
+ ...retainedPolishVoiceInput(currentConfig, update),
98
100
  cloud: {
99
101
  baseUrl: update.settings.cloud.baseUrl,
100
102
  model: update.settings.cloud.model,
@@ -103,6 +105,10 @@ function applyReplace(currentConfig, update, credentialValue) {
103
105
  },
104
106
  };
105
107
  }
108
+ function retainedPolishVoiceInput(currentConfig, update) {
109
+ const polishVoiceInput = update.settings.polishVoiceInput ?? currentConfig.speechInput?.polishVoiceInput;
110
+ return polishVoiceInput === undefined ? {} : { polishVoiceInput };
111
+ }
106
112
  /**
107
113
  * Clear is credential-only: it copies the committed raw speech/cloud subtree
108
114
  * and removes only `apiKey`. Submitted nonsecret fields are validated but not
@@ -121,7 +127,7 @@ function applyClear(currentConfig) {
121
127
  return { ...currentConfig, speechInput: nextSpeech };
122
128
  }
123
129
  const UPDATE_KEYS = new Set(["expectedRevision", "settings", "credential"]);
124
- const SETTINGS_KEYS = new Set(["provider", "language", "cloud"]);
130
+ const SETTINGS_KEYS = new Set(["provider", "language", "polishVoiceInput", "cloud"]);
125
131
  const CLOUD_KEYS = new Set(["baseUrl", "model"]);
126
132
  function parseSpeechInputSettingsUpdate(value) {
127
133
  const record = requireRecord(value, "Speech input settings update must be an object");
@@ -155,9 +161,18 @@ function parseSettings(value) {
155
161
  }
156
162
  language = canonical;
157
163
  }
164
+ let polishVoiceInput;
165
+ if (Object.hasOwn(record, "polishVoiceInput")) {
166
+ const polishVoiceInputValue = record["polishVoiceInput"];
167
+ if (typeof polishVoiceInputValue !== "boolean") {
168
+ throw new SpeechInputSettingsValidationError("Speech input settings polishVoiceInput must be a boolean");
169
+ }
170
+ polishVoiceInput = polishVoiceInputValue;
171
+ }
158
172
  return {
159
173
  provider,
160
174
  ...(language === undefined ? {} : { language }),
175
+ ...(polishVoiceInput === undefined ? {} : { polishVoiceInput }),
161
176
  cloud: parseCloud(record["cloud"]),
162
177
  };
163
178
  }
@@ -1 +1 @@
1
- {"version":3,"file":"speechInputSettingsService.js","sourceRoot":"","sources":["../../../src/server/speechInput/speechInputSettingsService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"speechInputSettingsService.js","sourceRoot":"","sources":["../../../src/server/speechInput/speechInputSettingsService.ts"],"names":[],"mappings":"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"}