@superblocksteam/vite-plugin-file-sync 2.0.137-next.0 → 2.0.138-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 (229) hide show
  1. package/dist/ai-service/agent/middleware.d.ts.map +1 -1
  2. package/dist/ai-service/agent/middleware.js +2 -22
  3. package/dist/ai-service/agent/middleware.js.map +1 -1
  4. package/dist/ai-service/agent/tools/build-capture-screenshot.d.ts +1 -0
  5. package/dist/ai-service/agent/tools/build-capture-screenshot.d.ts.map +1 -1
  6. package/dist/ai-service/agent/tools/build-capture-screenshot.js +150 -7
  7. package/dist/ai-service/agent/tools/build-capture-screenshot.js.map +1 -1
  8. package/dist/ai-service/agent/tools/build-read-file.d.ts +10 -0
  9. package/dist/ai-service/agent/tools/build-read-file.d.ts.map +1 -1
  10. package/dist/ai-service/agent/tools/build-read-file.js +14 -1
  11. package/dist/ai-service/agent/tools/build-read-file.js.map +1 -1
  12. package/dist/ai-service/agent/tools/index.d.ts +1 -1
  13. package/dist/ai-service/agent/tools/index.d.ts.map +1 -1
  14. package/dist/ai-service/agent/tools/index.js +1 -1
  15. package/dist/ai-service/agent/tools/index.js.map +1 -1
  16. package/dist/ai-service/agent/tools.d.ts +1 -1
  17. package/dist/ai-service/agent/tools.d.ts.map +1 -1
  18. package/dist/ai-service/agent/tools.js +15 -1
  19. package/dist/ai-service/agent/tools.js.map +1 -1
  20. package/dist/ai-service/agent/tools2/tools/grep.d.ts.map +1 -1
  21. package/dist/ai-service/agent/tools2/tools/grep.js +2 -1
  22. package/dist/ai-service/agent/tools2/tools/grep.js.map +1 -1
  23. package/dist/ai-service/agent/tools2/tools/remember-knowledge.d.ts.map +1 -1
  24. package/dist/ai-service/agent/tools2/tools/remember-knowledge.js +8 -0
  25. package/dist/ai-service/agent/tools2/tools/remember-knowledge.js.map +1 -1
  26. package/dist/ai-service/agent/tools2/tools/start-test-run.d.ts.map +1 -1
  27. package/dist/ai-service/agent/tools2/tools/start-test-run.js +14 -6
  28. package/dist/ai-service/agent/tools2/tools/start-test-run.js.map +1 -1
  29. package/dist/ai-service/agent/tools2/tools/web-fetch.d.ts +2 -0
  30. package/dist/ai-service/agent/tools2/tools/web-fetch.d.ts.map +1 -1
  31. package/dist/ai-service/agent/tools2/tools/web-fetch.js +10 -5
  32. package/dist/ai-service/agent/tools2/tools/web-fetch.js.map +1 -1
  33. package/dist/ai-service/agent/utils.d.ts.map +1 -1
  34. package/dist/ai-service/agent/utils.js +25 -7
  35. package/dist/ai-service/agent/utils.js.map +1 -1
  36. package/dist/ai-service/app-interface/linter.d.ts.map +1 -1
  37. package/dist/ai-service/app-interface/linter.js +14 -3
  38. package/dist/ai-service/app-interface/linter.js.map +1 -1
  39. package/dist/ai-service/app-interface/npm-package-lookup.d.ts +19 -14
  40. package/dist/ai-service/app-interface/npm-package-lookup.d.ts.map +1 -1
  41. package/dist/ai-service/app-interface/npm-package-lookup.js +56 -23
  42. package/dist/ai-service/app-interface/npm-package-lookup.js.map +1 -1
  43. package/dist/ai-service/app-interface/npm-registry.d.ts +96 -48
  44. package/dist/ai-service/app-interface/npm-registry.d.ts.map +1 -1
  45. package/dist/ai-service/app-interface/npm-registry.js +247 -220
  46. package/dist/ai-service/app-interface/npm-registry.js.map +1 -1
  47. package/dist/ai-service/app-interface/shell.d.ts +36 -0
  48. package/dist/ai-service/app-interface/shell.d.ts.map +1 -1
  49. package/dist/ai-service/app-interface/shell.js +183 -8
  50. package/dist/ai-service/app-interface/shell.js.map +1 -1
  51. package/dist/ai-service/app-skills/helpers.d.ts.map +1 -1
  52. package/dist/ai-service/app-skills/helpers.js +48 -8
  53. package/dist/ai-service/app-skills/helpers.js.map +1 -1
  54. package/dist/ai-service/app-skills/manager.d.ts +5 -0
  55. package/dist/ai-service/app-skills/manager.d.ts.map +1 -1
  56. package/dist/ai-service/app-skills/manager.js +13 -4
  57. package/dist/ai-service/app-skills/manager.js.map +1 -1
  58. package/dist/ai-service/attachments/uploaded-content-part.d.ts.map +1 -1
  59. package/dist/ai-service/attachments/uploaded-content-part.js +12 -5
  60. package/dist/ai-service/attachments/uploaded-content-part.js.map +1 -1
  61. package/dist/ai-service/index.d.ts +1 -2
  62. package/dist/ai-service/index.d.ts.map +1 -1
  63. package/dist/ai-service/index.js +16 -175
  64. package/dist/ai-service/index.js.map +1 -1
  65. package/dist/ai-service/judge/judge-eval-service-runner.js +0 -4
  66. package/dist/ai-service/judge/judge-eval-service-runner.js.map +1 -1
  67. package/dist/ai-service/judge/judge-service.js +1 -1
  68. package/dist/ai-service/judge/judge-service.js.map +1 -1
  69. package/dist/ai-service/knowledge/knowledge-metrics-emitters.d.ts +20 -0
  70. package/dist/ai-service/knowledge/knowledge-metrics-emitters.d.ts.map +1 -0
  71. package/dist/ai-service/knowledge/knowledge-metrics-emitters.js +77 -0
  72. package/dist/ai-service/knowledge/knowledge-metrics-emitters.js.map +1 -0
  73. package/dist/ai-service/knowledge/knowledge-metrics.d.ts +43 -0
  74. package/dist/ai-service/knowledge/knowledge-metrics.d.ts.map +1 -0
  75. package/dist/ai-service/knowledge/knowledge-metrics.js +217 -0
  76. package/dist/ai-service/knowledge/knowledge-metrics.js.map +1 -0
  77. package/dist/ai-service/llm/client.d.ts +144 -18
  78. package/dist/ai-service/llm/client.d.ts.map +1 -1
  79. package/dist/ai-service/llm/client.js +303 -48
  80. package/dist/ai-service/llm/client.js.map +1 -1
  81. package/dist/ai-service/llm/context-v2/context-metrics.d.ts +1 -0
  82. package/dist/ai-service/llm/context-v2/context-metrics.d.ts.map +1 -1
  83. package/dist/ai-service/llm/context-v2/context-metrics.js +14 -1
  84. package/dist/ai-service/llm/context-v2/context-metrics.js.map +1 -1
  85. package/dist/ai-service/llm/context-v2/context.d.ts +3 -0
  86. package/dist/ai-service/llm/context-v2/context.d.ts.map +1 -1
  87. package/dist/ai-service/llm/context-v2/context.js +34 -1
  88. package/dist/ai-service/llm/context-v2/context.js.map +1 -1
  89. package/dist/ai-service/llm/context-v2/manager.d.ts.map +1 -1
  90. package/dist/ai-service/llm/context-v2/manager.js +4 -1
  91. package/dist/ai-service/llm/context-v2/manager.js.map +1 -1
  92. package/dist/ai-service/llm/interaction/adapters/vercel.d.ts +1 -1
  93. package/dist/ai-service/llm/interaction/adapters/vercel.d.ts.map +1 -1
  94. package/dist/ai-service/llm/interaction/adapters/vercel.js +19 -4
  95. package/dist/ai-service/llm/interaction/adapters/vercel.js.map +1 -1
  96. package/dist/ai-service/llm/interaction/provider.d.ts +17 -3
  97. package/dist/ai-service/llm/interaction/provider.d.ts.map +1 -1
  98. package/dist/ai-service/llm/provider.d.ts.map +1 -1
  99. package/dist/ai-service/llm/provider.js +19 -15
  100. package/dist/ai-service/llm/provider.js.map +1 -1
  101. package/dist/ai-service/llm/stream/managed-stream.d.ts.map +1 -1
  102. package/dist/ai-service/llm/stream/managed-stream.js +25 -2
  103. package/dist/ai-service/llm/stream/managed-stream.js.map +1 -1
  104. package/dist/ai-service/llm/stream/observers/llmobs.d.ts +9 -0
  105. package/dist/ai-service/llm/stream/observers/llmobs.d.ts.map +1 -1
  106. package/dist/ai-service/llm/stream/observers/llmobs.js +22 -5
  107. package/dist/ai-service/llm/stream/observers/llmobs.js.map +1 -1
  108. package/dist/ai-service/llm/stream/observers/logging.d.ts.map +1 -1
  109. package/dist/ai-service/llm/stream/observers/logging.js +17 -12
  110. package/dist/ai-service/llm/stream/observers/logging.js.map +1 -1
  111. package/dist/ai-service/llm/stream/orchestrator.d.ts +1 -0
  112. package/dist/ai-service/llm/stream/orchestrator.d.ts.map +1 -1
  113. package/dist/ai-service/llm/stream/orchestrator.js +131 -0
  114. package/dist/ai-service/llm/stream/orchestrator.js.map +1 -1
  115. package/dist/ai-service/llm/types.d.ts +17 -6
  116. package/dist/ai-service/llm/types.d.ts.map +1 -1
  117. package/dist/ai-service/prompt-builder-service/classifiers/prompt-interpret-task.d.ts +3 -1
  118. package/dist/ai-service/prompt-builder-service/classifiers/prompt-interpret-task.d.ts.map +1 -1
  119. package/dist/ai-service/prompt-builder-service/classifiers/prompt-interpret-task.js +13 -5
  120. package/dist/ai-service/prompt-builder-service/classifiers/prompt-interpret-task.js.map +1 -1
  121. package/dist/ai-service/security/safety-classifier.d.ts +14 -1
  122. package/dist/ai-service/security/safety-classifier.d.ts.map +1 -1
  123. package/dist/ai-service/security/safety-classifier.js +26 -12
  124. package/dist/ai-service/security/safety-classifier.js.map +1 -1
  125. package/dist/ai-service/skills/system/third-party-migration/claude-design.generated.d.ts +1 -1
  126. package/dist/ai-service/skills/system/third-party-migration/claude-design.generated.d.ts.map +1 -1
  127. package/dist/ai-service/skills/system/third-party-migration/claude-design.generated.js +35 -18
  128. package/dist/ai-service/skills/system/third-party-migration/claude-design.generated.js.map +1 -1
  129. package/dist/ai-service/skills/system/third-party-migration/skill.generated.d.ts +1 -1
  130. package/dist/ai-service/skills/system/third-party-migration/skill.generated.d.ts.map +1 -1
  131. package/dist/ai-service/skills/system/third-party-migration/skill.generated.js +7 -5
  132. package/dist/ai-service/skills/system/third-party-migration/skill.generated.js.map +1 -1
  133. package/dist/ai-service/state-machine/clark-fsm.d.ts.map +1 -1
  134. package/dist/ai-service/state-machine/clark-fsm.js +3 -2
  135. package/dist/ai-service/state-machine/clark-fsm.js.map +1 -1
  136. package/dist/ai-service/state-machine/handlers/agent-planning.d.ts.map +1 -1
  137. package/dist/ai-service/state-machine/handlers/agent-planning.js +14 -7
  138. package/dist/ai-service/state-machine/handlers/agent-planning.js.map +1 -1
  139. package/dist/ai-service/state-machine/handlers/awaiting-user.d.ts +1 -1
  140. package/dist/ai-service/state-machine/handlers/awaiting-user.d.ts.map +1 -1
  141. package/dist/ai-service/state-machine/handlers/awaiting-user.js +40 -27
  142. package/dist/ai-service/state-machine/handlers/awaiting-user.js.map +1 -1
  143. package/dist/ai-service/state-machine/handlers/llm-generating.d.ts +14 -0
  144. package/dist/ai-service/state-machine/handlers/llm-generating.d.ts.map +1 -1
  145. package/dist/ai-service/state-machine/handlers/llm-generating.js +72 -16
  146. package/dist/ai-service/state-machine/handlers/llm-generating.js.map +1 -1
  147. package/dist/ai-service/state-machine/handlers/next-steps.d.ts +8 -1
  148. package/dist/ai-service/state-machine/handlers/next-steps.d.ts.map +1 -1
  149. package/dist/ai-service/state-machine/handlers/next-steps.js +13 -11
  150. package/dist/ai-service/state-machine/handlers/next-steps.js.map +1 -1
  151. package/dist/ai-service/state-machine/helpers/peer.d.ts.map +1 -1
  152. package/dist/ai-service/state-machine/helpers/peer.js +3 -2
  153. package/dist/ai-service/state-machine/helpers/peer.js.map +1 -1
  154. package/dist/ai-service/state-machine/helpers/stable-peer.d.ts +5 -0
  155. package/dist/ai-service/state-machine/helpers/stable-peer.d.ts.map +1 -1
  156. package/dist/ai-service/state-machine/helpers/stable-peer.js +37 -0
  157. package/dist/ai-service/state-machine/helpers/stable-peer.js.map +1 -1
  158. package/dist/ai-service/template-renderer.d.ts.map +1 -1
  159. package/dist/ai-service/template-renderer.js +2 -2
  160. package/dist/ai-service/template-renderer.js.map +1 -1
  161. package/dist/ai-service/types.d.ts +2 -2
  162. package/dist/ai-service/types.d.ts.map +1 -1
  163. package/dist/dev-server-ws-smoke-client.d.ts +41 -0
  164. package/dist/dev-server-ws-smoke-client.d.ts.map +1 -0
  165. package/dist/dev-server-ws-smoke-client.js +314 -0
  166. package/dist/dev-server-ws-smoke-client.js.map +1 -0
  167. package/dist/early-error-relay.d.ts +31 -0
  168. package/dist/early-error-relay.d.ts.map +1 -0
  169. package/dist/early-error-relay.js +88 -0
  170. package/dist/early-error-relay.js.map +1 -0
  171. package/dist/file-sync-vite-plugin.d.ts +26 -1
  172. package/dist/file-sync-vite-plugin.d.ts.map +1 -1
  173. package/dist/file-sync-vite-plugin.js +82 -43
  174. package/dist/file-sync-vite-plugin.js.map +1 -1
  175. package/dist/file-system-helpers.d.ts +13 -0
  176. package/dist/file-system-helpers.d.ts.map +1 -1
  177. package/dist/file-system-helpers.js +18 -1
  178. package/dist/file-system-helpers.js.map +1 -1
  179. package/dist/file-system-manager.d.ts +0 -1
  180. package/dist/file-system-manager.d.ts.map +1 -1
  181. package/dist/file-system-manager.js +0 -53
  182. package/dist/file-system-manager.js.map +1 -1
  183. package/dist/injected-index.d.ts +6 -0
  184. package/dist/injected-index.d.ts.map +1 -1
  185. package/dist/injected-index.js +59 -14
  186. package/dist/injected-index.js.map +1 -1
  187. package/dist/migration/migration-routes.d.ts +3 -0
  188. package/dist/migration/migration-routes.d.ts.map +1 -1
  189. package/dist/migration/migration-routes.js +93 -108
  190. package/dist/migration/migration-routes.js.map +1 -1
  191. package/dist/migration/restructure.d.ts +15 -0
  192. package/dist/migration/restructure.d.ts.map +1 -1
  193. package/dist/migration/restructure.js +50 -1
  194. package/dist/migration/restructure.js.map +1 -1
  195. package/dist/migration-templates/app-fullstack/eslint.config.js +6 -1
  196. package/dist/migration-templates/app-fullstack/package.json +2 -1
  197. package/dist/plugin-options.d.ts +7 -0
  198. package/dist/plugin-options.d.ts.map +1 -1
  199. package/dist/plugin-options.js.map +1 -1
  200. package/dist/socket-manager.d.ts.map +1 -1
  201. package/dist/socket-manager.js +0 -5
  202. package/dist/socket-manager.js.map +1 -1
  203. package/dist/sync-service/list-dir.d.ts +1 -1
  204. package/dist/sync-service/list-dir.js +3 -3
  205. package/dist/sync-service/list-dir.js.map +1 -1
  206. package/dist/util/log-sanitizer.d.ts.map +1 -1
  207. package/dist/util/log-sanitizer.js +13 -6
  208. package/dist/util/log-sanitizer.js.map +1 -1
  209. package/dist/util/summarize-for-logging.d.ts +14 -0
  210. package/dist/util/summarize-for-logging.d.ts.map +1 -0
  211. package/dist/util/summarize-for-logging.js +94 -0
  212. package/dist/util/summarize-for-logging.js.map +1 -0
  213. package/package.json +8 -8
  214. package/dist/ai-service/agent/tools2/tools/explain-code-finalize.d.ts +0 -4
  215. package/dist/ai-service/agent/tools2/tools/explain-code-finalize.d.ts.map +0 -1
  216. package/dist/ai-service/agent/tools2/tools/explain-code-finalize.js +0 -19
  217. package/dist/ai-service/agent/tools2/tools/explain-code-finalize.js.map +0 -1
  218. package/dist/ai-service/llm/impl/anthropic.d.ts +0 -3
  219. package/dist/ai-service/llm/impl/anthropic.d.ts.map +0 -1
  220. package/dist/ai-service/llm/impl/anthropic.js +0 -15
  221. package/dist/ai-service/llm/impl/anthropic.js.map +0 -1
  222. package/dist/ai-service/prompts/explain-code.d.ts +0 -7
  223. package/dist/ai-service/prompts/explain-code.d.ts.map +0 -1
  224. package/dist/ai-service/prompts/explain-code.js +0 -23
  225. package/dist/ai-service/prompts/explain-code.js.map +0 -1
  226. package/dist/ai-service/util/json-stream-parser.d.ts +0 -20
  227. package/dist/ai-service/util/json-stream-parser.d.ts.map +0 -1
  228. package/dist/ai-service/util/json-stream-parser.js +0 -139
  229. package/dist/ai-service/util/json-stream-parser.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"knowledge-metrics-emitters.d.ts","sourceRoot":"","sources":["../../../src/ai-service/knowledge/knowledge-metrics-emitters.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAIL,KAAK,cAAc,EACpB,MAAM,wBAAwB,CAAC;AA+BhC;;GAEG;AACH,wBAAgB,8BAA8B,CAAC,KAAK,EAAE;IACpD,UAAU,CAAC,EAAE;QACX,sBAAsB,EAAE,MAAM,EAAE,CAAC;QACjC,kBAAkB,EAAE,MAAM,CAAC;KAC5B,CAAC;IACF,QAAQ,EAAE,WAAW,CAAC;CACvB,GAAG,IAAI,CA+BP;AAED,wBAAgB,2BAA2B,CAAC,KAAK,EAAE;IACjD,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,cAAc,CAAC;CACvB,GAAG,IAAI,CAMP;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEhE;AAED,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAElE;AAED,wBAAgB,kCAAkC,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAQzE"}
@@ -0,0 +1,77 @@
1
+ import { FactAccessType } from "@superblocksteam/shared";
2
+ import { recordKnowledgeIndexFacts, recordKnowledgeRead, resetKnowledgeReadTrackerForTurn, } from "./knowledge-metrics.js";
3
+ function countOnDemandFacts(facts) {
4
+ return facts.filter((fact) => fact.accessType === FactAccessType.ON_DEMAND)
5
+ .length;
6
+ }
7
+ /** Matches `generateOnDemandFactsSkillIndex`: integration entries include all facts. */
8
+ function countIntegrationIndexFacts(facts) {
9
+ return Object.values(facts.integrations).reduce((total, integrationFacts) => total + integrationFacts.length, 0);
10
+ }
11
+ function recordAlwaysInjectReads(layer, facts) {
12
+ for (const fact of facts) {
13
+ if (fact.accessType !== FactAccessType.ALWAYS_INJECT) {
14
+ continue;
15
+ }
16
+ recordKnowledgeRead({
17
+ accessType: "always_inject",
18
+ dedupeKey: fact.id,
19
+ layer,
20
+ });
21
+ }
22
+ }
23
+ /**
24
+ * Emit read and index metrics at the start of an LLM turn after facts are loaded.
25
+ */
26
+ export function recordKnowledgeTurnLoadMetrics(input) {
27
+ resetKnowledgeReadTrackerForTurn();
28
+ recordAlwaysInjectReads("org", input.rpcFacts.org);
29
+ recordAlwaysInjectReads("user", input.rpcFacts.user);
30
+ for (const integrationFacts of Object.values(input.rpcFacts.integrations)) {
31
+ recordAlwaysInjectReads("integration", integrationFacts);
32
+ }
33
+ const indexCounts = {
34
+ integration: countIntegrationIndexFacts(input.rpcFacts),
35
+ org: countOnDemandFacts(input.rpcFacts.org),
36
+ user: countOnDemandFacts(input.rpcFacts.user),
37
+ };
38
+ if (input.appMetrics) {
39
+ for (const dedupeKey of input.appMetrics.alwaysInjectDedupeKeys) {
40
+ recordKnowledgeRead({
41
+ accessType: "always_inject",
42
+ dedupeKey,
43
+ layer: "app",
44
+ });
45
+ }
46
+ indexCounts.app = input.appMetrics.onDemandIndexCount;
47
+ }
48
+ else {
49
+ // Explicit zero so a failed load does not leave a stale app count from a
50
+ // prior turn (ObservableGauge only overwrites layers present in payload).
51
+ indexCounts.app = 0;
52
+ }
53
+ recordKnowledgeIndexFacts({ counts: indexCounts });
54
+ }
55
+ export function recordKnowledgeOnDemandRead(input) {
56
+ recordKnowledgeRead({
57
+ accessType: "on_demand",
58
+ dedupeKey: input.dedupeKey,
59
+ layer: input.layer,
60
+ });
61
+ }
62
+ export function isAppKnowledgeReadPath(filePath) {
63
+ return filePath.startsWith("skills/app/") && filePath.endsWith(".md");
64
+ }
65
+ export function appKnowledgeReadDedupeKey(filePath) {
66
+ return filePath;
67
+ }
68
+ export function recordAppKnowledgeReadIfApplicable(filePath) {
69
+ if (!isAppKnowledgeReadPath(filePath)) {
70
+ return;
71
+ }
72
+ recordKnowledgeOnDemandRead({
73
+ dedupeKey: appKnowledgeReadDedupeKey(filePath),
74
+ layer: "app",
75
+ });
76
+ }
77
+ //# sourceMappingURL=knowledge-metrics-emitters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"knowledge-metrics-emitters.js","sourceRoot":"","sources":["../../../src/ai-service/knowledge/knowledge-metrics-emitters.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ export declare const KNOWLEDGE_LAYERS: readonly ["app", "integration", "org", "user"];
2
+ export type KnowledgeLayer = (typeof KNOWLEDGE_LAYERS)[number];
3
+ export declare const KNOWLEDGE_ACCESS_TYPES: readonly ["always_inject", "on_demand"];
4
+ export type KnowledgeAccessType = (typeof KNOWLEDGE_ACCESS_TYPES)[number];
5
+ export declare const KNOWLEDGE_SUGGESTION_SOURCES: readonly ["remember_knowledge"];
6
+ export type KnowledgeSuggestionSource = (typeof KNOWLEDGE_SUGGESTION_SOURCES)[number];
7
+ export declare const KNOWLEDGE_APPROVAL_PROMPT_TYPES: readonly ["confirm", "multi_choice", "remember_knowledge_draft"];
8
+ export type KnowledgeApprovalPromptType = (typeof KNOWLEDGE_APPROVAL_PROMPT_TYPES)[number];
9
+ export declare const KNOWLEDGE_APPROVAL_OUTCOMES: readonly ["approved", "denied"];
10
+ export type KnowledgeApprovalOutcome = (typeof KNOWLEDGE_APPROVAL_OUTCOMES)[number];
11
+ export declare const KNOWLEDGE_WRITE_SCOPES: readonly ["app", "integration", "org", "user"];
12
+ export type KnowledgeWriteScope = (typeof KNOWLEDGE_WRITE_SCOPES)[number];
13
+ export declare const KNOWLEDGE_WRITE_ACTIONS: readonly ["create", "delete", "update"];
14
+ export type KnowledgeWriteAction = (typeof KNOWLEDGE_WRITE_ACTIONS)[number];
15
+ export declare const KNOWLEDGE_WRITE_STATUSES: readonly ["created", "created_remote", "deleted", "failed", "skipped_not_found", "updated"];
16
+ export type KnowledgeWriteStatus = (typeof KNOWLEDGE_WRITE_STATUSES)[number];
17
+ export declare function resetKnowledgeReadTrackerForTurn(): void;
18
+ export declare function recordKnowledgeRead(input: {
19
+ accessType: KnowledgeAccessType;
20
+ dedupeKey: string;
21
+ layer: KnowledgeLayer;
22
+ }): void;
23
+ export declare function recordKnowledgeIndexFacts(input: {
24
+ counts: Partial<Record<KnowledgeLayer, number>>;
25
+ }): void;
26
+ export declare function recordKnowledgeSuggestion(input: {
27
+ candidateCount: number;
28
+ source: KnowledgeSuggestionSource;
29
+ }): void;
30
+ export declare function recordKnowledgeDuplicateHint(): void;
31
+ export declare function recordKnowledgeApprovalPrompt(input: {
32
+ promptType: KnowledgeApprovalPromptType;
33
+ }): void;
34
+ export declare function recordKnowledgeApprovalResponse(input: {
35
+ outcome: KnowledgeApprovalOutcome;
36
+ }): void;
37
+ export declare function recordKnowledgeWrite(input: {
38
+ action: KnowledgeWriteAction;
39
+ scope: KnowledgeWriteScope;
40
+ status: KnowledgeWriteStatus;
41
+ }): void;
42
+ export declare function _resetClarkKnowledgeMetricsForTesting(): void;
43
+ //# sourceMappingURL=knowledge-metrics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"knowledge-metrics.d.ts","sourceRoot":"","sources":["../../../src/ai-service/knowledge/knowledge-metrics.ts"],"names":[],"mappings":"AAoCA,eAAO,MAAM,gBAAgB,gDAAiD,CAAC;AAC/E,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE/D,eAAO,MAAM,sBAAsB,yCAA0C,CAAC;AAC9E,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1E,eAAO,MAAM,4BAA4B,iCAAkC,CAAC;AAC5E,MAAM,MAAM,yBAAyB,GACnC,CAAC,OAAO,4BAA4B,CAAC,CAAC,MAAM,CAAC,CAAC;AAEhD,eAAO,MAAM,+BAA+B,kEAIlC,CAAC;AACX,MAAM,MAAM,2BAA2B,GACrC,CAAC,OAAO,+BAA+B,CAAC,CAAC,MAAM,CAAC,CAAC;AAEnD,eAAO,MAAM,2BAA2B,iCAAkC,CAAC;AAC3E,MAAM,MAAM,wBAAwB,GAClC,CAAC,OAAO,2BAA2B,CAAC,CAAC,MAAM,CAAC,CAAC;AAE/C,eAAO,MAAM,sBAAsB,gDAKzB,CAAC;AACX,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1E,eAAO,MAAM,uBAAuB,yCAA0C,CAAC;AAC/E,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE5E,eAAO,MAAM,wBAAwB,6FAO3B,CAAC;AACX,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,wBAAwB,CAAC,CAAC,MAAM,CAAC,CAAC;AAyM7E,wBAAgB,gCAAgC,IAAI,IAAI,CAEvD;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE;IACzC,UAAU,EAAE,mBAAmB,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,cAAc,CAAC;CACvB,GAAG,IAAI,CAEP;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE;IAC/C,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC;CACjD,GAAG,IAAI,CAEP;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE;IAC/C,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,yBAAyB,CAAC;CACnC,GAAG,IAAI,CAEP;AAED,wBAAgB,4BAA4B,IAAI,IAAI,CAEnD;AAED,wBAAgB,6BAA6B,CAAC,KAAK,EAAE;IACnD,UAAU,EAAE,2BAA2B,CAAC;CACzC,GAAG,IAAI,CAEP;AAED,wBAAgB,+BAA+B,CAAC,KAAK,EAAE;IACrD,OAAO,EAAE,wBAAwB,CAAC;CACnC,GAAG,IAAI,CAEP;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE;IAC1C,MAAM,EAAE,oBAAoB,CAAC;IAC7B,KAAK,EAAE,mBAAmB,CAAC;IAC3B,MAAM,EAAE,oBAAoB,CAAC;CAC9B,GAAG,IAAI,CAEP;AAED,wBAAgB,qCAAqC,IAAI,IAAI,CAE5D"}
@@ -0,0 +1,217 @@
1
+ /**
2
+ * Clark knowledge lifecycle metrics (APPS-5064).
3
+ *
4
+ * Production counters/histograms/gauges for knowledge reads, the suggest→approve
5
+ * funnel, and writes. Complements retrieval spans from APPS-4708
6
+ * (`knowledge.facts`, `app_skills.load`).
7
+ *
8
+ * Wiring follows `ClarkContextMetrics` (APPS-4708): lazy meter resolution from
9
+ * the OTel global, instruments re-bound when the MeterProvider changes.
10
+ *
11
+ * Metrics:
12
+ *
13
+ * - `superblocks.clark.knowledge.reads_total` counter {layer, access_type}
14
+ * - `superblocks.clark.knowledge.read_duplicates_total` counter {layer}
15
+ * - `superblocks.clark.knowledge.index_facts` gauge {layer}
16
+ * - `superblocks.clark.knowledge.suggestions_total` counter {source}
17
+ * - `superblocks.clark.knowledge.suggestion_candidates` histogram
18
+ * - `superblocks.clark.knowledge.duplicate_hints_total` counter
19
+ * - `superblocks.clark.knowledge.approval_prompts_total` counter {prompt_type}
20
+ * - `superblocks.clark.knowledge.approval_responses_total` counter {outcome}
21
+ * - `superblocks.clark.knowledge.writes_total` counter {scope, action, status}
22
+ *
23
+ * Base cardinality budget (documented contract — growing an enum must be a
24
+ * deliberate, reviewed change; the regression test pins these counts):
25
+ *
26
+ * reads(4×2) + read_duplicates(4) + index_facts(4) + suggestions(1) +
27
+ * suggestion_candidates(1) + duplicate_hints(1) + approval_prompts(3) +
28
+ * approval_responses(2) + writes(4×3×6) = 96 worst-case series.
29
+ */
30
+ import { metrics, } from "@opentelemetry/api";
31
+ export const KNOWLEDGE_LAYERS = ["app", "integration", "org", "user"];
32
+ export const KNOWLEDGE_ACCESS_TYPES = ["always_inject", "on_demand"];
33
+ export const KNOWLEDGE_SUGGESTION_SOURCES = ["remember_knowledge"];
34
+ export const KNOWLEDGE_APPROVAL_PROMPT_TYPES = [
35
+ "confirm",
36
+ "multi_choice",
37
+ "remember_knowledge_draft",
38
+ ];
39
+ export const KNOWLEDGE_APPROVAL_OUTCOMES = ["approved", "denied"];
40
+ export const KNOWLEDGE_WRITE_SCOPES = [
41
+ "app",
42
+ "integration",
43
+ "org",
44
+ "user",
45
+ ];
46
+ export const KNOWLEDGE_WRITE_ACTIONS = ["create", "delete", "update"];
47
+ export const KNOWLEDGE_WRITE_STATUSES = [
48
+ "created",
49
+ "created_remote",
50
+ "deleted",
51
+ "failed",
52
+ "skipped_not_found",
53
+ "updated",
54
+ ];
55
+ const METER_NAME = "superblocks.clark.knowledge";
56
+ const METRIC_READS = "superblocks.clark.knowledge.reads_total";
57
+ const METRIC_READ_DUPLICATES = "superblocks.clark.knowledge.read_duplicates_total";
58
+ const METRIC_INDEX_FACTS = "superblocks.clark.knowledge.index_facts";
59
+ const METRIC_SUGGESTIONS = "superblocks.clark.knowledge.suggestions_total";
60
+ const METRIC_SUGGESTION_CANDIDATES = "superblocks.clark.knowledge.suggestion_candidates";
61
+ const METRIC_DUPLICATE_HINTS = "superblocks.clark.knowledge.duplicate_hints_total";
62
+ const METRIC_APPROVAL_PROMPTS = "superblocks.clark.knowledge.approval_prompts_total";
63
+ const METRIC_APPROVAL_RESPONSES = "superblocks.clark.knowledge.approval_responses_total";
64
+ const METRIC_WRITES = "superblocks.clark.knowledge.writes_total";
65
+ const SUGGESTION_CANDIDATE_BUCKETS = [1, 2, 3, 5, 10, 20];
66
+ class ClarkKnowledgeMetrics {
67
+ cachedInstruments;
68
+ cachedMeter;
69
+ indexFactCounts = new Map();
70
+ readKeysThisTurn = new Set();
71
+ observeIndexFacts = (result) => {
72
+ for (const [layer, value] of this.indexFactCounts.entries()) {
73
+ result.observe(value, { layer });
74
+ }
75
+ };
76
+ getInstruments() {
77
+ const meter = metrics.getMeter(METER_NAME);
78
+ if (meter === this.cachedMeter && this.cachedInstruments) {
79
+ return this.cachedInstruments;
80
+ }
81
+ this.cachedInstruments?.indexFactsGauge.removeCallback(this.observeIndexFacts);
82
+ this.cachedMeter = meter;
83
+ const indexFactsGauge = meter.createObservableGauge(METRIC_INDEX_FACTS, {
84
+ description: "Knowledge facts listed in the skill index at the last observed turn per layer (values persist until the next update for that layer). Org/user count on-demand entries only; integration counts all indexed integration facts.",
85
+ unit: "{fact}",
86
+ });
87
+ indexFactsGauge.addCallback(this.observeIndexFacts);
88
+ this.cachedInstruments = {
89
+ approvalPromptsCounter: meter.createCounter(METRIC_APPROVAL_PROMPTS, {
90
+ description: "Knowledge approval prompts shown to the user.",
91
+ unit: "{prompt}",
92
+ }),
93
+ approvalResponsesCounter: meter.createCounter(METRIC_APPROVAL_RESPONSES, {
94
+ description: "User responses to knowledge approval prompts.",
95
+ unit: "{response}",
96
+ }),
97
+ duplicateHintsCounter: meter.createCounter(METRIC_DUPLICATE_HINTS, {
98
+ description: "rememberKnowledge calls where recentlySavedMatches was non-empty.",
99
+ unit: "{hint}",
100
+ }),
101
+ indexFactsGauge,
102
+ readDuplicatesCounter: meter.createCounter(METRIC_READ_DUPLICATES, {
103
+ description: "Repeated reads of the same knowledge fact/path within one turn.",
104
+ unit: "{read}",
105
+ }),
106
+ readsCounter: meter.createCounter(METRIC_READS, {
107
+ description: "Knowledge surfaced into context via auto-inject or on-demand read.",
108
+ unit: "{read}",
109
+ }),
110
+ suggestionCandidatesHistogram: meter.createHistogram(METRIC_SUGGESTION_CANDIDATES, {
111
+ advice: { explicitBucketBoundaries: SUGGESTION_CANDIDATE_BUCKETS },
112
+ description: "Candidate count per rememberKnowledge call with valid candidates.",
113
+ unit: "{candidate}",
114
+ }),
115
+ suggestionsCounter: meter.createCounter(METRIC_SUGGESTIONS, {
116
+ description: "Valid knowledge suggestions from rememberKnowledge.",
117
+ unit: "{suggestion}",
118
+ }),
119
+ writesCounter: meter.createCounter(METRIC_WRITES, {
120
+ description: "Knowledge persistence attempts from saveKnowledgeAndNotify.",
121
+ unit: "{write}",
122
+ }),
123
+ };
124
+ return this.cachedInstruments;
125
+ }
126
+ resetReadTrackerForTurn() {
127
+ this.readKeysThisTurn.clear();
128
+ }
129
+ recordRead(input) {
130
+ const instruments = this.getInstruments();
131
+ const attributes = {
132
+ access_type: input.accessType,
133
+ layer: input.layer,
134
+ };
135
+ instruments.readsCounter.add(1, attributes);
136
+ const dedupeKey = `${input.layer}:${input.dedupeKey}`;
137
+ if (this.readKeysThisTurn.has(dedupeKey)) {
138
+ instruments.readDuplicatesCounter.add(1, { layer: input.layer });
139
+ }
140
+ else {
141
+ this.readKeysThisTurn.add(dedupeKey);
142
+ }
143
+ }
144
+ recordIndexFacts(input) {
145
+ this.getInstruments();
146
+ for (const layer of KNOWLEDGE_LAYERS) {
147
+ const count = input.counts[layer];
148
+ if (count === undefined) {
149
+ continue;
150
+ }
151
+ this.indexFactCounts.set(layer, Math.max(0, count));
152
+ }
153
+ }
154
+ recordSuggestion(input) {
155
+ const instruments = this.getInstruments();
156
+ instruments.suggestionsCounter.add(1, { source: input.source });
157
+ if (input.candidateCount > 0) {
158
+ instruments.suggestionCandidatesHistogram.record(input.candidateCount);
159
+ }
160
+ }
161
+ recordDuplicateHint() {
162
+ this.getInstruments().duplicateHintsCounter.add(1);
163
+ }
164
+ recordApprovalPrompt(input) {
165
+ this.getInstruments().approvalPromptsCounter.add(1, {
166
+ prompt_type: input.promptType,
167
+ });
168
+ }
169
+ recordApprovalResponse(input) {
170
+ this.getInstruments().approvalResponsesCounter.add(1, {
171
+ outcome: input.outcome,
172
+ });
173
+ }
174
+ recordWrite(input) {
175
+ this.getInstruments().writesCounter.add(1, {
176
+ action: input.action,
177
+ scope: input.scope,
178
+ status: input.status,
179
+ });
180
+ }
181
+ _resetForTesting() {
182
+ this.cachedInstruments?.indexFactsGauge.removeCallback(this.observeIndexFacts);
183
+ this.cachedMeter = undefined;
184
+ this.cachedInstruments = undefined;
185
+ this.indexFactCounts.clear();
186
+ this.readKeysThisTurn.clear();
187
+ }
188
+ }
189
+ const clarkKnowledgeMetrics = new ClarkKnowledgeMetrics();
190
+ export function resetKnowledgeReadTrackerForTurn() {
191
+ clarkKnowledgeMetrics.resetReadTrackerForTurn();
192
+ }
193
+ export function recordKnowledgeRead(input) {
194
+ clarkKnowledgeMetrics.recordRead(input);
195
+ }
196
+ export function recordKnowledgeIndexFacts(input) {
197
+ clarkKnowledgeMetrics.recordIndexFacts(input);
198
+ }
199
+ export function recordKnowledgeSuggestion(input) {
200
+ clarkKnowledgeMetrics.recordSuggestion(input);
201
+ }
202
+ export function recordKnowledgeDuplicateHint() {
203
+ clarkKnowledgeMetrics.recordDuplicateHint();
204
+ }
205
+ export function recordKnowledgeApprovalPrompt(input) {
206
+ clarkKnowledgeMetrics.recordApprovalPrompt(input);
207
+ }
208
+ export function recordKnowledgeApprovalResponse(input) {
209
+ clarkKnowledgeMetrics.recordApprovalResponse(input);
210
+ }
211
+ export function recordKnowledgeWrite(input) {
212
+ clarkKnowledgeMetrics.recordWrite(input);
213
+ }
214
+ export function _resetClarkKnowledgeMetricsForTesting() {
215
+ clarkKnowledgeMetrics._resetForTesting();
216
+ }
217
+ //# sourceMappingURL=knowledge-metrics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"knowledge-metrics.js","sourceRoot":"","sources":["../../../src/ai-service/knowledge/knowledge-metrics.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { LanguageModelV3 } from "@ai-sdk/provider";
2
+ import { type FlexibleSchema } from "@ai-sdk/provider-utils";
2
3
  import type { ModelMessage } from "ai";
3
4
  import type { Tool } from "../agent/tools2/types.js";
4
5
  import type { AppShell } from "../app-interface/shell.js";
@@ -13,29 +14,43 @@ import type { ContextId } from "./context-v2/types.js";
13
14
  import type { StreamTextResult, StreamTextProvider } from "./interaction/provider.js";
14
15
  import type { StreamTextOptions } from "./interaction/provider.js";
15
16
  import { type ProviderType, type CoreModelType, type FallbackStrategy, type LogRef, type RetryConfigOptions, type StreamObserver } from "./stream/index.js";
16
- export interface LLMClientStreamTextOptions<TOOLS extends Record<string, Tool>> extends Omit<StreamTextOptions<TOOLS>, "messages"> {
17
- context?: {
18
- contextId?: ContextId;
19
- messages?: ModelMessage[];
20
- contextOptionsV2?: Partial<ContextOptionsV2>;
21
- /**
22
- * Optional compaction strategy selection. When omitted the context manager
23
- * defaults to server-side compaction; passing `{ type: "client", ... }`
24
- * routes through the legacy phase-1+phase-2 path (used as the runtime
25
- * kill-switch when server-side context management misbehaves).
26
- */
27
- contextManagement?: ContextManagementOptions;
28
- };
17
+ type ManagedLLMContextConfig = {
18
+ mode?: "managed";
19
+ contextId?: ContextId;
20
+ messages?: ModelMessage[];
21
+ contextOptionsV2?: Partial<ContextOptionsV2>;
22
+ /**
23
+ * Optional compaction strategy selection. When omitted the context manager
24
+ * defaults to server-side compaction; passing `{ type: "client", ... }`
25
+ * routes through the legacy phase-1+phase-2 path (used as the runtime
26
+ * kill-switch when server-side context management misbehaves).
27
+ */
28
+ contextManagement?: ContextManagementOptions;
29
+ };
30
+ type StatelessLLMContextConfig = {
31
+ mode: "stateless";
32
+ };
33
+ export type LLMClientContextConfig = ManagedLLMContextConfig | StatelessLLMContextConfig;
34
+ export interface LLMClientProviderConfig {
35
+ provider: ProviderType;
36
+ model: CoreModelType;
37
+ }
38
+ export interface LLMClientStreamTextOptions<TOOLS extends Record<string, Tool>, OUTPUT = unknown> extends Omit<StreamTextOptions<TOOLS, OUTPUT>, "messages"> {
39
+ context?: LLMClientContextConfig;
29
40
  logging?: {
30
41
  conversationId?: string;
31
42
  logRef?: LogRef;
32
43
  metadata?: Record<string, unknown>;
33
44
  } | false;
45
+ /**
46
+ * When false, LLM message input/output content is replaced with a redacted
47
+ * placeholder on the LLMObs span (the span, metrics, model, and timing are
48
+ * still recorded). Use for internal calls whose content may carry secrets.
49
+ * Defaults to true.
50
+ */
51
+ recordObsContent?: boolean;
34
52
  retry?: RetryConfigOptions;
35
- providerConfig: {
36
- provider: ProviderType;
37
- model: CoreModelType;
38
- };
53
+ providerConfig: LLMClientProviderConfig;
39
54
  /**
40
55
  * Thinking knobs for the model. When set, the orchestrator will rebuild
41
56
  * provider-specific thinking options per attempt based on the current
@@ -60,6 +75,7 @@ export interface LLMClientStreamTextOptions<TOOLS extends Record<string, Tool>>
60
75
  classification?: {
61
76
  enabled: boolean;
62
77
  model?: LanguageModelV3;
78
+ providerConfig?: LLMClientProviderConfig;
63
79
  timeout?: number;
64
80
  failOpen?: boolean;
65
81
  };
@@ -69,6 +85,18 @@ export interface LLMClientStreamTextOptions<TOOLS extends Record<string, Tool>>
69
85
  };
70
86
  };
71
87
  }
88
+ /**
89
+ * Options for {@link LLMClient.generateObject}. Adds the required `schema`
90
+ * (used to build the JSON response format and to validate the final output)
91
+ * and drops `experimental_output`, which the method builds internally from the
92
+ * schema. `tools` and `maxSteps` are also dropped because `generateObject`
93
+ * unconditionally overrides them (structured output is single-step and
94
+ * tool-free) — accepting them would be a silently-ignored footgun.
95
+ */
96
+ export interface LLMClientGenerateObjectOptions<TOOLS extends Record<string, Tool>, OUTPUT> extends Omit<LLMClientStreamTextOptions<TOOLS, OUTPUT>, "experimental_output" | "tools" | "maxSteps"> {
97
+ /** Zod (or other flexible) schema the output must match. */
98
+ schema: FlexibleSchema<OUTPUT>;
99
+ }
72
100
  export interface LLMClientParameters {
73
101
  contextManagerV2: ContextManagerV2;
74
102
  appShell: AppShell;
@@ -145,7 +173,105 @@ export declare class LLMClient {
145
173
  * @returns Object containing the processed message and classification result
146
174
  */
147
175
  private applySafetyClassification;
148
- streamText<TOOLS extends Record<string, Tool>>(options: LLMClientStreamTextOptions<TOOLS>, logger?: import("../../util/logger.js").Logger, tracer?: LLMObsTracer): Promise<StreamTextResult<TOOLS>>;
176
+ streamText<TOOLS extends Record<string, Tool>, OUTPUT = unknown>(options: LLMClientStreamTextOptions<TOOLS, OUTPUT>, logger?: import("../../util/logger.js").Logger, tracer?: LLMObsTracer): Promise<StreamTextResult<TOOLS>>;
149
177
  private createContext;
178
+ /**
179
+ * Generates text from the LLM without exposing a stream to the caller.
180
+ *
181
+ * Convenience wrapper around {@link streamText} that drains the result and
182
+ * returns the joined text. Routing through `streamText` inherits the same
183
+ * context management, safety classification, retry, and observability.
184
+ *
185
+ * `observers` is intentionally omitted from the options: callers cannot
186
+ * inject their own stream observers here, but the internal `streamText` path
187
+ * still creates the logging/LLMObs observers, so observability fires as
188
+ * usual. `experimental_output` is also omitted — passing it would silently
189
+ * put the model in JSON mode while this method still returns a raw text
190
+ * string; use {@link generateObject} for structured output.
191
+ *
192
+ * @param options - Same options as `streamText`, minus `observers` and
193
+ * `experimental_output`.
194
+ * @returns The concatenated `text-delta` content.
195
+ *
196
+ * @example
197
+ * ```typescript
198
+ * const text = await client.generateText({
199
+ * model,
200
+ * user: { role: "user", content: "Summarize this..." },
201
+ * providerConfig: { provider: "vertex", model: "claude-sonnet-4-5" },
202
+ * });
203
+ * ```
204
+ */
205
+ generateText<TOOLS extends Record<string, Tool> = Record<string, Tool>>(options: Omit<LLMClientStreamTextOptions<TOOLS>, "observers" | "experimental_output">, logger?: import("../../util/logger.js").Logger, tracer?: LLMObsTracer): Promise<string>;
206
+ /**
207
+ * Drain a managed `fullStream`, returning the concatenated `text-delta`
208
+ * content. `fullStream` (not `textStream`) is drained because the managed-
209
+ * stream wrapper on it fires session finalization, which observers rely on to
210
+ * flush obs spans and persist logs. On a mid-stream failure it logs and
211
+ * rethrows a "<caller> failed during stream consumption" error, preserving
212
+ * the original cause.
213
+ */
214
+ private drainTextChunks;
215
+ /**
216
+ * Drains a structured-output (`generateObject`) stream, capturing the result
217
+ * from whichever channel the provider used.
218
+ *
219
+ * The adapter's `Output.object` sets the JSON response format, but providers
220
+ * deliver the answer differently:
221
+ * - some stream the JSON as plain text (`text-delta`);
222
+ * - direct `@ai-sdk/anthropic` realizes structured output as a forced `json`
223
+ * tool call, so the object arrives as the tool-call input and NO
224
+ * `text-delta` is emitted. Draining only text there yields an empty string
225
+ * and a spurious "empty response" error (APPS-1213).
226
+ * - the Clark proxy (`@superblocksteam/clark`, used for bedrock/vertex)
227
+ * streams the result as a Clark `object` chunk; if that chunk carries no
228
+ * `id`, the Clark model forwards it as a `raw` part (its
229
+ * `forwardAsActivity`), so the object reaches neither the text nor the
230
+ * tool-call channel. We recover it from the raw `object` chunk (APPS-1213).
231
+ *
232
+ * `generateObject` disables user tools (`tools: undefined, maxSteps: 1`), so
233
+ * any tool call in the stream is the injected structured-output tool. We
234
+ * capture its already-parsed `input`; if only input deltas stream without a
235
+ * terminal `tool-call` part, we recover the object from the accumulated JSON.
236
+ * The full `fullStream` is still drained, which is what triggers session
237
+ * finalization for observability.
238
+ */
239
+ private drainObjectStream;
240
+ /**
241
+ * Generates structured output validated against a Zod (or flexible) schema.
242
+ *
243
+ * Passes the schema through to the adapter's `Output.object` (which sets the
244
+ * JSON response format), routes through {@link streamText} with tools
245
+ * disabled and a single step, then resolves the object from whichever channel
246
+ * the provider used — the drained text, or the structured-output tool call
247
+ * (Anthropic/Clark realize `Output.object` as a forced `json` tool, so the
248
+ * object arrives as the tool-call input with no text emitted; see
249
+ * {@link drainObjectStream}) — and schema-validates it. Like
250
+ * {@link generateText}, draining `fullStream` is what triggers session
251
+ * finalization for observability.
252
+ *
253
+ * Snowflake Cortex constraint: Cortex rejects `generateObject` calls whose
254
+ * schema emits certain JSON Schema keywords, so avoid Zod refinements like
255
+ * `.min()` / `.max()` / `.email()` / `.url()` / `.uuid()` etc. in the
256
+ * `schema` — use the JSON-Schema-keyword forms (`minLength` / `maxLength` /
257
+ * `minimum` / `maximum` / `format`, ...) instead. See the "Snowflake Cortex
258
+ * generateObject schema constraints" section in the repo AGENTS.md for the
259
+ * full keyword list.
260
+ *
261
+ * @param options - Stream options plus the required `schema`.
262
+ * @returns The parsed, schema-validated object.
263
+ *
264
+ * @example
265
+ * ```typescript
266
+ * const result = await client.generateObject({
267
+ * model,
268
+ * user: { role: "user", content: "Classify this prompt" },
269
+ * schema: z.object({ safe: z.boolean(), justification: z.string() }),
270
+ * providerConfig: { provider: "vertex", model: "claude-sonnet-4-5" },
271
+ * });
272
+ * ```
273
+ */
274
+ generateObject<TOOLS extends Record<string, Tool> = Record<string, Tool>, OUTPUT = unknown>(options: LLMClientGenerateObjectOptions<TOOLS, OUTPUT>, logger?: import("../../util/logger.js").Logger, tracer?: LLMObsTracer): Promise<OUTPUT>;
150
275
  }
276
+ export {};
151
277
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/ai-service/llm/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/ai-service/llm/client.ts"],"names":[],"mappings":"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"}