@superblocksteam/vite-plugin-file-sync 2.0.77 → 2.0.78-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 (307) hide show
  1. package/dist/ai-service/agent/prompts/build-base-system-prompt.d.ts.map +1 -1
  2. package/dist/ai-service/agent/prompts/build-base-system-prompt.js +26 -0
  3. package/dist/ai-service/agent/prompts/build-base-system-prompt.js.map +1 -1
  4. package/dist/ai-service/agent/tool-message-utils.d.ts.map +1 -1
  5. package/dist/ai-service/agent/tool-message-utils.js +13 -0
  6. package/dist/ai-service/agent/tool-message-utils.js.map +1 -1
  7. package/dist/ai-service/agent/tools/apis/api-executor.d.ts.map +1 -1
  8. package/dist/ai-service/agent/tools/apis/api-executor.js +102 -7
  9. package/dist/ai-service/agent/tools/apis/api-executor.js.map +1 -1
  10. package/dist/ai-service/agent/tools/apis/build-api-artifact.d.ts +17 -0
  11. package/dist/ai-service/agent/tools/apis/build-api-artifact.d.ts.map +1 -1
  12. package/dist/ai-service/agent/tools/apis/build-api-artifact.js +20 -12
  13. package/dist/ai-service/agent/tools/apis/build-api-artifact.js.map +1 -1
  14. package/dist/ai-service/agent/tools/apis/build-api.d.ts.map +1 -1
  15. package/dist/ai-service/agent/tools/apis/build-api.js +9 -1
  16. package/dist/ai-service/agent/tools/apis/build-api.js.map +1 -1
  17. package/dist/ai-service/agent/tools/apis/get-api-docs.d.ts +46 -0
  18. package/dist/ai-service/agent/tools/apis/get-api-docs.d.ts.map +1 -1
  19. package/dist/ai-service/agent/tools/apis/get-api-docs.js +326 -58
  20. package/dist/ai-service/agent/tools/apis/get-api-docs.js.map +1 -1
  21. package/dist/ai-service/agent/tools/apis/integration-types.d.ts +20 -1
  22. package/dist/ai-service/agent/tools/apis/integration-types.d.ts.map +1 -1
  23. package/dist/ai-service/agent/tools/apis/integration-types.js +1033 -288
  24. package/dist/ai-service/agent/tools/apis/integration-types.js.map +1 -1
  25. package/dist/ai-service/agent/tools/apis/test-api.d.ts +1 -1
  26. package/dist/ai-service/agent/tools/apis/write-api.d.ts +2 -2
  27. package/dist/ai-service/agent/tools/build-manage-checklist.d.ts +1 -1
  28. package/dist/ai-service/agent/tools/build-read-file.d.ts +1 -1
  29. package/dist/ai-service/agent/tools/integrations/execute-request.d.ts +1 -1
  30. package/dist/ai-service/agent/tools/integrations/metadata.js +1 -1
  31. package/dist/ai-service/agent/tools/integrations/metadata.js.map +1 -1
  32. package/dist/ai-service/agent/tools.d.ts.map +1 -1
  33. package/dist/ai-service/agent/tools.js +18 -10
  34. package/dist/ai-service/agent/tools.js.map +1 -1
  35. package/dist/ai-service/agent/tools2/tools/ask-multi-choice.d.ts.map +1 -1
  36. package/dist/ai-service/agent/tools2/tools/ask-multi-choice.js +11 -7
  37. package/dist/ai-service/agent/tools2/tools/ask-multi-choice.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 +27 -5
  40. package/dist/ai-service/agent/tools2/tools/exit-plan-mode.js.map +1 -1
  41. package/dist/ai-service/agent/tools2/tools/grep-metadata-ripgrep.d.ts.map +1 -1
  42. package/dist/ai-service/agent/tools2/tools/grep-metadata-ripgrep.js +78 -7
  43. package/dist/ai-service/agent/tools2/tools/grep-metadata-ripgrep.js.map +1 -1
  44. package/dist/ai-service/agent/tools2/tools/grep-metadata.d.ts +6 -2
  45. package/dist/ai-service/agent/tools2/tools/grep-metadata.d.ts.map +1 -1
  46. package/dist/ai-service/agent/tools2/tools/grep-metadata.js +26 -0
  47. package/dist/ai-service/agent/tools2/tools/grep-metadata.js.map +1 -1
  48. package/dist/ai-service/agent/tools2/tools/index.d.ts +2 -0
  49. package/dist/ai-service/agent/tools2/tools/index.d.ts.map +1 -1
  50. package/dist/ai-service/agent/tools2/tools/index.js +2 -0
  51. package/dist/ai-service/agent/tools2/tools/index.js.map +1 -1
  52. package/dist/ai-service/agent/tools2/tools/list-attachments.d.ts.map +1 -1
  53. package/dist/ai-service/agent/tools2/tools/list-attachments.js +2 -3
  54. package/dist/ai-service/agent/tools2/tools/list-attachments.js.map +1 -1
  55. package/dist/ai-service/agent/tools2/tools/start-test-run.d.ts.map +1 -1
  56. package/dist/ai-service/agent/tools2/tools/start-test-run.js +51 -6
  57. package/dist/ai-service/agent/tools2/tools/start-test-run.js.map +1 -1
  58. package/dist/ai-service/agent/tools2/tools/web-fetch.d.ts +28 -0
  59. package/dist/ai-service/agent/tools2/tools/web-fetch.d.ts.map +1 -0
  60. package/dist/ai-service/agent/tools2/tools/web-fetch.js +274 -0
  61. package/dist/ai-service/agent/tools2/tools/web-fetch.js.map +1 -0
  62. package/dist/ai-service/agent/tools2/tools/web-search.d.ts +25 -0
  63. package/dist/ai-service/agent/tools2/tools/web-search.d.ts.map +1 -0
  64. package/dist/ai-service/agent/tools2/tools/web-search.js +210 -0
  65. package/dist/ai-service/agent/tools2/tools/web-search.js.map +1 -0
  66. package/dist/ai-service/attachments/store.d.ts +4 -4
  67. package/dist/ai-service/attachments/store.d.ts.map +1 -1
  68. package/dist/ai-service/attachments/store.js.map +1 -1
  69. package/dist/ai-service/chat/chat-session-store.d.ts +19 -4
  70. package/dist/ai-service/chat/chat-session-store.d.ts.map +1 -1
  71. package/dist/ai-service/chat/chat-session-store.js +32 -6
  72. package/dist/ai-service/chat/chat-session-store.js.map +1 -1
  73. package/dist/ai-service/clark-provider/clark-language-model.d.ts.map +1 -1
  74. package/dist/ai-service/clark-provider/clark-language-model.js +11 -2
  75. package/dist/ai-service/clark-provider/clark-language-model.js.map +1 -1
  76. package/dist/ai-service/const.d.ts +3 -2
  77. package/dist/ai-service/const.d.ts.map +1 -1
  78. package/dist/ai-service/const.js +3 -2
  79. package/dist/ai-service/const.js.map +1 -1
  80. package/dist/ai-service/context-download.d.ts +4 -1
  81. package/dist/ai-service/context-download.d.ts.map +1 -1
  82. package/dist/ai-service/context-download.js +36 -7
  83. package/dist/ai-service/context-download.js.map +1 -1
  84. package/dist/ai-service/features.d.ts +8 -0
  85. package/dist/ai-service/features.d.ts.map +1 -1
  86. package/dist/ai-service/features.js +8 -0
  87. package/dist/ai-service/features.js.map +1 -1
  88. package/dist/ai-service/index.d.ts +1 -0
  89. package/dist/ai-service/index.d.ts.map +1 -1
  90. package/dist/ai-service/index.js +101 -18
  91. package/dist/ai-service/index.js.map +1 -1
  92. package/dist/ai-service/integrations/store.d.ts +14 -2
  93. package/dist/ai-service/integrations/store.d.ts.map +1 -1
  94. package/dist/ai-service/integrations/store.js +19 -2
  95. package/dist/ai-service/integrations/store.js.map +1 -1
  96. package/dist/ai-service/judge/judge-eval-service-runner.d.ts.map +1 -1
  97. package/dist/ai-service/judge/judge-eval-service-runner.js +7 -0
  98. package/dist/ai-service/judge/judge-eval-service-runner.js.map +1 -1
  99. package/dist/ai-service/llm/client.d.ts +29 -11
  100. package/dist/ai-service/llm/client.d.ts.map +1 -1
  101. package/dist/ai-service/llm/client.js +95 -78
  102. package/dist/ai-service/llm/client.js.map +1 -1
  103. package/dist/ai-service/llm/context/context.d.ts +2 -1
  104. package/dist/ai-service/llm/context/context.d.ts.map +1 -1
  105. package/dist/ai-service/llm/context/context.js.map +1 -1
  106. package/dist/ai-service/llm/context/conversation-context.d.ts +89 -0
  107. package/dist/ai-service/llm/context/conversation-context.d.ts.map +1 -0
  108. package/dist/ai-service/llm/context/conversation-context.js +13 -0
  109. package/dist/ai-service/llm/context/conversation-context.js.map +1 -0
  110. package/dist/ai-service/llm/context/index.d.ts +1 -0
  111. package/dist/ai-service/llm/context/index.d.ts.map +1 -1
  112. package/dist/ai-service/llm/context/utils/get-loaded-context.d.ts +12 -0
  113. package/dist/ai-service/llm/context/utils/get-loaded-context.d.ts.map +1 -0
  114. package/dist/ai-service/llm/context/utils/get-loaded-context.js +7 -0
  115. package/dist/ai-service/llm/context/utils/get-loaded-context.js.map +1 -0
  116. package/dist/ai-service/llm/context/utils/index.d.ts +1 -5
  117. package/dist/ai-service/llm/context/utils/index.d.ts.map +1 -1
  118. package/dist/ai-service/llm/context/utils/index.js +1 -5
  119. package/dist/ai-service/llm/context/utils/index.js.map +1 -1
  120. package/dist/ai-service/llm/context-v2/adapter.d.ts +26 -0
  121. package/dist/ai-service/llm/context-v2/adapter.d.ts.map +1 -0
  122. package/dist/ai-service/llm/context-v2/adapter.js +88 -0
  123. package/dist/ai-service/llm/context-v2/adapter.js.map +1 -0
  124. package/dist/ai-service/llm/context-v2/caching.d.ts +39 -0
  125. package/dist/ai-service/llm/context-v2/caching.d.ts.map +1 -0
  126. package/dist/ai-service/llm/context-v2/caching.js +48 -0
  127. package/dist/ai-service/llm/context-v2/caching.js.map +1 -0
  128. package/dist/ai-service/llm/context-v2/compactor.d.ts +16 -0
  129. package/dist/ai-service/llm/context-v2/compactor.d.ts.map +1 -0
  130. package/dist/ai-service/llm/context-v2/compactor.js +164 -0
  131. package/dist/ai-service/llm/context-v2/compactor.js.map +1 -0
  132. package/dist/ai-service/llm/context-v2/config.d.ts +6 -0
  133. package/dist/ai-service/llm/context-v2/config.d.ts.map +1 -0
  134. package/dist/ai-service/llm/context-v2/config.js +8 -0
  135. package/dist/ai-service/llm/context-v2/config.js.map +1 -0
  136. package/dist/ai-service/llm/context-v2/context.d.ts +61 -0
  137. package/dist/ai-service/llm/context-v2/context.d.ts.map +1 -0
  138. package/dist/ai-service/llm/context-v2/context.js +238 -0
  139. package/dist/ai-service/llm/context-v2/context.js.map +1 -0
  140. package/dist/ai-service/llm/context-v2/index.d.ts +16 -0
  141. package/dist/ai-service/llm/context-v2/index.d.ts.map +1 -0
  142. package/dist/ai-service/llm/context-v2/index.js +16 -0
  143. package/dist/ai-service/llm/context-v2/index.js.map +1 -0
  144. package/dist/ai-service/llm/context-v2/manager.d.ts +57 -0
  145. package/dist/ai-service/llm/context-v2/manager.d.ts.map +1 -0
  146. package/dist/ai-service/llm/context-v2/manager.js +129 -0
  147. package/dist/ai-service/llm/context-v2/manager.js.map +1 -0
  148. package/dist/ai-service/llm/context-v2/migrations/index.d.ts +8 -0
  149. package/dist/ai-service/llm/context-v2/migrations/index.d.ts.map +1 -0
  150. package/dist/ai-service/llm/context-v2/migrations/index.js +8 -0
  151. package/dist/ai-service/llm/context-v2/migrations/index.js.map +1 -0
  152. package/dist/ai-service/llm/context-v2/migrations/registry.d.ts +19 -0
  153. package/dist/ai-service/llm/context-v2/migrations/registry.d.ts.map +1 -0
  154. package/dist/ai-service/llm/context-v2/migrations/registry.js +32 -0
  155. package/dist/ai-service/llm/context-v2/migrations/registry.js.map +1 -0
  156. package/dist/ai-service/llm/context-v2/migrations/runner.d.ts +3 -0
  157. package/dist/ai-service/llm/context-v2/migrations/runner.d.ts.map +1 -0
  158. package/dist/ai-service/llm/context-v2/migrations/runner.js +61 -0
  159. package/dist/ai-service/llm/context-v2/migrations/runner.js.map +1 -0
  160. package/dist/ai-service/llm/context-v2/migrations/types.d.ts +22 -0
  161. package/dist/ai-service/llm/context-v2/migrations/types.d.ts.map +1 -0
  162. package/dist/ai-service/llm/context-v2/migrations/types.js +33 -0
  163. package/dist/ai-service/llm/context-v2/migrations/types.js.map +1 -0
  164. package/dist/ai-service/llm/context-v2/migrations/v1-to-v2.d.ts +29 -0
  165. package/dist/ai-service/llm/context-v2/migrations/v1-to-v2.d.ts.map +1 -0
  166. package/dist/ai-service/llm/context-v2/migrations/v1-to-v2.js +143 -0
  167. package/dist/ai-service/llm/context-v2/migrations/v1-to-v2.js.map +1 -0
  168. package/dist/ai-service/llm/context-v2/operation-queue.d.ts +9 -0
  169. package/dist/ai-service/llm/context-v2/operation-queue.d.ts.map +1 -0
  170. package/dist/ai-service/llm/context-v2/operation-queue.js +13 -0
  171. package/dist/ai-service/llm/context-v2/operation-queue.js.map +1 -0
  172. package/dist/ai-service/llm/context-v2/phase1-tool-summarizer.d.ts +16 -0
  173. package/dist/ai-service/llm/context-v2/phase1-tool-summarizer.d.ts.map +1 -0
  174. package/dist/ai-service/llm/context-v2/phase1-tool-summarizer.js +135 -0
  175. package/dist/ai-service/llm/context-v2/phase1-tool-summarizer.js.map +1 -0
  176. package/dist/ai-service/llm/context-v2/phase2-session-summarizer.d.ts +20 -0
  177. package/dist/ai-service/llm/context-v2/phase2-session-summarizer.d.ts.map +1 -0
  178. package/dist/ai-service/llm/context-v2/phase2-session-summarizer.js +213 -0
  179. package/dist/ai-service/llm/context-v2/phase2-session-summarizer.js.map +1 -0
  180. package/dist/ai-service/llm/context-v2/prompts/compaction.d.ts +11 -0
  181. package/dist/ai-service/llm/context-v2/prompts/compaction.d.ts.map +1 -0
  182. package/dist/ai-service/llm/context-v2/prompts/compaction.js +57 -0
  183. package/dist/ai-service/llm/context-v2/prompts/compaction.js.map +1 -0
  184. package/dist/ai-service/llm/context-v2/session-capture.d.ts +18 -0
  185. package/dist/ai-service/llm/context-v2/session-capture.d.ts.map +1 -0
  186. package/dist/ai-service/llm/context-v2/session-capture.js +64 -0
  187. package/dist/ai-service/llm/context-v2/session-capture.js.map +1 -0
  188. package/dist/ai-service/llm/context-v2/storage/index.d.ts +14 -0
  189. package/dist/ai-service/llm/context-v2/storage/index.d.ts.map +1 -0
  190. package/dist/ai-service/llm/context-v2/storage/index.js +2 -0
  191. package/dist/ai-service/llm/context-v2/storage/index.js.map +1 -0
  192. package/dist/ai-service/llm/context-v2/storage/local.d.ts +25 -0
  193. package/dist/ai-service/llm/context-v2/storage/local.d.ts.map +1 -0
  194. package/dist/ai-service/llm/context-v2/storage/local.js +71 -0
  195. package/dist/ai-service/llm/context-v2/storage/local.js.map +1 -0
  196. package/dist/ai-service/llm/context-v2/storage/types.d.ts +12 -0
  197. package/dist/ai-service/llm/context-v2/storage/types.d.ts.map +1 -0
  198. package/dist/ai-service/llm/context-v2/storage/types.js +2 -0
  199. package/dist/ai-service/llm/context-v2/storage/types.js.map +1 -0
  200. package/dist/ai-service/llm/context-v2/token-tracker.d.ts +4 -0
  201. package/dist/ai-service/llm/context-v2/token-tracker.d.ts.map +1 -0
  202. package/dist/ai-service/llm/context-v2/token-tracker.js +13 -0
  203. package/dist/ai-service/llm/context-v2/token-tracker.js.map +1 -0
  204. package/dist/ai-service/llm/context-v2/truncation-fallback.d.ts +10 -0
  205. package/dist/ai-service/llm/context-v2/truncation-fallback.d.ts.map +1 -0
  206. package/dist/ai-service/llm/context-v2/truncation-fallback.js +120 -0
  207. package/dist/ai-service/llm/context-v2/truncation-fallback.js.map +1 -0
  208. package/dist/ai-service/llm/context-v2/turns.d.ts +23 -0
  209. package/dist/ai-service/llm/context-v2/turns.d.ts.map +1 -0
  210. package/dist/ai-service/llm/context-v2/turns.js +61 -0
  211. package/dist/ai-service/llm/context-v2/turns.js.map +1 -0
  212. package/dist/ai-service/llm/context-v2/types.d.ts +100 -0
  213. package/dist/ai-service/llm/context-v2/types.d.ts.map +1 -0
  214. package/dist/ai-service/llm/context-v2/types.js +262 -0
  215. package/dist/ai-service/llm/context-v2/types.js.map +1 -0
  216. package/dist/ai-service/llm/error.d.ts +4 -0
  217. package/dist/ai-service/llm/error.d.ts.map +1 -1
  218. package/dist/ai-service/llm/error.js +26 -0
  219. package/dist/ai-service/llm/error.js.map +1 -1
  220. package/dist/ai-service/llm/impl/clark.d.ts.map +1 -1
  221. package/dist/ai-service/llm/impl/clark.js +3 -2
  222. package/dist/ai-service/llm/impl/clark.js.map +1 -1
  223. package/dist/ai-service/llm/interaction/adapters/vercel.d.ts.map +1 -1
  224. package/dist/ai-service/llm/interaction/adapters/vercel.js +3 -1
  225. package/dist/ai-service/llm/interaction/adapters/vercel.js.map +1 -1
  226. package/dist/ai-service/llm/provider.d.ts +2 -2
  227. package/dist/ai-service/llm/provider.d.ts.map +1 -1
  228. package/dist/ai-service/llm/provider.js +2 -2
  229. package/dist/ai-service/llm/provider.js.map +1 -1
  230. package/dist/ai-service/llm/stream/event-bus.d.ts +1 -1
  231. package/dist/ai-service/llm/stream/event-bus.d.ts.map +1 -1
  232. package/dist/ai-service/llm/stream/observers/context.d.ts +2 -9
  233. package/dist/ai-service/llm/stream/observers/context.d.ts.map +1 -1
  234. package/dist/ai-service/llm/stream/observers/context.js +4 -4
  235. package/dist/ai-service/llm/stream/observers/context.js.map +1 -1
  236. package/dist/ai-service/llm/stream/observers/llmobs.d.ts.map +1 -1
  237. package/dist/ai-service/llm/stream/observers/llmobs.js +2 -1
  238. package/dist/ai-service/llm/stream/observers/llmobs.js.map +1 -1
  239. package/dist/ai-service/llm/stream/observers/logging.js +1 -1
  240. package/dist/ai-service/llm/stream/observers/logging.js.map +1 -1
  241. package/dist/ai-service/llm/stream/orchestrator.d.ts.map +1 -1
  242. package/dist/ai-service/llm/stream/orchestrator.js +22 -13
  243. package/dist/ai-service/llm/stream/orchestrator.js.map +1 -1
  244. package/dist/ai-service/llm/stream/session.d.ts +3 -0
  245. package/dist/ai-service/llm/stream/session.d.ts.map +1 -1
  246. package/dist/ai-service/llm/stream/session.js +2 -0
  247. package/dist/ai-service/llm/stream/session.js.map +1 -1
  248. package/dist/ai-service/llm/utils.d.ts +2 -2
  249. package/dist/ai-service/llm/utils.d.ts.map +1 -1
  250. package/dist/ai-service/llm/utils.js +27 -10
  251. package/dist/ai-service/llm/utils.js.map +1 -1
  252. package/dist/ai-service/llm/workflow-metrics.d.ts +14 -0
  253. package/dist/ai-service/llm/workflow-metrics.d.ts.map +1 -0
  254. package/dist/ai-service/llm/workflow-metrics.js +19 -0
  255. package/dist/ai-service/llm/workflow-metrics.js.map +1 -0
  256. package/dist/ai-service/security/safety-classifier.d.ts +2 -0
  257. package/dist/ai-service/security/safety-classifier.d.ts.map +1 -1
  258. package/dist/ai-service/security/safety-classifier.js +9 -6
  259. package/dist/ai-service/security/safety-classifier.js.map +1 -1
  260. package/dist/ai-service/state-machine/clark-fsm.d.ts +15 -0
  261. package/dist/ai-service/state-machine/clark-fsm.d.ts.map +1 -1
  262. package/dist/ai-service/state-machine/clark-fsm.js +3 -4
  263. package/dist/ai-service/state-machine/clark-fsm.js.map +1 -1
  264. package/dist/ai-service/state-machine/handlers/agent-planning.d.ts.map +1 -1
  265. package/dist/ai-service/state-machine/handlers/agent-planning.js +32 -18
  266. package/dist/ai-service/state-machine/handlers/agent-planning.js.map +1 -1
  267. package/dist/ai-service/state-machine/handlers/awaiting-user.d.ts.map +1 -1
  268. package/dist/ai-service/state-machine/handlers/awaiting-user.js +34 -0
  269. package/dist/ai-service/state-machine/handlers/awaiting-user.js.map +1 -1
  270. package/dist/ai-service/state-machine/handlers/idle.d.ts.map +1 -1
  271. package/dist/ai-service/state-machine/handlers/idle.js +6 -1
  272. package/dist/ai-service/state-machine/handlers/idle.js.map +1 -1
  273. package/dist/ai-service/state-machine/handlers/llm-generating.d.ts.map +1 -1
  274. package/dist/ai-service/state-machine/handlers/llm-generating.js +84 -1
  275. package/dist/ai-service/state-machine/handlers/llm-generating.js.map +1 -1
  276. package/dist/ai-service/state-machine/handlers/runtime-reviewing.d.ts.map +1 -1
  277. package/dist/ai-service/state-machine/handlers/runtime-reviewing.js +6 -1
  278. package/dist/ai-service/state-machine/handlers/runtime-reviewing.js.map +1 -1
  279. package/dist/ai-service/state-machine/helpers/peer.d.ts +7 -0
  280. package/dist/ai-service/state-machine/helpers/peer.d.ts.map +1 -1
  281. package/dist/ai-service/state-machine/helpers/peer.js +24 -8
  282. package/dist/ai-service/state-machine/helpers/peer.js.map +1 -1
  283. package/dist/ai-service/transform/api-builder/shared.d.ts +5 -0
  284. package/dist/ai-service/transform/api-builder/shared.d.ts.map +1 -1
  285. package/dist/ai-service/transform/api-builder/shared.js +13 -1
  286. package/dist/ai-service/transform/api-builder/shared.js.map +1 -1
  287. package/dist/ai-service/transform/api-builder/to-sdk-transformer.d.ts +11 -0
  288. package/dist/ai-service/transform/api-builder/to-sdk-transformer.d.ts.map +1 -1
  289. package/dist/ai-service/transform/api-builder/to-sdk-transformer.js +11 -4
  290. package/dist/ai-service/transform/api-builder/to-sdk-transformer.js.map +1 -1
  291. package/dist/ai-service/transform/api-builder/to-yaml-transformer.d.ts +4 -0
  292. package/dist/ai-service/transform/api-builder/to-yaml-transformer.d.ts.map +1 -1
  293. package/dist/ai-service/transform/api-builder/to-yaml-transformer.js +7 -0
  294. package/dist/ai-service/transform/api-builder/to-yaml-transformer.js.map +1 -1
  295. package/dist/binding-extraction/extract-identifiers.d.ts.map +1 -1
  296. package/dist/binding-extraction/extract-identifiers.js +39 -3
  297. package/dist/binding-extraction/extract-identifiers.js.map +1 -1
  298. package/dist/clark-log-forwarder.d.ts.map +1 -1
  299. package/dist/clark-log-forwarder.js +1 -0
  300. package/dist/clark-log-forwarder.js.map +1 -1
  301. package/dist/resolver.d.ts.map +1 -1
  302. package/dist/resolver.js +4 -1
  303. package/dist/resolver.js.map +1 -1
  304. package/dist/router-parser.d.ts.map +1 -1
  305. package/dist/router-parser.js +34 -9
  306. package/dist/router-parser.js.map +1 -1
  307. package/package.json +23 -18
@@ -0,0 +1,120 @@
1
+ import { LLMObsTracer } from "../../llmobs/tracer.js";
2
+ import { extractTextFromMessage } from "../client.js";
3
+ import { toStoredMessage } from "./types.js";
4
+ const MAX_TURNS_TO_SHOW = 10;
5
+ const MAX_USER_MESSAGE_LENGTH = 120;
6
+ const MAX_ASSISTANT_MESSAGE_LENGTH = 150;
7
+ function truncateText(text, maxLength) {
8
+ const normalized = text.replace(/\s+/g, " ").trim();
9
+ if (normalized.length <= maxLength) {
10
+ return normalized;
11
+ }
12
+ return normalized.slice(0, maxLength) + "...";
13
+ }
14
+ function extractTurnSummaries(messages) {
15
+ const summaries = [];
16
+ let currentUserMessage = null;
17
+ let lastAssistantText = null;
18
+ for (const msg of messages) {
19
+ if (msg.role === "user") {
20
+ const userText = extractTextFromMessage(msg, "last");
21
+ if (userText) {
22
+ if (currentUserMessage !== null) {
23
+ summaries.push({
24
+ userMessage: currentUserMessage,
25
+ assistantMessage: lastAssistantText,
26
+ });
27
+ }
28
+ currentUserMessage = userText;
29
+ lastAssistantText = null;
30
+ }
31
+ }
32
+ else if (msg.role === "assistant" && currentUserMessage !== null) {
33
+ const text = extractTextFromMessage(msg);
34
+ if (text) {
35
+ lastAssistantText = text;
36
+ }
37
+ }
38
+ }
39
+ if (currentUserMessage !== null) {
40
+ summaries.push({
41
+ userMessage: currentUserMessage,
42
+ assistantMessage: lastAssistantText,
43
+ });
44
+ }
45
+ return summaries;
46
+ }
47
+ function formatTimeline(summaries, totalMessages) {
48
+ const totalTurns = summaries.length;
49
+ const turnsToShow = summaries.slice(-MAX_TURNS_TO_SHOW);
50
+ const startNumber = totalTurns - turnsToShow.length + 1;
51
+ const isLimited = totalTurns > MAX_TURNS_TO_SHOW;
52
+ let header = `[Context limit reached - ${totalMessages} messages were dropped. Falling back to session summary.]\n\n`;
53
+ header += isLimited
54
+ ? `## Session History (showing last ${turnsToShow.length} of ${totalTurns} turns)\n\n`
55
+ : `## Session History\n\n`;
56
+ const lines = turnsToShow.map((turn, i) => {
57
+ const turnNumber = startNumber + i;
58
+ const isLast = i === turnsToShow.length - 1;
59
+ const userLabel = isLast ? "**Current request:**" : "User:";
60
+ const userText = truncateText(turn.userMessage, MAX_USER_MESSAGE_LENGTH);
61
+ let line = `${turnNumber}. ${userLabel} "${userText}"`;
62
+ if (turn.assistantMessage) {
63
+ line += `\n Assistant: "${truncateText(turn.assistantMessage, MAX_ASSISTANT_MESSAGE_LENGTH)}"`;
64
+ }
65
+ else if (!isLast) {
66
+ line += `\n Assistant: "(no response)"`;
67
+ }
68
+ return line;
69
+ });
70
+ return header + lines.join("\n\n");
71
+ }
72
+ /**
73
+ * Creates a truncation-based fallback when LLM summarization fails.
74
+ * Generates a timeline summary of the conversation without returning
75
+ * the actual messages, which can cause provider errors.
76
+ */
77
+ export function createTruncationFallback(messages, tracer = LLMObsTracer.instance) {
78
+ return tracer.trace({ name: "session.summarize.fallback", kind: "task" }, (fallbackSpan) => {
79
+ const summaries = extractTurnSummaries(messages);
80
+ if (summaries.length === 0) {
81
+ const fallbackContent = `[Context limit reached - ${messages.length} messages were dropped. ` +
82
+ `No user messages found to summarize.]`;
83
+ tracer.annotate(fallbackSpan, {
84
+ metadata: {
85
+ input: {
86
+ messageCount: messages.length,
87
+ },
88
+ result: {
89
+ summaryLength: fallbackContent.length,
90
+ turnCount: 0,
91
+ },
92
+ },
93
+ });
94
+ return {
95
+ summary: fallbackContent,
96
+ messages: [
97
+ toStoredMessage({ role: "user", content: fallbackContent }, { isSummary: true }),
98
+ ],
99
+ };
100
+ }
101
+ const summaryText = formatTimeline(summaries, messages.length);
102
+ const summaryMessage = toStoredMessage({ role: "user", content: summaryText }, { isSummary: true });
103
+ tracer.annotate(fallbackSpan, {
104
+ metadata: {
105
+ input: {
106
+ messageCount: messages.length,
107
+ },
108
+ result: {
109
+ summaryLength: summaryText.length,
110
+ turnCount: summaries.length,
111
+ },
112
+ },
113
+ });
114
+ return {
115
+ summary: summaryText,
116
+ messages: [summaryMessage],
117
+ };
118
+ });
119
+ }
120
+ //# sourceMappingURL=truncation-fallback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"truncation-fallback.js","sourceRoot":"","sources":["../../../../src/ai-service/llm/context-v2/truncation-fallback.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import type { StoredMessage } from "./types.js";
2
+ export interface Turn {
3
+ /** Index of the first message in this turn (user message) */
4
+ startIndex: number;
5
+ /** Index of the last message in this turn (assistant message with cumulativeInputTokens) */
6
+ endIndex: number;
7
+ /** Token count for this turn (delta from previous turn) */
8
+ tokenCount: number;
9
+ /** Indices of tool messages within this turn */
10
+ toolMessageIndices: number[];
11
+ }
12
+ /**
13
+ * Groups messages into turns. Each turn ends with an assistant message
14
+ * that has cumulativeInputTokens. The token count for a turn is calculated
15
+ * as the delta between consecutive assistant messages' cumulativeInputTokens.
16
+ */
17
+ export declare function identifyTurns(messages: StoredMessage[]): Turn[];
18
+ /**
19
+ * Selects the most recent turns that fit within the token budget.
20
+ * Walks backward through turns, accumulating token counts.
21
+ */
22
+ export declare function selectRecentTurns(turns: Turn[], tokenBudget: number): Turn[];
23
+ //# sourceMappingURL=turns.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"turns.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/llm/context-v2/turns.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,MAAM,WAAW,IAAI;IACnB,6DAA6D;IAC7D,UAAU,EAAE,MAAM,CAAC;IACnB,4FAA4F;IAC5F,QAAQ,EAAE,MAAM,CAAC;IACjB,2DAA2D;IAC3D,UAAU,EAAE,MAAM,CAAC;IACnB,gDAAgD;IAChD,kBAAkB,EAAE,MAAM,EAAE,CAAC;CAC9B;AAiBD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,IAAI,EAAE,CA8B/D;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,EAAE,CAe5E"}
@@ -0,0 +1,61 @@
1
+ function isToolMessage(msg) {
2
+ return msg.role === "tool" && Array.isArray(msg.content);
3
+ }
4
+ function isUnsummarizedToolMessage(msg) {
5
+ return isToolMessage(msg) && !msg._superblocks?.summarized;
6
+ }
7
+ function isAssistantWithTokens(msg) {
8
+ return (msg.role === "assistant" &&
9
+ msg._superblocks?.cumulativeInputTokens !== undefined);
10
+ }
11
+ /**
12
+ * Groups messages into turns. Each turn ends with an assistant message
13
+ * that has cumulativeInputTokens. The token count for a turn is calculated
14
+ * as the delta between consecutive assistant messages' cumulativeInputTokens.
15
+ */
16
+ export function identifyTurns(messages) {
17
+ const turns = [];
18
+ let turnStart = 0;
19
+ let prevTokens = 0;
20
+ for (let i = 0; i < messages.length; i++) {
21
+ const msg = messages[i];
22
+ if (isAssistantWithTokens(msg)) {
23
+ const currentTokens = msg._superblocks.cumulativeInputTokens;
24
+ const toolIndices = [];
25
+ for (let j = turnStart; j <= i; j++) {
26
+ if (isUnsummarizedToolMessage(messages[j])) {
27
+ toolIndices.push(j);
28
+ }
29
+ }
30
+ turns.push({
31
+ startIndex: turnStart,
32
+ endIndex: i,
33
+ tokenCount: currentTokens - prevTokens,
34
+ toolMessageIndices: toolIndices,
35
+ });
36
+ prevTokens = currentTokens;
37
+ turnStart = i + 1;
38
+ }
39
+ }
40
+ return turns;
41
+ }
42
+ /**
43
+ * Selects the most recent turns that fit within the token budget.
44
+ * Walks backward through turns, accumulating token counts.
45
+ */
46
+ export function selectRecentTurns(turns, tokenBudget) {
47
+ const selected = [];
48
+ let accumulated = 0;
49
+ for (let i = turns.length - 1; i >= 0; i--) {
50
+ const turn = turns[i];
51
+ if (accumulated + turn.tokenCount <= tokenBudget) {
52
+ accumulated += turn.tokenCount;
53
+ selected.unshift(turn);
54
+ }
55
+ else {
56
+ break;
57
+ }
58
+ }
59
+ return selected;
60
+ }
61
+ //# sourceMappingURL=turns.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"turns.js","sourceRoot":"","sources":["../../../../src/ai-service/llm/context-v2/turns.ts"],"names":[],"mappings":"AAaA,SAAS,aAAa,CAAC,GAAkB;IACvC,OAAO,GAAG,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,yBAAyB,CAAC,GAAkB;IACnD,OAAO,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC;AAC7D,CAAC;AAED,SAAS,qBAAqB,CAAC,GAAkB;IAC/C,OAAO,CACL,GAAG,CAAC,IAAI,KAAK,WAAW;QACxB,GAAG,CAAC,YAAY,EAAE,qBAAqB,KAAK,SAAS,CACtD,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,QAAyB;IACrD,MAAM,KAAK,GAAW,EAAE,CAAC;IACzB,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,IAAI,UAAU,GAAG,CAAC,CAAC;IAEnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAE,CAAC;QACzB,IAAI,qBAAqB,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/B,MAAM,aAAa,GAAG,GAAG,CAAC,YAAa,CAAC,qBAAsB,CAAC;YAC/D,MAAM,WAAW,GAAa,EAAE,CAAC;YAEjC,KAAK,IAAI,CAAC,GAAG,SAAS,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBACpC,IAAI,yBAAyB,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,EAAE,CAAC;oBAC5C,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACtB,CAAC;YACH,CAAC;YAED,KAAK,CAAC,IAAI,CAAC;gBACT,UAAU,EAAE,SAAS;gBACrB,QAAQ,EAAE,CAAC;gBACX,UAAU,EAAE,aAAa,GAAG,UAAU;gBACtC,kBAAkB,EAAE,WAAW;aAChC,CAAC,CAAC;YAEH,UAAU,GAAG,aAAa,CAAC;YAC3B,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAa,EAAE,WAAmB;IAClE,MAAM,QAAQ,GAAW,EAAE,CAAC;IAC5B,IAAI,WAAW,GAAG,CAAC,CAAC;IAEpB,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3C,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;QACvB,IAAI,WAAW,GAAG,IAAI,CAAC,UAAU,IAAI,WAAW,EAAE,CAAC;YACjD,WAAW,IAAI,IAAI,CAAC,UAAU,CAAC;YAC/B,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;aAAM,CAAC;YACN,MAAM;QACR,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -0,0 +1,100 @@
1
+ import type { AttachmentsRecord } from "../../attachments/store.js";
2
+ import type { LanguageModelV2ToolResultOutput } from "@ai-sdk/provider";
3
+ import type { ModelMessage, LanguageModelUsage } from "ai";
4
+ export type { AttachmentsRecord };
5
+ export interface SuperblocksMetadata {
6
+ /** True token count from LLM (set for assistant messages). */
7
+ tokenCount?: number;
8
+ /** Total input tokens used at the time of this assistant turn (cumulative context size). */
9
+ cumulativeInputTokens?: number;
10
+ timestamp: number;
11
+ isSummary?: boolean;
12
+ /** Tool summaries keyed by toolCallId. On assistant messages: input summaries. On tool messages: output summaries. */
13
+ toolSummaries?: Record<string, string>;
14
+ /** True if this tool message was summarized during phase 1 compaction. */
15
+ summarized?: boolean;
16
+ }
17
+ export type StoredMessage = ModelMessage & {
18
+ _superblocks?: SuperblocksMetadata;
19
+ };
20
+ export interface TokenUsage {
21
+ input: number;
22
+ output: number;
23
+ cacheRead: number;
24
+ }
25
+ export interface CompactionResult {
26
+ messages: StoredMessage[];
27
+ phase1Applied: boolean;
28
+ phase2Applied: boolean;
29
+ tokensSaved: number;
30
+ }
31
+ export type CompactionPhase = "phase1" | "phase2";
32
+ export interface CompactionCallbacks {
33
+ onCompactionStart?: (phase: CompactionPhase, messageId: string) => void;
34
+ onCompactionComplete?: (phase: CompactionPhase, messageId: string) => void;
35
+ }
36
+ /**
37
+ * Serialized V2 context state for persistence.
38
+ * Contains the version marker to distinguish from V1 records.
39
+ */
40
+ export interface ContextRecordV2 {
41
+ /** Version marker to distinguish from V1 records */
42
+ version: 2;
43
+ /** Conversation messages */
44
+ messages: StoredMessage[];
45
+ /** User-uploaded attachments (images, PDFs, text files) */
46
+ attachments?: AttachmentsRecord;
47
+ }
48
+ export declare const PROVIDER_CACHE_MAX_BREAKPOINTS = 4;
49
+ export declare const PROVIDER_CACHE_MIN_CACHEABLE_TOKENS = 1024;
50
+ export declare const CACHE_BREAKPOINT_PROVIDER_OPTIONS: {
51
+ bedrock: {
52
+ cachePoint: {
53
+ type: string;
54
+ };
55
+ };
56
+ anthropic: {
57
+ cacheControl: {
58
+ type: string;
59
+ };
60
+ };
61
+ };
62
+ export interface CachingConfig {
63
+ maxBreakpoints: number;
64
+ minCacheableTokens: number;
65
+ }
66
+ /**
67
+ * Normalizes a tool result output to ensure it conforms to LanguageModelV2ToolResultOutput.
68
+ * This prevents validation errors when passing messages to the AI SDK.
69
+ */
70
+ export declare function normalizeToolResultOutput(output: unknown): LanguageModelV2ToolResultOutput;
71
+ /**
72
+ * Normalizes tool messages to ensure all tool results have valid output formats.
73
+ */
74
+ export declare function normalizeToolMessage(msg: ModelMessage): ModelMessage;
75
+ /**
76
+ * Ensures an assistant message's content starts with reasoning blocks.
77
+ * Reorders content so all reasoning blocks are first, as required by AWS Bedrock.
78
+ * If no reasoning blocks exist, prepends an empty one.
79
+ *
80
+ * AWS Bedrock requirements:
81
+ * - "Thinking blocks must be the first content blocks in an assistant message"
82
+ * - "The final block in an assistant message cannot be thinking"
83
+ */
84
+ export declare function prependReasoningBlockIfNeeded(msg: ModelMessage): ModelMessage;
85
+ /**
86
+ * Repairs broken tool calls in assistant messages.
87
+ *
88
+ * - Ensures tool-call inputs are valid objects (not null, undefined, or arrays)
89
+ * - Removes tool-call parts without corresponding tool-result in the next message
90
+ *
91
+ * This prevents errors from LLM providers like:
92
+ * - Bedrock: "messages.X.content.Y.tool_use.input: Input should be a valid dictionary"
93
+ * - Vertex: "tool_use ids were found without tool_result blocks immediately after"
94
+ */
95
+ export declare function repairBrokenToolCalls(msg: ModelMessage, index: number, messages: ModelMessage[]): ModelMessage;
96
+ export declare function stripUndefinedFromToolOutputs(msg: ModelMessage): ModelMessage;
97
+ export declare function toSdkMessages(messages: StoredMessage[]): ModelMessage[];
98
+ export declare function toStoredMessage(msg: ModelMessage, metadata?: Partial<SuperblocksMetadata>): StoredMessage;
99
+ export declare function extractTokenUsage(usage: LanguageModelUsage): TokenUsage;
100
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/llm/context-v2/types.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,KAAK,EACV,YAAY,EACZ,kBAAkB,EAGnB,MAAM,IAAI,CAAC;AAEZ,YAAY,EAAE,iBAAiB,EAAE,CAAC;AAElC,MAAM,WAAW,mBAAmB;IAClC,8DAA8D;IAC9D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4FAA4F;IAC5F,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,sHAAsH;IACtH,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,0EAA0E;IAC1E,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG;IACzC,YAAY,CAAC,EAAE,mBAAmB,CAAC;CACpC,CAAC;AAEF,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,aAAa,EAAE,OAAO,CAAC;IACvB,aAAa,EAAE,OAAO,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAElD,MAAM,WAAW,mBAAmB;IAClC,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACxE,oBAAoB,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5E;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,oDAAoD;IACpD,OAAO,EAAE,CAAC,CAAC;IACX,4BAA4B;IAC5B,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,2DAA2D;IAC3D,WAAW,CAAC,EAAE,iBAAiB,CAAC;CACjC;AAID,eAAO,MAAM,8BAA8B,IAAI,CAAC;AAEhD,eAAO,MAAM,mCAAmC,OAAO,CAAC;AAExD,eAAO,MAAM,iCAAiC;;;;;;;;;;;CAG7C,CAAC;AAEF,MAAM,WAAW,aAAa;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAID;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,OAAO,GACd,+BAA+B,CA8BjC;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,YAAY,GAAG,YAAY,CAkCpE;AA8BD;;;;;;;;GAQG;AACH,wBAAgB,6BAA6B,CAAC,GAAG,EAAE,YAAY,GAAG,YAAY,CAqC7E;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,YAAY,EACjB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,YAAY,EAAE,GACvB,YAAY,CAoGd;AAkBD,wBAAgB,6BAA6B,CAAC,GAAG,EAAE,YAAY,GAAG,YAAY,CAqC7E;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,YAAY,EAAE,CAKvE;AAED,wBAAgB,eAAe,CAC7B,GAAG,EAAE,YAAY,EACjB,QAAQ,GAAE,OAAO,CAAC,mBAAmB,CAAM,GAC1C,aAAa,CAKf;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,kBAAkB,GAAG,UAAU,CAMvE"}
@@ -0,0 +1,262 @@
1
+ import { getPrefixedLogger } from "../../../util/logger.js";
2
+ // --- Caching constants and types ---
3
+ export const PROVIDER_CACHE_MAX_BREAKPOINTS = 4;
4
+ export const PROVIDER_CACHE_MIN_CACHEABLE_TOKENS = 1024;
5
+ export const CACHE_BREAKPOINT_PROVIDER_OPTIONS = {
6
+ bedrock: { cachePoint: { type: "default" } },
7
+ anthropic: { cacheControl: { type: "ephemeral" } },
8
+ };
9
+ const logger = getPrefixedLogger("[context-v2:types]");
10
+ /**
11
+ * Normalizes a tool result output to ensure it conforms to LanguageModelV2ToolResultOutput.
12
+ * This prevents validation errors when passing messages to the AI SDK.
13
+ */
14
+ export function normalizeToolResultOutput(output) {
15
+ if (output === null || output === undefined) {
16
+ return { type: "json", value: null };
17
+ }
18
+ if (typeof output !== "object") {
19
+ return { type: "json", value: output };
20
+ }
21
+ const outputObj = output;
22
+ if (!("type" in outputObj) || typeof outputObj.type !== "string") {
23
+ return { type: "json", value: output };
24
+ }
25
+ const validTypes = [
26
+ "text",
27
+ "json",
28
+ "error-text",
29
+ "error-json",
30
+ "content",
31
+ ];
32
+ if (!validTypes.includes(outputObj.type)) {
33
+ logger.warn(`Invalid tool result output type: ${outputObj.type}. Normalizing to json type.`);
34
+ return { type: "json", value: output };
35
+ }
36
+ return output;
37
+ }
38
+ /**
39
+ * Normalizes tool messages to ensure all tool results have valid output formats.
40
+ */
41
+ export function normalizeToolMessage(msg) {
42
+ if (msg.role !== "tool" || !Array.isArray(msg.content)) {
43
+ return msg;
44
+ }
45
+ const normalizedContent = msg.content.map((part) => {
46
+ if (typeof part === "object" &&
47
+ part !== null &&
48
+ "type" in part &&
49
+ part.type === "tool-result" &&
50
+ "output" in part) {
51
+ const toolResult = part;
52
+ const normalizedOutput = normalizeToolResultOutput(toolResult.output);
53
+ if (normalizedOutput !== toolResult.output) {
54
+ logger.debug(`Normalized tool result output for ${toolResult.toolName} (callId: ${toolResult.toolCallId})`);
55
+ }
56
+ return { ...toolResult, output: normalizedOutput };
57
+ }
58
+ return part;
59
+ });
60
+ return { ...msg, content: normalizedContent };
61
+ }
62
+ /**
63
+ * Normalizes provider options on reasoning blocks to work across both
64
+ * Anthropic (Vertex) and Bedrock providers.
65
+ */
66
+ function normalizeReasoningProviderOptions(part) {
67
+ const providerOptions = part.providerOptions;
68
+ if (!providerOptions)
69
+ return;
70
+ const anthropicSignature = providerOptions.anthropic?.signature;
71
+ const bedrockSignature = providerOptions.bedrock?.signature;
72
+ const signature = anthropicSignature || bedrockSignature;
73
+ if (signature) {
74
+ providerOptions.anthropic = { ...providerOptions.anthropic, signature };
75
+ providerOptions.bedrock = { ...providerOptions.bedrock, signature };
76
+ }
77
+ }
78
+ /**
79
+ * Ensures an assistant message's content starts with reasoning blocks.
80
+ * Reorders content so all reasoning blocks are first, as required by AWS Bedrock.
81
+ * If no reasoning blocks exist, prepends an empty one.
82
+ *
83
+ * AWS Bedrock requirements:
84
+ * - "Thinking blocks must be the first content blocks in an assistant message"
85
+ * - "The final block in an assistant message cannot be thinking"
86
+ */
87
+ export function prependReasoningBlockIfNeeded(msg) {
88
+ if (msg.role !== "assistant") {
89
+ return msg;
90
+ }
91
+ let content = msg.content;
92
+ if (typeof content === "string") {
93
+ content = [{ type: "text", text: content }];
94
+ }
95
+ const reasoningBlocks = content.filter((part) => part.type === "reasoning");
96
+ const otherBlocks = content.filter((part) => part.type !== "reasoning");
97
+ for (const block of reasoningBlocks) {
98
+ if (block.type === "reasoning") {
99
+ normalizeReasoningProviderOptions(block);
100
+ }
101
+ }
102
+ if (reasoningBlocks.length === 0) {
103
+ reasoningBlocks.push({ type: "reasoning", text: "" });
104
+ }
105
+ // Bedrock requires that the final block cannot be a thinking/reasoning block.
106
+ // If there are no other blocks, add a placeholder text block at the end.
107
+ // Note: Cannot use empty string as Anthropic (Vertex) rejects empty content.
108
+ if (otherBlocks.length === 0) {
109
+ otherBlocks.push({ type: "text", text: "..." });
110
+ }
111
+ return {
112
+ ...msg,
113
+ content: [...reasoningBlocks, ...otherBlocks],
114
+ };
115
+ }
116
+ /**
117
+ * Repairs broken tool calls in assistant messages.
118
+ *
119
+ * - Ensures tool-call inputs are valid objects (not null, undefined, or arrays)
120
+ * - Removes tool-call parts without corresponding tool-result in the next message
121
+ *
122
+ * This prevents errors from LLM providers like:
123
+ * - Bedrock: "messages.X.content.Y.tool_use.input: Input should be a valid dictionary"
124
+ * - Vertex: "tool_use ids were found without tool_result blocks immediately after"
125
+ */
126
+ export function repairBrokenToolCalls(msg, index, messages) {
127
+ if (msg.role !== "assistant" || typeof msg.content === "string") {
128
+ return msg;
129
+ }
130
+ let content = [...msg.content];
131
+ // Fix tool-call inputs that are not objects
132
+ let inputsFixed = 0;
133
+ content = content.map((part) => {
134
+ if (part.type === "tool-call") {
135
+ const toolCall = part;
136
+ if (typeof toolCall.input !== "object" ||
137
+ toolCall.input === null ||
138
+ Array.isArray(toolCall.input)) {
139
+ inputsFixed++;
140
+ return { ...part, input: {} };
141
+ }
142
+ }
143
+ return part;
144
+ });
145
+ if (inputsFixed > 0) {
146
+ logger.debug(`Fixed ${inputsFixed} tool call(s) with non-object input at index ${index}`);
147
+ }
148
+ // Collect tool-result IDs from the next message
149
+ const toolResultIds = new Set();
150
+ const nextMsg = messages[index + 1];
151
+ if (nextMsg &&
152
+ (nextMsg.role === "assistant" || nextMsg.role === "tool") &&
153
+ typeof nextMsg.content !== "string") {
154
+ for (const part of nextMsg.content) {
155
+ if (typeof part === "object" &&
156
+ part !== null &&
157
+ "type" in part &&
158
+ part.type === "tool-result" &&
159
+ "toolCallId" in part) {
160
+ toolResultIds.add(part.toolCallId);
161
+ }
162
+ }
163
+ }
164
+ // Get tool-call IDs from this message
165
+ const hasToolCalls = content.some((part) => typeof part === "object" &&
166
+ part !== null &&
167
+ "type" in part &&
168
+ part.type === "tool-call");
169
+ if (!hasToolCalls) {
170
+ return { ...msg, content };
171
+ }
172
+ // Also check for tool-result in the same message (parallel tool calls)
173
+ for (const part of content) {
174
+ if (typeof part === "object" &&
175
+ part !== null &&
176
+ "type" in part &&
177
+ part.type === "tool-result" &&
178
+ "toolCallId" in part) {
179
+ toolResultIds.add(part.toolCallId);
180
+ }
181
+ }
182
+ // Remove orphaned tool-call parts
183
+ const before = content.length;
184
+ content = content.filter((part) => {
185
+ if (typeof part === "object" &&
186
+ part !== null &&
187
+ "type" in part &&
188
+ part.type === "tool-call" &&
189
+ "toolCallId" in part) {
190
+ return toolResultIds.has(part.toolCallId);
191
+ }
192
+ return true;
193
+ });
194
+ const removed = before - content.length;
195
+ if (removed > 0) {
196
+ logger.debug(`Removed ${removed} orphaned tool call(s) from assistant message at index ${index}`);
197
+ }
198
+ return { ...msg, content };
199
+ }
200
+ function stripUndefined(obj) {
201
+ if (obj === null || typeof obj !== "object") {
202
+ return obj;
203
+ }
204
+ if (Array.isArray(obj)) {
205
+ return obj.map(stripUndefined);
206
+ }
207
+ const result = {};
208
+ for (const [key, value] of Object.entries(obj)) {
209
+ if (value !== undefined) {
210
+ result[key] = stripUndefined(value);
211
+ }
212
+ }
213
+ return result;
214
+ }
215
+ export function stripUndefinedFromToolOutputs(msg) {
216
+ if (msg.role !== "tool" || !Array.isArray(msg.content)) {
217
+ return msg;
218
+ }
219
+ const cleanedContent = msg.content.map((part) => {
220
+ if (typeof part === "object" &&
221
+ part !== null &&
222
+ "type" in part &&
223
+ part.type === "tool-result" &&
224
+ "output" in part) {
225
+ const toolResult = part;
226
+ // Only strip undefined from the output value, not the entire tool result
227
+ const output = toolResult.output;
228
+ if (output && typeof output === "object" && "value" in output) {
229
+ const typedOutput = output;
230
+ return {
231
+ ...toolResult,
232
+ output: {
233
+ ...typedOutput,
234
+ value: stripUndefined(typedOutput.value),
235
+ },
236
+ };
237
+ }
238
+ }
239
+ return part;
240
+ });
241
+ return { ...msg, content: cleanedContent };
242
+ }
243
+ export function toSdkMessages(messages) {
244
+ return messages.map((msg) => {
245
+ const { _superblocks, ...sdkMessage } = msg;
246
+ return sdkMessage;
247
+ });
248
+ }
249
+ export function toStoredMessage(msg, metadata = {}) {
250
+ return {
251
+ ...msg,
252
+ _superblocks: { timestamp: Date.now(), ...metadata },
253
+ };
254
+ }
255
+ export function extractTokenUsage(usage) {
256
+ return {
257
+ input: usage.inputTokens ?? 0,
258
+ output: usage.outputTokens ?? 0,
259
+ cacheRead: usage.cachedInputTokens ?? 0,
260
+ };
261
+ }
262
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/ai-service/llm/context-v2/types.ts"],"names":[],"mappings":"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"}
@@ -100,5 +100,9 @@ export declare function isProviderErrorRetryable(error: unknown): boolean;
100
100
  * considered retryable and should trigger provider fallback.
101
101
  */
102
102
  export declare function isNoOutputError(error: unknown): boolean;
103
+ /**
104
+ * Checks if an error indicates the prompt exceeded the model's token limit.
105
+ */
106
+ export declare function isTokenLimitError(error: unknown): boolean;
103
107
  export {};
104
108
  //# sourceMappingURL=error.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../../src/ai-service/llm/error.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../../src/ai-service/llm/error.ts"],"names":[],"mappings":"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"}
@@ -277,4 +277,30 @@ export function isNoOutputError(error) {
277
277
  }
278
278
  return false;
279
279
  }
280
+ /**
281
+ * Checks if an error indicates the prompt exceeded the model's token limit.
282
+ */
283
+ export function isTokenLimitError(error) {
284
+ if (!error || typeof error !== "object")
285
+ return false;
286
+ const isTokenLimitMessage = (msg) => msg.toLowerCase().includes("prompt is too long") ||
287
+ msg.toLowerCase().includes("input is too long");
288
+ const err = error;
289
+ // Check top-level message
290
+ if (err.message && isTokenLimitMessage(err.message)) {
291
+ return true;
292
+ }
293
+ // Check nested data using normalized provider error data
294
+ if (err.data) {
295
+ const normalized = normalizeProviderErrorData(err.data);
296
+ if (isTokenLimitMessage(normalized.message)) {
297
+ return true;
298
+ }
299
+ }
300
+ // Check cause chain
301
+ if (err.cause && isTokenLimitError(err.cause)) {
302
+ return true;
303
+ }
304
+ return false;
305
+ }
280
306
  //# sourceMappingURL=error.js.map