@superblocksteam/vite-plugin-file-sync 2.0.131 → 2.0.132-next.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ai-service/agent/tools/build-copy-utils.d.ts +8 -8
- package/dist/ai-service/agent/tools/build-manage-checklist.d.ts +1 -1
- package/dist/ai-service/agent/tools/get-logs.d.ts +2 -2
- package/dist/ai-service/agent/tools2/tools/end-test-run.d.ts +2 -2
- package/dist/ai-service/agent/tools2/tools/exit-plan-mode.js +1 -1
- package/dist/ai-service/agent/tools2/tools/exit-plan-mode.js.map +1 -1
- package/dist/ai-service/agent/tools2/tools/grep.d.ts +1 -1
- package/dist/ai-service/app-interface/npm-registry.d.ts.map +1 -1
- package/dist/ai-service/app-interface/npm-registry.js +6 -3
- package/dist/ai-service/app-interface/npm-registry.js.map +1 -1
- package/dist/ai-service/attachments/{csv-upload-artifacts.d.ts → text-upload-artifacts.d.ts} +14 -11
- package/dist/ai-service/attachments/text-upload-artifacts.d.ts.map +1 -0
- package/dist/ai-service/attachments/{csv-upload-artifacts.js → text-upload-artifacts.js} +61 -35
- package/dist/ai-service/attachments/text-upload-artifacts.js.map +1 -0
- package/dist/ai-service/chat/chat-session-store-metrics.d.ts +12 -0
- package/dist/ai-service/chat/chat-session-store-metrics.d.ts.map +1 -0
- package/dist/ai-service/chat/chat-session-store-metrics.js +63 -0
- package/dist/ai-service/chat/chat-session-store-metrics.js.map +1 -0
- package/dist/ai-service/chat/chat-session-store.d.ts.map +1 -1
- package/dist/ai-service/chat/chat-session-store.js +24 -4
- package/dist/ai-service/chat/chat-session-store.js.map +1 -1
- package/dist/ai-service/index.d.ts +4 -38
- package/dist/ai-service/index.d.ts.map +1 -1
- package/dist/ai-service/index.js +14 -168
- package/dist/ai-service/index.js.map +1 -1
- package/dist/ai-service/llm/client.d.ts.map +1 -1
- package/dist/ai-service/llm/client.js +33 -26
- package/dist/ai-service/llm/client.js.map +1 -1
- package/dist/ai-service/llm/context-v2/compactor.d.ts.map +1 -1
- package/dist/ai-service/llm/context-v2/compactor.js +21 -13
- package/dist/ai-service/llm/context-v2/compactor.js.map +1 -1
- package/dist/ai-service/llm/context-v2/context-metrics.d.ts +25 -0
- package/dist/ai-service/llm/context-v2/context-metrics.d.ts.map +1 -1
- package/dist/ai-service/llm/context-v2/context-metrics.js +147 -7
- package/dist/ai-service/llm/context-v2/context-metrics.js.map +1 -1
- package/dist/ai-service/llm/context-v2/context.d.ts +10 -1
- package/dist/ai-service/llm/context-v2/context.d.ts.map +1 -1
- package/dist/ai-service/llm/context-v2/context.js +98 -10
- package/dist/ai-service/llm/context-v2/context.js.map +1 -1
- package/dist/ai-service/llm/context-v2/manager.d.ts +3 -1
- package/dist/ai-service/llm/context-v2/manager.d.ts.map +1 -1
- package/dist/ai-service/llm/context-v2/manager.js +26 -5
- package/dist/ai-service/llm/context-v2/manager.js.map +1 -1
- package/dist/ai-service/llm/context-v2/phase1-tool-summarizer.d.ts +5 -2
- package/dist/ai-service/llm/context-v2/phase1-tool-summarizer.d.ts.map +1 -1
- package/dist/ai-service/llm/context-v2/phase1-tool-summarizer.js +229 -55
- package/dist/ai-service/llm/context-v2/phase1-tool-summarizer.js.map +1 -1
- package/dist/ai-service/llm/context-v2/phase2-session-summarizer.d.ts +1 -0
- package/dist/ai-service/llm/context-v2/phase2-session-summarizer.d.ts.map +1 -1
- package/dist/ai-service/llm/context-v2/phase2-session-summarizer.js +108 -2
- package/dist/ai-service/llm/context-v2/phase2-session-summarizer.js.map +1 -1
- package/dist/ai-service/llm/context-v2/prompts/compaction.d.ts +1 -1
- package/dist/ai-service/llm/context-v2/prompts/compaction.d.ts.map +1 -1
- package/dist/ai-service/llm/context-v2/prompts/compaction.js +6 -0
- package/dist/ai-service/llm/context-v2/prompts/compaction.js.map +1 -1
- package/dist/ai-service/llm/context-v2/storage/local.d.ts.map +1 -1
- package/dist/ai-service/llm/context-v2/storage/local.js +16 -2
- package/dist/ai-service/llm/context-v2/storage/local.js.map +1 -1
- package/dist/ai-service/llm/context-v2/types.d.ts +3 -1
- package/dist/ai-service/llm/context-v2/types.d.ts.map +1 -1
- package/dist/ai-service/llm/context-v2/types.js +76 -10
- package/dist/ai-service/llm/context-v2/types.js.map +1 -1
- package/dist/ai-service/llm/context-v2/uniquify-filenames.d.ts +6 -6
- package/dist/ai-service/llm/context-v2/uniquify-filenames.d.ts.map +1 -1
- package/dist/ai-service/llm/context-v2/uniquify-filenames.js +127 -24
- package/dist/ai-service/llm/context-v2/uniquify-filenames.js.map +1 -1
- package/dist/ai-service/llm/context-v2/utils/get-loaded-context.d.ts +1 -1
- package/dist/ai-service/llm/context-v2/utils/get-loaded-context.d.ts.map +1 -1
- package/dist/ai-service/llm/context-v2/utils/get-loaded-context.js.map +1 -1
- package/dist/ai-service/llm/error.d.ts +1 -1
- package/dist/ai-service/llm/error.d.ts.map +1 -1
- package/dist/ai-service/llm/error.js +11 -0
- package/dist/ai-service/llm/error.js.map +1 -1
- package/dist/ai-service/llm/stream/config.d.ts +19 -29
- package/dist/ai-service/llm/stream/config.d.ts.map +1 -1
- package/dist/ai-service/llm/stream/config.js +17 -40
- package/dist/ai-service/llm/stream/config.js.map +1 -1
- package/dist/ai-service/llm/stream/errors.d.ts +4 -6
- package/dist/ai-service/llm/stream/errors.d.ts.map +1 -1
- package/dist/ai-service/llm/stream/errors.js +13 -0
- package/dist/ai-service/llm/stream/errors.js.map +1 -1
- package/dist/ai-service/llm/stream/idle-monitor.d.ts +29 -21
- package/dist/ai-service/llm/stream/idle-monitor.d.ts.map +1 -1
- package/dist/ai-service/llm/stream/idle-monitor.js +157 -68
- package/dist/ai-service/llm/stream/idle-monitor.js.map +1 -1
- package/dist/ai-service/llm/stream/index.d.ts +1 -1
- package/dist/ai-service/llm/stream/index.d.ts.map +1 -1
- package/dist/ai-service/llm/stream/index.js +1 -1
- package/dist/ai-service/llm/stream/index.js.map +1 -1
- package/dist/ai-service/llm/stream/observers/llmobs.d.ts +3 -1
- package/dist/ai-service/llm/stream/observers/llmobs.d.ts.map +1 -1
- package/dist/ai-service/llm/stream/observers/llmobs.js +55 -25
- package/dist/ai-service/llm/stream/observers/llmobs.js.map +1 -1
- package/dist/ai-service/llm/stream/orchestrator.d.ts +4 -0
- package/dist/ai-service/llm/stream/orchestrator.d.ts.map +1 -1
- package/dist/ai-service/llm/stream/orchestrator.js +154 -33
- package/dist/ai-service/llm/stream/orchestrator.js.map +1 -1
- package/dist/ai-service/llm/stream/retry-engine.d.ts.map +1 -1
- package/dist/ai-service/llm/stream/retry-engine.js +3 -6
- package/dist/ai-service/llm/stream/retry-engine.js.map +1 -1
- package/dist/ai-service/state-machine/handlers/agent-planning.js +1 -1
- package/dist/ai-service/state-machine/handlers/agent-planning.js.map +1 -1
- package/dist/ai-service/state-machine/handlers/llm-generating.d.ts +5 -5
- package/dist/ai-service/state-machine/handlers/llm-generating.d.ts.map +1 -1
- package/dist/ai-service/state-machine/handlers/llm-generating.js +47 -35
- package/dist/ai-service/state-machine/handlers/llm-generating.js.map +1 -1
- package/dist/ai-service/state-machine/helpers/context-id.d.ts +1 -1
- package/dist/ai-service/state-machine/helpers/context-id.d.ts.map +1 -1
- package/dist/ai-service/state-machine/helpers/context-id.js +3 -0
- package/dist/ai-service/state-machine/helpers/context-id.js.map +1 -1
- package/dist/ai-service/tasks/types.d.ts +6 -6
- package/dist/ai-service/types.d.ts +0 -6
- package/dist/ai-service/types.d.ts.map +1 -1
- package/dist/ai-service/types.js.map +1 -1
- package/dist/lock-service/index.d.ts +2 -0
- package/dist/lock-service/index.d.ts.map +1 -1
- package/dist/lock-service/index.js +52 -3
- package/dist/lock-service/index.js.map +1 -1
- package/dist/migration/translation-prompt.d.ts +6 -7
- package/dist/migration/translation-prompt.d.ts.map +1 -1
- package/dist/migration/translation-prompt.js +6 -7
- package/dist/migration/translation-prompt.js.map +1 -1
- package/dist/migration-templates/app-fullstack/package.json +0 -1
- package/dist/socket-manager.d.ts.map +1 -1
- package/dist/socket-manager.js +0 -6
- package/dist/socket-manager.js.map +1 -1
- package/dist/sync-service/download.d.ts.map +1 -1
- package/dist/sync-service/download.js +49 -1
- package/dist/sync-service/download.js.map +1 -1
- package/dist/util/logger.d.ts.map +1 -1
- package/dist/util/logger.js +62 -0
- package/dist/util/logger.js.map +1 -1
- package/package.json +8 -8
- package/dist/ai-service/attachments/csv-upload-artifacts.d.ts.map +0 -1
- package/dist/ai-service/attachments/csv-upload-artifacts.js.map +0 -1
- package/dist/ai-service/migration-auto-dispatch-readiness.d.ts +0 -18
- package/dist/ai-service/migration-auto-dispatch-readiness.d.ts.map +0 -1
- package/dist/ai-service/migration-auto-dispatch-readiness.js +0 -17
- package/dist/ai-service/migration-auto-dispatch-readiness.js.map +0 -1
- package/dist/ai-service/migration-llm-config.d.ts +0 -7
- package/dist/ai-service/migration-llm-config.d.ts.map +0 -1
- package/dist/ai-service/migration-llm-config.js +0 -122
- package/dist/ai-service/migration-llm-config.js.map +0 -1
- package/dist/ai-service/resolve-generation-state-for-ui.d.ts +0 -8
- package/dist/ai-service/resolve-generation-state-for-ui.d.ts.map +0 -1
- package/dist/ai-service/resolve-generation-state-for-ui.js +0 -36
- package/dist/ai-service/resolve-generation-state-for-ui.js.map +0 -1
- package/dist/ai-service/util/inference-jwt.d.ts +0 -15
- package/dist/ai-service/util/inference-jwt.d.ts.map +0 -1
- package/dist/ai-service/util/inference-jwt.js +0 -56
- package/dist/ai-service/util/inference-jwt.js.map +0 -1
- package/dist/migration-templates/app-fullstack/client/components/ui/chat.tsx +0 -2303
|
@@ -47,15 +47,6 @@ 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
|
-
}
|
|
59
50
|
export declare class AiService extends TracedEventEmitter<AiServiceEvents> {
|
|
60
51
|
private readonly config;
|
|
61
52
|
private templateRenderer;
|
|
@@ -207,26 +198,6 @@ export declare class AiService extends TracedEventEmitter<AiServiceEvents> {
|
|
|
207
198
|
*/
|
|
208
199
|
initialize(): Promise<void>;
|
|
209
200
|
private hydrateChecklistFromDisk;
|
|
210
|
-
private migrationAppArtifactsReady;
|
|
211
|
-
private migrationAutoDispatchPending;
|
|
212
|
-
private migrationAutoDispatchInFlight;
|
|
213
|
-
private lastMigrationTurnCredentials?;
|
|
214
|
-
private hasInitialPendingMigrationWork;
|
|
215
|
-
private resolveMigrationTurnCredentials;
|
|
216
|
-
private storeMigrationTurnCredentials;
|
|
217
|
-
private isRetriableMigrationAutoDispatchFailure;
|
|
218
|
-
/**
|
|
219
|
-
* Called by dev startup once DBFS download (or upload-first local tree)
|
|
220
|
-
* has finished so migration scratch/checklist files are on disk.
|
|
221
|
-
*/
|
|
222
|
-
notifyMigrationAppArtifactsReady(): void;
|
|
223
|
-
private tryAutoDispatchMigrationTurnIfReady;
|
|
224
|
-
/**
|
|
225
|
-
* Attempts to start the initial post-flip migration turn without UI
|
|
226
|
-
* involvement. Skips user-initiated focused-debug retries (items with
|
|
227
|
-
* `lastFailureReason`) and defers when JWT is unavailable.
|
|
228
|
-
*/
|
|
229
|
-
private maybeAutoDispatchMigrationTurn;
|
|
230
201
|
/**
|
|
231
202
|
* Remove the integration metadata cache for this session.
|
|
232
203
|
* Cleans up the session cache directory.
|
|
@@ -302,19 +273,15 @@ export declare class AiService extends TracedEventEmitter<AiServiceEvents> {
|
|
|
302
273
|
* per ai-service lifetime. The disk checklist is the recovery source of
|
|
303
274
|
* truth across process restarts.
|
|
304
275
|
*
|
|
305
|
-
*
|
|
306
|
-
*
|
|
307
|
-
*
|
|
308
|
-
*
|
|
309
|
-
* observes the post-flip state via /sb-migration-status.
|
|
310
|
-
* User retry after unresolved failures: UI RPC with
|
|
311
|
-
* `retryMode: "focused-debug"` after /sb-migration-retry-unresolved.
|
|
276
|
+
* Expected caller: the UI issues a dedicated RPC (see
|
|
277
|
+
* v1.ai.triggerMigrationTurn) once it observes the post-flip state via
|
|
278
|
+
* /sb-migration-status. jwt + llmConfig come from the UI's normal auth
|
|
279
|
+
* flow.
|
|
312
280
|
*/
|
|
313
281
|
handleAiTriggerMigrationTurn(request: {
|
|
314
282
|
jwt: string;
|
|
315
283
|
llmConfig: LLMProviderConfig;
|
|
316
284
|
retryMode?: "focused-debug";
|
|
317
|
-
triggeredBy?: MigrationUsageMetadata["triggeredBy"];
|
|
318
285
|
}): Promise<{
|
|
319
286
|
dispatched: boolean;
|
|
320
287
|
reason?: string;
|
|
@@ -450,7 +417,6 @@ export declare class AiService extends TracedEventEmitter<AiServiceEvents> {
|
|
|
450
417
|
* For testApi, provides specific guidance to continue testing other APIs.
|
|
451
418
|
*/
|
|
452
419
|
private buildDenialContinuationPrompt;
|
|
453
|
-
resolveGenerationStateForUi(): import("@superblocksteam/library-shared/types").AiGenerationStateSnapshot | undefined;
|
|
454
420
|
handleUserConnected(peer: EditorClient, peerId: string): void;
|
|
455
421
|
/**
|
|
456
422
|
* 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":"AAaA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,MAAM,CAAC;AAG1C,OAAO,EAIL,KAAK,SAAS,EACd,KAAK,yBAAyB,EAC9B,KAAK,wBAAwB,EAE7B,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,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,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ai-service/index.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,MAAM,CAAC;AAG1C,OAAO,EAIL,KAAK,SAAS,EACd,KAAK,yBAAyB,EAC9B,KAAK,wBAAwB,EAE7B,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,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,EAOlB,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;AA8B1D,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,2CAA2C,CAAC;AAOnD,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;AAY5E,OAAO,EAAE,gBAAgB,EAAwB,MAAM,sBAAsB,CAAC;AAoD9E,OAAO,KAAK,EACV,eAAe,EACf,eAAe,EACf,YAAY,EACZ,UAAU,EACV,SAAS,EACV,MAAM,YAAY,CAAC;AAMpB,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;AAyCD,qBAAa,SAAU,SAAQ,kBAAkB,CAAC,eAAe,CAAC;IAuOpD,OAAO,CAAC,QAAQ,CAAC,MAAM;IAtOnC,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;;;;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;IA2ZpD;;;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,4BAA4B;IA2IpC,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,mBAAmB;IAQ3B;;;;;;;;;;;;;;;;OAgBG;YACW,qBAAqB;IAsEnC,OAAO,CAAC,2BAA2B;IAYnC,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,qCAAqC;IAiB7C,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;IAiI3D,mBAAmB,CAC9B,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,IAAI,CAAC;IA6NH,yBAAyB,CACpC,OAAO,EAAE,0BAA0B,GAClC,OAAO,CAAC,IAAI,CAAC;IAyMH,sBAAsB,CACjC,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,IAAI,CAAC;IA0JH,uBAAuB,CAClC,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAAC,yBAAyB,CAAC;IA2HrC;;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;IAiBhD;;;;;;;;;;;;;;;;;;;;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;IA+BjD;;;OAGG;YACW,oBAAoB;IAiFlC;;;;;;;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;IAoCnD,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;IAmQM,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;IAQpB,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;CAoD/B"}
|
package/dist/ai-service/index.js
CHANGED
|
@@ -32,7 +32,7 @@ import { AppSkillsManager } from "./app-skills/manager.js";
|
|
|
32
32
|
import { isUploadedAttachment, toUploadedAttachmentContentPart, } from "./attachments/uploaded-content-part.js";
|
|
33
33
|
import { ChatSessionStore } from "./chat/chat-session-store.js";
|
|
34
34
|
import { normalizeTextAttachmentForModel } from "./chat/utils.js";
|
|
35
|
-
import { API_MIGRATION_ORIGINS,
|
|
35
|
+
import { API_MIGRATION_ORIGINS, readPersistedChecklist, updateChecklistItem, } from "./checklist/persisted-checklist-store.js";
|
|
36
36
|
import { downloadContextFromBucketeer, downloadLatestContextFromBucketeer, restoreContextFromCheckpoint, } from "./context-download.js";
|
|
37
37
|
import { uploadContextToBucketeer } from "./context-upload.js";
|
|
38
38
|
import { AppContextStore } from "./context/app-context.js";
|
|
@@ -55,8 +55,6 @@ import { traceLLM } from "./llmobs/helpers.js";
|
|
|
55
55
|
import { getJwtTraceTags } from "./llmobs/helpers.js";
|
|
56
56
|
import llmobs from "./llmobs/index.js";
|
|
57
57
|
import { PlaywrightMcpServerManager } from "./mcp/playwright-server.js";
|
|
58
|
-
import { evaluateMigrationAutoDispatchReadiness } from "./migration-auto-dispatch-readiness.js";
|
|
59
|
-
import { buildServerMigrationLlmConfig } from "./migration-llm-config.js";
|
|
60
58
|
import { policyGateStreamPartToAgentStep } from "./policy-gate-step.js";
|
|
61
59
|
import { ClarkProfiler } from "./profiler/clark-profiler.js";
|
|
62
60
|
import { explainEventHandlerCodePrompt } from "./prompts/explain-code.js";
|
|
@@ -64,7 +62,6 @@ import { buildSummarizeApiUsagePrompt } from "./prompts/summarize-api-usage.js";
|
|
|
64
62
|
import { checkAiQuota } from "./quota-client.js";
|
|
65
63
|
import { RecordingManager, createRecordingFetch } from "./recording/index.js";
|
|
66
64
|
import { RequestDeduplicator } from "./request-deduplicator.js";
|
|
67
|
-
import { resolveGenerationStateForUi } from "./resolve-generation-state-for-ui.js";
|
|
68
65
|
import { scanContentForSecrets } from "./security/secret-scanner-service.js";
|
|
69
66
|
import { SecretRedactor } from "./security/secret-scanner.js";
|
|
70
67
|
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";
|
|
@@ -83,7 +80,6 @@ import { catchBackgroundPeerDisconnect, StablePeer, } from "./state-machine/help
|
|
|
83
80
|
import { transitionFrom } from "./state-machine/helpers/transition.js";
|
|
84
81
|
import { isTaskAccessibleTo, registerBackgroundTaskTypes, resyncActiveTaskStatusesToPeer, TaskStore, wireTaskStatusPushToPeer, } from "./tasks/index.js";
|
|
85
82
|
import { TemplateRenderer } from "./template-renderer.js";
|
|
86
|
-
import { describeMigrationInferenceJwt, isUsableMigrationInferenceJwt, } from "./util/inference-jwt.js";
|
|
87
83
|
import { createJsonStreamParser } from "./util/json-stream-parser.js";
|
|
88
84
|
import { processLLMConfig } from "./util/llm-config-utils.js";
|
|
89
85
|
import { parseJwt } from "./util/parse-jwt.js";
|
|
@@ -363,9 +359,6 @@ export class AiService extends TracedEventEmitter {
|
|
|
363
359
|
try {
|
|
364
360
|
this.tokenManagerJwt = event.token;
|
|
365
361
|
this.getLogger().info(`[ai-service] token updated via tokenManager`);
|
|
366
|
-
if (event.token && isUsableMigrationInferenceJwt(event.token)) {
|
|
367
|
-
this.updateClarkJwt(event.token);
|
|
368
|
-
}
|
|
369
362
|
}
|
|
370
363
|
catch (err) {
|
|
371
364
|
console.error("[ai-service] tokenUpdated listener threw", err);
|
|
@@ -465,16 +458,9 @@ export class AiService extends TracedEventEmitter {
|
|
|
465
458
|
* Updates the JWT in Clark context
|
|
466
459
|
*/
|
|
467
460
|
updateClarkJwt(jwt) {
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
return;
|
|
461
|
+
if (jwt) {
|
|
462
|
+
this.clark.updateContext({ jwt });
|
|
471
463
|
}
|
|
472
|
-
this.clark.updateContext({ jwt });
|
|
473
|
-
const llmConfig = this.lastMigrationTurnCredentials?.llmConfig ??
|
|
474
|
-
this.clark.context.llmConfig ??
|
|
475
|
-
buildServerMigrationLlmConfig(this.config.flagBootstrap);
|
|
476
|
-
this.storeMigrationTurnCredentials(jwt, llmConfig);
|
|
477
|
-
this.tryAutoDispatchMigrationTurnIfReady();
|
|
478
464
|
}
|
|
479
465
|
// ===== Recording API =====
|
|
480
466
|
/**
|
|
@@ -892,7 +878,7 @@ export class AiService extends TracedEventEmitter {
|
|
|
892
878
|
}
|
|
893
879
|
// Reset stale in_progress items to pending. After a dev-server restart,
|
|
894
880
|
// items left in_progress are not truly running — resetting them allows
|
|
895
|
-
//
|
|
881
|
+
// the UI polling trigger and backend handler to re-dispatch Clark.
|
|
896
882
|
const staleInProgressItems = checklist.items.filter((item) => API_MIGRATION_ORIGINS.has(item.origin) && item.status === "in_progress");
|
|
897
883
|
for (const item of staleInProgressItems) {
|
|
898
884
|
await updateChecklistItem({
|
|
@@ -934,130 +920,6 @@ export class AiService extends TracedEventEmitter {
|
|
|
934
920
|
},
|
|
935
921
|
});
|
|
936
922
|
}
|
|
937
|
-
this.tryAutoDispatchMigrationTurnIfReady();
|
|
938
|
-
}
|
|
939
|
-
migrationAppArtifactsReady = false;
|
|
940
|
-
migrationAutoDispatchPending = false;
|
|
941
|
-
migrationAutoDispatchInFlight = false;
|
|
942
|
-
lastMigrationTurnCredentials;
|
|
943
|
-
hasInitialPendingMigrationWork(items) {
|
|
944
|
-
const pendingItems = items.filter((item) => isApiMigrationOrigin(item.origin) &&
|
|
945
|
-
(item.status === "pending" || item.status === "in_progress"));
|
|
946
|
-
if (pendingItems.length === 0) {
|
|
947
|
-
return false;
|
|
948
|
-
}
|
|
949
|
-
return !pendingItems.some((item) => item.lastFailureReason);
|
|
950
|
-
}
|
|
951
|
-
resolveMigrationTurnCredentials() {
|
|
952
|
-
const cachedJwt = this.lastMigrationTurnCredentials?.jwt;
|
|
953
|
-
const inferenceJwt = this.getInferenceJwt();
|
|
954
|
-
const jwt = (cachedJwt && isUsableMigrationInferenceJwt(cachedJwt)
|
|
955
|
-
? cachedJwt
|
|
956
|
-
: undefined) ??
|
|
957
|
-
(inferenceJwt && isUsableMigrationInferenceJwt(inferenceJwt)
|
|
958
|
-
? inferenceJwt
|
|
959
|
-
: undefined);
|
|
960
|
-
const llmConfig = this.lastMigrationTurnCredentials?.llmConfig ??
|
|
961
|
-
this.clark.context.llmConfig ??
|
|
962
|
-
buildServerMigrationLlmConfig(this.config.flagBootstrap);
|
|
963
|
-
return { jwt, llmConfig };
|
|
964
|
-
}
|
|
965
|
-
storeMigrationTurnCredentials(jwt, llmConfig) {
|
|
966
|
-
const nextJwt = jwt && jwt.length > 0 ? jwt : this.lastMigrationTurnCredentials?.jwt;
|
|
967
|
-
this.lastMigrationTurnCredentials = {
|
|
968
|
-
...(nextJwt ? { jwt: nextJwt } : {}),
|
|
969
|
-
llmConfig,
|
|
970
|
-
};
|
|
971
|
-
if (jwt && jwt.length > 0 && !this.getInferenceJwt()) {
|
|
972
|
-
this.clark.updateContext({ jwt });
|
|
973
|
-
}
|
|
974
|
-
}
|
|
975
|
-
isRetriableMigrationAutoDispatchFailure(reason) {
|
|
976
|
-
if (!reason) {
|
|
977
|
-
return false;
|
|
978
|
-
}
|
|
979
|
-
return (reason.startsWith("busy:") ||
|
|
980
|
-
reason === "pending-tool-permission" ||
|
|
981
|
-
reason === "awaiting-interactive-response");
|
|
982
|
-
}
|
|
983
|
-
/**
|
|
984
|
-
* Called by dev startup once DBFS download (or upload-first local tree)
|
|
985
|
-
* has finished so migration scratch/checklist files are on disk.
|
|
986
|
-
*/
|
|
987
|
-
notifyMigrationAppArtifactsReady() {
|
|
988
|
-
if (this.migrationAppArtifactsReady) {
|
|
989
|
-
return;
|
|
990
|
-
}
|
|
991
|
-
this.migrationAppArtifactsReady = true;
|
|
992
|
-
this.tryAutoDispatchMigrationTurnIfReady();
|
|
993
|
-
}
|
|
994
|
-
tryAutoDispatchMigrationTurnIfReady() {
|
|
995
|
-
if (this.migrationAutoDispatchInFlight) {
|
|
996
|
-
return;
|
|
997
|
-
}
|
|
998
|
-
const { jwt } = this.resolveMigrationTurnCredentials();
|
|
999
|
-
const readiness = evaluateMigrationAutoDispatchReadiness({
|
|
1000
|
-
appArtifactsReady: this.migrationAppArtifactsReady,
|
|
1001
|
-
hasConnectedPeer: this.hasConnectedPeer(),
|
|
1002
|
-
hasUsableJwt: Boolean(jwt),
|
|
1003
|
-
});
|
|
1004
|
-
if (!readiness.ready) {
|
|
1005
|
-
if (readiness.reason === "jwt-unavailable") {
|
|
1006
|
-
this.migrationAutoDispatchPending = true;
|
|
1007
|
-
}
|
|
1008
|
-
return;
|
|
1009
|
-
}
|
|
1010
|
-
void this.maybeAutoDispatchMigrationTurn().catch((error) => {
|
|
1011
|
-
this.getLogger().error("[ai-service] Migration auto-dispatch failed", getErrorMeta(error));
|
|
1012
|
-
});
|
|
1013
|
-
}
|
|
1014
|
-
/**
|
|
1015
|
-
* Attempts to start the initial post-flip migration turn without UI
|
|
1016
|
-
* involvement. Skips user-initiated focused-debug retries (items with
|
|
1017
|
-
* `lastFailureReason`) and defers when JWT is unavailable.
|
|
1018
|
-
*/
|
|
1019
|
-
async maybeAutoDispatchMigrationTurn() {
|
|
1020
|
-
if (this.migrationAutoDispatchInFlight) {
|
|
1021
|
-
return;
|
|
1022
|
-
}
|
|
1023
|
-
this.migrationAutoDispatchInFlight = true;
|
|
1024
|
-
try {
|
|
1025
|
-
const checklist = await readPersistedChecklist(this.appRootDirPath);
|
|
1026
|
-
if (!checklist) {
|
|
1027
|
-
this.migrationAutoDispatchPending = false;
|
|
1028
|
-
return;
|
|
1029
|
-
}
|
|
1030
|
-
if (!this.hasInitialPendingMigrationWork(checklist.items)) {
|
|
1031
|
-
this.migrationAutoDispatchPending = false;
|
|
1032
|
-
return;
|
|
1033
|
-
}
|
|
1034
|
-
const { jwt, llmConfig } = this.resolveMigrationTurnCredentials();
|
|
1035
|
-
if (!jwt) {
|
|
1036
|
-
this.migrationAutoDispatchPending = true;
|
|
1037
|
-
return;
|
|
1038
|
-
}
|
|
1039
|
-
const result = await this.handleAiTriggerMigrationTurn({
|
|
1040
|
-
jwt,
|
|
1041
|
-
llmConfig,
|
|
1042
|
-
triggeredBy: "auto-dispatch",
|
|
1043
|
-
});
|
|
1044
|
-
if (result.dispatched) {
|
|
1045
|
-
this.migrationAutoDispatchPending = false;
|
|
1046
|
-
this.getLogger().info("[ai-service] Auto-dispatched post-flip migration turn");
|
|
1047
|
-
}
|
|
1048
|
-
else if (result.reason === "already-triggered") {
|
|
1049
|
-
this.migrationAutoDispatchPending = false;
|
|
1050
|
-
}
|
|
1051
|
-
else if (this.isRetriableMigrationAutoDispatchFailure(result.reason)) {
|
|
1052
|
-
this.migrationAutoDispatchPending = true;
|
|
1053
|
-
}
|
|
1054
|
-
else {
|
|
1055
|
-
this.migrationAutoDispatchPending = false;
|
|
1056
|
-
}
|
|
1057
|
-
}
|
|
1058
|
-
finally {
|
|
1059
|
-
this.migrationAutoDispatchInFlight = false;
|
|
1060
|
-
}
|
|
1061
923
|
}
|
|
1062
924
|
/**
|
|
1063
925
|
* Remove the integration metadata cache for this session.
|
|
@@ -1394,16 +1256,12 @@ export class AiService extends TracedEventEmitter {
|
|
|
1394
1256
|
* per ai-service lifetime. The disk checklist is the recovery source of
|
|
1395
1257
|
* truth across process restarts.
|
|
1396
1258
|
*
|
|
1397
|
-
*
|
|
1398
|
-
*
|
|
1399
|
-
*
|
|
1400
|
-
*
|
|
1401
|
-
* observes the post-flip state via /sb-migration-status.
|
|
1402
|
-
* User retry after unresolved failures: UI RPC with
|
|
1403
|
-
* `retryMode: "focused-debug"` after /sb-migration-retry-unresolved.
|
|
1259
|
+
* Expected caller: the UI issues a dedicated RPC (see
|
|
1260
|
+
* v1.ai.triggerMigrationTurn) once it observes the post-flip state via
|
|
1261
|
+
* /sb-migration-status. jwt + llmConfig come from the UI's normal auth
|
|
1262
|
+
* flow.
|
|
1404
1263
|
*/
|
|
1405
1264
|
async handleAiTriggerMigrationTurn(request) {
|
|
1406
|
-
this.storeMigrationTurnCredentials(request.jwt, request.llmConfig);
|
|
1407
1265
|
// User-initiated "Fix with Clark" retries bypass the one-shot
|
|
1408
1266
|
// guard. The HTTP route that flips the items has already landed,
|
|
1409
1267
|
// so if we refused here the user would be stuck.
|
|
@@ -1429,10 +1287,8 @@ export class AiService extends TracedEventEmitter {
|
|
|
1429
1287
|
return { dispatched: false, reason: "awaiting-interactive-response" };
|
|
1430
1288
|
}
|
|
1431
1289
|
}
|
|
1432
|
-
this.migrationTurnTriggered = true;
|
|
1433
1290
|
const checklist = await readPersistedChecklist(this.appRootDirPath);
|
|
1434
1291
|
if (!checklist) {
|
|
1435
|
-
this.migrationTurnTriggered = false;
|
|
1436
1292
|
this.getLogger().warn("[ai-service] Migration checklist not found or unreadable; skipping translation turn");
|
|
1437
1293
|
return { dispatched: false, reason: "checklist-unavailable" };
|
|
1438
1294
|
}
|
|
@@ -1440,7 +1296,6 @@ export class AiService extends TracedEventEmitter {
|
|
|
1440
1296
|
(item.status === "pending" || item.status === "in_progress"));
|
|
1441
1297
|
const pendingSeedApiCount = pendingSeedApiItems.length;
|
|
1442
1298
|
if (pendingSeedApiCount === 0) {
|
|
1443
|
-
this.migrationTurnTriggered = false;
|
|
1444
1299
|
return { dispatched: false, reason: "no-pending-items" };
|
|
1445
1300
|
}
|
|
1446
1301
|
// Pre-flight quota gate. The migration turn drives LLM inference (which
|
|
@@ -1452,10 +1307,10 @@ export class AiService extends TracedEventEmitter {
|
|
|
1452
1307
|
// same pre-flight check handleAiGenerate already runs.
|
|
1453
1308
|
const quota = await this.checkAiQuota(request.jwt);
|
|
1454
1309
|
if (!quota.allowed) {
|
|
1455
|
-
this.migrationTurnTriggered = false;
|
|
1456
1310
|
this.getLogger().warn("[ai-service] Skipping v2→v3 migration turn — AI quota exceeded", { reason: quota.reason });
|
|
1457
1311
|
return { dispatched: false, reason: "quota-exceeded" };
|
|
1458
1312
|
}
|
|
1313
|
+
this.migrationTurnTriggered = true;
|
|
1459
1314
|
this.appShell.setApiHandlerEnabled(false);
|
|
1460
1315
|
this.getLogger().info(`[ai-service] Dispatching internal v2→v3 migration turn for ${pendingSeedApiCount} API(s) (API VFS projection disabled, retryMode=${request.retryMode ?? "none"})`);
|
|
1461
1316
|
const prompt = buildTranslationPrompt({
|
|
@@ -1477,8 +1332,6 @@ export class AiService extends TracedEventEmitter {
|
|
|
1477
1332
|
origin: "app_migration",
|
|
1478
1333
|
pendingSeedApiCount,
|
|
1479
1334
|
retryMode: request.retryMode ?? "none",
|
|
1480
|
-
triggeredBy: request.triggeredBy ??
|
|
1481
|
-
(request.retryMode === "focused-debug" ? "focused-debug" : "ui-rpc"),
|
|
1482
1335
|
};
|
|
1483
1336
|
this.clark.updateContext((context) => ({
|
|
1484
1337
|
...context,
|
|
@@ -1823,7 +1676,6 @@ export class AiService extends TracedEventEmitter {
|
|
|
1823
1676
|
}
|
|
1824
1677
|
async handleAiGenerate(request) {
|
|
1825
1678
|
this.getLogger().info(`[ai-service] handleAiGenerate: peerId=${this.stablePeer.peerId ?? "unknown"}`);
|
|
1826
|
-
this.storeMigrationTurnCredentials(request.jwt, request.llmConfig);
|
|
1827
1679
|
if (this.clark.state === ClarkStateNames.Dead) {
|
|
1828
1680
|
throw new Error("Service is unavailable");
|
|
1829
1681
|
}
|
|
@@ -2813,6 +2665,8 @@ export class AiService extends TracedEventEmitter {
|
|
|
2813
2665
|
const formattedArgs = await getToolCallArguments(toolName, rawInput, this.clark);
|
|
2814
2666
|
logger.info(`[ai-service] Sending tool call message: tool=${toolName}, toolCallId=${toolCallId}, signature=${signature}`);
|
|
2815
2667
|
void sendUserMessage({
|
|
2668
|
+
role: "assistant",
|
|
2669
|
+
content: "",
|
|
2816
2670
|
type: "tool",
|
|
2817
2671
|
tool: toolName,
|
|
2818
2672
|
toolCallId,
|
|
@@ -3034,12 +2888,6 @@ export class AiService extends TracedEventEmitter {
|
|
|
3034
2888
|
}
|
|
3035
2889
|
return `Continue with the task using alternative approaches. The tool ${toolName} was denied permission.`;
|
|
3036
2890
|
}
|
|
3037
|
-
resolveGenerationStateForUi() {
|
|
3038
|
-
return resolveGenerationStateForUi({
|
|
3039
|
-
clarkState: this.clark.state,
|
|
3040
|
-
lastGenerationState: this.clark.context.lastGenerationState,
|
|
3041
|
-
});
|
|
3042
|
-
}
|
|
3043
2891
|
handleUserConnected(peer, peerId) {
|
|
3044
2892
|
const existingPeerId = this.stablePeer.peerId;
|
|
3045
2893
|
this.getLogger().info(`[ai-service] handleUserConnected: peerId=${peerId}`);
|
|
@@ -3071,10 +2919,9 @@ export class AiService extends TracedEventEmitter {
|
|
|
3071
2919
|
this.authenticatedPeerUserId = undefined;
|
|
3072
2920
|
}
|
|
3073
2921
|
// 1. Sync generation state if generation is in progress
|
|
3074
|
-
|
|
3075
|
-
|
|
3076
|
-
this.
|
|
3077
|
-
catchBackgroundPeerDisconnect(peer.call.aiSetGenerationState(generationState), "generation state reconnect push");
|
|
2922
|
+
if (this.clark.context.lastGenerationState) {
|
|
2923
|
+
this.getLogger().info(`[ai-service] Syncing generation state on reconnect: ${this.clark.context.lastGenerationState.state}`);
|
|
2924
|
+
catchBackgroundPeerDisconnect(peer.call.aiSetGenerationState(this.clark.context.lastGenerationState), "generation state reconnect push");
|
|
3078
2925
|
}
|
|
3079
2926
|
// 2. Sync tool permission state with the UI
|
|
3080
2927
|
if (this.clark.context.pendingToolPermissionRequest) {
|
|
@@ -3125,7 +2972,6 @@ export class AiService extends TracedEventEmitter {
|
|
|
3125
2972
|
if (this.taskStore) {
|
|
3126
2973
|
this.pendingTaskResyncPeerIds.add(peerId);
|
|
3127
2974
|
}
|
|
3128
|
-
this.tryAutoDispatchMigrationTurnIfReady();
|
|
3129
2975
|
}
|
|
3130
2976
|
/**
|
|
3131
2977
|
* Per-session set of peer IDs that connected since their last task
|