@sumicom/quicksave 0.8.8 → 0.8.10

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 (122) hide show
  1. package/dist/ai/cardBuilder.d.ts +65 -4
  2. package/dist/ai/cardBuilder.d.ts.map +1 -1
  3. package/dist/ai/cardBuilder.js +338 -28
  4. package/dist/ai/cardBuilder.js.map +1 -1
  5. package/dist/ai/claudeCliProvider.d.ts +15 -0
  6. package/dist/ai/claudeCliProvider.d.ts.map +1 -1
  7. package/dist/ai/claudeCliProvider.js +87 -3
  8. package/dist/ai/claudeCliProvider.js.map +1 -1
  9. package/dist/ai/claudeCodeProvider.d.ts +4 -0
  10. package/dist/ai/claudeCodeProvider.d.ts.map +1 -1
  11. package/dist/ai/claudeCodeProvider.js +41 -0
  12. package/dist/ai/claudeCodeProvider.js.map +1 -1
  13. package/dist/ai/claudeSdkProvider.d.ts +1 -0
  14. package/dist/ai/claudeSdkProvider.d.ts.map +1 -1
  15. package/dist/ai/claudeSdkProvider.js +14 -2
  16. package/dist/ai/claudeSdkProvider.js.map +1 -1
  17. package/dist/ai/claudeTerminal/cardSynth.d.ts +63 -0
  18. package/dist/ai/claudeTerminal/cardSynth.d.ts.map +1 -0
  19. package/dist/ai/claudeTerminal/cardSynth.js +92 -0
  20. package/dist/ai/claudeTerminal/cardSynth.js.map +1 -0
  21. package/dist/ai/claudeTerminal/hookBridge.d.ts +56 -0
  22. package/dist/ai/claudeTerminal/hookBridge.d.ts.map +1 -0
  23. package/dist/ai/claudeTerminal/hookBridge.js +131 -0
  24. package/dist/ai/claudeTerminal/hookBridge.js.map +1 -0
  25. package/dist/ai/claudeTerminal/hookHandler.d.ts +18 -0
  26. package/dist/ai/claudeTerminal/hookHandler.d.ts.map +1 -0
  27. package/dist/ai/claudeTerminal/hookHandler.js +124 -0
  28. package/dist/ai/claudeTerminal/hookHandler.js.map +1 -0
  29. package/dist/ai/claudeTerminal/index.d.ts +5 -0
  30. package/dist/ai/claudeTerminal/index.d.ts.map +1 -0
  31. package/dist/ai/claudeTerminal/index.js +7 -0
  32. package/dist/ai/claudeTerminal/index.js.map +1 -0
  33. package/dist/ai/claudeTerminal/jsonlTail.d.ts +40 -0
  34. package/dist/ai/claudeTerminal/jsonlTail.d.ts.map +1 -0
  35. package/dist/ai/claudeTerminal/jsonlTail.js +129 -0
  36. package/dist/ai/claudeTerminal/jsonlTail.js.map +1 -0
  37. package/dist/ai/claudeTerminal/provider.d.ts +106 -0
  38. package/dist/ai/claudeTerminal/provider.d.ts.map +1 -0
  39. package/dist/ai/claudeTerminal/provider.js +579 -0
  40. package/dist/ai/claudeTerminal/provider.js.map +1 -0
  41. package/dist/ai/claudeTerminal/settingsBuilder.d.ts +44 -0
  42. package/dist/ai/claudeTerminal/settingsBuilder.d.ts.map +1 -0
  43. package/dist/ai/claudeTerminal/settingsBuilder.js +40 -0
  44. package/dist/ai/claudeTerminal/settingsBuilder.js.map +1 -0
  45. package/dist/ai/codexAppServer/cardAdapter.d.ts.map +1 -1
  46. package/dist/ai/codexAppServer/cardAdapter.js +13 -5
  47. package/dist/ai/codexAppServer/cardAdapter.js.map +1 -1
  48. package/dist/ai/codexAppServer/provider.d.ts +10 -2
  49. package/dist/ai/codexAppServer/provider.d.ts.map +1 -1
  50. package/dist/ai/codexAppServer/provider.js +158 -22
  51. package/dist/ai/codexAppServer/provider.js.map +1 -1
  52. package/dist/ai/openCodeProvider.d.ts +106 -0
  53. package/dist/ai/openCodeProvider.d.ts.map +1 -0
  54. package/dist/ai/openCodeProvider.js +617 -0
  55. package/dist/ai/openCodeProvider.js.map +1 -0
  56. package/dist/ai/openCodeServer.d.ts +88 -0
  57. package/dist/ai/openCodeServer.d.ts.map +1 -0
  58. package/dist/ai/openCodeServer.js +350 -0
  59. package/dist/ai/openCodeServer.js.map +1 -0
  60. package/dist/ai/profiles/project-sandbox.sb +26 -0
  61. package/dist/ai/provider.d.ts +54 -1
  62. package/dist/ai/provider.d.ts.map +1 -1
  63. package/dist/ai/provider.js +10 -0
  64. package/dist/ai/provider.js.map +1 -1
  65. package/dist/ai/queuedUserPrompts.d.ts +8 -0
  66. package/dist/ai/queuedUserPrompts.d.ts.map +1 -0
  67. package/dist/ai/queuedUserPrompts.js +19 -0
  68. package/dist/ai/queuedUserPrompts.js.map +1 -0
  69. package/dist/ai/realtimeTranscription.d.ts +39 -0
  70. package/dist/ai/realtimeTranscription.d.ts.map +1 -0
  71. package/dist/ai/realtimeTranscription.js +154 -0
  72. package/dist/ai/realtimeTranscription.js.map +1 -0
  73. package/dist/ai/sandboxMcp.d.ts +7 -0
  74. package/dist/ai/sandboxMcp.d.ts.map +1 -1
  75. package/dist/ai/sandboxMcp.js +4 -0
  76. package/dist/ai/sandboxMcp.js.map +1 -1
  77. package/dist/ai/sandboxMcpStdio.d.ts +1 -1
  78. package/dist/ai/sandboxMcpStdio.js +120 -47
  79. package/dist/ai/sandboxMcpStdio.js.map +1 -1
  80. package/dist/ai/sessionManager.d.ts +20 -1
  81. package/dist/ai/sessionManager.d.ts.map +1 -1
  82. package/dist/ai/sessionManager.js +220 -10
  83. package/dist/ai/sessionManager.js.map +1 -1
  84. package/dist/ai/sessionRegistry.d.ts +6 -0
  85. package/dist/ai/sessionRegistry.d.ts.map +1 -1
  86. package/dist/ai/sessionRegistry.js +13 -0
  87. package/dist/ai/sessionRegistry.js.map +1 -1
  88. package/dist/ai/sessionRegistryLocator.d.ts +14 -0
  89. package/dist/ai/sessionRegistryLocator.d.ts.map +1 -0
  90. package/dist/ai/sessionRegistryLocator.js +44 -0
  91. package/dist/ai/sessionRegistryLocator.js.map +1 -0
  92. package/dist/ai/systemPrompt.d.ts.map +1 -1
  93. package/dist/ai/systemPrompt.js +2 -1
  94. package/dist/ai/systemPrompt.js.map +1 -1
  95. package/dist/ai/voiceStream.d.ts +74 -0
  96. package/dist/ai/voiceStream.d.ts.map +1 -0
  97. package/dist/ai/voiceStream.js +179 -0
  98. package/dist/ai/voiceStream.js.map +1 -0
  99. package/dist/ai/voiceTranscription.d.ts +33 -0
  100. package/dist/ai/voiceTranscription.d.ts.map +1 -0
  101. package/dist/ai/voiceTranscription.js +122 -0
  102. package/dist/ai/voiceTranscription.js.map +1 -0
  103. package/dist/files/fileBrowser.d.ts.map +1 -1
  104. package/dist/files/fileBrowser.js +15 -2
  105. package/dist/files/fileBrowser.js.map +1 -1
  106. package/dist/handlers/legacyBusAdapter.d.ts +1 -1
  107. package/dist/handlers/legacyBusAdapter.d.ts.map +1 -1
  108. package/dist/handlers/legacyBusAdapter.js +7 -1
  109. package/dist/handlers/legacyBusAdapter.js.map +1 -1
  110. package/dist/handlers/messageHandler.d.ts +6 -0
  111. package/dist/handlers/messageHandler.d.ts.map +1 -1
  112. package/dist/handlers/messageHandler.js +119 -8
  113. package/dist/handlers/messageHandler.js.map +1 -1
  114. package/dist/index.js +2 -2
  115. package/dist/index.js.map +1 -1
  116. package/dist/service/ipcClient.js +1 -1
  117. package/dist/service/ipcClient.js.map +1 -1
  118. package/dist/service/run.d.ts.map +1 -1
  119. package/dist/service/run.js +81 -3
  120. package/dist/service/run.js.map +1 -1
  121. package/dist/service/types.js +1 -1
  122. package/package.json +6 -3
@@ -0,0 +1,179 @@
1
+ import { RealtimeTranscriber } from './realtimeTranscription.js';
2
+ /**
3
+ * Decide whether a DataChannel frame is binary audio or a JSON control
4
+ * message. Extracted (and pure) so it can be unit-tested without WebRTC.
5
+ */
6
+ export function classifyVoiceDcData(data) {
7
+ if (typeof data === 'string') {
8
+ try {
9
+ const msg = JSON.parse(data);
10
+ if (msg && typeof msg.t === 'string')
11
+ return { kind: 'control', msg };
12
+ }
13
+ catch {
14
+ /* fall through */
15
+ }
16
+ return { kind: 'ignore' };
17
+ }
18
+ if (data instanceof ArrayBuffer)
19
+ return { kind: 'audio', bytes: Buffer.from(data) };
20
+ if (ArrayBuffer.isView(data)) {
21
+ const view = data;
22
+ return { kind: 'audio', bytes: Buffer.from(view.buffer, view.byteOffset, view.byteLength) };
23
+ }
24
+ if (Buffer.isBuffer(data))
25
+ return { kind: 'audio', bytes: data };
26
+ return { kind: 'ignore' };
27
+ }
28
+ /**
29
+ * Probe this machine's voice capability for the handshake ack. Batch
30
+ * transcription is always available in this build; streaming additionally
31
+ * requires the optional native WebRTC dependency to load.
32
+ */
33
+ export async function probeAudioSupport() {
34
+ return { transcription: true, streaming: (await loadWrtc()) !== null };
35
+ }
36
+ /** STUN servers from env (comma-separated) or a public default. No TURN. */
37
+ function iceServers() {
38
+ const env = process.env.QUICKSAVE_VOICE_STUN?.trim();
39
+ const urls = env ? env.split(',').map((s) => s.trim()).filter(Boolean) : ['stun:stun.l.google.com:19302'];
40
+ return urls.map((u) => ({ urls: u }));
41
+ }
42
+ let wrtcCache;
43
+ async function loadWrtc() {
44
+ if (wrtcCache !== undefined)
45
+ return wrtcCache;
46
+ try {
47
+ const mod = (await import('@roamhq/wrtc'));
48
+ wrtcCache = (mod.default ?? mod);
49
+ }
50
+ catch {
51
+ wrtcCache = null;
52
+ }
53
+ return wrtcCache;
54
+ }
55
+ /**
56
+ * Manages per-session WebRTC peers and their ASR bridges. One instance is
57
+ * created per agent process; `wireVoiceStream` registers the bus handlers.
58
+ */
59
+ export class VoiceStreamManager {
60
+ bus;
61
+ peers = new Map();
62
+ constructor(bus) {
63
+ this.bus = bus;
64
+ }
65
+ /** Whether streaming is available (native WebRTC loadable) on this host. */
66
+ async available() {
67
+ return (await loadWrtc()) !== null;
68
+ }
69
+ /** Handle a WebRTC offer; returns the SDP answer (or an error). */
70
+ async connect(sessionId, offerSdp) {
71
+ const wrtc = await loadWrtc();
72
+ if (!wrtc)
73
+ return { error: 'Streaming voice is unavailable on this agent.' };
74
+ this.teardown(sessionId); // replace any stale peer for this session
75
+ const pc = new wrtc.RTCPeerConnection({ iceServers: iceServers() });
76
+ const peer = { pc, transcriber: null };
77
+ this.peers.set(sessionId, peer);
78
+ pc.onicecandidate = (e) => {
79
+ const candidate = e.candidate ? JSON.stringify(e.candidate) : null;
80
+ this.bus.publish(`/voice/rtc/${sessionId}`, { candidate });
81
+ };
82
+ pc.ondatachannel = (e) => this.wireDataChannel(sessionId, peer, e.channel);
83
+ pc.onconnectionstatechange = () => {
84
+ if (['failed', 'closed', 'disconnected'].includes(pc.connectionState))
85
+ this.teardown(sessionId);
86
+ };
87
+ try {
88
+ await pc.setRemoteDescription({ type: 'offer', sdp: offerSdp });
89
+ const answer = await pc.createAnswer();
90
+ await pc.setLocalDescription(answer);
91
+ return { sdp: answer.sdp };
92
+ }
93
+ catch (err) {
94
+ this.teardown(sessionId);
95
+ return { error: err instanceof Error ? err.message : 'Failed to negotiate WebRTC connection.' };
96
+ }
97
+ }
98
+ /** Add a trickled ICE candidate from the PWA. */
99
+ async addIce(sessionId, candidate) {
100
+ const peer = this.peers.get(sessionId);
101
+ if (!peer)
102
+ return { ok: false, error: 'No active voice session.' };
103
+ if (candidate === null)
104
+ return { ok: true }; // end-of-candidates marker
105
+ try {
106
+ await peer.pc.addIceCandidate(JSON.parse(candidate));
107
+ return { ok: true };
108
+ }
109
+ catch (err) {
110
+ return { ok: false, error: err instanceof Error ? err.message : 'Bad ICE candidate.' };
111
+ }
112
+ }
113
+ wireDataChannel(sessionId, peer, channel) {
114
+ const sendDc = (msg) => {
115
+ try {
116
+ channel.send(JSON.stringify(msg));
117
+ }
118
+ catch {
119
+ /* channel may have closed */
120
+ }
121
+ };
122
+ channel.onmessage = (e) => {
123
+ const inbound = classifyVoiceDcData(e.data);
124
+ if (inbound.kind === 'audio') {
125
+ peer.transcriber?.appendAudio(inbound.bytes);
126
+ return;
127
+ }
128
+ if (inbound.kind !== 'control')
129
+ return;
130
+ const msg = inbound.msg;
131
+ if (msg.t === 'start') {
132
+ this.startUtterance(peer, msg.config, msg.sampleRate, sendDc);
133
+ }
134
+ else if (msg.t === 'stop') {
135
+ peer.transcriber?.commit();
136
+ }
137
+ };
138
+ channel.onclose = () => this.teardown(sessionId);
139
+ }
140
+ startUtterance(peer, config, sampleRate, sendDc) {
141
+ peer.transcriber?.close();
142
+ peer.transcriber = new RealtimeTranscriber(config, sampleRate, {
143
+ onPartial: (text) => sendDc({ t: 'transcript', final: false, text }),
144
+ onFinal: (text) => sendDc({ t: 'transcript', final: true, text }),
145
+ onError: (message) => sendDc({ t: 'error', message }),
146
+ });
147
+ peer.transcriber.start();
148
+ }
149
+ teardown(sessionId) {
150
+ const peer = this.peers.get(sessionId);
151
+ if (!peer)
152
+ return;
153
+ this.peers.delete(sessionId);
154
+ peer.transcriber?.close();
155
+ try {
156
+ peer.pc.close();
157
+ }
158
+ catch {
159
+ /* already closed */
160
+ }
161
+ }
162
+ /** Close all peers (process shutdown). */
163
+ closeAll() {
164
+ for (const id of [...this.peers.keys()])
165
+ this.teardown(id);
166
+ }
167
+ }
168
+ /**
169
+ * Register the streaming-voice signaling verbs on the bus. Kept separate from
170
+ * `wireLegacyBusVerbs` because these need async ICE pushes via `bus.publish`,
171
+ * which the MessageHandler dispatch path does not expose.
172
+ */
173
+ export function wireVoiceStream(bus) {
174
+ const manager = new VoiceStreamManager(bus);
175
+ bus.onCommand('voice:rtc-connect', (payload) => manager.connect(payload.sessionId, payload.sdp));
176
+ bus.onCommand('voice:rtc-ice', (payload) => manager.addIce(payload.sessionId, payload.candidate));
177
+ return manager;
178
+ }
179
+ //# sourceMappingURL=voiceStream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"voiceStream.js","sourceRoot":"","sources":["../../src/ai/voiceStream.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Agent-side voice transcription against a Whisper-compatible API.
3
+ *
4
+ * Runs on the agent (Node) rather than the PWA so there is no browser CORS
5
+ * constraint — OpenAI's hosted endpoint and self-hosted servers both work.
6
+ * The PWA sends the recording + the user's config; nothing is persisted here.
7
+ */
8
+ import type { VoiceConfig } from '@sumicom/quicksave-shared';
9
+ /** Below this the audio is effectively empty (decodes to 0 seconds). */
10
+ export declare const MIN_AUDIO_BYTES = 1024;
11
+ export declare class VoiceTranscriptionError extends Error {
12
+ readonly cause?: unknown | undefined;
13
+ constructor(message: string, cause?: unknown | undefined);
14
+ }
15
+ /** True when the config has the minimum needed for batch transcription. */
16
+ export declare function isVoiceConfigUsable(config: VoiceConfig | null | undefined): config is VoiceConfig;
17
+ /**
18
+ * Transcribe audio bytes to text. Posts multipart/form-data to
19
+ * `{baseUrl}/audio/transcriptions` (OpenAI Whisper API shape).
20
+ *
21
+ * @throws {VoiceTranscriptionError} on misconfiguration, network failure,
22
+ * non-2xx, or a response missing a usable `text` field.
23
+ */
24
+ export declare function transcribeAudio(audio: Buffer | Uint8Array, mimeType: string, config: VoiceConfig): Promise<string>;
25
+ /**
26
+ * List model ids from `GET {baseUrl}/models` (OpenAI-compatible). Used to
27
+ * populate the model dropdown in Settings.
28
+ *
29
+ * @throws {VoiceTranscriptionError} on misconfiguration, network/CORS-free
30
+ * failure, non-2xx, or an unrecognizable response shape.
31
+ */
32
+ export declare function listModels(config: VoiceConfig): Promise<string[]>;
33
+ //# sourceMappingURL=voiceTranscription.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"voiceTranscription.d.ts","sourceRoot":"","sources":["../../src/ai/voiceTranscription.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAE7D,wEAAwE;AACxE,eAAO,MAAM,eAAe,OAAO,CAAC;AAEpC,qBAAa,uBAAwB,SAAQ,KAAK;IACnB,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO;gBAAzC,OAAO,EAAE,MAAM,EAAW,KAAK,CAAC,EAAE,OAAO,YAAA;CAItD;AAED,2EAA2E;AAC3E,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,IAAI,WAAW,CAEjG;AAqBD;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,KAAK,EAAE,MAAM,GAAG,UAAU,EAC1B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,MAAM,CAAC,CA8CjB;AAED;;;;;;GAMG;AACH,wBAAsB,UAAU,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAoCvE"}
@@ -0,0 +1,122 @@
1
+ /** Below this the audio is effectively empty (decodes to 0 seconds). */
2
+ export const MIN_AUDIO_BYTES = 1024;
3
+ export class VoiceTranscriptionError extends Error {
4
+ cause;
5
+ constructor(message, cause) {
6
+ super(message);
7
+ this.cause = cause;
8
+ this.name = 'VoiceTranscriptionError';
9
+ }
10
+ }
11
+ /** True when the config has the minimum needed for batch transcription. */
12
+ export function isVoiceConfigUsable(config) {
13
+ return !!config && config.baseUrl.trim().length > 0 && config.transcribeModel.trim().length > 0;
14
+ }
15
+ /** Join base URL + path without doubling or dropping the slash. */
16
+ function apiUrl(baseUrl, path) {
17
+ return `${baseUrl.trim().replace(/\/+$/, '')}${path}`;
18
+ }
19
+ function authHeaders(config) {
20
+ const headers = {};
21
+ if (config.apiKey.trim())
22
+ headers.Authorization = `Bearer ${config.apiKey.trim()}`;
23
+ return headers;
24
+ }
25
+ async function errorDetail(res) {
26
+ try {
27
+ return (await res.text()).slice(0, 300);
28
+ }
29
+ catch {
30
+ return '';
31
+ }
32
+ }
33
+ /**
34
+ * Transcribe audio bytes to text. Posts multipart/form-data to
35
+ * `{baseUrl}/audio/transcriptions` (OpenAI Whisper API shape).
36
+ *
37
+ * @throws {VoiceTranscriptionError} on misconfiguration, network failure,
38
+ * non-2xx, or a response missing a usable `text` field.
39
+ */
40
+ export async function transcribeAudio(audio, mimeType, config) {
41
+ if (!isVoiceConfigUsable(config)) {
42
+ throw new VoiceTranscriptionError('Voice transcription is not configured.');
43
+ }
44
+ // Reject effectively-empty audio before spending an API round-trip — a
45
+ // near-empty container decodes to 0 seconds and the API rejects it anyway.
46
+ if (audio.length < MIN_AUDIO_BYTES) {
47
+ throw new VoiceTranscriptionError('No speech captured.');
48
+ }
49
+ const ext = mimeType.includes('mp4') ? 'mp4' : mimeType.includes('ogg') ? 'ogg' : 'webm';
50
+ const form = new FormData();
51
+ form.append('file', new Blob([audio], { type: mimeType || 'audio/webm' }), `recording.${ext}`);
52
+ form.append('model', config.transcribeModel.trim());
53
+ form.append('response_format', 'json');
54
+ let res;
55
+ try {
56
+ res = await fetch(apiUrl(config.baseUrl, '/audio/transcriptions'), {
57
+ method: 'POST',
58
+ headers: authHeaders(config),
59
+ body: form,
60
+ });
61
+ }
62
+ catch (err) {
63
+ throw new VoiceTranscriptionError('Could not reach the transcription server.', err);
64
+ }
65
+ if (!res.ok) {
66
+ const detail = await errorDetail(res);
67
+ throw new VoiceTranscriptionError(`Transcription failed (${res.status})${detail ? `: ${detail}` : ''}`);
68
+ }
69
+ let payload;
70
+ try {
71
+ payload = await res.json();
72
+ }
73
+ catch (err) {
74
+ throw new VoiceTranscriptionError('Transcription server returned an invalid response.', err);
75
+ }
76
+ const text = payload?.text;
77
+ if (typeof text !== 'string') {
78
+ throw new VoiceTranscriptionError('Transcription response did not contain text.');
79
+ }
80
+ return text.trim();
81
+ }
82
+ /**
83
+ * List model ids from `GET {baseUrl}/models` (OpenAI-compatible). Used to
84
+ * populate the model dropdown in Settings.
85
+ *
86
+ * @throws {VoiceTranscriptionError} on misconfiguration, network/CORS-free
87
+ * failure, non-2xx, or an unrecognizable response shape.
88
+ */
89
+ export async function listModels(config) {
90
+ if (!config.baseUrl.trim()) {
91
+ throw new VoiceTranscriptionError('No API base URL configured.');
92
+ }
93
+ let res;
94
+ try {
95
+ res = await fetch(apiUrl(config.baseUrl, '/models'), { headers: authHeaders(config) });
96
+ }
97
+ catch (err) {
98
+ throw new VoiceTranscriptionError('Could not reach the model list endpoint.', err);
99
+ }
100
+ if (!res.ok) {
101
+ const detail = await errorDetail(res);
102
+ throw new VoiceTranscriptionError(`Listing models failed (${res.status})${detail ? `: ${detail}` : ''}`);
103
+ }
104
+ let payload;
105
+ try {
106
+ payload = await res.json();
107
+ }
108
+ catch (err) {
109
+ throw new VoiceTranscriptionError('Model list endpoint returned an invalid response.', err);
110
+ }
111
+ // OpenAI shape: { data: [{ id }, ...] }. Some servers return a bare array.
112
+ const data = Array.isArray(payload)
113
+ ? payload
114
+ : payload?.data;
115
+ if (!Array.isArray(data)) {
116
+ throw new VoiceTranscriptionError('Model list response was not in a recognized format.');
117
+ }
118
+ return data
119
+ .map((m) => (typeof m === 'string' ? m : m?.id))
120
+ .filter((id) => typeof id === 'string' && id.length > 0);
121
+ }
122
+ //# sourceMappingURL=voiceTranscription.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"voiceTranscription.js","sourceRoot":"","sources":["../../src/ai/voiceTranscription.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"fileBrowser.d.ts","sourceRoot":"","sources":["../../src/files/fileBrowser.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;GAgBG;AAKH,OAAO,KAAK,EAGV,uBAAuB,EACvB,wBAAwB,EACxB,uBAAuB,EACvB,wBAAwB,EACzB,MAAM,2BAA2B,CAAC;AA+BnC,qBAAa,WAAW;IAChB,IAAI,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,wBAAwB,CAAC;IAoCzE,IAAI,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,wBAAwB,CAAC;CAqEhF;AA2ED,wBAAgB,cAAc,IAAI,WAAW,CAG5C;AAED,wBAAgB,wBAAwB,IAAI,IAAI,CAE/C"}
1
+ {"version":3,"file":"fileBrowser.d.ts","sourceRoot":"","sources":["../../src/files/fileBrowser.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;GAgBG;AAKH,OAAO,KAAK,EAGV,uBAAuB,EACvB,wBAAwB,EACxB,uBAAuB,EACvB,wBAAwB,EACzB,MAAM,2BAA2B,CAAC;AAsCnC,qBAAa,WAAW;IAChB,IAAI,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,wBAAwB,CAAC;IAoCzE,IAAI,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,wBAAwB,CAAC;CA6EhF;AA2ED,wBAAgB,cAAc,IAAI,WAAW,CAG5C;AAED,wBAAgB,wBAAwB,IAAI,IAAI,CAE/C"}
@@ -24,8 +24,9 @@ const DEFAULT_PREVIEW_BYTES = 100 * 1024;
24
24
  /** Absolute ceiling on `maxBytes` regardless of what the PWA asks for. */
25
25
  const HARD_PREVIEW_BYTES = 512 * 1024;
26
26
  /** Larger ceiling when the caller opts in to image inlining (`allowImage`).
27
- * base64 inflates by ~33%, so 4 MiB on the wire 3 MiB of source pixels. */
28
- const HARD_IMAGE_BYTES = 4 * 1024 * 1024;
27
+ * Base64 inflates by ~33%, so 16 MiB of source pixels is ~21 MiB before
28
+ * transport compression. */
29
+ const HARD_IMAGE_BYTES = 16 * 1024 * 1024;
29
30
  /** Bytes to sniff when classifying a file as text vs binary (NUL byte = binary). */
30
31
  const SNIFF_BYTES = 8 * 1024;
31
32
  /** Extensions we recognise for inline image rendering. SVG is text and is
@@ -46,6 +47,11 @@ function imageMimeFor(absPath) {
46
47
  return undefined;
47
48
  return IMAGE_EXT_TO_MIME[absPath.slice(dot + 1).toLowerCase()];
48
49
  }
50
+ /** Weak ETag built from stat metadata. Same shape that the PWA produces
51
+ * from a cached response — keep both sides in sync. */
52
+ function etagOf(meta) {
53
+ return `${meta.mtime}-${meta.size}`;
54
+ }
49
55
  export class FileBrowser {
50
56
  async list(payload) {
51
57
  try {
@@ -98,6 +104,13 @@ export class FileBrowser {
98
104
  size: stats.size,
99
105
  mtime: Math.floor(stats.mtimeMs),
100
106
  };
107
+ // Conditional revalidation — HTTP-style If-None-Match. Caller sends
108
+ // "${mtime}-${size}" from a prior cached read; if the file is
109
+ // unchanged, we skip the disk read entirely and the PWA reuses its
110
+ // cached body. Saves both the readFile() and the on-wire payload.
111
+ if (payload.ifNoneMatch && payload.ifNoneMatch === etagOf(meta)) {
112
+ return { success: true, ...meta, notModified: true };
113
+ }
101
114
  // Image branch — opt-in via `allowImage`. We use a separate, larger
102
115
  // cap because images legitimately exceed the 100 KiB text preview
103
116
  // budget, but we still bound it so a stray multi-MB asset can't
@@ -1 +1 @@
1
- {"version":3,"file":"fileBrowser.js","sourceRoot":"","sources":["../../src/files/fileBrowser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fileBrowser.js","sourceRoot":"","sources":["../../src/files/fileBrowser.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD,+BAA+B;AAC/B;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAErE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUhD,0DAA0D;AAC1D,MAAM,qBAAqB,GAAG,GAAG,GAAG,IAAI,CAAC;AACzC,0EAA0E;AAC1E,MAAM,kBAAkB,GAAG,GAAG,GAAG,IAAI,CAAC;AACtC;;6BAE6B;AAC7B,MAAM,gBAAgB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAC1C,oFAAoF;AACpF,MAAM,WAAW,GAAG,CAAC,GAAG,IAAI,CAAC;AAE7B;gEACgE;AAChE,MAAM,iBAAiB,GAA2B;IAChD,GAAG,EAAE,WAAW;IAChB,GAAG,EAAE,YAAY;IACjB,IAAI,EAAE,YAAY;IAClB,GAAG,EAAE,WAAW;IAChB,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE,YAAY;IAClB,GAAG,EAAE,WAAW;IAChB,GAAG,EAAE,cAAc;CACpB,CAAC;AAEF,SAAS,YAAY,CAAC,OAAe;IACnC,MAAM,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACrC,IAAI,GAAG,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IAC9B,OAAO,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AACjE,CAAC;AAED;wDACwD;AACxD,SAAS,MAAM,CAAC,IAAqC;IACnD,OAAO,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;AACtC,CAAC;AAED,MAAM,OAAO,WAAW;IACtB,KAAK,CAAC,IAAI,CAAC,OAAgC;QACzC,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;YACjE,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,CAAC;YACpC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACzB,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,GAAG,EAAE,OAAO,CAAC,GAAG;oBAChB,IAAI,EAAE,OAAO,CAAC,IAAI;oBAClB,KAAK,EAAE,iBAAiB;iBACzB,CAAC;YACJ,CAAC;YAED,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,SAAS,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;YAClE,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAChD,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAExB,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,YAAY,EAAE,SAAS;gBACvB,OAAO;aACR,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;aACxD,CAAC;QACJ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAAgC;QACzC,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;YACjE,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,CAAC;YACpC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;gBACpB,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,GAAG,EAAE,OAAO,CAAC,GAAG;oBAChB,IAAI,EAAE,OAAO,CAAC,IAAI;oBAClB,KAAK,EAAE,oBAAoB;iBAC5B,CAAC;YACJ,CAAC;YAED,MAAM,IAAI,GAAG;gBACX,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC;aACjC,CAAC;YAEF,oEAAoE;YACpE,8DAA8D;YAC9D,mEAAmE;YACnE,kEAAkE;YAClE,IAAI,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,WAAW,KAAK,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;gBAChE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;YACvD,CAAC;YAED,oEAAoE;YACpE,kEAAkE;YAClE,gEAAgE;YAChE,wBAAwB;YACxB,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC3E,IAAI,SAAS,EAAE,CAAC;gBACd,IAAI,KAAK,CAAC,IAAI,GAAG,gBAAgB,EAAE,CAAC;oBAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;gBACvD,CAAC;gBACD,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,CAAC;gBACtC,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,GAAG,IAAI;oBACP,IAAI,EAAE,OAAO;oBACb,OAAO,EAAE,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC;oBAC/B,QAAQ,EAAE,QAAQ;oBAClB,QAAQ,EAAE,SAAS;iBACpB,CAAC;YACJ,CAAC;YAED,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,IAAI,qBAAqB,CAAC;YAC5D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC,CAAC;YAEjE,IAAI,KAAK,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC;gBACrB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;YACvD,CAAC;YAED,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,CAAC;YACtC,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBAClB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;YACpD,CAAC;YAED,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,GAAG,IAAI;gBACP,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAC9B,QAAQ,EAAE,OAAO;aAClB,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;aACxD,CAAC;QACJ,CAAC;IACH,CAAC;CACF;AAED;;;;;;;;;;GAUG;AACH,KAAK,UAAU,aAAa,CAAC,GAAW,EAAE,OAAe;IACvD,IAAI,OAAO,IAAI,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,OAAO,CAAC;IACnD,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC3D,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7C,OAAO,OAAO,CAAC,OAAO,EAAE,OAAO,IAAI,GAAG,CAAC,CAAC;AAC1C,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,MAAc,EAAE,MAAc;IACzD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IACzB,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACnC,0EAA0E;IAC1E,6EAA6E;IAC7E,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IAC7C,IAAI,CAAC,CAAC,EAAE,CAAC;QACP,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IAC/D,CAAC;IACD,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;IACpB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IACpC,IAAI,MAAM,CAAC,cAAc,EAAE,EAAE,CAAC;QAC5B,OAAO;YACL,IAAI;YACJ,IAAI,EAAE,SAAS;YACf,IAAI;YACJ,KAAK;YACL,iBAAiB,EAAE,CAAC,CAAC,WAAW,EAAE;SACnC,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;QACpB,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC;IACrD,CAAC;IACD,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;QACf,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,GAAG,qBAAqB,EAAE,CAAC;IACtF,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AAC9C,CAAC;AAED,SAAS,UAAU,CAAC,CAAS;IAC3B,IAAI,CAAC,CAAC,WAAW,EAAE;QAAE,OAAO,WAAW,CAAC;IACxC,IAAI,CAAC,CAAC,cAAc,EAAE;QAAE,OAAO,SAAS,CAAC;IACzC,IAAI,CAAC,CAAC,MAAM,EAAE;QAAE,OAAO,MAAM,CAAC;IAC9B,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,SAAS,CAAC,CAAY,EAAE,CAAY;IAC3C,MAAM,IAAI,GAAG,CAAC,CAAgB,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/D,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IACtB,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,QAAQ,CAAC,GAAW;IAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAC9C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7B,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;IAChC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,IAAI,SAAS,GAAuB,IAAI,CAAC;AAEzC,MAAM,UAAU,cAAc;IAC5B,IAAI,CAAC,SAAS;QAAE,SAAS,GAAG,IAAI,WAAW,EAAE,CAAC;IAC9C,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,wBAAwB;IACtC,SAAS,GAAG,IAAI,CAAC;AACnB,CAAC"}
@@ -9,7 +9,7 @@ import type { MessageHandler } from './messageHandler.js';
9
9
  * and translates the response back into a bus result frame.
10
10
  *
11
11
  * **This list is one of three coupled sources** for the request/response
12
- * surface — see CLAUDE.md "Doc Sync Pointers". Adding a new verb requires
12
+ * surface — see AGENTS.md "Documentation Sync Pointers". Adding a new verb requires
13
13
  * touching:
14
14
  * 1. `messageHandler.ts` switch (the handler itself)
15
15
  * 2. This array (the bus exposure)
@@ -1 +1 @@
1
- {"version":3,"file":"legacyBusAdapter.d.ts","sourceRoot":"","sources":["../../src/handlers/legacyBusAdapter.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,WAAW,EACjB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,gBAAgB,EAAE,WAAW,EAoFzC,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,gBAAgB,EACrB,OAAO,EAAE,cAAc,EACvB,KAAK,GAAE,SAAS,WAAW,EAAqB,GAC/C,IAAI,CA4BN"}
1
+ {"version":3,"file":"legacyBusAdapter.d.ts","sourceRoot":"","sources":["../../src/handlers/legacyBusAdapter.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,WAAW,EACjB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,gBAAgB,EAAE,WAAW,EA0FzC,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,gBAAgB,EACrB,OAAO,EAAE,cAAc,EACvB,KAAK,GAAE,SAAS,WAAW,EAAqB,GAC/C,IAAI,CA4BN"}
@@ -9,7 +9,7 @@ import { createMessage, } from '@sumicom/quicksave-shared';
9
9
  * and translates the response back into a bus result frame.
10
10
  *
11
11
  * **This list is one of three coupled sources** for the request/response
12
- * surface — see CLAUDE.md "Doc Sync Pointers". Adding a new verb requires
12
+ * surface — see AGENTS.md "Documentation Sync Pointers". Adding a new verb requires
13
13
  * touching:
14
14
  * 1. `messageHandler.ts` switch (the handler itself)
15
15
  * 2. This array (the bus exposure)
@@ -54,6 +54,7 @@ export const LEGACY_BUS_VERBS = [
54
54
  'agent:check-update',
55
55
  'agent:update',
56
56
  'agent:restart',
57
+ 'agent:probe',
57
58
  // systemd user-unit (Linux only — agent returns available:false elsewhere)
58
59
  'systemd:status',
59
60
  'systemd:install',
@@ -66,6 +67,8 @@ export const LEGACY_BUS_VERBS = [
66
67
  // claude
67
68
  'claude:start',
68
69
  'claude:resume',
70
+ 'claude:interrupt',
71
+ 'claude:steer-queued',
69
72
  'claude:cancel',
70
73
  'claude:close',
71
74
  'claude:end-task',
@@ -80,6 +83,7 @@ export const LEGACY_BUS_VERBS = [
80
83
  'session:delete-history',
81
84
  'session:list-archived',
82
85
  'session:mark-read',
86
+ 'session:dismiss-pending-mission',
83
87
  // project
84
88
  'project:list-summaries',
85
89
  'project:list-repos',
@@ -99,6 +103,8 @@ export const LEGACY_BUS_VERBS = [
99
103
  'attachment:upload',
100
104
  'attachment:cancel',
101
105
  'attachment:fetch',
106
+ 'voice:transcribe',
107
+ 'voice:list-models',
102
108
  ];
103
109
  /**
104
110
  * Bridge legacy `MessageHandler` request/response verbs onto a
@@ -1 +1 @@
1
- {"version":3,"file":"legacyBusAdapter.js","sourceRoot":"","sources":["../../src/handlers/legacyBusAdapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"legacyBusAdapter.js","sourceRoot":"","sources":["../../src/handlers/legacyBusAdapter.ts"],"names":[],"mappings":"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"}
@@ -160,6 +160,8 @@ export declare class MessageHandler {
160
160
  private handleClearCommitSummary;
161
161
  private getAiCliService;
162
162
  private handleSetApiKey;
163
+ private handleVoiceTranscribe;
164
+ private handleVoiceListModels;
163
165
  private handleGetApiKeyStatus;
164
166
  private handleListRepos;
165
167
  private handleSwitchRepo;
@@ -175,6 +177,7 @@ export declare class MessageHandler {
175
177
  private handleAgentCheckUpdate;
176
178
  private handleAgentUpdate;
177
179
  private handleAgentRestart;
180
+ private handleAgentProbe;
178
181
  private handleSystemdStatus;
179
182
  private handleSystemdInstall;
180
183
  private handleSystemdUninstall;
@@ -192,6 +195,8 @@ export declare class MessageHandler {
192
195
  private handleClaudeStart;
193
196
  private handleClaudeResume;
194
197
  private handleClaudeCancel;
198
+ private handleClaudeInterrupt;
199
+ private handleClaudeSteerQueued;
195
200
  private handleClaudeClose;
196
201
  /**
197
202
  * End Task: archive the session's registry entry, then terminate the live
@@ -226,6 +231,7 @@ export declare class MessageHandler {
226
231
  * undo a fresh read from a faster one.
227
232
  */
228
233
  private handleMarkRead;
234
+ private handleDismissPendingMission;
229
235
  private handleListProjectSummaries;
230
236
  private handleListProjectRepos;
231
237
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"messageHandler.d.ts","sourceRoot":"","sources":["../../src/handlers/messageHandler.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,OAAO,EAqCP,OAAO,EAQP,UAAU,EAiDV,oBAAoB,EASpB,OAAO,EACP,cAAc,EA+Bf,MAAM,2BAA2B,CAAC;AAQnC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAI3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAG/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAsExD,qBAAa,cAAc;IACzB,OAAO,CAAC,KAAK,CAA6B;IAC1C,OAAO,CAAC,YAAY,CAAW;IAC/B,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,WAAW,CAAkC;IACrD,OAAO,CAAC,SAAS,CAAkC;IACnD,OAAO,CAAC,cAAc,CAAe;IACrC,OAAO,CAAC,WAAW,CAAsC;IACzD,OAAO,CAAC,SAAS,CAAqC;IACtD,OAAO,CAAC,YAAY,CAAwC;IAC5D;gFAC4E;IAC5E,OAAO,CAAC,kBAAkB,CAA0D;IACpF,OAAO,CAAC,aAAa,CAAiB;IACtC,OAAO,CAAC,iBAAiB,CAA8C;IACvE,OAAO,CAAC,iBAAiB,CAA+B;IACxD,OAAO,CAAC,UAAU,CAA2B;IAC7C,OAAO,CAAC,kBAAkB,CAAuD;IACjF,OAAO,CAAC,oBAAoB,CAAuC;IACnE,OAAO,CAAC,gBAAgB,CAAgE;IACxF,OAAO,CAAC,wBAAwB,CAAiD;IACjF,OAAO,CAAC,wBAAwB,CAAqD;IACrF;;;gCAG4B;IAC5B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,iBAAiB,CAA2B;IACpD,gBAAgB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,oBAAoB,EAAE,MAAM,EAAE,QAAQ,GAAG,QAAQ,KAAK,IAAI,CAAC;IAEnG,OAAO,CAAC,eAAe,CAAU;gBAG/B,KAAK,EAAE,UAAU,EAAE,EACnB,QAAQ,CAAC,EAAE,OAAO,EAClB,WAAW,CAAC,EAAE,MAAM,EAAE,EACtB,eAAe,UAAQ,EACvB,OAAO,CAAC,EAAE;QACR,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB;;;;;WAKG;QACH,cAAc,CAAC,EAAE,cAAc,CAAC;KACjC;IA0BH;;;OAGG;YACW,kBAAkB;IAgChC;;;;;;;;;;;;;;;OAeG;YACW,gBAAgB;IAkC9B;;;;;;OAMG;YACW,6BAA6B;IAwB3C;;;;;;;;OAQG;IACH,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS;IAYvF,kEAAkE;IAClE,oBAAoB,IAAI,cAAc,EAAE;IAIxC;;;OAGG;IACH,2BAA2B,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,IAAI,GAAG,IAAI;IAI9E;;;;;;OAMG;IACH,qBAAqB,IAAI,IAAI;IAI7B;;;;OAIG;YACW,mBAAmB;IAejC,OAAO,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IAS/B,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAa9B,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,MAAM;IASd,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,eAAe;IAMvB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAqBvC,OAAO,IAAI,IAAI;IAQf,qBAAqB,IAAI,MAAM;IAI/B,yEAAyE;IACzE,qBAAqB,IAAI,uBAAuB;IAIhD,gBAAgB,IAAI,cAAc;IAIlC;;0EAEsE;IACtE,aAAa,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,GAAG,IAAI;IAI9C,aAAa,IAAI,UAAU,GAAG,IAAI;IAIlC,OAAO,CAAC,YAAY;IAWd,aAAa,CACjB,OAAO,EAAE,OAAO,EAChB,WAAW,GAAE,MAAkB,GAC9B,OAAO,CAAC,OAAO,CAAC;YA0CL,QAAQ;IAwJtB,OAAO,CAAC,eAAe;YAyBT,YAAY;YAOZ,UAAU;YAQV,WAAW;YA2BX,aAAa;YA2Bb,gBAAgB;YA2BhB,kBAAkB;YA2BlB,YAAY;YAkCZ,SAAS;YAQT,cAAc;YAQd,cAAc;YA4Bd,aAAa;YA2Bb,aAAa;YA2Bb,gBAAgB;YAiBhB,kBAAkB;YAOlB,kBAAkB;YAiBlB,kBAAkB;YA2BlB,mBAAmB;YAOnB,oBAAoB;IA2BlC;;;;;OAKG;YACW,2BAA2B;IAuEzC;;;;OAIG;YACW,gBAAgB;IAmF9B,OAAO,CAAC,wBAAwB;IAchC,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,eAAe;IAkBvB,OAAO,CAAC,qBAAqB;YAQf,eAAe;IAoB7B,OAAO,CAAC,gBAAgB;YAuBV,qBAAqB;YAiErB,aAAa;IA0D3B,OAAO,CAAC,gBAAgB;YAwBV,eAAe;IAsE7B,OAAO,CAAC,qBAAqB;YASf,mBAAmB;IA8CjC,OAAO,CAAC,sBAAsB;IA6B9B,qEAAqE;IACrE,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAC;YAElB,sBAAsB;YA8BtB,iBAAiB;YAmEjB,kBAAkB;IAuDhC,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,oBAAoB;IAgB5B,OAAO,CAAC,sBAAsB;YA0ChB,qBAAqB;IA4BnC;;;;OAIG;YACW,qBAAqB;YAarB,sBAAsB;YAYtB,sBAAsB;IAYpC,6EAA6E;IAC7E,oBAAoB,IAAI,iBAAiB;YAQ3B,iBAAiB;YA8FjB,kBAAkB;YA4ElB,kBAAkB;IAgBhC,OAAO,CAAC,iBAAiB;IAczB;;;;;;;;;;OAUG;IACH,OAAO,CAAC,mBAAmB;IAoC3B,OAAO,CAAC,6BAA6B;YAWvB,oBAAoB;IA2BlC,OAAO,CAAC,oBAAoB;YAUd,0BAA0B;YAgB1B,sBAAsB;YAyCtB,oBAAoB;IA2BlC,OAAO,CAAC,mBAAmB;IAgB3B,OAAO,CAAC,mBAAmB;IAiB3B,OAAO,CAAC,kBAAkB;IAa1B;;;;;;;;;;OAUG;IACH,OAAO,CAAC,cAAc;IAiCtB,OAAO,CAAC,0BAA0B;YA8DpB,sBAAsB;IA+FpC;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,mBAAmB;YAuCb,iBAAiB;YAUjB,gBAAgB;YAchB,2BAA2B;YAqB3B,oBAAoB;YAkBpB,mBAAmB;YAkBnB,oBAAoB;YAsBpB,mBAAmB;YAkBnB,oBAAoB;YAsBpB,eAAe;YASf,eAAe;IAU7B,4EAA4E;IAC5E,oBAAoB,IAAI,iBAAiB;IAIzC,OAAO,CAAC,sBAAsB;IAgB9B,OAAO,CAAC,sBAAsB;YAUhB,qBAAqB;IAanC,OAAO,CAAC,mBAAmB;CAK5B"}
1
+ {"version":3,"file":"messageHandler.d.ts","sourceRoot":"","sources":["../../src/handlers/messageHandler.ts"],"names":[],"mappings":"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"}