@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,274 @@
1
+ /**
2
+ * Web Fetch Tool
3
+ *
4
+ * Fetches content from a URL, converts HTML to markdown,
5
+ * and processes it with an LLM based on a user prompt.
6
+ */
7
+ import { generateObject } from "ai";
8
+ import TurndownService from "turndown";
9
+ import { z } from "zod";
10
+ import { getLogger, getErrorMeta } from "../../../../util/logger.js";
11
+ import { createToolFactory, PermissionLevel, ToolCategory } from "../types.js";
12
+ /**
13
+ * Schema for structured LLM response.
14
+ * Uses generateObject pattern from safety-classifier for Clark API compatibility.
15
+ */
16
+ const WebFetchResponseSchema = z.object({
17
+ content: z
18
+ .string()
19
+ .describe("The extracted information as plain markdown text (NOT JSON). Use markdown formatting for headers, lists, bold, etc."),
20
+ });
21
+ /**
22
+ * System prompt for web content extraction.
23
+ */
24
+ const WEB_FETCH_SYSTEM_PROMPT = `You are a helpful assistant that extracts and summarizes information from web page content.
25
+ Analyze the provided web page content and respond to the user's prompt with relevant information.
26
+ Be concise and focus on the information requested.
27
+
28
+ IMPORTANT: Return your response as plain markdown text, NOT as JSON. Use markdown formatting (headers, lists, bold, etc.) to structure your response clearly.`;
29
+ /**
30
+ * Cache duration in milliseconds (15 minutes).
31
+ */
32
+ const CACHE_DURATION_MS = 15 * 60 * 1000;
33
+ /**
34
+ * Maximum content length to send to LLM (characters).
35
+ */
36
+ const MAX_CONTENT_LENGTH = 100_000;
37
+ /**
38
+ * Simple TTL-based cache for fetched content.
39
+ */
40
+ class WebFetchCache {
41
+ cache = new Map();
42
+ get(url) {
43
+ const entry = this.cache.get(url);
44
+ if (!entry)
45
+ return undefined;
46
+ if (Date.now() - entry.timestamp > CACHE_DURATION_MS) {
47
+ this.cache.delete(url);
48
+ return undefined;
49
+ }
50
+ return entry.content;
51
+ }
52
+ set(url, content) {
53
+ this.cache.set(url, { content, timestamp: Date.now() });
54
+ }
55
+ clear() {
56
+ this.cache.clear();
57
+ }
58
+ }
59
+ // Module-level cache instance
60
+ const fetchCache = new WebFetchCache();
61
+ /**
62
+ * Turndown service for HTML to markdown conversion.
63
+ */
64
+ const turndownService = new TurndownService({
65
+ headingStyle: "atx",
66
+ codeBlockStyle: "fenced",
67
+ });
68
+ // Remove script, style, and other non-content elements
69
+ turndownService.remove(["script", "style", "nav", "footer", "header", "aside"]);
70
+ /**
71
+ * Converts HTML to markdown.
72
+ *
73
+ * @param html - HTML content
74
+ * @returns Markdown content
75
+ */
76
+ function htmlToMarkdown(html) {
77
+ return turndownService.turndown(html);
78
+ }
79
+ /**
80
+ * Upgrades HTTP URLs to HTTPS.
81
+ *
82
+ * @param url - URL to upgrade
83
+ * @returns HTTPS URL
84
+ */
85
+ function upgradeToHttps(url) {
86
+ if (url.startsWith("http://")) {
87
+ return url.replace("http://", "https://");
88
+ }
89
+ return url;
90
+ }
91
+ /**
92
+ * Validates a URL is safe to fetch (SSRF protection).
93
+ * Blocks requests to private IP ranges and localhost.
94
+ *
95
+ * @param url - URL to validate
96
+ * @returns true if the URL is safe to fetch
97
+ */
98
+ function isAllowedUrl(url) {
99
+ const parsed = new URL(url);
100
+ const hostname = parsed.hostname.toLowerCase();
101
+ // Block localhost
102
+ if (hostname === "localhost") {
103
+ return false;
104
+ }
105
+ // Block private IP ranges
106
+ if (hostname.startsWith("127.") || // Loopback
107
+ hostname.startsWith("10.") || // Class A private
108
+ hostname.startsWith("192.168.") || // Class C private
109
+ hostname.startsWith("169.254.") || // Link-local
110
+ hostname.startsWith("172.") // Check Class B private range (172.16-31.x.x)
111
+ ) {
112
+ // For 172.x, need to check if it's in the 172.16.0.0 - 172.31.255.255 range
113
+ if (hostname.startsWith("172.")) {
114
+ const parts = hostname.split(".");
115
+ const secondOctet = parseInt(parts[1] ?? "0", 10);
116
+ if (secondOctet >= 16 && secondOctet <= 31) {
117
+ return false;
118
+ }
119
+ }
120
+ else {
121
+ return false;
122
+ }
123
+ }
124
+ // Block IPv6 localhost and private ranges
125
+ if (hostname === "[::1]" ||
126
+ hostname.startsWith("[fc") ||
127
+ hostname.startsWith("[fd") ||
128
+ hostname.startsWith("[fe80")) {
129
+ return false;
130
+ }
131
+ return true;
132
+ }
133
+ /**
134
+ * Truncates content if it exceeds the maximum length.
135
+ *
136
+ * @param content - Content to truncate
137
+ * @param maxLength - Maximum length
138
+ * @returns Truncated content with note if applicable
139
+ */
140
+ function truncateContent(content, maxLength) {
141
+ if (content.length <= maxLength) {
142
+ return content;
143
+ }
144
+ return (content.slice(0, maxLength) +
145
+ "\n\n[Content truncated - original length: " +
146
+ content.length +
147
+ " characters]");
148
+ }
149
+ /**
150
+ * Web fetch tool factory.
151
+ *
152
+ * Fetches URL content, converts to markdown, and processes with LLM.
153
+ */
154
+ export const webFetchToolFactory = createToolFactory("web_fetch", ({ llmProvider }) => ({
155
+ description: `
156
+ Fetches content from a URL and extracts specific information using an AI model.
157
+
158
+ WHEN TO USE:
159
+ - After web_search returns relevant URLs that need deeper exploration
160
+ - When the user provides a documentation URL, GitHub link, or any webpage
161
+ - To get detailed information from official docs, release notes, or changelogs
162
+ - To verify information found in search snippets by reading the full page
163
+ - After installing a new library - read the official docs to learn correct usage patterns
164
+
165
+ Use this tool to follow up on web_search results when snippets don't provide enough detail.
166
+
167
+ Usage:
168
+ - Provide a URL and a prompt describing what information to extract
169
+ - HTTP URLs are automatically upgraded to HTTPS
170
+ - HTML content is converted to markdown before processing
171
+ - Results are cached for 15 minutes for faster repeated access
172
+
173
+ When a URL redirects to a different host, the tool will inform you
174
+ and provide the redirect URL. Make a new request with that URL.
175
+
176
+ Parameters:
177
+ - url: The URL to fetch content from (required)
178
+ - prompt: What information to extract from the page (required)
179
+
180
+ Examples:
181
+ - Fetch API docs: url="https://docs.example.com/api", prompt="List all available endpoints"
182
+ - Get pricing info: url="https://example.com/pricing", prompt="What are the pricing tiers?"
183
+ - Extract changelog: url="https://github.com/org/repo/releases", prompt="Summarize recent changes"
184
+ `,
185
+ category: ToolCategory.GENERAL,
186
+ defaultPermission: PermissionLevel.ALLOW,
187
+ readOnly: true,
188
+ inputSchema: z.object({
189
+ url: z.string().url().describe("The URL to fetch content from"),
190
+ prompt: z
191
+ .string()
192
+ .describe("The prompt describing what information to extract"),
193
+ }),
194
+ execute: async ({ url, prompt }, options) => {
195
+ const logger = getLogger();
196
+ try {
197
+ // Upgrade HTTP to HTTPS
198
+ const secureUrl = upgradeToHttps(url);
199
+ // SSRF protection: block private IPs and localhost
200
+ if (!isAllowedUrl(secureUrl)) {
201
+ throw new Error("URL not allowed: cannot fetch from localhost or private IP ranges");
202
+ }
203
+ // Check cache first
204
+ let markdown = fetchCache.get(secureUrl);
205
+ if (!markdown) {
206
+ // Fetch the URL
207
+ const response = await fetch(secureUrl, {
208
+ signal: options?.abortSignal,
209
+ redirect: "follow",
210
+ headers: {
211
+ "User-Agent": "Mozilla/5.0 (compatible; WebFetch/1.0; +https://superblocks.com)",
212
+ Accept: "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
213
+ },
214
+ });
215
+ if (!response.ok) {
216
+ throw new Error(`Fetch returned status ${response.status}`);
217
+ }
218
+ // Check for cross-host redirect
219
+ const originalHost = new URL(secureUrl).host;
220
+ const finalHost = new URL(response.url).host;
221
+ if (response.redirected && originalHost !== finalHost) {
222
+ return {
223
+ type: "redirect",
224
+ redirectUrl: response.url,
225
+ message: `URL redirected to a different host. Make a new request with the redirect URL: ${response.url}`,
226
+ };
227
+ }
228
+ // Get content and convert to markdown
229
+ const html = await response.text();
230
+ markdown = htmlToMarkdown(html);
231
+ // Cache the result
232
+ fetchCache.set(secureUrl, markdown);
233
+ }
234
+ // Truncate content if needed
235
+ const truncatedContent = truncateContent(markdown, MAX_CONTENT_LENGTH);
236
+ // Process with LLM using generateObject pattern (like safety-classifier)
237
+ const model = llmProvider.modelForTask("fast");
238
+ const { object: result } = await generateObject({
239
+ model,
240
+ schema: WebFetchResponseSchema,
241
+ system: WEB_FETCH_SYSTEM_PROMPT,
242
+ prompt: `User prompt: ${prompt}\n\nWeb page content:\n${truncatedContent}`,
243
+ abortSignal: options?.abortSignal,
244
+ });
245
+ return { content: result.content };
246
+ }
247
+ catch (error) {
248
+ logger.error("Web fetch failed", getErrorMeta({ url, error }));
249
+ if (error instanceof Error && error.name === "AbortError") {
250
+ throw new Error("Web fetch was aborted");
251
+ }
252
+ if (error instanceof Error) {
253
+ throw new Error(`Failed to fetch URL: ${error.message}`);
254
+ }
255
+ throw new Error("Failed to fetch URL: Unknown error");
256
+ }
257
+ },
258
+ getSummary: (input, output) => {
259
+ const isRedirect = "type" in output &&
260
+ output.type === "redirect" &&
261
+ "redirectUrl" in output;
262
+ if (isRedirect) {
263
+ return {
264
+ input: `url: "${input.url}"`,
265
+ output: `Redirected to ${output.redirectUrl}`,
266
+ };
267
+ }
268
+ return {
269
+ input: `url: "${input.url}"`,
270
+ output: `Processed ${output.content.length} chars`,
271
+ };
272
+ },
273
+ }));
274
+ //# sourceMappingURL=web-fetch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-fetch.js","sourceRoot":"","sources":["../../../../../src/ai-service/agent/tools2/tools/web-fetch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Web Search Tool
3
+ *
4
+ * Searches the web using DuckDuckGo's HTML search.
5
+ * Supports filtering by allowed/blocked domains.
6
+ */
7
+ interface SearchResult {
8
+ title: string;
9
+ link: string;
10
+ snippet: string;
11
+ }
12
+ /**
13
+ * Web search tool factory.
14
+ *
15
+ * Searches the web using DuckDuckGo's HTML search.
16
+ */
17
+ export declare const webSearchToolFactory: import("../types.js").ToolFactory<unknown, import("../types.js").Tool<{
18
+ query: string;
19
+ allowed_domains?: string[] | undefined;
20
+ blocked_domains?: string[] | undefined;
21
+ }, {
22
+ results: SearchResult[];
23
+ }>>;
24
+ export {};
25
+ //# sourceMappingURL=web-search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-search.d.ts","sourceRoot":"","sources":["../../../../../src/ai-service/agent/tools2/tools/web-search.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA8BH,UAAU,YAAY;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAiHD;;;;GAIG;AACH,eAAO,MAAM,oBAAoB;;;;;aAgDT,YAAY,EAAE;GA8CnC,CAAC"}
@@ -0,0 +1,210 @@
1
+ /**
2
+ * Web Search Tool
3
+ *
4
+ * Searches the web using DuckDuckGo's HTML search.
5
+ * Supports filtering by allowed/blocked domains.
6
+ */
7
+ import * as cheerio from "cheerio";
8
+ import { z } from "zod";
9
+ import { getErrorMeta, getLogger } from "../../../../util/logger.js";
10
+ import { createToolFactory, PermissionLevel, ToolCategory } from "../types.js";
11
+ /**
12
+ * Headers to mimic a browser request.
13
+ */
14
+ const BROWSER_HEADERS = {
15
+ "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36",
16
+ Accept: "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8",
17
+ "Accept-Language": "en-US,en;q=0.9",
18
+ "Accept-Encoding": "gzip, deflate, br",
19
+ "Cache-Control": "no-cache",
20
+ Pragma: "no-cache",
21
+ "Sec-Ch-Ua": '"Google Chrome";v="131", "Chromium";v="131", "Not_A Brand";v="24"',
22
+ "Sec-Ch-Ua-Mobile": "?0",
23
+ "Sec-Ch-Ua-Platform": '"macOS"',
24
+ "Sec-Fetch-Dest": "document",
25
+ "Sec-Fetch-Mode": "navigate",
26
+ "Sec-Fetch-Site": "none",
27
+ "Sec-Fetch-User": "?1",
28
+ "Upgrade-Insecure-Requests": "1",
29
+ };
30
+ /**
31
+ * Extracts the actual URL from a DuckDuckGo redirect URL.
32
+ *
33
+ * DuckDuckGo wraps URLs in their redirect format like:
34
+ * //duckduckgo.com/l/?uddg=https%3A%2F%2Fexample.com&rut=...
35
+ *
36
+ * @param ddgUrl - The DuckDuckGo redirect URL
37
+ * @returns The actual destination URL, or the original URL if parsing fails
38
+ */
39
+ function extractUrlFromDdgRedirect(ddgUrl) {
40
+ try {
41
+ // Handle relative URLs starting with //
42
+ const fullUrl = ddgUrl.startsWith("//") ? `https:${ddgUrl}` : ddgUrl;
43
+ const url = new URL(fullUrl);
44
+ const uddg = url.searchParams.get("uddg");
45
+ if (uddg) {
46
+ return decodeURIComponent(uddg);
47
+ }
48
+ return ddgUrl;
49
+ }
50
+ catch (error) {
51
+ getLogger().debug("Failed to parse DDG redirect URL", { ddgUrl, error });
52
+ return ddgUrl;
53
+ }
54
+ }
55
+ /**
56
+ * Parses DuckDuckGo HTML search results and extracts search results.
57
+ *
58
+ * @param html - The HTML content from DuckDuckGo search
59
+ * @returns Array of search results
60
+ */
61
+ function parseDuckDuckGoResults(html) {
62
+ const $ = cheerio.load(html);
63
+ const results = [];
64
+ // DuckDuckGo results are in div.result elements
65
+ // Each result has:
66
+ // - h2.result__title containing a.result__a (title and link)
67
+ // - a.result__snippet (description)
68
+ $("div.result").each((_index, element) => {
69
+ const $el = $(element);
70
+ // Skip ads (they have badge--ad class)
71
+ if ($el.find(".badge--ad").length > 0) {
72
+ return;
73
+ }
74
+ // Find the title link
75
+ const $titleLink = $el.find("h2.result__title a.result__a").first();
76
+ const title = $titleLink.text().trim();
77
+ const rawLink = $titleLink.attr("href") || "";
78
+ // Extract the actual URL from DuckDuckGo's redirect
79
+ const link = extractUrlFromDdgRedirect(rawLink);
80
+ // Find the snippet
81
+ const snippet = $el.find("a.result__snippet").first().text().trim();
82
+ // Only add valid results
83
+ if (title && link && link.startsWith("http")) {
84
+ results.push({ title, link, snippet });
85
+ }
86
+ });
87
+ return results;
88
+ }
89
+ /**
90
+ * Filters results by allowed and blocked domains.
91
+ *
92
+ * @param results - Array of search results
93
+ * @param allowedDomains - Only include results from these domains (if provided)
94
+ * @param blockedDomains - Exclude results from these domains
95
+ * @returns Filtered results
96
+ */
97
+ function filterByDomains(results, allowedDomains, blockedDomains) {
98
+ return results.filter((result) => {
99
+ try {
100
+ const domain = new URL(result.link).hostname.toLowerCase();
101
+ // Check blocked domains first
102
+ if (blockedDomains?.length) {
103
+ const isBlocked = blockedDomains.some((blocked) => domain.includes(blocked.toLowerCase()));
104
+ if (isBlocked)
105
+ return false;
106
+ }
107
+ // Check allowed domains (if specified)
108
+ if (allowedDomains?.length) {
109
+ const isAllowed = allowedDomains.some((allowed) => domain.includes(allowed.toLowerCase()));
110
+ if (!isAllowed)
111
+ return false;
112
+ }
113
+ return true;
114
+ }
115
+ catch {
116
+ // Invalid URL, exclude it
117
+ return false;
118
+ }
119
+ });
120
+ }
121
+ /**
122
+ * Web search tool factory.
123
+ *
124
+ * Searches the web using DuckDuckGo's HTML search.
125
+ */
126
+ export const webSearchToolFactory = createToolFactory("web_search", () => ({
127
+ description: `
128
+ Searches the web and returns results. Use this tool PROACTIVELY when the user's question likely requires current information.
129
+
130
+ WHEN TO USE (proactively search when):
131
+ - User asks about current versions, releases, or "latest" anything
132
+ - User asks about recent changes, updates, or deprecations
133
+ - User asks about best practices or recommendations (these evolve)
134
+ - You're uncertain about specific library APIs, syntax, or features
135
+ - User asks to compare tools or libraries
136
+ - Troubleshooting errors or issues that may have known solutions
137
+ - You just installed a new library - ALWAYS search for its docs before using it
138
+ - Any question where your training data might be outdated
139
+
140
+ DO NOT wait for the user to explicitly ask you to search - if the question benefits from current information, search first.
141
+
142
+ Usage:
143
+ - Provide a search query to find relevant web pages
144
+ - Optionally filter results by allowed or blocked domains
145
+ - Returns titles, links, and snippets for each result
146
+
147
+ Parameters:
148
+ - query: The search query (required, min 2 characters)
149
+ - allowed_domains: Only include results from these domains
150
+ - blocked_domains: Exclude results from these domains
151
+
152
+ Examples:
153
+ - Basic search: query="react hooks tutorial"
154
+ - Filter by domain: query="typescript generics", allowed_domains=["developer.mozilla.org", "typescriptlang.org"]
155
+ - Exclude domains: query="python async", blocked_domains=["w3schools.com"]
156
+ `,
157
+ category: ToolCategory.GENERAL,
158
+ defaultPermission: PermissionLevel.ALLOW,
159
+ readOnly: true,
160
+ inputSchema: z.object({
161
+ query: z.string().min(2).describe("The search query"),
162
+ allowed_domains: z
163
+ .array(z.string())
164
+ .optional()
165
+ .describe("Only include results from these domains"),
166
+ blocked_domains: z
167
+ .array(z.string())
168
+ .optional()
169
+ .describe("Exclude results from these domains"),
170
+ }),
171
+ execute: async ({ query, allowed_domains, blocked_domains }, options) => {
172
+ try {
173
+ // Use DuckDuckGo HTML search (works without JavaScript)
174
+ const searchUrl = `https://html.duckduckgo.com/html/?q=${encodeURIComponent(query)}`;
175
+ // Fetch search results
176
+ const response = await fetch(searchUrl, {
177
+ headers: {
178
+ ...BROWSER_HEADERS,
179
+ Referer: "https://html.duckduckgo.com/",
180
+ },
181
+ redirect: "follow",
182
+ signal: options?.abortSignal,
183
+ });
184
+ if (!response.ok) {
185
+ throw new Error(`Search returned status ${response.status}`);
186
+ }
187
+ const html = await response.text();
188
+ // Parse results
189
+ let results = parseDuckDuckGoResults(html);
190
+ // Filter by domains
191
+ results = filterByDomains(results, allowed_domains, blocked_domains);
192
+ return { results };
193
+ }
194
+ catch (error) {
195
+ getLogger().error("Web search failed", getErrorMeta({ query, error }));
196
+ if (error instanceof Error && error.name === "AbortError") {
197
+ throw new Error("Web search was aborted");
198
+ }
199
+ if (error instanceof Error) {
200
+ throw new Error(`Failed to search: ${error.message}`);
201
+ }
202
+ throw new Error("Failed to search: Unknown error");
203
+ }
204
+ },
205
+ getSummary: (input, output) => ({
206
+ input: `query: "${input.query}"`,
207
+ output: `Found ${output.results.length} result${output.results.length === 1 ? "" : "s"}`,
208
+ }),
209
+ }));
210
+ //# sourceMappingURL=web-search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-search.js","sourceRoot":"","sources":["../../../../../src/ai-service/agent/tools2/tools/web-search.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@
4
4
  * Attachments are persisted through Context.setAttachments() which ensures
5
5
  * they are included in Context serialization (toRecord/fromRecord).
6
6
  */
7
- import type { Context } from "../llm/context/context.js";
7
+ import type { LoadedContext } from "../llm/context/utils/get-loaded-context.js";
8
8
  import type { Attachment } from "@superblocksteam/library-shared/types";
9
9
  /** Common fields for all stored attachments */
10
10
  interface StoredAttachmentBase {
@@ -56,9 +56,9 @@ export interface AttachmentInfo {
56
56
  }
57
57
  export declare class AttachmentsStore {
58
58
  private getAttachments;
59
- appendAttachments(context: Context, attachments: Attachment[], originalMessage?: string): StoredAttachment[];
60
- listAttachments(context: Context): AttachmentInfo[];
61
- getAttachmentsByIds(context: Context, ids: number[]): StoredAttachment[];
59
+ appendAttachments(context: LoadedContext, attachments: Attachment[], originalMessage?: string): StoredAttachment[];
60
+ listAttachments(context: LoadedContext): AttachmentInfo[];
61
+ getAttachmentsByIds(context: LoadedContext, ids: number[]): StoredAttachment[];
62
62
  static toAttachments(stored: StoredAttachment[]): Attachment[];
63
63
  }
64
64
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/ai-service/attachments/store.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAC;AAexE,+CAA+C;AAC/C,UAAU,oBAAoB;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,8BAA8B;AAC9B,MAAM,WAAW,qBAAsB,SAAQ,oBAAoB;IACjE,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,4BAA4B;AAC5B,MAAM,WAAW,mBAAoB,SAAQ,oBAAoB;IAC/D,IAAI,EAAE,KAAK,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,yDAAyD;AACzD,MAAM,WAAW,oBAAqB,SAAQ,oBAAoB;IAChE,IAAI,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC;IAC9C,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,yFAAyF;AACzF,MAAM,MAAM,gBAAgB,GACxB,qBAAqB,GACrB,mBAAmB,GACnB,oBAAoB,CAAC;AAEzB;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,qCAAqC;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,kCAAkC;IAClC,WAAW,EAAE,gBAAgB,EAAE,CAAC;CACjC,CAAC;AAEF,oFAAoF;AACpF,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,cAAc;IAStB,iBAAiB,CACf,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,UAAU,EAAE,EACzB,eAAe,CAAC,EAAE,MAAM,GACvB,gBAAgB,EAAE;IA8ErB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,cAAc,EAAE;IAYnD,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,gBAAgB,EAAE;IAwBxE,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,gBAAgB,EAAE,GAAG,UAAU,EAAE;CAiC/D"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/ai-service/attachments/store.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4CAA4C,CAAC;AAChF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAC;AAexE,+CAA+C;AAC/C,UAAU,oBAAoB;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,8BAA8B;AAC9B,MAAM,WAAW,qBAAsB,SAAQ,oBAAoB;IACjE,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,4BAA4B;AAC5B,MAAM,WAAW,mBAAoB,SAAQ,oBAAoB;IAC/D,IAAI,EAAE,KAAK,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,yDAAyD;AACzD,MAAM,WAAW,oBAAqB,SAAQ,oBAAoB;IAChE,IAAI,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC;IAC9C,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,yFAAyF;AACzF,MAAM,MAAM,gBAAgB,GACxB,qBAAqB,GACrB,mBAAmB,GACnB,oBAAoB,CAAC;AAEzB;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,qCAAqC;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,kCAAkC;IAClC,WAAW,EAAE,gBAAgB,EAAE,CAAC;CACjC,CAAC;AAEF,oFAAoF;AACpF,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,cAAc;IAStB,iBAAiB,CACf,OAAO,EAAE,aAAa,EACtB,WAAW,EAAE,UAAU,EAAE,EACzB,eAAe,CAAC,EAAE,MAAM,GACvB,gBAAgB,EAAE;IA8ErB,eAAe,CAAC,OAAO,EAAE,aAAa,GAAG,cAAc,EAAE;IAYzD,mBAAmB,CACjB,OAAO,EAAE,aAAa,EACtB,GAAG,EAAE,MAAM,EAAE,GACZ,gBAAgB,EAAE;IAwBrB,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,gBAAgB,EAAE,GAAG,UAAU,EAAE;CAiC/D"}
@@ -1 +1 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/ai-service/attachments/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/ai-service/attachments/store.ts"],"names":[],"mappings":"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"}
@@ -1,16 +1,27 @@
1
1
  import { type AiChangeInfoPush, type AiMessagePush, type AiChatMessage, type AiChatSummary, type Attachment } from "@superblocksteam/library-shared/types";
2
2
  import { type Logger } from "../../util/logger.js";
3
3
  import type { AutoConnectingRpcClient } from "../../server-rpc/index.js";
4
+ import type { AiWorkflowEvent } from "@superblocksteam/shared";
4
5
  export type AiChatItem = AiChatMessage | AiChatSummary;
5
6
  export type AiChatSummaryWithOutcome = AiChatSummary & {
6
7
  outcome: "accepted" | "rejected" | "unknown";
7
8
  };
8
9
  export declare function isAiChatMessage(item: AiChatItem): item is AiChatMessage;
9
10
  export declare function isAiChatSummary(item: AiChatItem): item is AiChatSummary;
11
+ /**
12
+ * Default maximum number of messages to load from the server.
13
+ * This prevents large requests from failing when there are many messages.
14
+ */
15
+ export declare const DEFAULT_MESSAGE_LIMIT = 3000;
10
16
  interface ChatSessionStoreConfig {
11
17
  applicationId: string;
12
18
  rpcClient: AutoConnectingRpcClient;
13
19
  logger: Logger;
20
+ /**
21
+ * Maximum number of messages to load from the server.
22
+ * Defaults to DEFAULT_MESSAGE_LIMIT (1000).
23
+ */
24
+ messageLimit?: number;
14
25
  }
15
26
  export declare class ChatSessionStore {
16
27
  private applicationId;
@@ -20,6 +31,7 @@ export declare class ChatSessionStore {
20
31
  private inFlightLoadFromServer;
21
32
  private loadedFromServer;
22
33
  private inProgressMessages;
34
+ private messageLimit;
23
35
  constructor(config: ChatSessionStoreConfig);
24
36
  /***
25
37
  * Validates and sanitizes the attachments array
@@ -41,13 +53,15 @@ export declare class ChatSessionStore {
41
53
  truncateAfterTimestamp(sinceTimestamp: number): Promise<void>;
42
54
  recordUser(text: string, options?: {
43
55
  attachments?: Array<Attachment>;
44
- }): Promise<void>;
45
- recordUserAcceptance(): Promise<void>;
46
- recordUserRejection(): Promise<void>;
56
+ }): Promise<string>;
57
+ recordUserAcceptance(): Promise<string>;
58
+ recordUserRejection(): Promise<string>;
47
59
  recordUserResponse(text: string, responseType: "multi_choice_response" | "plan_response", metadata: {
48
60
  responseToMessageId: string;
49
61
  selectedChoiceIndices?: number[];
50
- }): Promise<void>;
62
+ enableTesting?: boolean;
63
+ approved?: boolean;
64
+ }): Promise<string>;
51
65
  recordInProgressMessage(payload: {
52
66
  id: string;
53
67
  text: string;
@@ -57,6 +71,7 @@ export declare class ChatSessionStore {
57
71
  recordAssistant(payload: AiMessagePush): Promise<void>;
58
72
  recordAssistantChangeInfo(payload: AiChangeInfoPush): Promise<void>;
59
73
  private appendMessage;
74
+ submitWorkflowSummary(summary: AiWorkflowEvent): Promise<void>;
60
75
  private determineSummaryOutcome;
61
76
  recordSummary(summaryData: {
62
77
  summary: string;