@superblocksteam/vite-plugin-file-sync 2.0.140 → 2.0.141-next.1

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 (233) hide show
  1. package/dist/ai-service/agent/prompts/build-base-system-prompt.js +1 -0
  2. package/dist/ai-service/agent/prompts/build-base-system-prompt.js.map +1 -1
  3. package/dist/ai-service/agent/tools/apis/analysis.d.ts +15 -0
  4. package/dist/ai-service/agent/tools/apis/analysis.d.ts.map +1 -1
  5. package/dist/ai-service/agent/tools/apis/analysis.js +83 -0
  6. package/dist/ai-service/agent/tools/apis/analysis.js.map +1 -1
  7. package/dist/ai-service/agent/tools/apis/api-testing-state.d.ts +14 -2
  8. package/dist/ai-service/agent/tools/apis/api-testing-state.d.ts.map +1 -1
  9. package/dist/ai-service/agent/tools/apis/api-testing-state.js +86 -12
  10. package/dist/ai-service/agent/tools/apis/api-testing-state.js.map +1 -1
  11. package/dist/ai-service/agent/tools/apis/get-api-docs.d.ts +1 -1
  12. package/dist/ai-service/agent/tools/apis/sdk-registry.d.ts +6 -0
  13. package/dist/ai-service/agent/tools/apis/sdk-registry.d.ts.map +1 -1
  14. package/dist/ai-service/agent/tools/apis/sdk-registry.js +15 -0
  15. package/dist/ai-service/agent/tools/apis/sdk-registry.js.map +1 -1
  16. package/dist/ai-service/agent/tools/apis/test-api.d.ts +1 -1
  17. package/dist/ai-service/agent/tools/apis/test-api.d.ts.map +1 -1
  18. package/dist/ai-service/agent/tools/apis/test-api.js +13 -7
  19. package/dist/ai-service/agent/tools/apis/test-api.js.map +1 -1
  20. package/dist/ai-service/agent/tools/build-copy-directory.d.ts +1 -1
  21. package/dist/ai-service/agent/tools/build-copy-file.d.ts +1 -1
  22. package/dist/ai-service/agent/tools/build-copy-utils.d.ts +8 -8
  23. package/dist/ai-service/agent/tools/build-delete-file.d.ts +1 -1
  24. package/dist/ai-service/agent/tools/build-edit-file.d.ts.map +1 -1
  25. package/dist/ai-service/agent/tools/build-edit-file.js +8 -2
  26. package/dist/ai-service/agent/tools/build-edit-file.js.map +1 -1
  27. package/dist/ai-service/agent/tools/build-finalize.d.ts.map +1 -1
  28. package/dist/ai-service/agent/tools/build-finalize.js +1 -2
  29. package/dist/ai-service/agent/tools/build-finalize.js.map +1 -1
  30. package/dist/ai-service/agent/tools/build-manage-checklist.d.ts +4 -4
  31. package/dist/ai-service/agent/tools/build-multi-edit-file.d.ts.map +1 -1
  32. package/dist/ai-service/agent/tools/build-multi-edit-file.js +4 -1
  33. package/dist/ai-service/agent/tools/build-multi-edit-file.js.map +1 -1
  34. package/dist/ai-service/agent/tools/build-write-file.d.ts.map +1 -1
  35. package/dist/ai-service/agent/tools/build-write-file.js +13 -1
  36. package/dist/ai-service/agent/tools/build-write-file.js.map +1 -1
  37. package/dist/ai-service/agent/tools/databases/dev-database-tasks.d.ts +4 -4
  38. package/dist/ai-service/agent/tools/databases/dev-database-tasks.js +1 -1
  39. package/dist/ai-service/agent/tools/databases/dev-database-tasks.js.map +1 -1
  40. package/dist/ai-service/agent/tools/get-logs.d.ts +3 -3
  41. package/dist/ai-service/agent/tools/integrations/execute-request.d.ts +9 -9
  42. package/dist/ai-service/agent/tools2/tools/check-task.d.ts +1 -1
  43. package/dist/ai-service/agent/tools2/tools/check-task.d.ts.map +1 -1
  44. package/dist/ai-service/agent/tools2/tools/check-task.js +7 -4
  45. package/dist/ai-service/agent/tools2/tools/check-task.js.map +1 -1
  46. package/dist/ai-service/agent/tools2/tools/end-test-run.d.ts +2 -2
  47. package/dist/ai-service/agent/tools2/tools/exit-plan-mode.d.ts.map +1 -1
  48. package/dist/ai-service/agent/tools2/tools/exit-plan-mode.js +93 -6
  49. package/dist/ai-service/agent/tools2/tools/exit-plan-mode.js.map +1 -1
  50. package/dist/ai-service/agent/tools2/tools/git.d.ts +1 -1
  51. package/dist/ai-service/agent/tools2/tools/grep-metadata.d.ts +1 -1
  52. package/dist/ai-service/agent/tools2/tools/grep.d.ts +1 -1
  53. package/dist/ai-service/agent/tools2/tools/list-attachments.d.ts +1 -1
  54. package/dist/ai-service/agent/tools2/tools/wait-for-task.d.ts +1 -1
  55. package/dist/ai-service/agent/tools2/tools/wait-for-task.d.ts.map +1 -1
  56. package/dist/ai-service/agent/tools2/tools/wait-for-task.js +8 -4
  57. package/dist/ai-service/agent/tools2/tools/wait-for-task.js.map +1 -1
  58. package/dist/ai-service/app-interface/npm-package-lookup.d.ts +3 -2
  59. package/dist/ai-service/app-interface/npm-package-lookup.d.ts.map +1 -1
  60. package/dist/ai-service/app-interface/npm-package-lookup.js +21 -13
  61. package/dist/ai-service/app-interface/npm-package-lookup.js.map +1 -1
  62. package/dist/ai-service/app-interface/shell.d.ts.map +1 -1
  63. package/dist/ai-service/app-interface/shell.js +119 -0
  64. package/dist/ai-service/app-interface/shell.js.map +1 -1
  65. package/dist/ai-service/checklist/api-migration-checklist-gate.js +1 -1
  66. package/dist/ai-service/checklist/api-migration-checklist-gate.js.map +1 -1
  67. package/dist/ai-service/features.d.ts +11 -0
  68. package/dist/ai-service/features.d.ts.map +1 -1
  69. package/dist/ai-service/features.js +24 -0
  70. package/dist/ai-service/features.js.map +1 -1
  71. package/dist/ai-service/index.d.ts +38 -4
  72. package/dist/ai-service/index.d.ts.map +1 -1
  73. package/dist/ai-service/index.js +224 -16
  74. package/dist/ai-service/index.js.map +1 -1
  75. package/dist/ai-service/llm/client.d.ts +38 -0
  76. package/dist/ai-service/llm/client.d.ts.map +1 -1
  77. package/dist/ai-service/llm/client.js +102 -1
  78. package/dist/ai-service/llm/client.js.map +1 -1
  79. package/dist/ai-service/llm/context-v2/compaction/client-side.d.ts +18 -0
  80. package/dist/ai-service/llm/context-v2/compaction/client-side.d.ts.map +1 -1
  81. package/dist/ai-service/llm/context-v2/compaction/client-side.js +11 -2
  82. package/dist/ai-service/llm/context-v2/compaction/client-side.js.map +1 -1
  83. package/dist/ai-service/llm/context-v2/compactor.d.ts +10 -1
  84. package/dist/ai-service/llm/context-v2/compactor.d.ts.map +1 -1
  85. package/dist/ai-service/llm/context-v2/compactor.js +22 -14
  86. package/dist/ai-service/llm/context-v2/compactor.js.map +1 -1
  87. package/dist/ai-service/llm/context-v2/context-management.d.ts +19 -1
  88. package/dist/ai-service/llm/context-v2/context-management.d.ts.map +1 -1
  89. package/dist/ai-service/llm/context-v2/context-management.js +3 -1
  90. package/dist/ai-service/llm/context-v2/context-management.js.map +1 -1
  91. package/dist/ai-service/llm/context-v2/context.d.ts +31 -2
  92. package/dist/ai-service/llm/context-v2/context.d.ts.map +1 -1
  93. package/dist/ai-service/llm/context-v2/context.js +81 -8
  94. package/dist/ai-service/llm/context-v2/context.js.map +1 -1
  95. package/dist/ai-service/llm/context-v2/manager.d.ts.map +1 -1
  96. package/dist/ai-service/llm/context-v2/manager.js +2 -0
  97. package/dist/ai-service/llm/context-v2/manager.js.map +1 -1
  98. package/dist/ai-service/llm/context-v2/phase2-session-summarizer.d.ts +48 -1
  99. package/dist/ai-service/llm/context-v2/phase2-session-summarizer.d.ts.map +1 -1
  100. package/dist/ai-service/llm/context-v2/phase2-session-summarizer.js +26 -39
  101. package/dist/ai-service/llm/context-v2/phase2-session-summarizer.js.map +1 -1
  102. package/dist/ai-service/llm/context-v2/token-tracker.d.ts +17 -1
  103. package/dist/ai-service/llm/context-v2/token-tracker.d.ts.map +1 -1
  104. package/dist/ai-service/llm/context-v2/token-tracker.js +17 -5
  105. package/dist/ai-service/llm/context-v2/token-tracker.js.map +1 -1
  106. package/dist/ai-service/llm/context-v2/turns.d.ts.map +1 -1
  107. package/dist/ai-service/llm/context-v2/turns.js +25 -1
  108. package/dist/ai-service/llm/context-v2/turns.js.map +1 -1
  109. package/dist/ai-service/llm/context-v2/types.d.ts +9 -0
  110. package/dist/ai-service/llm/context-v2/types.d.ts.map +1 -1
  111. package/dist/ai-service/llm/context-v2/types.js.map +1 -1
  112. package/dist/ai-service/llm/stream/config.d.ts +16 -1
  113. package/dist/ai-service/llm/stream/config.d.ts.map +1 -1
  114. package/dist/ai-service/llm/stream/config.js +9 -0
  115. package/dist/ai-service/llm/stream/config.js.map +1 -1
  116. package/dist/ai-service/llm/stream/errors.d.ts +1 -1
  117. package/dist/ai-service/llm/stream/errors.d.ts.map +1 -1
  118. package/dist/ai-service/llm/stream/errors.js.map +1 -1
  119. package/dist/ai-service/llm/stream/idle-monitor.d.ts +8 -0
  120. package/dist/ai-service/llm/stream/idle-monitor.d.ts.map +1 -1
  121. package/dist/ai-service/llm/stream/idle-monitor.js +51 -0
  122. package/dist/ai-service/llm/stream/idle-monitor.js.map +1 -1
  123. package/dist/ai-service/llm/stream/index.d.ts +1 -1
  124. package/dist/ai-service/llm/stream/index.d.ts.map +1 -1
  125. package/dist/ai-service/llm/stream/index.js.map +1 -1
  126. package/dist/ai-service/llm/stream/managed-stream.d.ts.map +1 -1
  127. package/dist/ai-service/llm/stream/managed-stream.js +2 -5
  128. package/dist/ai-service/llm/stream/managed-stream.js.map +1 -1
  129. package/dist/ai-service/llm/stream/observers/llmobs.d.ts.map +1 -1
  130. package/dist/ai-service/llm/stream/observers/llmobs.js +10 -1
  131. package/dist/ai-service/llm/stream/observers/llmobs.js.map +1 -1
  132. package/dist/ai-service/llm/stream/orchestrator.d.ts +2 -0
  133. package/dist/ai-service/llm/stream/orchestrator.d.ts.map +1 -1
  134. package/dist/ai-service/llm/stream/orchestrator.js +82 -5
  135. package/dist/ai-service/llm/stream/orchestrator.js.map +1 -1
  136. package/dist/ai-service/llm/stream/structured-output-chunk.d.ts +16 -0
  137. package/dist/ai-service/llm/stream/structured-output-chunk.d.ts.map +1 -0
  138. package/dist/ai-service/llm/stream/structured-output-chunk.js +26 -0
  139. package/dist/ai-service/llm/stream/structured-output-chunk.js.map +1 -0
  140. package/dist/ai-service/migration-auto-dispatch-readiness.d.ts +18 -0
  141. package/dist/ai-service/migration-auto-dispatch-readiness.d.ts.map +1 -0
  142. package/dist/ai-service/migration-auto-dispatch-readiness.js +17 -0
  143. package/dist/ai-service/migration-auto-dispatch-readiness.js.map +1 -0
  144. package/dist/ai-service/migration-autodispatch-metrics.d.ts +3 -0
  145. package/dist/ai-service/migration-autodispatch-metrics.d.ts.map +1 -0
  146. package/dist/ai-service/migration-autodispatch-metrics.js +51 -0
  147. package/dist/ai-service/migration-autodispatch-metrics.js.map +1 -0
  148. package/dist/ai-service/migration-llm-config.d.ts +12 -0
  149. package/dist/ai-service/migration-llm-config.d.ts.map +1 -0
  150. package/dist/ai-service/migration-llm-config.js +131 -0
  151. package/dist/ai-service/migration-llm-config.js.map +1 -0
  152. package/dist/ai-service/migration-session-active.d.ts +14 -0
  153. package/dist/ai-service/migration-session-active.d.ts.map +1 -0
  154. package/dist/ai-service/migration-session-active.js +29 -0
  155. package/dist/ai-service/migration-session-active.js.map +1 -0
  156. package/dist/ai-service/resolve-generation-state-for-ui.d.ts +8 -0
  157. package/dist/ai-service/resolve-generation-state-for-ui.d.ts.map +1 -0
  158. package/dist/ai-service/resolve-generation-state-for-ui.js +25 -0
  159. package/dist/ai-service/resolve-generation-state-for-ui.js.map +1 -0
  160. package/dist/ai-service/skills/system/superblocks-migration/skill.generated.d.ts +1 -1
  161. package/dist/ai-service/skills/system/superblocks-migration/skill.generated.d.ts.map +1 -1
  162. package/dist/ai-service/skills/system/superblocks-migration/skill.generated.js +5 -1
  163. package/dist/ai-service/skills/system/superblocks-migration/skill.generated.js.map +1 -1
  164. package/dist/ai-service/state-machine/clark-fsm.d.ts +2 -0
  165. package/dist/ai-service/state-machine/clark-fsm.d.ts.map +1 -1
  166. package/dist/ai-service/state-machine/clark-fsm.js +4 -1
  167. package/dist/ai-service/state-machine/clark-fsm.js.map +1 -1
  168. package/dist/ai-service/state-machine/handlers/agent-planning.d.ts.map +1 -1
  169. package/dist/ai-service/state-machine/handlers/agent-planning.js +57 -16
  170. package/dist/ai-service/state-machine/handlers/agent-planning.js.map +1 -1
  171. package/dist/ai-service/state-machine/helpers/peer.d.ts +19 -1
  172. package/dist/ai-service/state-machine/helpers/peer.d.ts.map +1 -1
  173. package/dist/ai-service/state-machine/helpers/peer.js +81 -7
  174. package/dist/ai-service/state-machine/helpers/peer.js.map +1 -1
  175. package/dist/ai-service/state-machine/mocks.d.ts.map +1 -1
  176. package/dist/ai-service/state-machine/mocks.js +1 -0
  177. package/dist/ai-service/state-machine/mocks.js.map +1 -1
  178. package/dist/ai-service/types.d.ts +6 -0
  179. package/dist/ai-service/types.d.ts.map +1 -1
  180. package/dist/ai-service/types.js.map +1 -1
  181. package/dist/ai-service/util/inference-jwt.d.ts +15 -0
  182. package/dist/ai-service/util/inference-jwt.d.ts.map +1 -0
  183. package/dist/ai-service/util/inference-jwt.js +56 -0
  184. package/dist/ai-service/util/inference-jwt.js.map +1 -0
  185. package/dist/file-sync-vite-plugin.d.ts +9 -0
  186. package/dist/file-sync-vite-plugin.d.ts.map +1 -1
  187. package/dist/file-sync-vite-plugin.js +63 -6
  188. package/dist/file-sync-vite-plugin.js.map +1 -1
  189. package/dist/file-system-helpers.d.ts +14 -0
  190. package/dist/file-system-helpers.d.ts.map +1 -1
  191. package/dist/file-system-helpers.js +30 -0
  192. package/dist/file-system-helpers.js.map +1 -1
  193. package/dist/git-service/index.d.ts.map +1 -1
  194. package/dist/git-service/index.js +2 -3
  195. package/dist/git-service/index.js.map +1 -1
  196. package/dist/lock-service/index.d.ts +0 -2
  197. package/dist/lock-service/index.d.ts.map +1 -1
  198. package/dist/lock-service/index.js +19 -11
  199. package/dist/lock-service/index.js.map +1 -1
  200. package/dist/migration/integration-write-policy.d.ts +12 -0
  201. package/dist/migration/integration-write-policy.d.ts.map +1 -0
  202. package/dist/migration/integration-write-policy.js +31 -0
  203. package/dist/migration/integration-write-policy.js.map +1 -0
  204. package/dist/migration/migration-metrics.d.ts +69 -0
  205. package/dist/migration/migration-metrics.d.ts.map +1 -0
  206. package/dist/migration/migration-metrics.js +98 -0
  207. package/dist/migration/migration-metrics.js.map +1 -0
  208. package/dist/migration/migration-routes.d.ts.map +1 -1
  209. package/dist/migration/migration-routes.js +53 -121
  210. package/dist/migration/migration-routes.js.map +1 -1
  211. package/dist/migration/migration-verification.d.ts +49 -7
  212. package/dist/migration/migration-verification.d.ts.map +1 -1
  213. package/dist/migration/migration-verification.js +92 -28
  214. package/dist/migration/migration-verification.js.map +1 -1
  215. package/dist/migration/restructure.d.ts +10 -4
  216. package/dist/migration/restructure.d.ts.map +1 -1
  217. package/dist/migration/restructure.js +3 -2
  218. package/dist/migration/restructure.js.map +1 -1
  219. package/dist/migration-templates/app-fullstack/package.json +1 -6
  220. package/dist/plugin-options.d.ts +4 -0
  221. package/dist/plugin-options.d.ts.map +1 -1
  222. package/dist/plugin-options.js.map +1 -1
  223. package/dist/server-rpc/client.d.ts.map +1 -1
  224. package/dist/server-rpc/client.js +11 -2
  225. package/dist/server-rpc/client.js.map +1 -1
  226. package/dist/socket-manager.d.ts +3 -1
  227. package/dist/socket-manager.d.ts.map +1 -1
  228. package/dist/socket-manager.js +139 -76
  229. package/dist/socket-manager.js.map +1 -1
  230. package/dist/sync-service/download.d.ts.map +1 -1
  231. package/dist/sync-service/download.js +90 -15
  232. package/dist/sync-service/download.js.map +1 -1
  233. package/package.json +10 -10
@@ -1,5 +1,17 @@
1
1
  import z from "zod";
2
2
  import { FALLBACK_STRATEGIES } from "@superblocksteam/library-shared/types";
3
+ const optionalPositiveMs = z.preprocess((value) => typeof value === "number" && Number.isFinite(value) && value > 0
4
+ ? value
5
+ : undefined, z.number().optional());
6
+ function compactStreamTimeoutBudgetFlag(value) {
7
+ const budgets = {};
8
+ for (const key of Object.keys(value)) {
9
+ if (typeof value[key] === "number") {
10
+ budgets[key] = value[key];
11
+ }
12
+ }
13
+ return budgets;
14
+ }
3
15
  /**
4
16
  * Feature flag definitions for AI service.
5
17
  *
@@ -152,6 +164,18 @@ const FLAG_DEFINITIONS = {
152
164
  schema: z.boolean(),
153
165
  defaultValue: false,
154
166
  },
167
+ streamTimeoutBudgets: {
168
+ key: "superblocks.ai.stream-timeout-budgets",
169
+ schema: z
170
+ .object({
171
+ firstTokenMs: optionalPositiveMs,
172
+ standardIdleMs: optionalPositiveMs,
173
+ extendedIdleMs: optionalPositiveMs,
174
+ standardContentSilenceMs: optionalPositiveMs,
175
+ extendedContentSilenceMs: optionalPositiveMs,
176
+ })
177
+ .transform(compactStreamTimeoutBudgetFlag),
178
+ },
155
179
  };
156
180
  export const AiServiceFeatureFlags = {
157
181
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"features.js","sourceRoot":"","sources":["../../src/ai-service/features.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"features.js","sourceRoot":"","sources":["../../src/ai-service/features.ts"],"names":[],"mappings":"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"}
@@ -47,6 +47,15 @@ export declare function truncateString(str: string, maxBytes: number): string;
47
47
  export declare function pruneBySize<T extends {
48
48
  _size?: number;
49
49
  }>(items: T[], maxBytes: number): T[];
50
+ interface MigrationUsageMetadata extends Record<string, unknown> {
51
+ applicationId: string;
52
+ branchName: string | undefined;
53
+ migrationSource: "superblocks_2_0";
54
+ origin: "app_migration";
55
+ pendingSeedApiCount: number;
56
+ retryMode: "focused-debug" | "none";
57
+ triggeredBy: "auto-dispatch" | "focused-debug" | "ui-rpc";
58
+ }
50
59
  export declare class AiService extends TracedEventEmitter<AiServiceEvents> {
51
60
  private readonly config;
52
61
  private templateRenderer;
@@ -199,6 +208,26 @@ export declare class AiService extends TracedEventEmitter<AiServiceEvents> {
199
208
  */
200
209
  initialize(): Promise<void>;
201
210
  private hydrateChecklistFromDisk;
211
+ private migrationAppArtifactsReady;
212
+ private migrationAutoDispatchPending;
213
+ private migrationAutoDispatchInFlight;
214
+ private lastMigrationTurnCredentials?;
215
+ private hasInitialPendingMigrationWork;
216
+ private resolveMigrationTurnCredentials;
217
+ private storeMigrationTurnCredentials;
218
+ private isRetriableMigrationAutoDispatchFailure;
219
+ /**
220
+ * Called by dev startup once DBFS download (or upload-first local tree)
221
+ * has finished so migration scratch/checklist files are on disk.
222
+ */
223
+ notifyMigrationAppArtifactsReady(): void;
224
+ private tryAutoDispatchMigrationTurnIfReady;
225
+ /**
226
+ * Attempts to start the initial post-flip migration turn without UI
227
+ * involvement. Skips user-initiated focused-debug retries (items with
228
+ * `lastFailureReason`) and defers when JWT is unavailable.
229
+ */
230
+ private maybeAutoDispatchMigrationTurn;
202
231
  /**
203
232
  * Remove the integration metadata cache for this session.
204
233
  * Cleans up the session cache directory.
@@ -275,15 +304,19 @@ export declare class AiService extends TracedEventEmitter<AiServiceEvents> {
275
304
  * per ai-service lifetime. The disk checklist is the recovery source of
276
305
  * truth across process restarts.
277
306
  *
278
- * Expected caller: the UI issues a dedicated RPC (see
279
- * v1.ai.triggerMigrationTurn) once it observes the post-flip state via
280
- * /sb-migration-status. jwt + llmConfig come from the UI's normal auth
281
- * flow.
307
+ * Primary auto-trigger: readiness gate (`notifyMigrationAppArtifactsReady`,
308
+ * `handleUserConnected`, `updateClarkJwt`)
309
+ * `tryAutoDispatchMigrationTurnIfReady` `maybeAutoDispatchMigrationTurn`.
310
+ * Backup caller: the UI RPC (see v1.ai.triggerMigrationTurn) once it
311
+ * observes the post-flip state via /sb-migration-status.
312
+ * User retry after unresolved failures: UI RPC with
313
+ * `retryMode: "focused-debug"` after /sb-migration-retry-unresolved.
282
314
  */
283
315
  handleAiTriggerMigrationTurn(request: {
284
316
  jwt: string;
285
317
  llmConfig: LLMProviderConfig;
286
318
  retryMode?: "focused-debug";
319
+ triggeredBy?: MigrationUsageMetadata["triggeredBy"];
287
320
  }): Promise<{
288
321
  dispatched: boolean;
289
322
  reason?: string;
@@ -418,6 +451,7 @@ export declare class AiService extends TracedEventEmitter<AiServiceEvents> {
418
451
  * For testApi, provides specific guidance to continue testing other APIs.
419
452
  */
420
453
  private buildDenialContinuationPrompt;
454
+ resolveGenerationStateForUi(): import("@superblocksteam/library-shared/types").AiGenerationStateSnapshot | undefined;
421
455
  handleUserConnected(peer: EditorClient, peerId: string): void;
422
456
  /**
423
457
  * Per-session set of peer IDs that connected since their last task
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ai-service/index.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,MAAM,CAAC;AAG1C,OAAO,EAIL,KAAK,SAAS,EACd,KAAK,yBAAyB,EAC9B,KAAK,wBAAwB,EAE7B,KAAK,iBAAiB,EACtB,KAAK,0BAA0B,EAC/B,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAC9B,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,YAAY,EAMlB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAML,kBAAkB,EAGnB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAM1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AA4B1D,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,2CAA2C,CAAC;AAMnD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAOtE,OAAO,EACL,iBAAiB,EAEjB,KAAK,4BAA4B,EAClC,MAAM,iCAAiC,CAAC;AAOzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAahE,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAY3D,OAAO,KAAK,EACV,sBAAsB,EACtB,qBAAqB,EACtB,MAAM,0BAA0B,CAAC;AAalC,OAAO,KAAK,EAAE,SAAS,EAAmB,MAAM,2BAA2B,CAAC;AAW5E,OAAO,EAAE,gBAAgB,EAAwB,MAAM,sBAAsB,CAAC;AAiE9E,OAAO,KAAK,EACV,eAAe,EACf,eAAe,EACf,YAAY,EACZ,UAAU,EACV,SAAS,EACV,MAAM,YAAY,CAAC;AAKpB,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE;IAC9C,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;CACjB,GAAG,4BAA4B,CAE/B;AA6JD,wBAAgB,UAAU,CACxB,CAAC,SAAS;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,mBAAmB,CAAC,EAAE,MAAM,CAAA;CAAE,EAC9D,KAAK,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,EAAE,CAShC;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAQjD;AA2BD,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAKpE;AAED,wBAAgB,WAAW,CAAC,CAAC,SAAS;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EACtD,KAAK,EAAE,CAAC,EAAE,EACV,QAAQ,EAAE,MAAM,GACf,CAAC,EAAE,CAkBL;AA+CD,qBAAa,SAAU,SAAQ,kBAAkB,CAAC,eAAe,CAAC;IAwOpD,OAAO,CAAC,QAAQ,CAAC,MAAM;IAvOnC,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,mBAAmB,CAAsB;IACjD,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,mBAAmB,CAAsB;IACjD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAC9B,OAAO,CAAC,aAAa,CAAgB;IACrC,SAAgB,gBAAgB,EAAE,gBAAgB,CAAC;IACnD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAmB;IACpD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IACtC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgC;IAC3D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAoC;IACjE,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CACR;IAC5B,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CACD;IACrC,OAAO,CAAC,6BAA6B,CAA2B;IAChE,OAAO,CAAC,qBAAqB,CAA8B;IAC3D;;;;wEAIoE;IACpE,OAAO,CAAC,uBAAuB,CAAC,CAAS;IACzC;;;;;yCAKqC;IACrC,OAAO,CAAC,mBAAmB,CAAC,CAAS;IACrC,OAAO,CAAC,eAAe,CAAC,CAAS;IACjC;;;;;;;;;OASG;IACH,OAAO,CAAC,kBAAkB;IAQ1B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAoB;IACtD;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAmB;IACpD,OAAO,CAAC,UAAU,CAAC,CAAgB;IACnC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA6B;IAC9D,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAmB;IACpD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,kBAAkB,CAAC,CAAa;IACxC,OAAO,CAAC,mBAAmB,CAAC,CAAqB;IACjD,OAAO,CAAC,wBAAwB,CAAC,CAAmB;IACpD,OAAO,CAAC,uBAAuB,CAAC,CAAa;IAC7C,OAAO,CAAC,oBAAoB,CAAC,CAG3B;IACF,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAY;IAEvC,IAAW,UAAU,IAAI,eAAe,CAEvC;IAED,IAAW,UAAU,IAAI,MAAM,CAE9B;IAED;;;;;;;;;;;OAWG;IACI,oBAAoB,IAAI,iBAAiB;IAIhD;;OAEG;IACI,qBAAqB,CAC1B,UAAU,CAAC,EAAE,UAAU,EACvB,WAAW,CAAC,EAAE,kBAAkB,EAChC,gBAAgB,CAAC,EAAE,gBAAgB,GAClC,IAAI;IAMP;;;OAGG;IACI,sBAAsB,CAAC,QAAQ,EAAE;QACtC,aAAa,EAAE,MAAM,MAAM,CAAC;QAC5B,eAAe,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;KAC3C,GAAG,IAAI;IAID,yBAAyB,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI;IAI5D,IAAW,cAAc,IAAI,MAAM,CAElC;IAED,IAAW,cAAc,IAAI,MAAM,CAElC;IAED,IAAW,kBAAkB,IAAI,MAAM,CAEtC;IAED;;;OAGG;IACI,YAAY,IAAI,SAAS,GAAG,IAAI;IAQvC;;OAEG;IACI,WAAW,IAAI,MAAM,GAAG,SAAS;IAIxC;;OAEG;IACI,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAQxC;;OAEG;IACI,WAAW,IAAI,OAAO;IAI7B;;OAEG;IACI,qBAAqB,IAAI,MAAM,GAAG,IAAI;IAI7C;;;;OAIG;IACU,eAAe,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/D;;;OAGG;IACI,mBAAmB,IAAI,gBAAgB;IAI9C;;OAEG;IACU,0BAA0B,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAK/D,IAAW,0BAA0B,IAAI,OAAO,CAE/C;IAED,IAAW,qBAAqB,IAAI,OAAO,CAE1C;IAED;;;;OAIG;IACI,gBAAgB,IAAI,OAAO;gBAIL,MAAM,EAAE,eAAe;IAyZpD;;;OAGG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;YAoBnB,wBAAwB;IAiEtC;;;OAGG;IACG,sBAAsB,IAAI,OAAO,CAAC,IAAI,CAAC;IAK7C,OAAO,CAAC,SAAS;IAMjB,OAAO,CAAC,oBAAoB;IAwE5B,OAAO,CAAC,4BAA4B;IAgJpC,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,mBAAmB;IAQ3B;;;;;;;;;;;;;;;;OAgBG;YACW,qBAAqB;IAsEnC,OAAO,CAAC,2BAA2B;IAYnC,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,qCAAqC;IAkB7C,OAAO,CAAC,kBAAkB;IAe1B;;;;;;;;;OASG;YACW,qBAAqB;IAoBnC;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,kBAAkB;IAsB1B,OAAO,CAAC,6BAA6B;IAYrC;;;;;;;;OAQG;YACW,YAAY;YAQZ,sBAAsB;IAOpC;;;;;;;;;;;OAWG;IACU,4BAA4B,CAAC,OAAO,EAAE;QACjD,GAAG,EAAE,MAAM,CAAC;QACZ,SAAS,EAAE,iBAAiB,CAAC;QAC7B,SAAS,CAAC,EAAE,eAAe,CAAC;KAC7B,GAAG,OAAO,CAAC;QAAE,UAAU,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAgIrD,OAAO,CAAC,yBAAyB;IAajC,OAAO,CAAC,sBAAsB,CAAS;IAEvC;;;;OAIG;IACH,OAAO,CAAC,2BAA2B;IAUnC;;;;;;;;;;;;OAYG;YACW,0BAA0B;IAkBxC;;;;;;;;;;;;;;;;;;;;;;OAsBG;YACW,oBAAoB;IAwSrB,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAoL3D,yBAAyB,CACpC,OAAO,EAAE,0BAA0B,GAClC,OAAO,CAAC,IAAI,CAAC;IAoMH,sBAAsB,CACjC,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,IAAI,CAAC;IAqJH,uBAAuB,CAClC,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAAC,yBAAyB,CAAC;IAqIrC;;OAEG;IACH,OAAO,CAAC,uBAAuB;IA8D/B,OAAO,CAAC,0BAA0B;IAqBrB,uBAAuB,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAa1D,uBAAuB,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBvE;;;OAGG;IACU,4BAA4B,IAAI,OAAO,CAAC,IAAI,CAAC;IAqB7C,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;IAgDhD;;;;;;;;;;;;;;;;;;;;OAoBG;IACU,oBAAoB,CAC/B,MAAM,EAAE,MAAM,EACd,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC;IA0BlC;;;OAGG;IACU,yBAAyB,CACpC,OAAO,EAAE,iBAAiB,EAC1B,IAAI,EAAE,OAAO,GAAG,WAAW,GAC1B,OAAO,CAAC;QAAE,MAAM,EAAE,SAAS,GAAG,aAAa,CAAA;KAAE,CAAC;IAoCjD;;;OAGG;YACW,oBAAoB;IA2FlC;;;;;;;OAOG;YACW,oBAAoB;IA6CrB,kBAAkB,CAC7B,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC;IAoDhB;;;;;;;;OAQG;IACU,+BAA+B,CAAC,OAAO,EAAE;QACpD,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,OAAO,CAAC;QAClB,sBAAsB,CAAC,EAAE,gBAAgB,EAAE,CAAC;QAC5C,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,GAAG,OAAO,CAAC,IAAI,CAAC;IA+VjB;;;OAGG;IACH,OAAO,CAAC,6BAA6B;IA6B9B,mBAAmB,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAmHpE;;;;;;OAMG;IACH,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAqB;IAE9D;;;;;;;;;OASG;IACH,OAAO,CAAC,0BAA0B;IAMlC;;;;;;;;;;;;;;;;;;;;OAoBG;IACI,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI;IA6BnE,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IA+CnD,OAAO,CAAC,mBAAmB;IAQpB,sBAAsB,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAyB1C,kBAAkB,CAAC,SAAS,EAAE,gBAAgB;IA8C9C,uBAAuB,CAAC,EAAE,EAAE,MAAM;IAYlC,gBAAgB,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;IAqCjD,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,GAAG,IAAI;IA8ChE,wBAAwB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAqB/C,4BAA4B,IAAI,IAAI;IAY9B,0BAA0B,CAAC,OAAO,EAAE;QAC/C,MAAM,EAAE,MAAM,CAAC;QACf,GAAG,EAAE,MAAM,CAAC;QACZ,aAAa,CAAC,EAAE,aAAa,CAAC;KAC/B,GAAG,OAAO,CAAC,IAAI,CAAC;IAWjB;;;;;;;;OAQG;IACU,qBAAqB,CAAC,OAAO,EAAE;QAC1C,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,GAAG,EAAE,MAAM,CAAC;QACZ,SAAS,CAAC,EAAE,iBAAiB,CAAC;QAC9B,OAAO,CAAC,EAAE,OAAO,CAAC,sBAAsB,CAAC,CAAC;QAC1C,gBAAgB,CAAC,EAAE,GAAG,CAAC;KACxB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAoHrB,yBAAyB,CAAC,OAAO,EAAE;QAC9C,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,YAAY,EAAE,MAAM,CAAC;QACrB,aAAa,EAAE,MAAM,CAAC;QACtB,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,SAAS,CAAC,EAAE,iBAAiB,CAAC;QAG9B,cAAc,EAAE,MAAM,CAAC;KACxB,GAAG,OAAO,CACT,oBAAoB,GAAG;QAAE,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CACzE;IAoQM,gBAAgB,CAAC,MAAM,EAAE,UAAU;IAQ7B,aAAa;IA0C1B,+EAA+E;IAClE,+BAA+B,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ7D;;;;OAIG;YACW,6BAA6B;IA6B3C;;OAEG;IACU,WAAW,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAMhD;;OAEG;IACU,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK9D;;OAEG;IACU,aAAa,CACxB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,OAAO,GACjB,OAAO,CAAC,SAAS,CAAC;IAKrB;;OAEG;IACU,WAAW,CACtB,OAAO,EAAE,yBAAyB,GACjC,OAAO,CAAC,wBAAwB,CAAC;IAoFvB,qBAAqB,CAChC,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC;IAgEH,eAAe,CAAC,MAAM,EAAE,SAAS;IAkBvC,MAAM,IAAI,OAAO;IAQjB,cAAc,IAAI,OAAO;IAIhC;;;;OAIG;IACI,YAAY,IAAI,OAAO;IAS9B;;;;;;OAMG;IACU,2BAA2B,IAAI,OAAO,CAAC,IAAI,CAAC;IAYzD;;;OAGG;IACH,OAAO,CAAC,yBAAyB;IAapB,gCAAgC,IAAI,OAAO,CAAC,OAAO,CAAC;IAY1D,gBAAgB,CAAC,aAAa,EAAE,aAAa,GAAG,SAAS;IAQzD,oBAAoB,CAAC,iBAAiB,EAAE,iBAAiB;IAMzD,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI;IAI1C,aAAa,IAAI,aAAa,GAAG,SAAS;IAIjD,OAAO,CAAC,sBAAsB;CAgD/B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ai-service/index.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@ import { context as otelContext, propagation, SpanKind, SpanStatusCode, trace, }
5
5
  import { stepCountIs, streamText as aiStreamText, } from "ai";
6
6
  import { z } from "zod";
7
7
  import { AiGenerationState, AiMode, resolveAttachmentFileName, } from "@superblocksteam/library-shared/types";
8
+ import { isToolPermissionClarification } from "@superblocksteam/library-shared/types/tool-permission-response";
8
9
  import { addTracingToMethods, classifyAttachmentDelivery, FactAccessType, FactCreatedSource, FactEntityScope, TracedEventEmitter, getAiQuotaPaywallReasonFromMessage, } from "@superblocksteam/shared";
9
10
  import { npmRegistryEmitter } from "@superblocksteam/telemetry";
10
11
  import { buildTranslationPrompt } from "../migration/translation-prompt.js";
@@ -30,7 +31,7 @@ import { AppSkillsManager } from "./app-skills/manager.js";
30
31
  import { isUploadedAttachment, toUploadedAttachmentContentPart, } from "./attachments/uploaded-content-part.js";
31
32
  import { ChatSessionStore } from "./chat/chat-session-store.js";
32
33
  import { normalizeTextAttachmentForModel } from "./chat/utils.js";
33
- import { API_MIGRATION_ORIGINS, readPersistedChecklist, updateChecklistItem, } from "./checklist/persisted-checklist-store.js";
34
+ import { API_MIGRATION_ORIGINS, isApiMigrationOrigin, readPersistedChecklist, updateChecklistItem, } from "./checklist/persisted-checklist-store.js";
34
35
  import { downloadContextFromBucketeer, downloadLatestContextFromBucketeer, restoreContextFromCheckpoint, } from "./context-download.js";
35
36
  import { uploadContextToBucketeer } from "./context-upload.js";
36
37
  import { AppContextStore } from "./context/app-context.js";
@@ -53,12 +54,17 @@ import { traceLLM } from "./llmobs/helpers.js";
53
54
  import { getJwtTraceTags } from "./llmobs/helpers.js";
54
55
  import llmobs from "./llmobs/index.js";
55
56
  import { PlaywrightMcpServerManager } from "./mcp/playwright-server.js";
57
+ import { evaluateMigrationAutoDispatchReadiness } from "./migration-auto-dispatch-readiness.js";
58
+ import { recordMigrationAutoDispatchOutcome } from "./migration-autodispatch-metrics.js";
59
+ import { buildServerMigrationLlmConfig, isMigrationAutoDispatchEnabled, } from "./migration-llm-config.js";
60
+ import { isMigrationSessionActive } from "./migration-session-active.js";
56
61
  import { policyGateStreamPartToAgentStep } from "./policy-gate-step.js";
57
62
  import { ClarkProfiler } from "./profiler/clark-profiler.js";
58
63
  import { buildSummarizeApiUsagePrompt } from "./prompts/summarize-api-usage.js";
59
64
  import { checkAiQuota } from "./quota-client.js";
60
65
  import { RecordingManager, createRecordingFetch } from "./recording/index.js";
61
66
  import { RequestDeduplicator } from "./request-deduplicator.js";
67
+ import { resolveGenerationStateForUi } from "./resolve-generation-state-for-ui.js";
62
68
  import { scanContentForSecrets } from "./security/secret-scanner-service.js";
63
69
  import { SecretRedactor } from "./security/secret-scanner.js";
64
70
  import { ClarkStateNames, Clark, SERVICE_STARTED_WITH_DRAFT, USER_ACCEPTED_DRAFT, USER_REJECTED_DRAFT, USER_SENT_PROMPT, USER_CANCELED, AGENT_CANCELED, } from "./state-machine/clark-fsm.js";
@@ -78,10 +84,22 @@ import { catchBackgroundPeerDisconnect, StablePeer, } from "./state-machine/help
78
84
  import { transitionFrom } from "./state-machine/helpers/transition.js";
79
85
  import { isTaskAccessibleTo, registerBackgroundTaskTypes, resyncActiveTaskStatusesToPeer, TaskStore, wireTaskStatusPushToPeer, } from "./tasks/index.js";
80
86
  import { TemplateRenderer } from "./template-renderer.js";
87
+ import { describeMigrationInferenceJwt, isUsableMigrationInferenceJwt, } from "./util/inference-jwt.js";
81
88
  import { processLLMConfig } from "./util/llm-config-utils.js";
82
89
  import { parseJwt } from "./util/parse-jwt.js";
83
90
  import { getToolCallSignature } from "./util/tool-signature.js";
84
91
  export { AiServiceFeatureFlags } from "./features.js";
92
+ function streamRetryOptionsFromConfig(retryOptions, streamTimeoutBudgets) {
93
+ if (streamTimeoutBudgets === undefined ||
94
+ Object.keys(streamTimeoutBudgets).length === 0) {
95
+ return retryOptions;
96
+ }
97
+ return {
98
+ ...retryOptions,
99
+ streamTimeoutBudgets,
100
+ timeoutSource: "feature-flag",
101
+ };
102
+ }
85
103
  export { stripResolvedFromLockfile } from "./app-interface/npm-registry.js";
86
104
  export { SnapshotManager } from "./recording/index.js";
87
105
  export { isSdkApiTemplate } from "./sdk-api-templates.js";
@@ -357,6 +375,9 @@ export class AiService extends TracedEventEmitter {
357
375
  try {
358
376
  this.tokenManagerJwt = event.token;
359
377
  this.getLogger().info(`[ai-service] token updated via tokenManager`);
378
+ if (event.token && isUsableMigrationInferenceJwt(event.token)) {
379
+ this.updateClarkJwt(event.token);
380
+ }
360
381
  }
361
382
  catch (err) {
362
383
  console.error("[ai-service] tokenUpdated listener threw", err);
@@ -456,9 +477,16 @@ export class AiService extends TracedEventEmitter {
456
477
  * Updates the JWT in Clark context
457
478
  */
458
479
  updateClarkJwt(jwt) {
459
- if (jwt) {
460
- this.clark.updateContext({ jwt });
480
+ const jwtDetails = describeMigrationInferenceJwt(jwt);
481
+ if (!jwt || !jwtDetails.usable) {
482
+ return;
461
483
  }
484
+ this.clark.updateContext({ jwt });
485
+ const llmConfig = this.lastMigrationTurnCredentials?.llmConfig ??
486
+ this.clark.context.llmConfig ??
487
+ buildServerMigrationLlmConfig(this.config.flagBootstrap);
488
+ this.storeMigrationTurnCredentials(jwt, llmConfig);
489
+ this.tryAutoDispatchMigrationTurnIfReady();
462
490
  }
463
491
  // ===== Recording API =====
464
492
  /**
@@ -771,7 +799,7 @@ export class AiService extends TracedEventEmitter {
771
799
  this.llmClient = new LLMClient({
772
800
  contextManagerV2: this.contextManagerV2,
773
801
  appShell: this.appShell,
774
- retryOptions: config.retryOptions,
802
+ retryOptions: streamRetryOptionsFromConfig(config.retryOptions, config.features.streamTimeoutBudgets),
775
803
  unifiedProviderEnabled: config.features.unifiedProviderEnabled ?? false,
776
804
  organizationId: config.organizationId,
777
805
  applicationId: config.applicationId,
@@ -916,6 +944,142 @@ export class AiService extends TracedEventEmitter {
916
944
  },
917
945
  });
918
946
  }
947
+ this.tryAutoDispatchMigrationTurnIfReady();
948
+ }
949
+ migrationAppArtifactsReady = false;
950
+ migrationAutoDispatchPending = false;
951
+ migrationAutoDispatchInFlight = false;
952
+ lastMigrationTurnCredentials;
953
+ hasInitialPendingMigrationWork(items) {
954
+ const pendingItems = items.filter((item) => isApiMigrationOrigin(item.origin) &&
955
+ (item.status === "pending" || item.status === "in_progress"));
956
+ if (pendingItems.length === 0) {
957
+ return false;
958
+ }
959
+ return !pendingItems.some((item) => item.lastFailureReason);
960
+ }
961
+ resolveMigrationTurnCredentials() {
962
+ const cachedJwt = this.lastMigrationTurnCredentials?.jwt;
963
+ const inferenceJwt = this.getInferenceJwt();
964
+ const jwt = (cachedJwt && isUsableMigrationInferenceJwt(cachedJwt)
965
+ ? cachedJwt
966
+ : undefined) ??
967
+ (inferenceJwt && isUsableMigrationInferenceJwt(inferenceJwt)
968
+ ? inferenceJwt
969
+ : undefined);
970
+ const llmConfig = this.lastMigrationTurnCredentials?.llmConfig ??
971
+ this.clark.context.llmConfig ??
972
+ buildServerMigrationLlmConfig(this.config.flagBootstrap);
973
+ return { jwt, llmConfig };
974
+ }
975
+ storeMigrationTurnCredentials(jwt, llmConfig) {
976
+ const nextJwt = jwt && jwt.length > 0 ? jwt : this.lastMigrationTurnCredentials?.jwt;
977
+ this.lastMigrationTurnCredentials = {
978
+ ...(nextJwt ? { jwt: nextJwt } : {}),
979
+ llmConfig,
980
+ };
981
+ if (jwt && jwt.length > 0 && !this.getInferenceJwt()) {
982
+ this.clark.updateContext({ jwt });
983
+ }
984
+ }
985
+ isRetriableMigrationAutoDispatchFailure(reason) {
986
+ if (!reason) {
987
+ return false;
988
+ }
989
+ return (reason.startsWith("busy:") ||
990
+ reason === "pending-tool-permission" ||
991
+ reason === "awaiting-interactive-response");
992
+ }
993
+ /**
994
+ * Called by dev startup once DBFS download (or upload-first local tree)
995
+ * has finished so migration scratch/checklist files are on disk.
996
+ */
997
+ notifyMigrationAppArtifactsReady() {
998
+ if (this.migrationAppArtifactsReady) {
999
+ return;
1000
+ }
1001
+ this.migrationAppArtifactsReady = true;
1002
+ this.tryAutoDispatchMigrationTurnIfReady();
1003
+ }
1004
+ tryAutoDispatchMigrationTurnIfReady() {
1005
+ if (this.migrationAutoDispatchInFlight) {
1006
+ return;
1007
+ }
1008
+ if (!isMigrationAutoDispatchEnabled(this.config.flagBootstrap)) {
1009
+ return;
1010
+ }
1011
+ const { jwt } = this.resolveMigrationTurnCredentials();
1012
+ const readiness = evaluateMigrationAutoDispatchReadiness({
1013
+ appArtifactsReady: this.migrationAppArtifactsReady,
1014
+ hasConnectedPeer: this.hasConnectedPeer(),
1015
+ hasUsableJwt: Boolean(jwt),
1016
+ });
1017
+ if (!readiness.ready) {
1018
+ if (readiness.reason === "jwt-unavailable") {
1019
+ this.migrationAutoDispatchPending = true;
1020
+ }
1021
+ return;
1022
+ }
1023
+ void this.maybeAutoDispatchMigrationTurn().catch((error) => {
1024
+ this.getLogger().error("[ai-service] Migration auto-dispatch failed", getErrorMeta(error));
1025
+ });
1026
+ }
1027
+ /**
1028
+ * Attempts to start the initial post-flip migration turn without UI
1029
+ * involvement. Skips user-initiated focused-debug retries (items with
1030
+ * `lastFailureReason`) and defers when JWT is unavailable.
1031
+ */
1032
+ async maybeAutoDispatchMigrationTurn() {
1033
+ if (this.migrationAutoDispatchInFlight) {
1034
+ return;
1035
+ }
1036
+ this.migrationAutoDispatchInFlight = true;
1037
+ try {
1038
+ // Positive migration-session gate. Only auto-dispatch while a migration
1039
+ // session is genuinely in flight on disk (scratch/migration-state.json).
1040
+ // Completion and abort both remove it, so a stale checklist on a
1041
+ // never-migrated or already-finished app can never arm auto-dispatch
1042
+ // during normal usage — bounding the blast radius to migrations.
1043
+ if (!(await isMigrationSessionActive(this.appRootDirPath))) {
1044
+ this.migrationAutoDispatchPending = false;
1045
+ return;
1046
+ }
1047
+ const checklist = await readPersistedChecklist(this.appRootDirPath);
1048
+ if (!checklist) {
1049
+ this.migrationAutoDispatchPending = false;
1050
+ return;
1051
+ }
1052
+ if (!this.hasInitialPendingMigrationWork(checklist.items)) {
1053
+ this.migrationAutoDispatchPending = false;
1054
+ return;
1055
+ }
1056
+ const { jwt, llmConfig } = this.resolveMigrationTurnCredentials();
1057
+ if (!jwt) {
1058
+ this.migrationAutoDispatchPending = true;
1059
+ return;
1060
+ }
1061
+ const result = await this.handleAiTriggerMigrationTurn({
1062
+ jwt,
1063
+ llmConfig,
1064
+ triggeredBy: "auto-dispatch",
1065
+ });
1066
+ if (result.dispatched) {
1067
+ this.migrationAutoDispatchPending = false;
1068
+ this.getLogger().info("[ai-service] Auto-dispatched post-flip migration turn");
1069
+ }
1070
+ else if (result.reason === "already-triggered") {
1071
+ this.migrationAutoDispatchPending = false;
1072
+ }
1073
+ else if (this.isRetriableMigrationAutoDispatchFailure(result.reason)) {
1074
+ this.migrationAutoDispatchPending = true;
1075
+ }
1076
+ else {
1077
+ this.migrationAutoDispatchPending = false;
1078
+ }
1079
+ }
1080
+ finally {
1081
+ this.migrationAutoDispatchInFlight = false;
1082
+ }
919
1083
  }
920
1084
  /**
921
1085
  * Remove the integration metadata cache for this session.
@@ -1206,7 +1370,7 @@ export class AiService extends TracedEventEmitter {
1206
1370
  return selectContextManagementStrategy({
1207
1371
  serverContextManagementEnabled: llmConfig?.serverContextManagement?.enabled,
1208
1372
  thresholds: llmConfig?.serverContextManagement,
1209
- summarizationModel: () => createLLMProvider(this.getLLMProviderSettings(llmConfig), () => this.getInferenceJwt(), llmConfig, () => this.getLlmAiAttributes(this.clark), this.clark.context.traceHeaders).modelForTask("summarizeMessages").model,
1373
+ summarizeModel: () => createLLMProvider(this.getLLMProviderSettings(llmConfig), () => this.getInferenceJwt(), llmConfig, () => this.getLlmAiAttributes(this.clark), this.clark.context.traceHeaders).modelForTask("summarizeMessages"),
1210
1374
  });
1211
1375
  }
1212
1376
  getLlmAiAttributes(clark) {
@@ -1317,12 +1481,22 @@ export class AiService extends TracedEventEmitter {
1317
1481
  * per ai-service lifetime. The disk checklist is the recovery source of
1318
1482
  * truth across process restarts.
1319
1483
  *
1320
- * Expected caller: the UI issues a dedicated RPC (see
1321
- * v1.ai.triggerMigrationTurn) once it observes the post-flip state via
1322
- * /sb-migration-status. jwt + llmConfig come from the UI's normal auth
1323
- * flow.
1484
+ * Primary auto-trigger: readiness gate (`notifyMigrationAppArtifactsReady`,
1485
+ * `handleUserConnected`, `updateClarkJwt`)
1486
+ * `tryAutoDispatchMigrationTurnIfReady` `maybeAutoDispatchMigrationTurn`.
1487
+ * Backup caller: the UI RPC (see v1.ai.triggerMigrationTurn) once it
1488
+ * observes the post-flip state via /sb-migration-status.
1489
+ * User retry after unresolved failures: UI RPC with
1490
+ * `retryMode: "focused-debug"` after /sb-migration-retry-unresolved.
1324
1491
  */
1325
1492
  async handleAiTriggerMigrationTurn(request) {
1493
+ this.storeMigrationTurnCredentials(request.jwt, request.llmConfig);
1494
+ const isAutoDispatch = request.triggeredBy === "auto-dispatch";
1495
+ const recordAutoDispatchOutcome = (reason) => {
1496
+ if (isAutoDispatch) {
1497
+ recordMigrationAutoDispatchOutcome(reason);
1498
+ }
1499
+ };
1326
1500
  // User-initiated "Fix with Clark" retries bypass the one-shot
1327
1501
  // guard. The HTTP route that flips the items has already landed,
1328
1502
  // so if we refused here the user would be stuck.
@@ -1330,33 +1504,44 @@ export class AiService extends TracedEventEmitter {
1330
1504
  this.migrationTurnTriggered = false;
1331
1505
  }
1332
1506
  if (this.migrationTurnTriggered) {
1507
+ recordAutoDispatchOutcome("already-triggered");
1333
1508
  return { dispatched: false, reason: "already-triggered" };
1334
1509
  }
1335
1510
  if (this.clark.state === ClarkStateNames.Dead) {
1511
+ recordAutoDispatchOutcome("dead");
1336
1512
  return { dispatched: false, reason: "dead" };
1337
1513
  }
1338
1514
  if (this.clark.state !== ClarkStateNames.Idle &&
1339
1515
  this.clark.state !== ClarkStateNames.AwaitingUser) {
1340
- return { dispatched: false, reason: `busy:${this.clark.state}` };
1516
+ const reason = `busy:${this.clark.state}`;
1517
+ recordAutoDispatchOutcome(reason);
1518
+ return { dispatched: false, reason };
1341
1519
  }
1342
1520
  if (this.clark.context.pendingToolPermissionRequest) {
1521
+ recordAutoDispatchOutcome("pending-tool-permission");
1343
1522
  return { dispatched: false, reason: "pending-tool-permission" };
1344
1523
  }
1345
1524
  if (this.clark.state === ClarkStateNames.AwaitingUser) {
1346
1525
  if (this.clark.context.activeInteractiveMessage ||
1347
1526
  this.clark.context.deferredInteractiveMessage) {
1527
+ recordAutoDispatchOutcome("awaiting-interactive-response");
1348
1528
  return { dispatched: false, reason: "awaiting-interactive-response" };
1349
1529
  }
1350
1530
  }
1531
+ this.migrationTurnTriggered = true;
1351
1532
  const checklist = await readPersistedChecklist(this.appRootDirPath);
1352
1533
  if (!checklist) {
1534
+ this.migrationTurnTriggered = false;
1353
1535
  this.getLogger().warn("[ai-service] Migration checklist not found or unreadable; skipping translation turn");
1536
+ recordAutoDispatchOutcome("checklist-unavailable");
1354
1537
  return { dispatched: false, reason: "checklist-unavailable" };
1355
1538
  }
1356
1539
  const pendingSeedApiItems = checklist.items.filter((item) => API_MIGRATION_ORIGINS.has(item.origin) &&
1357
1540
  (item.status === "pending" || item.status === "in_progress"));
1358
1541
  const pendingSeedApiCount = pendingSeedApiItems.length;
1359
1542
  if (pendingSeedApiCount === 0) {
1543
+ this.migrationTurnTriggered = false;
1544
+ recordAutoDispatchOutcome("no-pending-items");
1360
1545
  return { dispatched: false, reason: "no-pending-items" };
1361
1546
  }
1362
1547
  // Pre-flight quota gate. The migration turn drives LLM inference (which
@@ -1368,10 +1553,11 @@ export class AiService extends TracedEventEmitter {
1368
1553
  // same pre-flight check handleAiGenerate already runs.
1369
1554
  const quota = await this.checkAiQuota(request.jwt);
1370
1555
  if (!quota.allowed) {
1556
+ this.migrationTurnTriggered = false;
1371
1557
  this.getLogger().warn("[ai-service] Skipping v2→v3 migration turn — AI quota exceeded", { reason: quota.reason });
1558
+ recordAutoDispatchOutcome("quota-exceeded");
1372
1559
  return { dispatched: false, reason: "quota-exceeded" };
1373
1560
  }
1374
- this.migrationTurnTriggered = true;
1375
1561
  this.appShell.setApiHandlerEnabled(false);
1376
1562
  this.getLogger().info(`[ai-service] Dispatching internal v2→v3 migration turn for ${pendingSeedApiCount} API(s) (API VFS projection disabled, retryMode=${request.retryMode ?? "none"})`);
1377
1563
  const prompt = buildTranslationPrompt({
@@ -1393,6 +1579,8 @@ export class AiService extends TracedEventEmitter {
1393
1579
  origin: "app_migration",
1394
1580
  pendingSeedApiCount,
1395
1581
  retryMode: request.retryMode ?? "none",
1582
+ triggeredBy: request.triggeredBy ??
1583
+ (request.retryMode === "focused-debug" ? "focused-debug" : "ui-rpc"),
1396
1584
  };
1397
1585
  this.clark.updateContext((context) => ({
1398
1586
  ...context,
@@ -1419,6 +1607,7 @@ export class AiService extends TracedEventEmitter {
1419
1607
  this.migrationTurnTriggered = false;
1420
1608
  this.appShell.setApiHandlerEnabled(true);
1421
1609
  });
1610
+ recordAutoDispatchOutcome("dispatched");
1422
1611
  return { dispatched: true };
1423
1612
  }
1424
1613
  getMigrationSafeLlmConfig(llmConfig) {
@@ -1737,6 +1926,7 @@ export class AiService extends TracedEventEmitter {
1737
1926
  }
1738
1927
  async handleAiGenerate(request) {
1739
1928
  this.getLogger().info(`[ai-service] handleAiGenerate: peerId=${this.stablePeer.peerId ?? "unknown"}`);
1929
+ this.storeMigrationTurnCredentials(request.jwt, request.llmConfig);
1740
1930
  if (this.clark.state === ClarkStateNames.Dead) {
1741
1931
  recordPromptEntryRejection({
1742
1932
  dedupeKey: resolvePromptRequestDedupeKey(request),
@@ -2847,10 +3037,20 @@ export class AiService extends TracedEventEmitter {
2847
3037
  if (!this.clark.context.llmConfig) {
2848
3038
  throw new Error("Cannot continue after tool permission: llmConfig is missing from context");
2849
3039
  }
3040
+ const isClarification = isToolPermissionClarification(request.approved, request.denyMessage);
3041
+ logger.info("[ai-service] tool_permission_response continuation", {
3042
+ approved: request.approved,
3043
+ clarification: isClarification,
3044
+ });
3045
+ trace
3046
+ .getActiveSpan()
3047
+ ?.setAttribute("clark.tool_permission.clarification", isClarification);
2850
3048
  const continueRequest = {
2851
3049
  prompt: request.approved
2852
3050
  ? ``
2853
- : this.buildDenialContinuationPrompt(toolName, rawInput),
3051
+ : isClarification
3052
+ ? request.denyMessage.trim()
3053
+ : this.buildDenialContinuationPrompt(toolName, rawInput),
2854
3054
  promptContext: {
2855
3055
  entities: [],
2856
3056
  integrations: [],
@@ -2859,12 +3059,12 @@ export class AiService extends TracedEventEmitter {
2859
3059
  llmConfig: this.clark.context.llmConfig,
2860
3060
  mode: this.clark.context.currentMode,
2861
3061
  browserContext: this.clark.context.browserContext,
2862
- // Mark as tool_permission_response to skip user message recording in agent-planning
2863
3062
  responseMetadata: {
2864
3063
  type: "tool_permission_response",
2865
3064
  responseToMessageId: request.messageId,
2866
3065
  approved: request.approved,
2867
3066
  alwaysAllowPermissions: request.alwaysAllowPermissions,
3067
+ ...(isClarification ? { clarification: true } : {}),
2868
3068
  },
2869
3069
  };
2870
3070
  const transitionTo = transitionFrom(this.clark);
@@ -2895,6 +3095,12 @@ export class AiService extends TracedEventEmitter {
2895
3095
  }
2896
3096
  return `Continue with the task using alternative approaches. The tool ${toolName} was denied permission.`;
2897
3097
  }
3098
+ resolveGenerationStateForUi() {
3099
+ return resolveGenerationStateForUi({
3100
+ clarkState: this.clark.state,
3101
+ lastGenerationState: this.clark.context.lastGenerationState,
3102
+ });
3103
+ }
2898
3104
  handleUserConnected(peer, peerId) {
2899
3105
  const existingPeerId = this.stablePeer.peerId;
2900
3106
  this.getLogger().info(`[ai-service] handleUserConnected: peerId=${peerId}`);
@@ -2926,9 +3132,10 @@ export class AiService extends TracedEventEmitter {
2926
3132
  this.authenticatedPeerUserId = undefined;
2927
3133
  }
2928
3134
  // 1. Sync generation state if generation is in progress
2929
- if (this.clark.context.lastGenerationState) {
2930
- this.getLogger().info(`[ai-service] Syncing generation state on reconnect: ${this.clark.context.lastGenerationState.state}`);
2931
- catchBackgroundPeerDisconnect(peer.call.aiSetGenerationState(this.clark.context.lastGenerationState), "generation state reconnect push");
3135
+ const generationState = this.resolveGenerationStateForUi();
3136
+ if (generationState) {
3137
+ this.getLogger().info(`[ai-service] Syncing generation state on reconnect: ${generationState.state}`);
3138
+ catchBackgroundPeerDisconnect(peer.call.aiSetGenerationState(generationState), "generation state reconnect push");
2932
3139
  }
2933
3140
  // 2. Sync tool permission state with the UI
2934
3141
  if (this.clark.context.pendingToolPermissionRequest) {
@@ -2979,6 +3186,7 @@ export class AiService extends TracedEventEmitter {
2979
3186
  if (this.taskStore) {
2980
3187
  this.pendingTaskResyncPeerIds.add(peerId);
2981
3188
  }
3189
+ this.tryAutoDispatchMigrationTurnIfReady();
2982
3190
  }
2983
3191
  /**
2984
3192
  * Per-session set of peer IDs that connected since their last task