@superblocksteam/vite-plugin-file-sync 2.0.167-next.0 → 2.0.168-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.
Files changed (251) hide show
  1. package/dist/ai-service/agent/middleware.d.ts.map +1 -1
  2. package/dist/ai-service/agent/middleware.js +23 -0
  3. package/dist/ai-service/agent/middleware.js.map +1 -1
  4. package/dist/ai-service/agent/tool-message-utils.d.ts +1 -1
  5. package/dist/ai-service/agent/tool-message-utils.d.ts.map +1 -1
  6. package/dist/ai-service/agent/tool-message-utils.js.map +1 -1
  7. package/dist/ai-service/agent/tool-permission-delivery.d.ts +5 -4
  8. package/dist/ai-service/agent/tool-permission-delivery.d.ts.map +1 -1
  9. package/dist/ai-service/agent/tool-permission-delivery.js +22 -28
  10. package/dist/ai-service/agent/tool-permission-delivery.js.map +1 -1
  11. package/dist/ai-service/agent/tool-permission-outcome-metrics.d.ts +9 -0
  12. package/dist/ai-service/agent/tool-permission-outcome-metrics.d.ts.map +1 -0
  13. package/dist/ai-service/agent/tool-permission-outcome-metrics.js +23 -0
  14. package/dist/ai-service/agent/tool-permission-outcome-metrics.js.map +1 -0
  15. package/dist/ai-service/agent/tools/build-capture-screenshot.d.ts +44 -0
  16. package/dist/ai-service/agent/tools/build-capture-screenshot.d.ts.map +1 -1
  17. package/dist/ai-service/agent/tools/build-capture-screenshot.js +198 -18
  18. package/dist/ai-service/agent/tools/build-capture-screenshot.js.map +1 -1
  19. package/dist/ai-service/agent/tools/build-manage-checklist.d.ts +2 -0
  20. package/dist/ai-service/agent/tools/build-manage-checklist.d.ts.map +1 -1
  21. package/dist/ai-service/agent/tools/build-manage-checklist.js.map +1 -1
  22. package/dist/ai-service/agent/tools/build-reload-file.d.ts.map +1 -1
  23. package/dist/ai-service/agent/tools/build-reload-file.js +32 -19
  24. package/dist/ai-service/agent/tools/build-reload-file.js.map +1 -1
  25. package/dist/ai-service/agent/tools/get-security-findings.d.ts +45 -0
  26. package/dist/ai-service/agent/tools/get-security-findings.d.ts.map +1 -0
  27. package/dist/ai-service/agent/tools/get-security-findings.js +74 -0
  28. package/dist/ai-service/agent/tools/get-security-findings.js.map +1 -0
  29. package/dist/ai-service/agent/tools/integrations/integration-setup.d.ts +2 -2
  30. package/dist/ai-service/agent/tools/integrations/integration-setup.d.ts.map +1 -1
  31. package/dist/ai-service/agent/tools/integrations/integration-setup.js +24 -2
  32. package/dist/ai-service/agent/tools/integrations/integration-setup.js.map +1 -1
  33. package/dist/ai-service/agent/tools/report-security-findings.d.ts +20 -20
  34. package/dist/ai-service/agent/tools.d.ts.map +1 -1
  35. package/dist/ai-service/agent/tools.js +13 -2
  36. package/dist/ai-service/agent/tools.js.map +1 -1
  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 +14 -0
  39. package/dist/ai-service/agent/tools2/tools/exit-plan-mode.js.map +1 -1
  40. package/dist/ai-service/agent/tools2/tools/git.d.ts +2 -1
  41. package/dist/ai-service/agent/tools2/tools/git.d.ts.map +1 -1
  42. package/dist/ai-service/agent/tools2/tools/git.js +1 -1
  43. package/dist/ai-service/agent/tools2/tools/git.js.map +1 -1
  44. package/dist/ai-service/agent/utils.d.ts.map +1 -1
  45. package/dist/ai-service/agent/utils.js +5 -0
  46. package/dist/ai-service/agent/utils.js.map +1 -1
  47. package/dist/ai-service/app-interface/app-package-manager.d.ts +43 -0
  48. package/dist/ai-service/app-interface/app-package-manager.d.ts.map +1 -0
  49. package/dist/ai-service/app-interface/app-package-manager.js +82 -0
  50. package/dist/ai-service/app-interface/app-package-manager.js.map +1 -0
  51. package/dist/ai-service/app-interface/constants.d.ts +2 -2
  52. package/dist/ai-service/app-interface/constants.d.ts.map +1 -1
  53. package/dist/ai-service/app-interface/constants.js +5 -0
  54. package/dist/ai-service/app-interface/constants.js.map +1 -1
  55. package/dist/ai-service/app-interface/file-system-interface.d.ts.map +1 -1
  56. package/dist/ai-service/app-interface/file-system-interface.js +0 -3
  57. package/dist/ai-service/app-interface/file-system-interface.js.map +1 -1
  58. package/dist/ai-service/app-interface/npm-error-parser.d.ts +1 -1
  59. package/dist/ai-service/app-interface/npm-error-parser.d.ts.map +1 -1
  60. package/dist/ai-service/app-interface/npm-error-parser.js +42 -8
  61. package/dist/ai-service/app-interface/npm-error-parser.js.map +1 -1
  62. package/dist/ai-service/app-interface/npm-registry.d.ts +30 -0
  63. package/dist/ai-service/app-interface/npm-registry.d.ts.map +1 -1
  64. package/dist/ai-service/app-interface/npm-registry.js +108 -1
  65. package/dist/ai-service/app-interface/npm-registry.js.map +1 -1
  66. package/dist/ai-service/app-interface/pnpm-lockfile.d.ts +28 -0
  67. package/dist/ai-service/app-interface/pnpm-lockfile.d.ts.map +1 -0
  68. package/dist/ai-service/app-interface/pnpm-lockfile.js +89 -0
  69. package/dist/ai-service/app-interface/pnpm-lockfile.js.map +1 -0
  70. package/dist/ai-service/app-interface/shell.d.ts +43 -7
  71. package/dist/ai-service/app-interface/shell.d.ts.map +1 -1
  72. package/dist/ai-service/app-interface/shell.js +252 -119
  73. package/dist/ai-service/app-interface/shell.js.map +1 -1
  74. package/dist/ai-service/app-interface/vulnerability-gate.d.ts +5 -0
  75. package/dist/ai-service/app-interface/vulnerability-gate.d.ts.map +1 -1
  76. package/dist/ai-service/app-interface/vulnerability-gate.js +3 -0
  77. package/dist/ai-service/app-interface/vulnerability-gate.js.map +1 -1
  78. package/dist/ai-service/app-skills/helpers.d.ts.map +1 -1
  79. package/dist/ai-service/app-skills/helpers.js +9 -9
  80. package/dist/ai-service/app-skills/helpers.js.map +1 -1
  81. package/dist/ai-service/chat/chat-session-store.d.ts +4 -1
  82. package/dist/ai-service/chat/chat-session-store.d.ts.map +1 -1
  83. package/dist/ai-service/chat/chat-session-store.js +4 -0
  84. package/dist/ai-service/chat/chat-session-store.js.map +1 -1
  85. package/dist/ai-service/checklist/persisted-checklist-store.d.ts +66 -1
  86. package/dist/ai-service/checklist/persisted-checklist-store.d.ts.map +1 -1
  87. package/dist/ai-service/checklist/persisted-checklist-store.js +274 -4
  88. package/dist/ai-service/checklist/persisted-checklist-store.js.map +1 -1
  89. package/dist/ai-service/checklist/policy-remediation.d.ts +8 -0
  90. package/dist/ai-service/checklist/policy-remediation.d.ts.map +1 -0
  91. package/dist/ai-service/checklist/policy-remediation.js +46 -0
  92. package/dist/ai-service/checklist/policy-remediation.js.map +1 -0
  93. package/dist/ai-service/checklist/remediation-findings-client.d.ts +31 -0
  94. package/dist/ai-service/checklist/remediation-findings-client.d.ts.map +1 -0
  95. package/dist/ai-service/checklist/remediation-findings-client.js +117 -0
  96. package/dist/ai-service/checklist/remediation-findings-client.js.map +1 -0
  97. package/dist/ai-service/context-download.d.ts.map +1 -1
  98. package/dist/ai-service/context-download.js +76 -37
  99. package/dist/ai-service/context-download.js.map +1 -1
  100. package/dist/ai-service/dev-database-file-sync.d.ts +2 -1
  101. package/dist/ai-service/dev-database-file-sync.d.ts.map +1 -1
  102. package/dist/ai-service/dev-database-file-sync.js.map +1 -1
  103. package/dist/ai-service/index.d.ts +59 -9
  104. package/dist/ai-service/index.d.ts.map +1 -1
  105. package/dist/ai-service/index.js +1191 -479
  106. package/dist/ai-service/index.js.map +1 -1
  107. package/dist/ai-service/integrations/store.d.ts.map +1 -1
  108. package/dist/ai-service/integrations/store.js +11 -2
  109. package/dist/ai-service/integrations/store.js.map +1 -1
  110. package/dist/ai-service/llm/context-v2/adapter.d.ts +3 -0
  111. package/dist/ai-service/llm/context-v2/adapter.d.ts.map +1 -1
  112. package/dist/ai-service/llm/context-v2/adapter.js +6 -0
  113. package/dist/ai-service/llm/context-v2/adapter.js.map +1 -1
  114. package/dist/ai-service/llm/context-v2/context.d.ts +22 -1
  115. package/dist/ai-service/llm/context-v2/context.d.ts.map +1 -1
  116. package/dist/ai-service/llm/context-v2/context.js +185 -30
  117. package/dist/ai-service/llm/context-v2/context.js.map +1 -1
  118. package/dist/ai-service/llm/context-v2/conversation-context.d.ts +7 -0
  119. package/dist/ai-service/llm/context-v2/conversation-context.d.ts.map +1 -1
  120. package/dist/ai-service/llm/context-v2/manager.d.ts +11 -10
  121. package/dist/ai-service/llm/context-v2/manager.d.ts.map +1 -1
  122. package/dist/ai-service/llm/context-v2/manager.js +128 -85
  123. package/dist/ai-service/llm/context-v2/manager.js.map +1 -1
  124. package/dist/ai-service/llm/context-v2/storage/event-store.d.ts +73 -1
  125. package/dist/ai-service/llm/context-v2/storage/event-store.d.ts.map +1 -1
  126. package/dist/ai-service/llm/context-v2/storage/event-types.d.ts +152 -24
  127. package/dist/ai-service/llm/context-v2/storage/event-types.d.ts.map +1 -1
  128. package/dist/ai-service/llm/context-v2/storage/event-types.js +141 -0
  129. package/dist/ai-service/llm/context-v2/storage/event-types.js.map +1 -1
  130. package/dist/ai-service/llm/context-v2/storage/jsonl-event-store.d.ts +20 -2
  131. package/dist/ai-service/llm/context-v2/storage/jsonl-event-store.d.ts.map +1 -1
  132. package/dist/ai-service/llm/context-v2/storage/jsonl-event-store.js +111 -49
  133. package/dist/ai-service/llm/context-v2/storage/jsonl-event-store.js.map +1 -1
  134. package/dist/ai-service/llm/context-v2/storage/migration.d.ts.map +1 -1
  135. package/dist/ai-service/llm/context-v2/storage/migration.js +31 -4
  136. package/dist/ai-service/llm/context-v2/storage/migration.js.map +1 -1
  137. package/dist/ai-service/llm/context-v2/token-tracker.d.ts +34 -0
  138. package/dist/ai-service/llm/context-v2/token-tracker.d.ts.map +1 -1
  139. package/dist/ai-service/llm/context-v2/token-tracker.js +164 -0
  140. package/dist/ai-service/llm/context-v2/token-tracker.js.map +1 -1
  141. package/dist/ai-service/llm/context-v2/types.d.ts +5 -2
  142. package/dist/ai-service/llm/context-v2/types.d.ts.map +1 -1
  143. package/dist/ai-service/llm/context-v2/types.js +1 -1
  144. package/dist/ai-service/llm/context-v2/types.js.map +1 -1
  145. package/dist/ai-service/llm/stream/config.d.ts +7 -0
  146. package/dist/ai-service/llm/stream/config.d.ts.map +1 -1
  147. package/dist/ai-service/llm/stream/config.js +20 -2
  148. package/dist/ai-service/llm/stream/config.js.map +1 -1
  149. package/dist/ai-service/llm/stream/orchestrator.d.ts.map +1 -1
  150. package/dist/ai-service/llm/stream/orchestrator.js +30 -14
  151. package/dist/ai-service/llm/stream/orchestrator.js.map +1 -1
  152. package/dist/ai-service/llm/stream/session.d.ts +1 -1
  153. package/dist/ai-service/llm/stream/session.d.ts.map +1 -1
  154. package/dist/ai-service/llm/stream/session.js +1 -1
  155. package/dist/ai-service/llm/stream/session.js.map +1 -1
  156. package/dist/ai-service/security/secret-scanner-service.d.ts.map +1 -1
  157. package/dist/ai-service/security/secret-scanner-service.js +12 -2
  158. package/dist/ai-service/security/secret-scanner-service.js.map +1 -1
  159. package/dist/ai-service/security/secret-scanner.d.ts +1 -1
  160. package/dist/ai-service/security/secret-scanner.d.ts.map +1 -1
  161. package/dist/ai-service/security/secret-scanner.js +4 -1
  162. package/dist/ai-service/security/secret-scanner.js.map +1 -1
  163. package/dist/ai-service/security/vulnerability-triage.d.ts +2 -2
  164. package/dist/ai-service/state-machine/clark-fsm.d.ts +17 -1
  165. package/dist/ai-service/state-machine/clark-fsm.d.ts.map +1 -1
  166. package/dist/ai-service/state-machine/clark-fsm.js +85 -8
  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 +97 -47
  170. package/dist/ai-service/state-machine/handlers/agent-planning.js.map +1 -1
  171. package/dist/ai-service/state-machine/handlers/awaiting-user.d.ts.map +1 -1
  172. package/dist/ai-service/state-machine/handlers/awaiting-user.js +68 -50
  173. package/dist/ai-service/state-machine/handlers/awaiting-user.js.map +1 -1
  174. package/dist/ai-service/state-machine/handlers/llm-generating.d.ts.map +1 -1
  175. package/dist/ai-service/state-machine/handlers/llm-generating.js +91 -73
  176. package/dist/ai-service/state-machine/handlers/llm-generating.js.map +1 -1
  177. package/dist/ai-service/state-machine/helpers/prompt-failure.d.ts +1 -1
  178. package/dist/ai-service/state-machine/helpers/prompt-failure.d.ts.map +1 -1
  179. package/dist/ai-service/state-machine/helpers/prompt-failure.js +1 -0
  180. package/dist/ai-service/state-machine/helpers/prompt-failure.js.map +1 -1
  181. package/dist/ai-service/state-machine/helpers/prompt-request-metrics.d.ts +2 -1
  182. package/dist/ai-service/state-machine/helpers/prompt-request-metrics.d.ts.map +1 -1
  183. package/dist/ai-service/state-machine/helpers/prompt-request-metrics.js +1 -0
  184. package/dist/ai-service/state-machine/helpers/prompt-request-metrics.js.map +1 -1
  185. package/dist/ai-service/state-machine/helpers/user-response-message.d.ts +4 -0
  186. package/dist/ai-service/state-machine/helpers/user-response-message.d.ts.map +1 -0
  187. package/dist/ai-service/state-machine/helpers/user-response-message.js +37 -0
  188. package/dist/ai-service/state-machine/helpers/user-response-message.js.map +1 -0
  189. package/dist/ai-service/template-renderer.d.ts.map +1 -1
  190. package/dist/ai-service/template-renderer.js +22 -9
  191. package/dist/ai-service/template-renderer.js.map +1 -1
  192. package/dist/ai-service/types.d.ts +2 -1
  193. package/dist/ai-service/types.d.ts.map +1 -1
  194. package/dist/ai-service/types.js.map +1 -1
  195. package/dist/components-manager.d.ts +9 -2
  196. package/dist/components-manager.d.ts.map +1 -1
  197. package/dist/components-manager.js +0 -4
  198. package/dist/components-manager.js.map +1 -1
  199. package/dist/file-sync-vite-plugin.d.ts.map +1 -1
  200. package/dist/file-sync-vite-plugin.js +2 -1
  201. package/dist/file-sync-vite-plugin.js.map +1 -1
  202. package/dist/file-system-helpers.d.ts +7 -0
  203. package/dist/file-system-helpers.d.ts.map +1 -1
  204. package/dist/file-system-helpers.js +9 -1
  205. package/dist/file-system-helpers.js.map +1 -1
  206. package/dist/file-system-manager.d.ts +12 -1
  207. package/dist/file-system-manager.d.ts.map +1 -1
  208. package/dist/file-system-manager.js +37 -22
  209. package/dist/file-system-manager.js.map +1 -1
  210. package/dist/index.d.ts +7 -0
  211. package/dist/index.d.ts.map +1 -1
  212. package/dist/index.js +7 -0
  213. package/dist/index.js.map +1 -1
  214. package/dist/lock-service/index.d.ts +20 -0
  215. package/dist/lock-service/index.d.ts.map +1 -1
  216. package/dist/lock-service/index.js +53 -5
  217. package/dist/lock-service/index.js.map +1 -1
  218. package/dist/migration/get-fullstack-template-dir.js +2 -2
  219. package/dist/migration/get-fullstack-template-dir.js.map +1 -1
  220. package/dist/migration/migration-routes.d.ts.map +1 -1
  221. package/dist/migration/migration-routes.js +8 -2
  222. package/dist/migration/migration-routes.js.map +1 -1
  223. package/dist/plugin-options.d.ts +1 -0
  224. package/dist/plugin-options.d.ts.map +1 -1
  225. package/dist/plugin-options.js.map +1 -1
  226. package/dist/router-parser.d.ts.map +1 -1
  227. package/dist/router-parser.js +336 -65
  228. package/dist/router-parser.js.map +1 -1
  229. package/dist/socket-manager.d.ts +25 -2
  230. package/dist/socket-manager.d.ts.map +1 -1
  231. package/dist/socket-manager.js +270 -55
  232. package/dist/socket-manager.js.map +1 -1
  233. package/dist/split-edit-after-clark.d.ts +14 -0
  234. package/dist/split-edit-after-clark.d.ts.map +1 -0
  235. package/dist/split-edit-after-clark.js +40 -0
  236. package/dist/split-edit-after-clark.js.map +1 -0
  237. package/dist/sync-service/index.d.ts +2 -1
  238. package/dist/sync-service/index.d.ts.map +1 -1
  239. package/dist/sync-service/index.js +5 -0
  240. package/dist/sync-service/index.js.map +1 -1
  241. package/dist/sync-service/list-dir.d.ts.map +1 -1
  242. package/dist/sync-service/list-dir.js +9 -4
  243. package/dist/sync-service/list-dir.js.map +1 -1
  244. package/dist/util/log-sanitizer.d.ts.map +1 -1
  245. package/dist/util/log-sanitizer.js +4 -0
  246. package/dist/util/log-sanitizer.js.map +1 -1
  247. package/dist/vite-module-reload.d.ts +34 -0
  248. package/dist/vite-module-reload.d.ts.map +1 -0
  249. package/dist/vite-module-reload.js +121 -0
  250. package/dist/vite-module-reload.js.map +1 -0
  251. package/package.json +9 -8
@@ -27,23 +27,34 @@ function createWorkflowSummary(promptId, workflowMetrics) {
27
27
  };
28
28
  }
29
29
  /**
30
- * Log accumulated credit usage for the prompt and warn if it exceeds the threshold.
30
+ * Flush accumulated credit usage and the workflow summary for the prompt.
31
31
  */
32
- async function flushPromptBillingMetrics(clark, chatSessionStore, promptUsageAlarmThreshold) {
33
- const { promptId, workflowMetrics } = clark.context;
34
- await finalizePromptBillingMetrics({
35
- chatSessionStore,
36
- labels: resolvePromptMetricLabels(clark.context),
37
- logger: clark.logger,
38
- promptId,
39
- promptUsageAlarmThreshold,
40
- workflowMetrics,
41
- });
32
+ async function flushPromptMetrics(params) {
33
+ const { promptId, workflowMetrics, chatSessionStore, logger } = params;
34
+ if (!promptId || !workflowMetrics) {
35
+ return;
36
+ }
37
+ await finalizePromptBillingMetrics(params);
38
+ const submitStart = performance.now();
39
+ logger.info("[awaiting-user] Starting submitWorkflowSummary");
40
+ try {
41
+ await chatSessionStore.submitWorkflowSummary(createWorkflowSummary(promptId, workflowMetrics));
42
+ logger.info(`[awaiting-user] submitWorkflowSummary completed in ${(performance.now() - submitStart).toFixed(2)}ms`);
43
+ }
44
+ catch (err) {
45
+ logger.warn("[awaiting-user] submitWorkflowSummary failed; continuing", {
46
+ durationMs: (performance.now() - submitStart).toFixed(2),
47
+ promptId,
48
+ error: err instanceof Error
49
+ ? { name: err.name, message: err.message }
50
+ : String(err),
51
+ });
52
+ }
42
53
  }
43
54
  export const doAwaitingUser = (clark, { signals, chatSessionStore, llmProvider, llmClient, clarkProfiler, features, }) => {
44
55
  const sendUsergenerationState = sendUserGenerationStateChannel(clark);
45
56
  const sendUserMessage = sendUserMessageChannel(clark, chatSessionStore);
46
- const emitNextSteps = async () => {
57
+ const emitNextSteps = async (isCurrentTransition) => {
47
58
  // Capture the abort signal at entry so we always check the original
48
59
  // controller, not a replacement created by a new prompt.
49
60
  const abortSignal = clark.context.abortController?.signal;
@@ -61,7 +72,7 @@ export const doAwaitingUser = (clark, { signals, chatSessionStore, llmProvider,
61
72
  let stepCount = 0;
62
73
  let caughtError;
63
74
  try {
64
- if (abortSignal?.aborted)
75
+ if (abortSignal?.aborted || !isCurrentTransition())
65
76
  return;
66
77
  // Respect the user's explicit opt-out: if `suggestNextSteps` is off we
67
78
  // skip BOTH the LLM generation and the UI message. Done before any
@@ -82,7 +93,7 @@ export const doAwaitingUser = (clark, { signals, chatSessionStore, llmProvider,
82
93
  abortSignal,
83
94
  });
84
95
  stepCount = nextSteps.length;
85
- if (abortSignal?.aborted)
96
+ if (abortSignal?.aborted || !isCurrentTransition())
86
97
  return;
87
98
  if (nextSteps.length > 0) {
88
99
  await sendUserMessage({
@@ -121,7 +132,28 @@ export const doAwaitingUser = (clark, { signals, chatSessionStore, llmProvider,
121
132
  }
122
133
  };
123
134
  return async ({ event }) => {
124
- const generationId = clark.context.promptId;
135
+ const { activeInteractiveMessage, pendingToolPermissionRequest, promptId: generationId, } = clark.context;
136
+ const state = clark.state;
137
+ const abortSignal = clark.context.abortController?.signal;
138
+ const outcomeDedupeKey = resolvePromptOutcomeDedupeKey(clark.context);
139
+ const promptMetrics = {
140
+ chatSessionStore,
141
+ labels: resolvePromptMetricLabels(clark.context),
142
+ logger: clark.logger,
143
+ promptId: generationId,
144
+ promptUsageAlarmThreshold: features.promptUsageAlarmThreshold,
145
+ workflowMetrics: clark.context.workflowMetrics,
146
+ };
147
+ const isCurrentTransition = () => !abortSignal?.aborted &&
148
+ clark.state === state &&
149
+ resolvePromptOutcomeDedupeKey(clark.context) === outcomeDedupeKey &&
150
+ clark.context.activeInteractiveMessage === activeInteractiveMessage &&
151
+ clark.context.pendingToolPermissionRequest?.messageId ===
152
+ pendingToolPermissionRequest?.messageId;
153
+ const finishPromptBookkeeping = async () => {
154
+ await clarkProfiler?.endSession();
155
+ await flushPromptMetrics(promptMetrics);
156
+ };
125
157
  switch (event.type) {
126
158
  case AGENT_NEEDS_USER_INPUT: {
127
159
  const { hasSuggestions = false } = clark.context;
@@ -134,25 +166,9 @@ export const doAwaitingUser = (clark, { signals, chatSessionStore, llmProvider,
134
166
  promptId,
135
167
  hasWorkflowMetrics: Boolean(workflowMetrics),
136
168
  });
137
- await clarkProfiler?.endSession();
138
- // Submit workflow summary metrics and check prompt cost
139
- if (promptId && workflowMetrics) {
140
- await flushPromptBillingMetrics(clark, chatSessionStore, features.promptUsageAlarmThreshold);
141
- const submitStart = performance.now();
142
- clark.logger.info("[awaiting-user] Starting submitWorkflowSummary");
143
- try {
144
- await chatSessionStore.submitWorkflowSummary(createWorkflowSummary(promptId, workflowMetrics));
145
- clark.logger.info(`[awaiting-user] submitWorkflowSummary completed in ${(performance.now() - submitStart).toFixed(2)}ms`);
146
- }
147
- catch (err) {
148
- clark.logger.warn("[awaiting-user] submitWorkflowSummary failed; continuing", {
149
- durationMs: (performance.now() - submitStart).toFixed(2),
150
- promptId,
151
- error: err instanceof Error
152
- ? { name: err.name, message: err.message }
153
- : String(err),
154
- });
155
- }
169
+ await finishPromptBookkeeping();
170
+ if (!isCurrentTransition()) {
171
+ return;
156
172
  }
157
173
  if (advice) {
158
174
  void sendUserMessage({
@@ -170,7 +186,6 @@ export const doAwaitingUser = (clark, { signals, chatSessionStore, llmProvider,
170
186
  state: AiGenerationState.AWAITING_USER_INPUT,
171
187
  hasSuggestions,
172
188
  });
173
- const outcomeDedupeKey = resolvePromptOutcomeDedupeKey(clark.context);
174
189
  const handoffRecorded = recordAwaitingUserPromptOutcome({
175
190
  dedupeKey: outcomeDedupeKey,
176
191
  advice,
@@ -188,24 +203,24 @@ export const doAwaitingUser = (clark, { signals, chatSessionStore, llmProvider,
188
203
  break;
189
204
  }
190
205
  case V3_AGENT_FINISHED: {
191
- const hasSuggestions = clark.context.hasSuggestions ?? false;
206
+ const hasSuggestions = event.producedDraft ?? clark.context.hasSuggestions ?? false;
192
207
  clark.logger.info("[awaiting-user] V3_AGENT_FINISHED - returning to user, emitting terminal signals", {
193
208
  hasSuggestions,
194
209
  willTriggerUpload: hasSuggestions,
195
210
  currentMode: clark.context.currentMode,
196
211
  });
197
- await clarkProfiler?.endSession();
198
- // Submit workflow summary metrics and check prompt cost
199
- const { promptId, workflowMetrics } = clark.context;
200
- if (promptId && workflowMetrics) {
201
- await flushPromptBillingMetrics(clark, chatSessionStore, features.promptUsageAlarmThreshold);
202
- await chatSessionStore.submitWorkflowSummary(createWorkflowSummary(promptId, workflowMetrics));
212
+ await finishPromptBookkeeping();
213
+ if (!isCurrentTransition()) {
214
+ return;
203
215
  }
204
216
  // Run next-steps LLM call before the terminal event. That event
205
217
  // triggers async directory uploads that can clear the peer, causing
206
218
  // sendUserMessage to silently drop the next_steps message.
207
219
  if (features.suggestWhatsNext && hasSuggestions) {
208
- await emitNextSteps();
220
+ await emitNextSteps(isCurrentTransition);
221
+ }
222
+ if (!isCurrentTransition()) {
223
+ return;
209
224
  }
210
225
  // Now safe to signal — upload/full-reload race can no longer
211
226
  // interfere with next-steps delivery.
@@ -233,12 +248,9 @@ export const doAwaitingUser = (clark, { signals, chatSessionStore, llmProvider,
233
248
  hasSuggestions,
234
249
  willTriggerUpload: hasSuggestions,
235
250
  });
236
- await clarkProfiler?.endSession();
237
- // Submit workflow summary metrics and check prompt cost
238
- const { promptId, workflowMetrics } = clark.context;
239
- if (promptId && workflowMetrics) {
240
- await flushPromptBillingMetrics(clark, chatSessionStore, features.promptUsageAlarmThreshold);
241
- await chatSessionStore.submitWorkflowSummary(createWorkflowSummary(promptId, workflowMetrics));
251
+ await finishPromptBookkeeping();
252
+ if (!isCurrentTransition()) {
253
+ return;
242
254
  }
243
255
  if (summaryMessages.length > 0) {
244
256
  void sendUserMessage({
@@ -262,6 +274,9 @@ export const doAwaitingUser = (clark, { signals, chatSessionStore, llmProvider,
262
274
  clarkProfiler.getProfiler().startFrame("summary_generation");
263
275
  clarkProfiler.startLLMWaiting();
264
276
  const finalSummary = await getFinalSummary(llmProvider, llmClient, chatSessionStore, summaryMessages, clark.tracer, clark.context.abortController?.signal);
277
+ if (!isCurrentTransition()) {
278
+ return;
279
+ }
265
280
  // End profiling spans
266
281
  clarkProfiler.endFrame(); // End waiting_on_llm
267
282
  clarkProfiler.endFrame(); // End summary_generation
@@ -284,7 +299,10 @@ export const doAwaitingUser = (clark, { signals, chatSessionStore, llmProvider,
284
299
  // Run next-steps LLM call before the terminal event.
285
300
  // See V3_AGENT_FINISHED comment for rationale.
286
301
  if (features.suggestWhatsNext && hasSuggestions) {
287
- await emitNextSteps();
302
+ await emitNextSteps(isCurrentTransition);
303
+ }
304
+ if (!isCurrentTransition()) {
305
+ return;
288
306
  }
289
307
  if (!generationId) {
290
308
  throw new Error("generationCompleted emitted without promptId");
@@ -1 +1 @@
1
- {"version":3,"file":"awaiting-user.js","sourceRoot":"","sources":["../../../../src/ai-service/state-machine/handlers/awaiting-user.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"awaiting-user.js","sourceRoot":"","sources":["../../../../src/ai-service/state-machine/handlers/awaiting-user.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"llm-generating.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/state-machine/handlers/llm-generating.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,QAAQ,EACR,SAAS,EACT,QAAQ,EAGT,MAAM,IAAI,CAAC;AAGZ,OAAO,EAIL,KAAK,UAAU,EAGf,KAAK,WAAW,EAChB,KAAK,aAAa,EAInB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAGL,KAAK,2BAA2B,EACjC,MAAM,yBAAyB,CAAC;AAkBjC,OAAO,EAKL,KAAK,mBAAmB,EACzB,MAAM,4CAA4C,CAAC;AAuCpD,OAAO,EAUL,KAAK,KAAK,EACV,KAAK,uBAAuB,EAC5B,KAAK,eAAe,EACrB,MAAM,iBAAiB,CAAC;AAiBzB,KAAK,uBAAuB,GACxB;IAAE,MAAM,EAAE,IAAI,CAAC;IAAC,aAAa,EAAE,OAAO,CAAA;CAAE,GACxC;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,aAAa,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAC3D;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,CAAC;AAExB,wBAAsB,mCAAmC,CACvD,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,uBAAuB,EACjC,UAAU,EAAE,MAAM,OAAO,EACzB,UAAU,GAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAA;CAAO,GACxC,OAAO,CAAC,uBAAuB,CAAC,CA4ClC;AAgDD;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,GACvC,aAAa,UAAU,EAAE,EACzB,SAAS;IACP,yBAAyB,EAAE,OAAO,CAAC;IACnC,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAC1C,qCAAqC,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC3D,KACA,CAAC,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC,EA0InC,CAAC;AASF,eAAO,MAAM,8BAA8B,GAAU,kDAKlD;IACD,KAAK,EAAE,KAAK,CAAC;IACb,QAAQ,EAAE,uBAAuB,CAAC;IAClC,aAAa,EAAE,aAAa,GAAG,SAAS,CAAC;IACzC,WAAW,EAAE,WAAW,GAAG,SAAS,CAAC;CACtC,KAAG,OAAO,CAAC,mBAAmB,GAAG,SAAS,CA+H1C,CAAC;AAKF,wBAAgB,oCAAoC,CAClD,aAAa,EAAE,2BAA2B,GAAG,SAAS,GACrD,MAAM,CAkDR;AA0dD,eAAO,MAAM,eAAe,GAC1B,OAAO,KAAK,EACZ,UAAU,uBAAuB,MAInB,WAAW,eAAe,KAAG,OAAO,CAAC,IAAI,CAquBxD,CAAC"}
1
+ {"version":3,"file":"llm-generating.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/state-machine/handlers/llm-generating.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,QAAQ,EACR,SAAS,EACT,QAAQ,EAGT,MAAM,IAAI,CAAC;AAGZ,OAAO,EAIL,KAAK,UAAU,EAGf,KAAK,WAAW,EAChB,KAAK,aAAa,EAInB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAGL,KAAK,2BAA2B,EACjC,MAAM,yBAAyB,CAAC;AAkBjC,OAAO,EAKL,KAAK,mBAAmB,EACzB,MAAM,4CAA4C,CAAC;AAuCpD,OAAO,EAUL,KAAK,KAAK,EACV,KAAK,uBAAuB,EAC5B,KAAK,eAAe,EACrB,MAAM,iBAAiB,CAAC;AAiBzB,KAAK,uBAAuB,GACxB;IAAE,MAAM,EAAE,IAAI,CAAC;IAAC,aAAa,EAAE,OAAO,CAAA;CAAE,GACxC;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,aAAa,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAC3D;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,CAAC;AAExB,wBAAsB,mCAAmC,CACvD,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,uBAAuB,EACjC,UAAU,EAAE,MAAM,OAAO,EACzB,UAAU,GAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAA;CAAO,GACxC,OAAO,CAAC,uBAAuB,CAAC,CA4ClC;AAgDD;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,GACvC,aAAa,UAAU,EAAE,EACzB,SAAS;IACP,yBAAyB,EAAE,OAAO,CAAC;IACnC,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAC1C,qCAAqC,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC3D,KACA,CAAC,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC,EA0InC,CAAC;AASF,eAAO,MAAM,8BAA8B,GAAU,kDAKlD;IACD,KAAK,EAAE,KAAK,CAAC;IACb,QAAQ,EAAE,uBAAuB,CAAC;IAClC,aAAa,EAAE,aAAa,GAAG,SAAS,CAAC;IACzC,WAAW,EAAE,WAAW,GAAG,SAAS,CAAC;CACtC,KAAG,OAAO,CAAC,mBAAmB,GAAG,SAAS,CA+H1C,CAAC;AAKF,wBAAgB,oCAAoC,CAClD,aAAa,EAAE,2BAA2B,GAAG,SAAS,GACrD,MAAM,CAkDR;AAseD,eAAO,MAAM,eAAe,GAC1B,OAAO,KAAK,EACZ,UAAU,uBAAuB,MAInB,WAAW,eAAe,KAAG,OAAO,CAAC,IAAI,CAquBxD,CAAC"}
@@ -470,18 +470,31 @@ Do not rely on prior knowledge from skills that may have been summarized away.
470
470
  });
471
471
  }
472
472
  if (promptContext?.gitSetup) {
473
- const { isConnected, remoteUrl } = promptContext.gitSetup;
473
+ const { isConnected, hasCredentialIssue, remoteUrl } = promptContext.gitSetup;
474
474
  const urlLabel = remoteUrl ? ` (${remoteUrl})` : "";
475
+ let credentialGuidance;
476
+ if (!isConnected) {
477
+ credentialGuidance =
478
+ "Help the user connect a repository and save a personal access token with the required permissions.";
479
+ }
480
+ else if (hasCredentialIssue) {
481
+ credentialGuidance =
482
+ "The credential is invalid or expired. The PAT form is already open — guide the user to paste a new token with the required permissions and click Save. Do NOT recommend Disconnect git for credential rotation — disconnect only unlinks the repository and can rewrite the app's live git state.";
483
+ }
484
+ else {
485
+ credentialGuidance =
486
+ "To rotate or replace a personal access token before it expires, guide the user to click Update token, paste the new token, and Save. Do NOT recommend Disconnect git for credential rotation — disconnect only unlinks the repository and can rewrite the app's live git state.";
487
+ }
475
488
  content.push({
476
489
  type: "text",
477
- text: `<git_setup_state>\nThe git settings tab is open. The repository is ${isConnected ? `connected${urlLabel}` : "not yet connected"}.\nYou can only provide read-only guidance — answer the user's questions about connecting to git, required token permissions, provider setup, CI/CD pipeline files, and branch workflows. Do NOT attempt to fill form fields, run git commands, or modify the configuration directly.\n</git_setup_state>\n\n`,
490
+ text: `<git_setup_state>\nThe git settings tab is open. The repository is ${isConnected ? `connected${urlLabel}` : "not yet connected"}.\n${credentialGuidance}\nYou can only provide read-only guidance — answer the user's questions about connecting to git, required token permissions, provider setup, CI/CD pipeline files, and branch workflows. Do NOT attempt to fill form fields, run git commands, or modify the configuration directly.\n</git_setup_state>\n\n`,
478
491
  });
479
492
  }
480
493
  if (promptContext?.currentView) {
481
494
  const viewDescriptions = {
482
495
  "code-viewer": "the Code view. The Code view is a read-only file viewer — the user cannot edit files directly in this view. Do not suggest editing files through the Code view UI. To make code changes, use your own tools instead.",
483
496
  database: "the Database view, where the user sees the database behind each of the app's data tags and can delete the ones they no longer want. You provide read-only guidance - the user runs any delete themselves from that view.",
484
- "git-setup": "the Git Setup view, where the user connects their application to a git repository. You provide read-only guidance — do not attempt to modify the form.",
497
+ "git-setup": "the Git Setup view, where the user connects their application to a git repository or updates their personal access token. For token rotation, guide them to the PAT form (Update token if healthy, or Save if the form is already open for an expired/invalid credential) — never Disconnect. You provide read-only guidance — do not attempt to modify the form.",
485
498
  "integration-setup": "the Integration Setup view, where the user configures an integration (e.g. database credentials, API keys, or connection settings).",
486
499
  publish: "the Publish view, where the user reviews policy gate scan results, database provisioning progress, and remediation guidance during publish.",
487
500
  preview: "the Preview, where the user sees a live preview of their application as it would appear in a browser.",
@@ -759,7 +772,6 @@ export const doLLMGenerating = (clark, services) => {
759
772
  const isKnowledgeEnabled = clark.context.llmConfig?.flags?.isFactsEnabled ?? false;
760
773
  const mode = clark.context.currentMode;
761
774
  const planContext = clark.context.planContext;
762
- const planApproved = planContext?.approved;
763
775
  const pendingKnowledgeFreeTextTurn = clark.context.pendingKnowledgeFreeTextTurn === true;
764
776
  const pendingKnowledgeEntries = clark.context.pendingAppKnowledge?.knowledgeEntries?.map((entry) => ({
765
777
  name: entry.name,
@@ -985,63 +997,79 @@ export const doLLMGenerating = (clark, services) => {
985
997
  }
986
998
  preSessionWatch.complete("ok");
987
999
  const attemptModel = new AttemptModelObserver(clark.context.llmConfig?.coreModel);
988
- const result = await clark.streamText(services, {
989
- user,
990
- system,
991
- tools,
992
- contextPartitionLogging: services.features.contextPartitionLoggingEnabled,
993
- contextPartitionFloor: {
994
- knowledge: [
995
- knowledgeSections.systemPromptSection.trim(),
996
- appKnowledgeAlwaysSection.trim(),
997
- ],
998
- skillIndex: [
999
- knowledgeSections.onDemandSkillIndex,
1000
- appKnowledgeIndexSection.trim(),
1000
+ // A provider configuration error thrown while starting the stream must
1001
+ // use the same LLM_ERRORED path as a mid-stream failure. The FSM has
1002
+ // already entered LLMGenerating, and an uncaught throw leaves it there.
1003
+ let result;
1004
+ let streamStartError;
1005
+ try {
1006
+ result = await clark.streamText(services, {
1007
+ user,
1008
+ system,
1009
+ tools,
1010
+ contextPartitionLogging: services.features.contextPartitionLoggingEnabled,
1011
+ contextPartitionFloor: {
1012
+ knowledge: [
1013
+ knowledgeSections.systemPromptSection.trim(),
1014
+ appKnowledgeAlwaysSection.trim(),
1015
+ ],
1016
+ skillIndex: [
1017
+ knowledgeSections.onDemandSkillIndex,
1018
+ appKnowledgeIndexSection.trim(),
1019
+ ],
1020
+ },
1021
+ observers: [...(services.streamObservers ?? []), attemptModel],
1022
+ context: {
1023
+ contextId: getContextId(clark, services),
1024
+ },
1025
+ stopWhen: [
1026
+ hasToolSuccess("build_finalize"),
1027
+ hasToolSuccess("exitPlanMode"),
1028
+ hasToolSuccess("askMultiChoice"),
1029
+ hasToolSuccess("askSearchableDropdown"),
1030
+ hasToolSuccess("openExistingIntegration"),
1031
+ hasToolSuccess("openIntegrationSetup"),
1032
+ needsPermissionToExecute(clark),
1033
+ isAwaitingUser(clark),
1001
1034
  ],
1002
- },
1003
- observers: [...(services.streamObservers ?? []), attemptModel],
1004
- context: {
1005
- contextId: getContextId(clark, services),
1006
- },
1007
- stopWhen: [
1008
- hasToolSuccess("build_finalize"),
1009
- hasToolSuccess("exitPlanMode"),
1010
- hasToolSuccess("askMultiChoice"),
1011
- hasToolSuccess("askSearchableDropdown"),
1012
- hasToolSuccess("openExistingIntegration"),
1013
- hasToolSuccess("openIntegrationSetup"),
1014
- needsPermissionToExecute(clark),
1015
- isAwaitingUser(clark),
1016
- ],
1017
- onError: (error) => {
1018
- clark.logger.error("LLM stream processing failed", getErrorMeta(error));
1019
- },
1020
- safety: isUserPrompt
1021
- ? {
1022
- scope: "last",
1023
- classification: {
1024
- enabled: services.features.safetyClassificationEnabled ?? false,
1025
- input: safetyClassificationInput,
1026
- model: services.features.safetyClassificationEnabled
1027
- ? services.llmProvider.modelForTask("fast").model
1028
- : undefined,
1029
- failOpen: true,
1030
- },
1031
- secretRedaction: {
1032
- level: services.features.secretRedactionLevel ?? "full",
1033
- },
1034
- }
1035
- : undefined,
1036
- });
1035
+ onError: (error) => {
1036
+ clark.logger.error("LLM stream processing failed", getErrorMeta(error));
1037
+ },
1038
+ safety: isUserPrompt
1039
+ ? {
1040
+ scope: "last",
1041
+ classification: {
1042
+ enabled: services.features.safetyClassificationEnabled ?? false,
1043
+ input: safetyClassificationInput,
1044
+ model: services.features.safetyClassificationEnabled
1045
+ ? services.llmProvider.modelForTask("fast").model
1046
+ : undefined,
1047
+ failOpen: true,
1048
+ },
1049
+ secretRedaction: {
1050
+ level: services.features.secretRedactionLevel ?? "full",
1051
+ },
1052
+ }
1053
+ : undefined,
1054
+ });
1055
+ }
1056
+ catch (err) {
1057
+ streamStartError = err;
1058
+ }
1037
1059
  let shouldTransitionToAwaitingUser;
1038
1060
  let blockedAwaitingUserTransitionReason;
1039
1061
  const markVisiblePromptAwaitingUser = () => {
1040
1062
  blockedAwaitingUserTransitionReason = undefined;
1041
1063
  shouldTransitionToAwaitingUser = true;
1042
1064
  };
1043
- clark.logger.info("[llm-generating] Starting to process stream chunks");
1044
1065
  try {
1066
+ if (streamStartError !== undefined) {
1067
+ throw streamStartError;
1068
+ }
1069
+ if (!result) {
1070
+ throw new Error("LLM stream did not start");
1071
+ }
1072
+ clark.logger.info("[llm-generating] Starting to process stream chunks");
1045
1073
  for await (const chunk of result.fullStream) {
1046
1074
  if (isStaleRun()) {
1047
1075
  clark.logger.warn("[llm-generating] Ignoring stale stream chunk from prior run", {
@@ -1213,27 +1241,8 @@ export const doLLMGenerating = (clark, services) => {
1213
1241
  });
1214
1242
  return;
1215
1243
  }
1216
- // In PLAN mode, only proceed to draft state if the user has approved the plan
1217
- if (mode === AiMode.PLAN && !planApproved) {
1218
- if (isStaleRun()) {
1219
- clark.logger.info("[llm-generating] Ignoring plan-awaiting transition from stale run", {
1220
- runPromptId,
1221
- currentPromptId: clark.context.promptId,
1222
- });
1223
- return;
1224
- }
1225
- clark.logger.info("[llm-generating] Early return: PLAN mode without approval - transitioning to AGENT_NEEDS_USER_INPUT", {
1226
- hasSuggestions: clark.context.hasSuggestions,
1227
- mode,
1228
- planApproved,
1229
- });
1230
- void transitionTo({
1231
- type: AGENT_NEEDS_USER_INPUT,
1232
- countsAsPromptSuccess: true,
1233
- });
1234
- return;
1235
- }
1236
1244
  if (shouldTransitionToAwaitingUser ||
1245
+ clark.context.activeInteractiveMessage?.deliveredViaChannel ||
1237
1246
  clark.context.pendingToolPermissionRequest) {
1238
1247
  if (isStaleRun()) {
1239
1248
  clark.logger.info("[llm-generating] Ignoring awaiting-user transition from stale run", {
@@ -1259,6 +1268,15 @@ export const doLLMGenerating = (clark, services) => {
1259
1268
  });
1260
1269
  return;
1261
1270
  }
1271
+ if (mode === AiMode.PLAN && !planContext?.approved) {
1272
+ if (!isStaleRun()) {
1273
+ void transitionTo({
1274
+ type: V3_AGENT_FINISHED,
1275
+ producedDraft: false,
1276
+ });
1277
+ }
1278
+ return;
1279
+ }
1262
1280
  const draftRefreshResult = await refreshHasSuggestionsFromLocalDraft(clark, services, isStaleRun, { runPromptId });
1263
1281
  if (draftRefreshResult.status === "stale") {
1264
1282
  return;