@tianshu-ai/tianshu 0.59.1 → 0.60.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 (28) hide show
  1. package/package.json +3 -1
  2. package/packages/server/dist/boot/routes-tts.d.ts.map +1 -1
  3. package/packages/server/dist/boot/routes-tts.js +108 -53
  4. package/packages/server/dist/boot/routes-tts.js.map +1 -1
  5. package/packages/server/dist/chat/handler.d.ts.map +1 -1
  6. package/packages/server/dist/chat/handler.js +10 -4
  7. package/packages/server/dist/chat/handler.js.map +1 -1
  8. package/packages/server/dist/setup/cli-agent.d.ts.map +1 -1
  9. package/packages/server/dist/setup/cli-agent.js +69 -2
  10. package/packages/server/dist/setup/cli-agent.js.map +1 -1
  11. package/packages/server/dist/setup/probe-default-model.js +7 -7
  12. package/packages/server/dist/setup/probe-default-model.js.map +1 -1
  13. package/packages/web/dist/assets/{DataSourceConfigForm-DzZTI-3W.js → DataSourceConfigForm-36_ZQLwM.js} +1 -1
  14. package/packages/web/dist/assets/{bundle-web-BD3MOGdz.js → bundle-web-bCpA4Yw9.js} +1 -1
  15. package/packages/web/dist/assets/{index-CgNsgpL6.js → index-Cf7Wv1i8.js} +6 -6
  16. package/packages/web/dist/assets/{react-force-graph-2d-DLdKoWtw.js → react-force-graph-2d-DH0NflcJ.js} +1 -1
  17. package/packages/web/dist/index.html +1 -1
  18. package/plugins/wiki/dist/embedding.d.ts.map +1 -1
  19. package/plugins/wiki/dist/embedding.js +44 -22
  20. package/plugins/wiki/dist/embedding.js.map +1 -1
  21. package/plugins/wiki/dist/server.d.ts.map +1 -1
  22. package/plugins/wiki/dist/server.js +67 -24
  23. package/plugins/wiki/dist/server.js.map +2 -2
  24. package/scripts/QWEN3_TTS_SETUP.md +186 -0
  25. package/scripts/qwen3-tts-server/install.sh +134 -0
  26. package/scripts/qwen3-tts-server/server.py +254 -0
  27. package/scripts/qwen3-tts-server/voices/.gitattributes +1 -0
  28. package/scripts/qwen3-tts-server/voices/yujie_ref.wav +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tianshu-ai/tianshu",
3
- "version": "0.59.1",
3
+ "version": "0.60.0",
4
4
  "description": "An open AI agent platform with a sidecar browser. Built in public.",
5
5
  "license": "Apache-2.0",
6
6
  "homepage": "https://github.com/tianshu-ai/tianshu",
@@ -33,6 +33,8 @@
33
33
  "plugins/**/agent-seeds/**",
34
34
  "plugins/**/templates/**",
35
35
  "plugins/**/sandbox-image/**",
36
+ "scripts/qwen3-tts-server/**",
37
+ "scripts/QWEN3_TTS_SETUP.md",
36
38
  "README.md",
37
39
  "LICENSE"
38
40
  ],
@@ -1 +1 @@
1
- {"version":3,"file":"routes-tts.d.ts","sourceRoot":"","sources":["../../src/boot/routes-tts.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,OAAO,EAAqB,MAAM,SAAS,CAAC;AAkQ1D,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,QA8E1C"}
1
+ {"version":3,"file":"routes-tts.d.ts","sourceRoot":"","sources":["../../src/boot/routes-tts.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAE,OAAO,EAAqB,MAAM,SAAS,CAAC;AAmR1D,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,QA0H1C"}
@@ -1,23 +1,24 @@
1
1
  // POST /api/tts: text -> audio proxy.
2
2
  //
3
- // Yu, 2026-09-19: supports two TTS backends selected by env
4
- // TTS_PROVIDER:
3
+ // Yu, 2026-09-19: initial version with edge + cosyvoice.
4
+ // Yu, 2026-09-20: replaced cosyvoice/kokoro with qwentts.
5
+ // CosyVoice (RTF 6x, too slow) and Kokoro (sounds like edge-tts)
6
+ // are removed. Only edge and qwentts remain.
7
+ //
8
+ // TTS_PROVIDER env selects the default backend:
5
9
  //
6
10
  // "edge" (default) — Microsoft Edge's online TTS via the
7
- // @andresaya/edge-tts npm package. Zero local setup, no API key,
8
- // free unlimited use. Chinese voices (Xiaoxiao/Yunxi/Yunyang)
9
- // are near-production quality. Trade-off: needs internet;
10
- // Microsoft EULA forbids commercial use (fine for a personal
11
- // side project like tianshu, revisit before shipping).
11
+ // @andresaya/edge-tts npm package. Zero local setup, no API key.
12
+ // Chinese voices (Xiaoxiao/Yunxi/Yunyang) are near-production
13
+ // quality. Needs internet; Microsoft EULA forbids commercial use.
12
14
  //
13
- // "cosyvoice" — Local CosyVoice 2 FastAPI server (Apache 2.0,
14
- // ~150 ms first-packet latency, native Apple Silicon MPS).
15
- // Yu runs the CosyVoice server separately; tianshu forwards
16
- // via HTTP. See scripts/COSYVOICE_SETUP.md for setup.
15
+ // "qwentts" — Local Qwen3-TTS 0.6B MLX server (Apache 2.0,
16
+ // RTF ~0.3x on Apple Silicon, 9 preset voices, 10 languages).
17
+ // See scripts/QWEN3_TTS_SETUP.md for setup.
17
18
  //
18
19
  // Same public contract in both cases:
19
- // POST /api/tts body: { text, voice? }
20
- // → response body: audio/* (mp3 for edge, wav for cosyvoice)
20
+ // POST /api/tts body: { text, voice?, provider? }
21
+ // → response body: audio/* (mp3 for edge, wav for qwentts)
21
22
  //
22
23
  // Browser <audio> plays either directly; useTts hook doesn't care.
23
24
  import { EdgeTTS } from "@andresaya/edge-tts";
@@ -59,7 +60,9 @@ function buildWavHeader(pcmByteLen) {
59
60
  const byteRate = COSY_SAMPLE_RATE * COSY_CHANNELS * (COSY_BITS_PER_SAMPLE / 8);
60
61
  const blockAlign = COSY_CHANNELS * (COSY_BITS_PER_SAMPLE / 8);
61
62
  header.write("RIFF", 0);
62
- header.writeUInt32LE(36 + pcmByteLen, 4);
63
+ // For streaming (pcmByteLen=0xFFFFFFFF), RIFF chunk size is also
64
+ // 0xFFFFFFFF — signals unknown length to decoders.
65
+ header.writeUInt32LE(pcmByteLen === 0xFFFFFFFF ? 0xFFFFFFFF : 36 + pcmByteLen, 4);
63
66
  header.write("WAVE", 8);
64
67
  header.write("fmt ", 12);
65
68
  header.writeUInt32LE(16, 16);
@@ -139,34 +142,50 @@ async function handleEdge(res, text, voice) {
139
142
  `(first at ${firstChunkMs}ms, total ${Date.now() - start}ms)`);
140
143
  }
141
144
  /**
142
- * CosyVoice handler — forwards to the local FastAPI server, buffers
143
- * PCM, prepends a wav header, streams back.
145
+ * Local TTS handler — forwards to a local FastAPI server (Kokoro or
146
+ * CosyVoice) and streams WAV back to the browser.
147
+ *
148
+ * Yu, 2026-09-20: rewritten from buffer-all to true streaming.
149
+ * Old path buffered ALL PCM before prepending the WAV header,
150
+ * which meant 9+ seconds silence on CosyVoice before audio started.
151
+ *
152
+ * New path:
153
+ * 1. Send a WAV header with data-size = 0xFFFFFFFF (streaming
154
+ * marker; browsers / MediaSource treat this as "unknown length,
155
+ * keep reading until connection closes").
156
+ * 2. Pipe upstream PCM chunks directly to the HTTP response as
157
+ * they arrive — first audio byte reaches the browser as soon
158
+ * as the model yields its first chunk.
159
+ * 3. Connection close signals end-of-stream.
160
+ *
161
+ * Works with both Kokoro (RTF ~0.4x, first chunk ~2s) and CosyVoice
162
+ * (RTF ~6x, first chunk ~9s). The streaming path benefits Kokoro
163
+ * enormously; CosyVoice still has a long first-chunk wait but at
164
+ * least doesn't add extra buffering delay on top.
144
165
  */
145
- async function handleCosyvoice(res, text, voice) {
166
+ async function handleLocalTts(res, text, voice, providerLabel) {
146
167
  const useVoice = voice?.trim() || DEFAULT_COSY_VOICE;
147
168
  const upstream = process.env.TTS_URL || DEFAULT_COSY_URL;
148
169
  const url = `${upstream}/inference_sft`;
149
- // CosyVoice's FastAPI expects multipart/form-data (server.py:
150
- // `tts_text: str = Form(), spk_id: str = Form()`).
151
170
  const form = new FormData();
152
171
  form.set("tts_text", text);
153
172
  form.set("spk_id", useVoice);
154
- console.log(`[tts] cosyvoice forwarding: len=${text.length} voice=${useVoice} url=${url}`);
173
+ console.log(`[tts] ${providerLabel} forwarding: len=${text.length} voice=${useVoice} url=${url}`);
155
174
  let upstreamRes;
156
175
  try {
157
176
  upstreamRes = await fetch(url, { method: "POST", body: form });
158
177
  }
159
178
  catch (err) {
160
- console.warn(`[tts] cosyvoice upstream unreachable: ${upstream}`, err);
179
+ console.warn(`[tts] ${providerLabel} upstream unreachable: ${upstream}`, err);
161
180
  res.status(503).json({
162
181
  error: "tts upstream unreachable",
163
182
  detail: err instanceof Error ? err.message : String(err),
164
- hint: `Is CosyVoice running at ${upstream}? See scripts/COSYVOICE_SETUP.md.`,
183
+ hint: `Is the TTS server running at ${upstream}?`,
165
184
  });
166
185
  return;
167
186
  }
168
187
  if (!upstreamRes.ok || !upstreamRes.body) {
169
- console.warn(`[tts] cosyvoice upstream error: ${upstreamRes.status} ${upstreamRes.statusText}`);
188
+ console.warn(`[tts] ${providerLabel} upstream error: ${upstreamRes.status} ${upstreamRes.statusText}`);
170
189
  res.status(upstreamRes.status).json({
171
190
  error: "tts upstream returned error",
172
191
  status: upstreamRes.status,
@@ -174,11 +193,17 @@ async function handleCosyvoice(res, text, voice) {
174
193
  });
175
194
  return;
176
195
  }
177
- // Buffer full PCM then wrap with RIFF wav header (needs total
178
- // byte length up front). ~24 KB/s at 24 kHz mono int16 — a 10 s
179
- // reply is ~240 KB, safe in memory.
180
- const chunks = [];
196
+ // Stream WAV: send header immediately with unknown data size,
197
+ // then pipe PCM chunks as they arrive from upstream.
198
+ const streamingHeader = buildWavHeader(0xFFFFFFFF);
199
+ res.setHeader("Content-Type", "audio/wav");
200
+ res.setHeader("Cache-Control", "no-store");
201
+ res.setHeader("X-Accel-Buffering", "no");
202
+ res.write(streamingHeader);
203
+ const start = Date.now();
181
204
  let totalBytes = 0;
205
+ let chunkCount = 0;
206
+ let firstChunkMs = null;
182
207
  const reader = upstreamRes.body.getReader();
183
208
  try {
184
209
  while (true) {
@@ -186,39 +211,69 @@ async function handleCosyvoice(res, text, voice) {
186
211
  if (done)
187
212
  break;
188
213
  const buf = Buffer.from(value);
189
- chunks.push(buf);
214
+ if (firstChunkMs == null)
215
+ firstChunkMs = Date.now() - start;
190
216
  totalBytes += buf.length;
217
+ chunkCount++;
218
+ res.write(buf);
191
219
  }
192
220
  }
193
221
  catch (err) {
194
- console.warn("[tts] cosyvoice stream aborted:", err);
195
- res.status(502).json({
196
- error: "tts upstream stream aborted",
197
- detail: err instanceof Error ? err.message : String(err),
198
- });
199
- return;
222
+ console.warn(`[tts] ${providerLabel} stream aborted:`, err);
223
+ // Headers already sent; just close the response.
200
224
  }
225
+ res.end();
201
226
  if (totalBytes === 0) {
202
- console.warn("[tts] cosyvoice returned empty PCM");
203
- res.status(502).json({ error: "tts upstream returned empty audio" });
227
+ console.warn(`[tts] ${providerLabel} returned empty PCM`);
204
228
  return;
205
229
  }
206
- const header = buildWavHeader(totalBytes);
207
- const wavLen = header.length + totalBytes;
208
- res.setHeader("Content-Type", "audio/wav");
209
- res.setHeader("Content-Length", String(wavLen));
210
- res.setHeader("Cache-Control", "no-store");
211
- res.write(header);
212
- for (const chunk of chunks)
213
- res.write(chunk);
214
- res.end();
215
- console.log(`[tts] cosyvoice delivered wav: pcm=${totalBytes}B total=${wavLen}B ` +
216
- `(${(totalBytes /
217
- COSY_SAMPLE_RATE /
218
- (COSY_BITS_PER_SAMPLE / 8) /
219
- COSY_CHANNELS).toFixed(1)}s)`);
230
+ const audioDur = totalBytes / COSY_SAMPLE_RATE / (COSY_BITS_PER_SAMPLE / 8) / COSY_CHANNELS;
231
+ console.log(`[tts] ${providerLabel} streamed wav: ${totalBytes}B in ${chunkCount} chunks ` +
232
+ `(first at ${firstChunkMs}ms, total ${Date.now() - start}ms, ` +
233
+ `${audioDur.toFixed(1)}s audio)`);
220
234
  }
221
235
  export function mountTtsRoutes(app) {
236
+ // GET /api/tts/stream?text=...&voice=...&provider=...
237
+ //
238
+ // Streaming-friendly endpoint that browsers can use directly via
239
+ // <audio src="/api/tts/stream?...">. Unlike POST /api/tts, the
240
+ // browser's built-in audio pipeline handles chunked WAV natively —
241
+ // playback starts as soon as the first bytes arrive, no need for
242
+ // MediaSource or blob buffering.
243
+ //
244
+ // Yu, 2026-09-21: added so qwentts true-streaming WAV can be
245
+ // consumed edge-to-edge without waiting for the full response.
246
+ app.get("/api/tts/stream", async (req, res) => {
247
+ const text = typeof req.query.text === "string" ? req.query.text.trim() : "";
248
+ const voice = typeof req.query.voice === "string" && req.query.voice.trim().length
249
+ ? req.query.voice.trim()
250
+ : undefined;
251
+ const requestedProvider = typeof req.query.provider === "string" && req.query.provider.trim().length
252
+ ? req.query.provider.trim().toLowerCase()
253
+ : TTS_PROVIDER;
254
+ if (!text) {
255
+ res.status(400).json({ error: "text is required" });
256
+ return;
257
+ }
258
+ if (text.length > MAX_TEXT_CHARS) {
259
+ res.status(400).json({
260
+ error: `text too long: ${text.length} chars > max ${MAX_TEXT_CHARS}`,
261
+ });
262
+ return;
263
+ }
264
+ if (requestedProvider === "edge") {
265
+ await handleEdge(res, text, voice);
266
+ }
267
+ else if (requestedProvider === "qwentts") {
268
+ await handleLocalTts(res, text, voice, requestedProvider);
269
+ }
270
+ else {
271
+ res.status(400).json({
272
+ error: `unknown provider: ${requestedProvider}`,
273
+ hint: "Use provider=edge or provider=qwentts",
274
+ });
275
+ }
276
+ });
222
277
  app.post("/api/tts", async (req, res) => {
223
278
  const body = (req.body ?? {});
224
279
  const text = typeof body.text === "string" ? body.text.trim() : "";
@@ -245,14 +300,14 @@ export function mountTtsRoutes(app) {
245
300
  if (requestedProvider === "edge") {
246
301
  await handleEdge(res, text, voice);
247
302
  }
248
- else if (requestedProvider === "cosyvoice") {
249
- await handleCosyvoice(res, text, voice);
303
+ else if (requestedProvider === "qwentts") {
304
+ await handleLocalTts(res, text, voice, requestedProvider);
250
305
  }
251
306
  else {
252
307
  console.warn(`[tts] unknown provider: ${requestedProvider}`);
253
308
  res.status(400).json({
254
309
  error: `unknown provider: ${requestedProvider}`,
255
- hint: "Use provider=edge or provider=cosyvoice",
310
+ hint: "Use provider=edge or provider=qwentts",
256
311
  });
257
312
  }
258
313
  });
@@ -1 +1 @@
1
- {"version":3,"file":"routes-tts.js","sourceRoot":"","sources":["../../src/boot/routes-tts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"routes-tts.js","sourceRoot":"","sources":["../../src/boot/routes-tts.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../src/chat/handler.ts"],"names":[],"mappings":"AAgDA,OAAO,EACL,mBAAmB,EACnB,cAAc,EAEd,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,EAC9B,MAAM,uBAAuB,CAAC;AAI/B,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,GAC9B,CAAC;AAGF,OAAO,EACL,mBAAmB,EACnB,0BAA0B,EAC1B,wBAAwB,EACxB,2BAA2B,EAC3B,wBAAwB,EACxB,2BAA2B,EAC3B,yBAAyB,EACzB,6BAA6B,EAC7B,2BAA2B,EAC3B,4BAA4B,EAC5B,KAAK,oBAAoB,GAC1B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,EAOL,KAAK,aAAa,EACnB,MAAM,kBAAkB,CAAC;AA4B1B,OAAO,EAGL,KAAK,WAAW,EACjB,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EAOL,KAAK,WAAW,EAEjB,MAAM,eAAe,CAAC;AAWvB,OAAO,EAGL,KAAK,SAAS,EAEd,KAAK,cAAc,EAEpB,MAAM,kBAAkB,CAAC;AA6B1B,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,aAAa,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,SAAS,CAAC;IAClB;;;;;OAKG;IACH,cAAc,CAAC,EAAE,OAAO,6BAA6B,EAAE,cAAc,CAAC;IACtE,+DAA+D;IAC/D,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,eAAe,GAAG,IAAI,CA0P7D;AAED,UAAU,aAAa;IACrB,GAAG,EAAE,aAAa,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,CAAC,GAAG,EAAE,SAAS,KAAK,IAAI,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,cAAc,EAAE,CAAC;IAC/B,MAAM,EAAE,WAAW,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,6BAA6B,EAAE,cAAc,CAAC;IACtE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;4BAGwB;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,OAAO,eAAe,EAAE,WAAW,CAAC;IAC9C;;;;;;OAMG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,wBAAsB,SAAS,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA8jClE;AAmVD,wBAAgB,uBAAuB,CACrC,oBAAoB,EAAE,WAAW,CAAC,MAAM,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,EAC3D,2BAA2B,CAAC,EAAE,MAAM,GACnC,MAAM,CAuCR;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,oBAAoB,EAAE,MAAM,GAAG,MAAM,EAAE,CAgB3E;AAsCD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,aAAa,EAClB,SAAS,EAAE,MAAM,GAChB,MAAM,GAAG,IAAI,CA0Ef;AA4QD,wBAAgB,cAAc,IAAI,WAAW,EAAE,CAkC9C;AAGD,YAAY,EAAE,WAAW,EAAE,CAAC"}
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../src/chat/handler.ts"],"names":[],"mappings":"AAgDA,OAAO,EACL,mBAAmB,EACnB,cAAc,EAEd,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,EAC9B,MAAM,uBAAuB,CAAC;AAI/B,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,GAC9B,CAAC;AAGF,OAAO,EACL,mBAAmB,EACnB,0BAA0B,EAC1B,wBAAwB,EACxB,2BAA2B,EAC3B,wBAAwB,EACxB,2BAA2B,EAC3B,yBAAyB,EACzB,6BAA6B,EAC7B,2BAA2B,EAC3B,4BAA4B,EAC5B,KAAK,oBAAoB,GAC1B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,EAOL,KAAK,aAAa,EACnB,MAAM,kBAAkB,CAAC;AA4B1B,OAAO,EAGL,KAAK,WAAW,EACjB,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EAOL,KAAK,WAAW,EAEjB,MAAM,eAAe,CAAC;AAWvB,OAAO,EAGL,KAAK,SAAS,EAEd,KAAK,cAAc,EAEpB,MAAM,kBAAkB,CAAC;AA6B1B,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,aAAa,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,SAAS,CAAC;IAClB;;;;;OAKG;IACH,cAAc,CAAC,EAAE,OAAO,6BAA6B,EAAE,cAAc,CAAC;IACtE,+DAA+D;IAC/D,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,eAAe,GAAG,IAAI,CAiQ7D;AAED,UAAU,aAAa;IACrB,GAAG,EAAE,aAAa,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,CAAC,GAAG,EAAE,SAAS,KAAK,IAAI,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,cAAc,EAAE,CAAC;IAC/B,MAAM,EAAE,WAAW,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,6BAA6B,EAAE,cAAc,CAAC;IACtE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;4BAGwB;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,OAAO,eAAe,EAAE,WAAW,CAAC;IAC9C;;;;;;OAMG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,wBAAsB,SAAS,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAikClE;AAmVD,wBAAgB,uBAAuB,CACrC,oBAAoB,EAAE,WAAW,CAAC,MAAM,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,EAC3D,2BAA2B,CAAC,EAAE,MAAM,GACnC,MAAM,CAuCR;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,oBAAoB,EAAE,MAAM,GAAG,MAAM,EAAE,CAgB3E;AAsCD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,aAAa,EAClB,SAAS,EAAE,MAAM,GAChB,MAAM,GAAG,IAAI,CA0Ef;AA4QD,wBAAgB,cAAc,IAAI,WAAW,EAAE,CAkC9C;AAGD,YAAY,EAAE,WAAW,EAAE,CAAC"}
@@ -55,7 +55,7 @@ import { buildHostTools, buildRecallHostTools, getCompactRef } from "./host-tool
55
55
  import { progressiveHistoryTransform } from "./progressive-history.js";
56
56
  import { toWire, } from "./ws-protocol.js";
57
57
  import { cacheGet, cachePut, fitToLimit, imageFitCacheKey, } from "./image-fit.js";
58
- const MAX_TURNS = 16;
58
+ const MAX_TURNS = 9999;
59
59
  // Yu, 2026-09-18 10:29: warn when a single tool_result crosses this
60
60
  // size. Threshold picked to catch mvn/spring-boot-style firehose
61
61
  // output (typically 1-20MB) while ignoring routine tool results
@@ -174,8 +174,10 @@ export function attachChatHandler(opts) {
174
174
  return;
175
175
  }
176
176
  case "prompt": {
177
- if (aborter)
178
- aborter.abort(); // single in-flight prompt per socket
177
+ if (aborter) {
178
+ console.warn(`[handler] abort:new_prompt (previous turn superseded by new user message)`);
179
+ aborter.abort();
180
+ }
179
181
  aborter = new AbortController();
180
182
  // Slash-command: `/compact` runs an immediate compaction
181
183
  // pass without sending a fresh user prompt. Recognised when
@@ -226,8 +228,10 @@ export function attachChatHandler(opts) {
226
228
  // Resume the last turn of the current session in place (no new
227
229
  // user message). The client's auto-retry loop uses this so a
228
230
  // failed / interrupted run doesn't spawn duplicate prompts.
229
- if (aborter)
231
+ if (aborter) {
232
+ console.warn(`[handler] abort:retry (previous turn superseded by client retry)`);
230
233
  aborter.abort();
234
+ }
231
235
  aborter = new AbortController();
232
236
  runPrompt({
233
237
  ctx,
@@ -248,6 +252,7 @@ export function attachChatHandler(opts) {
248
252
  return;
249
253
  }
250
254
  case "abort": {
255
+ console.warn(`[handler] abort:user_stop (user clicked stop button)`);
251
256
  aborter?.abort();
252
257
  aborter = null;
253
258
  return;
@@ -746,6 +751,7 @@ export async function runPrompt(args) {
746
751
  lastAssistantRow = row;
747
752
  assistantTurns++;
748
753
  if (assistantTurns >= MAX_TURNS) {
754
+ console.warn(`[handler] abort:max_turns session=${session.id} turns=${assistantTurns}/${MAX_TURNS}`);
749
755
  void harness.abort();
750
756
  }
751
757
  },