@superblocksteam/vite-plugin-file-sync 2.0.149 → 2.0.150-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 (161) hide show
  1. package/dist/ai-service/agent/prompts/api-prompts.js +1 -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 +38 -10
  4. package/dist/ai-service/agent/prompts/build-base-system-prompt.js.map +1 -1
  5. package/dist/ai-service/agent/prompts/build-security-scan-prompt.d.ts.map +1 -1
  6. package/dist/ai-service/agent/prompts/build-security-scan-prompt.js +20 -4
  7. package/dist/ai-service/agent/prompts/build-security-scan-prompt.js.map +1 -1
  8. package/dist/ai-service/agent/subagents/testing/prompt-builder.js +1 -1
  9. package/dist/ai-service/agent/tools/apis/analysis.d.ts +6 -0
  10. package/dist/ai-service/agent/tools/apis/analysis.d.ts.map +1 -1
  11. package/dist/ai-service/agent/tools/apis/analysis.js +130 -26
  12. package/dist/ai-service/agent/tools/apis/analysis.js.map +1 -1
  13. package/dist/ai-service/agent/tools/apis/get-sdk-api-docs.js +2 -2
  14. package/dist/ai-service/agent/tools/apis/get-sdk-api-docs.js.map +1 -1
  15. package/dist/ai-service/agent/tools/apis/test-api.d.ts.map +1 -1
  16. package/dist/ai-service/agent/tools/apis/test-api.js +131 -31
  17. package/dist/ai-service/agent/tools/apis/test-api.js.map +1 -1
  18. package/dist/ai-service/agent/tools/build-delete-file.d.ts +2 -2
  19. package/dist/ai-service/agent/tools/build-delete-file.js +3 -3
  20. package/dist/ai-service/agent/tools/build-delete-file.js.map +1 -1
  21. package/dist/ai-service/agent/tools/build-install-packages.d.ts +41 -21
  22. package/dist/ai-service/agent/tools/build-install-packages.d.ts.map +1 -1
  23. package/dist/ai-service/agent/tools/build-install-packages.js +299 -20
  24. package/dist/ai-service/agent/tools/build-install-packages.js.map +1 -1
  25. package/dist/ai-service/agent/tools/build-manage-checklist.d.ts.map +1 -1
  26. package/dist/ai-service/agent/tools/build-manage-checklist.js +2 -1
  27. package/dist/ai-service/agent/tools/build-manage-checklist.js.map +1 -1
  28. package/dist/ai-service/agent/tools/databases/dev-database-tasks.d.ts +161 -24
  29. package/dist/ai-service/agent/tools/databases/dev-database-tasks.d.ts.map +1 -1
  30. package/dist/ai-service/agent/tools/databases/dev-database-tasks.js +312 -55
  31. package/dist/ai-service/agent/tools/databases/dev-database-tasks.js.map +1 -1
  32. package/dist/ai-service/agent/tools/get-logs.d.ts +2 -2
  33. package/dist/ai-service/agent/tools/report-security-findings.d.ts +3 -3
  34. package/dist/ai-service/agent/tools.d.ts +10 -11
  35. package/dist/ai-service/agent/tools.d.ts.map +1 -1
  36. package/dist/ai-service/agent/tools.js +38 -19
  37. package/dist/ai-service/agent/tools.js.map +1 -1
  38. package/dist/ai-service/agent/tools2/tools/exit-plan-mode.d.ts.map +1 -1
  39. package/dist/ai-service/agent/tools2/tools/exit-plan-mode.js +9 -8
  40. package/dist/ai-service/agent/tools2/tools/exit-plan-mode.js.map +1 -1
  41. package/dist/ai-service/agent/tools2/tools/grep.js +1 -1
  42. package/dist/ai-service/agent/tools2/tools/index.d.ts.map +1 -1
  43. package/dist/ai-service/agent/tools2/tools/index.js +2 -3
  44. package/dist/ai-service/agent/tools2/tools/index.js.map +1 -1
  45. package/dist/ai-service/app-interface/npm-package-lookup.d.ts +22 -0
  46. package/dist/ai-service/app-interface/npm-package-lookup.d.ts.map +1 -1
  47. package/dist/ai-service/app-interface/npm-package-lookup.js +111 -0
  48. package/dist/ai-service/app-interface/npm-package-lookup.js.map +1 -1
  49. package/dist/ai-service/app-interface/shell.d.ts +71 -3
  50. package/dist/ai-service/app-interface/shell.d.ts.map +1 -1
  51. package/dist/ai-service/app-interface/shell.js +575 -23
  52. package/dist/ai-service/app-interface/shell.js.map +1 -1
  53. package/dist/ai-service/app-interface/vulnerability-gate.d.ts +83 -0
  54. package/dist/ai-service/app-interface/vulnerability-gate.d.ts.map +1 -0
  55. package/dist/ai-service/app-interface/vulnerability-gate.js +543 -0
  56. package/dist/ai-service/app-interface/vulnerability-gate.js.map +1 -0
  57. package/dist/ai-service/dev-database-client.d.ts +14 -4
  58. package/dist/ai-service/dev-database-client.d.ts.map +1 -1
  59. package/dist/ai-service/dev-database-client.js +1 -24
  60. package/dist/ai-service/dev-database-client.js.map +1 -1
  61. package/dist/ai-service/features.d.ts +5 -0
  62. package/dist/ai-service/features.d.ts.map +1 -1
  63. package/dist/ai-service/features.js +5 -0
  64. package/dist/ai-service/features.js.map +1 -1
  65. package/dist/ai-service/index.d.ts +2 -0
  66. package/dist/ai-service/index.d.ts.map +1 -1
  67. package/dist/ai-service/index.js +60 -9
  68. package/dist/ai-service/index.js.map +1 -1
  69. package/dist/ai-service/integrations/store.d.ts +3 -0
  70. package/dist/ai-service/integrations/store.d.ts.map +1 -1
  71. package/dist/ai-service/integrations/store.js +2 -0
  72. package/dist/ai-service/integrations/store.js.map +1 -1
  73. package/dist/ai-service/llm/client.d.ts +2 -9
  74. package/dist/ai-service/llm/client.d.ts.map +1 -1
  75. package/dist/ai-service/llm/client.js +2 -81
  76. package/dist/ai-service/llm/client.js.map +1 -1
  77. package/dist/ai-service/llm/context-v2/compaction/client-side.d.ts.map +1 -1
  78. package/dist/ai-service/llm/context-v2/compaction/client-side.js +15 -4
  79. package/dist/ai-service/llm/context-v2/compaction/client-side.js.map +1 -1
  80. package/dist/ai-service/llm/context-v2/config.d.ts +8 -0
  81. package/dist/ai-service/llm/context-v2/config.d.ts.map +1 -1
  82. package/dist/ai-service/llm/context-v2/config.js +13 -0
  83. package/dist/ai-service/llm/context-v2/config.js.map +1 -1
  84. package/dist/ai-service/llm/context-v2/context-metrics.d.ts +18 -0
  85. package/dist/ai-service/llm/context-v2/context-metrics.d.ts.map +1 -1
  86. package/dist/ai-service/llm/context-v2/context-metrics.js +94 -2
  87. package/dist/ai-service/llm/context-v2/context-metrics.js.map +1 -1
  88. package/dist/ai-service/llm/context-v2/context.d.ts +3 -0
  89. package/dist/ai-service/llm/context-v2/context.d.ts.map +1 -1
  90. package/dist/ai-service/llm/context-v2/context.js +13 -1
  91. package/dist/ai-service/llm/context-v2/context.js.map +1 -1
  92. package/dist/ai-service/llm/stream/observers/workflow-usage.d.ts +35 -0
  93. package/dist/ai-service/llm/stream/observers/workflow-usage.d.ts.map +1 -0
  94. package/dist/ai-service/llm/stream/observers/workflow-usage.js +108 -0
  95. package/dist/ai-service/llm/stream/observers/workflow-usage.js.map +1 -0
  96. package/dist/ai-service/llm/stream/orchestrator.d.ts.map +1 -1
  97. package/dist/ai-service/llm/stream/orchestrator.js +1 -0
  98. package/dist/ai-service/llm/stream/orchestrator.js.map +1 -1
  99. package/dist/ai-service/llm/stream/session.d.ts +2 -0
  100. package/dist/ai-service/llm/stream/session.d.ts.map +1 -1
  101. package/dist/ai-service/llm/stream/session.js +2 -0
  102. package/dist/ai-service/llm/stream/session.js.map +1 -1
  103. package/dist/ai-service/managed-native-db-availability.d.ts +62 -0
  104. package/dist/ai-service/managed-native-db-availability.d.ts.map +1 -0
  105. package/dist/ai-service/managed-native-db-availability.js +37 -0
  106. package/dist/ai-service/managed-native-db-availability.js.map +1 -0
  107. package/dist/ai-service/security/vulnerability-triage.d.ts +90 -0
  108. package/dist/ai-service/security/vulnerability-triage.d.ts.map +1 -0
  109. package/dist/ai-service/security/vulnerability-triage.js +113 -0
  110. package/dist/ai-service/security/vulnerability-triage.js.map +1 -0
  111. package/dist/ai-service/skills/system/superblocks-frontend/skill.generated.d.ts +1 -1
  112. package/dist/ai-service/skills/system/superblocks-frontend/skill.generated.d.ts.map +1 -1
  113. package/dist/ai-service/skills/system/superblocks-frontend/skill.generated.js +13 -0
  114. package/dist/ai-service/skills/system/superblocks-frontend/skill.generated.js.map +1 -1
  115. package/dist/ai-service/state-machine/clark-fsm.d.ts +12 -0
  116. package/dist/ai-service/state-machine/clark-fsm.d.ts.map +1 -1
  117. package/dist/ai-service/state-machine/clark-fsm.js +23 -0
  118. package/dist/ai-service/state-machine/clark-fsm.js.map +1 -1
  119. package/dist/ai-service/state-machine/handlers/awaiting-user.d.ts.map +1 -1
  120. package/dist/ai-service/state-machine/handlers/awaiting-user.js +17 -27
  121. package/dist/ai-service/state-machine/handlers/awaiting-user.js.map +1 -1
  122. package/dist/ai-service/state-machine/handlers/idle.d.ts +1 -1
  123. package/dist/ai-service/state-machine/handlers/idle.d.ts.map +1 -1
  124. package/dist/ai-service/state-machine/handlers/idle.js +28 -2
  125. package/dist/ai-service/state-machine/handlers/idle.js.map +1 -1
  126. package/dist/ai-service/state-machine/handlers/play-dead.d.ts +2 -2
  127. package/dist/ai-service/state-machine/handlers/play-dead.d.ts.map +1 -1
  128. package/dist/ai-service/state-machine/handlers/play-dead.js +18 -4
  129. package/dist/ai-service/state-machine/handlers/play-dead.js.map +1 -1
  130. package/dist/ai-service/state-machine/helpers/prompt-billing-metrics.d.ts +26 -0
  131. package/dist/ai-service/state-machine/helpers/prompt-billing-metrics.d.ts.map +1 -0
  132. package/dist/ai-service/state-machine/helpers/prompt-billing-metrics.js +127 -0
  133. package/dist/ai-service/state-machine/helpers/prompt-billing-metrics.js.map +1 -0
  134. package/dist/ai-service/state-machine/helpers/prompt-request-metrics.d.ts +36 -3
  135. package/dist/ai-service/state-machine/helpers/prompt-request-metrics.d.ts.map +1 -1
  136. package/dist/ai-service/state-machine/helpers/prompt-request-metrics.js +119 -11
  137. package/dist/ai-service/state-machine/helpers/prompt-request-metrics.js.map +1 -1
  138. package/dist/ai-service/tasks/factory.d.ts +2 -0
  139. package/dist/ai-service/tasks/factory.d.ts.map +1 -1
  140. package/dist/ai-service/tasks/factory.js +7 -0
  141. package/dist/ai-service/tasks/factory.js.map +1 -1
  142. package/dist/ai-service/types.d.ts +57 -3
  143. package/dist/ai-service/types.d.ts.map +1 -1
  144. package/dist/ai-service/types.js +20 -0
  145. package/dist/ai-service/types.js.map +1 -1
  146. package/dist/migration/restructure.js +1 -1
  147. package/dist/migration-templates/app-fullstack/client/pages/{Page1 → Home}/index.tsx +1 -1
  148. package/dist/migration-templates/app-fullstack/client/router.tsx +1 -1
  149. package/dist/migration-templates/app-fullstack/package.json +2 -2
  150. package/dist/npm/apply-package-json-substitutions.d.ts +19 -0
  151. package/dist/npm/apply-package-json-substitutions.d.ts.map +1 -0
  152. package/dist/npm/apply-package-json-substitutions.js +108 -0
  153. package/dist/npm/apply-package-json-substitutions.js.map +1 -0
  154. package/dist/policy-gate-callback-mapper.d.ts +1 -1
  155. package/dist/policy-gate-callback-mapper.d.ts.map +1 -1
  156. package/dist/policy-gate-callback-mapper.js +5 -6
  157. package/dist/policy-gate-callback-mapper.js.map +1 -1
  158. package/dist/policy-gate-runner.d.ts.map +1 -1
  159. package/dist/policy-gate-runner.js +22 -4
  160. package/dist/policy-gate-runner.js.map +1 -1
  161. package/package.json +8 -8
@@ -1 +1 @@
1
- {"version":3,"file":"idle.js","sourceRoot":"","sources":["../../../../src/ai-service/state-machine/handlers/idle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"idle.js","sourceRoot":"","sources":["../../../../src/ai-service/state-machine/handlers/idle.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- import { type ClarkTransition } from "../clark-fsm.js";
2
- export declare const playDead: () => ({ event }: ClarkTransition) => Promise<void>;
1
+ import { type Clark, type ClarkStateHandlerParams, type ClarkTransition } from "../clark-fsm.js";
2
+ export declare const playDead: (clark: Clark, { chatSessionStore, features }: ClarkStateHandlerParams) => ({ event }: ClarkTransition) => Promise<void>;
3
3
  //# sourceMappingURL=play-dead.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"play-dead.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/state-machine/handlers/play-dead.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEtE,eAAO,MAAM,QAAQ,SAEZ,WAAW,eAAe,KAAG,OAAO,CAAC,IAAI,CAS/C,CAAC"}
1
+ {"version":3,"file":"play-dead.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/state-machine/handlers/play-dead.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,KAAK,EACV,KAAK,uBAAuB,EAC5B,KAAK,eAAe,EACrB,MAAM,iBAAiB,CAAC;AAIzB,eAAO,MAAM,QAAQ,GAClB,OAAO,KAAK,EAAE,gCAAgC,uBAAuB,MAC/D,WAAW,eAAe,KAAG,OAAO,CAAC,IAAI,CAoB/C,CAAC"}
@@ -1,9 +1,23 @@
1
- import { AGENT_GAVE_UP } from "../clark-fsm.js";
2
- export const playDead = () => async ({ event }) => {
1
+ import { getLogger } from "../../../util/logger.js";
2
+ import { AGENT_GAVE_UP, } from "../clark-fsm.js";
3
+ import { finalizePromptBillingMetrics } from "../helpers/prompt-billing-metrics.js";
4
+ import { resolvePromptMetricLabels } from "../helpers/prompt-request-metrics.js";
5
+ export const playDead = (clark, { chatSessionStore, features }) => async ({ event }) => {
3
6
  switch (event.type) {
4
- case AGENT_GAVE_UP:
5
- // time to refresh the browser
7
+ case AGENT_GAVE_UP: {
8
+ const { promptId, workflowMetrics } = clark.context;
9
+ // Do not await: give-up teardown must not wait on an unbounded billing
10
+ // RPC. finalizePromptBillingMetrics already swallows and logs errors.
11
+ void finalizePromptBillingMetrics({
12
+ chatSessionStore,
13
+ labels: resolvePromptMetricLabels(clark.context),
14
+ logger: getLogger(),
15
+ promptId,
16
+ promptUsageAlarmThreshold: features.promptUsageAlarmThreshold,
17
+ workflowMetrics,
18
+ });
6
19
  break;
20
+ }
7
21
  default:
8
22
  throw new Error(`Unhandled event: ${event}`);
9
23
  }
@@ -1 +1 @@
1
- {"version":3,"file":"play-dead.js","sourceRoot":"","sources":["../../../../src/ai-service/state-machine/handlers/play-dead.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAwB,MAAM,iBAAiB,CAAC;AAEtE,MAAM,CAAC,MAAM,QAAQ,GACnB,GAAG,EAAE,CACL,KAAK,EAAE,EAAE,KAAK,EAAmB,EAAiB,EAAE;IAClD,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,aAAa;YAChB,8BAA8B;YAC9B,MAAM;QAER;YACE,MAAM,IAAI,KAAK,CAAC,oBAAoB,KAAK,EAAE,CAAC,CAAC;IACjD,CAAC;AACH,CAAC,CAAC"}
1
+ {"version":3,"file":"play-dead.js","sourceRoot":"","sources":["../../../../src/ai-service/state-machine/handlers/play-dead.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EACL,aAAa,GAId,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,4BAA4B,EAAE,MAAM,sCAAsC,CAAC;AACpF,OAAO,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;AAEjF,MAAM,CAAC,MAAM,QAAQ,GACnB,CAAC,KAAY,EAAE,EAAE,gBAAgB,EAAE,QAAQ,EAA2B,EAAE,EAAE,CAC1E,KAAK,EAAE,EAAE,KAAK,EAAmB,EAAiB,EAAE;IAClD,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,aAAa,CAAC,CAAC,CAAC;YACnB,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC;YACpD,uEAAuE;YACvE,sEAAsE;YACtE,KAAK,4BAA4B,CAAC;gBAChC,gBAAgB;gBAChB,MAAM,EAAE,yBAAyB,CAAC,KAAK,CAAC,OAAO,CAAC;gBAChD,MAAM,EAAE,SAAS,EAAE;gBACnB,QAAQ;gBACR,yBAAyB,EAAE,QAAQ,CAAC,yBAAyB;gBAC7D,eAAe;aAChB,CAAC,CAAC;YACH,MAAM;QACR,CAAC;QAED;YACE,MAAM,IAAI,KAAK,CAAC,oBAAoB,KAAK,EAAE,CAAC,CAAC;IACjD,CAAC;AACH,CAAC,CAAC"}
@@ -0,0 +1,26 @@
1
+ import type { ChatSessionStore } from "../../chat/chat-session-store.js";
2
+ import { type PromptMetricLabels } from "./prompt-request-metrics.js";
3
+ export declare function _resetPromptBillingMetricsForTesting(): void;
4
+ /**
5
+ * Flush per-prompt billing and context headroom metrics at any terminal
6
+ * outcome — success, cancel, or give-up — so credits-per-prompt is not
7
+ * survivorship-biased toward completed prompts.
8
+ */
9
+ export declare function finalizePromptBillingMetrics(params: {
10
+ chatSessionStore: ChatSessionStore;
11
+ labels: PromptMetricLabels;
12
+ logger: {
13
+ info: (...args: unknown[]) => void;
14
+ warn: (...args: unknown[]) => void;
15
+ };
16
+ promptId: string | undefined;
17
+ promptUsageAlarmThreshold?: number;
18
+ workflowMetrics?: {
19
+ hadProviderFallback?: boolean;
20
+ llmUsage: Parameters<ChatSessionStore["calculatePromptCost"]>[1];
21
+ llmCallCount: number;
22
+ minHeadroomTokens?: number;
23
+ peakContextUsed?: number;
24
+ };
25
+ }): Promise<void>;
26
+ //# sourceMappingURL=prompt-billing-metrics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-billing-metrics.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/state-machine/helpers/prompt-billing-metrics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAEzE,OAAO,EAEL,KAAK,kBAAkB,EACxB,MAAM,6BAA6B,CAAC;AAgFrC,wBAAgB,oCAAoC,IAAI,IAAI,CAG3D;AAED;;;;GAIG;AACH,wBAAsB,4BAA4B,CAAC,MAAM,EAAE;IACzD,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,MAAM,EAAE,kBAAkB,CAAC;IAC3B,MAAM,EAAE;QACN,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;QACnC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;KACpC,CAAC;IACF,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,eAAe,CAAC,EAAE;QAChB,mBAAmB,CAAC,EAAE,OAAO,CAAC;QAC9B,QAAQ,EAAE,UAAU,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjE,YAAY,EAAE,MAAM,CAAC;QACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,CAAC;CACH,GAAG,OAAO,CAAC,IAAI,CAAC,CAiEhB"}
@@ -0,0 +1,127 @@
1
+ import { recordPromptContextHeadroom } from "../../llm/context-v2/context-metrics.js";
2
+ import { recordPromptCredits, } from "./prompt-request-metrics.js";
3
+ /** Cost round-trips currently in flight, keyed by prompt. */
4
+ const inflightCostRpcs = new Map();
5
+ /**
6
+ * Prompts already priced by a successful round-trip, keyed by promptId with
7
+ * the expiry timestamp (ms). Entries only need to outlive concurrent terminal
8
+ * paths for the same prompt; after that they are pruned so the map cannot grow
9
+ * without bound under sustained traffic.
10
+ */
11
+ const pricedPrompts = new Map();
12
+ /** How long a successful pricing claim is remembered for race dedupe. */
13
+ const PRICED_PROMPT_TTL_MS = 60_000;
14
+ function pruneExpiredPricedPrompts(now) {
15
+ for (const [promptId, expiresAt] of pricedPrompts) {
16
+ if (expiresAt <= now) {
17
+ pricedPrompts.delete(promptId);
18
+ }
19
+ }
20
+ }
21
+ function isPromptPriced(promptId, now = Date.now()) {
22
+ pruneExpiredPricedPrompts(now);
23
+ return pricedPrompts.has(promptId);
24
+ }
25
+ function markPromptPriced(promptId, now = Date.now()) {
26
+ pruneExpiredPricedPrompts(now);
27
+ pricedPrompts.set(promptId, now + PRICED_PROMPT_TTL_MS);
28
+ }
29
+ /**
30
+ * Price a prompt exactly once across terminal paths, returning `undefined`
31
+ * when someone else has already accounted for it.
32
+ *
33
+ * Terminal paths both overlap and repeat. Aborting the stream drives the FSM
34
+ * into its own cancel handler while `handleUserCanceled` is still awaiting the
35
+ * cost call, so a concurrent caller joins the in-flight round-trip; a caller
36
+ * arriving after one succeeded is turned away by `pricedPrompts`.
37
+ *
38
+ * A joiner waits on the result rather than returning immediately, because
39
+ * returning loses the prompt outright when the round-trip fails — it would
40
+ * already be gone by the time the failure surfaced, leaving nobody to retry.
41
+ * Cancel is when the call is most likely to fail, so a joiner that sees a
42
+ * rejection retries instead. Only a success marks the prompt priced, which is
43
+ * what lets a later terminal path pick up after a failed attempt.
44
+ */
45
+ async function calculatePromptCostOnce(chatSessionStore, promptId, llmUsage) {
46
+ if (isPromptPriced(promptId)) {
47
+ return undefined;
48
+ }
49
+ const inflight = inflightCostRpcs.get(promptId);
50
+ if (inflight) {
51
+ try {
52
+ await inflight;
53
+ return undefined;
54
+ }
55
+ catch {
56
+ // Fall through and retry; the owner has already dropped the slot.
57
+ }
58
+ }
59
+ const attempt = chatSessionStore.calculatePromptCost(promptId, llmUsage);
60
+ inflightCostRpcs.set(promptId, attempt);
61
+ try {
62
+ const credits = await attempt;
63
+ markPromptPriced(promptId);
64
+ return credits;
65
+ }
66
+ finally {
67
+ inflightCostRpcs.delete(promptId);
68
+ }
69
+ }
70
+ export function _resetPromptBillingMetricsForTesting() {
71
+ inflightCostRpcs.clear();
72
+ pricedPrompts.clear();
73
+ }
74
+ /**
75
+ * Flush per-prompt billing and context headroom metrics at any terminal
76
+ * outcome — success, cancel, or give-up — so credits-per-prompt is not
77
+ * survivorship-biased toward completed prompts.
78
+ */
79
+ export async function finalizePromptBillingMetrics(params) {
80
+ const { promptId, workflowMetrics } = params;
81
+ if (!promptId || !workflowMetrics) {
82
+ return;
83
+ }
84
+ // Local measurement off workflowMetrics, so it stays above the RPC: a
85
+ // transient socket failure must not punch holes in the context signal.
86
+ recordPromptContextHeadroom({
87
+ dedupeKey: promptId,
88
+ minHeadroomTokens: workflowMetrics.minHeadroomTokens,
89
+ peakContextUsed: workflowMetrics.peakContextUsed,
90
+ });
91
+ let totalCreditsUsed;
92
+ try {
93
+ totalCreditsUsed = await calculatePromptCostOnce(params.chatSessionStore, promptId, workflowMetrics.llmUsage);
94
+ }
95
+ catch (error) {
96
+ params.logger.warn("[billing:prompt-cost] Failed to calculate prompt credits", {
97
+ promptId,
98
+ error: error instanceof Error ? error.message : String(error),
99
+ });
100
+ return;
101
+ }
102
+ if (totalCreditsUsed === undefined) {
103
+ return;
104
+ }
105
+ recordPromptCredits({
106
+ ...params.labels,
107
+ credits: totalCreditsUsed,
108
+ dedupeKey: promptId,
109
+ });
110
+ const threshold = params.promptUsageAlarmThreshold;
111
+ if (threshold === undefined) {
112
+ return;
113
+ }
114
+ const costSummary = {
115
+ llmCallCount: workflowMetrics.llmCallCount,
116
+ promptId,
117
+ threshold,
118
+ totalCreditsUsed,
119
+ };
120
+ if (totalCreditsUsed > threshold) {
121
+ params.logger.warn(`[billing:prompt-cost] Prompt credit usage ${totalCreditsUsed} exceeds threshold of ${threshold}`, costSummary);
122
+ }
123
+ else {
124
+ params.logger.info(`[billing:prompt-cost] Prompt cost summary: ${totalCreditsUsed} credits across ${workflowMetrics.llmCallCount} LLM calls`, costSummary);
125
+ }
126
+ }
127
+ //# sourceMappingURL=prompt-billing-metrics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-billing-metrics.js","sourceRoot":"","sources":["../../../../src/ai-service/state-machine/helpers/prompt-billing-metrics.ts"],"names":[],"mappings":"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"}
@@ -8,22 +8,52 @@ export declare const AWAITING_USER_DISMISS_REASONS: readonly ["cancel", "new_pro
8
8
  export type AwaitingUserDismissReason = (typeof AWAITING_USER_DISMISS_REASONS)[number];
9
9
  export declare const AWAITING_USER_DISMISS_REASON_TAG = "dismiss_reason";
10
10
  export declare const PROMPT_APPLICATION_ID_TAG = "application_id";
11
+ export declare const PROMPT_CORE_MODEL_TAG = "core_model";
12
+ export declare const PROMPT_HAD_FALLBACK_TAG = "had_fallback";
11
13
  export declare const PROMPT_ORGANIZATION_ID_TAG = "organization_id";
14
+ export declare const METRIC_CREDITS = "superblocks.clark.prompt.credits";
15
+ /**
16
+ * Credit-scale bucket boundaries for credits-per-prompt. Centered on the
17
+ * default prompt-usage alarm threshold (10) so p95/avg dashboards resolve
18
+ * near the golden-metric alert edge.
19
+ */
20
+ export declare const PROMPT_CREDITS_BUCKETS: readonly [0.5, 1, 2, 5, 7.5, 10, 15, 25, 50, 100, 250];
21
+ export interface PromptMetricLabels {
22
+ coreModel?: string;
23
+ hadFallback?: boolean;
24
+ }
25
+ export declare function resolvePromptMetricLabels(context: {
26
+ llmConfig?: {
27
+ coreModel?: string;
28
+ };
29
+ workflowMetrics?: {
30
+ hadProviderFallback?: boolean;
31
+ };
32
+ }): PromptMetricLabels;
12
33
  export interface PromptRequestMetricIdentity {
13
34
  applicationId?: string;
14
35
  organizationId?: string;
15
36
  }
16
37
  export declare function setPromptRequestMetricIdentity(identity: PromptRequestMetricIdentity): void;
17
- export declare function recordPromptAttempt(outcomeDedupeKey?: string): void;
38
+ export declare function recordPromptAttempt(params?: {
39
+ coreModel?: string;
40
+ outcomeDedupeKey?: string;
41
+ }): void;
18
42
  export declare function resolvePromptOutcomeDedupeKey(context: {
19
43
  promptId?: string;
20
44
  promptOutcomeDedupeKey?: string;
21
45
  }): string | undefined;
22
46
  export declare function recordPromptOutcome(params: {
47
+ coreModel?: string;
23
48
  dedupeKey: string | undefined;
24
- outcome: PromptOutcome;
25
49
  failure?: PromptFailure;
50
+ hadFallback?: boolean;
51
+ outcome: PromptOutcome;
26
52
  }): void;
53
+ export declare function recordPromptCredits(params: {
54
+ credits: number;
55
+ dedupeKey: string | undefined;
56
+ } & PromptMetricLabels): void;
27
57
  export declare function resolvePromptRequestDedupeKey(request: {
28
58
  requestId?: string;
29
59
  prompt: string;
@@ -64,12 +94,15 @@ export declare function recordAwaitingUserHandoffDismissed(params: {
64
94
  reason: AwaitingUserDismissReason;
65
95
  }): void;
66
96
  export declare function recordAwaitingUserPromptOutcome(params: {
67
- dedupeKey: string | undefined;
68
97
  advice?: string;
98
+ coreModel?: string;
69
99
  countsAsPromptSuccess?: boolean;
100
+ dedupeKey: string | undefined;
101
+ hadFallback?: boolean;
70
102
  }): boolean;
71
103
  /** Record attempt + immediate failure for pre-FSM entry rejections (no promptId yet). */
72
104
  export declare function recordPromptEntryRejection(params: {
105
+ coreModel?: string;
73
106
  dedupeKey: string | undefined;
74
107
  failure: PromptFailure;
75
108
  }): void;
@@ -1 +1 @@
1
- {"version":3,"file":"prompt-request-metrics.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/state-machine/helpers/prompt-request-metrics.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prompt-request-metrics.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/state-machine/helpers/prompt-request-metrics.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { metrics } from "@opentelemetry/api";
2
+ import { coreModelLabel } from "@superblocksteam/library-shared/types";
2
3
  import { AGENT_CANCELED, AGENT_NEEDS_USER_INPUT, APP_RUNTIME_UPDATED_WITHOUT_EDITS, RUNTIME_REVIEW_FINISHED, USER_CANCELED, V3_AGENT_FINISHED, } from "../clark-fsm.js";
3
4
  import { promptFailureAttributes, promptFailurePlatform, promptFailureUserCanceled, promptOutcomeTagsFromFailure, PROMPT_OUTCOME_TAG, } from "./prompt-failure.js";
4
5
  export const PROMPT_OUTCOMES = ["failure", "success"];
@@ -11,13 +12,47 @@ export const METRIC_AWAITING_USER_DISMISSED = "superblocks.clark.prompt.awaiting
11
12
  export const AWAITING_USER_DISMISS_REASONS = ["cancel", "new_prompt"];
12
13
  export const AWAITING_USER_DISMISS_REASON_TAG = "dismiss_reason";
13
14
  export const PROMPT_APPLICATION_ID_TAG = "application_id";
15
+ export const PROMPT_CORE_MODEL_TAG = "core_model";
16
+ export const PROMPT_HAD_FALLBACK_TAG = "had_fallback";
14
17
  export const PROMPT_ORGANIZATION_ID_TAG = "organization_id";
18
+ export const METRIC_CREDITS = "superblocks.clark.prompt.credits";
19
+ /**
20
+ * Credit-scale bucket boundaries for credits-per-prompt. Centered on the
21
+ * default prompt-usage alarm threshold (10) so p95/avg dashboards resolve
22
+ * near the golden-metric alert edge.
23
+ */
24
+ export const PROMPT_CREDITS_BUCKETS = [
25
+ 0.5, 1, 2, 5, 7.5, 10, 15, 25, 50, 100, 250,
26
+ ];
27
+ export function resolvePromptMetricLabels(context) {
28
+ return {
29
+ coreModel: context.llmConfig?.coreModel,
30
+ hadFallback: context.workflowMetrics?.hadProviderFallback ?? false,
31
+ };
32
+ }
33
+ function promptCoreModelAttributes(labels) {
34
+ const attributes = {};
35
+ // Absent stays absent: a prompt that reported no model and one that reported
36
+ // a model we don't recognize are different facts, and only the latter needs
37
+ // bounding.
38
+ if (labels.coreModel) {
39
+ attributes[PROMPT_CORE_MODEL_TAG] = coreModelLabel(labels.coreModel);
40
+ }
41
+ return attributes;
42
+ }
43
+ function promptOutcomeModelAttributes(labels) {
44
+ return {
45
+ ...promptCoreModelAttributes(labels),
46
+ [PROMPT_HAD_FALLBACK_TAG]: labels.hadFallback ? "true" : "false",
47
+ };
48
+ }
15
49
  class PromptRequestMetrics {
16
50
  cachedMeter;
17
51
  cachedInstruments;
18
52
  applicationId;
19
53
  organizationId;
20
54
  recordedAwaitingUserDismissedKeys = new Set();
55
+ recordedCreditsKeys = new Set();
21
56
  recordedOutcomeKeys = new Set();
22
57
  setIdentity(identity) {
23
58
  this.applicationId = identity.applicationId;
@@ -33,6 +68,24 @@ class PromptRequestMetrics {
33
68
  }
34
69
  return attributes;
35
70
  }
71
+ /**
72
+ * Org + core_model + had_fallback for the credits histogram. Credits is
73
+ * cardinality-sensitive, so application_id stays off it; core_model and
74
+ * had_fallback are bounded (a fixed model set and a boolean) and are what
75
+ * separate per-model cost from fallback-contaminated traffic.
76
+ */
77
+ creditsAttributes(labels) {
78
+ const attributes = this.creditsAttributesBase();
79
+ Object.assign(attributes, promptOutcomeModelAttributes(labels));
80
+ return attributes;
81
+ }
82
+ creditsAttributesBase() {
83
+ const attributes = {};
84
+ if (this.organizationId) {
85
+ attributes[PROMPT_ORGANIZATION_ID_TAG] = this.organizationId;
86
+ }
87
+ return attributes;
88
+ }
36
89
  getInstruments() {
37
90
  const meter = metrics.getMeter(METER_NAME);
38
91
  if (meter === this.cachedMeter && this.cachedInstruments) {
@@ -44,19 +97,29 @@ class PromptRequestMetrics {
44
97
  description: "User prompt requests accepted by the Clark agent loop entrypoint.",
45
98
  unit: "1",
46
99
  }),
47
- outcomeCounter: meter.createCounter(METRIC_OUTCOMES, {
48
- description: "Terminal outcomes for user prompt requests in the Clark agent loop.",
49
- unit: "1",
50
- }),
51
100
  awaitingUserDismissedCounter: meter.createCounter(METRIC_AWAITING_USER_DISMISSED, {
52
101
  description: "User canceled or dismissed Clark while awaiting input after a successful handoff.",
53
102
  unit: "1",
54
103
  }),
104
+ creditsHistogram: meter.createHistogram(METRIC_CREDITS, {
105
+ description: "AI credits consumed by a Clark user prompt at any terminal outcome (golden cost metric). Labeled by organization_id, core_model, and had_fallback.",
106
+ unit: "{credit}",
107
+ advice: {
108
+ explicitBucketBoundaries: [...PROMPT_CREDITS_BUCKETS],
109
+ },
110
+ }),
111
+ outcomeCounter: meter.createCounter(METRIC_OUTCOMES, {
112
+ description: "Terminal outcomes for user prompt requests in the Clark agent loop.",
113
+ unit: "1",
114
+ }),
55
115
  };
56
116
  return this.cachedInstruments;
57
117
  }
58
- recordAttempt() {
59
- this.getInstruments().attemptCounter.add(1, this.baseAttributes());
118
+ recordAttempt(labels = {}) {
119
+ this.getInstruments().attemptCounter.add(1, {
120
+ ...this.baseAttributes(),
121
+ ...promptCoreModelAttributes(labels),
122
+ });
60
123
  }
61
124
  /** Allow a new terminal outcome when the same request is retried. */
62
125
  forgetOutcomeDedupeKey(dedupeKey) {
@@ -72,6 +135,19 @@ class PromptRequestMetrics {
72
135
  [AWAITING_USER_DISMISS_REASON_TAG]: params.reason,
73
136
  });
74
137
  }
138
+ /**
139
+ * Record credits for one prompt at its terminal outcome, whether it
140
+ * completed, was canceled, or gave up. Dedupe key is `promptId` (a fresh
141
+ * UUID per generate), so retries do not need a clear path — unlike
142
+ * outcomes, which reuse requestId-based keys across attempts.
143
+ */
144
+ recordCredits(params) {
145
+ if (this.recordedCreditsKeys.has(params.dedupeKey)) {
146
+ return;
147
+ }
148
+ this.recordedCreditsKeys.add(params.dedupeKey);
149
+ this.getInstruments().creditsHistogram.record(params.credits, this.creditsAttributes(params.labels));
150
+ }
75
151
  recordOutcome(params) {
76
152
  if (this.recordedOutcomeKeys.has(params.dedupeKey)) {
77
153
  return;
@@ -79,6 +155,7 @@ class PromptRequestMetrics {
79
155
  this.recordedOutcomeKeys.add(params.dedupeKey);
80
156
  const attributes = {
81
157
  ...this.baseAttributes(),
158
+ ...promptOutcomeModelAttributes(params.labels ?? {}),
82
159
  outcome: params.outcome,
83
160
  };
84
161
  if (params.outcome === "failure" && params.failure) {
@@ -92,9 +169,15 @@ class PromptRequestMetrics {
92
169
  return;
93
170
  }
94
171
  this.recordedOutcomeKeys.add(params.dedupeKey);
95
- this.getInstruments().attemptCounter.add(1, this.baseAttributes());
172
+ const coreModelAttributes = promptCoreModelAttributes(params.labels ?? {});
173
+ const outcomeModelAttributes = promptOutcomeModelAttributes(params.labels ?? {});
174
+ this.getInstruments().attemptCounter.add(1, {
175
+ ...this.baseAttributes(),
176
+ ...coreModelAttributes,
177
+ });
96
178
  this.getInstruments().outcomeCounter.add(1, {
97
179
  ...this.baseAttributes(),
180
+ ...outcomeModelAttributes,
98
181
  outcome: "failure",
99
182
  ...promptFailureAttributes(params.failure),
100
183
  });
@@ -105,6 +188,7 @@ class PromptRequestMetrics {
105
188
  this.applicationId = undefined;
106
189
  this.organizationId = undefined;
107
190
  this.recordedAwaitingUserDismissedKeys.clear();
191
+ this.recordedCreditsKeys.clear();
108
192
  this.recordedOutcomeKeys.clear();
109
193
  }
110
194
  }
@@ -112,11 +196,11 @@ export function setPromptRequestMetricIdentity(identity) {
112
196
  promptRequestMetrics.setIdentity(identity);
113
197
  }
114
198
  const promptRequestMetrics = new PromptRequestMetrics();
115
- export function recordPromptAttempt(outcomeDedupeKey) {
116
- if (outcomeDedupeKey) {
117
- promptRequestMetrics.forgetOutcomeDedupeKey(outcomeDedupeKey);
199
+ export function recordPromptAttempt(params) {
200
+ if (params?.outcomeDedupeKey) {
201
+ promptRequestMetrics.forgetOutcomeDedupeKey(params.outcomeDedupeKey);
118
202
  }
119
- promptRequestMetrics.recordAttempt();
203
+ promptRequestMetrics.recordAttempt({ coreModel: params?.coreModel });
120
204
  }
121
205
  export function resolvePromptOutcomeDedupeKey(context) {
122
206
  return context.promptOutcomeDedupeKey ?? context.promptId;
@@ -129,6 +213,23 @@ export function recordPromptOutcome(params) {
129
213
  dedupeKey: params.dedupeKey,
130
214
  outcome: params.outcome,
131
215
  failure: params.failure,
216
+ labels: {
217
+ coreModel: params.coreModel,
218
+ hadFallback: params.hadFallback ?? false,
219
+ },
220
+ });
221
+ }
222
+ export function recordPromptCredits(params) {
223
+ if (!params.dedupeKey) {
224
+ return;
225
+ }
226
+ promptRequestMetrics.recordCredits({
227
+ dedupeKey: params.dedupeKey,
228
+ credits: params.credits,
229
+ labels: {
230
+ coreModel: params.coreModel,
231
+ hadFallback: params.hadFallback ?? false,
232
+ },
132
233
  });
133
234
  }
134
235
  export function resolvePromptRequestDedupeKey(request) {
@@ -197,10 +298,15 @@ export function recordAwaitingUserPromptOutcome(params) {
197
298
  if (!params.dedupeKey) {
198
299
  return false;
199
300
  }
301
+ const outcomeLabels = {
302
+ coreModel: params.coreModel,
303
+ hadFallback: params.hadFallback ?? false,
304
+ };
200
305
  if (params.countsAsPromptSuccess) {
201
306
  recordPromptOutcome({
202
307
  dedupeKey: params.dedupeKey,
203
308
  outcome: "success",
309
+ ...outcomeLabels,
204
310
  });
205
311
  return true;
206
312
  }
@@ -209,6 +315,7 @@ export function recordAwaitingUserPromptOutcome(params) {
209
315
  dedupeKey: params.dedupeKey,
210
316
  outcome: "failure",
211
317
  failure: promptFailurePlatform("unexpected"),
318
+ ...outcomeLabels,
212
319
  });
213
320
  }
214
321
  return false;
@@ -221,6 +328,7 @@ export function recordPromptEntryRejection(params) {
221
328
  promptRequestMetrics.recordEntryRejection({
222
329
  dedupeKey: params.dedupeKey,
223
330
  failure: params.failure,
331
+ labels: { coreModel: params.coreModel },
224
332
  });
225
333
  }
226
334
  export function _resetPromptRequestMetricsForTesting() {
@@ -1 +1 @@
1
- {"version":3,"file":"prompt-request-metrics.js","sourceRoot":"","sources":["../../../../src/ai-service/state-machine/helpers/prompt-request-metrics.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prompt-request-metrics.js","sourceRoot":"","sources":["../../../../src/ai-service/state-machine/helpers/prompt-request-metrics.ts"],"names":[],"mappings":"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"}
@@ -40,6 +40,8 @@ export interface StartToolOutput {
40
40
  /** Fuller classified failure detail for Clark (optional). */
41
41
  detail?: string;
42
42
  label?: string;
43
+ /** When ensure fans out, how many editor datatags were provisioned. */
44
+ tagCount?: number;
43
45
  }
44
46
  /**
45
47
  * Subset of `TaskType` the factory actually reads. Module-scoped task
@@ -1 +1 @@
1
- {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/ai-service/tasks/factory.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB,OAAO,EAEL,eAAe,EACf,KAAK,IAAI,EACT,KAAK,YAAY,EACjB,KAAK,WAAW,EACjB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE;QACR,SAAS,EAAE,SAAS,CAAC;QACrB,iBAAiB,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;KAC9C,CAAC;CACH;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;IACxD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6DAA6D;IAC7D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;GASG;AACH,UAAU,6BAA6B,CACrC,KAAK,EACL,MAAM,SAAS,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;IAE/B;;;;;;;;;;OAUG;IACH,kCAAkC,CAAC,EAAE,OAAO,CAAC;IAC7C,QAAQ,EAAE,YAAY,CAAC;IACvB,iBAAiB,CAAC,EAAE,eAAe,CAAC;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,2BAA2B,CACzC,KAAK,EACL,MAAM,SAAS,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAE/B,QAAQ,EAAE,6BAA6B,CAAC,KAAK,EAAE,MAAM,CAAC,GACrD,WAAW,CAAC,sBAAsB,EAAE,IAAI,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC,CAwCnE;AAED;;;;;;;GAOG;AACH,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,SAAS,EAChB,KAAK,EAAE,aAAa,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,GAC5C,IAAI,CAIN"}
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/ai-service/tasks/factory.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB,OAAO,EAEL,eAAe,EACf,KAAK,IAAI,EACT,KAAK,YAAY,EACjB,KAAK,WAAW,EACjB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE;QACR,SAAS,EAAE,SAAS,CAAC;QACrB,iBAAiB,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;KAC9C,CAAC;CACH;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;IACxD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6DAA6D;IAC7D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uEAAuE;IACvE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;GASG;AACH,UAAU,6BAA6B,CACrC,KAAK,EACL,MAAM,SAAS,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;IAE/B;;;;;;;;;;OAUG;IACH,kCAAkC,CAAC,EAAE,OAAO,CAAC;IAC7C,QAAQ,EAAE,YAAY,CAAC;IACvB,iBAAiB,CAAC,EAAE,eAAe,CAAC;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,2BAA2B,CACzC,KAAK,EACL,MAAM,SAAS,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAE/B,QAAQ,EAAE,6BAA6B,CAAC,KAAK,EAAE,MAAM,CAAC,GACrD,WAAW,CAAC,sBAAsB,EAAE,IAAI,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC,CAqDnE;AAED;;;;;;;GAOG;AACH,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,SAAS,EAChB,KAAK,EAAE,aAAa,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,GAC5C,IAAI,CAIN"}
@@ -39,6 +39,13 @@ export function defineBackgroundTaskFactory(metadata) {
39
39
  result.error = error;
40
40
  if (detail !== undefined)
41
41
  result.detail = detail;
42
+ // Surface fan-out tag count from the provision task handle so the
43
+ // chat kickoff title can say "N tags".
44
+ const externalHandle = services.taskStore.get(handle.taskId)?.externalHandle;
45
+ if (typeof externalHandle?.tagCount === "number" &&
46
+ externalHandle.tagCount > 1) {
47
+ result.tagCount = externalHandle.tagCount;
48
+ }
42
49
  return result;
43
50
  },
44
51
  }));