@superblocksteam/vite-plugin-file-sync 2.0.154 → 2.0.155-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 (140) hide show
  1. package/dist/ai-service/agent/prompts/build-base-system-prompt.d.ts +23 -1
  2. package/dist/ai-service/agent/prompts/build-base-system-prompt.d.ts.map +1 -1
  3. package/dist/ai-service/agent/prompts/build-base-system-prompt.js +84 -29
  4. package/dist/ai-service/agent/prompts/build-base-system-prompt.js.map +1 -1
  5. package/dist/ai-service/agent/subagents/apis/prompt-builder.d.ts +2 -0
  6. package/dist/ai-service/agent/subagents/apis/prompt-builder.d.ts.map +1 -1
  7. package/dist/ai-service/agent/subagents/apis/prompt-builder.js +11 -2
  8. package/dist/ai-service/agent/subagents/apis/prompt-builder.js.map +1 -1
  9. package/dist/ai-service/agent/tool-permission-delivery.d.ts.map +1 -1
  10. package/dist/ai-service/agent/tool-permission-delivery.js +4 -0
  11. package/dist/ai-service/agent/tool-permission-delivery.js.map +1 -1
  12. package/dist/ai-service/agent/tools/app-environment/update-app-environment.d.ts +29 -0
  13. package/dist/ai-service/agent/tools/app-environment/update-app-environment.d.ts.map +1 -0
  14. package/dist/ai-service/agent/tools/app-environment/update-app-environment.js +387 -0
  15. package/dist/ai-service/agent/tools/app-environment/update-app-environment.js.map +1 -0
  16. package/dist/ai-service/agent/tools/databases/destructive-migration-prompt.d.ts +58 -0
  17. package/dist/ai-service/agent/tools/databases/destructive-migration-prompt.d.ts.map +1 -0
  18. package/dist/ai-service/agent/tools/databases/destructive-migration-prompt.js +258 -0
  19. package/dist/ai-service/agent/tools/databases/destructive-migration-prompt.js.map +1 -0
  20. package/dist/ai-service/agent/tools/databases/dev-database-tasks.d.ts +18 -6
  21. package/dist/ai-service/agent/tools/databases/dev-database-tasks.d.ts.map +1 -1
  22. package/dist/ai-service/agent/tools/databases/dev-database-tasks.js +203 -51
  23. package/dist/ai-service/agent/tools/databases/dev-database-tasks.js.map +1 -1
  24. package/dist/ai-service/agent/tools/databases/dev-database-tools.d.ts +12 -10
  25. package/dist/ai-service/agent/tools/databases/dev-database-tools.d.ts.map +1 -1
  26. package/dist/ai-service/agent/tools/databases/dev-database-tools.js +29 -8
  27. package/dist/ai-service/agent/tools/databases/dev-database-tools.js.map +1 -1
  28. package/dist/ai-service/agent/tools/integrations/metadata.d.ts +3 -0
  29. package/dist/ai-service/agent/tools/integrations/metadata.d.ts.map +1 -1
  30. package/dist/ai-service/agent/tools/integrations/metadata.js +10 -2
  31. package/dist/ai-service/agent/tools/integrations/metadata.js.map +1 -1
  32. package/dist/ai-service/agent/tools.d.ts +9 -1
  33. package/dist/ai-service/agent/tools.d.ts.map +1 -1
  34. package/dist/ai-service/agent/tools.js +25 -1
  35. package/dist/ai-service/agent/tools.js.map +1 -1
  36. package/dist/ai-service/agent/tools2/tools/exit-plan-mode.d.ts +8 -0
  37. package/dist/ai-service/agent/tools2/tools/exit-plan-mode.d.ts.map +1 -1
  38. package/dist/ai-service/agent/tools2/tools/exit-plan-mode.js +104 -14
  39. package/dist/ai-service/agent/tools2/tools/exit-plan-mode.js.map +1 -1
  40. package/dist/ai-service/app-interface/npm-registry.d.ts +9 -0
  41. package/dist/ai-service/app-interface/npm-registry.d.ts.map +1 -1
  42. package/dist/ai-service/app-interface/npm-registry.js +50 -1
  43. package/dist/ai-service/app-interface/npm-registry.js.map +1 -1
  44. package/dist/ai-service/app-skills/helpers.d.ts.map +1 -1
  45. package/dist/ai-service/app-skills/helpers.js +1 -0
  46. package/dist/ai-service/app-skills/helpers.js.map +1 -1
  47. package/dist/ai-service/dev-database-client.d.ts +3 -1
  48. package/dist/ai-service/dev-database-client.d.ts.map +1 -1
  49. package/dist/ai-service/dev-database-client.js.map +1 -1
  50. package/dist/ai-service/features.d.ts +24 -0
  51. package/dist/ai-service/features.d.ts.map +1 -1
  52. package/dist/ai-service/features.js +24 -0
  53. package/dist/ai-service/features.js.map +1 -1
  54. package/dist/ai-service/helper-system-ai-attributes.d.ts +19 -0
  55. package/dist/ai-service/helper-system-ai-attributes.d.ts.map +1 -0
  56. package/dist/ai-service/helper-system-ai-attributes.js +17 -0
  57. package/dist/ai-service/helper-system-ai-attributes.js.map +1 -0
  58. package/dist/ai-service/index.d.ts +58 -2
  59. package/dist/ai-service/index.d.ts.map +1 -1
  60. package/dist/ai-service/index.js +186 -34
  61. package/dist/ai-service/index.js.map +1 -1
  62. package/dist/ai-service/integrations/store.d.ts +3 -0
  63. package/dist/ai-service/integrations/store.d.ts.map +1 -1
  64. package/dist/ai-service/integrations/store.js +3 -0
  65. package/dist/ai-service/integrations/store.js.map +1 -1
  66. package/dist/ai-service/live-edit-events/bridge.d.ts +21 -0
  67. package/dist/ai-service/live-edit-events/bridge.d.ts.map +1 -0
  68. package/dist/ai-service/live-edit-events/bridge.js +52 -0
  69. package/dist/ai-service/live-edit-events/bridge.js.map +1 -0
  70. package/dist/ai-service/live-edit-events/forwarder.d.ts +158 -0
  71. package/dist/ai-service/live-edit-events/forwarder.d.ts.map +1 -0
  72. package/dist/ai-service/live-edit-events/forwarder.js +403 -0
  73. package/dist/ai-service/live-edit-events/forwarder.js.map +1 -0
  74. package/dist/ai-service/state-machine/clark-fsm.d.ts +14 -0
  75. package/dist/ai-service/state-machine/clark-fsm.d.ts.map +1 -1
  76. package/dist/ai-service/state-machine/clark-fsm.js.map +1 -1
  77. package/dist/ai-service/state-machine/handlers/awaiting-user.d.ts.map +1 -1
  78. package/dist/ai-service/state-machine/handlers/awaiting-user.js +4 -0
  79. package/dist/ai-service/state-machine/handlers/awaiting-user.js.map +1 -1
  80. package/dist/ai-service/state-machine/handlers/idle.d.ts.map +1 -1
  81. package/dist/ai-service/state-machine/handlers/idle.js +3 -0
  82. package/dist/ai-service/state-machine/handlers/idle.js.map +1 -1
  83. package/dist/ai-service/state-machine/handlers/llm-generating.d.ts +2 -0
  84. package/dist/ai-service/state-machine/handlers/llm-generating.d.ts.map +1 -1
  85. package/dist/ai-service/state-machine/handlers/llm-generating.js +93 -3
  86. package/dist/ai-service/state-machine/handlers/llm-generating.js.map +1 -1
  87. package/dist/ai-service/state-machine/helpers/headless-turn-lifecycle.d.ts +27 -0
  88. package/dist/ai-service/state-machine/helpers/headless-turn-lifecycle.d.ts.map +1 -0
  89. package/dist/ai-service/state-machine/helpers/headless-turn-lifecycle.js +34 -0
  90. package/dist/ai-service/state-machine/helpers/headless-turn-lifecycle.js.map +1 -0
  91. package/dist/ai-service/state-machine/helpers/peer.d.ts.map +1 -1
  92. package/dist/ai-service/state-machine/helpers/peer.js +24 -0
  93. package/dist/ai-service/state-machine/helpers/peer.js.map +1 -1
  94. package/dist/ai-service/state-machine/helpers/policy-gate-usage-metrics.d.ts.map +1 -1
  95. package/dist/ai-service/state-machine/helpers/policy-gate-usage-metrics.js +4 -0
  96. package/dist/ai-service/state-machine/helpers/policy-gate-usage-metrics.js.map +1 -1
  97. package/dist/ai-service/state-machine/helpers/prompt-request-metrics.d.ts +103 -1
  98. package/dist/ai-service/state-machine/helpers/prompt-request-metrics.d.ts.map +1 -1
  99. package/dist/ai-service/state-machine/helpers/prompt-request-metrics.js +263 -3
  100. package/dist/ai-service/state-machine/helpers/prompt-request-metrics.js.map +1 -1
  101. package/dist/ai-service/state-machine/helpers/stable-peer.d.ts +143 -0
  102. package/dist/ai-service/state-machine/helpers/stable-peer.d.ts.map +1 -1
  103. package/dist/ai-service/state-machine/helpers/stable-peer.js +220 -2
  104. package/dist/ai-service/state-machine/helpers/stable-peer.js.map +1 -1
  105. package/dist/ai-service/tasks/peer-push.d.ts.map +1 -1
  106. package/dist/ai-service/tasks/peer-push.js +7 -0
  107. package/dist/ai-service/tasks/peer-push.js.map +1 -1
  108. package/dist/dev-server-ws-smoke-client.d.ts.map +1 -1
  109. package/dist/dev-server-ws-smoke-client.js +1 -0
  110. package/dist/dev-server-ws-smoke-client.js.map +1 -1
  111. package/dist/file-sync-vite-plugin.d.ts.map +1 -1
  112. package/dist/file-sync-vite-plugin.js +9 -2
  113. package/dist/file-sync-vite-plugin.js.map +1 -1
  114. package/dist/lock-service/activity-tracker.d.ts.map +1 -1
  115. package/dist/lock-service/activity-tracker.js +5 -6
  116. package/dist/lock-service/activity-tracker.js.map +1 -1
  117. package/dist/lock-service/index.d.ts +56 -1
  118. package/dist/lock-service/index.d.ts.map +1 -1
  119. package/dist/lock-service/index.js +158 -13
  120. package/dist/lock-service/index.js.map +1 -1
  121. package/dist/rename-manager.d.ts.map +1 -1
  122. package/dist/rename-manager.js +2 -6
  123. package/dist/rename-manager.js.map +1 -1
  124. package/dist/socket-manager.d.ts +64 -0
  125. package/dist/socket-manager.d.ts.map +1 -1
  126. package/dist/socket-manager.js +236 -51
  127. package/dist/socket-manager.js.map +1 -1
  128. package/dist/util/logger.d.ts +2 -0
  129. package/dist/util/logger.d.ts.map +1 -1
  130. package/dist/util/logger.js +5 -0
  131. package/dist/util/logger.js.map +1 -1
  132. package/package.json +9 -9
  133. package/dist/parsing/entity/to-code-entity.d.ts +0 -3
  134. package/dist/parsing/entity/to-code-entity.d.ts.map +0 -1
  135. package/dist/parsing/entity/to-code-entity.js +0 -77
  136. package/dist/parsing/entity/to-code-entity.js.map +0 -1
  137. package/dist/parsing/entity/to-value-entity.d.ts +0 -8
  138. package/dist/parsing/entity/to-value-entity.d.ts.map +0 -1
  139. package/dist/parsing/entity/to-value-entity.js +0 -129
  140. package/dist/parsing/entity/to-value-entity.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helper-system-ai-attributes.d.ts","sourceRoot":"","sources":["../../src/ai-service/helper-system-ai-attributes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAEnE,KAAK,uBAAuB,GACxB,mBAAmB,CAAC,iBAAiB,GACrC,mBAAmB,CAAC,gBAAgB,GACpC,mBAAmB,CAAC,aAAa,CAAC;AAEtC;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE;IAC7C,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,uBAAuB,CAAC;CACtC,GAAG,YAAY,CAMf"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Billing attributes for non-chat Clark helpers (error summary, API usage
3
+ * summary, attachment labeling).
4
+ *
5
+ * These must omit `prompt_id` so the AI proxy classifies them as system
6
+ * events (`AI_BILLING_SYSTEM`) and stamps `trigger_type`. Minting a
7
+ * random `prompt_id` previously made them look like untagged builder
8
+ * prompts in Snowflake.
9
+ */
10
+ export function helperSystemAiAttributes(args) {
11
+ return {
12
+ application_id: args.applicationId,
13
+ session_id: args.sessionId,
14
+ trigger_type: args.triggerType,
15
+ };
16
+ }
17
+ //# sourceMappingURL=helper-system-ai-attributes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helper-system-ai-attributes.js","sourceRoot":"","sources":["../../src/ai-service/helper-system-ai-attributes.ts"],"names":[],"mappings":"AAQA;;;;;;;;GAQG;AACH,MAAM,UAAU,wBAAwB,CAAC,IAIxC;IACC,OAAO;QACL,cAAc,EAAE,IAAI,CAAC,aAAa;QAClC,UAAU,EAAE,IAAI,CAAC,SAAS;QAC1B,YAAY,EAAE,IAAI,CAAC,WAAW;KAC/B,CAAC;AACJ,CAAC"}
@@ -14,6 +14,7 @@ import type { JudgeEvaluationOptions, JudgeEvaluationResult } from "./judge/judg
14
14
  import type { ContextId } from "./llm/context-v2/types.js";
15
15
  import { RecordingManager } from "./recording/index.js";
16
16
  import type { BuildErrorPhase } from "./state-machine/clark-fsm.js";
17
+ import { CLARK_USAGE_ORIGIN } from "./state-machine/helpers/prompt-request-metrics.js";
17
18
  import type { AiServiceConfig, AiServiceEvents, EditorClient, UserChange, ApiUpdate } from "./types.ts";
18
19
  export { AiServiceFeatureFlags } from "./features.js";
19
20
  export { getManagedNativeDbGateDenialReason, hasEditLifecycleCapability, isManagedNativeDbAvailableForClark, } from "./managed-native-db-availability.js";
@@ -53,7 +54,7 @@ interface MigrationUsageMetadata extends Record<string, unknown> {
53
54
  applicationId: string;
54
55
  branchName: string | undefined;
55
56
  migrationSource: "superblocks_2_0";
56
- origin: "app_migration";
57
+ origin: typeof CLARK_USAGE_ORIGIN.app_migration;
57
58
  pendingSeedApiCount: number;
58
59
  retryMode: "focused-debug" | "none";
59
60
  surface: ClarkUsageSurface;
@@ -144,6 +145,16 @@ export declare class AiService extends TracedEventEmitter<AiServiceEvents> {
144
145
  * non-optional once the AiService has been initialized.
145
146
  */
146
147
  getNpmRegistryClient(): NpmRegistryClient;
148
+ /**
149
+ * Opens the relay that lets a Gateway-driven turn see what Clark is doing.
150
+ *
151
+ * The sandbox holds a socket to the editor, but a Gateway turn has no editor
152
+ * on the far end, so its caller would otherwise learn nothing until the turn
153
+ * ended. Where the deployment does not run this channel the environment is
154
+ * simply absent, and this leaves the relay closed rather than failing to
155
+ * start.
156
+ */
157
+ private startLiveEditEventForwarding;
147
158
  remediateDeclaredDependencies(): Promise<void>;
148
159
  /**
149
160
  * Injects git and sync services for the git tool (called by the plugin when native git is available).
@@ -477,6 +488,40 @@ export declare class AiService extends TracedEventEmitter<AiServiceEvents> {
477
488
  */
478
489
  private buildDenialContinuationPrompt;
479
490
  resolveGenerationStateForUi(): import("@superblocksteam/library-shared/types").AiGenerationStateSnapshot | undefined;
491
+ /**
492
+ * A gateway peer asked for a turn. Clark's pushes and tool callbacks for it
493
+ * are routed to that peer for as long as it is attached, without giving it
494
+ * the editor binding: a browser tab opening or closing mid-turn changes
495
+ * nothing about where the turn reports.
496
+ *
497
+ * `turnId` is the correlator the caller sent with the prompt, and is what
498
+ * lets that same caller reacquire this turn on a replacement socket.
499
+ * Returned so the caller can be told which turn it now owns; a turn started
500
+ * without one is reachable by this socket alone.
501
+ */
502
+ beginHeadlessTurn(peer: EditorClient, peerId: string, turnId?: string): string | undefined;
503
+ /**
504
+ * A gateway peer offered the correlator of a turn in flight, which is what a
505
+ * reattach looks like: the peer that started the turn lost its socket, so the
506
+ * turn moves onto the replacement.
507
+ *
508
+ * Runs on every authorized gateway RPC, so the two uninteresting outcomes —
509
+ * the caller already owns the turn, or is talking about a turn that is not
510
+ * this one — are silent. Only an actual handover is worth a line.
511
+ */
512
+ claimHeadlessTurn(peer: EditorClient, peerId: string, turnId?: string): void;
513
+ /**
514
+ * The prompt a turn was bound for never started, so there is no generation
515
+ * coming that could settle it. Scoped to the exact turn: a reattach or a
516
+ * later turn may already own routing.
517
+ */
518
+ abandonHeadlessTurn(peerId: string, turnId?: string): void;
519
+ /**
520
+ * The gateway peer went away. Only the peer still holding the turn can end
521
+ * it, so a socket that a reattach already replaced cannot strip routing from
522
+ * its successor.
523
+ */
524
+ endHeadlessTurn(peerId: string): void;
480
525
  handleUserConnected(peer: EditorClient, peerId: string): void;
481
526
  /**
482
527
  * Per-session set of peer IDs that connected since their last task
@@ -519,7 +564,18 @@ export declare class AiService extends TracedEventEmitter<AiServiceEvents> {
519
564
  * threat surface (see PR #19718 review feedback).
520
565
  */
521
566
  notifyAuthenticatedRpc(peerId: string, callerUserId?: string): void;
522
- handleUserDisconnected(peerId: string): void;
567
+ /**
568
+ * @param replacement An editor socket that is still attached. Clark's RPCs
569
+ * are bound to one peer at a time, so when the departing peer was the bound
570
+ * one, handing the binding to a survivor keeps API execution working for
571
+ * whoever is still watching. Without it those calls queue for a peer that
572
+ * will never answer — the case a headless build leaves behind when its
573
+ * gateway socket closes over an open editor tab.
574
+ */
575
+ handleUserDisconnected(peerId: string, replacement?: {
576
+ peer: EditorClient;
577
+ peerId: string;
578
+ }): void;
523
579
  private clearPeerConnection;
524
580
  handleBuildSystemError(error: Error, phase?: BuildErrorPhase): void;
525
581
  handleRuntimeError(errorData: RuntimeErrorData): void;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ai-service/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ai-service/index.ts"],"names":[],"mappings":"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"}
@@ -4,9 +4,9 @@ import path from "node:path";
4
4
  import { context as otelContext, propagation, SpanKind, SpanStatusCode, trace, } from "@opentelemetry/api";
5
5
  import { hasToolCall, streamText as aiStreamText, } from "ai";
6
6
  import { z } from "zod";
7
- import { AiGenerationState, AiMode, resolveAttachmentFileName, } from "@superblocksteam/library-shared/types";
7
+ import { AiGenerationState, AiMode, MAX_OUTPUT_TOKENS, resolveAttachmentFileName, } from "@superblocksteam/library-shared/types";
8
8
  import { isToolPermissionClarification } from "@superblocksteam/library-shared/types/tool-permission-response";
9
- import { addTracingToMethods, classifyAttachmentDelivery, FactAccessType, FactCreatedSource, FactEntityScope, TracedEventEmitter, getAiQuotaPaywallReasonFromMessage, } from "@superblocksteam/shared";
9
+ import { addTracingToMethods, AiSystemTriggerType, classifyAttachmentDelivery, FactAccessType, FactCreatedSource, FactEntityScope, TracedEventEmitter, getAiQuotaPaywallReasonFromMessage, } from "@superblocksteam/shared";
10
10
  import { npmRegistryEmitter } from "@superblocksteam/telemetry";
11
11
  import { applyTestApiDenialSideEffects, buildMigrationTestApiDenialContinuationPrompt, } from "../migration/mark-api-testing-denied.js";
12
12
  import { buildTranslationPrompt } from "../migration/translation-prompt.js";
@@ -18,7 +18,7 @@ import { buildSecurityScanTools, isBackgroundTaskFrameworkEnabled, } from "./age
18
18
  import { hasPendingEscalations, flushPendingEscalations, } from "./agent/tools/apis/api-validation-orchestrator.js";
19
19
  import { safeSampleJson } from "./agent/tools/apis/sample-json.js";
20
20
  import { resolveSdkApiEntryPoint } from "./agent/tools/apis/sdk-registry.js";
21
- import { createDevDatabaseTaskTypes, wireDevDatabaseIntegrationPriming, } from "./agent/tools/databases/dev-database-tasks.js";
21
+ import { applyDevDatabaseMigrationsTaskMetadata, createDevDatabaseTaskTypes, wireDevDatabaseIntegrationPriming, } from "./agent/tools/databases/dev-database-tasks.js";
22
22
  import { debugCache } from "./agent/tools/debug-cache.js";
23
23
  import { securityScanResultSchema, } from "./agent/tools/report-security-findings.js";
24
24
  import { SessionEntityPermissionStore, } from "./agent/tools2/entity-permissions.js";
@@ -40,10 +40,13 @@ import { AppContextStore } from "./context/app-context.js";
40
40
  import { createDevDatabaseHttpTransport, DevDatabaseClient, } from "./dev-database-client.js";
41
41
  import { buildEnsureDevDatabaseFilesSynced, } from "./dev-database-file-sync.js";
42
42
  import { filterDisabledToolsForMigration } from "./filter-disabled-tools-for-migration.js";
43
+ import { helperSystemAiAttributes } from "./helper-system-ai-attributes.js";
43
44
  import { IntegrationStore } from "./integrations/store.js";
44
45
  import { JudgeService } from "./judge/judge-service.js";
45
46
  import { CsvJudgeStorage } from "./judge/storage/csv-storage.js";
46
47
  import { KnowledgeManager } from "./knowledge/knowledge-manager.js";
48
+ import { setGatewayTurnSource, setLiveEditEventForwarder, } from "./live-edit-events/bridge.js";
49
+ import { LiveEditEventForwarder, readForwarderConfigFromEnv, } from "./live-edit-events/forwarder.js";
47
50
  import { createChaosFetch } from "./llm/chaos-fetch.js";
48
51
  import { createClarkStreamTelemetrySink } from "./llm/clark-stream-telemetry-sink.js";
49
52
  import { LLMClient } from "./llm/client.js";
@@ -83,12 +86,13 @@ import { doPostProcessing } from "./state-machine/handlers/post-processing.js";
83
86
  import { doRuntimeReviewing } from "./state-machine/handlers/runtime-reviewing.js";
84
87
  import { classificationHelper } from "./state-machine/helpers/classification.js";
85
88
  import { getContextId } from "./state-machine/helpers/context-id.js";
89
+ import { bindHeadlessTurnLifecycle } from "./state-machine/helpers/headless-turn-lifecycle.js";
86
90
  import { sendUserGenerationStateChannel } from "./state-machine/helpers/peer.js";
87
91
  import { sendUserMessageChannel, clearPendingToolPermissionRequest, } from "./state-machine/helpers/peer.js";
88
92
  import { collectPolicyGateLlmUsage, finalizePolicyGateUsageMetrics, policyGateFailureFromStream, recordPolicyGateAttempt, } from "./state-machine/helpers/policy-gate-usage-metrics.js";
89
93
  import { finalizePromptBillingMetrics } from "./state-machine/helpers/prompt-billing-metrics.js";
90
94
  import { paywallStopAdvice } from "./state-machine/helpers/prompt-failure.js";
91
- import { promptFailureFromStreamAbort, promptFailurePaywall, promptFailurePlatform, promptFailureUserCanceled, recordBaseCommitResolutionFailed, recordPromptAttempt, recordPromptEntryRejection, recordPromptOutcome, recordAwaitingUserHandoffDismissed, resolvePromptMetricLabels, resolvePromptOutcomeDedupeKey, resolvePromptRequestDedupeKey, setPromptRequestMetricIdentity, } from "./state-machine/helpers/prompt-request-metrics.js";
95
+ import { CLARK_USAGE_ORIGIN, promptFailureFromStreamAbort, promptFailurePaywall, promptFailurePlatform, promptFailureUserCanceled, PROMPT_ATTEMPT_ENTRYPOINT, recordBaseCommitResolutionFailed, recordPromptAttempt, recordPromptEntryRejection, recordPromptOutcome, recordAwaitingUserHandoffDismissed, resolvePromptMetricLabels, resolvePromptOutcomeDedupeKey, resolvePromptRequestDedupeKey, setPromptRequestMetricIdentity, } from "./state-machine/helpers/prompt-request-metrics.js";
92
96
  import { catchBackgroundPeerDisconnect, StablePeer, } from "./state-machine/helpers/stable-peer.js";
93
97
  import { transitionFrom } from "./state-machine/helpers/transition.js";
94
98
  import { isTaskAccessibleTo, registerBackgroundTaskTypes, resyncActiveTaskStatusesToPeer, TaskStore, wireTaskStatusPushToPeer, } from "./tasks/index.js";
@@ -343,11 +347,11 @@ const mergePlanContexts = (existing, incoming) => {
343
347
  };
344
348
  };
345
349
  const APP_CLARK_GENERATION_METADATA = {
346
- origin: "app_clark_generation",
350
+ origin: CLARK_USAGE_ORIGIN.app_clark_generation,
347
351
  surface: "app",
348
352
  };
349
353
  const POLICY_GATE_USAGE_METADATA = {
350
- origin: "policy_gate",
354
+ origin: CLARK_USAGE_ORIGIN.policy_gate,
351
355
  surface: "policy_gate",
352
356
  };
353
357
  export class AiService extends TracedEventEmitter {
@@ -452,6 +456,35 @@ export class AiService extends TracedEventEmitter {
452
456
  getNpmRegistryClient() {
453
457
  return this.npmRegistryClient;
454
458
  }
459
+ /**
460
+ * Opens the relay that lets a Gateway-driven turn see what Clark is doing.
461
+ *
462
+ * The sandbox holds a socket to the editor, but a Gateway turn has no editor
463
+ * on the far end, so its caller would otherwise learn nothing until the turn
464
+ * ended. Where the deployment does not run this channel the environment is
465
+ * simply absent, and this leaves the relay closed rather than failing to
466
+ * start.
467
+ */
468
+ startLiveEditEventForwarding() {
469
+ const forwarderConfig = readForwarderConfigFromEnv();
470
+ if (!forwarderConfig) {
471
+ return;
472
+ }
473
+ setLiveEditEventForwarder(new LiveEditEventForwarder({
474
+ config: {
475
+ ...forwarderConfig,
476
+ // The edit-scoped JWT rotates mid-session via the editor's push to
477
+ // `/_sb_update_token`, which only the token manager sees; the
478
+ // environment variable is written once at activation and never
479
+ // again. Prefer the live value and keep the environment as the
480
+ // cold-start fallback.
481
+ token: () => this.tokenManagerJwt ?? forwarderConfig.token(),
482
+ },
483
+ }));
484
+ // Read live rather than copied: StablePeer releases a turn from several
485
+ // paths, and a copy would attribute later work to a finished turn.
486
+ setGatewayTurnSource(() => this.stablePeer.turnId);
487
+ }
455
488
  async remediateDeclaredDependencies() {
456
489
  await this.appShell.remediateDeclaredDependencies();
457
490
  }
@@ -572,6 +605,7 @@ export class AiService extends TracedEventEmitter {
572
605
  applicationId: config.applicationId,
573
606
  organizationId: config.organizationId,
574
607
  });
608
+ this.startLiveEditEventForwarding();
575
609
  // Store the wrapped logger so getLogger() can return it
576
610
  // The wrapped logger forwards logs to the browser console when Clark logs are enabled
577
611
  this._logger = getLogger();
@@ -928,6 +962,12 @@ export class AiService extends TracedEventEmitter {
928
962
  "handleJudgeEvaluation",
929
963
  ];
930
964
  addTracingToMethods(this, handlerMethods, config.tracer);
965
+ // A headless turn belongs to the generation it started, not to the socket
966
+ // that asked for it: the gateway keeps that socket a while longer, and
967
+ // whatever the user does next belongs to the browser again. The socket
968
+ // closing is still a backstop for a turn that never reaches a terminal
969
+ // state.
970
+ bindHeadlessTurnLifecycle(this, this.stablePeer, () => this.clark.context.promptId, () => this.clark.context.promptOutcomeDedupeKey);
931
971
  // TODO apply isocket error handling
932
972
  }
933
973
  /**
@@ -1719,7 +1759,7 @@ export class AiService extends TracedEventEmitter {
1719
1759
  applicationId: this.config.applicationId,
1720
1760
  branchName,
1721
1761
  migrationSource: "superblocks_2_0",
1722
- origin: "app_migration",
1762
+ origin: CLARK_USAGE_ORIGIN.app_migration,
1723
1763
  pendingSeedApiCount,
1724
1764
  retryMode,
1725
1765
  surface: "app",
@@ -1729,6 +1769,7 @@ export class AiService extends TracedEventEmitter {
1729
1769
  this.clark.updateContext((context) => ({
1730
1770
  ...context,
1731
1771
  promptId,
1772
+ promptOutcomeDedupeKey: promptId,
1732
1773
  baseCommitId,
1733
1774
  usageMetadata: migrationUsageMetadata,
1734
1775
  llmConfig: migrationLlmConfig,
@@ -2146,6 +2187,11 @@ export class AiService extends TracedEventEmitter {
2146
2187
  outcomeDedupeKey: resolvePromptRequestDedupeKey(request),
2147
2188
  coreModel: request.llmConfig?.coreModel,
2148
2189
  });
2190
+ const generateStreakEligible = resolvePromptMetricLabels({
2191
+ usageMetadata: request.importSource
2192
+ ? { origin: CLARK_USAGE_ORIGIN.app_migration }
2193
+ : undefined,
2194
+ }).streakEligible;
2149
2195
  // The id is now recorded. If anything below throws before generation is
2150
2196
  // actually kicked off (the `transitionTo` USER_SENT_PROMPT), evict it so a
2151
2197
  // legitimate reconnect re-send of this same prompt is not swallowed as a
@@ -2188,7 +2234,7 @@ export class AiService extends TracedEventEmitter {
2188
2234
  // this object replaces.
2189
2235
  usageMetadata: request.importSource
2190
2236
  ? {
2191
- origin: "app_migration",
2237
+ origin: CLARK_USAGE_ORIGIN.app_migration,
2192
2238
  source: request.importSource,
2193
2239
  surface: "app",
2194
2240
  }
@@ -2229,6 +2275,8 @@ export class AiService extends TracedEventEmitter {
2229
2275
  outcome: "failure",
2230
2276
  failure: promptFailurePlatform("handler_error"),
2231
2277
  coreModel: request.llmConfig?.coreModel,
2278
+ promptId,
2279
+ streakEligible: generateStreakEligible,
2232
2280
  });
2233
2281
  this.getLogger().error("[ai-service] Failed to start generation", {
2234
2282
  error,
@@ -2245,6 +2293,8 @@ export class AiService extends TracedEventEmitter {
2245
2293
  outcome: "failure",
2246
2294
  failure: promptFailurePlatform("handler_error"),
2247
2295
  coreModel: request.llmConfig?.coreModel,
2296
+ promptId: this.clark.context.promptId,
2297
+ streakEligible: generateStreakEligible,
2248
2298
  });
2249
2299
  throw error;
2250
2300
  }
@@ -2332,12 +2382,10 @@ export class AiService extends TracedEventEmitter {
2332
2382
  : undefined;
2333
2383
  const { providerOptions, headers } = processLLMConfig(llmConfig, 5000, `AI Summarize API Usage (${request.apiName})`);
2334
2384
  const llmProviderSettings = this.getLLMProviderSettings(llmConfig);
2335
- const promptId = randomUUID();
2336
- getLogger().info("[ai-service] Generated prompt_id for summarize api usage", { promptId, applicationId: this.config.applicationId });
2337
- const llmProvider = createLLMProvider(llmProviderSettings, () => this.requireProvidedInferenceJwt(request.jwt, "live-edit request"), llmConfig, () => ({
2338
- prompt_id: promptId,
2339
- application_id: this.config.applicationId,
2340
- session_id: this.sessionId,
2385
+ const llmProvider = createLLMProvider(llmProviderSettings, () => this.requireProvidedInferenceJwt(request.jwt, "live-edit request"), llmConfig, () => helperSystemAiAttributes({
2386
+ applicationId: this.config.applicationId,
2387
+ sessionId: this.sessionId,
2388
+ triggerType: AiSystemTriggerType.API_USAGE_SUMMARY,
2341
2389
  }));
2342
2390
  const { model, providerConfig } = llmProvider.modelForTask("explain");
2343
2391
  await traceLLM("handleAiSummarizeApiUsage", model.modelId, model.provider, async () => {
@@ -2441,15 +2489,10 @@ export class AiService extends TracedEventEmitter {
2441
2489
  : undefined;
2442
2490
  const { providerOptions, headers } = processLLMConfig(llmConfig, 2000, `AI Summarize Error`);
2443
2491
  const llmProviderSettings = this.getLLMProviderSettings(llmConfig);
2444
- const promptId = randomUUID();
2445
- getLogger().info("[ai-service] Generated prompt_id for summarize error", {
2446
- promptId,
2492
+ const llmProvider = createLLMProvider(llmProviderSettings, () => this.requireProvidedInferenceJwt(request.jwt, "live-edit request"), llmConfig, () => helperSystemAiAttributes({
2447
2493
  applicationId: this.config.applicationId,
2448
- });
2449
- const llmProvider = createLLMProvider(llmProviderSettings, () => this.requireProvidedInferenceJwt(request.jwt, "live-edit request"), llmConfig, () => ({
2450
- prompt_id: promptId,
2451
- application_id: this.config.applicationId,
2452
- session_id: this.sessionId,
2494
+ sessionId: this.sessionId,
2495
+ triggerType: AiSystemTriggerType.ERROR_SUMMARY,
2453
2496
  }));
2454
2497
  const { model, providerConfig } = llmProvider.modelForTask("explain");
2455
2498
  await traceLLM("handleAiSummarizeError", model.modelId, model.provider, async () => {
@@ -2530,16 +2573,10 @@ export class AiService extends TracedEventEmitter {
2530
2573
  }
2531
2574
  : undefined;
2532
2575
  const llmProviderSettings = this.getLLMProviderSettings(llmConfig);
2533
- // Generate prompt_id for this label attachment request (user-initiated action)
2534
- const promptId = randomUUID();
2535
- getLogger().info("[ai-service] Generated prompt_id for label attachment", {
2536
- promptId,
2576
+ const llmProvider = createLLMProvider(llmProviderSettings, () => this.requireProvidedInferenceJwt(request.jwt, "live-edit request"), llmConfig, () => helperSystemAiAttributes({
2537
2577
  applicationId: this.config.applicationId,
2538
- });
2539
- const llmProvider = createLLMProvider(llmProviderSettings, () => this.requireProvidedInferenceJwt(request.jwt, "live-edit request"), llmConfig, () => ({
2540
- prompt_id: promptId,
2541
- application_id: this.config.applicationId,
2542
- session_id: this.sessionId,
2578
+ sessionId: this.sessionId,
2579
+ triggerType: AiSystemTriggerType.ATTACHMENT_LABEL,
2543
2580
  }));
2544
2581
  const { model, providerConfig } = llmProvider.modelForTask("fast");
2545
2582
  const LabelAttachmentSchema = z.object({
@@ -2737,6 +2774,7 @@ export class AiService extends TracedEventEmitter {
2737
2774
  dedupeKey: resolvePromptOutcomeDedupeKey(this.clark.context),
2738
2775
  outcome: "failure",
2739
2776
  failure: promptFailureUserCanceled(),
2777
+ promptId: this.clark.context.promptId,
2740
2778
  ...labels,
2741
2779
  });
2742
2780
  }
@@ -3175,7 +3213,8 @@ export class AiService extends TracedEventEmitter {
3175
3213
  await applyTestApiDenialSideEffects({
3176
3214
  apiName,
3177
3215
  appRootDirPath: this.appRootDirPath,
3178
- isAppMigration: this.clark.context.usageMetadata?.origin === "app_migration",
3216
+ isAppMigration: this.clark.context.usageMetadata?.origin ===
3217
+ CLARK_USAGE_ORIGIN.app_migration,
3179
3218
  apiTestingState: this.clark.context.apiTestingState,
3180
3219
  logger,
3181
3220
  });
@@ -3248,6 +3287,21 @@ export class AiService extends TracedEventEmitter {
3248
3287
  trace
3249
3288
  .getActiveSpan()
3250
3289
  ?.setAttribute("clark.tool_permission.clarification", isClarification);
3290
+ const promptOutcomeDedupeKey = randomUUID();
3291
+ this.clark.updateContext((context) => ({
3292
+ ...context,
3293
+ promptOutcomeDedupeKey,
3294
+ }));
3295
+ // The continuation is a genuine new turn on a fresh key (the handoff
3296
+ // already recorded an outcome on the original). Pair it with an attempt
3297
+ // so attempts_total and outcomes_total stay aligned (ENG-5477 review).
3298
+ // Tag the entrypoint so dashboards can separate ~server-driven volume
3299
+ // from user aiGenerate (ENG-5477 scout review).
3300
+ recordPromptAttempt({
3301
+ coreModel: this.clark.context.llmConfig?.coreModel,
3302
+ entrypoint: PROMPT_ATTEMPT_ENTRYPOINT.tool_permission_continuation,
3303
+ outcomeDedupeKey: promptOutcomeDedupeKey,
3304
+ });
3251
3305
  const continueRequest = {
3252
3306
  prompt: request.approved
3253
3307
  ? ``
@@ -3262,6 +3316,7 @@ export class AiService extends TracedEventEmitter {
3262
3316
  llmConfig: this.clark.context.llmConfig,
3263
3317
  mode: this.clark.context.currentMode,
3264
3318
  browserContext: this.clark.context.browserContext,
3319
+ requestId: promptOutcomeDedupeKey,
3265
3320
  responseMetadata: {
3266
3321
  type: "tool_permission_response",
3267
3322
  responseToMessageId: request.messageId,
@@ -3281,11 +3336,33 @@ export class AiService extends TracedEventEmitter {
3281
3336
  * For testApi, provides specific guidance to continue testing other APIs.
3282
3337
  */
3283
3338
  buildDenialContinuationPrompt(toolName, rawInput) {
3339
+ // A declined deletion must not read as "find another way". The generic
3340
+ // fallback below says "continue using alternative approaches", which is
3341
+ // exactly the bypass this tool's own description forbids (raw SQL, or
3342
+ // telling the user to drop objects by hand). It also has to correct the
3343
+ // likely misunderstanding: no is "not now", because the migration file
3344
+ // Clark wrote is still in the app.
3345
+ if (toolName === applyDevDatabaseMigrationsTaskMetadata.name) {
3346
+ return ("The user said no. Nothing was applied and nothing was deleted. " +
3347
+ "Do NOT run that SQL another way: no raw SQL, and do not ask them to " +
3348
+ "drop objects by hand. Tell them nothing was deleted, that the " +
3349
+ "migration file you wrote is still in the app so the next apply will " +
3350
+ "ask again, and offer to delete or rewrite it. " +
3351
+ // The card invites the reader to say no in order to ask a question
3352
+ // ("Ask what else this deletes before you approve"), so refusing to
3353
+ // re-request would make that a dead end. The rule is not "never ask
3354
+ // again", it is "do not ask again for the same thing unprompted".
3355
+ "If they are asking rather than refusing, answer their question; you " +
3356
+ "may call this tool again once they say to go ahead. Otherwise carry " +
3357
+ "on with work that does not need this migration, and do not re-raise " +
3358
+ "the same apply on your own.");
3359
+ }
3284
3360
  if (toolName === "testApi") {
3285
3361
  const deniedApiName = rawInput?.apiName;
3286
3362
  const apiName = deniedApiName ?? "unknown";
3287
3363
  const apiTestingState = this.clark.context.apiTestingState;
3288
- if (this.clark.context.usageMetadata?.origin === "app_migration") {
3364
+ if (this.clark.context.usageMetadata?.origin ===
3365
+ CLARK_USAGE_ORIGIN.app_migration) {
3289
3366
  const remainingUntested = apiTestingState?.untested
3290
3367
  ? Array.from(apiTestingState.untested)
3291
3368
  : [];
@@ -3311,6 +3388,60 @@ export class AiService extends TracedEventEmitter {
3311
3388
  lastGenerationState: this.clark.context.lastGenerationState,
3312
3389
  });
3313
3390
  }
3391
+ /**
3392
+ * A gateway peer asked for a turn. Clark's pushes and tool callbacks for it
3393
+ * are routed to that peer for as long as it is attached, without giving it
3394
+ * the editor binding: a browser tab opening or closing mid-turn changes
3395
+ * nothing about where the turn reports.
3396
+ *
3397
+ * `turnId` is the correlator the caller sent with the prompt, and is what
3398
+ * lets that same caller reacquire this turn on a replacement socket.
3399
+ * Returned so the caller can be told which turn it now owns; a turn started
3400
+ * without one is reachable by this socket alone.
3401
+ */
3402
+ beginHeadlessTurn(peer, peerId, turnId) {
3403
+ this.getLogger().info(`[ai-service] headless turn started by gateway peer ${peerId}`);
3404
+ this.stablePeer.beginTurn({ peer, peerId, turnId });
3405
+ return turnId;
3406
+ }
3407
+ /**
3408
+ * A gateway peer offered the correlator of a turn in flight, which is what a
3409
+ * reattach looks like: the peer that started the turn lost its socket, so the
3410
+ * turn moves onto the replacement.
3411
+ *
3412
+ * Runs on every authorized gateway RPC, so the two uninteresting outcomes —
3413
+ * the caller already owns the turn, or is talking about a turn that is not
3414
+ * this one — are silent. Only an actual handover is worth a line.
3415
+ */
3416
+ claimHeadlessTurn(peer, peerId, turnId) {
3417
+ if (this.stablePeer.claimTurn({ peer, peerId, turnId }) !== "claimed") {
3418
+ return;
3419
+ }
3420
+ this.getLogger().info(`[ai-service] headless turn moved to reattached gateway peer ${peerId}`);
3421
+ }
3422
+ /**
3423
+ * The prompt a turn was bound for never started, so there is no generation
3424
+ * coming that could settle it. Scoped to the exact turn: a reattach or a
3425
+ * later turn may already own routing.
3426
+ */
3427
+ abandonHeadlessTurn(peerId, turnId) {
3428
+ if (!this.stablePeer.abandonTurn({ peerId, turnId })) {
3429
+ return;
3430
+ }
3431
+ this.getLogger().warn(`[ai-service] headless turn for gateway peer ${peerId} never started; routing returns to the editor binding`);
3432
+ }
3433
+ /**
3434
+ * The gateway peer went away. Only the peer still holding the turn can end
3435
+ * it, so a socket that a reattach already replaced cannot strip routing from
3436
+ * its successor.
3437
+ */
3438
+ endHeadlessTurn(peerId) {
3439
+ if (this.stablePeer.turnPeerId !== peerId) {
3440
+ return;
3441
+ }
3442
+ this.getLogger().info(`[ai-service] headless turn peer ${peerId} detached; falling back to the editor binding`);
3443
+ this.stablePeer.releaseTurnPeer(peerId);
3444
+ }
3314
3445
  handleUserConnected(peer, peerId) {
3315
3446
  const existingPeerId = this.stablePeer.peerId;
3316
3447
  this.getLogger().info(`[ai-service] handleUserConnected: peerId=${peerId}`);
@@ -3465,7 +3596,15 @@ export class AiService extends TracedEventEmitter {
3465
3596
  }, callerUserId);
3466
3597
  }
3467
3598
  }
3468
- handleUserDisconnected(peerId) {
3599
+ /**
3600
+ * @param replacement An editor socket that is still attached. Clark's RPCs
3601
+ * are bound to one peer at a time, so when the departing peer was the bound
3602
+ * one, handing the binding to a survivor keeps API execution working for
3603
+ * whoever is still watching. Without it those calls queue for a peer that
3604
+ * will never answer — the case a headless build leaves behind when its
3605
+ * gateway socket closes over an open editor tab.
3606
+ */
3607
+ handleUserDisconnected(peerId, replacement) {
3469
3608
  const currentPeerId = this.stablePeer.peerId;
3470
3609
  this.getLogger().info(`[ai-service] handleUserDisconnected: peerId=${peerId}`);
3471
3610
  if (!currentPeerId) {
@@ -3494,6 +3633,13 @@ export class AiService extends TracedEventEmitter {
3494
3633
  if (contextId) {
3495
3634
  this.contextManagerV2.clearContext(contextId);
3496
3635
  }
3636
+ if (replacement && replacement.peerId !== peerId) {
3637
+ this.getLogger().info(`[ai-service] Rebinding peer ${peerId} to surviving editor ${replacement.peerId}`);
3638
+ // Same door a fresh tab comes through, so the survivor gets the state
3639
+ // resync and re-auth a newly bound peer is owed.
3640
+ this.handleUserConnected(replacement.peer, replacement.peerId);
3641
+ return;
3642
+ }
3497
3643
  this.clearPeerConnection();
3498
3644
  }
3499
3645
  clearPeerConnection() {
@@ -3871,7 +4017,13 @@ export class AiService extends TracedEventEmitter {
3871
4017
  role: "user",
3872
4018
  },
3873
4019
  ],
4020
+ // Same output cap Clark uses (see processLLMConfig). Without it the
4021
+ // provider default applies, which is model-dependent.
4022
+ maxOutputTokens: MAX_OUTPUT_TOKENS,
3874
4023
  model,
4024
+ // The unified router resolves the model from the request, falling back
4025
+ // to Clark's core-model flag when absent.
4026
+ ...(coreModel ? { providerOptions: { unified: { coreModel } } } : {}),
3875
4027
  tools,
3876
4028
  stopWhen: hasToolCall("reportReviewRun"),
3877
4029
  timeout: { totalMs: POLICY_GATE_MAX_TOTAL_TIME_MS },