@tianshu-ai/tianshu 0.4.71 → 0.4.80

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 (37) hide show
  1. package/package.json +1 -1
  2. package/packages/server/dist/chat/agent-loop.d.ts +3 -0
  3. package/packages/server/dist/chat/agent-loop.d.ts.map +1 -1
  4. package/packages/server/dist/chat/agent-loop.js +5 -1
  5. package/packages/server/dist/chat/agent-loop.js.map +1 -1
  6. package/packages/server/dist/chat/compact.d.ts +2 -1
  7. package/packages/server/dist/chat/compact.d.ts.map +1 -1
  8. package/packages/server/dist/chat/compact.js +14 -4
  9. package/packages/server/dist/chat/compact.js.map +1 -1
  10. package/packages/server/dist/chat/handler.d.ts +27 -0
  11. package/packages/server/dist/chat/handler.d.ts.map +1 -1
  12. package/packages/server/dist/chat/handler.js +187 -2
  13. package/packages/server/dist/chat/handler.js.map +1 -1
  14. package/packages/server/dist/chat/ws-protocol.d.ts +51 -0
  15. package/packages/server/dist/chat/ws-protocol.d.ts.map +1 -1
  16. package/packages/server/dist/chat/ws-protocol.js.map +1 -1
  17. package/packages/server/dist/core/config.d.ts +33 -0
  18. package/packages/server/dist/core/config.d.ts.map +1 -1
  19. package/packages/server/dist/core/config.js.map +1 -1
  20. package/packages/server/dist/core/index.d.ts +3 -2
  21. package/packages/server/dist/core/index.d.ts.map +1 -1
  22. package/packages/server/dist/core/index.js +1 -0
  23. package/packages/server/dist/core/index.js.map +1 -1
  24. package/packages/server/dist/core/model-retry.d.ts +95 -0
  25. package/packages/server/dist/core/model-retry.d.ts.map +1 -0
  26. package/packages/server/dist/core/model-retry.js +709 -0
  27. package/packages/server/dist/core/model-retry.js.map +1 -0
  28. package/packages/server/dist/core/pi-models.d.ts +15 -1
  29. package/packages/server/dist/core/pi-models.d.ts.map +1 -1
  30. package/packages/server/dist/core/pi-models.js +21 -14
  31. package/packages/server/dist/core/pi-models.js.map +1 -1
  32. package/packages/web/dist/assets/{bundle-web-D2QPyUVj.js → bundle-web-B7H1TxE7.js} +1 -1
  33. package/packages/web/dist/assets/index-BLmw-jUN.css +2 -0
  34. package/packages/web/dist/assets/index-DKoxlYCa.js +75 -0
  35. package/packages/web/dist/index.html +2 -2
  36. package/packages/web/dist/assets/index-Bx4LCow7.js +0 -75
  37. package/packages/web/dist/assets/index-D9-m-JTM.css +0 -2
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tianshu-ai/tianshu",
3
- "version": "0.4.71",
3
+ "version": "0.4.80",
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",
@@ -54,6 +54,9 @@ export interface AgentLoopRequest {
54
54
  signal?: AbortSignal;
55
55
  /** Fires once after the worker session row has been inserted. */
56
56
  onSessionStart?: (sessionId: string) => void;
57
+ /** Fires on each transient LLM-call retry (before backoff). Lets a
58
+ * caller surface retries in a worker/task UI. Always also logged. */
59
+ onModelRetry?: (notice: import("../core/model-retry.js").RetryNotice) => void;
57
60
  /**
58
61
  * Resume an existing worker session instead of creating a fresh
59
62
  * one. When set, `initialUserMessage` is treated as a follow-up
@@ -1 +1 @@
1
- {"version":3,"file":"agent-loop.d.ts","sourceRoot":"","sources":["../../src/chat/agent-loop.ts"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AA2BtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAKlE,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,aAAa,CAAC;IACnB,mCAAmC;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,4BAA4B;IAC5B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,uCAAuC;IACvC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,+BAA+B;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oEAAoE;IACpE,UAAU,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC7B,0EAA0E;IAC1E,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC5B,iCAAiC;IACjC,WAAW,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC9B,iDAAiD;IACjD,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,+CAA+C;IAC/C,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B;;oDAEgD;IAChD,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,gCAAgC;IAChC,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC;;;2CAGuC;IACvC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB;;;yDAGqD;IACrD,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B;;iEAE6D;IAC7D,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,gDAAgD;IAChD,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,mCAAmC;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sDAAsD;IACtD,QAAQ,CAAC,EAAE;QACT,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,6BAA6B;IAC7B,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,iEAAiE;IACjE,cAAc,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;IACjD,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EACF,eAAe,GACf,eAAe,GACf,wBAAwB,GACxB,cAAc,GACd,iBAAiB,GACjB,SAAS,GACT,cAAc,GACd,WAAW,CAAC;CACjB;AAeD,wBAAsB,YAAY,CAChC,GAAG,EAAE,gBAAgB,GACpB,OAAO,CAAC,eAAe,CAAC,CA2lB1B"}
1
+ {"version":3,"file":"agent-loop.d.ts","sourceRoot":"","sources":["../../src/chat/agent-loop.ts"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AA2BtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAKlE,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,aAAa,CAAC;IACnB,mCAAmC;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,4BAA4B;IAC5B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,uCAAuC;IACvC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,+BAA+B;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oEAAoE;IACpE,UAAU,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC7B,0EAA0E;IAC1E,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC5B,iCAAiC;IACjC,WAAW,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC9B,iDAAiD;IACjD,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,+CAA+C;IAC/C,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B;;oDAEgD;IAChD,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,gCAAgC;IAChC,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC;;;2CAGuC;IACvC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB;;;yDAGqD;IACrD,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B;;iEAE6D;IAC7D,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,gDAAgD;IAChD,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,mCAAmC;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sDAAsD;IACtD,QAAQ,CAAC,EAAE;QACT,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,6BAA6B;IAC7B,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,iEAAiE;IACjE,cAAc,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C;0EACsE;IACtE,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,wBAAwB,EAAE,WAAW,KAAK,IAAI,CAAC;IAC9E;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;IACjD,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EACF,eAAe,GACf,eAAe,GACf,wBAAwB,GACxB,cAAc,GACd,iBAAiB,GACjB,SAAS,GACT,cAAc,GACd,WAAW,CAAC;CACjB;AAeD,wBAAsB,YAAY,CAChC,GAAG,EAAE,gBAAgB,GACpB,OAAO,CAAC,eAAe,CAAC,CA+lB1B"}
@@ -412,7 +412,11 @@ export async function runAgentLoop(req) {
412
412
  tools: adapted.tools,
413
413
  systemPrompt,
414
414
  model: piModel,
415
- models: buildModels(piModel, apiKey),
415
+ models: buildModels(piModel, apiKey, {
416
+ resilience: ctx.config.models?.resilience,
417
+ reResolveApiKey: () => resolveApiKey(modelInfo),
418
+ onRetry: req.onModelRetry,
419
+ }),
416
420
  });
417
421
  // Watch harness events for two purposes:
418
422
  // 1. Reset the watchdog whenever something happens (timestamps
@@ -1 +1 @@
1
- {"version":3,"file":"agent-loop.js","sourceRoot":"","sources":["../../src/chat/agent-loop.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-loop.js","sourceRoot":"","sources":["../../src/chat/agent-loop.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import type { Message } from "@earendil-works/pi-ai";
2
2
  import type { TenantContext } from "../core/index.js";
3
3
  import { type ResolvedModelInfo } from "../core/index.js";
4
+ import type { ModelResilienceConfig } from "../core/config.js";
4
5
  import type { ChatMessage, ChatSession } from "./messages.js";
5
6
  /** Trigger threshold: compact when estimated input ≥ this fraction
6
7
  * of the active model's context window. Per Yu's call (2026-06-05). */
@@ -29,7 +30,7 @@ export declare class CompactSkippedError extends Error {
29
30
  constructor(reason: string);
30
31
  }
31
32
  /** Run a summarisation LLM call. Returns the plain text summary. */
32
- export declare function summarise(toSummarise: Message[], modelInfo: ResolvedModelInfo, signal?: AbortSignal): Promise<{
33
+ export declare function summarise(toSummarise: Message[], modelInfo: ResolvedModelInfo, signal?: AbortSignal, resilienceCfg?: ModelResilienceConfig): Promise<{
33
34
  summary: string;
34
35
  durationMs: number;
35
36
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"compact.d.ts","sourceRoot":"","sources":["../../src/chat/compact.ts"],"names":[],"mappings":"AA8BA,OAAO,KAAK,EAGV,OAAO,EAKR,MAAM,uBAAuB,CAAC;AAG/B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAGL,KAAK,iBAAiB,EACvB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE9D;wEACwE;AACxE,eAAO,MAAM,iBAAiB,MAAM,CAAC;AAuBrC,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,OAAO,EAAE,CAAC;IACvB,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB;;6DAEyD;IACzD,QAAQ,EAAE,WAAW,EAAE,CAAC;CACzB;AAED;uBACuB;AACvB,wBAAgB,WAAW,CACzB,EAAE,EAAE,OAAO,EAAE,EACb,IAAI,EAAE,WAAW,EAAE,GAClB,WAAW,CA2Bb;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,WAAW,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,mBAAoB,SAAQ,KAAK;IAC5C,QAAQ,CAAC,IAAI,EAAG,iBAAiB,CAAU;gBAC/B,MAAM,EAAE,MAAM;CAI3B;AAED,oEAAoE;AACpE,wBAAsB,SAAS,CAC7B,WAAW,EAAE,OAAO,EAAE,EACtB,SAAS,EAAE,iBAAiB,EAC5B,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CAmClD;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE;IACzC,GAAG,EAAE,aAAa,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,WAAW,CAAC;IACxB,EAAE,EAAE,OAAO,EAAE,CAAC;IACd,IAAI,EAAE,WAAW,EAAE,CAAC;IACpB,SAAS,EAAE,iBAAiB,CAAC;IAC7B,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,GAAG,OAAO,CAAC,aAAa,CAAC,CA+DzB;AAiCD;;qEAEqE;AACrE,wBAAgB,eAAe,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,CAkC3D"}
1
+ {"version":3,"file":"compact.d.ts","sourceRoot":"","sources":["../../src/chat/compact.ts"],"names":[],"mappings":"AA8BA,OAAO,KAAK,EAGV,OAAO,EAKR,MAAM,uBAAuB,CAAC;AAG/B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAGL,KAAK,iBAAiB,EACvB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAG/D,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE9D;wEACwE;AACxE,eAAO,MAAM,iBAAiB,MAAM,CAAC;AAuBrC,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,OAAO,EAAE,CAAC;IACvB,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB;;6DAEyD;IACzD,QAAQ,EAAE,WAAW,EAAE,CAAC;CACzB;AAED;uBACuB;AACvB,wBAAgB,WAAW,CACzB,EAAE,EAAE,OAAO,EAAE,EACb,IAAI,EAAE,WAAW,EAAE,GAClB,WAAW,CA2Bb;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,WAAW,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,mBAAoB,SAAQ,KAAK;IAC5C,QAAQ,CAAC,IAAI,EAAG,iBAAiB,CAAU;gBAC/B,MAAM,EAAE,MAAM;CAI3B;AAED,oEAAoE;AACpE,wBAAsB,SAAS,CAC7B,WAAW,EAAE,OAAO,EAAE,EACtB,SAAS,EAAE,iBAAiB,EAC5B,MAAM,CAAC,EAAE,WAAW,EACpB,aAAa,CAAC,EAAE,qBAAqB,GACpC,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CAiDlD;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE;IACzC,GAAG,EAAE,aAAa,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,WAAW,CAAC;IACxB,EAAE,EAAE,OAAO,EAAE,CAAC;IACd,IAAI,EAAE,WAAW,EAAE,CAAC;IACpB,SAAS,EAAE,iBAAiB,CAAC;IAC7B,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,GAAG,OAAO,CAAC,aAAa,CAAC,CAgEzB;AAiCD;;qEAEqE;AACrE,wBAAgB,eAAe,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,CAkC3D"}
@@ -29,6 +29,7 @@
29
29
  import { completeSimple } from "@earendil-works/pi-ai/compat";
30
30
  import { randomUUID } from "node:crypto";
31
31
  import { buildModel, resolveApiKey, } from "../core/index.js";
32
+ import { resolveResilience, retryCompletion } from "../core/model-retry.js";
32
33
  import { appendMessage } from "./messages.js";
33
34
  /** Trigger threshold: compact when estimated input ≥ this fraction
34
35
  * of the active model's context window. Per Yu's call (2026-06-05). */
@@ -89,13 +90,14 @@ export class CompactSkippedError extends Error {
89
90
  }
90
91
  }
91
92
  /** Run a summarisation LLM call. Returns the plain text summary. */
92
- export async function summarise(toSummarise, modelInfo, signal) {
93
+ export async function summarise(toSummarise, modelInfo, signal, resilienceCfg) {
93
94
  const transcript = buildTranscript(toSummarise);
94
95
  if (!transcript.trim()) {
95
96
  return { summary: "(empty conversation)", durationMs: 0 };
96
97
  }
97
98
  const model = buildModel(modelInfo);
98
99
  const apiKey = resolveApiKey(modelInfo);
100
+ const resilience = resolveResilience(resilienceCfg);
99
101
  const ctx = {
100
102
  systemPrompt: SUMMARY_PROMPT,
101
103
  messages: [
@@ -112,9 +114,17 @@ export async function summarise(toSummarise, modelInfo, signal) {
112
114
  ],
113
115
  };
114
116
  const t0 = Date.now();
115
- const result = (await completeSimple(model, ctx, {
117
+ const result = (await retryCompletion((key) => completeSimple(model, ctx, {
116
118
  signal,
117
- apiKey,
119
+ apiKey: key,
120
+ // Retry policy lives in retryCompletion (auth re-resolve +
121
+ // rate-limit aware); disable the SDK's own client retries so
122
+ // the two layers don't compound backoff.
123
+ maxRetries: 0,
124
+ }), apiKey, {
125
+ resilience,
126
+ reResolveApiKey: () => resolveApiKey(modelInfo),
127
+ label: `${modelInfo.providerId}/${modelInfo.modelId} (compact)`,
118
128
  }));
119
129
  const durationMs = Date.now() - t0;
120
130
  const text = result.content
@@ -135,7 +145,7 @@ export async function compactSession(args) {
135
145
  if (plan.toSummarise.length === 0) {
136
146
  throw new CompactSkippedError("nothing to summarise (≤ KEEP_TAIL_MIN messages)");
137
147
  }
138
- const { summary, durationMs } = await summarise(plan.toSummarise, modelInfo, signal);
148
+ const { summary, durationMs } = await summarise(plan.toSummarise, modelInfo, signal, ctx.config.models?.resilience);
139
149
  // Mark the old session compacted + stash the summary for audit.
140
150
  ctx.db
141
151
  .prepare(`UPDATE sessions
@@ -1 +1 @@
1
- {"version":3,"file":"compact.js","sourceRoot":"","sources":["../../src/chat/compact.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compact.js","sourceRoot":"","sources":["../../src/chat/compact.ts"],"names":[],"mappings":"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"}
@@ -49,8 +49,35 @@ interface RunPromptArgs {
49
49
  * somehow still over the window. Not part of the public contract.
50
50
  */
51
51
  _afterCompactFallback?: boolean;
52
+ /**
53
+ * Resume the last turn of the session via `harness.continue()`
54
+ * instead of `harness.prompt()`. No new user message is inserted;
55
+ * `content` / `attachments` are ignored. Used by the client's
56
+ * auto-retry loop after a failed / interrupted run so history keeps
57
+ * a single user message. No-op (clean stream_end) if the session's
58
+ * last message isn't a user/tool-result message.
59
+ */
60
+ retryLastTurn?: boolean;
52
61
  }
53
62
  export declare function runPrompt(args: RunPromptArgs): Promise<void>;
63
+ /**
64
+ * Retry helper. A failed / interrupted turn leaves the user's prompt
65
+ * as the transcript tail (the assistant reply never completed, or is
66
+ * a partial). To resume WITHOUT duplicating the user message, we:
67
+ * 1. find the trailing turn (from the leaf back to — but not
68
+ * including — the last COMPLETED assistant reply),
69
+ * 2. confirm it contains a user message (else nothing to resume),
70
+ * 3. delete those trailing entries and re-point the session leaf at
71
+ * the prior completed entry,
72
+ * 4. return the user message text so the caller re-runs it via a
73
+ * single fresh `prompt()`.
74
+ * Net effect: history keeps exactly one user message for the turn.
75
+ *
76
+ * Returns null when there's nothing resumable (e.g. the last turn
77
+ * actually completed, or the session is empty) — the caller then ends
78
+ * the stream cleanly instead of erroring.
79
+ */
80
+ export declare function takeResumableUserPrompt(ctx: TenantContext, sessionId: string): string | null;
54
81
  export declare function loadHostSkills(): LoadedSkill[];
55
82
  export type { ChatMessage };
56
83
  //# sourceMappingURL=handler.d.ts.map
@@ -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,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;AAiB1B,OAAO,EAGL,KAAK,WAAW,EACjB,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EAML,KAAK,WAAW,EAEjB,MAAM,eAAe,CAAC;AAMvB,OAAO,EAGL,KAAK,SAAS,EAEd,KAAK,cAAc,EAEpB,MAAM,kBAAkB,CAAC;AAU1B,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,CA8J7D;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;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,OAAO,eAAe,EAAE,WAAW,CAAC;IAC9C;;;;;;OAMG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AAED,wBAAsB,SAAS,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAyhBlE;AA2gBD,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,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;AAiB1B,OAAO,EAGL,KAAK,WAAW,EACjB,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EAML,KAAK,WAAW,EAEjB,MAAM,eAAe,CAAC;AAMvB,OAAO,EAGL,KAAK,SAAS,EAEd,KAAK,cAAc,EAEpB,MAAM,kBAAkB,CAAC;AAU1B,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,CAsL7D;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;;;;;;;;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,CA8jBlE;AA8SD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,aAAa,EAClB,SAAS,EAAE,MAAM,GAChB,MAAM,GAAG,IAAI,CA0Ef;AA6QD,wBAAgB,cAAc,IAAI,WAAW,EAAE,CAkC9C;AAGD,YAAY,EAAE,WAAW,EAAE,CAAC"}
@@ -183,6 +183,31 @@ export function attachChatHandler(opts) {
183
183
  });
184
184
  return;
185
185
  }
186
+ case "retry": {
187
+ // Resume the last turn of the current session in place (no new
188
+ // user message). The client's auto-retry loop uses this so a
189
+ // failed / interrupted run doesn't spawn duplicate prompts.
190
+ if (aborter)
191
+ aborter.abort();
192
+ aborter = new AbortController();
193
+ runPrompt({
194
+ ctx,
195
+ userId,
196
+ send,
197
+ content: "",
198
+ retryLastTurn: true,
199
+ modelId: parsed.modelId,
200
+ signal: aborter.signal,
201
+ pluginRegistry,
202
+ homeDir,
203
+ }).catch((err) => {
204
+ send({
205
+ type: "stream_error",
206
+ reason: err instanceof Error ? err.message : String(err),
207
+ });
208
+ });
209
+ return;
210
+ }
186
211
  case "abort": {
187
212
  aborter?.abort();
188
213
  aborter = null;
@@ -198,6 +223,7 @@ export function attachChatHandler(opts) {
198
223
  }
199
224
  export async function runPrompt(args) {
200
225
  const { ctx, userId, send, content, modelId, attachments, signal, pluginRegistry, homeDir } = args;
226
+ const retryLastTurn = args.retryLastTurn ?? false;
201
227
  const wireOpts = makeWireOpts(ctx);
202
228
  const repo = new SqliteSessionRepo(ctx);
203
229
  // Caller-provided session wins; for the chat shell this stays
@@ -410,7 +436,29 @@ export async function runPrompt(args) {
410
436
  tools: adapted.tools,
411
437
  systemPrompt,
412
438
  model: piModel,
413
- models: buildModels(piModel, apiKey),
439
+ models: buildModels(piModel, apiKey, {
440
+ resilience: ctx.config.models?.resilience,
441
+ reResolveApiKey: () => resolveApiKey(modelInfo),
442
+ onRetry: (n) => {
443
+ // Rebuilding after partial content: tell the client to drop the
444
+ // half-streamed bubble before the replay's deltas land, so the
445
+ // answer isn't duplicated.
446
+ if (n.contentStreamed) {
447
+ send({ type: "stream_reset", sessionId: session.id });
448
+ }
449
+ send({
450
+ type: "model_retry",
451
+ attempt: n.attempt,
452
+ maxAttempts: n.maxAttempts,
453
+ kind: n.kind,
454
+ delayMs: n.delayMs,
455
+ rateLimited: n.rateLimited,
456
+ message: n.message,
457
+ contentStreamed: n.contentStreamed,
458
+ sessionId: session.id,
459
+ });
460
+ },
461
+ }),
414
462
  });
415
463
  // External abort → harness.abort()
416
464
  const onAbort = () => void harness.abort();
@@ -535,7 +583,22 @@ export async function runPrompt(args) {
535
583
  // actionable error.
536
584
  throw new HandledTurnAbort();
537
585
  }
538
- await harness.prompt(promptText, images.length > 0 ? { images } : undefined);
586
+ if (retryLastTurn) {
587
+ // Resume the last turn WITHOUT inserting a duplicate user
588
+ // message. The failed/interrupted turn left the user's message
589
+ // as the transcript leaf; we drop that dangling turn and re-run
590
+ // it from the same content, so history keeps exactly one user
591
+ // message. If there's nothing resumable (last message is an
592
+ // assistant reply => the turn actually finished), end cleanly.
593
+ const resume = takeResumableUserPrompt(ctx, session.id);
594
+ if (!resume) {
595
+ throw new HandledTurnAbort();
596
+ }
597
+ await harness.prompt(resume, images.length > 0 ? { images } : undefined);
598
+ }
599
+ else {
600
+ await harness.prompt(promptText, images.length > 0 ? { images } : undefined);
601
+ }
539
602
  await harness.waitForIdle();
540
603
  }
541
604
  catch (err) {
@@ -895,6 +958,128 @@ function readBackLatestMessage(ctx, sessionId, role) {
895
958
  createdAt: row.created_at,
896
959
  };
897
960
  }
961
+ /**
962
+ * Retry helper. A failed / interrupted turn leaves the user's prompt
963
+ * as the transcript tail (the assistant reply never completed, or is
964
+ * a partial). To resume WITHOUT duplicating the user message, we:
965
+ * 1. find the trailing turn (from the leaf back to — but not
966
+ * including — the last COMPLETED assistant reply),
967
+ * 2. confirm it contains a user message (else nothing to resume),
968
+ * 3. delete those trailing entries and re-point the session leaf at
969
+ * the prior completed entry,
970
+ * 4. return the user message text so the caller re-runs it via a
971
+ * single fresh `prompt()`.
972
+ * Net effect: history keeps exactly one user message for the turn.
973
+ *
974
+ * Returns null when there's nothing resumable (e.g. the last turn
975
+ * actually completed, or the session is empty) — the caller then ends
976
+ * the stream cleanly instead of erroring.
977
+ */
978
+ export function takeResumableUserPrompt(ctx, sessionId) {
979
+ // Pull the message chain newest-first. entry_type='message' skips
980
+ // compaction/system tree entries; we only reason about turns.
981
+ const rows = ctx.db
982
+ .prepare(`SELECT id, role, content
983
+ FROM messages
984
+ WHERE session_id = ? AND entry_type = 'message'
985
+ ORDER BY created_at DESC, rowid DESC`)
986
+ .all(sessionId);
987
+ if (rows.length === 0)
988
+ return null;
989
+ // Walk newest-first, collecting the trailing turn's entries until we
990
+ // reach a SUCCESSFULLY-COMPLETED assistant reply (= the previous
991
+ // turn's end). An assistant row whose persisted message carries
992
+ // stopReason "error"/"aborted" is a failed partial (e.g. the
993
+ // provider "terminated" the stream mid-sentence) — it belongs to the
994
+ // trailing failed turn and must be dropped, NOT treated as a
995
+ // completion boundary. Missing that was why a terminated turn never
996
+ // resumed: takeResumableUserPrompt saw the partial text, called it
997
+ // "done", and refused to retry.
998
+ const toDelete = [];
999
+ let userText = null;
1000
+ let newLeafId = null;
1001
+ for (const row of rows) {
1002
+ if (row.role === "assistant" &&
1003
+ row.content.trim().length > 0 &&
1004
+ !assistantRowFailed(row.content)) {
1005
+ // Boundary: previous turn's completed reply. Stop; this becomes
1006
+ // the new leaf.
1007
+ newLeafId = row.id;
1008
+ break;
1009
+ }
1010
+ // Part of the trailing (failed) turn — includes failed/partial
1011
+ // assistant rows and tool rows.
1012
+ toDelete.push(row.id);
1013
+ if (row.role === "user" && userText === null) {
1014
+ // The user prompt we'll resume (first user seen scanning back).
1015
+ // CRITICAL: user rows are stored as a full AgentMessage JSON
1016
+ // ({"role":"user","content":[{"type":"text","text":"…"}]}).
1017
+ // We must extract the PLAIN TEXT here — re-running prompt() with
1018
+ // the raw JSON string would re-serialize it into another
1019
+ // AgentMessage, nesting the JSON one layer deeper on every
1020
+ // retry (the "repeated JSON messages" bug). Legacy rows may be
1021
+ // plain text; extractUserText handles both.
1022
+ userText = extractUserText(row.content);
1023
+ }
1024
+ }
1025
+ if (userText === null)
1026
+ return null; // nothing to resume
1027
+ // Drop the dangling turn and re-point the leaf at the prior entry.
1028
+ const tx = ctx.db.transaction(() => {
1029
+ const del = ctx.db.prepare(`DELETE FROM messages WHERE id = ?`);
1030
+ for (const id of toDelete)
1031
+ del.run(id);
1032
+ ctx.db
1033
+ .prepare(`UPDATE sessions SET leaf_id = ? WHERE id = ?`)
1034
+ .run(newLeafId, sessionId);
1035
+ });
1036
+ tx();
1037
+ return userText;
1038
+ }
1039
+ /** Extract the plain user text from a persisted user row. Rows are
1040
+ * stored as a full AgentMessage JSON
1041
+ * ({"role":"user","content":[{"type":"text","text":"…"}], …}); we
1042
+ * concat the text blocks. Legacy rows may already be plain text —
1043
+ * return them as-is. This MUST be used before re-running prompt() on
1044
+ * a resumed turn, else the raw JSON gets re-wrapped into a new
1045
+ * AgentMessage and nests one layer deeper each retry. */
1046
+ function extractUserText(content) {
1047
+ const trimmed = content.trim();
1048
+ if (!trimmed.startsWith("{") && !trimmed.startsWith("[")) {
1049
+ return content; // legacy plain-text row
1050
+ }
1051
+ try {
1052
+ const parsed = JSON.parse(content);
1053
+ if (typeof parsed.content === "string")
1054
+ return parsed.content;
1055
+ if (Array.isArray(parsed.content)) {
1056
+ const text = parsed.content
1057
+ .filter((b) => b && b.type === "text" && typeof b.text === "string")
1058
+ .map((b) => b.text)
1059
+ .join("");
1060
+ // If there were only non-text blocks (e.g. images), fall back to
1061
+ // empty string rather than the raw JSON.
1062
+ return text;
1063
+ }
1064
+ return content;
1065
+ }
1066
+ catch {
1067
+ return content; // not JSON after all — treat as plain text
1068
+ }
1069
+ }
1070
+ /** True iff a persisted assistant row's JSON carries a failure
1071
+ * stopReason ("error" / "aborted"). Such a row is a partial/aborted
1072
+ * reply, not a completed turn. Non-JSON or missing stopReason → not
1073
+ * failed (treat as a normal completed reply). */
1074
+ function assistantRowFailed(content) {
1075
+ try {
1076
+ const parsed = JSON.parse(content);
1077
+ return parsed.stopReason === "error" || parsed.stopReason === "aborted";
1078
+ }
1079
+ catch {
1080
+ return false;
1081
+ }
1082
+ }
898
1083
  /** Build a `ToWireOpts` bound to the current tenant config. The
899
1084
  * resolver lets `toWire` stamp `meta.contextWindow` on every
900
1085
  * assistant row without each caller having to do the lookup. */