@hyperdreamer/pi-webui 1.13.0 → 1.14.0

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.
Files changed (50) hide show
  1. package/dist/cli.js +19 -4
  2. package/dist/cli.js.map +1 -1
  3. package/dist/client/assets/CodeViewer-BEbclxBf.js +4 -0
  4. package/dist/client/assets/{UnifiedDiffViewer--UWVARrK.js → UnifiedDiffViewer-DXWhrIST.js} +1 -1
  5. package/dist/client/assets/{index-DXa2f-o6.js → index-2EIg2vwJ.js} +574 -487
  6. package/dist/client/assets/{vendor-editor-core-vUi74DnD.js → vendor-editor-core-vyMPzMNA.js} +1 -1
  7. package/dist/client/assets/vendor-editor-languages-DlEQaRIv.js +46 -0
  8. package/dist/client/index.html +3 -3
  9. package/dist/config.js +288 -4
  10. package/dist/config.js.map +1 -1
  11. package/dist/configMutationCoordinator.js +357 -0
  12. package/dist/configMutationCoordinator.js.map +1 -0
  13. package/dist/server/app.js +64 -1
  14. package/dist/server/app.js.map +1 -1
  15. package/dist/server/configRoutes.js +84 -18
  16. package/dist/server/configRoutes.js.map +1 -1
  17. package/dist/server/index.js +15 -3
  18. package/dist/server/index.js.map +1 -1
  19. package/dist/server/machines/machineProxyRoutes.js +6 -9
  20. package/dist/server/machines/machineProxyRoutes.js.map +1 -1
  21. package/dist/server/sessiond/configMutationWriters.js +18 -0
  22. package/dist/server/sessiond/configMutationWriters.js.map +1 -0
  23. package/dist/server/sessiond.js +7 -7
  24. package/dist/server/sessiond.js.map +1 -1
  25. package/dist/server/sessions/modelTierSettingsRoutes.js +5 -1
  26. package/dist/server/sessions/modelTierSettingsRoutes.js.map +1 -1
  27. package/dist/server/sessions/utilityModelSettingsRoutes.js +5 -1
  28. package/dist/server/sessions/utilityModelSettingsRoutes.js.map +1 -1
  29. package/dist/server/speechInput/openAiCompatibleTranscriptionProvider.js +357 -0
  30. package/dist/server/speechInput/openAiCompatibleTranscriptionProvider.js.map +1 -0
  31. package/dist/server/speechInput/piCompatibleCredentialResolver.js +348 -0
  32. package/dist/server/speechInput/piCompatibleCredentialResolver.js.map +1 -0
  33. package/dist/server/speechInput/speechInputSettingsRoutes.js +39 -0
  34. package/dist/server/speechInput/speechInputSettingsRoutes.js.map +1 -0
  35. package/dist/server/speechInput/speechInputSettingsService.js +247 -0
  36. package/dist/server/speechInput/speechInputSettingsService.js.map +1 -0
  37. package/dist/server/speechInput/speechInputTranscriptionRoutes.js +226 -0
  38. package/dist/server/speechInput/speechInputTranscriptionRoutes.js.map +1 -0
  39. package/dist/server/speechInput/speechTranscriptionService.js +116 -0
  40. package/dist/server/speechInput/speechTranscriptionService.js.map +1 -0
  41. package/dist/shared/apiTypes.d.ts +54 -0
  42. package/dist/shared/apiTypes.js.map +1 -1
  43. package/dist/shared/speechInput.js +75 -0
  44. package/dist/shared/speechInput.js.map +1 -0
  45. package/dist/shared/speechInputAudio.js +42 -0
  46. package/dist/shared/speechInputAudio.js.map +1 -0
  47. package/docs/config.md +86 -1
  48. package/package.json +1 -1
  49. package/dist/client/assets/CodeViewer-B1Rl2AYu.js +0 -4
  50. package/dist/client/assets/vendor-editor-languages-DoaXUodB.js +0 -46
@@ -0,0 +1,357 @@
1
+ import { createHash, randomUUID } from "node:crypto";
2
+ import { chmodSync, closeSync, lstatSync, mkdirSync, openSync, realpathSync, statSync } from "node:fs";
3
+ import { performance } from "node:perf_hooks";
4
+ import { join, resolve } from "node:path";
5
+ import { DatabaseSync } from "node:sqlite";
6
+ import { loadPiWebUiConfig, piWebUiDataDir, piWebUiConfigPath, readRawSpeechInputSubtree, savePiWebUiConfig } from "./config.js";
7
+ /**
8
+ * Typed contention failure: the SQLite acquisition budget was exhausted. Config,
9
+ * model-tier, and utility-model mutation routes map this to a safe 503.
10
+ */
11
+ export class PiWebUiConfigMutationBusyError extends Error {
12
+ constructor() {
13
+ super("PI WEBUI config is busy. Try again.");
14
+ this.code = "PI_WEBUI_CONFIG_BUSY";
15
+ }
16
+ }
17
+ export const PI_WEBUI_CONFIG_MUTATION_LOCK_TIMEOUT_MS = 10_000;
18
+ export const PI_WEBUI_CONFIG_MUTATION_RETRY_MS = 25;
19
+ const CONFIG_MUTATIONS_CHILD = "config-mutations";
20
+ const STATE_TABLE_SQL = `
21
+ CREATE TABLE IF NOT EXISTS configMutationState (
22
+ id INTEGER PRIMARY KEY CHECK (id = 1),
23
+ speechInputRevision TEXT NOT NULL,
24
+ fileFingerprint TEXT NOT NULL
25
+ )`;
26
+ export function piWebUiConfigMutationDatabasePath(configPath, dataDir) {
27
+ const digest = createHash("sha256").update(configPath).digest("hex");
28
+ return join(dataDir, CONFIG_MUTATIONS_CHILD, `${digest}.sqlite`);
29
+ }
30
+ export function createPiWebUiConfigMutationCoordinator(options = {}) {
31
+ const configOptions = options.config ?? {};
32
+ const env = configOptions.env ?? process.env;
33
+ const cwd = configOptions.cwd ?? process.cwd();
34
+ const resolvedConfigPath = piWebUiConfigPath(env, cwd);
35
+ const dataDirInput = options.dataDir === undefined ? piWebUiDataDir(env, cwd) : resolve(cwd, options.dataDir);
36
+ mkdirSync(dataDirInput, { recursive: true });
37
+ const canonicalDataDir = realpathSync(dataDirInput);
38
+ validateCanonicalDataRoot(canonicalDataDir);
39
+ const mutationsDir = join(canonicalDataDir, CONFIG_MUTATIONS_CHILD);
40
+ ensureConfigMutationsChild(mutationsDir);
41
+ const databasePath = piWebUiConfigMutationDatabasePath(resolvedConfigPath, canonicalDataDir);
42
+ const now = options.now ?? (() => performance.now());
43
+ const scheduleRetry = options.scheduleRetry ?? defaultScheduleRetry;
44
+ const openDatabase = options.openDatabase ?? defaultOpenDatabase;
45
+ const readFileIdentity = options.readFileIdentity ?? defaultReadFileIdentity;
46
+ const createRevision = options.createRevision ?? randomUUID;
47
+ async function withAcquiredTransaction(run) {
48
+ // One monotonic ten-second budget for the entire acquisition; wall-clock
49
+ // adjustments cannot shorten or stretch it, and it is never reset between
50
+ // retries.
51
+ const deadline = now() + PI_WEBUI_CONFIG_MUTATION_LOCK_TIMEOUT_MS;
52
+ for (;;) {
53
+ // Enforced before every attempt and again after every retry wake; an
54
+ // attempt beginning exactly at the deadline is already past the budget.
55
+ if (now() >= deadline)
56
+ throw new PiWebUiConfigMutationBusyError();
57
+ let db;
58
+ let acquired = false;
59
+ try {
60
+ // Database opening and setup are part of the guarded attempt: SQLite
61
+ // can report busy from setup PRAGMAs as well as from BEGIN IMMEDIATE.
62
+ db = openDatabase(databasePath);
63
+ db.beginImmediate();
64
+ acquired = true;
65
+ return run(db);
66
+ }
67
+ catch (error) {
68
+ try {
69
+ // Roll back only an uncommitted acquired transaction; a setup
70
+ // failure never reaches rollback.
71
+ if (acquired && db !== undefined)
72
+ db.rollback();
73
+ }
74
+ catch {
75
+ // Close-only cleanup; the acquisition failure is what matters.
76
+ }
77
+ if (isSqliteBusy(error)) {
78
+ if (now() >= deadline)
79
+ throw new PiWebUiConfigMutationBusyError();
80
+ // Bound the retry delay to the remaining budget so a slow retry can
81
+ // never overshoot the deadline.
82
+ const remainingBudget = Math.max(0, deadline - now());
83
+ await scheduleRetryOnce(Math.min(PI_WEBUI_CONFIG_MUTATION_RETRY_MS, remainingBudget));
84
+ continue;
85
+ }
86
+ throw error;
87
+ }
88
+ finally {
89
+ // Every attempt closes its own handle, success or failure, so a
90
+ // long-lived process leaks no descriptor per coordinated operation.
91
+ db?.close();
92
+ }
93
+ }
94
+ }
95
+ function scheduleRetryOnce(delayMs) {
96
+ return new Promise((resolveRetry) => {
97
+ scheduleRetry(resolveRetry, delayMs);
98
+ });
99
+ }
100
+ function readSnapshot(db) {
101
+ const loaded = loadPiWebUiConfig(configOptions);
102
+ if (loaded.path !== resolvedConfigPath) {
103
+ throw new Error("PI WEBUI config path changed during coordinated access");
104
+ }
105
+ const fingerprint = fingerprintFor(readFileIdentity(resolvedConfigPath));
106
+ const stored = db.readState();
107
+ let speechInputRevision;
108
+ if (stored?.fileFingerprint !== fingerprint) {
109
+ // Offline/manual replacement or a crash after JSON rename leaves stale
110
+ // state; conservative rotation repairs the CAS revision.
111
+ speechInputRevision = createRevision();
112
+ db.writeState({ speechInputRevision, fileFingerprint: fingerprint });
113
+ }
114
+ else {
115
+ speechInputRevision = stored.speechInputRevision;
116
+ }
117
+ return { loaded, speechInputRevision };
118
+ }
119
+ return {
120
+ read: () => withAcquiredTransaction((db) => {
121
+ const snapshot = readSnapshot(db);
122
+ db.commit();
123
+ return snapshot;
124
+ }),
125
+ mutate: (mutate, mutationOptions = {}) => withAcquiredTransaction((db) => {
126
+ const before = readSnapshot(db);
127
+ const next = mutate(before);
128
+ // Compare the raw persisted speech subtree, never the parsed form:
129
+ // canonicalization or trimming from an unrelated write still counts as
130
+ // a persisted change and conservatively rotates the CAS revision.
131
+ const beforeRawSpeech = readRawSpeechInputSubtree(resolvedConfigPath);
132
+ savePiWebUiConfig(next, configOptions);
133
+ const after = loadPiWebUiConfig(configOptions);
134
+ if (after.path !== resolvedConfigPath) {
135
+ throw new Error("PI WEBUI config path changed during coordinated mutation");
136
+ }
137
+ const identity = readFileIdentity(resolvedConfigPath);
138
+ const fingerprint = fingerprintFor(identity);
139
+ const afterRawSpeech = readRawSpeechInputSubtree(resolvedConfigPath);
140
+ const speechChanged = !sameRawSpeechInput(beforeRawSpeech, afterRawSpeech);
141
+ const rotateSpeechInputRevision = speechChanged || mutationOptions.rotateSpeechInputRevision === true;
142
+ const speechInputRevision = rotateSpeechInputRevision ? createRevision() : before.speechInputRevision;
143
+ db.writeState({ speechInputRevision, fileFingerprint: fingerprint });
144
+ db.commit();
145
+ return { loaded: after, speechInputRevision };
146
+ }),
147
+ };
148
+ }
149
+ /**
150
+ * Field-by-field structural equality of the raw persisted speech subtree,
151
+ * order-independent and tolerant of unknown keys, so canonicalization or
152
+ * trimming performed by an unrelated write is still detected as a change.
153
+ */
154
+ function sameRawSpeechInput(a, b) {
155
+ if (a === b)
156
+ return true;
157
+ if (!isRawRecord(a) || !isRawRecord(b))
158
+ return false;
159
+ const aKeys = Object.keys(a);
160
+ const bKeys = Object.keys(b);
161
+ if (aKeys.length !== bKeys.length)
162
+ return false;
163
+ for (const key of aKeys) {
164
+ if (!Object.prototype.hasOwnProperty.call(b, key))
165
+ return false;
166
+ if (!sameRawSpeechInput(a[key], b[key]))
167
+ return false;
168
+ }
169
+ return true;
170
+ }
171
+ function isRawRecord(value) {
172
+ return typeof value === "object" && value !== null && !Array.isArray(value);
173
+ }
174
+ function fingerprintFor(identity) {
175
+ const hash = createHash("sha256");
176
+ hash.update("exists");
177
+ hash.update(identity.exists ? "1" : "0");
178
+ hash.update("device");
179
+ hash.update(identity.device);
180
+ hash.update("inode");
181
+ hash.update(identity.inode);
182
+ hash.update("size");
183
+ hash.update(identity.size);
184
+ hash.update("mtimeNs");
185
+ hash.update(identity.mtimeNs);
186
+ hash.update("ctimeNs");
187
+ hash.update(identity.ctimeNs);
188
+ return hash.digest("hex");
189
+ }
190
+ function defaultReadFileIdentity(path) {
191
+ try {
192
+ const stats = statSync(path, { bigint: true });
193
+ return {
194
+ exists: true,
195
+ device: stats.dev.toString(),
196
+ inode: stats.ino.toString(),
197
+ size: stats.size.toString(),
198
+ mtimeNs: stats.mtimeNs.toString(),
199
+ ctimeNs: stats.ctimeNs.toString(),
200
+ };
201
+ }
202
+ catch (error) {
203
+ if (isNodeErrorWithCode(error, "ENOENT")) {
204
+ return { exists: false, device: "", inode: "", size: "", mtimeNs: "", ctimeNs: "" };
205
+ }
206
+ throw error;
207
+ }
208
+ }
209
+ function validateCanonicalDataRoot(canonicalDataDir) {
210
+ const metadata = statSync(canonicalDataDir);
211
+ if (!metadata.isDirectory())
212
+ throw new Error("PI WEBUI data directory must be a directory");
213
+ if (process.platform === "win32")
214
+ return;
215
+ if (metadata.uid !== (process.geteuid?.() ?? -1)) {
216
+ throw new Error("PI WEBUI data directory must be owned by the PI WEBUI user");
217
+ }
218
+ if ((metadata.mode & 0o022) !== 0) {
219
+ throw new Error("PI WEBUI data directory must not be group or other writable");
220
+ }
221
+ }
222
+ function ensureConfigMutationsChild(childDir) {
223
+ let metadata;
224
+ try {
225
+ metadata = lstatSync(childDir);
226
+ }
227
+ catch (error) {
228
+ if (!isNodeErrorWithCode(error, "ENOENT"))
229
+ throw error;
230
+ mkdirSync(childDir, { mode: 0o700 });
231
+ chmodSync(childDir, 0o700);
232
+ return;
233
+ }
234
+ if (metadata.isSymbolicLink()) {
235
+ throw new Error("PI WEBUI config mutation directory must not be a symbolic link");
236
+ }
237
+ if (!metadata.isDirectory()) {
238
+ throw new Error("PI WEBUI config mutation directory must be a directory");
239
+ }
240
+ if (process.platform !== "win32") {
241
+ if (metadata.uid !== (process.geteuid?.() ?? -1)) {
242
+ throw new Error("PI WEBUI config mutation directory must be owned by the PI WEBUI user");
243
+ }
244
+ if ((metadata.mode & 0o077) !== 0) {
245
+ throw new Error("PI WEBUI config mutation directory must not be group or other writable");
246
+ }
247
+ }
248
+ }
249
+ /**
250
+ * Validate and prepare the private database file before SQLite opens it:
251
+ * reject symlinks, non-regular files, wrong-owner files, and multi-link
252
+ * files; precreate an absent file exclusively at 0600; tighten an accepted
253
+ * existing file to 0600.
254
+ */
255
+ function validateAndPrepareDatabaseFile(path) {
256
+ let metadata;
257
+ try {
258
+ metadata = lstatSync(path);
259
+ }
260
+ catch (error) {
261
+ if (!isNodeErrorWithCode(error, "ENOENT"))
262
+ throw error;
263
+ try {
264
+ const fd = openSync(path, "wx", 0o600);
265
+ closeSync(fd);
266
+ }
267
+ catch (precreateError) {
268
+ if (!isNodeErrorWithCode(precreateError, "EEXIST"))
269
+ throw precreateError;
270
+ }
271
+ metadata = lstatSync(path);
272
+ }
273
+ if (metadata.isSymbolicLink()) {
274
+ throw new Error("PI WEBUI config mutation database must not be a symbolic link");
275
+ }
276
+ if (!metadata.isFile()) {
277
+ throw new Error("PI WEBUI config mutation database must be a regular file");
278
+ }
279
+ if (process.platform !== "win32" && metadata.uid !== (process.geteuid?.() ?? -1)) {
280
+ throw new Error("PI WEBUI config mutation database must be owned by the PI WEBUI user");
281
+ }
282
+ if (metadata.nlink !== 1) {
283
+ throw new Error("PI WEBUI config mutation database must not have hard links");
284
+ }
285
+ chmodSync(path, 0o600);
286
+ }
287
+ class SqliteConfigMutationLockDatabase {
288
+ constructor(db) {
289
+ this.db = db;
290
+ }
291
+ beginImmediate() {
292
+ this.db.exec("BEGIN IMMEDIATE");
293
+ // The one-row state table is created only inside the transaction, so a
294
+ // busy failure can never leave a half-initialized schema behind.
295
+ this.db.exec(STATE_TABLE_SQL);
296
+ }
297
+ readState() {
298
+ const row = this.db.prepare("SELECT speechInputRevision, fileFingerprint FROM configMutationState WHERE id = 1").get();
299
+ if (!isStateRow(row))
300
+ return undefined;
301
+ return { speechInputRevision: row.speechInputRevision, fileFingerprint: row.fileFingerprint };
302
+ }
303
+ writeState(state) {
304
+ this.db.prepare("INSERT INTO configMutationState (id, speechInputRevision, fileFingerprint) VALUES (1, ?, ?) "
305
+ + "ON CONFLICT(id) DO UPDATE SET speechInputRevision = excluded.speechInputRevision, fileFingerprint = excluded.fileFingerprint").run(state.speechInputRevision, state.fileFingerprint);
306
+ }
307
+ commit() {
308
+ this.db.exec("COMMIT");
309
+ }
310
+ rollback() {
311
+ this.db.exec("ROLLBACK");
312
+ }
313
+ close() {
314
+ this.db.close();
315
+ }
316
+ }
317
+ function defaultOpenDatabase(path) {
318
+ validateAndPrepareDatabaseFile(path);
319
+ let db;
320
+ try {
321
+ db = new DatabaseSync(path);
322
+ // Nonblocking acquisition: SQLite reports SQLITE_BUSY immediately so this
323
+ // process can close the handle and retry on the event loop instead of
324
+ // blocking the gateway on an in-flight transaction elsewhere.
325
+ db.exec("PRAGMA busy_timeout = 0");
326
+ // The rollback journal stays inside the private owned child directory.
327
+ db.exec("PRAGMA journal_mode = DELETE");
328
+ return new SqliteConfigMutationLockDatabase(db);
329
+ }
330
+ catch (error) {
331
+ // A busy failure during setup (for example the journal-mode change needs
332
+ // the exclusive lock) must still close the constructed handle before the
333
+ // coordinator retries.
334
+ db?.close();
335
+ throw error;
336
+ }
337
+ }
338
+ function isStateRow(value) {
339
+ if (typeof value !== "object" || value === null)
340
+ return false;
341
+ if (!("speechInputRevision" in value) || !("fileFingerprint" in value))
342
+ return false;
343
+ return typeof value.speechInputRevision === "string" && typeof value.fileFingerprint === "string";
344
+ }
345
+ function isSqliteBusy(error) {
346
+ return error instanceof Error && "errcode" in error && typeof error.errcode === "number" && error.errcode === 5;
347
+ }
348
+ function defaultScheduleRetry(callback, delayMs) {
349
+ const timer = setTimeout(callback, delayMs);
350
+ return () => {
351
+ clearTimeout(timer);
352
+ };
353
+ }
354
+ function isNodeErrorWithCode(error, code) {
355
+ return error instanceof Error && "code" in error && error.code === code;
356
+ }
357
+ //# sourceMappingURL=configMutationCoordinator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configMutationCoordinator.js","sourceRoot":"","sources":["../src/configMutationCoordinator.ts"],"names":[],"mappings":"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"}
@@ -22,6 +22,11 @@ import { registerTerminalProxyRoutes } from "./terminalProxyRoutes.js";
22
22
  import { registerWorkspaceDeletionRoutes } from "./workspaces/workspaceDeletionRoutes.js";
23
23
  import { registerSystemInfoRoutes } from "./systemInfoRoutes.js";
24
24
  import { createFilePiWebUiConfigService, registerConfigRoutes, registerLocalMachineConfigRoutes } from "./configRoutes.js";
25
+ import { createPiWebUiConfigMutationCoordinator } from "../configMutationCoordinator.js";
26
+ import { createSpeechInputSettingsService } from "./speechInput/speechInputSettingsService.js";
27
+ import { registerSpeechInputSettingsRoutes } from "./speechInput/speechInputSettingsRoutes.js";
28
+ import { createSpeechTranscriptionService } from "./speechInput/speechTranscriptionService.js";
29
+ import { registerSpeechInputTranscriptionRoutes } from "./speechInput/speechInputTranscriptionRoutes.js";
25
30
  import { PiWebUiPluginService } from "./piWebUiPluginService.js";
26
31
  import { createActiveProfilePiPackageService } from "./piPackageService.js";
27
32
  import { createActiveProfilePiPackagePluginsConfigService } from "./piPackagePluginsConfigService.js";
@@ -172,6 +177,11 @@ function invalidatePiWebUiStatusOnWrite(config, statusCache) {
172
177
  statusCache.invalidate();
173
178
  return response;
174
179
  },
180
+ update: async (mutate) => {
181
+ const response = await config.update(mutate);
182
+ statusCache.invalidate();
183
+ return response;
184
+ },
175
185
  };
176
186
  }
177
187
  async function withProfileDependency(reply, operation) {
@@ -187,6 +197,41 @@ async function withProfileDependency(reply, operation) {
187
197
  function isApiPath(requestUrl) {
188
198
  return requestUrl === "/api" || requestUrl.startsWith("/api/") || requestUrl.startsWith("/api?");
189
199
  }
200
+ /**
201
+ * One lazy shared config mutation authority per app. When `injected` is
202
+ * supplied, that exact instance is returned unchanged, so the generic config
203
+ * service and the speech settings service receive the identical object rather
204
+ * than one of them wrapping it in a forwarding facade. Otherwise the real
205
+ * coordinator is created on first use against `pinnedEnv` (frozen from
206
+ * `process.env` when omitted, the same startup moment `src/server/index.ts`
207
+ * freezes its snapshot), so a live process.env change cannot move the
208
+ * coordinated paths away from the frozen startup snapshot and apps that
209
+ * never touch coordinated paths create no filesystem state.
210
+ */
211
+ export function sharedConfigMutationCoordinator(injected, pinnedEnv = Object.freeze({ ...process.env })) {
212
+ if (injected !== undefined)
213
+ return injected;
214
+ let created;
215
+ const resolve = () => {
216
+ created ??= createPiWebUiConfigMutationCoordinator({ config: { env: pinnedEnv } });
217
+ return created;
218
+ };
219
+ return {
220
+ read: () => resolve().read(),
221
+ mutate: (mutate, mutationOptions) => resolve().mutate(mutate, mutationOptions),
222
+ };
223
+ }
224
+ /**
225
+ * The production gateway composition: exactly one shared lazy coordinator,
226
+ * pinned to the frozen startup environment, handed to both the file-backed
227
+ * generic config service and (through `AppDependencies.configMutationCoordinator`)
228
+ * the speech settings service, so the normal startup path can never silently
229
+ * own a second mutation authority.
230
+ */
231
+ export function createGatewayConfigComposition(env, injectedCoordinator) {
232
+ const coordinator = injectedCoordinator ?? sharedConfigMutationCoordinator(undefined, env);
233
+ return { coordinator, config: createFilePiWebUiConfigService({ env }, coordinator) };
234
+ }
190
235
  export async function buildApp(deps = {}) {
191
236
  const app = Fastify({
192
237
  logger: deps.logger ?? true,
@@ -203,7 +248,14 @@ export async function buildApp(deps = {}) {
203
248
  await app.register(fastifyWebsocket);
204
249
  const projects = deps.projects ?? new ProjectService(new ProjectStore());
205
250
  const workspaces = deps.workspaces ?? new WorkspaceService();
206
- const configService = deps.config ?? createFilePiWebUiConfigService();
251
+ // One shared config mutation authority for the app: the generic config
252
+ // service and the speech settings service must never coordinate against
253
+ // different coordinators. An injected coordinator is used exactly as-is;
254
+ // otherwise construction stays lazy behind the shared instance so apps
255
+ // that never touch coordinated paths (including injected test apps)
256
+ // create no filesystem state in the real data directory.
257
+ const configMutationCoordinator = sharedConfigMutationCoordinator(deps.configMutationCoordinator);
258
+ const configService = deps.config ?? createFilePiWebUiConfigService(undefined, configMutationCoordinator);
207
259
  const readConfig = () => readEffectiveConfig(configService);
208
260
  const sessionDaemon = deps.sessionDaemon ?? new SessionDaemonClient();
209
261
  const agentProfileProvider = deps.agentProfileProvider ?? new SessionDaemonActiveAgentProfileProvider(sessionDaemon);
@@ -252,6 +304,17 @@ export async function buildApp(deps = {}) {
252
304
  const invalidatingConfigService = invalidatePiWebUiStatusOnWrite(configService, piWebUiStatusCache);
253
305
  registerConfigRoutes(app, invalidatingConfigService);
254
306
  registerLocalMachineConfigRoutes(app, invalidatingConfigService);
307
+ const speechInputSettingsService = deps.speechInputSettings ?? createSpeechInputSettingsService({
308
+ coordinator: configMutationCoordinator,
309
+ onCommitted: () => {
310
+ piWebUiStatusCache.invalidate();
311
+ },
312
+ });
313
+ registerSpeechInputSettingsRoutes(app, speechInputSettingsService);
314
+ const speechInputTranscriptionService = deps.speechInputTranscription ?? createSpeechTranscriptionService({
315
+ coordinator: configMutationCoordinator,
316
+ });
317
+ registerSpeechInputTranscriptionRoutes(app, speechInputTranscriptionService);
255
318
  registerMemoryRoutes(app, agentProfileProvider, "/api");
256
319
  registerMemoryRoutes(app, agentProfileProvider, "/api/machines/local");
257
320
  registerLearnedSkillsRoutes(app, agentProfileProvider, "/api");
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/server/app.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/server/app.ts"],"names":[],"mappings":"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"}