@superblocksteam/vite-plugin-file-sync 2.0.130-next.0 → 2.0.130-next.2

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 (120) hide show
  1. package/dist/ai-service/agent/tool-message-utils.d.ts.map +1 -1
  2. package/dist/ai-service/agent/tool-message-utils.js +30 -0
  3. package/dist/ai-service/agent/tool-message-utils.js.map +1 -1
  4. package/dist/ai-service/agent/tools2/tools/exit-plan-mode.d.ts +8 -0
  5. package/dist/ai-service/agent/tools2/tools/exit-plan-mode.d.ts.map +1 -1
  6. package/dist/ai-service/agent/tools2/tools/exit-plan-mode.js +94 -4
  7. package/dist/ai-service/agent/tools2/tools/exit-plan-mode.js.map +1 -1
  8. package/dist/ai-service/agent/utils.d.ts.map +1 -1
  9. package/dist/ai-service/agent/utils.js +6 -1
  10. package/dist/ai-service/agent/utils.js.map +1 -1
  11. package/dist/ai-service/app-skills/helpers.d.ts.map +1 -1
  12. package/dist/ai-service/app-skills/helpers.js +17 -18
  13. package/dist/ai-service/app-skills/helpers.js.map +1 -1
  14. package/dist/ai-service/chat/chat-push-metrics.d.ts +12 -0
  15. package/dist/ai-service/chat/chat-push-metrics.d.ts.map +1 -0
  16. package/dist/ai-service/chat/chat-push-metrics.js +68 -0
  17. package/dist/ai-service/chat/chat-push-metrics.js.map +1 -0
  18. package/dist/ai-service/chat/chat-session-store.d.ts +61 -5
  19. package/dist/ai-service/chat/chat-session-store.d.ts.map +1 -1
  20. package/dist/ai-service/chat/chat-session-store.js +214 -8
  21. package/dist/ai-service/chat/chat-session-store.js.map +1 -1
  22. package/dist/ai-service/chat/transcript-budget.d.ts +108 -0
  23. package/dist/ai-service/chat/transcript-budget.d.ts.map +1 -0
  24. package/dist/ai-service/chat/transcript-budget.js +175 -0
  25. package/dist/ai-service/chat/transcript-budget.js.map +1 -0
  26. package/dist/ai-service/chat/transcript-metrics.d.ts +16 -0
  27. package/dist/ai-service/chat/transcript-metrics.d.ts.map +1 -0
  28. package/dist/ai-service/chat/transcript-metrics.js +128 -0
  29. package/dist/ai-service/chat/transcript-metrics.js.map +1 -0
  30. package/dist/ai-service/index.d.ts.map +1 -1
  31. package/dist/ai-service/index.js +4 -0
  32. package/dist/ai-service/index.js.map +1 -1
  33. package/dist/ai-service/llm/clark-stream-telemetry-sink.d.ts +4 -0
  34. package/dist/ai-service/llm/clark-stream-telemetry-sink.d.ts.map +1 -0
  35. package/dist/ai-service/llm/clark-stream-telemetry-sink.js +105 -0
  36. package/dist/ai-service/llm/clark-stream-telemetry-sink.js.map +1 -0
  37. package/dist/ai-service/llm/client.d.ts.map +1 -1
  38. package/dist/ai-service/llm/client.js +63 -39
  39. package/dist/ai-service/llm/client.js.map +1 -1
  40. package/dist/ai-service/llm/context-v2/compaction/client-side.d.ts.map +1 -1
  41. package/dist/ai-service/llm/context-v2/compaction/client-side.js +10 -1
  42. package/dist/ai-service/llm/context-v2/compaction/client-side.js.map +1 -1
  43. package/dist/ai-service/llm/context-v2/context.d.ts.map +1 -1
  44. package/dist/ai-service/llm/context-v2/context.js +43 -2
  45. package/dist/ai-service/llm/context-v2/context.js.map +1 -1
  46. package/dist/ai-service/llm/context-v2/storage/event-types.d.ts +10 -1
  47. package/dist/ai-service/llm/context-v2/storage/event-types.d.ts.map +1 -1
  48. package/dist/ai-service/llm/context-v2/storage/event-types.js +7 -1
  49. package/dist/ai-service/llm/context-v2/storage/event-types.js.map +1 -1
  50. package/dist/ai-service/llm/stream/config.d.ts +30 -0
  51. package/dist/ai-service/llm/stream/config.d.ts.map +1 -1
  52. package/dist/ai-service/llm/stream/config.js +34 -17
  53. package/dist/ai-service/llm/stream/config.js.map +1 -1
  54. package/dist/ai-service/llm/stream/errors.d.ts +10 -1
  55. package/dist/ai-service/llm/stream/errors.d.ts.map +1 -1
  56. package/dist/ai-service/llm/stream/errors.js +3 -1
  57. package/dist/ai-service/llm/stream/errors.js.map +1 -1
  58. package/dist/ai-service/llm/stream/idle-monitor.d.ts +13 -4
  59. package/dist/ai-service/llm/stream/idle-monitor.d.ts.map +1 -1
  60. package/dist/ai-service/llm/stream/idle-monitor.js +28 -6
  61. package/dist/ai-service/llm/stream/idle-monitor.js.map +1 -1
  62. package/dist/ai-service/llm/stream/index.d.ts +1 -1
  63. package/dist/ai-service/llm/stream/index.d.ts.map +1 -1
  64. package/dist/ai-service/llm/stream/index.js.map +1 -1
  65. package/dist/ai-service/llm/stream/managed-stream.d.ts.map +1 -1
  66. package/dist/ai-service/llm/stream/managed-stream.js +1 -0
  67. package/dist/ai-service/llm/stream/managed-stream.js.map +1 -1
  68. package/dist/ai-service/llm/stream/orchestrator.d.ts +19 -0
  69. package/dist/ai-service/llm/stream/orchestrator.d.ts.map +1 -1
  70. package/dist/ai-service/llm/stream/orchestrator.js +277 -29
  71. package/dist/ai-service/llm/stream/orchestrator.js.map +1 -1
  72. package/dist/ai-service/llm/stream/retry-engine.d.ts +15 -0
  73. package/dist/ai-service/llm/stream/retry-engine.d.ts.map +1 -1
  74. package/dist/ai-service/llm/stream/retry-engine.js +55 -2
  75. package/dist/ai-service/llm/stream/retry-engine.js.map +1 -1
  76. package/dist/ai-service/llm/stream/session.d.ts +3 -0
  77. package/dist/ai-service/llm/stream/session.d.ts.map +1 -1
  78. package/dist/ai-service/llm/stream/session.js +13 -0
  79. package/dist/ai-service/llm/stream/session.js.map +1 -1
  80. package/dist/ai-service/llm/stream/wait-state-tracker.d.ts +54 -0
  81. package/dist/ai-service/llm/stream/wait-state-tracker.d.ts.map +1 -0
  82. package/dist/ai-service/llm/stream/wait-state-tracker.js +105 -0
  83. package/dist/ai-service/llm/stream/wait-state-tracker.js.map +1 -0
  84. package/dist/ai-service/state-machine/clark-fsm.d.ts.map +1 -1
  85. package/dist/ai-service/state-machine/clark-fsm.js +13 -7
  86. package/dist/ai-service/state-machine/clark-fsm.js.map +1 -1
  87. package/dist/ai-service/state-machine/handlers/agent-planning.d.ts.map +1 -1
  88. package/dist/ai-service/state-machine/handlers/agent-planning.js +55 -43
  89. package/dist/ai-service/state-machine/handlers/agent-planning.js.map +1 -1
  90. package/dist/ai-service/state-machine/handlers/flush-pending-chat-pushes.d.ts +11 -0
  91. package/dist/ai-service/state-machine/handlers/flush-pending-chat-pushes.d.ts.map +1 -0
  92. package/dist/ai-service/state-machine/handlers/flush-pending-chat-pushes.js +11 -0
  93. package/dist/ai-service/state-machine/handlers/flush-pending-chat-pushes.js.map +1 -0
  94. package/dist/ai-service/state-machine/handlers/llm-generating.d.ts.map +1 -1
  95. package/dist/ai-service/state-machine/handlers/llm-generating.js +10 -0
  96. package/dist/ai-service/state-machine/handlers/llm-generating.js.map +1 -1
  97. package/dist/ai-service/state-machine/helpers/background-chat-record-metrics.d.ts +8 -0
  98. package/dist/ai-service/state-machine/helpers/background-chat-record-metrics.d.ts.map +1 -0
  99. package/dist/ai-service/state-machine/helpers/background-chat-record-metrics.js +52 -0
  100. package/dist/ai-service/state-machine/helpers/background-chat-record-metrics.js.map +1 -0
  101. package/dist/ai-service/state-machine/helpers/background-chat-record.d.ts +33 -0
  102. package/dist/ai-service/state-machine/helpers/background-chat-record.d.ts.map +1 -0
  103. package/dist/ai-service/state-machine/helpers/background-chat-record.js +61 -0
  104. package/dist/ai-service/state-machine/helpers/background-chat-record.js.map +1 -0
  105. package/dist/ai-service/state-machine/mocks.d.ts.map +1 -1
  106. package/dist/ai-service/state-machine/mocks.js +1 -0
  107. package/dist/ai-service/state-machine/mocks.js.map +1 -1
  108. package/dist/ai-service/tasks/peer-push.d.ts +7 -4
  109. package/dist/ai-service/tasks/peer-push.d.ts.map +1 -1
  110. package/dist/ai-service/tasks/peer-push.js +7 -4
  111. package/dist/ai-service/tasks/peer-push.js.map +1 -1
  112. package/dist/migration-templates/app-fullstack/package.json +1 -1
  113. package/dist/socket-manager.d.ts +2 -1
  114. package/dist/socket-manager.d.ts.map +1 -1
  115. package/dist/socket-manager.js +17 -6
  116. package/dist/socket-manager.js.map +1 -1
  117. package/dist/util/logger.d.ts +1 -0
  118. package/dist/util/logger.d.ts.map +1 -1
  119. package/dist/util/logger.js.map +1 -1
  120. package/package.json +8 -8
@@ -12,9 +12,18 @@ import type { SuperblocksMetadata } from "../types.js";
12
12
  *
13
13
  * - `prompt_sent`: A user prompt was sent to the LLM.
14
14
  * - `response_received`: An assistant response was received from the LLM.
15
- * - `compaction_received`: A server-side compaction summary replaced earlier history.
15
+ * - `compaction_received`: A compaction replaced earlier history — either a
16
+ * server-side compaction summary or the anchor marker written before a
17
+ * client-side phase-1 compaction window.
16
18
  */
17
19
  export type EventType = "prompt_sent" | "response_received" | "compaction_received";
20
+ /**
21
+ * Content of the `compaction_received` marker written before a client-side
22
+ * phase-1 compaction window. The marker is the replay anchor that
23
+ * `JsonlEventStore.loadMessages` scans back to; phase-2 windows do not need
24
+ * it because their first message carries `isSummary`.
25
+ */
26
+ export declare const CLIENT_COMPACTION_MARKER = "Client-side compaction applied";
18
27
  /**
19
28
  * Message role aligned with AI SDK's `ModelMessage` role literals.
20
29
  */
@@ -1 +1 @@
1
- {"version":3,"file":"event-types.d.ts","sourceRoot":"","sources":["../../../../../src/ai-service/llm/context-v2/storage/event-types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEvD;;;;;;GAMG;AACH,MAAM,MAAM,SAAS,GACjB,aAAa,GACb,mBAAmB,GACnB,qBAAqB,CAAC;AAE1B;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,GAAG,QAAQ,CAAC;AAEnE;;;;;;;GAOG;AACH,MAAM,WAAW,aAAa;IAC5B,2BAA2B;IAC3B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,wDAAwD;IACxD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,iEAAiE;IACjE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,yFAAyF;IACzF,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,6EAA6E;IAC7E,QAAQ,CAAC,KAAK,CAAC,EAAE;QACf,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;KAC5B,CAAC;IACF,iEAAiE;IACjE,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpD,+FAA+F;IAC/F,QAAQ,CAAC,YAAY,CAAC,EAAE,mBAAmB,CAAC;CAC7C"}
1
+ {"version":3,"file":"event-types.d.ts","sourceRoot":"","sources":["../../../../../src/ai-service/llm/context-v2/storage/event-types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEvD;;;;;;;;GAQG;AACH,MAAM,MAAM,SAAS,GACjB,aAAa,GACb,mBAAmB,GACnB,qBAAqB,CAAC;AAE1B;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,mCAAmC,CAAC;AAEzE;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,GAAG,QAAQ,CAAC;AAEnE;;;;;;;GAOG;AACH,MAAM,WAAW,aAAa;IAC5B,2BAA2B;IAC3B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,wDAAwD;IACxD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,iEAAiE;IACjE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,yFAAyF;IACzF,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,6EAA6E;IAC7E,QAAQ,CAAC,KAAK,CAAC,EAAE;QACf,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;KAC5B,CAAC;IACF,iEAAiE;IACjE,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpD,+FAA+F;IAC/F,QAAQ,CAAC,YAAY,CAAC,EAAE,mBAAmB,CAAC;CAC7C"}
@@ -6,5 +6,11 @@
6
6
  * or compaction received). The event log replaces full-context JSON
7
7
  * blob storage with an incremental, corruption-tolerant format.
8
8
  */
9
- export {};
9
+ /**
10
+ * Content of the `compaction_received` marker written before a client-side
11
+ * phase-1 compaction window. The marker is the replay anchor that
12
+ * `JsonlEventStore.loadMessages` scans back to; phase-2 windows do not need
13
+ * it because their first message carries `isSummary`.
14
+ */
15
+ export const CLIENT_COMPACTION_MARKER = "Client-side compaction applied";
10
16
  //# sourceMappingURL=event-types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"event-types.js","sourceRoot":"","sources":["../../../../../src/ai-service/llm/context-v2/storage/event-types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
1
+ {"version":3,"file":"event-types.js","sourceRoot":"","sources":["../../../../../src/ai-service/llm/context-v2/storage/event-types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAkBH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,gCAAgC,CAAC"}
@@ -3,6 +3,23 @@ import type { FileArtifact } from "../../types.js";
3
3
  export type ProviderType = "vertex" | "bedrock" | "snowflake";
4
4
  export type CoreModelType = "claude-sonnet-4-5" | "claude-sonnet-4-6" | "claude-opus-4-5" | "claude-opus-4-6" | "claude-opus-4-7";
5
5
  export type { FallbackStrategy };
6
+ /**
7
+ * The time budgets that govern stall detection and the retry max-time wall for
8
+ * a single model. These differ by model (e.g. extended-thinking opus models get
9
+ * a larger idle/total budget than sonnet), so fallback attempts must resolve
10
+ * them against the CURRENT model, not the initial one. See APPS-4775.
11
+ */
12
+ export interface RetryBudget {
13
+ idleTimeoutMs: number;
14
+ firstChunkTimeoutMs: number;
15
+ maxTotalTimeMs: number;
16
+ }
17
+ /**
18
+ * Resolves the time budgets for a given model. Callers that vary budgets by
19
+ * model (LLMClient) supply one; everything else falls back to the flat resolved
20
+ * values so behavior is unchanged.
21
+ */
22
+ export type RetryBudgetResolver = (model: CoreModelType) => RetryBudget;
6
23
  export interface RetryConfigOptions {
7
24
  maxAttempts?: number;
8
25
  maxAttemptsPerProvider?: number | Record<ProviderType, Record<CoreModelType, number> | number>;
@@ -15,6 +32,13 @@ export interface RetryConfigOptions {
15
32
  * gaps after the compaction start event. See APPS-4520.
16
33
  */
17
34
  firstChunkTimeoutMs?: number;
35
+ /**
36
+ * Per-model budget resolver. When supplied, the orchestrator's IdleMonitor
37
+ * and the RetryEngine's max-time guard recompute idle/first-chunk/max-time
38
+ * from the CURRENT attempt's model instead of inheriting the initial model's
39
+ * frozen budget across fallback. See APPS-4775.
40
+ */
41
+ budgetForModel?: RetryBudgetResolver;
18
42
  initialDelayMs?: number;
19
43
  maxDelayMs?: number;
20
44
  backoffMultiplier?: number;
@@ -80,6 +104,12 @@ interface ResolvedRetryConfig {
80
104
  maxTotalTimeMs: number;
81
105
  idleTimeoutMs: number;
82
106
  firstChunkTimeoutMs: number;
107
+ /**
108
+ * Always present. When the caller supplies no resolver, returns the flat
109
+ * resolved budget for every model so behavior is unchanged. The orchestrator
110
+ * and retry engine call this with the current attempt's model. See APPS-4775.
111
+ */
112
+ budgetForModel: RetryBudgetResolver;
83
113
  initialDelayMs: number;
84
114
  maxDelayMs: number;
85
115
  backoffMultiplier: number;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/llm/stream/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/llm/stream/config.ts"],"names":[],"mappings":"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"}
@@ -45,26 +45,43 @@ export class StreamConfig {
45
45
  "These values should come from the UI feature flags " +
46
46
  "(ui.clark-ai.llm-provider and superblocks.ai.core-model.name).");
47
47
  }
48
+ // Generic default for callers with no server-side context management.
49
+ // Like firstChunkTimeoutMs below, StreamConfig stays agnostic and does
50
+ // NOT floor this against the proxy upstream-stall timeout — callers that
51
+ // run behind the proxy must pass a value >= the proxy stall budget so a
52
+ // single upstream stall can't exhaust the retry clock (LLMClient does
53
+ // this via Math.max(..., proxyStallTimeoutMs)). See APPS-4520.
54
+ const resolvedMaxTotalTimeMs = options.retry?.maxTotalTimeMs ?? 120_000;
55
+ const resolvedIdleTimeoutMs = options.retry?.idleTimeoutMs ?? 90_000;
56
+ // Defaults to the inter-chunk idle budget so generic callers see no
57
+ // behavior change. StreamConfig is context-management-agnostic and does
58
+ // NOT itself apply the larger server-side first-chunk budget — callers
59
+ // that opt into server-side context management must pass a value derived
60
+ // from `defaultFirstChunkTimeoutMs(serverSide, idleTimeoutMs)` (LLMClient
61
+ // does this). See APPS-4520.
62
+ const resolvedFirstChunkTimeoutMs = options.retry?.firstChunkTimeoutMs ??
63
+ options.retry?.idleTimeoutMs ??
64
+ 90_000;
65
+ // When the caller varies budgets by model (LLMClient), the flat fields
66
+ // reflect the INITIAL model's budget so observers/tests reading them are
67
+ // unchanged, and budgetForModel resolves per attempt. Otherwise
68
+ // budgetForModel returns the flat budget for every model — no behavior
69
+ // change for callers that don't supply a resolver. See APPS-4775.
70
+ const initialBudget = options.retry?.budgetForModel
71
+ ? options.retry.budgetForModel(options.model)
72
+ : {
73
+ idleTimeoutMs: resolvedIdleTimeoutMs,
74
+ firstChunkTimeoutMs: resolvedFirstChunkTimeoutMs,
75
+ maxTotalTimeMs: resolvedMaxTotalTimeMs,
76
+ };
77
+ const budgetForModel = options.retry?.budgetForModel ?? (() => initialBudget);
48
78
  const retry = {
49
79
  maxAttempts: options.retry?.maxAttempts ?? 5,
50
80
  maxAttemptsPerProvider: options.retry?.maxAttemptsPerProvider ?? 2,
51
- // Generic default for callers with no server-side context management.
52
- // Like firstChunkTimeoutMs below, StreamConfig stays agnostic and does
53
- // NOT floor this against the proxy upstream-stall timeout — callers that
54
- // run behind the proxy must pass a value >= the proxy stall budget so a
55
- // single upstream stall can't exhaust the retry clock (LLMClient does
56
- // this via Math.max(..., proxyStallTimeoutMs)). See APPS-4520.
57
- maxTotalTimeMs: options.retry?.maxTotalTimeMs ?? 120_000,
58
- idleTimeoutMs: options.retry?.idleTimeoutMs ?? 90_000,
59
- // Defaults to the inter-chunk idle budget so generic callers see no
60
- // behavior change. StreamConfig is context-management-agnostic and does
61
- // NOT itself apply the larger server-side first-chunk budget — callers
62
- // that opt into server-side context management must pass a value derived
63
- // from `defaultFirstChunkTimeoutMs(serverSide, idleTimeoutMs)` (LLMClient
64
- // does this). See APPS-4520.
65
- firstChunkTimeoutMs: options.retry?.firstChunkTimeoutMs ??
66
- options.retry?.idleTimeoutMs ??
67
- 90_000,
81
+ maxTotalTimeMs: initialBudget.maxTotalTimeMs,
82
+ idleTimeoutMs: initialBudget.idleTimeoutMs,
83
+ firstChunkTimeoutMs: initialBudget.firstChunkTimeoutMs,
84
+ budgetForModel,
68
85
  initialDelayMs: options.retry?.initialDelayMs ?? 500,
69
86
  maxDelayMs: options.retry?.maxDelayMs ?? 10_000,
70
87
  backoffMultiplier: options.retry?.backoffMultiplier ?? 2,
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../src/ai-service/llm/stream/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../src/ai-service/llm/stream/config.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,14 @@ export declare class AbortedError extends Error {
10
10
  name: string;
11
11
  constructor(message?: string);
12
12
  }
13
+ /**
14
+ * Which idle budget was in effect when a stall fired. "first-chunk" means the
15
+ * model never sent content (only silence/keep-alives) before the stall;
16
+ * "inter-chunk" means content was flowing and then stopped. Carried on the
17
+ * error so downstream logging classifies stalls without re-deriving the budget
18
+ * by numeric comparison — which is ambiguous now that budgets are per-model.
19
+ */
20
+ export type StallBudgetKind = "first-chunk" | "inter-chunk";
13
21
  /**
14
22
  * Error thrown when a stream has been idle for too long.
15
23
  * This is a retryable error that triggers the retry logic.
@@ -19,7 +27,8 @@ export declare class StallTimeoutError extends Error implements RetryableError {
19
27
  readonly isRetryable = true;
20
28
  readonly idleTimeMs: number;
21
29
  readonly maxIdleTimeMs: number;
22
- constructor(idleTimeMs: number, maxIdleTimeMs: number);
30
+ readonly budgetKind: StallBudgetKind;
31
+ constructor(idleTimeMs: number, maxIdleTimeMs: number, budgetKind?: StallBudgetKind);
23
32
  }
24
33
  /**
25
34
  * Wraps an error for consistent error handling.
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/llm/stream/errors.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,oBAAoB,EAEpB,gBAAgB,EAChB,KAAK,cAAc,EACpB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,oBAAoB,EAAE,KAAK,cAAc,EAAE,CAAC;AAErD,qBAAa,qBAAsB,SAAQ,KAAK;IACrC,IAAI,SAA2B;IACxC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;gBAEjB,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO;CAMnE;AAED,qBAAa,YAAa,SAAQ,KAAK;IAC5B,IAAI,SAAkB;gBAEnB,OAAO,SAAoB;CAGxC;AAED;;;GAGG;AACH,qBAAa,iBAAkB,SAAQ,KAAM,YAAW,cAAc;IAC3D,IAAI,SAAuB;IACpC,QAAQ,CAAC,WAAW,QAAQ;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;gBAEnB,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM;CAOtD;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,gBAAgB,CA0D3E"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/llm/stream/errors.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,oBAAoB,EAEpB,gBAAgB,EAChB,KAAK,cAAc,EACpB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,oBAAoB,EAAE,KAAK,cAAc,EAAE,CAAC;AAErD,qBAAa,qBAAsB,SAAQ,KAAK;IACrC,IAAI,SAA2B;IACxC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;gBAEjB,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO;CAMnE;AAED,qBAAa,YAAa,SAAQ,KAAK;IAC5B,IAAI,SAAkB;gBAEnB,OAAO,SAAoB;CAGxC;AAED;;;;;;GAMG;AACH,MAAM,MAAM,eAAe,GAAG,aAAa,GAAG,aAAa,CAAC;AAE5D;;;GAGG;AACH,qBAAa,iBAAkB,SAAQ,KAAM,YAAW,cAAc;IAC3D,IAAI,SAAuB;IACpC,QAAQ,CAAC,WAAW,QAAQ;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAC;gBAGnC,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,EACrB,UAAU,GAAE,eAA+B;CAS9C;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,gBAAgB,CA0D3E"}
@@ -27,10 +27,12 @@ export class StallTimeoutError extends Error {
27
27
  isRetryable = true;
28
28
  idleTimeMs;
29
29
  maxIdleTimeMs;
30
- constructor(idleTimeMs, maxIdleTimeMs) {
30
+ budgetKind;
31
+ constructor(idleTimeMs, maxIdleTimeMs, budgetKind = "inter-chunk") {
31
32
  super(`Stream stalled: no activity for ${idleTimeMs}ms (max: ${maxIdleTimeMs}ms)`);
32
33
  this.idleTimeMs = idleTimeMs;
33
34
  this.maxIdleTimeMs = maxIdleTimeMs;
35
+ this.budgetKind = budgetKind;
34
36
  }
35
37
  }
36
38
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../../src/ai-service/llm/stream/errors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../../src/ai-service/llm/stream/errors.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,12 @@
1
1
  import { StallTimeoutError } from "./errors.js";
2
2
  import type { StreamSession } from "./session.js";
3
+ /**
4
+ * An idle budget, either a fixed value or a thunk resolved at arm time. A thunk
5
+ * lets the budget track the CURRENT attempt's model across fallback, so a
6
+ * downgraded model is monitored against its own budget rather than the initial
7
+ * model's. See APPS-4775.
8
+ */
9
+ export type TimeoutBudget = number | (() => number);
3
10
  /**
4
11
  * Detects when a stream has stalled (no chunks received within timeout).
5
12
  *
@@ -26,13 +33,13 @@ import type { StreamSession } from "./session.js";
26
33
  */
27
34
  export interface IdleMonitorOptions {
28
35
  session: StreamSession;
29
- maxIdleTimeMs: number;
36
+ maxIdleTimeMs: TimeoutBudget;
30
37
  /**
31
38
  * Budget for the first useful output event in each provider step. Defaults
32
39
  * to `maxIdleTimeMs`. Set larger to tolerate server-side context compaction
33
40
  * gaps after the compaction start event.
34
41
  */
35
- firstChunkTimeoutMs?: number;
42
+ firstChunkTimeoutMs?: TimeoutBudget;
36
43
  onStall?: (error: StallTimeoutError) => void;
37
44
  onServerCompactionStart?: (blockId: string) => void;
38
45
  }
@@ -48,12 +55,14 @@ export declare class IdleMonitor {
48
55
  private subscribed;
49
56
  private hasReceivedChunk;
50
57
  private readonly compactionTextBlockIds;
58
+ private armedBudget;
51
59
  constructor(options: IdleMonitorOptions);
60
+ private resolveBudget;
52
61
  /**
53
62
  * Active budget: the first-chunk budget until useful output arrives, then
54
- * the inter-chunk idle budget.
63
+ * the inter-chunk idle budget. Resolved against the current model each call.
55
64
  */
56
- private currentTimeoutMs;
65
+ private currentBudget;
57
66
  /**
58
67
  * Start the idle monitor. Arms the timer and subscribes to session events.
59
68
  */
@@ -1 +1 @@
1
- {"version":3,"file":"idle-monitor.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/llm/stream/idle-monitor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAElD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,aAAa,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC7C,uBAAuB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACrD;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgB;IACxC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAS;IAC7C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAqC;IACtE,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAA4B;IACrE,OAAO,CAAC,KAAK,CAA8C;IAC3D,OAAO,CAAC,UAAU,CAAkC;IACpD,OAAO,CAAC,cAAc,CAAiD;IACvE,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAqB;gBAEhD,OAAO,EAAE,kBAAkB;IASvC;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAMxB;;OAEG;IACH,KAAK,IAAI,IAAI;IASb;;;;;;;OAOG;IACH,IAAI,IAAI,IAAI;IAOZ;;OAEG;IACH,aAAa,IAAI,iBAAiB,GAAG,IAAI;IAIzC;;OAEG;IACH,YAAY,IAAI,OAAO,CAAC,KAAK,CAAC;IAU9B,OAAO,CAAC,iBAAiB;IAczB,OAAO,CAAC,WAAW,CAOjB;IAEF,OAAO,CAAC,eAAe,CAMrB;IAEF,OAAO,CAAC,WAAW,CAOjB;IAEF,OAAO,CAAC,gBAAgB,CAEtB;IAEF,OAAO,CAAC,QAAQ;IAUhB,OAAO,CAAC,qBAAqB;IA2B7B,OAAO,CAAC,SAAS;CAmBlB"}
1
+ {"version":3,"file":"idle-monitor.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/llm/stream/idle-monitor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAwB,MAAM,aAAa,CAAC;AACtE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAElD;;;;;GAKG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,CAAC;AAEpD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,aAAa,CAAC;IACvB,aAAa,EAAE,aAAa,CAAC;IAC7B;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,aAAa,CAAC;IACpC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC7C,uBAAuB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACrD;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgB;IACxC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAgB;IACpD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAqC;IACtE,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAA4B;IACrE,OAAO,CAAC,KAAK,CAA8C;IAC3D,OAAO,CAAC,UAAU,CAAkC;IACpD,OAAO,CAAC,cAAc,CAAiD;IACvE,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAqB;IAI5D,OAAO,CAAC,WAAW,CAGjB;gBAEU,OAAO,EAAE,kBAAkB;IASvC,OAAO,CAAC,aAAa;IAIrB;;;OAGG;IACH,OAAO,CAAC,aAAa;IAYrB;;OAEG;IACH,KAAK,IAAI,IAAI;IASb;;;;;;;OAOG;IACH,IAAI,IAAI,IAAI;IAOZ;;OAEG;IACH,aAAa,IAAI,iBAAiB,GAAG,IAAI;IAIzC;;OAEG;IACH,YAAY,IAAI,OAAO,CAAC,KAAK,CAAC;IAU9B,OAAO,CAAC,iBAAiB;IAkBzB,OAAO,CAAC,WAAW,CAOjB;IAEF,OAAO,CAAC,eAAe,CAMrB;IAEF,OAAO,CAAC,WAAW,CAOjB;IAEF,OAAO,CAAC,gBAAgB,CAEtB;IAEF,OAAO,CAAC,QAAQ;IAahB,OAAO,CAAC,qBAAqB;IA2B7B,OAAO,CAAC,SAAS;CAuBlB"}
@@ -12,6 +12,13 @@ export class IdleMonitor {
12
12
  subscribed = false;
13
13
  hasReceivedChunk = false;
14
14
  compactionTextBlockIds = new Set();
15
+ // The budget snapshot used when the live timer was armed. fireStall() reports
16
+ // this rather than re-resolving, so the logged budget always matches the timer
17
+ // that actually fired even if the model (and thus the resolver) changed since.
18
+ armedBudget = {
19
+ timeoutMs: 0,
20
+ budgetKind: "first-chunk",
21
+ };
15
22
  constructor(options) {
16
23
  this.session = options.session;
17
24
  this.maxIdleTimeMs = options.maxIdleTimeMs;
@@ -20,14 +27,23 @@ export class IdleMonitor {
20
27
  this.onStallCallback = options.onStall;
21
28
  this.onServerCompactionStart = options.onServerCompactionStart;
22
29
  }
30
+ resolveBudget(budget) {
31
+ return typeof budget === "function" ? budget() : budget;
32
+ }
23
33
  /**
24
34
  * Active budget: the first-chunk budget until useful output arrives, then
25
- * the inter-chunk idle budget.
35
+ * the inter-chunk idle budget. Resolved against the current model each call.
26
36
  */
27
- currentTimeoutMs() {
37
+ currentBudget() {
28
38
  return this.hasReceivedChunk
29
- ? this.maxIdleTimeMs
30
- : this.firstChunkTimeoutMs;
39
+ ? {
40
+ timeoutMs: this.resolveBudget(this.maxIdleTimeMs),
41
+ budgetKind: "inter-chunk",
42
+ }
43
+ : {
44
+ timeoutMs: this.resolveBudget(this.firstChunkTimeoutMs),
45
+ budgetKind: "first-chunk",
46
+ };
31
47
  }
32
48
  /**
33
49
  * Start the idle monitor. Arms the timer and subscribes to session events.
@@ -79,6 +95,10 @@ export class IdleMonitor {
79
95
  this.session.events.on("chunk", this.handleChunk);
80
96
  this.session.events.on("step:start", this.handleStepStart);
81
97
  this.session.events.on("retry", this.handleRetry);
98
+ // "retry" re-arms while session.provider is still the OLD model; "fallback"
99
+ // fires after the provider switch, so re-arming here picks up the new
100
+ // model's idle budget for the next attempt. See APPS-4775.
101
+ this.session.events.on("fallback", this.handleRetry);
82
102
  this.session.events.on("session:complete", this.handleSessionEnd);
83
103
  this.session.events.on("session:error", this.handleSessionEnd);
84
104
  this.session.events.on("session:abort", this.handleSessionEnd);
@@ -113,9 +133,11 @@ export class IdleMonitor {
113
133
  if (this.timer !== null) {
114
134
  clearTimeout(this.timer);
115
135
  }
136
+ // Snapshot the budget once so the fired timer and the reported stall agree.
137
+ this.armedBudget = this.currentBudget();
116
138
  this.timer = setTimeout(() => {
117
139
  this.fireStall();
118
- }, this.currentTimeoutMs());
140
+ }, this.armedBudget.timeoutMs);
119
141
  }
120
142
  keepsFirstChunkBudget(chunk) {
121
143
  if (chunk.type === "raw" && this.compactionTextBlockIds.size > 0) {
@@ -143,7 +165,7 @@ export class IdleMonitor {
143
165
  return;
144
166
  }
145
167
  const idleTime = this.session.getTimeSinceLastActivity();
146
- this.stallError = new StallTimeoutError(idleTime, this.currentTimeoutMs());
168
+ this.stallError = new StallTimeoutError(idleTime, this.armedBudget.timeoutMs, this.armedBudget.budgetKind);
147
169
  try {
148
170
  this.onStallCallback?.(this.stallError);
149
171
  }
@@ -1 +1 @@
1
- {"version":3,"file":"idle-monitor.js","sourceRoot":"","sources":["../../../../src/ai-service/llm/stream/idle-monitor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"idle-monitor.js","sourceRoot":"","sources":["../../../../src/ai-service/llm/stream/idle-monitor.ts"],"names":[],"mappings":"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"}
@@ -43,7 +43,7 @@
43
43
  * ```
44
44
  */
45
45
  export { StreamConfig, defaultFirstChunkTimeoutMs } from "./config.js";
46
- export type { RetryConfigOptions, ProviderType, CoreModelType, FallbackStrategy, FallbackConfigOptions, } from "./config.js";
46
+ export type { RetryConfigOptions, RetryBudget, RetryBudgetResolver, ProviderType, CoreModelType, FallbackStrategy, FallbackConfigOptions, } from "./config.js";
47
47
  export type { StreamObserver } from "./observer.js";
48
48
  export { StreamOrchestrator } from "./orchestrator.js";
49
49
  export { LoggingObserver, LLMObsObserver, ContextObserver, RetryNotificationObserver, wrapToolsForObservability, } from "./observers/index.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/llm/stream/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AAEH,OAAO,EAAE,YAAY,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AACvE,YAAY,EACV,kBAAkB,EAClB,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,aAAa,CAAC;AAErB,YAAY,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,OAAO,EACL,eAAe,EACf,cAAc,EACd,eAAe,EACf,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/llm/stream/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AAEH,OAAO,EAAE,YAAY,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AACvE,YAAY,EACV,kBAAkB,EAClB,WAAW,EACX,mBAAmB,EACnB,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,aAAa,CAAC;AAErB,YAAY,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,OAAO,EACL,eAAe,EACf,cAAc,EACd,eAAe,EACf,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/ai-service/llm/stream/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AAEH,OAAO,EAAE,YAAY,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AAWvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,OAAO,EACL,eAAe,EACf,cAAc,EACd,eAAe,EACf,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/ai-service/llm/stream/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AAEH,OAAO,EAAE,YAAY,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AAavE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,OAAO,EACL,eAAe,EACf,cAAc,EACd,eAAe,EACf,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,sBAAsB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"managed-stream.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/llm/stream/managed-stream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,IAAI,CAAC;AAE9D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AAExD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAElD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,mBAAmB,CACjC,CAAC,SAAS,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,EAE9C,MAAM,EAAE,mBAAmB,CAAC,CAAC,CAAC,EAC9B,OAAO,EAAE,aAAa,EACtB,WAAW,EAAE,WAAW,GACvB,mBAAmB,CAAC,CAAC,CAAC,CAuHxB"}
1
+ {"version":3,"file":"managed-stream.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/llm/stream/managed-stream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,IAAI,CAAC;AAE9D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AAExD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAElD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,mBAAmB,CACjC,CAAC,SAAS,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,EAE9C,MAAM,EAAE,mBAAmB,CAAC,CAAC,CAAC,EAC9B,OAAO,EAAE,aAAa,EACtB,WAAW,EAAE,WAAW,GACvB,mBAAmB,CAAC,CAAC,CAAC,CAwHxB"}
@@ -31,6 +31,7 @@ export function createManagedStream(source, session, idleMonitor) {
31
31
  controller.close();
32
32
  return;
33
33
  }
34
+ session.recordPull();
34
35
  // Loop over raw chunks (provider SSE keep-alives / message metadata):
35
36
  // these exist only to feed IdleMonitor during thinking silences so the
36
37
  // watchdog doesn't stall a healthy stream. For each raw chunk we:
@@ -1 +1 @@
1
- {"version":3,"file":"managed-stream.js","sourceRoot":"","sources":["../../../../src/ai-service/llm/stream/managed-stream.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"managed-stream.js","sourceRoot":"","sources":["../../../../src/ai-service/llm/stream/managed-stream.ts"],"names":[],"mappings":"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"}
@@ -54,6 +54,8 @@ export declare class StreamOrchestrator {
54
54
  private readonly getJwt?;
55
55
  constructor(options: StreamOrchestratorOptions);
56
56
  execute<TOOLS extends Record<string, Tool>>(options: OrchestratorStreamTextOptions<TOOLS>): Promise<StreamTextResult<TOOLS>>;
57
+ private asAsyncIterableStream;
58
+ private textStreamFromFullStream;
57
59
  /**
58
60
  * Wraps a fullStream with retry logic. When an error occurs (either thrown or
59
61
  * as an error chunk), makes a retry decision and either creates a new stream
@@ -72,6 +74,14 @@ export declare class StreamOrchestrator {
72
74
  private startStreamWithRetry;
73
75
  private wrapFinalError;
74
76
  private startStream;
77
+ /**
78
+ * Wraps each tool's execute so only the live attempt can run it. The Vercel AI
79
+ * SDK auto-executes tools as their calls arrive on the provider stream, and a
80
+ * superseded attempt's stream can still deliver buffered tool calls after we
81
+ * abort it. Throwing AbortedError here ensures a terminal tool's real side
82
+ * effect (e.g. build_finalize) runs once, for the winning attempt only.
83
+ */
84
+ private guardToolsForAttempt;
75
85
  private applyProvider;
76
86
  /**
77
87
  * Replaces the thinking-related fields on `providerOptions.anthropic` and
@@ -82,6 +92,15 @@ export declare class StreamOrchestrator {
82
92
  */
83
93
  private rebuildThinkingOptions;
84
94
  private getFallbackReason;
95
+ /**
96
+ * Switch the session to a fallback provider, emit the structured switch log,
97
+ * and fire the "fallback" event. `fastFallback` distinguishes the stall
98
+ * fast-fallback path (a stall left the provider early) from a normal
99
+ * provider-exhaustion fallback, surfaced as a queryable Datadog facet so the
100
+ * fast-fallback behavior is verifiable in production. Error context for the
101
+ * triggering error is carried by the retry log that follows this call.
102
+ */
103
+ private switchProvider;
85
104
  private delay;
86
105
  }
87
106
  //# sourceMappingURL=orchestrator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/llm/stream/orchestrator.ts"],"names":[],"mappings":"AAGA,OAAO,EAGL,KAAK,MAAM,EACZ,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AAGxD,OAAO,KAAK,EACV,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EACjB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAIhD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAKpD,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,MAAM,EAAE,YAAY,CAAC;IACrB,SAAS,CAAC,EAAE,cAAc,EAAE,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;CACnC;AAED,MAAM,MAAM,6BAA6B,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,IAC1E,iBAAiB,CAAC,KAAK,CAAC,GAAG;IACzB,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B,CAAC;AAEJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;IAC9C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IACtC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAmB;IAC7C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAA2B;gBAEvC,OAAO,EAAE,yBAAyB;IAUxC,OAAO,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,EAC9C,OAAO,EAAE,6BAA6B,CAAC,KAAK,CAAC,GAC5C,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;IA6InC;;;;;;;;OAQG;IACH,OAAO,CAAC,aAAa;IAmErB;;;OAGG;YACW,mBAAmB;YA6EnB,oBAAoB;IA0ElC,OAAO,CAAC,cAAc;YA6BR,WAAW;IAyDzB,OAAO,CAAC,aAAa;IA8CrB;;;;;;OAMG;IACH,OAAO,CAAC,sBAAsB;IAgE9B,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,KAAK;CAmBd"}
1
+ {"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/llm/stream/orchestrator.ts"],"names":[],"mappings":"AAGA,OAAO,EAGL,KAAK,MAAM,EACZ,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AAGxD,OAAO,KAAK,EACV,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EACjB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAIhD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAMpD,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,MAAM,EAAE,YAAY,CAAC;IACrB,SAAS,CAAC,EAAE,cAAc,EAAE,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;CACnC;AAED,MAAM,MAAM,6BAA6B,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,IAC1E,iBAAiB,CAAC,KAAK,CAAC,GAAG;IACzB,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B,CAAC;AA+DJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;IAC9C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IACtC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAmB;IAC7C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAA2B;gBAEvC,OAAO,EAAE,yBAAyB;IAUxC,OAAO,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,EAC9C,OAAO,EAAE,6BAA6B,CAAC,KAAK,CAAC,GAC5C,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;IA2LnC,OAAO,CAAC,qBAAqB;IA4B7B,OAAO,CAAC,wBAAwB;IAiChC;;;;;;;;OAQG;IACH,OAAO,CAAC,aAAa;IAqErB;;;OAGG;YACW,mBAAmB;YA0EnB,oBAAoB;IAqElC,OAAO,CAAC,cAAc;YA6BR,WAAW;IAkFzB;;;;;;OAMG;IACH,OAAO,CAAC,oBAAoB;IA+B5B,OAAO,CAAC,aAAa;IA2DrB;;;;;;OAMG;IACH,OAAO,CAAC,sBAAsB;IAuE9B,OAAO,CAAC,iBAAiB;IAQzB;;;;;;;OAOG;YACW,cAAc;IAuC5B,OAAO,CAAC,KAAK;CAmBd"}