@markusylisiurunen/tau 0.2.101 → 0.2.103
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +27 -40
- package/dist/core/async/server_config.js +0 -1
- package/dist/core/async/server_config.js.map +1 -1
- package/dist/core/async/session_manager.js +0 -3
- package/dist/core/async/session_manager.js.map +1 -1
- package/dist/core/async/telegram.js +46 -9
- package/dist/core/async/telegram.js.map +1 -1
- package/dist/core/cli.js +5 -9
- package/dist/core/cli.js.map +1 -1
- package/dist/core/commands/registry.js +17 -2
- package/dist/core/commands/registry.js.map +1 -1
- package/dist/core/config/index.js.map +1 -1
- package/dist/core/config/schema.js +21 -61
- package/dist/core/config/schema.js.map +1 -1
- package/dist/core/debug.js +4 -12
- package/dist/core/debug.js.map +1 -1
- package/dist/core/diff_review/review_thread.js +4 -7
- package/dist/core/diff_review/review_thread.js.map +1 -1
- package/dist/core/index.js +2 -1
- package/dist/core/index.js.map +1 -1
- package/dist/core/runtime/chat_runtime.js +0 -10
- package/dist/core/runtime/chat_runtime.js.map +1 -1
- package/dist/core/runtime/runtime_bootstrap.js +5 -67
- package/dist/core/runtime/runtime_bootstrap.js.map +1 -1
- package/dist/core/runtime/session_prompt_composer.js +2 -7
- package/dist/core/runtime/session_prompt_composer.js.map +1 -1
- package/dist/core/session/core_session.js.map +1 -1
- package/dist/core/session/session_engine.js +1 -13
- package/dist/core/session/session_engine.js.map +1 -1
- package/dist/core/static/prompts/diff-review-wrapper.md +4 -3
- package/dist/core/tool/cli.js +37 -0
- package/dist/core/tool/cli.js.map +1 -0
- package/dist/core/tool/errors.js +9 -0
- package/dist/core/tool/errors.js.map +1 -0
- package/dist/core/tool/index.js +3 -0
- package/dist/core/tool/index.js.map +1 -0
- package/dist/core/tool/pdf_unpack.js +406 -0
- package/dist/core/tool/pdf_unpack.js.map +1 -0
- package/dist/core/tools/bash.js +1 -1
- package/dist/core/tools/bash.js.map +1 -1
- package/dist/core/tools/edit.js +2 -2
- package/dist/core/tools/edit.js.map +1 -1
- package/dist/core/tools/emit_output.js +1 -1
- package/dist/core/tools/emit_output.js.map +1 -1
- package/dist/core/tools/execution_backend.js +21 -251
- package/dist/core/tools/execution_backend.js.map +1 -1
- package/dist/core/tools/grep.js +1 -1
- package/dist/core/tools/grep.js.map +1 -1
- package/dist/core/tools/list.js +1 -1
- package/dist/core/tools/list.js.map +1 -1
- package/dist/core/tools/read.js +1 -1
- package/dist/core/tools/read.js.map +1 -1
- package/dist/core/tools/registry.js.map +1 -1
- package/dist/core/tools/send_input_to_agent.js +1 -1
- package/dist/core/tools/send_input_to_agent.js.map +1 -1
- package/dist/core/tools/spawn_agent.js +7 -39
- package/dist/core/tools/spawn_agent.js.map +1 -1
- package/dist/core/tools/terminate_agent.js +1 -1
- package/dist/core/tools/terminate_agent.js.map +1 -1
- package/dist/core/tools/view_image.js +3 -3
- package/dist/core/tools/view_image.js.map +1 -1
- package/dist/core/tools/wait_for_agent.js +1 -1
- package/dist/core/tools/wait_for_agent.js.map +1 -1
- package/dist/core/tools/web_fetch.js +1 -1
- package/dist/core/tools/web_fetch.js.map +1 -1
- package/dist/core/tools/web_search.js +1 -1
- package/dist/core/tools/web_search.js.map +1 -1
- package/dist/core/tools/write.js +1 -1
- package/dist/core/tools/write.js.map +1 -1
- package/dist/core/utils/context.js +1 -1
- package/dist/core/utils/context.js.map +1 -1
- package/dist/core/utils/context_builder.js +1 -11
- package/dist/core/utils/context_builder.js.map +1 -1
- package/dist/core/utils/gemini_speech.js +367 -0
- package/dist/core/utils/gemini_speech.js.map +1 -0
- package/dist/core/utils/git.js +2 -7
- package/dist/core/utils/git.js.map +1 -1
- package/dist/core/utils/mistral_document_ocr.js +186 -0
- package/dist/core/utils/mistral_document_ocr.js.map +1 -0
- package/dist/core/version.js +1 -1
- package/dist/diff_tool/app/dist/assets/{index-AomQ5Wco.js → index-D1e3Qk8w.js} +26 -26
- package/dist/diff_tool/app/dist/index.html +1 -1
- package/dist/main.js +91 -112
- package/dist/main.js.map +1 -1
- package/dist/sdk/client.js +0 -1
- package/dist/sdk/client.js.map +1 -1
- package/dist/sdk/types.d.ts +0 -1
- package/dist/tui/app.js.map +1 -1
- package/dist/tui/chat_controller.js +231 -151
- package/dist/tui/chat_controller.js.map +1 -1
- package/dist/tui/chat_view.js +0 -1
- package/dist/tui/chat_view.js.map +1 -1
- package/dist/tui/terminal.js +8 -0
- package/dist/tui/terminal.js.map +1 -1
- package/dist/tui/ui/footer.js +6 -7
- package/dist/tui/ui/footer.js.map +1 -1
- package/package.json +5 -5
- package/dist/core/tools/sandbox/docker_sandbox.js +0 -183
- package/dist/core/tools/sandbox/docker_sandbox.js.map +0 -1
- package/dist/core/utils/agent_environment.js +0 -48
- package/dist/core/utils/agent_environment.js.map +0 -1
- package/dist/core/utils/sandbox_paths.js +0 -29
- package/dist/core/utils/sandbox_paths.js.map +0 -1
- package/dist/core/utils/sandbox_prompt_paths.js +0 -86
- package/dist/core/utils/sandbox_prompt_paths.js.map +0 -1
|
@@ -0,0 +1,367 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
const GEMINI_GENERATE_CONTENT_BASE_URL = "https://generativelanguage.googleapis.com/v1beta/models";
|
|
3
|
+
const DEFAULT_GEMINI_SPEECH_REWRITE_MODEL = "gemini-3-flash-preview";
|
|
4
|
+
const DEFAULT_GEMINI_SPEECH_TTS_MODEL = "gemini-3.1-flash-tts-preview";
|
|
5
|
+
const DEFAULT_GEMINI_TTS_VOICE_NAME = "Despina";
|
|
6
|
+
const DEFAULT_TTS_SAMPLE_RATE_HZ = 24000;
|
|
7
|
+
const DEFAULT_TTS_CHANNEL_COUNT = 1;
|
|
8
|
+
const DEFAULT_TTS_BITS_PER_SAMPLE = 16;
|
|
9
|
+
const DEFAULT_TTS_MAX_ATTEMPTS = 3;
|
|
10
|
+
const DEFAULT_TTS_CONCURRENCY = 6;
|
|
11
|
+
const RETRYABLE_TTS_STATUS_CODES = new Set([408, 429, 500, 502, 503, 504]);
|
|
12
|
+
const errorPayloadSchema = z.object({
|
|
13
|
+
error: z
|
|
14
|
+
.object({
|
|
15
|
+
message: z.string().trim().min(1).optional(),
|
|
16
|
+
status: z.string().trim().min(1).optional(),
|
|
17
|
+
code: z.number().int().optional(),
|
|
18
|
+
})
|
|
19
|
+
.optional(),
|
|
20
|
+
});
|
|
21
|
+
class GeminiApiError extends Error {
|
|
22
|
+
status;
|
|
23
|
+
constructor(message, status) {
|
|
24
|
+
super(message);
|
|
25
|
+
this.name = "GeminiApiError";
|
|
26
|
+
this.status = status;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
class GeminiTtsResponseError extends Error {
|
|
30
|
+
constructor(message) {
|
|
31
|
+
super(message);
|
|
32
|
+
this.name = "GeminiTtsResponseError";
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
export async function generateGeminiSpeech(options) {
|
|
36
|
+
const sourceText = options.sourceText.trim();
|
|
37
|
+
if (!sourceText) {
|
|
38
|
+
throw new Error("speech source text was empty");
|
|
39
|
+
}
|
|
40
|
+
const apiKey = options.apiKey.trim();
|
|
41
|
+
if (!apiKey) {
|
|
42
|
+
throw new Error("missing Gemini API key");
|
|
43
|
+
}
|
|
44
|
+
const fetchImpl = options.fetchImpl ?? fetch;
|
|
45
|
+
const rewriteModel = options.rewriteModel ?? DEFAULT_GEMINI_SPEECH_REWRITE_MODEL;
|
|
46
|
+
const ttsModel = options.ttsModel ?? DEFAULT_GEMINI_SPEECH_TTS_MODEL;
|
|
47
|
+
const voiceName = options.voiceName ?? DEFAULT_GEMINI_TTS_VOICE_NAME;
|
|
48
|
+
await options.onStageChange?.("rewriting");
|
|
49
|
+
const spokenText = await rewriteTextForSpeech({
|
|
50
|
+
apiKey,
|
|
51
|
+
model: rewriteModel,
|
|
52
|
+
sourceText,
|
|
53
|
+
fetchImpl,
|
|
54
|
+
signal: options.signal,
|
|
55
|
+
});
|
|
56
|
+
const spokenParagraphs = splitSpeechParagraphs(spokenText);
|
|
57
|
+
await options.onStageChange?.("generating");
|
|
58
|
+
await options.onChunkProgress?.({ ready: 0, total: spokenParagraphs.length });
|
|
59
|
+
const pcmChunks = await synthesizeSpeechAudioChunks({
|
|
60
|
+
apiKey,
|
|
61
|
+
model: ttsModel,
|
|
62
|
+
voiceName,
|
|
63
|
+
spokenParagraphs,
|
|
64
|
+
fetchImpl,
|
|
65
|
+
signal: options.signal,
|
|
66
|
+
maxAttempts: options.maxTtsAttempts ?? DEFAULT_TTS_MAX_ATTEMPTS,
|
|
67
|
+
concurrency: DEFAULT_TTS_CONCURRENCY,
|
|
68
|
+
onChunkProgress: options.onChunkProgress,
|
|
69
|
+
});
|
|
70
|
+
return {
|
|
71
|
+
spokenText,
|
|
72
|
+
audio: encodeWaveFile({
|
|
73
|
+
pcmAudio: Buffer.concat(pcmChunks),
|
|
74
|
+
sampleRateHz: DEFAULT_TTS_SAMPLE_RATE_HZ,
|
|
75
|
+
channelCount: DEFAULT_TTS_CHANNEL_COUNT,
|
|
76
|
+
bitsPerSample: DEFAULT_TTS_BITS_PER_SAMPLE,
|
|
77
|
+
}),
|
|
78
|
+
mimeType: "audio/wav",
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
async function rewriteTextForSpeech(args) {
|
|
82
|
+
const payload = await requestGeminiGenerateContent({
|
|
83
|
+
apiKey: args.apiKey,
|
|
84
|
+
model: args.model,
|
|
85
|
+
fetchImpl: args.fetchImpl,
|
|
86
|
+
signal: args.signal,
|
|
87
|
+
body: {
|
|
88
|
+
contents: [
|
|
89
|
+
{
|
|
90
|
+
parts: [
|
|
91
|
+
{
|
|
92
|
+
text: buildSpeechRewritePrompt(args.sourceText),
|
|
93
|
+
},
|
|
94
|
+
],
|
|
95
|
+
},
|
|
96
|
+
],
|
|
97
|
+
generationConfig: {
|
|
98
|
+
thinkingConfig: {
|
|
99
|
+
thinkingLevel: "minimal",
|
|
100
|
+
},
|
|
101
|
+
},
|
|
102
|
+
},
|
|
103
|
+
});
|
|
104
|
+
const rewrittenText = extractGeminiText(payload).trim();
|
|
105
|
+
if (!rewrittenText) {
|
|
106
|
+
throw new Error("Gemini rewrite returned empty text");
|
|
107
|
+
}
|
|
108
|
+
return rewrittenText;
|
|
109
|
+
}
|
|
110
|
+
async function synthesizeSpeechAudioChunks(args) {
|
|
111
|
+
const total = args.spokenParagraphs.length;
|
|
112
|
+
const results = new Array(total);
|
|
113
|
+
const concurrency = Math.max(1, Math.trunc(args.concurrency));
|
|
114
|
+
let nextIndex = 0;
|
|
115
|
+
let ready = 0;
|
|
116
|
+
const worker = async () => {
|
|
117
|
+
while (true) {
|
|
118
|
+
const index = nextIndex;
|
|
119
|
+
nextIndex += 1;
|
|
120
|
+
if (index >= total) {
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
results[index] = await synthesizeSpeechAudioChunk({
|
|
124
|
+
apiKey: args.apiKey,
|
|
125
|
+
model: args.model,
|
|
126
|
+
voiceName: args.voiceName,
|
|
127
|
+
spokenText: args.spokenParagraphs[index],
|
|
128
|
+
fetchImpl: args.fetchImpl,
|
|
129
|
+
signal: args.signal,
|
|
130
|
+
maxAttempts: args.maxAttempts,
|
|
131
|
+
});
|
|
132
|
+
ready += 1;
|
|
133
|
+
await args.onChunkProgress?.({ ready, total });
|
|
134
|
+
}
|
|
135
|
+
};
|
|
136
|
+
await Promise.all(Array.from({ length: Math.min(concurrency, total) }, () => worker()));
|
|
137
|
+
return results;
|
|
138
|
+
}
|
|
139
|
+
async function synthesizeSpeechAudioChunk(args) {
|
|
140
|
+
const maxAttempts = Math.max(1, Math.trunc(args.maxAttempts));
|
|
141
|
+
let lastError;
|
|
142
|
+
for (let attempt = 1; attempt <= maxAttempts; attempt++) {
|
|
143
|
+
try {
|
|
144
|
+
const payload = await requestGeminiGenerateContent({
|
|
145
|
+
apiKey: args.apiKey,
|
|
146
|
+
model: args.model,
|
|
147
|
+
fetchImpl: args.fetchImpl,
|
|
148
|
+
signal: args.signal,
|
|
149
|
+
body: {
|
|
150
|
+
contents: [
|
|
151
|
+
{
|
|
152
|
+
parts: [
|
|
153
|
+
{
|
|
154
|
+
text: buildSpeechSynthesisPrompt(args.spokenText),
|
|
155
|
+
},
|
|
156
|
+
],
|
|
157
|
+
},
|
|
158
|
+
],
|
|
159
|
+
generationConfig: {
|
|
160
|
+
responseModalities: ["AUDIO"],
|
|
161
|
+
temperature: 1,
|
|
162
|
+
speechConfig: {
|
|
163
|
+
voiceConfig: {
|
|
164
|
+
prebuiltVoiceConfig: {
|
|
165
|
+
voiceName: args.voiceName,
|
|
166
|
+
},
|
|
167
|
+
},
|
|
168
|
+
},
|
|
169
|
+
},
|
|
170
|
+
},
|
|
171
|
+
});
|
|
172
|
+
const audioData = extractGeminiInlineAudioData(payload);
|
|
173
|
+
if (!audioData) {
|
|
174
|
+
throw new GeminiTtsResponseError("Gemini TTS response did not include audio data");
|
|
175
|
+
}
|
|
176
|
+
return Buffer.from(audioData, "base64");
|
|
177
|
+
}
|
|
178
|
+
catch (error) {
|
|
179
|
+
lastError = error;
|
|
180
|
+
if (args.signal?.aborted || !isRetryableTtsError(error) || attempt >= maxAttempts) {
|
|
181
|
+
throw error;
|
|
182
|
+
}
|
|
183
|
+
await waitForRetryDelay(attempt, args.signal);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
throw lastError instanceof Error ? lastError : new Error("Gemini TTS request failed");
|
|
187
|
+
}
|
|
188
|
+
async function requestGeminiGenerateContent(args) {
|
|
189
|
+
const response = await args.fetchImpl(`${GEMINI_GENERATE_CONTENT_BASE_URL}/${encodeURIComponent(args.model)}:generateContent`, {
|
|
190
|
+
method: "POST",
|
|
191
|
+
headers: {
|
|
192
|
+
"Content-Type": "application/json",
|
|
193
|
+
"x-goog-api-key": args.apiKey,
|
|
194
|
+
},
|
|
195
|
+
body: JSON.stringify(args.body),
|
|
196
|
+
signal: args.signal,
|
|
197
|
+
});
|
|
198
|
+
const responseText = await response.text();
|
|
199
|
+
let payload;
|
|
200
|
+
try {
|
|
201
|
+
payload = responseText ? JSON.parse(responseText) : undefined;
|
|
202
|
+
}
|
|
203
|
+
catch {
|
|
204
|
+
payload = undefined;
|
|
205
|
+
}
|
|
206
|
+
if (!response.ok) {
|
|
207
|
+
const parsed = errorPayloadSchema.safeParse(payload);
|
|
208
|
+
const fallbackMessage = responseText.trim() || `HTTP ${response.status}`;
|
|
209
|
+
const message = parsed.success
|
|
210
|
+
? (parsed.data.error?.message ?? fallbackMessage)
|
|
211
|
+
: fallbackMessage;
|
|
212
|
+
throw new GeminiApiError(message, response.status);
|
|
213
|
+
}
|
|
214
|
+
return payload;
|
|
215
|
+
}
|
|
216
|
+
function extractGeminiText(payload) {
|
|
217
|
+
if (!isObject(payload) || !Array.isArray(payload.candidates)) {
|
|
218
|
+
return "";
|
|
219
|
+
}
|
|
220
|
+
for (const candidate of payload.candidates) {
|
|
221
|
+
if (!isObject(candidate) ||
|
|
222
|
+
!isObject(candidate.content) ||
|
|
223
|
+
!Array.isArray(candidate.content.parts)) {
|
|
224
|
+
continue;
|
|
225
|
+
}
|
|
226
|
+
const text = candidate.content.parts
|
|
227
|
+
.map((part) => (isObject(part) && typeof part.text === "string" ? part.text : ""))
|
|
228
|
+
.join("")
|
|
229
|
+
.trim();
|
|
230
|
+
if (text) {
|
|
231
|
+
return text;
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
return "";
|
|
235
|
+
}
|
|
236
|
+
function extractGeminiInlineAudioData(payload) {
|
|
237
|
+
if (!isObject(payload) || !Array.isArray(payload.candidates)) {
|
|
238
|
+
return undefined;
|
|
239
|
+
}
|
|
240
|
+
for (const candidate of payload.candidates) {
|
|
241
|
+
if (!isObject(candidate) ||
|
|
242
|
+
!isObject(candidate.content) ||
|
|
243
|
+
!Array.isArray(candidate.content.parts)) {
|
|
244
|
+
continue;
|
|
245
|
+
}
|
|
246
|
+
for (const part of candidate.content.parts) {
|
|
247
|
+
if (!isObject(part) ||
|
|
248
|
+
!isObject(part.inlineData) ||
|
|
249
|
+
typeof part.inlineData.data !== "string") {
|
|
250
|
+
continue;
|
|
251
|
+
}
|
|
252
|
+
const data = part.inlineData.data.trim();
|
|
253
|
+
if (data) {
|
|
254
|
+
return data;
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
return undefined;
|
|
259
|
+
}
|
|
260
|
+
function buildSpeechRewritePrompt(sourceText) {
|
|
261
|
+
return [
|
|
262
|
+
"Rewrite the assistant response below so it sounds natural when spoken aloud.",
|
|
263
|
+
"Keep prose unchanged. Only rewrite spans that are awkward to say aloud, so the listener can follow along with the original text.",
|
|
264
|
+
"Do not drop, condense, or add content. Preserve meaning, order, and technical accuracy.",
|
|
265
|
+
"Things that typically need rewriting: file paths, shell commands, code identifiers, markdown structure, XML-like tags, long option lists, and code-heavy formatting.",
|
|
266
|
+
"For file references, keep the filename and any line or range info that was actually present. Do not add location detail that was not in the original.",
|
|
267
|
+
"Say code identifiers and version strings as natural words (for example, handleToolUiEvent as 'handle tool UI event', v5.4 as 'version 5.4'). Keep numbers and units natural (for example, 8,192 tokens as 'about eight thousand tokens').",
|
|
268
|
+
"",
|
|
269
|
+
"Examples of good rewrites:",
|
|
270
|
+
'- `src/core/utils/gemini_speech.ts:372` → "gemini_speech.ts, line 372"',
|
|
271
|
+
'- `src/tui/chat_controller.ts:1819-1855` → "chat_controller.ts, lines 1819 to 1855"',
|
|
272
|
+
'- `src/core/session/compaction.ts` → "compaction.ts"',
|
|
273
|
+
'- `/Users/markus/.config/tau/config.json` → "the tau config.json in your home directory"',
|
|
274
|
+
'- `rg --heading -n -t ts "ToolUiText" src` → "ripgrep for ToolUiText in TypeScript files under src"',
|
|
275
|
+
'- `<available-skills>` → "the available-skills tag"',
|
|
276
|
+
"- A markdown bullet list of short items → a natural comma-separated list or short sentences",
|
|
277
|
+
"",
|
|
278
|
+
"Write in prose-like paragraphs of sensible spoken length, separated by blank lines.",
|
|
279
|
+
"Return plain text only, with no markdown fences or commentary.",
|
|
280
|
+
"",
|
|
281
|
+
"ASSISTANT RESPONSE:",
|
|
282
|
+
sourceText,
|
|
283
|
+
].join("\n");
|
|
284
|
+
}
|
|
285
|
+
function splitSpeechParagraphs(spokenText) {
|
|
286
|
+
const paragraphs = spokenText
|
|
287
|
+
.split(/\n\s*\n/g)
|
|
288
|
+
.map((paragraph) => paragraph.trim())
|
|
289
|
+
.filter((paragraph) => paragraph.length > 0);
|
|
290
|
+
return paragraphs.length > 0 ? paragraphs : [spokenText.trim()];
|
|
291
|
+
}
|
|
292
|
+
function buildSpeechSynthesisPrompt(spokenText) {
|
|
293
|
+
return [
|
|
294
|
+
"Synthesize speech audio for the labeled transcript below.",
|
|
295
|
+
"Speak only the transcript. Do not speak the instructions, labels, or headings.",
|
|
296
|
+
"",
|
|
297
|
+
"### DIRECTOR'S NOTES",
|
|
298
|
+
"Style: Clear, natural, conversational.",
|
|
299
|
+
"Pacing: Slightly slower than conversational, with deliberate enunciation. The audio will be sped up during playback.",
|
|
300
|
+
"",
|
|
301
|
+
"### TRANSCRIPT",
|
|
302
|
+
spokenText,
|
|
303
|
+
].join("\n");
|
|
304
|
+
}
|
|
305
|
+
function isRetryableTtsError(error) {
|
|
306
|
+
if (error instanceof GeminiTtsResponseError) {
|
|
307
|
+
return true;
|
|
308
|
+
}
|
|
309
|
+
if (error instanceof GeminiApiError) {
|
|
310
|
+
return error.status !== undefined && RETRYABLE_TTS_STATUS_CODES.has(error.status);
|
|
311
|
+
}
|
|
312
|
+
if (error instanceof Error) {
|
|
313
|
+
return error.name !== "AbortError";
|
|
314
|
+
}
|
|
315
|
+
return false;
|
|
316
|
+
}
|
|
317
|
+
async function waitForRetryDelay(attempt, signal) {
|
|
318
|
+
const durationMs = Math.min(1000, 150 * 2 ** (attempt - 1));
|
|
319
|
+
await new Promise((resolve, reject) => {
|
|
320
|
+
const timeout = setTimeout(() => {
|
|
321
|
+
signal?.removeEventListener("abort", onAbort);
|
|
322
|
+
resolve();
|
|
323
|
+
}, durationMs);
|
|
324
|
+
timeout.unref?.();
|
|
325
|
+
const onAbort = () => {
|
|
326
|
+
clearTimeout(timeout);
|
|
327
|
+
reject(abortError());
|
|
328
|
+
};
|
|
329
|
+
if (!signal) {
|
|
330
|
+
return;
|
|
331
|
+
}
|
|
332
|
+
if (signal.aborted) {
|
|
333
|
+
clearTimeout(timeout);
|
|
334
|
+
reject(abortError());
|
|
335
|
+
return;
|
|
336
|
+
}
|
|
337
|
+
signal.addEventListener("abort", onAbort, { once: true });
|
|
338
|
+
});
|
|
339
|
+
}
|
|
340
|
+
function encodeWaveFile(args) {
|
|
341
|
+
const byteRate = (args.sampleRateHz * args.channelCount * args.bitsPerSample) / 8;
|
|
342
|
+
const blockAlign = (args.channelCount * args.bitsPerSample) / 8;
|
|
343
|
+
const header = Buffer.alloc(44);
|
|
344
|
+
header.write("RIFF", 0);
|
|
345
|
+
header.writeUInt32LE(36 + args.pcmAudio.length, 4);
|
|
346
|
+
header.write("WAVE", 8);
|
|
347
|
+
header.write("fmt ", 12);
|
|
348
|
+
header.writeUInt32LE(16, 16);
|
|
349
|
+
header.writeUInt16LE(1, 20);
|
|
350
|
+
header.writeUInt16LE(args.channelCount, 22);
|
|
351
|
+
header.writeUInt32LE(args.sampleRateHz, 24);
|
|
352
|
+
header.writeUInt32LE(byteRate, 28);
|
|
353
|
+
header.writeUInt16LE(blockAlign, 32);
|
|
354
|
+
header.writeUInt16LE(args.bitsPerSample, 34);
|
|
355
|
+
header.write("data", 36);
|
|
356
|
+
header.writeUInt32LE(args.pcmAudio.length, 40);
|
|
357
|
+
return Buffer.concat([header, args.pcmAudio]);
|
|
358
|
+
}
|
|
359
|
+
function isObject(value) {
|
|
360
|
+
return typeof value === "object" && value !== null;
|
|
361
|
+
}
|
|
362
|
+
function abortError() {
|
|
363
|
+
const error = new Error("The operation was aborted");
|
|
364
|
+
error.name = "AbortError";
|
|
365
|
+
return error;
|
|
366
|
+
}
|
|
367
|
+
//# sourceMappingURL=gemini_speech.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gemini_speech.js","sourceRoot":"","sources":["../../../src/core/utils/gemini_speech.ts"],"names":[],"mappings":"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"}
|
package/dist/core/utils/git.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { spawnSync } from "node:child_process";
|
|
2
|
-
import {
|
|
2
|
+
import { resolve } from "node:path";
|
|
3
3
|
export function getGitRoot(cwd) {
|
|
4
4
|
try {
|
|
5
5
|
const res = spawnSync("git", ["rev-parse", "--show-toplevel"], {
|
|
@@ -19,11 +19,6 @@ export function getGitRoot(cwd) {
|
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
21
|
export function resolvePromptGitRoot(args) {
|
|
22
|
-
|
|
23
|
-
const hostGitRoot = getGitRoot(hostCwd);
|
|
24
|
-
if (!hostGitRoot)
|
|
25
|
-
return undefined;
|
|
26
|
-
const rel = relative(hostCwd, hostGitRoot);
|
|
27
|
-
return resolve(args.cwd, rel);
|
|
22
|
+
return getGitRoot(args.cwd);
|
|
28
23
|
}
|
|
29
24
|
//# sourceMappingURL=git.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../../src/core/utils/git.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../../src/core/utils/git.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,UAAU,UAAU,CAAC,GAAW;IACpC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,iBAAiB,CAAC,EAAE;YAC7D,GAAG;YACH,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC;SACpC,CAAC,CAAC;QAEH,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,SAAS,CAAC;QAEvC,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACvC,IAAI,CAAC,IAAI;YAAE,OAAO,SAAS,CAAC;QAE5B,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,IAAqB;IACxD,OAAO,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC9B,CAAC"}
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
const MISTRAL_FILES_URL = "https://api.mistral.ai/v1/files";
|
|
3
|
+
const MISTRAL_DOCUMENT_OCR_URL = "https://api.mistral.ai/v1/ocr";
|
|
4
|
+
const DEFAULT_MISTRAL_DOCUMENT_OCR_MODEL = "mistral-ocr-latest";
|
|
5
|
+
const DEFAULT_MISTRAL_DOCUMENT_MIME_TYPE = "application/pdf";
|
|
6
|
+
const errorSchema = z.union([
|
|
7
|
+
z.object({ message: z.string() }),
|
|
8
|
+
z.object({ detail: z.string() }),
|
|
9
|
+
z.object({ error: z.object({ message: z.string() }) }),
|
|
10
|
+
]);
|
|
11
|
+
const uploadSuccessSchema = z.object({
|
|
12
|
+
id: z.string().uuid(),
|
|
13
|
+
});
|
|
14
|
+
const tableSchema = z
|
|
15
|
+
.object({
|
|
16
|
+
id: z.string().min(1),
|
|
17
|
+
content: z.string(),
|
|
18
|
+
format: z.string(),
|
|
19
|
+
})
|
|
20
|
+
.passthrough();
|
|
21
|
+
const imageSchema = z
|
|
22
|
+
.object({
|
|
23
|
+
id: z.string().min(1),
|
|
24
|
+
top_left_x: z.number().int().nonnegative().nullable().optional(),
|
|
25
|
+
top_left_y: z.number().int().nonnegative().nullable().optional(),
|
|
26
|
+
bottom_right_x: z.number().int().nonnegative().nullable().optional(),
|
|
27
|
+
bottom_right_y: z.number().int().nonnegative().nullable().optional(),
|
|
28
|
+
})
|
|
29
|
+
.passthrough();
|
|
30
|
+
const successSchema = z.object({
|
|
31
|
+
pages: z
|
|
32
|
+
.array(z
|
|
33
|
+
.object({
|
|
34
|
+
index: z.number().int().nonnegative(),
|
|
35
|
+
markdown: z.string(),
|
|
36
|
+
tables: z.array(tableSchema).optional(),
|
|
37
|
+
images: z.array(imageSchema).optional(),
|
|
38
|
+
})
|
|
39
|
+
.passthrough())
|
|
40
|
+
.min(1),
|
|
41
|
+
});
|
|
42
|
+
function parseResponsePayload(responseText) {
|
|
43
|
+
try {
|
|
44
|
+
return responseText ? JSON.parse(responseText) : undefined;
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
return undefined;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
function parseErrorMessage(responseText, payload, status) {
|
|
51
|
+
const parsed = errorSchema.safeParse(payload);
|
|
52
|
+
if (parsed.success) {
|
|
53
|
+
if ("message" in parsed.data) {
|
|
54
|
+
return parsed.data.message;
|
|
55
|
+
}
|
|
56
|
+
if ("detail" in parsed.data) {
|
|
57
|
+
return parsed.data.detail;
|
|
58
|
+
}
|
|
59
|
+
return parsed.data.error.message;
|
|
60
|
+
}
|
|
61
|
+
return responseText.trim() || `HTTP ${status}`;
|
|
62
|
+
}
|
|
63
|
+
async function uploadMistralFile(args) {
|
|
64
|
+
const formData = new FormData();
|
|
65
|
+
formData.append("purpose", "ocr");
|
|
66
|
+
formData.append("file", new Blob([Uint8Array.from(args.document)], {
|
|
67
|
+
type: args.mimeType,
|
|
68
|
+
}), args.fileName);
|
|
69
|
+
const response = await args.fetchImpl(MISTRAL_FILES_URL, {
|
|
70
|
+
method: "POST",
|
|
71
|
+
headers: {
|
|
72
|
+
Authorization: `Bearer ${args.apiKey}`,
|
|
73
|
+
},
|
|
74
|
+
body: formData,
|
|
75
|
+
});
|
|
76
|
+
const responseText = await response.text();
|
|
77
|
+
const payload = parseResponsePayload(responseText);
|
|
78
|
+
if (!response.ok) {
|
|
79
|
+
throw new Error(parseErrorMessage(responseText, payload, response.status));
|
|
80
|
+
}
|
|
81
|
+
const parsed = uploadSuccessSchema.safeParse(payload);
|
|
82
|
+
if (!parsed.success) {
|
|
83
|
+
throw new Error("unexpected Mistral file upload response format");
|
|
84
|
+
}
|
|
85
|
+
return parsed.data.id;
|
|
86
|
+
}
|
|
87
|
+
async function deleteMistralFile(args) {
|
|
88
|
+
try {
|
|
89
|
+
const response = await args.fetchImpl(`${MISTRAL_FILES_URL}/${args.fileId}`, {
|
|
90
|
+
method: "DELETE",
|
|
91
|
+
headers: {
|
|
92
|
+
Authorization: `Bearer ${args.apiKey}`,
|
|
93
|
+
},
|
|
94
|
+
});
|
|
95
|
+
if (response.ok) {
|
|
96
|
+
return undefined;
|
|
97
|
+
}
|
|
98
|
+
const responseText = await response.text();
|
|
99
|
+
const payload = parseResponsePayload(responseText);
|
|
100
|
+
return `failed to delete the uploaded PDF from Mistral: ${parseErrorMessage(responseText, payload, response.status)}`;
|
|
101
|
+
}
|
|
102
|
+
catch (error) {
|
|
103
|
+
return `failed to delete the uploaded PDF from Mistral: ${error instanceof Error ? error.message : String(error)}`;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
export async function ocrMistralDocument(options) {
|
|
107
|
+
const fetchFn = options.fetchImpl ?? fetch;
|
|
108
|
+
const fileId = await uploadMistralFile({
|
|
109
|
+
apiKey: options.apiKey,
|
|
110
|
+
document: options.document,
|
|
111
|
+
fileName: options.fileName,
|
|
112
|
+
mimeType: options.mimeType ?? DEFAULT_MISTRAL_DOCUMENT_MIME_TYPE,
|
|
113
|
+
fetchImpl: fetchFn,
|
|
114
|
+
});
|
|
115
|
+
let pages;
|
|
116
|
+
let operationError;
|
|
117
|
+
try {
|
|
118
|
+
const response = await fetchFn(MISTRAL_DOCUMENT_OCR_URL, {
|
|
119
|
+
method: "POST",
|
|
120
|
+
headers: {
|
|
121
|
+
Authorization: `Bearer ${options.apiKey}`,
|
|
122
|
+
"Content-Type": "application/json",
|
|
123
|
+
},
|
|
124
|
+
body: JSON.stringify({
|
|
125
|
+
model: options.model ?? DEFAULT_MISTRAL_DOCUMENT_OCR_MODEL,
|
|
126
|
+
document: {
|
|
127
|
+
type: "file",
|
|
128
|
+
file_id: fileId,
|
|
129
|
+
},
|
|
130
|
+
table_format: "markdown",
|
|
131
|
+
}),
|
|
132
|
+
});
|
|
133
|
+
const responseText = await response.text();
|
|
134
|
+
const payload = parseResponsePayload(responseText);
|
|
135
|
+
if (!response.ok) {
|
|
136
|
+
throw new Error(parseErrorMessage(responseText, payload, response.status));
|
|
137
|
+
}
|
|
138
|
+
const parsed = successSchema.safeParse(payload);
|
|
139
|
+
if (!parsed.success) {
|
|
140
|
+
throw new Error("unexpected Mistral OCR response format");
|
|
141
|
+
}
|
|
142
|
+
const sortedPages = [...parsed.data.pages].sort((a, b) => a.index - b.index);
|
|
143
|
+
for (const [expectedIndex, page] of sortedPages.entries()) {
|
|
144
|
+
if (page.index !== expectedIndex) {
|
|
145
|
+
throw new Error("unexpected Mistral OCR page indexes");
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
pages = sortedPages.map((page) => ({
|
|
149
|
+
markdown: page.markdown,
|
|
150
|
+
tables: (page.tables ?? []).map((table) => ({
|
|
151
|
+
id: table.id,
|
|
152
|
+
content: table.content,
|
|
153
|
+
format: table.format,
|
|
154
|
+
})),
|
|
155
|
+
images: (page.images ?? []).map((image) => ({
|
|
156
|
+
id: image.id,
|
|
157
|
+
topLeftX: image.top_left_x,
|
|
158
|
+
topLeftY: image.top_left_y,
|
|
159
|
+
bottomRightX: image.bottom_right_x,
|
|
160
|
+
bottomRightY: image.bottom_right_y,
|
|
161
|
+
})),
|
|
162
|
+
}));
|
|
163
|
+
}
|
|
164
|
+
catch (error) {
|
|
165
|
+
operationError = error instanceof Error ? error : new Error(String(error));
|
|
166
|
+
}
|
|
167
|
+
const cleanupWarning = await deleteMistralFile({
|
|
168
|
+
apiKey: options.apiKey,
|
|
169
|
+
fileId,
|
|
170
|
+
fetchImpl: fetchFn,
|
|
171
|
+
});
|
|
172
|
+
if (operationError) {
|
|
173
|
+
if (cleanupWarning) {
|
|
174
|
+
throw new Error(`${operationError.message} (${cleanupWarning})`);
|
|
175
|
+
}
|
|
176
|
+
throw operationError;
|
|
177
|
+
}
|
|
178
|
+
if (!pages) {
|
|
179
|
+
throw new Error("Mistral OCR completed without pages");
|
|
180
|
+
}
|
|
181
|
+
return {
|
|
182
|
+
pages,
|
|
183
|
+
cleanupWarning,
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
//# sourceMappingURL=mistral_document_ocr.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mistral_document_ocr.js","sourceRoot":"","sources":["../../../src/core/utils/mistral_document_ocr.ts"],"names":[],"mappings":"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"}
|
package/dist/core/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const APP_VERSION = "0.2.
|
|
1
|
+
export const APP_VERSION = "0.2.103";
|
|
2
2
|
//# sourceMappingURL=version.js.map
|