@hasna/mementos 0.14.86 → 0.14.88

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 (572) hide show
  1. package/bun.lock +3 -0
  2. package/dist/cli/__fixtures__/clean-fallback-stub-server.d.ts +2 -0
  3. package/dist/cli/__fixtures__/clean-fallback-stub-server.d.ts.map +1 -0
  4. package/dist/cli/__fixtures__/io-restore-stub-server.d.ts +2 -0
  5. package/dist/cli/__fixtures__/io-restore-stub-server.d.ts.map +1 -0
  6. package/dist/cli/brains.d.ts +3 -0
  7. package/dist/cli/brains.d.ts.map +1 -0
  8. package/dist/cli/commands/agent.d.ts +3 -0
  9. package/dist/cli/commands/agent.d.ts.map +1 -0
  10. package/dist/cli/commands/consolidation.d.ts +3 -0
  11. package/dist/cli/commands/consolidation.d.ts.map +1 -0
  12. package/dist/cli/commands/entity.d.ts +3 -0
  13. package/dist/cli/commands/entity.d.ts.map +1 -0
  14. package/dist/cli/commands/graph.d.ts +3 -0
  15. package/dist/cli/commands/graph.d.ts.map +1 -0
  16. package/dist/cli/commands/info-context.d.ts +3 -0
  17. package/dist/cli/commands/info-context.d.ts.map +1 -0
  18. package/dist/cli/commands/info-history.d.ts +3 -0
  19. package/dist/cli/commands/info-history.d.ts.map +1 -0
  20. package/dist/cli/commands/info-report.d.ts +3 -0
  21. package/dist/cli/commands/info-report.d.ts.map +1 -0
  22. package/dist/cli/commands/info-stale.d.ts +3 -0
  23. package/dist/cli/commands/info-stale.d.ts.map +1 -0
  24. package/dist/cli/commands/info-stats.d.ts +3 -0
  25. package/dist/cli/commands/info-stats.d.ts.map +1 -0
  26. package/dist/cli/commands/info.d.ts +12 -0
  27. package/dist/cli/commands/info.d.ts.map +1 -0
  28. package/dist/cli/commands/init.d.ts +3 -0
  29. package/dist/cli/commands/init.d.ts.map +1 -0
  30. package/dist/cli/commands/io-backup.d.ts +3 -0
  31. package/dist/cli/commands/io-backup.d.ts.map +1 -0
  32. package/dist/cli/commands/io-clean.d.ts +3 -0
  33. package/dist/cli/commands/io-clean.d.ts.map +1 -0
  34. package/dist/cli/commands/io-export.d.ts +3 -0
  35. package/dist/cli/commands/io-export.d.ts.map +1 -0
  36. package/dist/cli/commands/io-import.d.ts +3 -0
  37. package/dist/cli/commands/io-import.d.ts.map +1 -0
  38. package/dist/cli/commands/io-restore.d.ts +3 -0
  39. package/dist/cli/commands/io-restore.d.ts.map +1 -0
  40. package/dist/cli/commands/io.d.ts +12 -0
  41. package/dist/cli/commands/io.d.ts.map +1 -0
  42. package/dist/cli/commands/memory-cmd-bulk.d.ts +3 -0
  43. package/dist/cli/commands/memory-cmd-bulk.d.ts.map +1 -0
  44. package/dist/cli/commands/memory-cmd-chain.d.ts +3 -0
  45. package/dist/cli/commands/memory-cmd-chain.d.ts.map +1 -0
  46. package/dist/cli/commands/memory-cmd-crud.d.ts +3 -0
  47. package/dist/cli/commands/memory-cmd-crud.d.ts.map +1 -0
  48. package/dist/cli/commands/memory-cmd-diff.d.ts +3 -0
  49. package/dist/cli/commands/memory-cmd-diff.d.ts.map +1 -0
  50. package/dist/cli/commands/memory-cmd-list.d.ts +3 -0
  51. package/dist/cli/commands/memory-cmd-list.d.ts.map +1 -0
  52. package/dist/cli/commands/memory-cmd-recall-exit.d.ts +3 -0
  53. package/dist/cli/commands/memory-cmd-recall-exit.d.ts.map +1 -0
  54. package/dist/cli/commands/memory-cmd-recall.d.ts +3 -0
  55. package/dist/cli/commands/memory-cmd-recall.d.ts.map +1 -0
  56. package/dist/cli/commands/memory-cmd-remove.d.ts +3 -0
  57. package/dist/cli/commands/memory-cmd-remove.d.ts.map +1 -0
  58. package/dist/cli/commands/memory-cmd-search.d.ts +3 -0
  59. package/dist/cli/commands/memory-cmd-search.d.ts.map +1 -0
  60. package/dist/cli/commands/memory-cmd-tail.d.ts +3 -0
  61. package/dist/cli/commands/memory-cmd-tail.d.ts.map +1 -0
  62. package/dist/cli/commands/memory-cmd-util.d.ts +3 -0
  63. package/dist/cli/commands/memory-cmd-util.d.ts.map +1 -0
  64. package/dist/cli/commands/memory-cmd-view.d.ts +3 -0
  65. package/dist/cli/commands/memory-cmd-view.d.ts.map +1 -0
  66. package/dist/cli/commands/memory-cmd-watch.d.ts +3 -0
  67. package/dist/cli/commands/memory-cmd-watch.d.ts.map +1 -0
  68. package/dist/cli/commands/memory-cmd-when-to-use.d.ts +3 -0
  69. package/dist/cli/commands/memory-cmd-when-to-use.d.ts.map +1 -0
  70. package/dist/cli/commands/memory.d.ts +3 -0
  71. package/dist/cli/commands/memory.d.ts.map +1 -0
  72. package/dist/cli/commands/project-panel.d.ts +3 -0
  73. package/dist/cli/commands/project-panel.d.ts.map +1 -0
  74. package/dist/cli/commands/project.d.ts +3 -0
  75. package/dist/cli/commands/project.d.ts.map +1 -0
  76. package/dist/cli/commands/relation.d.ts +3 -0
  77. package/dist/cli/commands/relation.d.ts.map +1 -0
  78. package/dist/cli/commands/storage.d.ts +3 -0
  79. package/dist/cli/commands/storage.d.ts.map +1 -0
  80. package/dist/cli/commands/system-auto-memory.d.ts +3 -0
  81. package/dist/cli/commands/system-auto-memory.d.ts.map +1 -0
  82. package/dist/cli/commands/system-completions.d.ts +13 -0
  83. package/dist/cli/commands/system-completions.d.ts.map +1 -0
  84. package/dist/cli/commands/system-config.d.ts +3 -0
  85. package/dist/cli/commands/system-config.d.ts.map +1 -0
  86. package/dist/cli/commands/system-doctor.d.ts +3 -0
  87. package/dist/cli/commands/system-doctor.d.ts.map +1 -0
  88. package/dist/cli/commands/system-hooks.d.ts +3 -0
  89. package/dist/cli/commands/system-hooks.d.ts.map +1 -0
  90. package/dist/cli/commands/system-mcp.d.ts +3 -0
  91. package/dist/cli/commands/system-mcp.d.ts.map +1 -0
  92. package/dist/cli/commands/system-misc.d.ts +3 -0
  93. package/dist/cli/commands/system-misc.d.ts.map +1 -0
  94. package/dist/cli/commands/system-profile.d.ts +3 -0
  95. package/dist/cli/commands/system-profile.d.ts.map +1 -0
  96. package/dist/cli/commands/system-session.d.ts +3 -0
  97. package/dist/cli/commands/system-session.d.ts.map +1 -0
  98. package/dist/cli/commands/system-sessions.d.ts +3 -0
  99. package/dist/cli/commands/system-sessions.d.ts.map +1 -0
  100. package/dist/cli/commands/system-synthesis.d.ts +3 -0
  101. package/dist/cli/commands/system-synthesis.d.ts.map +1 -0
  102. package/dist/cli/commands/system-synthesized-profile.d.ts +3 -0
  103. package/dist/cli/commands/system-synthesized-profile.d.ts.map +1 -0
  104. package/dist/cli/commands/system-tools.d.ts +3 -0
  105. package/dist/cli/commands/system-tools.d.ts.map +1 -0
  106. package/dist/cli/commands/system-watch.d.ts +3 -0
  107. package/dist/cli/commands/system-watch.d.ts.map +1 -0
  108. package/dist/cli/commands/system.d.ts +3 -0
  109. package/dist/cli/commands/system.d.ts.map +1 -0
  110. package/dist/cli/exit-codes.d.ts +13 -0
  111. package/dist/cli/exit-codes.d.ts.map +1 -0
  112. package/dist/cli/global-options.d.ts +27 -0
  113. package/dist/cli/global-options.d.ts.map +1 -0
  114. package/dist/cli/helpers.d.ts +150 -0
  115. package/dist/cli/helpers.d.ts.map +1 -0
  116. package/dist/cli/index.d.ts +3 -0
  117. package/dist/cli/index.d.ts.map +1 -0
  118. package/dist/cli/index.js +1150 -695
  119. package/dist/cli/register-all.d.ts +17 -0
  120. package/dist/cli/register-all.d.ts.map +1 -0
  121. package/dist/cli/startup-side-effects.d.ts +9 -0
  122. package/dist/cli/startup-side-effects.d.ts.map +1 -0
  123. package/dist/db/__fixtures__/fail-closed-stub-server.d.ts +2 -0
  124. package/dist/db/__fixtures__/fail-closed-stub-server.d.ts.map +1 -0
  125. package/dist/db/__fixtures__/list-filter-capture-server.d.ts +2 -0
  126. package/dist/db/__fixtures__/list-filter-capture-server.d.ts.map +1 -0
  127. package/dist/db/__fixtures__/list-filter-client-runner.d.ts +2 -0
  128. package/dist/db/__fixtures__/list-filter-client-runner.d.ts.map +1 -0
  129. package/dist/db/acl.d.ts +34 -0
  130. package/dist/db/acl.d.ts.map +1 -0
  131. package/dist/db/agents.d.ts +35 -0
  132. package/dist/db/agents.d.ts.map +1 -0
  133. package/dist/db/analytics.d.ts +124 -0
  134. package/dist/db/analytics.d.ts.map +1 -0
  135. package/dist/db/api-mode.d.ts +127 -0
  136. package/dist/db/api-mode.d.ts.map +1 -0
  137. package/dist/db/audit.d.ts +53 -0
  138. package/dist/db/audit.d.ts.map +1 -0
  139. package/dist/db/database.d.ts +26 -0
  140. package/dist/db/database.d.ts.map +1 -0
  141. package/dist/db/entities.d.ts +62 -0
  142. package/dist/db/entities.d.ts.map +1 -0
  143. package/dist/db/entity-memories.d.ts +34 -0
  144. package/dist/db/entity-memories.d.ts.map +1 -0
  145. package/dist/db/feedback.d.ts +9 -0
  146. package/dist/db/feedback.d.ts.map +1 -0
  147. package/dist/db/locks.d.ts +63 -0
  148. package/dist/db/locks.d.ts.map +1 -0
  149. package/dist/db/machines.d.ts +23 -0
  150. package/dist/db/machines.d.ts.map +1 -0
  151. package/dist/db/memories.d.ts +199 -0
  152. package/dist/db/memories.d.ts.map +1 -0
  153. package/dist/db/memory-links.d.ts +21 -0
  154. package/dist/db/memory-links.d.ts.map +1 -0
  155. package/dist/db/memory-project-link.d.ts +13 -0
  156. package/dist/db/memory-project-link.d.ts.map +1 -0
  157. package/dist/db/migrations.d.ts +3 -0
  158. package/dist/db/migrations.d.ts.map +1 -0
  159. package/dist/db/pg-migrate.d.ts +27 -0
  160. package/dist/db/pg-migrate.d.ts.map +1 -0
  161. package/dist/db/pg-migrations.d.ts +2 -0
  162. package/dist/db/pg-migrations.d.ts.map +1 -0
  163. package/dist/db/projects.d.ts +27 -0
  164. package/dist/db/projects.d.ts.map +1 -0
  165. package/dist/db/ratings.d.ts +23 -0
  166. package/dist/db/ratings.d.ts.map +1 -0
  167. package/dist/db/relations.d.ts +49 -0
  168. package/dist/db/relations.d.ts.map +1 -0
  169. package/dist/db/session-jobs.d.ts +67 -0
  170. package/dist/db/session-jobs.d.ts.map +1 -0
  171. package/dist/db/store-backend.d.ts +42 -0
  172. package/dist/db/store-backend.d.ts.map +1 -0
  173. package/dist/db/subscriptions.d.ts +24 -0
  174. package/dist/db/subscriptions.d.ts.map +1 -0
  175. package/dist/db/synthesis.d.ts +101 -0
  176. package/dist/db/synthesis.d.ts.map +1 -0
  177. package/dist/db/tasks.d.ts +89 -0
  178. package/dist/db/tasks.d.ts.map +1 -0
  179. package/dist/db/tool-events.d.ts +27 -0
  180. package/dist/db/tool-events.d.ts.map +1 -0
  181. package/dist/db/webhook_hooks.d.ts +48 -0
  182. package/dist/db/webhook_hooks.d.ts.map +1 -0
  183. package/dist/diagnostics/historical-project-registration-receipt.d.ts +39 -0
  184. package/dist/diagnostics/historical-project-registration-receipt.d.ts.map +1 -0
  185. package/dist/diagnostics/historical-project-registration-receipt.js +116 -10
  186. package/dist/generated/storage-kit/backend.d.ts +20 -0
  187. package/dist/generated/storage-kit/backend.d.ts.map +1 -0
  188. package/dist/generated/storage-kit/health.d.ts +20 -0
  189. package/dist/generated/storage-kit/health.d.ts.map +1 -0
  190. package/dist/generated/storage-kit/index.d.ts +8 -0
  191. package/dist/generated/storage-kit/index.d.ts.map +1 -0
  192. package/dist/generated/storage-kit/migrations.d.ts +48 -0
  193. package/dist/generated/storage-kit/migrations.d.ts.map +1 -0
  194. package/dist/generated/storage-kit/own.d.ts +11 -0
  195. package/dist/generated/storage-kit/own.d.ts.map +1 -0
  196. package/dist/generated/storage-kit/pool.d.ts +35 -0
  197. package/dist/generated/storage-kit/pool.d.ts.map +1 -0
  198. package/dist/generated/storage-kit/query.d.ts +36 -0
  199. package/dist/generated/storage-kit/query.d.ts.map +1 -0
  200. package/dist/generated/storage-kit/tls.d.ts +53 -0
  201. package/dist/generated/storage-kit/tls.d.ts.map +1 -0
  202. package/dist/index.d.ts +45 -0
  203. package/dist/index.d.ts.map +1 -0
  204. package/dist/index.js +806 -541
  205. package/dist/lib/activation-matcher.d.ts +17 -0
  206. package/dist/lib/activation-matcher.d.ts.map +1 -0
  207. package/dist/lib/asmr/categorizer.d.ts +31 -0
  208. package/dist/lib/asmr/categorizer.d.ts.map +1 -0
  209. package/dist/lib/asmr/context-agent.d.ts +4 -0
  210. package/dist/lib/asmr/context-agent.d.ts.map +1 -0
  211. package/dist/lib/asmr/ensemble.d.ts +23 -0
  212. package/dist/lib/asmr/ensemble.d.ts.map +1 -0
  213. package/dist/lib/asmr/fact-agent.d.ts +4 -0
  214. package/dist/lib/asmr/fact-agent.d.ts.map +1 -0
  215. package/dist/lib/asmr/index.d.ts +7 -0
  216. package/dist/lib/asmr/index.d.ts.map +1 -0
  217. package/dist/lib/asmr/orchestrator.d.ts +4 -0
  218. package/dist/lib/asmr/orchestrator.d.ts.map +1 -0
  219. package/dist/lib/asmr/recall.d.ts +3 -0
  220. package/dist/lib/asmr/recall.d.ts.map +1 -0
  221. package/dist/lib/asmr/temporal-agent.d.ts +4 -0
  222. package/dist/lib/asmr/temporal-agent.d.ts.map +1 -0
  223. package/dist/lib/asmr/types.d.ts +27 -0
  224. package/dist/lib/asmr/types.d.ts.map +1 -0
  225. package/dist/lib/auto-inject-orchestrator.d.ts +57 -0
  226. package/dist/lib/auto-inject-orchestrator.d.ts.map +1 -0
  227. package/dist/lib/auto-memory-queue.d.ts +48 -0
  228. package/dist/lib/auto-memory-queue.d.ts.map +1 -0
  229. package/dist/lib/auto-memory.d.ts +19 -0
  230. package/dist/lib/auto-memory.d.ts.map +1 -0
  231. package/dist/lib/bench.d.ts +20 -0
  232. package/dist/lib/bench.d.ts.map +1 -0
  233. package/dist/lib/built-in-hooks.d.ts +32 -0
  234. package/dist/lib/built-in-hooks.d.ts.map +1 -0
  235. package/dist/lib/channel-pusher.d.ts +39 -0
  236. package/dist/lib/channel-pusher.d.ts.map +1 -0
  237. package/dist/lib/config.d.ts +9 -0
  238. package/dist/lib/config.d.ts.map +1 -0
  239. package/dist/lib/connectors/files.d.ts +8 -0
  240. package/dist/lib/connectors/files.d.ts.map +1 -0
  241. package/dist/lib/connectors/github.d.ts +7 -0
  242. package/dist/lib/connectors/github.d.ts.map +1 -0
  243. package/dist/lib/connectors/index.d.ts +12 -0
  244. package/dist/lib/connectors/index.d.ts.map +1 -0
  245. package/dist/lib/connectors/notion.d.ts +7 -0
  246. package/dist/lib/connectors/notion.d.ts.map +1 -0
  247. package/dist/lib/connectors/types.d.ts +27 -0
  248. package/dist/lib/connectors/types.d.ts.map +1 -0
  249. package/dist/lib/consolidation.d.ts +52 -0
  250. package/dist/lib/consolidation.d.ts.map +1 -0
  251. package/dist/lib/context-extractor.d.ts +14 -0
  252. package/dist/lib/context-extractor.d.ts.map +1 -0
  253. package/dist/lib/context.d.ts +36 -0
  254. package/dist/lib/context.d.ts.map +1 -0
  255. package/dist/lib/contradiction.d.ts +50 -0
  256. package/dist/lib/contradiction.d.ts.map +1 -0
  257. package/dist/lib/decay.d.ts +35 -0
  258. package/dist/lib/decay.d.ts.map +1 -0
  259. package/dist/lib/dedup.d.ts +33 -0
  260. package/dist/lib/dedup.d.ts.map +1 -0
  261. package/dist/lib/duration.d.ts +28 -0
  262. package/dist/lib/duration.d.ts.map +1 -0
  263. package/dist/lib/embeddings.d.ts +20 -0
  264. package/dist/lib/embeddings.d.ts.map +1 -0
  265. package/dist/lib/enum-validation.d.ts +20 -0
  266. package/dist/lib/enum-validation.d.ts.map +1 -0
  267. package/dist/lib/export-v1.d.ts +30 -0
  268. package/dist/lib/export-v1.d.ts.map +1 -0
  269. package/dist/lib/extractor.d.ts +9 -0
  270. package/dist/lib/extractor.d.ts.map +1 -0
  271. package/dist/lib/extractors/audio.d.ts +8 -0
  272. package/dist/lib/extractors/audio.d.ts.map +1 -0
  273. package/dist/lib/extractors/index.d.ts +12 -0
  274. package/dist/lib/extractors/index.d.ts.map +1 -0
  275. package/dist/lib/extractors/ocr.d.ts +7 -0
  276. package/dist/lib/extractors/ocr.d.ts.map +1 -0
  277. package/dist/lib/extractors/pdf.d.ts +7 -0
  278. package/dist/lib/extractors/pdf.d.ts.map +1 -0
  279. package/dist/lib/extractors/types.d.ts +12 -0
  280. package/dist/lib/extractors/types.d.ts.map +1 -0
  281. package/dist/lib/file-deps.d.ts +27 -0
  282. package/dist/lib/file-deps.d.ts.map +1 -0
  283. package/dist/lib/focus.d.ts +58 -0
  284. package/dist/lib/focus.d.ts.map +1 -0
  285. package/dist/lib/gatherer.d.ts +16 -0
  286. package/dist/lib/gatherer.d.ts.map +1 -0
  287. package/dist/lib/gdpr.d.ts +39 -0
  288. package/dist/lib/gdpr.d.ts.map +1 -0
  289. package/dist/lib/hooks.d.ts +50 -0
  290. package/dist/lib/hooks.d.ts.map +1 -0
  291. package/dist/lib/importers/index.d.ts +38 -0
  292. package/dist/lib/importers/index.d.ts.map +1 -0
  293. package/dist/lib/injector.d.ts +89 -0
  294. package/dist/lib/injector.d.ts.map +1 -0
  295. package/dist/lib/machine-visibility.d.ts +6 -0
  296. package/dist/lib/machine-visibility.d.ts.map +1 -0
  297. package/dist/lib/matryoshka.d.ts +50 -0
  298. package/dist/lib/matryoshka.d.ts.map +1 -0
  299. package/dist/lib/memory-lock.d.ts +58 -0
  300. package/dist/lib/memory-lock.d.ts.map +1 -0
  301. package/dist/lib/model-config.d.ts +14 -0
  302. package/dist/lib/model-config.d.ts.map +1 -0
  303. package/dist/lib/open-sessions-connector.d.ts +60 -0
  304. package/dist/lib/open-sessions-connector.d.ts.map +1 -0
  305. package/dist/lib/package-version.d.ts +3 -0
  306. package/dist/lib/package-version.d.ts.map +1 -0
  307. package/dist/lib/paths.d.ts +51 -0
  308. package/dist/lib/paths.d.ts.map +1 -0
  309. package/dist/lib/poisoning.d.ts +19 -0
  310. package/dist/lib/poisoning.d.ts.map +1 -0
  311. package/dist/lib/poll.d.ts +17 -0
  312. package/dist/lib/poll.d.ts.map +1 -0
  313. package/dist/lib/procedural-extractor.d.ts +21 -0
  314. package/dist/lib/procedural-extractor.d.ts.map +1 -0
  315. package/dist/lib/profile-sync.d.ts +20 -0
  316. package/dist/lib/profile-sync.d.ts.map +1 -0
  317. package/dist/lib/profile-synthesizer.d.ts +20 -0
  318. package/dist/lib/profile-synthesizer.d.ts.map +1 -0
  319. package/dist/lib/project-detect.d.ts +18 -0
  320. package/dist/lib/project-detect.d.ts.map +1 -0
  321. package/dist/lib/project-panel.d.ts +7 -0
  322. package/dist/lib/project-panel.d.ts.map +1 -0
  323. package/dist/lib/providers/anthropic.d.ts +21 -0
  324. package/dist/lib/providers/anthropic.d.ts.map +1 -0
  325. package/dist/lib/providers/base.d.ts +96 -0
  326. package/dist/lib/providers/base.d.ts.map +1 -0
  327. package/dist/lib/providers/cerebras.d.ts +20 -0
  328. package/dist/lib/providers/cerebras.d.ts.map +1 -0
  329. package/dist/lib/providers/grok.d.ts +19 -0
  330. package/dist/lib/providers/grok.d.ts.map +1 -0
  331. package/dist/lib/providers/index.d.ts +7 -0
  332. package/dist/lib/providers/index.d.ts.map +1 -0
  333. package/dist/lib/providers/openai-compat.d.ts +18 -0
  334. package/dist/lib/providers/openai-compat.d.ts.map +1 -0
  335. package/dist/lib/providers/openai.d.ts +20 -0
  336. package/dist/lib/providers/openai.d.ts.map +1 -0
  337. package/dist/lib/providers/registry.d.ts +38 -0
  338. package/dist/lib/providers/registry.d.ts.map +1 -0
  339. package/dist/lib/quality.d.ts +16 -0
  340. package/dist/lib/quality.d.ts.map +1 -0
  341. package/dist/lib/redact.d.ts +26 -0
  342. package/dist/lib/redact.d.ts.map +1 -0
  343. package/dist/lib/reflection.d.ts +83 -0
  344. package/dist/lib/reflection.d.ts.map +1 -0
  345. package/dist/lib/retention.d.ts +17 -0
  346. package/dist/lib/retention.d.ts.map +1 -0
  347. package/dist/lib/retired-storage-mode.d.ts +11 -0
  348. package/dist/lib/retired-storage-mode.d.ts.map +1 -0
  349. package/dist/lib/search.d.ts +52 -0
  350. package/dist/lib/search.d.ts.map +1 -0
  351. package/dist/lib/session-auto-resolve.d.ts +28 -0
  352. package/dist/lib/session-auto-resolve.d.ts.map +1 -0
  353. package/dist/lib/session-processor.d.ts +38 -0
  354. package/dist/lib/session-processor.d.ts.map +1 -0
  355. package/dist/lib/session-queue.d.ts +28 -0
  356. package/dist/lib/session-queue.d.ts.map +1 -0
  357. package/dist/lib/session-registry.d.ts +47 -0
  358. package/dist/lib/session-registry.d.ts.map +1 -0
  359. package/dist/lib/session-start-briefing.d.ts +10 -0
  360. package/dist/lib/session-start-briefing.d.ts.map +1 -0
  361. package/dist/lib/session-watcher.d.ts +30 -0
  362. package/dist/lib/session-watcher.d.ts.map +1 -0
  363. package/dist/lib/storage-sync.d.ts +45 -0
  364. package/dist/lib/storage-sync.d.ts.map +1 -0
  365. package/dist/lib/sync.d.ts +10 -0
  366. package/dist/lib/sync.d.ts.map +1 -0
  367. package/dist/lib/synthesis/corpus-builder.d.ts +30 -0
  368. package/dist/lib/synthesis/corpus-builder.d.ts.map +1 -0
  369. package/dist/lib/synthesis/executor.d.ts +14 -0
  370. package/dist/lib/synthesis/executor.d.ts.map +1 -0
  371. package/dist/lib/synthesis/index.d.ts +37 -0
  372. package/dist/lib/synthesis/index.d.ts.map +1 -0
  373. package/dist/lib/synthesis/llm-analyzer.d.ts +18 -0
  374. package/dist/lib/synthesis/llm-analyzer.d.ts.map +1 -0
  375. package/dist/lib/synthesis/metrics.d.ts +13 -0
  376. package/dist/lib/synthesis/metrics.d.ts.map +1 -0
  377. package/dist/lib/synthesis/scheduler.d.ts +18 -0
  378. package/dist/lib/synthesis/scheduler.d.ts.map +1 -0
  379. package/dist/lib/synthesis/validator.d.ts +19 -0
  380. package/dist/lib/synthesis/validator.d.ts.map +1 -0
  381. package/dist/lib/task-runner.d.ts +37 -0
  382. package/dist/lib/task-runner.d.ts.map +1 -0
  383. package/dist/lib/tool-lesson-extractor.d.ts +24 -0
  384. package/dist/lib/tool-lesson-extractor.d.ts.map +1 -0
  385. package/dist/lib/tool-memory-synthesizer.d.ts +28 -0
  386. package/dist/lib/tool-memory-synthesizer.d.ts.map +1 -0
  387. package/dist/lib/topic-clusterer.d.ts +21 -0
  388. package/dist/lib/topic-clusterer.d.ts.map +1 -0
  389. package/dist/lib/when-to-use-generator.d.ts +22 -0
  390. package/dist/lib/when-to-use-generator.d.ts.map +1 -0
  391. package/dist/mcp/http.d.ts +17 -0
  392. package/dist/mcp/http.d.ts.map +1 -0
  393. package/dist/mcp/index.d.ts +6 -0
  394. package/dist/mcp/index.d.ts.map +1 -0
  395. package/dist/mcp/index.js +978 -554
  396. package/dist/mcp/memory-broadcast.d.ts +12 -0
  397. package/dist/mcp/memory-broadcast.d.ts.map +1 -0
  398. package/dist/mcp/tools/agent-tools.d.ts +3 -0
  399. package/dist/mcp/tools/agent-tools.d.ts.map +1 -0
  400. package/dist/mcp/tools/auto-memory-tools.d.ts +5 -0
  401. package/dist/mcp/tools/auto-memory-tools.d.ts.map +1 -0
  402. package/dist/mcp/tools/bulk-tools.d.ts +3 -0
  403. package/dist/mcp/tools/bulk-tools.d.ts.map +1 -0
  404. package/dist/mcp/tools/consolidation-tools.d.ts +3 -0
  405. package/dist/mcp/tools/consolidation-tools.d.ts.map +1 -0
  406. package/dist/mcp/tools/focus-tools.d.ts +3 -0
  407. package/dist/mcp/tools/focus-tools.d.ts.map +1 -0
  408. package/dist/mcp/tools/graph-entity-tools.d.ts +3 -0
  409. package/dist/mcp/tools/graph-entity-tools.d.ts.map +1 -0
  410. package/dist/mcp/tools/graph-query-tools.d.ts +3 -0
  411. package/dist/mcp/tools/graph-query-tools.d.ts.map +1 -0
  412. package/dist/mcp/tools/graph-relation-tools.d.ts +3 -0
  413. package/dist/mcp/tools/graph-relation-tools.d.ts.map +1 -0
  414. package/dist/mcp/tools/graph-tools.d.ts +3 -0
  415. package/dist/mcp/tools/graph-tools.d.ts.map +1 -0
  416. package/dist/mcp/tools/graph-utils.d.ts +5 -0
  417. package/dist/mcp/tools/graph-utils.d.ts.map +1 -0
  418. package/dist/mcp/tools/hook-tools.d.ts +3 -0
  419. package/dist/mcp/tools/hook-tools.d.ts.map +1 -0
  420. package/dist/mcp/tools/lock-tools.d.ts +3 -0
  421. package/dist/mcp/tools/lock-tools.d.ts.map +1 -0
  422. package/dist/mcp/tools/memory-audit.d.ts +3 -0
  423. package/dist/mcp/tools/memory-audit.d.ts.map +1 -0
  424. package/dist/mcp/tools/memory-crud.d.ts +3 -0
  425. package/dist/mcp/tools/memory-crud.d.ts.map +1 -0
  426. package/dist/mcp/tools/memory-health.d.ts +3 -0
  427. package/dist/mcp/tools/memory-health.d.ts.map +1 -0
  428. package/dist/mcp/tools/memory-history.d.ts +3 -0
  429. package/dist/mcp/tools/memory-history.d.ts.map +1 -0
  430. package/dist/mcp/tools/memory-inject.d.ts +3 -0
  431. package/dist/mcp/tools/memory-inject.d.ts.map +1 -0
  432. package/dist/mcp/tools/memory-io.d.ts +3 -0
  433. package/dist/mcp/tools/memory-io.d.ts.map +1 -0
  434. package/dist/mcp/tools/memory-lifecycle.d.ts +3 -0
  435. package/dist/mcp/tools/memory-lifecycle.d.ts.map +1 -0
  436. package/dist/mcp/tools/memory-search.d.ts +3 -0
  437. package/dist/mcp/tools/memory-search.d.ts.map +1 -0
  438. package/dist/mcp/tools/memory-stats.d.ts +3 -0
  439. package/dist/mcp/tools/memory-stats.d.ts.map +1 -0
  440. package/dist/mcp/tools/memory-tools.d.ts +17 -0
  441. package/dist/mcp/tools/memory-tools.d.ts.map +1 -0
  442. package/dist/mcp/tools/memory-utils.d.ts +27 -0
  443. package/dist/mcp/tools/memory-utils.d.ts.map +1 -0
  444. package/dist/mcp/tools/memory-validation.d.ts +3 -0
  445. package/dist/mcp/tools/memory-validation.d.ts.map +1 -0
  446. package/dist/mcp/tools/project-tools.d.ts +3 -0
  447. package/dist/mcp/tools/project-tools.d.ts.map +1 -0
  448. package/dist/mcp/tools/session-tools.d.ts +3 -0
  449. package/dist/mcp/tools/session-tools.d.ts.map +1 -0
  450. package/dist/mcp/tools/storage-tools.d.ts +3 -0
  451. package/dist/mcp/tools/storage-tools.d.ts.map +1 -0
  452. package/dist/mcp/tools/synthesis-tools.d.ts +3 -0
  453. package/dist/mcp/tools/synthesis-tools.d.ts.map +1 -0
  454. package/dist/mcp/tools/system-tools-events.d.ts +3 -0
  455. package/dist/mcp/tools/system-tools-events.d.ts.map +1 -0
  456. package/dist/mcp/tools/system-tools-memory-admin.d.ts +3 -0
  457. package/dist/mcp/tools/system-tools-memory-admin.d.ts.map +1 -0
  458. package/dist/mcp/tools/system-tools-shared.d.ts +23 -0
  459. package/dist/mcp/tools/system-tools-shared.d.ts.map +1 -0
  460. package/dist/mcp/tools/system-tools.d.ts +3 -0
  461. package/dist/mcp/tools/system-tools.d.ts.map +1 -0
  462. package/dist/mcp/tools/tool-registry.d.ts +30 -0
  463. package/dist/mcp/tools/tool-registry.d.ts.map +1 -0
  464. package/dist/mcp/tools/utility-tools.d.ts +3 -0
  465. package/dist/mcp/tools/utility-tools.d.ts.map +1 -0
  466. package/dist/memory-project-link/index.d.ts +2 -0
  467. package/dist/memory-project-link/index.d.ts.map +1 -0
  468. package/dist/memory-project-link/schema.d.ts +5 -0
  469. package/dist/memory-project-link/schema.d.ts.map +1 -0
  470. package/dist/pg-sync-worker.d.ts +2 -0
  471. package/dist/pg-sync-worker.d.ts.map +1 -0
  472. package/dist/project-registration/authority.d.ts +43 -0
  473. package/dist/project-registration/authority.d.ts.map +1 -0
  474. package/dist/project-registration/historical-receipt.d.ts +38 -0
  475. package/dist/project-registration/historical-receipt.d.ts.map +1 -0
  476. package/dist/project-registration/http.d.ts +32 -0
  477. package/dist/project-registration/http.d.ts.map +1 -0
  478. package/dist/project-registration/identity.d.ts +20 -0
  479. package/dist/project-registration/identity.d.ts.map +1 -0
  480. package/dist/project-registration/index.d.ts +11 -0
  481. package/dist/project-registration/index.d.ts.map +1 -0
  482. package/dist/project-registration/project-references.d.ts +71 -0
  483. package/dist/project-registration/project-references.d.ts.map +1 -0
  484. package/dist/project-registration/project-resources.d.ts +22 -0
  485. package/dist/project-registration/project-resources.d.ts.map +1 -0
  486. package/dist/project-registration/schema.d.ts +5 -0
  487. package/dist/project-registration/schema.d.ts.map +1 -0
  488. package/dist/project-registration/types.d.ts +319 -0
  489. package/dist/project-registration/types.d.ts.map +1 -0
  490. package/dist/project-registration.d.ts +2 -0
  491. package/dist/project-registration.d.ts.map +1 -0
  492. package/dist/project-registration.js +179 -42
  493. package/dist/sdk/index.d.ts +987 -0
  494. package/dist/sdk/index.d.ts.map +1 -0
  495. package/dist/server/auth.d.ts +11 -0
  496. package/dist/server/auth.d.ts.map +1 -0
  497. package/dist/server/helpers.d.ts +53 -0
  498. package/dist/server/helpers.d.ts.map +1 -0
  499. package/dist/server/index.d.ts +14 -0
  500. package/dist/server/index.d.ts.map +1 -0
  501. package/dist/server/index.js +1047 -569
  502. package/dist/server/openapi.d.ts +2 -0
  503. package/dist/server/openapi.d.ts.map +1 -0
  504. package/dist/server/router.d.ts +17 -0
  505. package/dist/server/router.d.ts.map +1 -0
  506. package/dist/server/routes/agents.d.ts +2 -0
  507. package/dist/server/routes/agents.d.ts.map +1 -0
  508. package/dist/server/routes/entities.d.ts +2 -0
  509. package/dist/server/routes/entities.d.ts.map +1 -0
  510. package/dist/server/routes/memories-bulk.d.ts +2 -0
  511. package/dist/server/routes/memories-bulk.d.ts.map +1 -0
  512. package/dist/server/routes/memories-crud.d.ts +2 -0
  513. package/dist/server/routes/memories-crud.d.ts.map +1 -0
  514. package/dist/server/routes/memories-io.d.ts +2 -0
  515. package/dist/server/routes/memories-io.d.ts.map +1 -0
  516. package/dist/server/routes/memories-misc.d.ts +2 -0
  517. package/dist/server/routes/memories-misc.d.ts.map +1 -0
  518. package/dist/server/routes/memories-search.d.ts +2 -0
  519. package/dist/server/routes/memories-search.d.ts.map +1 -0
  520. package/dist/server/routes/memories-stats.d.ts +2 -0
  521. package/dist/server/routes/memories-stats.d.ts.map +1 -0
  522. package/dist/server/routes/memories.d.ts +19 -0
  523. package/dist/server/routes/memories.d.ts.map +1 -0
  524. package/dist/server/routes/memory-project-link.d.ts +2 -0
  525. package/dist/server/routes/memory-project-link.d.ts.map +1 -0
  526. package/dist/server/routes/project-registration.d.ts +2 -0
  527. package/dist/server/routes/project-registration.d.ts.map +1 -0
  528. package/dist/server/routes/projects.d.ts +2 -0
  529. package/dist/server/routes/projects.d.ts.map +1 -0
  530. package/dist/server/routes/system-auto-memory.d.ts +2 -0
  531. package/dist/server/routes/system-auto-memory.d.ts.map +1 -0
  532. package/dist/server/routes/system-chain.d.ts +2 -0
  533. package/dist/server/routes/system-chain.d.ts.map +1 -0
  534. package/dist/server/routes/system-consolidation.d.ts +2 -0
  535. package/dist/server/routes/system-consolidation.d.ts.map +1 -0
  536. package/dist/server/routes/system-hooks.d.ts +2 -0
  537. package/dist/server/routes/system-hooks.d.ts.map +1 -0
  538. package/dist/server/routes/system-sessions.d.ts +2 -0
  539. package/dist/server/routes/system-sessions.d.ts.map +1 -0
  540. package/dist/server/routes/system-subscriptions.d.ts +2 -0
  541. package/dist/server/routes/system-subscriptions.d.ts.map +1 -0
  542. package/dist/server/routes/system-synthesis.d.ts +2 -0
  543. package/dist/server/routes/system-synthesis.d.ts.map +1 -0
  544. package/dist/server/routes/system-tools.d.ts +2 -0
  545. package/dist/server/routes/system-tools.d.ts.map +1 -0
  546. package/dist/server/routes/system.d.ts +2 -0
  547. package/dist/server/routes/system.d.ts.map +1 -0
  548. package/dist/server/routes/tasks.d.ts +2 -0
  549. package/dist/server/routes/tasks.d.ts.map +1 -0
  550. package/dist/storage.d.ts +298 -0
  551. package/dist/storage.d.ts.map +1 -0
  552. package/dist/storage.js +134 -17
  553. package/dist/test-support/memories-page-stub-server.d.ts +2 -0
  554. package/dist/test-support/memories-page-stub-server.d.ts.map +1 -0
  555. package/dist/test-support/memories-page-stub.d.ts +28 -0
  556. package/dist/test-support/memories-page-stub.d.ts.map +1 -0
  557. package/dist/test-support/pg-sync-stub-worker.d.ts +2 -0
  558. package/dist/test-support/pg-sync-stub-worker.d.ts.map +1 -0
  559. package/dist/test-support/preload-local-store.d.ts +2 -0
  560. package/dist/test-support/preload-local-store.d.ts.map +1 -0
  561. package/dist/test-support/project-authority-identity.d.ts +8 -0
  562. package/dist/test-support/project-authority-identity.d.ts.map +1 -0
  563. package/dist/test-support/store-isolation.d.ts +108 -0
  564. package/dist/test-support/store-isolation.d.ts.map +1 -0
  565. package/dist/test-support/strip-ansi.d.ts +3 -0
  566. package/dist/test-support/strip-ansi.d.ts.map +1 -0
  567. package/dist/types/hooks.d.ts +136 -0
  568. package/dist/types/hooks.d.ts.map +1 -0
  569. package/dist/types/index.d.ts +482 -0
  570. package/dist/types/index.d.ts.map +1 -0
  571. package/package.json +6 -4
  572. package/postinstall.mjs +34 -0
@@ -65,6 +65,115 @@ var __export = (target, all) => {
65
65
  var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
66
66
  var __require = import.meta.require;
67
67
 
68
+ // ../../node_modules/.bun/@hasna+paths@0.1.0/node_modules/@hasna/paths/dist/index.js
69
+ import { homedir } from "os";
70
+ import { join } from "path";
71
+ function assertApp(app) {
72
+ if (typeof app !== "string" || app.length === 0) {
73
+ throw new TypeError("paths: app must be a non-empty string");
74
+ }
75
+ if (!APP_SLUG_RE.test(app)) {
76
+ throw new TypeError(`paths: invalid app slug "${app}" \u2014 expected lowercase kebab-case ([a-z0-9]+(-[a-z0-9]+)*)`);
77
+ }
78
+ }
79
+ function envOf(options) {
80
+ return options.env ?? process.env;
81
+ }
82
+ function envValue(options, kind) {
83
+ const value = envOf(options)[KIND_ENV[kind]];
84
+ return typeof value === "string" && value.length > 0 ? value : undefined;
85
+ }
86
+ function isMacOS(platform) {
87
+ return platform === "darwin";
88
+ }
89
+ function baseDir(kind, options) {
90
+ const override = envValue(options, kind);
91
+ if (override)
92
+ return override;
93
+ const home = options.home ?? homedir();
94
+ const platform = options.platform ?? process.platform;
95
+ if (isMacOS(platform)) {
96
+ switch (kind) {
97
+ case "config":
98
+ case "data":
99
+ return join(home, "Library", "Application Support", "Hasna");
100
+ case "cache":
101
+ return join(home, "Library", "Caches", "Hasna");
102
+ case "state":
103
+ return join(home, "Library", "Logs", "Hasna");
104
+ }
105
+ }
106
+ switch (kind) {
107
+ case "config":
108
+ return join(home, ".config", "hasna");
109
+ case "data":
110
+ return join(home, ".local", "share", "hasna");
111
+ case "state":
112
+ return join(home, ".local", "state", "hasna");
113
+ case "cache":
114
+ return join(home, ".cache", "hasna");
115
+ }
116
+ }
117
+ function resolvePath(kind, options) {
118
+ assertApp(options.app);
119
+ const appSegment = options.internal === true ? join("internal", options.app) : options.app;
120
+ return join(baseDir(kind, options), appSegment);
121
+ }
122
+ function dataDir(options) {
123
+ return resolvePath("data", options);
124
+ }
125
+ var KIND_ENV, APP_SLUG_RE;
126
+ var init_dist = __esm(() => {
127
+ KIND_ENV = {
128
+ config: "HASNA_CONFIG_HOME",
129
+ data: "HASNA_DATA_HOME",
130
+ state: "HASNA_STATE_HOME",
131
+ cache: "HASNA_CACHE_HOME"
132
+ };
133
+ APP_SLUG_RE = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;
134
+ });
135
+
136
+ // src/lib/paths.ts
137
+ import { existsSync } from "fs";
138
+ import { homedir as homedir2 } from "os";
139
+ import { join as join2, resolve } from "path";
140
+ function effectiveHome() {
141
+ return process.env["HOME"] || process.env["USERPROFILE"] || homedir2() || "/tmp";
142
+ }
143
+ function legacyDataRoot() {
144
+ return join2(effectiveHome(), ".hasna", "mementos");
145
+ }
146
+ function resolverDataRoot() {
147
+ return dataDir({
148
+ app: "mementos",
149
+ home: process.env["HOME"] || process.env["USERPROFILE"] || undefined
150
+ });
151
+ }
152
+ function adoptResolverDataRoot(resolved, env = process.env) {
153
+ const dataOverride = env.HASNA_DATA_HOME;
154
+ if (typeof dataOverride === "string" && dataOverride.trim().length > 0)
155
+ return true;
156
+ return existsSync(join2(resolved, "mementos.db"));
157
+ }
158
+ function exactDataRoot() {
159
+ for (const key of ["HASNA_MEMENTOS_HOME", "MEMENTOS_HOME"]) {
160
+ const dir = process.env[key]?.trim();
161
+ if (dir)
162
+ return resolve(dir);
163
+ }
164
+ return;
165
+ }
166
+ function getDataRoot() {
167
+ const exact = exactDataRoot();
168
+ if (exact)
169
+ return exact;
170
+ const resolved = resolverDataRoot();
171
+ return adoptResolverDataRoot(resolved) ? resolve(resolved) : resolve(legacyDataRoot());
172
+ }
173
+ var init_paths = __esm(() => {
174
+ init_dist();
175
+ });
176
+
68
177
  // src/generated/storage-kit/own.ts
69
178
  function ownProp(source, key) {
70
179
  if (source === null || source === undefined)
@@ -168,9 +277,8 @@ var init_retired_storage_mode = __esm(() => {
168
277
 
169
278
  // src/storage.ts
170
279
  import { Database } from "bun:sqlite";
171
- import { existsSync as existsSync2, mkdirSync as mkdirSync2, readFileSync as readFileSync2, writeFileSync as writeFileSync2 } from "fs";
172
- import { homedir as homedir2 } from "os";
173
- import { join as join2 } from "path";
280
+ import { existsSync as existsSync3, mkdirSync as mkdirSync2, readFileSync as readFileSync2, writeFileSync as writeFileSync2 } from "fs";
281
+ import { join as join4 } from "path";
174
282
  import { fileURLToPath } from "url";
175
283
  import { Worker } from "worker_threads";
176
284
  import pg from "pg";
@@ -378,7 +486,7 @@ function readEnv(name) {
378
486
  return value ? value : null;
379
487
  }
380
488
  function readConfigFile() {
381
- if (!existsSync2(STORAGE_CONFIG_PATH)) {
489
+ if (!existsSync3(STORAGE_CONFIG_PATH)) {
382
490
  return {};
383
491
  }
384
492
  try {
@@ -483,11 +591,7 @@ function validatePostgresConnectionString(value) {
483
591
  function getConfiguredConnectionString() {
484
592
  return getStorageDatabaseUrl() ?? undefined;
485
593
  }
486
- function getStorageConnectionString(dbName = "mementos") {
487
- assertNoLegacyStorageMode2();
488
- if (!isServerContext()) {
489
- throw new Error("Refusing to construct an RDS Postgres DSN outside the mementos-serve server. " + "The raw database DSN is NEVER distributed to client machines. " + "Clients must use the HTTP API: set HASNA_MEMENTOS_API_URL and " + "HASNA_MEMENTOS_API_KEY (and unset HASNA_MEMENTOS_DATABASE_URL).");
490
- }
594
+ function resolveConfiguredConnectionString(dbName) {
491
595
  const envConnectionString = getConfiguredConnectionString();
492
596
  if (envConnectionString) {
493
597
  const validation = validatePostgresConnectionString(envConnectionString);
@@ -506,7 +610,7 @@ function getStorageConnectionString(dbName = "mementos") {
506
610
  missing.push("storage.rds.username");
507
611
  }
508
612
  if (missing.length > 0) {
509
- throw new Error(`Remote storage database is not configured. Missing ${missing.join(", ")}. Set HASNA_MEMENTOS_DATABASE_URL or configure ~/.hasna/mementos/storage/config.json.`);
613
+ throw new Error(`Remote storage database is not configured. Missing ${missing.join(", ")}. Set HASNA_MEMENTOS_DATABASE_URL or configure ${STORAGE_CONFIG_PATH}.`);
510
614
  }
511
615
  const password = process.env[password_env];
512
616
  if (!password) {
@@ -515,10 +619,18 @@ function getStorageConnectionString(dbName = "mementos") {
515
619
  const sslParam = ssl ? "?sslmode=require" : "";
516
620
  return `postgres://${username}:${encodeURIComponent(password)}@${host}:${port}/${dbName}${sslParam}`;
517
621
  }
622
+ function getStorageConnectionString(dbName = "mementos") {
623
+ assertNoLegacyStorageMode2();
624
+ if (!isServerContext()) {
625
+ throw new Error("Refusing to construct an RDS Postgres DSN outside the mementos-serve server. " + "The raw database DSN is NEVER distributed to client machines. " + "Clients must use the HTTP API: set HASNA_MEMENTOS_API_URL and " + "HASNA_MEMENTOS_API_KEY (and unset HASNA_MEMENTOS_DATABASE_URL).");
626
+ }
627
+ return resolveConfiguredConnectionString(dbName);
628
+ }
518
629
  var _serverContext = false, PgSyncPool, MEMENTOS_STORAGE_ENV, MEMENTOS_STORAGE_FALLBACK_ENV, LOCAL_DATA_DIR, DEFAULT_STORAGE_CONFIG, STORAGE_CONFIG_DIR, STORAGE_CONFIG_PATH, DATABASE_ENV_NAMES, SECRET_QUERY_PARAMS;
519
630
  var init_storage = __esm(() => {
520
631
  init_backend();
521
632
  init_retired_storage_mode();
633
+ init_paths();
522
634
  PgSyncPool = class PgSyncPool {
523
635
  worker;
524
636
  status;
@@ -536,12 +648,12 @@ var init_storage = __esm(() => {
536
648
  const ext = import.meta.url.endsWith(".ts") ? ".ts" : ".js";
537
649
  const here = fileURLToPath(new URL(".", import.meta.url));
538
650
  const candidates = [
539
- join2(here, `pg-sync-worker${ext}`),
540
- join2(here, "..", `pg-sync-worker${ext}`),
541
- join2(here, "..", "..", `pg-sync-worker${ext}`)
651
+ join4(here, `pg-sync-worker${ext}`),
652
+ join4(here, "..", `pg-sync-worker${ext}`),
653
+ join4(here, "..", "..", `pg-sync-worker${ext}`)
542
654
  ];
543
655
  for (const candidate of candidates) {
544
- if (existsSync2(candidate))
656
+ if (existsSync3(candidate))
545
657
  return candidate;
546
658
  }
547
659
  return candidates[0];
@@ -612,7 +724,7 @@ var init_storage = __esm(() => {
612
724
  MEMENTOS_STORAGE_FALLBACK_ENV = {
613
725
  databaseUrl: "MEMENTOS_DATABASE_URL"
614
726
  };
615
- LOCAL_DATA_DIR = join2(homedir2(), ".hasna", "mementos");
727
+ LOCAL_DATA_DIR = getDataRoot();
616
728
  DEFAULT_STORAGE_CONFIG = {
617
729
  rds: {
618
730
  host: "",
@@ -627,8 +739,8 @@ var init_storage = __esm(() => {
627
739
  schedule_minutes: 0
628
740
  }
629
741
  };
630
- STORAGE_CONFIG_DIR = join2(LOCAL_DATA_DIR, "storage");
631
- STORAGE_CONFIG_PATH = join2(STORAGE_CONFIG_DIR, "config.json");
742
+ STORAGE_CONFIG_DIR = join4(LOCAL_DATA_DIR, "storage");
743
+ STORAGE_CONFIG_PATH = join4(STORAGE_CONFIG_DIR, "config.json");
632
744
  DATABASE_ENV_NAMES = [
633
745
  { name: MEMENTOS_STORAGE_ENV.databaseUrl, deprecated: false },
634
746
  { name: MEMENTOS_STORAGE_FALLBACK_ENV.databaseUrl, deprecated: false }
@@ -646,7 +758,7 @@ var init_storage = __esm(() => {
646
758
 
647
759
  // src/db/api-mode.ts
648
760
  import { tmpdir } from "os";
649
- import { join as join3 } from "path";
761
+ import { join as join5 } from "path";
650
762
  import { writeFileSync as writeFileSync3, unlinkSync as unlinkSync2 } from "fs";
651
763
  import { randomUUID } from "crypto";
652
764
  function firstEnv2(keys) {
@@ -756,7 +868,7 @@ x-api-key: ${cfg.apiKey}
756
868
  ];
757
869
  let bodyFile;
758
870
  if (hasBody) {
759
- bodyFile = join3(tmpdir(), `mem-req-${process.pid}-${randomUUID()}.json`);
871
+ bodyFile = join5(tmpdir(), `mem-req-${process.pid}-${randomUUID()}.json`);
760
872
  writeFileSync3(bodyFile, JSON.stringify(body), { mode: 384 });
761
873
  args.push("--data-binary", `@${bodyFile}`);
762
874
  }
@@ -2048,18 +2160,18 @@ __export(exports_database, {
2048
2160
  escapeLikePrefix: () => escapeLikePrefix,
2049
2161
  closeDatabase: () => closeDatabase
2050
2162
  });
2051
- import { existsSync as existsSync3, mkdirSync as mkdirSync3, cpSync as cpSync2 } from "fs";
2052
- import { dirname as dirname2, join as join4, resolve as resolve2 } from "path";
2163
+ import { existsSync as existsSync4, mkdirSync as mkdirSync3, cpSync as cpSync2 } from "fs";
2164
+ import { dirname as dirname2, join as join6, resolve as resolve3 } from "path";
2053
2165
  function isInMemoryDb2(path) {
2054
2166
  return path === ":memory:" || path.startsWith("file::memory:");
2055
2167
  }
2056
2168
  function findNearestMementosDb(startDir) {
2057
- let dir = resolve2(startDir);
2169
+ let dir = resolve3(startDir);
2058
2170
  const home = process.env["HOME"] || process.env["USERPROFILE"] || "~";
2059
- const legacyHomeDb = resolve2(home, ".mementos", "mementos.db");
2171
+ const legacyHomeDb = resolve3(home, ".mementos", "mementos.db");
2060
2172
  while (true) {
2061
- const candidate = join4(dir, ".mementos", "mementos.db");
2062
- if (existsSync3(candidate) && resolve2(candidate) !== legacyHomeDb)
2173
+ const candidate = join6(dir, ".mementos", "mementos.db");
2174
+ if (existsSync4(candidate) && resolve3(candidate) !== legacyHomeDb)
2063
2175
  return candidate;
2064
2176
  const parent = dirname2(dir);
2065
2177
  if (parent === dir)
@@ -2069,9 +2181,9 @@ function findNearestMementosDb(startDir) {
2069
2181
  return null;
2070
2182
  }
2071
2183
  function findGitRoot2(startDir) {
2072
- let dir = resolve2(startDir);
2184
+ let dir = resolve3(startDir);
2073
2185
  while (true) {
2074
- if (existsSync3(join4(dir, ".git")))
2186
+ if (existsSync4(join6(dir, ".git")))
2075
2187
  return dir;
2076
2188
  const parent = dirname2(dir);
2077
2189
  if (parent === dir)
@@ -2082,10 +2194,10 @@ function findGitRoot2(startDir) {
2082
2194
  }
2083
2195
  function migrateGlobalDir() {
2084
2196
  const home = process.env["HOME"] || process.env["USERPROFILE"] || "~";
2085
- const newDir = join4(home, ".hasna", "mementos");
2086
- const oldDir = join4(home, ".mementos");
2087
- if (!existsSync3(newDir) && existsSync3(oldDir)) {
2088
- mkdirSync3(join4(home, ".hasna"), { recursive: true });
2197
+ const newDir = getDataRoot();
2198
+ const oldDir = join6(home, ".mementos");
2199
+ if (!existsSync4(newDir) && existsSync4(oldDir)) {
2200
+ mkdirSync3(dirname2(newDir), { recursive: true });
2089
2201
  cpSync2(oldDir, newDir, { recursive: true });
2090
2202
  }
2091
2203
  }
@@ -2102,18 +2214,17 @@ function getDbPath2() {
2102
2214
  if (process.env["MEMENTOS_DB_SCOPE"] === "project") {
2103
2215
  const gitRoot = findGitRoot2(cwd);
2104
2216
  if (gitRoot) {
2105
- return join4(gitRoot, ".mementos", "mementos.db");
2217
+ return join6(gitRoot, ".mementos", "mementos.db");
2106
2218
  }
2107
2219
  }
2108
2220
  migrateGlobalDir();
2109
- const home = process.env["HOME"] || process.env["USERPROFILE"] || "~";
2110
- return join4(home, ".hasna", "mementos", "mementos.db");
2221
+ return join6(getDataRoot(), "mementos.db");
2111
2222
  }
2112
2223
  function ensureDir2(filePath) {
2113
2224
  if (isInMemoryDb2(filePath))
2114
2225
  return;
2115
- const dir = dirname2(resolve2(filePath));
2116
- if (!existsSync3(dir)) {
2226
+ const dir = dirname2(resolve3(filePath));
2227
+ if (!existsSync4(dir)) {
2117
2228
  mkdirSync3(dir, { recursive: true });
2118
2229
  }
2119
2230
  }
@@ -2251,6 +2362,7 @@ var init_database = __esm(() => {
2251
2362
  init_storage();
2252
2363
  init_api_mode();
2253
2364
  init_migrations();
2365
+ init_paths();
2254
2366
  ALLOWED_TABLES = new Set([
2255
2367
  "memories",
2256
2368
  "agents",
@@ -2841,12 +2953,22 @@ function createMemory(input, dedupeMode = "merge", db) {
2841
2953
  const effectiveMode = dedupeMode === "overwrite" ? "merge" : dedupeMode === "version-fork" ? "create" : dedupeMode;
2842
2954
  if (effectiveMode === "error") {
2843
2955
  const existing = d.query(`SELECT id, agent_id, updated_at FROM memories
2844
- WHERE key = ? AND scope = ? AND COALESCE(project_id, '') = ? AND status = 'active'
2956
+ WHERE key = ? AND scope = ? AND COALESCE(project_id, '') = ?
2845
2957
  LIMIT 1`).get(input.key, input.scope || "private", input.project_id || "");
2846
2958
  if (existing) {
2847
2959
  throw new MemoryConflictError(input.key, existing);
2848
2960
  }
2849
2961
  }
2962
+ if (effectiveMode === "create") {
2963
+ const existing = d.query(`SELECT id, agent_id, updated_at FROM memories
2964
+ WHERE key = ? AND scope = ?
2965
+ AND COALESCE(agent_id, '') = ?
2966
+ AND COALESCE(project_id, '') = ?
2967
+ AND COALESCE(session_id, '') = ?`).get(input.key, input.scope || "private", input.agent_id || "", input.project_id || "", input.session_id || "");
2968
+ if (existing) {
2969
+ throw new MemoryConflictError(input.key, existing);
2970
+ }
2971
+ }
2850
2972
  if (effectiveMode === "merge") {
2851
2973
  const existing = d.query(`SELECT id, version FROM memories
2852
2974
  WHERE key = ? AND scope = ?
@@ -3498,6 +3620,17 @@ function updateMemory(id, input, db) {
3498
3620
  if (existing.version !== input.version) {
3499
3621
  throw new VersionConflictError(id, input.version, existing.version);
3500
3622
  }
3623
+ if (input.scope !== undefined && input.scope !== existing.scope) {
3624
+ const conflict = d.query(`SELECT id, agent_id, updated_at FROM memories
3625
+ WHERE key = ? AND scope = ?
3626
+ AND COALESCE(agent_id, '') = ?
3627
+ AND COALESCE(project_id, '') = ?
3628
+ AND COALESCE(session_id, '') = ?
3629
+ AND id != ?`).get(existing.key, input.scope, existing.agent_id || "", existing.project_id || "", existing.session_id || "", memoryId);
3630
+ if (conflict) {
3631
+ throw new MemoryConflictError(existing.key, conflict);
3632
+ }
3633
+ }
3501
3634
  const sets = ["version = version + 1", "updated_at = ?"];
3502
3635
  const params = [now()];
3503
3636
  if (input.value !== undefined) {
@@ -4538,7 +4671,9 @@ function scoreResults(rows, queryLower, graphBoostedIds) {
4538
4671
  scored.sort((a, b) => {
4539
4672
  if (b.score !== a.score)
4540
4673
  return b.score - a.score;
4541
- return b.memory.importance - a.memory.importance;
4674
+ if (b.memory.importance !== a.memory.importance)
4675
+ return b.memory.importance - a.memory.importance;
4676
+ return a.memory.id.localeCompare(b.memory.id);
4542
4677
  });
4543
4678
  return scored;
4544
4679
  }
@@ -10432,7 +10567,7 @@ var init_zod = __esm(() => {
10432
10567
  init_external();
10433
10568
  });
10434
10569
 
10435
- // ../../node_modules/.bun/@ai-sdk+provider@3.0.14/node_modules/@ai-sdk/provider/dist/index.mjs
10570
+ // ../../node_modules/.bun/@ai-sdk+provider@3.0.15/node_modules/@ai-sdk/provider/dist/index.mjs
10436
10571
  function getErrorMessage(error) {
10437
10572
  if (error == null) {
10438
10573
  return "unknown error";
@@ -10464,7 +10599,7 @@ function isJSONObject(value) {
10464
10599
  return value != null && typeof value === "object" && Object.entries(value).every(([key, val]) => typeof key === "string" && (val === undefined || isJSONValue(val)));
10465
10600
  }
10466
10601
  var marker = "vercel.ai.error", symbol, _a, _b, AISDKError, name = "AI_APICallError", marker2, symbol2, _a2, _b2, APICallError, name2 = "AI_EmptyResponseBodyError", marker3, symbol3, _a3, _b3, EmptyResponseBodyError, name3 = "AI_InvalidArgumentError", marker4, symbol4, _a4, _b4, InvalidArgumentError, name4 = "AI_InvalidPromptError", marker5, symbol5, _a5, _b5, InvalidPromptError, name5 = "AI_InvalidResponseDataError", marker6, symbol6, _a6, _b6, InvalidResponseDataError, name6 = "AI_JSONParseError", marker7, symbol7, _a7, _b7, JSONParseError, name7 = "AI_LoadAPIKeyError", marker8, symbol8, _a8, _b8, LoadAPIKeyError, name8 = "AI_LoadSettingError", marker9, symbol9, _a9, _b9, LoadSettingError, name9 = "AI_NoContentGeneratedError", marker10, symbol10, _a10, _b10, NoContentGeneratedError, name10 = "AI_NoSuchModelError", marker11, symbol11, _a11, _b11, NoSuchModelError, name11 = "AI_TooManyEmbeddingValuesForCallError", marker12, symbol12, _a12, _b12, TooManyEmbeddingValuesForCallError, name12 = "AI_TypeValidationError", marker13, symbol13, _a13, _b13, TypeValidationError, name13 = "AI_UnsupportedFunctionalityError", marker14, symbol14, _a14, _b14, UnsupportedFunctionalityError;
10467
- var init_dist = __esm(() => {
10602
+ var init_dist2 = __esm(() => {
10468
10603
  symbol = Symbol.for(marker);
10469
10604
  AISDKError = class _AISDKError extends (_b = Error, _a = symbol, _b) {
10470
10605
  constructor({
@@ -22097,7 +22232,7 @@ var init_v3 = __esm(() => {
22097
22232
  init_external();
22098
22233
  });
22099
22234
 
22100
- // ../../node_modules/.bun/eventsource-parser@3.1.0/node_modules/eventsource-parser/dist/index.js
22235
+ // ../../node_modules/.bun/eventsource-parser@3.1.1/node_modules/eventsource-parser/dist/index.js
22101
22236
  function noop(_arg) {}
22102
22237
  function createParser(config2) {
22103
22238
  if (typeof config2 == "function")
@@ -22184,7 +22319,7 @@ ${value2}`, dataLines++;
22184
22319
  }
22185
22320
  if (firstCharCode === 105 && chunk.charCodeAt(start + 1) === 100 && chunk.charCodeAt(start + 2) === 58) {
22186
22321
  const value2 = chunk.slice(chunk.charCodeAt(start + 3) === SPACE ? start + 4 : start + 3, end);
22187
- id = value2.includes("\x00") ? undefined : value2;
22322
+ value2.includes("\x00") || (id = value2);
22188
22323
  return;
22189
22324
  }
22190
22325
  if (firstCharCode === 58) {
@@ -22212,7 +22347,7 @@ ${value2}`, dataLines++;
22212
22347
  ${value}`, dataLines++;
22213
22348
  break;
22214
22349
  case "id":
22215
- id = value.includes("\x00") ? undefined : value;
22350
+ value.includes("\x00") || (id = value);
22216
22351
  break;
22217
22352
  case "retry":
22218
22353
  /^\d+$/.test(value) ? onRetry(parseInt(value, 10)) : onError(new ParseError(`Invalid \`retry\` value: "${value}"`, {
@@ -22249,7 +22384,7 @@ function isEventPrefix(chunk, i, firstCharCode) {
22249
22384
  return firstCharCode === 101 && chunk.charCodeAt(i + 1) === 118 && chunk.charCodeAt(i + 2) === 101 && chunk.charCodeAt(i + 3) === 110 && chunk.charCodeAt(i + 4) === 116 && chunk.charCodeAt(i + 5) === 58;
22250
22385
  }
22251
22386
  var ParseError, LF = 10, CR = 13, SPACE = 32;
22252
- var init_dist2 = __esm(() => {
22387
+ var init_dist3 = __esm(() => {
22253
22388
  ParseError = class ParseError extends Error {
22254
22389
  constructor(message, options) {
22255
22390
  super(message), this.name = "ParseError", this.type = options.type, this.field = options.field, this.value = options.value, this.line = options.line;
@@ -22257,10 +22392,10 @@ var init_dist2 = __esm(() => {
22257
22392
  };
22258
22393
  });
22259
22394
 
22260
- // ../../node_modules/.bun/eventsource-parser@3.1.0/node_modules/eventsource-parser/dist/stream.js
22395
+ // ../../node_modules/.bun/eventsource-parser@3.1.1/node_modules/eventsource-parser/dist/stream.js
22261
22396
  var EventSourceParserStream;
22262
22397
  var init_stream = __esm(() => {
22263
- init_dist2();
22398
+ init_dist3();
22264
22399
  EventSourceParserStream = class EventSourceParserStream extends TransformStream {
22265
22400
  constructor({ onError, onRetry, onComment, maxBufferSize } = {}) {
22266
22401
  let parser;
@@ -22286,7 +22421,7 @@ var init_stream = __esm(() => {
22286
22421
  };
22287
22422
  });
22288
22423
 
22289
- // ../../node_modules/.bun/@ai-sdk+provider-utils@4.0.42+27912429049419a2/node_modules/@ai-sdk/provider-utils/dist/index.mjs
22424
+ // ../../node_modules/.bun/@ai-sdk+provider-utils@4.0.46+27912429049419a2/node_modules/@ai-sdk/provider-utils/dist/index.mjs
22290
22425
  function combineHeaders(...headers) {
22291
22426
  return headers.reduce((combinedHeaders, currentHeaders) => ({
22292
22427
  ...combinedHeaders,
@@ -22627,11 +22762,10 @@ async function loadNodeModule(id) {
22627
22762
  var _a22;
22628
22763
  const processWithBuiltins = globalThis.process;
22629
22764
  const builtinModule = (_a22 = processWithBuiltins == null ? undefined : processWithBuiltins.getBuiltinModule) == null ? undefined : _a22.call(processWithBuiltins, id);
22630
- return builtinModule == null ? await importNodeModule(id) : builtinModule;
22631
- }
22632
- function importNodeModule(id) {
22633
- dynamicImport != null || (dynamicImport = Function("specifier", "return import(specifier)"));
22634
- return dynamicImport(id);
22765
+ if (builtinModule == null) {
22766
+ throw new Error(`Node.js built-in module ${id} is unavailable`);
22767
+ }
22768
+ return builtinModule;
22635
22769
  }
22636
22770
  function getCurrentModulePath() {
22637
22771
  const originalPrepareStackTrace = Error.prepareStackTrace;
@@ -22730,7 +22864,7 @@ async function readResponseWithSizeLimit({
22730
22864
  } finally {
22731
22865
  try {
22732
22866
  await reader.cancel();
22733
- } finally {
22867
+ } catch (e) {} finally {
22734
22868
  reader.releaseLock();
22735
22869
  }
22736
22870
  }
@@ -23995,7 +24129,7 @@ function createProviderToolFactoryWithOutputSchema({
23995
24129
  supportsDeferredResults
23996
24130
  });
23997
24131
  }
23998
- async function resolve4(value) {
24132
+ async function resolve5(value) {
23999
24133
  if (typeof value === "function") {
24000
24134
  value = value();
24001
24135
  }
@@ -24130,7 +24264,7 @@ var DelayedPromise = class {
24130
24264
  isPending() {
24131
24265
  return this.status.type === "pending";
24132
24266
  }
24133
- }, btoa, atob2, name14 = "AI_DownloadError", marker15, symbol17, _a15, _b15, DownloadError, safeNodeFetchPromise, initialGlobalFetch, initialGlobalFetchIsNodeDefault, dynamicImport, MAX_DOWNLOAD_REDIRECTS = 10, DEFAULT_MAX_DOWNLOAD_SIZE, createIdGenerator = ({
24267
+ }, btoa, atob2, name14 = "AI_DownloadError", marker15, symbol17, _a15, _b15, DownloadError, safeNodeFetchPromise, initialGlobalFetch, initialGlobalFetchIsNodeDefault, MAX_DOWNLOAD_REDIRECTS = 10, DEFAULT_MAX_DOWNLOAD_SIZE, createIdGenerator = ({
24134
24268
  prefix,
24135
24269
  size = 16,
24136
24270
  alphabet = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",
@@ -24154,7 +24288,7 @@ var DelayedPromise = class {
24154
24288
  });
24155
24289
  }
24156
24290
  return () => `${prefix}${separator}${generator()}`;
24157
- }, generateId, FETCH_FAILED_ERROR_MESSAGES, BUN_ERROR_CODES, VERSION = "4.0.42", getOriginalFetch = () => globalThis.fetch, getFromApi = async ({
24291
+ }, generateId, FETCH_FAILED_ERROR_MESSAGES, BUN_ERROR_CODES, VERSION = "4.0.46", getOriginalFetch = () => globalThis.fetch, getFromApi = async ({
24158
24292
  url: url2,
24159
24293
  headers = {},
24160
24294
  successfulResponseHandler,
@@ -24674,23 +24808,23 @@ var DelayedPromise = class {
24674
24808
  });
24675
24809
  }
24676
24810
  };
24677
- var init_dist3 = __esm(() => {
24678
- init_dist();
24679
- init_dist();
24680
- init_dist();
24681
- init_dist();
24682
- init_dist();
24683
- init_dist();
24684
- init_dist();
24685
- init_dist();
24811
+ var init_dist4 = __esm(() => {
24812
+ init_dist2();
24813
+ init_dist2();
24814
+ init_dist2();
24815
+ init_dist2();
24816
+ init_dist2();
24817
+ init_dist2();
24818
+ init_dist2();
24819
+ init_dist2();
24686
24820
  init_v4();
24687
24821
  init_v3();
24688
24822
  init_v3();
24689
24823
  init_v3();
24690
24824
  init_stream();
24691
- init_dist();
24692
- init_dist();
24693
- init_dist();
24825
+ init_dist2();
24826
+ init_dist2();
24827
+ init_dist2();
24694
24828
  ({ btoa, atob: atob2 } = globalThis);
24695
24829
  marker15 = `vercel.ai.error.${name14}`;
24696
24830
  symbol17 = Symbol.for(marker15);
@@ -24783,7 +24917,7 @@ var init_dist3 = __esm(() => {
24783
24917
  textDecoder = new TextDecoder;
24784
24918
  });
24785
24919
 
24786
- // ../../node_modules/.bun/@ai-sdk+anthropic@3.0.107+27912429049419a2/node_modules/@ai-sdk/anthropic/dist/index.mjs
24920
+ // ../../node_modules/.bun/@ai-sdk+anthropic@3.0.111+27912429049419a2/node_modules/@ai-sdk/anthropic/dist/index.mjs
24787
24921
  var exports_dist = {};
24788
24922
  __export(exports_dist, {
24789
24923
  forwardAnthropicContainerIdFromLastStep: () => forwardAnthropicContainerIdFromLastStep,
@@ -25241,7 +25375,7 @@ async function convertToAnthropicMessagesPrompt({
25241
25375
  cacheControlValidator,
25242
25376
  toolNameMapping
25243
25377
  }) {
25244
- var _a16, _b16, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v;
25378
+ var _a16, _b16, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u;
25245
25379
  const betas = /* @__PURE__ */ new Set;
25246
25380
  const blocks = groupIntoBlocks(prompt);
25247
25381
  const validator = cacheControlValidator || new CacheControlValidator;
@@ -25629,6 +25763,7 @@ async function convertToAnthropicMessagesPrompt({
25629
25763
  break;
25630
25764
  }
25631
25765
  case "tool-call": {
25766
+ const caller = getAnthropicCaller(part.providerOptions);
25632
25767
  if (part.providerExecuted) {
25633
25768
  const providerToolName = toolNameMapping.toProviderToolName(part.toolName);
25634
25769
  const isMcpToolUse = ((_l = (_k = part.providerOptions) == null ? undefined : _k.anthropic) == null ? undefined : _l.type) === "mcp-tool-use";
@@ -25657,6 +25792,7 @@ async function convertToAnthropicMessagesPrompt({
25657
25792
  id: part.toolCallId,
25658
25793
  name: subtoolName,
25659
25794
  input,
25795
+ ...caller && { caller },
25660
25796
  cache_control: cacheControl
25661
25797
  });
25662
25798
  } else if (providerToolName === "code_execution" && part.input != null && typeof part.input === "object" && "type" in part.input && part.input.type === "programmatic-tool-call") {
@@ -25666,6 +25802,7 @@ async function convertToAnthropicMessagesPrompt({
25666
25802
  id: part.toolCallId,
25667
25803
  name: "code_execution",
25668
25804
  input: inputWithoutType,
25805
+ ...caller && { caller },
25669
25806
  cache_control: cacheControl
25670
25807
  });
25671
25808
  } else {
@@ -25675,6 +25812,7 @@ async function convertToAnthropicMessagesPrompt({
25675
25812
  id: part.toolCallId,
25676
25813
  name: providerToolName,
25677
25814
  input: part.input,
25815
+ ...caller && { caller },
25678
25816
  cache_control: cacheControl
25679
25817
  });
25680
25818
  } else if (providerToolName === "tool_search_tool_regex" || providerToolName === "tool_search_tool_bm25") {
@@ -25683,6 +25821,7 @@ async function convertToAnthropicMessagesPrompt({
25683
25821
  id: part.toolCallId,
25684
25822
  name: providerToolName,
25685
25823
  input: part.input,
25824
+ ...caller && { caller },
25686
25825
  cache_control: cacheControl
25687
25826
  });
25688
25827
  } else if (providerToolName === "advisor") {
@@ -25691,6 +25830,7 @@ async function convertToAnthropicMessagesPrompt({
25691
25830
  id: part.toolCallId,
25692
25831
  name: "advisor",
25693
25832
  input: {},
25833
+ ...caller && { caller },
25694
25834
  cache_control: cacheControl
25695
25835
  });
25696
25836
  } else {
@@ -25702,11 +25842,6 @@ async function convertToAnthropicMessagesPrompt({
25702
25842
  }
25703
25843
  break;
25704
25844
  }
25705
- const callerOptions = (_o = part.providerOptions) == null ? undefined : _o.anthropic;
25706
- const caller = (callerOptions == null ? undefined : callerOptions.caller) ? (callerOptions.caller.type === "code_execution_20250825" || callerOptions.caller.type === "code_execution_20260120") && callerOptions.caller.toolId ? {
25707
- type: callerOptions.caller.type,
25708
- tool_id: callerOptions.caller.toolId
25709
- } : callerOptions.caller.type === "direct" ? { type: "direct" } : undefined : undefined;
25710
25845
  anthropicContent.push({
25711
25846
  type: "tool_use",
25712
25847
  id: part.toolCallId,
@@ -25719,6 +25854,7 @@ async function convertToAnthropicMessagesPrompt({
25719
25854
  }
25720
25855
  case "tool-result": {
25721
25856
  const providerToolName = toolNameMapping.toProviderToolName(part.toolName);
25857
+ const caller = getAnthropicCaller(part.providerOptions);
25722
25858
  if (mcpToolUseIds.has(part.toolCallId)) {
25723
25859
  const output = part.output;
25724
25860
  if (output.type !== "json" && output.type !== "error-json") {
@@ -25752,7 +25888,7 @@ async function convertToAnthropicMessagesPrompt({
25752
25888
  tool_use_id: part.toolCallId,
25753
25889
  content: {
25754
25890
  type: "code_execution_tool_result_error",
25755
- error_code: (_p = errorInfo.errorCode) != null ? _p : "unknown"
25891
+ error_code: (_o = errorInfo.errorCode) != null ? _o : "unknown"
25756
25892
  },
25757
25893
  cache_control: cacheControl
25758
25894
  });
@@ -25763,7 +25899,7 @@ async function convertToAnthropicMessagesPrompt({
25763
25899
  cache_control: cacheControl,
25764
25900
  content: {
25765
25901
  type: "bash_code_execution_tool_result_error",
25766
- error_code: (_q = errorInfo.errorCode) != null ? _q : "unknown"
25902
+ error_code: (_p = errorInfo.errorCode) != null ? _p : "unknown"
25767
25903
  }
25768
25904
  });
25769
25905
  }
@@ -25796,7 +25932,7 @@ async function convertToAnthropicMessagesPrompt({
25796
25932
  stdout: codeExecutionOutput.stdout,
25797
25933
  stderr: codeExecutionOutput.stderr,
25798
25934
  return_code: codeExecutionOutput.return_code,
25799
- content: (_r = codeExecutionOutput.content) != null ? _r : []
25935
+ content: (_q = codeExecutionOutput.content) != null ? _q : []
25800
25936
  },
25801
25937
  cache_control: cacheControl
25802
25938
  });
@@ -25814,7 +25950,7 @@ async function convertToAnthropicMessagesPrompt({
25814
25950
  encrypted_stdout: codeExecutionOutput.encrypted_stdout,
25815
25951
  stderr: codeExecutionOutput.stderr,
25816
25952
  return_code: codeExecutionOutput.return_code,
25817
- content: (_s = codeExecutionOutput.content) != null ? _s : []
25953
+ content: (_r = codeExecutionOutput.content) != null ? _r : []
25818
25954
  },
25819
25955
  cache_control: cacheControl
25820
25956
  });
@@ -25833,7 +25969,7 @@ async function convertToAnthropicMessagesPrompt({
25833
25969
  stdout: codeExecutionOutput.stdout,
25834
25970
  stderr: codeExecutionOutput.stderr,
25835
25971
  return_code: codeExecutionOutput.return_code,
25836
- content: (_t = codeExecutionOutput.content) != null ? _t : []
25972
+ content: (_s = codeExecutionOutput.content) != null ? _s : []
25837
25973
  },
25838
25974
  cache_control: cacheControl
25839
25975
  });
@@ -25869,8 +26005,9 @@ async function convertToAnthropicMessagesPrompt({
25869
26005
  tool_use_id: part.toolCallId,
25870
26006
  content: {
25871
26007
  type: "web_fetch_tool_result_error",
25872
- error_code: (_u = (await extractErrorValue(output.value)).errorCode) != null ? _u : "unavailable"
26008
+ error_code: (_t = (await extractErrorValue(output.value)).errorCode) != null ? _t : "unavailable"
25873
26009
  },
26010
+ ...caller && { caller },
25874
26011
  cache_control: cacheControl
25875
26012
  });
25876
26013
  break;
@@ -25904,6 +26041,7 @@ async function convertToAnthropicMessagesPrompt({
25904
26041
  }
25905
26042
  }
25906
26043
  },
26044
+ ...caller && { caller },
25907
26045
  cache_control: cacheControl
25908
26046
  });
25909
26047
  break;
@@ -25916,8 +26054,9 @@ async function convertToAnthropicMessagesPrompt({
25916
26054
  tool_use_id: part.toolCallId,
25917
26055
  content: {
25918
26056
  type: "web_search_tool_result_error",
25919
- error_code: (_v = (await extractErrorValue(output.value)).errorCode) != null ? _v : "unavailable"
26057
+ error_code: (_u = (await extractErrorValue(output.value)).errorCode) != null ? _u : "unavailable"
25920
26058
  },
26059
+ ...caller && { caller },
25921
26060
  cache_control: cacheControl
25922
26061
  });
25923
26062
  break;
@@ -25943,6 +26082,7 @@ async function convertToAnthropicMessagesPrompt({
25943
26082
  encrypted_content: result.encryptedContent,
25944
26083
  type: result.type
25945
26084
  })),
26085
+ ...caller && { caller },
25946
26086
  cache_control: cacheControl
25947
26087
  });
25948
26088
  break;
@@ -26111,6 +26251,17 @@ function moveToolUseBlocksToEnd(content) {
26111
26251
  flushSegment();
26112
26252
  return result;
26113
26253
  }
26254
+ function getAnthropicCaller(providerOptions) {
26255
+ var _a16;
26256
+ const caller = (_a16 = providerOptions == null ? undefined : providerOptions.anthropic) == null ? undefined : _a16.caller;
26257
+ if (((caller == null ? undefined : caller.type) === "code_execution_20250825" || (caller == null ? undefined : caller.type) === "code_execution_20260120") && caller.toolId) {
26258
+ return {
26259
+ type: caller.type,
26260
+ tool_id: caller.toolId
26261
+ };
26262
+ }
26263
+ return (caller == null ? undefined : caller.type) === "direct" ? { type: "direct" } : undefined;
26264
+ }
26114
26265
  function mapAnthropicStopReason({
26115
26266
  finishReason,
26116
26267
  isJsonResponseFromTool
@@ -26287,6 +26438,16 @@ function createCitationSource(citation, citationDocuments, generateId3) {
26287
26438
  }
26288
26439
  };
26289
26440
  }
26441
+ function getAnthropicCallerInfo(caller) {
26442
+ return caller == null ? undefined : {
26443
+ type: caller.type,
26444
+ toolId: "tool_id" in caller ? caller.tool_id : undefined
26445
+ };
26446
+ }
26447
+ function getAnthropicCallerMetadata(caller) {
26448
+ const callerInfo = getAnthropicCallerInfo(caller);
26449
+ return callerInfo == null ? {} : { providerMetadata: { anthropic: { caller: callerInfo } } };
26450
+ }
26290
26451
  function getModelCapabilities(modelId) {
26291
26452
  if (modelId.includes("claude-opus-5")) {
26292
26453
  return {
@@ -26515,7 +26676,7 @@ function forwardAnthropicContainerIdFromLastStep({
26515
26676
  }
26516
26677
  return;
26517
26678
  }
26518
- var VERSION2 = "3.0.107", anthropicErrorDataSchema, anthropicFailedResponseHandler, anthropicStopDetailsSchema, anthropicMessagesResponseSchema, anthropicMessagesChunkSchema, anthropicReasoningMetadataSchema, anthropicFilePartProviderOptions, anthropicSystemMessageProviderOptions, anthropicLanguageModelOptions, MAX_CACHE_BREAKPOINTS = 4, CacheControlValidator = class {
26679
+ var VERSION2 = "3.0.111", anthropicErrorDataSchema, anthropicFailedResponseHandler, anthropicStopDetailsSchema, anthropicToolCallCallerSchema, anthropicMessagesResponseSchema, anthropicMessagesChunkSchema, anthropicReasoningMetadataSchema, anthropicFilePartProviderOptions, anthropicSystemMessageProviderOptions, anthropicLanguageModelOptions, MAX_CACHE_BREAKPOINTS = 4, CacheControlValidator = class {
26519
26680
  constructor() {
26520
26681
  this.breakpointCount = 0;
26521
26682
  this.warnings = [];
@@ -27023,11 +27184,11 @@ var VERSION2 = "3.0.107", anthropicErrorDataSchema, anthropicFailedResponseHandl
27023
27184
  betas,
27024
27185
  headers
27025
27186
  }) {
27026
- return combineHeaders(await resolve4(this.config.headers), headers, betas.size > 0 ? { "anthropic-beta": Array.from(betas).join(",") } : {});
27187
+ return combineHeaders(await resolve5(this.config.headers), headers, betas.size > 0 ? { "anthropic-beta": Array.from(betas).join(",") } : {});
27027
27188
  }
27028
27189
  async getBetasFromHeaders(requestHeaders) {
27029
27190
  var _a16, _b16;
27030
- const configHeaders = await resolve4(this.config.headers);
27191
+ const configHeaders = await resolve5(this.config.headers);
27031
27192
  const configBetaHeader = (_a16 = configHeaders["anthropic-beta"]) != null ? _a16 : "";
27032
27193
  const requestBetaHeader = (_b16 = requestHeaders == null ? undefined : requestHeaders["anthropic-beta"]) != null ? _b16 : "";
27033
27194
  return new Set([
@@ -27174,23 +27335,12 @@ var VERSION2 = "3.0.107", anthropicErrorDataSchema, anthropicFailedResponseHandl
27174
27335
  text: JSON.stringify(part.input)
27175
27336
  });
27176
27337
  } else {
27177
- const caller = part.caller;
27178
- const callerInfo = caller ? {
27179
- type: caller.type,
27180
- toolId: "tool_id" in caller ? caller.tool_id : undefined
27181
- } : undefined;
27182
27338
  content.push({
27183
27339
  type: "tool-call",
27184
27340
  toolCallId: part.id,
27185
27341
  toolName: part.name,
27186
27342
  input: JSON.stringify(part.input),
27187
- ...callerInfo && {
27188
- providerMetadata: {
27189
- anthropic: {
27190
- caller: callerInfo
27191
- }
27192
- }
27193
- }
27343
+ ...getAnthropicCallerMetadata(part.caller)
27194
27344
  });
27195
27345
  }
27196
27346
  break;
@@ -27204,7 +27354,8 @@ var VERSION2 = "3.0.107", anthropicErrorDataSchema, anthropicFailedResponseHandl
27204
27354
  toolName: toolNameMapping.toCustomToolName("code_execution"),
27205
27355
  input: JSON.stringify({ type: part.name, ...part.input }),
27206
27356
  providerExecuted: true,
27207
- ...markCodeExecutionDynamic && providerToolName === "code_execution" ? { dynamic: true } : {}
27357
+ ...markCodeExecutionDynamic && providerToolName === "code_execution" ? { dynamic: true } : {},
27358
+ ...getAnthropicCallerMetadata(part.caller)
27208
27359
  });
27209
27360
  } else if (part.name === "web_search" || part.name === "code_execution" || part.name === "web_fetch") {
27210
27361
  const inputToSerialize = part.name === "code_execution" && part.input != null && typeof part.input === "object" && "code" in part.input && !("type" in part.input) ? { type: "programmatic-tool-call", ...part.input } : part.input;
@@ -27214,7 +27365,8 @@ var VERSION2 = "3.0.107", anthropicErrorDataSchema, anthropicFailedResponseHandl
27214
27365
  toolName: toolNameMapping.toCustomToolName(part.name),
27215
27366
  input: JSON.stringify(inputToSerialize),
27216
27367
  providerExecuted: true,
27217
- ...markCodeExecutionDynamic && part.name === "code_execution" ? { dynamic: true } : {}
27368
+ ...markCodeExecutionDynamic && part.name === "code_execution" ? { dynamic: true } : {},
27369
+ ...getAnthropicCallerMetadata(part.caller)
27218
27370
  });
27219
27371
  } else if (part.name === "tool_search_tool_regex" || part.name === "tool_search_tool_bm25") {
27220
27372
  serverToolCalls[part.id] = part.name;
@@ -27223,7 +27375,8 @@ var VERSION2 = "3.0.107", anthropicErrorDataSchema, anthropicFailedResponseHandl
27223
27375
  toolCallId: part.id,
27224
27376
  toolName: toolNameMapping.toCustomToolName(part.name),
27225
27377
  input: JSON.stringify(part.input),
27226
- providerExecuted: true
27378
+ providerExecuted: true,
27379
+ ...getAnthropicCallerMetadata(part.caller)
27227
27380
  });
27228
27381
  } else if (part.name === "advisor") {
27229
27382
  content.push({
@@ -27231,7 +27384,8 @@ var VERSION2 = "3.0.107", anthropicErrorDataSchema, anthropicFailedResponseHandl
27231
27384
  toolCallId: part.id,
27232
27385
  toolName: toolNameMapping.toCustomToolName("advisor"),
27233
27386
  input: JSON.stringify(part.input),
27234
- providerExecuted: true
27387
+ providerExecuted: true,
27388
+ ...getAnthropicCallerMetadata(part.caller)
27235
27389
  });
27236
27390
  }
27237
27391
  break;
@@ -27290,7 +27444,8 @@ var VERSION2 = "3.0.107", anthropicErrorDataSchema, anthropicFailedResponseHandl
27290
27444
  data: part.content.content.source.data
27291
27445
  }
27292
27446
  }
27293
- }
27447
+ },
27448
+ ...getAnthropicCallerMetadata(part.caller)
27294
27449
  });
27295
27450
  } else if (part.content.type === "web_fetch_tool_result_error") {
27296
27451
  content.push({
@@ -27301,7 +27456,8 @@ var VERSION2 = "3.0.107", anthropicErrorDataSchema, anthropicFailedResponseHandl
27301
27456
  result: {
27302
27457
  type: "web_fetch_tool_result_error",
27303
27458
  errorCode: part.content.error_code
27304
- }
27459
+ },
27460
+ ...getAnthropicCallerMetadata(part.caller)
27305
27461
  });
27306
27462
  }
27307
27463
  break;
@@ -27321,7 +27477,8 @@ var VERSION2 = "3.0.107", anthropicErrorDataSchema, anthropicFailedResponseHandl
27321
27477
  encryptedContent: result.encrypted_content,
27322
27478
  type: result.type
27323
27479
  };
27324
- })
27480
+ }),
27481
+ ...getAnthropicCallerMetadata(part.caller)
27325
27482
  });
27326
27483
  for (const result of part.content) {
27327
27484
  content.push({
@@ -27346,7 +27503,8 @@ var VERSION2 = "3.0.107", anthropicErrorDataSchema, anthropicFailedResponseHandl
27346
27503
  result: {
27347
27504
  type: "web_search_tool_result_error",
27348
27505
  errorCode: part.content.error_code
27349
- }
27506
+ },
27507
+ ...getAnthropicCallerMetadata(part.caller)
27350
27508
  });
27351
27509
  }
27352
27510
  break;
@@ -27687,11 +27845,7 @@ var VERSION2 = "3.0.107", anthropicErrorDataSchema, anthropicFailedResponseHandl
27687
27845
  id: String(value.index)
27688
27846
  });
27689
27847
  } else {
27690
- const caller = part.caller;
27691
- const callerInfo = caller ? {
27692
- type: caller.type,
27693
- toolId: "tool_id" in caller ? caller.tool_id : undefined
27694
- } : undefined;
27848
+ const callerInfo = getAnthropicCallerInfo(part.caller);
27695
27849
  const hasNonEmptyInput = part.input && Object.keys(part.input).length > 0;
27696
27850
  const initialInput = hasNonEmptyInput ? JSON.stringify(part.input) : "";
27697
27851
  contentBlocks[value.index] = {
@@ -27711,6 +27865,7 @@ var VERSION2 = "3.0.107", anthropicErrorDataSchema, anthropicFailedResponseHandl
27711
27865
  return;
27712
27866
  }
27713
27867
  case "server_tool_use": {
27868
+ const callerInfo = getAnthropicCallerInfo(part.caller);
27714
27869
  if ([
27715
27870
  "web_fetch",
27716
27871
  "web_search",
@@ -27731,7 +27886,8 @@ var VERSION2 = "3.0.107", anthropicErrorDataSchema, anthropicFailedResponseHandl
27731
27886
  ...markCodeExecutionDynamic && providerToolName === "code_execution" ? { dynamic: true } : {},
27732
27887
  firstDelta: finalInput.length === 0,
27733
27888
  providerToolName,
27734
- providerToolInputType
27889
+ providerToolInputType,
27890
+ ...callerInfo && { caller: callerInfo }
27735
27891
  };
27736
27892
  controller.enqueue({
27737
27893
  type: "tool-input-start",
@@ -27750,7 +27906,8 @@ var VERSION2 = "3.0.107", anthropicErrorDataSchema, anthropicFailedResponseHandl
27750
27906
  input: "",
27751
27907
  providerExecuted: true,
27752
27908
  firstDelta: true,
27753
- providerToolName: part.name
27909
+ providerToolName: part.name,
27910
+ ...callerInfo && { caller: callerInfo }
27754
27911
  };
27755
27912
  controller.enqueue({
27756
27913
  type: "tool-input-start",
@@ -27767,7 +27924,8 @@ var VERSION2 = "3.0.107", anthropicErrorDataSchema, anthropicFailedResponseHandl
27767
27924
  input: "{}",
27768
27925
  providerExecuted: true,
27769
27926
  firstDelta: true,
27770
- providerToolName: part.name
27927
+ providerToolName: part.name,
27928
+ ...callerInfo && { caller: callerInfo }
27771
27929
  };
27772
27930
  controller.enqueue({
27773
27931
  type: "tool-input-start",
@@ -27802,7 +27960,8 @@ var VERSION2 = "3.0.107", anthropicErrorDataSchema, anthropicFailedResponseHandl
27802
27960
  data: part.content.content.source.data
27803
27961
  }
27804
27962
  }
27805
- }
27963
+ },
27964
+ ...getAnthropicCallerMetadata(part.caller)
27806
27965
  });
27807
27966
  } else if (part.content.type === "web_fetch_tool_result_error") {
27808
27967
  controller.enqueue({
@@ -27813,7 +27972,8 @@ var VERSION2 = "3.0.107", anthropicErrorDataSchema, anthropicFailedResponseHandl
27813
27972
  result: {
27814
27973
  type: "web_fetch_tool_result_error",
27815
27974
  errorCode: part.content.error_code
27816
- }
27975
+ },
27976
+ ...getAnthropicCallerMetadata(part.caller)
27817
27977
  });
27818
27978
  }
27819
27979
  return;
@@ -27833,7 +27993,8 @@ var VERSION2 = "3.0.107", anthropicErrorDataSchema, anthropicFailedResponseHandl
27833
27993
  encryptedContent: result.encrypted_content,
27834
27994
  type: result.type
27835
27995
  };
27836
- })
27996
+ }),
27997
+ ...getAnthropicCallerMetadata(part.caller)
27837
27998
  });
27838
27999
  for (const result of part.content) {
27839
28000
  controller.enqueue({
@@ -27858,7 +28019,8 @@ var VERSION2 = "3.0.107", anthropicErrorDataSchema, anthropicFailedResponseHandl
27858
28019
  result: {
27859
28020
  type: "web_search_tool_result_error",
27860
28021
  errorCode: part.content.error_code
27861
- }
28022
+ },
28023
+ ...getAnthropicCallerMetadata(part.caller)
27862
28024
  });
27863
28025
  }
27864
28026
  return;
@@ -28236,11 +28398,7 @@ var VERSION2 = "3.0.107", anthropicErrorDataSchema, anthropicFailedResponseHandl
28236
28398
  for (let contentIndex = 0;contentIndex < value.message.content.length; contentIndex++) {
28237
28399
  const part = value.message.content[contentIndex];
28238
28400
  if (part.type === "tool_use") {
28239
- const caller = part.caller;
28240
- const callerInfo = caller ? {
28241
- type: caller.type,
28242
- toolId: "tool_id" in caller ? caller.tool_id : undefined
28243
- } : undefined;
28401
+ const callerInfo = getAnthropicCallerInfo(part.caller);
28244
28402
  controller.enqueue({
28245
28403
  type: "tool-input-start",
28246
28404
  id: part.id,
@@ -28400,59 +28558,59 @@ var VERSION2 = "3.0.107", anthropicErrorDataSchema, anthropicFailedResponseHandl
28400
28558
  }, bash_20241022InputSchema, bash_20241022, bash_20250124InputSchema, bash_20250124, computer_20241022InputSchema, computer_20241022, computer_20250124InputSchema, computer_20250124, computer_20251124InputSchema, computer_20251124, memory_20250818InputSchema, memory_20250818, textEditor_20241022InputSchema, textEditor_20241022, textEditor_20250124InputSchema, textEditor_20250124, textEditor_20250429InputSchema, textEditor_20250429, toolSearchBm25_20251119OutputSchema, toolSearchBm25_20251119InputSchema, factory11, toolSearchBm25_20251119 = (args = {}) => {
28401
28559
  return factory11(args);
28402
28560
  }, anthropicTools, ANTHROPIC_API_URL = "https://api.anthropic.com", ANTHROPIC_API_VERSIONED_URL, anthropic;
28403
- var init_dist4 = __esm(() => {
28404
- init_dist();
28405
- init_dist3();
28406
- init_dist();
28407
- init_dist3();
28408
- init_dist3();
28561
+ var init_dist5 = __esm(() => {
28562
+ init_dist2();
28563
+ init_dist4();
28564
+ init_dist2();
28565
+ init_dist4();
28566
+ init_dist4();
28409
28567
  init_v4();
28410
- init_dist3();
28568
+ init_dist4();
28411
28569
  init_v4();
28412
28570
  init_v4();
28413
- init_dist();
28414
- init_dist3();
28571
+ init_dist2();
28572
+ init_dist4();
28415
28573
  init_v4();
28416
- init_dist3();
28574
+ init_dist4();
28417
28575
  init_v4();
28418
- init_dist3();
28576
+ init_dist4();
28419
28577
  init_v4();
28420
- init_dist3();
28578
+ init_dist4();
28421
28579
  init_v4();
28422
- init_dist3();
28580
+ init_dist4();
28423
28581
  init_v4();
28424
- init_dist3();
28582
+ init_dist4();
28425
28583
  init_v4();
28426
- init_dist3();
28427
- init_dist();
28428
- init_dist3();
28429
- init_dist3();
28584
+ init_dist4();
28585
+ init_dist2();
28586
+ init_dist4();
28587
+ init_dist4();
28430
28588
  init_v4();
28431
- init_dist3();
28589
+ init_dist4();
28432
28590
  init_v4();
28433
- init_dist3();
28591
+ init_dist4();
28434
28592
  init_v4();
28435
- init_dist3();
28593
+ init_dist4();
28436
28594
  init_v4();
28437
- init_dist3();
28595
+ init_dist4();
28438
28596
  init_v4();
28439
- init_dist3();
28597
+ init_dist4();
28440
28598
  init_v4();
28441
- init_dist3();
28599
+ init_dist4();
28442
28600
  init_v4();
28443
- init_dist3();
28601
+ init_dist4();
28444
28602
  init_v4();
28445
- init_dist3();
28603
+ init_dist4();
28446
28604
  init_v4();
28447
- init_dist3();
28605
+ init_dist4();
28448
28606
  init_v4();
28449
- init_dist3();
28607
+ init_dist4();
28450
28608
  init_v4();
28451
- init_dist3();
28609
+ init_dist4();
28452
28610
  init_v4();
28453
- init_dist3();
28611
+ init_dist4();
28454
28612
  init_v4();
28455
- init_dist3();
28613
+ init_dist4();
28456
28614
  init_v4();
28457
28615
  anthropicErrorDataSchema = lazySchema(() => zodSchema(exports_external2.object({
28458
28616
  type: exports_external2.literal("error"),
@@ -28471,6 +28629,19 @@ var init_dist4 = __esm(() => {
28471
28629
  explanation: exports_external2.string().nullish(),
28472
28630
  recommended_model: exports_external2.string().nullish()
28473
28631
  });
28632
+ anthropicToolCallCallerSchema = exports_external2.union([
28633
+ exports_external2.object({
28634
+ type: exports_external2.literal("code_execution_20250825"),
28635
+ tool_id: exports_external2.string()
28636
+ }),
28637
+ exports_external2.object({
28638
+ type: exports_external2.literal("code_execution_20260120"),
28639
+ tool_id: exports_external2.string()
28640
+ }),
28641
+ exports_external2.object({
28642
+ type: exports_external2.literal("direct")
28643
+ })
28644
+ ]);
28474
28645
  anthropicMessagesResponseSchema = lazySchema(() => zodSchema(exports_external2.object({
28475
28646
  type: exports_external2.literal("message"),
28476
28647
  id: exports_external2.string().nullish(),
@@ -28523,34 +28694,14 @@ var init_dist4 = __esm(() => {
28523
28694
  id: exports_external2.string(),
28524
28695
  name: exports_external2.string(),
28525
28696
  input: exports_external2.unknown(),
28526
- caller: exports_external2.union([
28527
- exports_external2.object({
28528
- type: exports_external2.literal("code_execution_20250825"),
28529
- tool_id: exports_external2.string()
28530
- }),
28531
- exports_external2.object({
28532
- type: exports_external2.literal("code_execution_20260120"),
28533
- tool_id: exports_external2.string()
28534
- }),
28535
- exports_external2.object({
28536
- type: exports_external2.literal("direct")
28537
- })
28538
- ]).optional()
28697
+ caller: anthropicToolCallCallerSchema.optional()
28539
28698
  }),
28540
28699
  exports_external2.object({
28541
28700
  type: exports_external2.literal("server_tool_use"),
28542
28701
  id: exports_external2.string(),
28543
28702
  name: exports_external2.string(),
28544
28703
  input: exports_external2.record(exports_external2.string(), exports_external2.unknown()).nullish(),
28545
- caller: exports_external2.union([
28546
- exports_external2.object({
28547
- type: exports_external2.literal("code_execution_20260120"),
28548
- tool_id: exports_external2.string()
28549
- }),
28550
- exports_external2.object({
28551
- type: exports_external2.literal("direct")
28552
- })
28553
- ]).optional()
28704
+ caller: anthropicToolCallCallerSchema.optional()
28554
28705
  }),
28555
28706
  exports_external2.object({
28556
28707
  type: exports_external2.literal("mcp_tool_use"),
@@ -28571,6 +28722,7 @@ var init_dist4 = __esm(() => {
28571
28722
  exports_external2.object({
28572
28723
  type: exports_external2.literal("web_fetch_tool_result"),
28573
28724
  tool_use_id: exports_external2.string(),
28725
+ caller: anthropicToolCallCallerSchema.optional(),
28574
28726
  content: exports_external2.union([
28575
28727
  exports_external2.object({
28576
28728
  type: exports_external2.literal("web_fetch_result"),
@@ -28603,6 +28755,7 @@ var init_dist4 = __esm(() => {
28603
28755
  exports_external2.object({
28604
28756
  type: exports_external2.literal("web_search_tool_result"),
28605
28757
  tool_use_id: exports_external2.string(),
28758
+ caller: anthropicToolCallCallerSchema.optional(),
28606
28759
  content: exports_external2.union([
28607
28760
  exports_external2.array(exports_external2.object({
28608
28761
  type: exports_external2.literal("web_search_result"),
@@ -28806,19 +28959,7 @@ var init_dist4 = __esm(() => {
28806
28959
  id: exports_external2.string(),
28807
28960
  name: exports_external2.string(),
28808
28961
  input: exports_external2.unknown(),
28809
- caller: exports_external2.union([
28810
- exports_external2.object({
28811
- type: exports_external2.literal("code_execution_20250825"),
28812
- tool_id: exports_external2.string()
28813
- }),
28814
- exports_external2.object({
28815
- type: exports_external2.literal("code_execution_20260120"),
28816
- tool_id: exports_external2.string()
28817
- }),
28818
- exports_external2.object({
28819
- type: exports_external2.literal("direct")
28820
- })
28821
- ]).optional()
28962
+ caller: anthropicToolCallCallerSchema.optional()
28822
28963
  })
28823
28964
  ])).nullish(),
28824
28965
  stop_reason: exports_external2.string().nullish(),
@@ -28845,19 +28986,7 @@ var init_dist4 = __esm(() => {
28845
28986
  id: exports_external2.string(),
28846
28987
  name: exports_external2.string(),
28847
28988
  input: exports_external2.record(exports_external2.string(), exports_external2.unknown()).optional(),
28848
- caller: exports_external2.union([
28849
- exports_external2.object({
28850
- type: exports_external2.literal("code_execution_20250825"),
28851
- tool_id: exports_external2.string()
28852
- }),
28853
- exports_external2.object({
28854
- type: exports_external2.literal("code_execution_20260120"),
28855
- tool_id: exports_external2.string()
28856
- }),
28857
- exports_external2.object({
28858
- type: exports_external2.literal("direct")
28859
- })
28860
- ]).optional()
28989
+ caller: anthropicToolCallCallerSchema.optional()
28861
28990
  }),
28862
28991
  exports_external2.object({
28863
28992
  type: exports_external2.literal("redacted_thinking"),
@@ -28872,15 +29001,7 @@ var init_dist4 = __esm(() => {
28872
29001
  id: exports_external2.string(),
28873
29002
  name: exports_external2.string(),
28874
29003
  input: exports_external2.record(exports_external2.string(), exports_external2.unknown()).nullish(),
28875
- caller: exports_external2.union([
28876
- exports_external2.object({
28877
- type: exports_external2.literal("code_execution_20260120"),
28878
- tool_id: exports_external2.string()
28879
- }),
28880
- exports_external2.object({
28881
- type: exports_external2.literal("direct")
28882
- })
28883
- ]).optional()
29004
+ caller: anthropicToolCallCallerSchema.optional()
28884
29005
  }),
28885
29006
  exports_external2.object({
28886
29007
  type: exports_external2.literal("mcp_tool_use"),
@@ -28901,6 +29022,7 @@ var init_dist4 = __esm(() => {
28901
29022
  exports_external2.object({
28902
29023
  type: exports_external2.literal("web_fetch_tool_result"),
28903
29024
  tool_use_id: exports_external2.string(),
29025
+ caller: anthropicToolCallCallerSchema.optional(),
28904
29026
  content: exports_external2.union([
28905
29027
  exports_external2.object({
28906
29028
  type: exports_external2.literal("web_fetch_result"),
@@ -28933,6 +29055,7 @@ var init_dist4 = __esm(() => {
28933
29055
  exports_external2.object({
28934
29056
  type: exports_external2.literal("web_search_tool_result"),
28935
29057
  tool_use_id: exports_external2.string(),
29058
+ caller: anthropicToolCallCallerSchema.optional(),
28936
29059
  content: exports_external2.union([
28937
29060
  exports_external2.array(exports_external2.object({
28938
29061
  type: exports_external2.literal("web_search_result"),
@@ -29972,7 +30095,7 @@ var init_dist4 = __esm(() => {
29972
30095
  anthropic = createAnthropic();
29973
30096
  });
29974
30097
 
29975
- // ../../node_modules/.bun/@ai-sdk+openai@3.0.91+27912429049419a2/node_modules/@ai-sdk/openai/dist/index.mjs
30098
+ // ../../node_modules/.bun/@ai-sdk+openai@3.0.97+27912429049419a2/node_modules/@ai-sdk/openai/dist/index.mjs
29976
30099
  var exports_dist2 = {};
29977
30100
  __export(exports_dist2, {
29978
30101
  openai: () => openai,
@@ -30909,12 +31032,14 @@ async function convertToOpenAIResponsesInput({
30909
31032
  if (store && id != null) {
30910
31033
  input.push({ type: "item_reference", id });
30911
31034
  }
30912
- break;
31035
+ if (store || !hasShellTool || resolvedToolName !== "shell") {
31036
+ break;
31037
+ }
30913
31038
  }
30914
- if (hasPreviousResponseId && store && id != null) {
31039
+ const isProviderDefinedToolCall = hasLocalShellTool && resolvedToolName === "local_shell" || hasShellTool && resolvedToolName === "shell" || hasApplyPatchTool && resolvedToolName === "apply_patch" || ((_m = customProviderToolNames == null ? undefined : customProviderToolNames.has(resolvedToolName)) != null ? _m : false);
31040
+ if (hasPreviousResponseId && store && id != null && isProviderDefinedToolCall) {
30915
31041
  break;
30916
31042
  }
30917
- const isProviderDefinedToolCall = hasLocalShellTool && resolvedToolName === "local_shell" || hasShellTool && resolvedToolName === "shell" || hasApplyPatchTool && resolvedToolName === "apply_patch" || ((_m = customProviderToolNames == null ? undefined : customProviderToolNames.has(resolvedToolName)) != null ? _m : false);
30918
31043
  if (store && id != null && isProviderDefinedToolCall) {
30919
31044
  input.push({ type: "item_reference", id });
30920
31045
  break;
@@ -31135,7 +31260,7 @@ async function convertToOpenAIResponsesInput({
31135
31260
  continue;
31136
31261
  }
31137
31262
  processedApprovalIds.add(approvalResponse.approvalId);
31138
- if (store) {
31263
+ if (store && !hasConversation && !hasPreviousResponseId) {
31139
31264
  input.push({
31140
31265
  type: "item_reference",
31141
31266
  id: approvalResponse.approvalId
@@ -32099,7 +32224,7 @@ var openaiErrorDataSchema, openaiFailedResponseHandler, openaiChatResponseSchema
32099
32224
  });
32100
32225
  baseArgs.service_tier = undefined;
32101
32226
  }
32102
- if (openaiOptions.serviceTier === "priority" && !modelCapabilities.supportsPriorityProcessing) {
32227
+ if ((openaiOptions.serviceTier === "priority" || openaiOptions.serviceTier === "fast") && !modelCapabilities.supportsPriorityProcessing) {
32103
32228
  warnings.push({
32104
32229
  type: "unsupported",
32105
32230
  feature: "serviceTier",
@@ -33109,7 +33234,7 @@ var openaiErrorDataSchema, openaiFailedResponseHandler, openaiChatResponseSchema
33109
33234
  });
33110
33235
  delete baseArgs.service_tier;
33111
33236
  }
33112
- if ((openaiOptions == null ? undefined : openaiOptions.serviceTier) === "priority" && !modelCapabilities.supportsPriorityProcessing) {
33237
+ if (((openaiOptions == null ? undefined : openaiOptions.serviceTier) === "priority" || (openaiOptions == null ? undefined : openaiOptions.serviceTier) === "fast") && !modelCapabilities.supportsPriorityProcessing) {
33113
33238
  warnings.push({
33114
33239
  type: "unsupported",
33115
33240
  feature: "serviceTier",
@@ -34689,78 +34814,78 @@ var openaiErrorDataSchema, openaiFailedResponseHandler, openaiChatResponseSchema
34689
34814
  }
34690
34815
  };
34691
34816
  }
34692
- }, VERSION3 = "3.0.91", openai;
34693
- var init_dist5 = __esm(() => {
34694
- init_dist3();
34695
- init_dist();
34696
- init_dist3();
34817
+ }, VERSION3 = "3.0.97", openai;
34818
+ var init_dist6 = __esm(() => {
34819
+ init_dist4();
34820
+ init_dist2();
34821
+ init_dist4();
34697
34822
  init_v4();
34698
- init_dist3();
34699
- init_dist();
34700
- init_dist();
34701
- init_dist3();
34702
- init_dist3();
34823
+ init_dist4();
34824
+ init_dist2();
34825
+ init_dist2();
34826
+ init_dist4();
34827
+ init_dist4();
34703
34828
  init_v4();
34704
- init_dist3();
34829
+ init_dist4();
34705
34830
  init_v4();
34706
- init_dist();
34707
- init_dist3();
34708
- init_dist();
34831
+ init_dist2();
34832
+ init_dist4();
34833
+ init_dist2();
34709
34834
  init_v4();
34710
- init_dist3();
34711
- init_dist3();
34835
+ init_dist4();
34836
+ init_dist4();
34712
34837
  init_v4();
34713
- init_dist();
34714
- init_dist3();
34715
- init_dist3();
34838
+ init_dist2();
34839
+ init_dist4();
34840
+ init_dist4();
34716
34841
  init_v4();
34717
- init_dist3();
34842
+ init_dist4();
34718
34843
  init_v4();
34719
- init_dist3();
34720
- init_dist3();
34844
+ init_dist4();
34845
+ init_dist4();
34721
34846
  init_v4();
34722
- init_dist3();
34847
+ init_dist4();
34723
34848
  init_v4();
34724
- init_dist3();
34849
+ init_dist4();
34725
34850
  init_v4();
34726
- init_dist3();
34851
+ init_dist4();
34727
34852
  init_v4();
34728
- init_dist3();
34853
+ init_dist4();
34729
34854
  init_v4();
34730
- init_dist3();
34855
+ init_dist4();
34731
34856
  init_v4();
34732
- init_dist3();
34857
+ init_dist4();
34733
34858
  init_v4();
34734
- init_dist3();
34859
+ init_dist4();
34735
34860
  init_v4();
34736
- init_dist3();
34861
+ init_dist4();
34737
34862
  init_v4();
34738
- init_dist3();
34863
+ init_dist4();
34739
34864
  init_v4();
34740
- init_dist3();
34865
+ init_dist4();
34741
34866
  init_v4();
34742
- init_dist3();
34867
+ init_dist4();
34743
34868
  init_v4();
34744
- init_dist3();
34869
+ init_dist4();
34745
34870
  init_v4();
34746
- init_dist();
34747
- init_dist3();
34748
- init_dist();
34749
- init_dist3();
34871
+ init_dist2();
34872
+ init_dist4();
34873
+ init_dist2();
34874
+ init_dist4();
34750
34875
  init_v4();
34751
- init_dist3();
34876
+ init_dist4();
34752
34877
  init_v4();
34753
- init_dist3();
34878
+ init_dist4();
34754
34879
  init_v4();
34755
- init_dist();
34756
- init_dist3();
34757
- init_dist3();
34758
- init_dist3();
34880
+ init_dist2();
34881
+ init_dist4();
34882
+ init_dist4();
34883
+ init_dist4();
34759
34884
  init_v4();
34760
- init_dist3();
34761
- init_dist3();
34885
+ init_dist4();
34886
+ init_dist4();
34762
34887
  init_v4();
34763
- init_dist3();
34888
+ init_dist4();
34764
34889
  init_v4();
34765
34890
  openaiErrorDataSchema = exports_external2.object({
34766
34891
  error: exports_external2.object({
@@ -34896,7 +35021,7 @@ var init_dist5 = __esm(() => {
34896
35021
  store: exports_external2.boolean().optional(),
34897
35022
  metadata: exports_external2.record(exports_external2.string().max(64), exports_external2.string().max(512)).optional(),
34898
35023
  prediction: exports_external2.record(exports_external2.string(), exports_external2.any()).optional(),
34899
- serviceTier: exports_external2.enum(["auto", "flex", "priority", "default"]).optional(),
35024
+ serviceTier: exports_external2.enum(["auto", "flex", "priority", "fast", "default"]).optional(),
34900
35025
  strictJsonSchema: exports_external2.boolean().optional(),
34901
35026
  textVerbosity: exports_external2.enum(["low", "medium", "high"]).optional(),
34902
35027
  promptCacheKey: exports_external2.string().optional(),
@@ -36308,7 +36433,7 @@ var init_dist5 = __esm(() => {
36308
36433
  reasoningContext: exports_external2.enum(["auto", "current_turn", "all_turns"]).optional(),
36309
36434
  reasoningSummary: exports_external2.string().nullish(),
36310
36435
  safetyIdentifier: exports_external2.string().nullish(),
36311
- serviceTier: exports_external2.enum(["auto", "flex", "priority", "default"]).nullish(),
36436
+ serviceTier: exports_external2.enum(["auto", "flex", "priority", "fast", "default"]).nullish(),
36312
36437
  store: exports_external2.boolean().nullish(),
36313
36438
  passThroughUnsupportedFiles: exports_external2.boolean().optional(),
36314
36439
  strictJsonSchema: exports_external2.boolean().nullish(),
@@ -36417,7 +36542,7 @@ var init_dist5 = __esm(() => {
36417
36542
  openai = createOpenAI();
36418
36543
  });
36419
36544
 
36420
- // ../../node_modules/.bun/@ai-sdk+openai-compatible@2.0.64+27912429049419a2/node_modules/@ai-sdk/openai-compatible/dist/index.mjs
36545
+ // ../../node_modules/.bun/@ai-sdk+openai-compatible@2.0.69+27912429049419a2/node_modules/@ai-sdk/openai-compatible/dist/index.mjs
36421
36546
  var exports_dist3 = {};
36422
36547
  __export(exports_dist3, {
36423
36548
  createOpenAICompatible: () => createOpenAICompatible,
@@ -36468,7 +36593,7 @@ function convertOpenAICompatibleChatUsage(usage) {
36468
36593
  },
36469
36594
  outputTokens: {
36470
36595
  total: completionTokens,
36471
- text: completionTokens - reasoningTokens,
36596
+ text: Math.max(0, completionTokens - reasoningTokens),
36472
36597
  reasoning: reasoningTokens
36473
36598
  },
36474
36599
  raw: usage
@@ -37842,27 +37967,27 @@ var openaiCompatibleErrorDataSchema, defaultOpenAICompatibleErrorStructure, open
37842
37967
  }
37843
37968
  };
37844
37969
  }
37845
- }, openaiCompatibleImageResponseSchema, VERSION4 = "2.0.64";
37846
- var init_dist6 = __esm(() => {
37847
- init_dist();
37848
- init_dist3();
37970
+ }, openaiCompatibleImageResponseSchema, VERSION4 = "2.0.69";
37971
+ var init_dist7 = __esm(() => {
37972
+ init_dist2();
37973
+ init_dist4();
37849
37974
  init_v4();
37850
37975
  init_v4();
37851
- init_dist();
37852
- init_dist3();
37976
+ init_dist2();
37977
+ init_dist4();
37853
37978
  init_v4();
37854
- init_dist();
37855
- init_dist3();
37979
+ init_dist2();
37980
+ init_dist4();
37856
37981
  init_v4();
37857
- init_dist();
37982
+ init_dist2();
37858
37983
  init_v4();
37859
- init_dist();
37860
- init_dist3();
37984
+ init_dist2();
37985
+ init_dist4();
37861
37986
  init_v4();
37862
37987
  init_v4();
37863
- init_dist3();
37988
+ init_dist4();
37864
37989
  init_v4();
37865
- init_dist3();
37990
+ init_dist4();
37866
37991
  openaiCompatibleErrorDataSchema = exports_external2.object({
37867
37992
  error: exports_external2.object({
37868
37993
  message: exports_external2.string(),
@@ -37885,10 +38010,10 @@ var init_dist6 = __esm(() => {
37885
38010
  prompt_tokens: exports_external2.number().nullish(),
37886
38011
  completion_tokens: exports_external2.number().nullish(),
37887
38012
  total_tokens: exports_external2.number().nullish(),
37888
- prompt_tokens_details: exports_external2.object({
38013
+ prompt_tokens_details: exports_external2.looseObject({
37889
38014
  cached_tokens: exports_external2.number().nullish()
37890
38015
  }).nullish(),
37891
- completion_tokens_details: exports_external2.object({
38016
+ completion_tokens_details: exports_external2.looseObject({
37892
38017
  reasoning_tokens: exports_external2.number().nullish(),
37893
38018
  accepted_prediction_tokens: exports_external2.number().nullish(),
37894
38019
  rejected_prediction_tokens: exports_external2.number().nullish()
@@ -37955,7 +38080,7 @@ var init_dist6 = __esm(() => {
37955
38080
  suffix: exports_external2.string().optional(),
37956
38081
  user: exports_external2.string().optional()
37957
38082
  });
37958
- usageSchema = exports_external2.object({
38083
+ usageSchema = exports_external2.looseObject({
37959
38084
  prompt_tokens: exports_external2.number(),
37960
38085
  completion_tokens: exports_external2.number(),
37961
38086
  total_tokens: exports_external2.number()
@@ -38084,19 +38209,19 @@ var require_token_io = __commonJS((exports, module) => {
38084
38209
  getUserDataDir: () => getUserDataDir
38085
38210
  });
38086
38211
  module.exports = __toCommonJS2(token_io_exports);
38087
- var import_path = __toESM2(__require("path"));
38212
+ var import_path2 = __toESM2(__require("path"));
38088
38213
  var import_fs = __toESM2(__require("fs"));
38089
- var import_os2 = __toESM2(__require("os"));
38214
+ var import_os3 = __toESM2(__require("os"));
38090
38215
  var import_token_error = require_token_error();
38091
38216
  function findRootDir() {
38092
38217
  try {
38093
38218
  let dir = process.cwd();
38094
- while (dir !== import_path.default.dirname(dir)) {
38095
- const pkgPath = import_path.default.join(dir, ".vercel");
38219
+ while (dir !== import_path2.default.dirname(dir)) {
38220
+ const pkgPath = import_path2.default.join(dir, ".vercel");
38096
38221
  if (import_fs.default.existsSync(pkgPath)) {
38097
38222
  return dir;
38098
38223
  }
38099
- dir = import_path.default.dirname(dir);
38224
+ dir = import_path2.default.dirname(dir);
38100
38225
  }
38101
38226
  } catch (e) {
38102
38227
  throw new import_token_error.VercelOidcTokenError("Token refresh only supported in node server environments");
@@ -38107,11 +38232,11 @@ var require_token_io = __commonJS((exports, module) => {
38107
38232
  if (process.env.XDG_DATA_HOME) {
38108
38233
  return process.env.XDG_DATA_HOME;
38109
38234
  }
38110
- switch (import_os2.default.platform()) {
38235
+ switch (import_os3.default.platform()) {
38111
38236
  case "darwin":
38112
- return import_path.default.join(import_os2.default.homedir(), "Library/Application Support");
38237
+ return import_path2.default.join(import_os3.default.homedir(), "Library/Application Support");
38113
38238
  case "linux":
38114
- return import_path.default.join(import_os2.default.homedir(), ".local/share");
38239
+ return import_path2.default.join(import_os3.default.homedir(), ".local/share");
38115
38240
  case "win32":
38116
38241
  if (process.env.LOCALAPPDATA) {
38117
38242
  return process.env.LOCALAPPDATA;
@@ -38156,11 +38281,11 @@ var require_auth_config = __commonJS((exports, module) => {
38156
38281
  var path = __toESM2(__require("path"));
38157
38282
  var import_token_util = require_token_util();
38158
38283
  function getAuthConfigPath() {
38159
- const dataDir = (0, import_token_util.getVercelDataDir)();
38160
- if (!dataDir) {
38284
+ const dataDir2 = (0, import_token_util.getVercelDataDir)();
38285
+ if (!dataDir2) {
38161
38286
  throw new Error(`Unable to find Vercel CLI data directory. Your platform: ${process.platform}. Supported: darwin, linux, win32.`);
38162
38287
  }
38163
- return path.join(dataDir, "auth.json");
38288
+ return path.join(dataDir2, "auth.json");
38164
38289
  }
38165
38290
  function readAuthConfig() {
38166
38291
  try {
@@ -38221,10 +38346,10 @@ var require_oauth = __commonJS((exports, module) => {
38221
38346
  refreshTokenRequest: () => refreshTokenRequest
38222
38347
  });
38223
38348
  module.exports = __toCommonJS2(oauth_exports);
38224
- var import_os2 = __require("os");
38349
+ var import_os3 = __require("os");
38225
38350
  var VERCEL_ISSUER = "https://vercel.com";
38226
38351
  var VERCEL_CLI_CLIENT_ID = "cl_HYyOPBNtFMfHhaUn9L4QPfTZz6TP47bp";
38227
- var userAgent = `@vercel/oidc node-${process.version} ${(0, import_os2.platform)()} (${(0, import_os2.arch)()}) ${(0, import_os2.hostname)()}`;
38352
+ var userAgent = `@vercel/oidc node-${process.version} ${(0, import_os3.platform)()} (${(0, import_os3.arch)()}) ${(0, import_os3.hostname)()}`;
38228
38353
  var _tokenEndpoint = null;
38229
38354
  async function getTokenEndpoint() {
38230
38355
  if (_tokenEndpoint) {
@@ -38367,11 +38492,11 @@ var require_token_util = __commonJS((exports, module) => {
38367
38492
  var import_auth_errors = require_auth_errors();
38368
38493
  function getVercelDataDir() {
38369
38494
  const vercelFolder = "com.vercel.cli";
38370
- const dataDir = (0, import_token_io.getUserDataDir)();
38371
- if (!dataDir) {
38495
+ const dataDir2 = (0, import_token_io.getUserDataDir)();
38496
+ if (!dataDir2) {
38372
38497
  return null;
38373
38498
  }
38374
- return path.join(dataDir, vercelFolder);
38499
+ return path.join(dataDir2, vercelFolder);
38375
38500
  }
38376
38501
  async function getVercelToken2(options) {
38377
38502
  const authConfig = (0, import_auth_config.readAuthConfig)();
@@ -38646,7 +38771,7 @@ var require_dist = __commonJS((exports, module) => {
38646
38771
  var import_token_util = require_token_util();
38647
38772
  });
38648
38773
 
38649
- // ../../node_modules/.bun/@ai-sdk+gateway@3.0.166+27912429049419a2/node_modules/@ai-sdk/gateway/dist/index.mjs
38774
+ // ../../node_modules/.bun/@ai-sdk+gateway@3.0.175+27912429049419a2/node_modules/@ai-sdk/gateway/dist/index.mjs
38650
38775
  async function createGatewayErrorFromResponse({
38651
38776
  response,
38652
38777
  statusCode,
@@ -39053,11 +39178,14 @@ var import_oidc, import_oidc2, marker17 = "vercel.ai.gateway.error", symbol18, _
39053
39178
  try {
39054
39179
  const { value } = await getFromApi({
39055
39180
  url: `${this.config.baseURL}/config`,
39056
- headers: await resolve4(this.config.headers()),
39181
+ headers: await resolve5(this.config.headers()),
39057
39182
  successfulResponseHandler: createJsonResponseHandler(gatewayAvailableModelsResponseSchema),
39058
39183
  failedResponseHandler: createJsonErrorResponseHandler({
39059
39184
  errorSchema: exports_external2.any(),
39060
- errorToMessage: (data) => data
39185
+ errorToMessage: (data) => {
39186
+ var _a112;
39187
+ return (_a112 = getErrorMessage2(data)) != null ? _a112 : "unknown error";
39188
+ }
39061
39189
  }),
39062
39190
  fetch: this.config.fetch
39063
39191
  });
@@ -39071,11 +39199,14 @@ var import_oidc, import_oidc2, marker17 = "vercel.ai.gateway.error", symbol18, _
39071
39199
  const baseUrl = new URL(this.config.baseURL);
39072
39200
  const { value } = await getFromApi({
39073
39201
  url: `${baseUrl.origin}/v1/credits`,
39074
- headers: await resolve4(this.config.headers()),
39202
+ headers: await resolve5(this.config.headers()),
39075
39203
  successfulResponseHandler: createJsonResponseHandler(gatewayCreditsResponseSchema),
39076
39204
  failedResponseHandler: createJsonErrorResponseHandler({
39077
39205
  errorSchema: exports_external2.any(),
39078
- errorToMessage: (data) => data
39206
+ errorToMessage: (data) => {
39207
+ var _a112;
39208
+ return (_a112 = getErrorMessage2(data)) != null ? _a112 : "unknown error";
39209
+ }
39079
39210
  }),
39080
39211
  fetch: this.config.fetch
39081
39212
  });
@@ -39117,11 +39248,14 @@ var import_oidc, import_oidc2, marker17 = "vercel.ai.gateway.error", symbol18, _
39117
39248
  }
39118
39249
  const { value } = await getFromApi({
39119
39250
  url: `${baseUrl.origin}/v1/report?${searchParams.toString()}`,
39120
- headers: await resolve4(this.config.headers()),
39251
+ headers: await resolve5(this.config.headers()),
39121
39252
  successfulResponseHandler: createJsonResponseHandler(gatewaySpendReportResponseSchema),
39122
39253
  failedResponseHandler: createJsonErrorResponseHandler({
39123
39254
  errorSchema: exports_external2.any(),
39124
- errorToMessage: (data) => data
39255
+ errorToMessage: (data) => {
39256
+ var _a112;
39257
+ return (_a112 = getErrorMessage2(data)) != null ? _a112 : "unknown error";
39258
+ }
39125
39259
  }),
39126
39260
  fetch: this.config.fetch
39127
39261
  });
@@ -39139,11 +39273,14 @@ var import_oidc, import_oidc2, marker17 = "vercel.ai.gateway.error", symbol18, _
39139
39273
  const baseUrl = new URL(this.config.baseURL);
39140
39274
  const { value } = await getFromApi({
39141
39275
  url: `${baseUrl.origin}/v1/generation?id=${encodeURIComponent(params.id)}`,
39142
- headers: await resolve4(this.config.headers()),
39276
+ headers: await resolve5(this.config.headers()),
39143
39277
  successfulResponseHandler: createJsonResponseHandler(gatewayGenerationInfoResponseSchema),
39144
39278
  failedResponseHandler: createJsonErrorResponseHandler({
39145
39279
  errorSchema: exports_external2.any(),
39146
- errorToMessage: (data) => data
39280
+ errorToMessage: (data) => {
39281
+ var _a112;
39282
+ return (_a112 = getErrorMessage2(data)) != null ? _a112 : "unknown error";
39283
+ }
39147
39284
  }),
39148
39285
  fetch: this.config.fetch
39149
39286
  });
@@ -39172,7 +39309,7 @@ var import_oidc, import_oidc2, marker17 = "vercel.ai.gateway.error", symbol18, _
39172
39309
  async doGenerate(options) {
39173
39310
  const { args, warnings } = await this.getArgs(options);
39174
39311
  const { abortSignal } = options;
39175
- const resolvedHeaders = await resolve4(this.config.headers());
39312
+ const resolvedHeaders = await resolve5(this.config.headers());
39176
39313
  try {
39177
39314
  const {
39178
39315
  responseHeaders,
@@ -39180,12 +39317,15 @@ var import_oidc, import_oidc2, marker17 = "vercel.ai.gateway.error", symbol18, _
39180
39317
  rawValue: rawResponse
39181
39318
  } = await postJsonToApi({
39182
39319
  url: this.getUrl(),
39183
- headers: combineHeaders(resolvedHeaders, options.headers, this.getModelConfigHeaders(this.modelId, false), await resolve4(this.config.o11yHeaders)),
39320
+ headers: combineHeaders(resolvedHeaders, options.headers, this.getModelConfigHeaders(this.modelId, false), await resolve5(this.config.o11yHeaders)),
39184
39321
  body: args,
39185
39322
  successfulResponseHandler: createJsonResponseHandler(exports_external2.any()),
39186
39323
  failedResponseHandler: createJsonErrorResponseHandler({
39187
39324
  errorSchema: exports_external2.any(),
39188
- errorToMessage: (data) => data
39325
+ errorToMessage: (data) => {
39326
+ var _a112;
39327
+ return (_a112 = getErrorMessage2(data)) != null ? _a112 : "unknown error";
39328
+ }
39189
39329
  }),
39190
39330
  ...abortSignal && { abortSignal },
39191
39331
  fetch: this.config.fetch
@@ -39203,16 +39343,19 @@ var import_oidc, import_oidc2, marker17 = "vercel.ai.gateway.error", symbol18, _
39203
39343
  async doStream(options) {
39204
39344
  const { args, warnings } = await this.getArgs(options);
39205
39345
  const { abortSignal } = options;
39206
- const resolvedHeaders = await resolve4(this.config.headers());
39346
+ const resolvedHeaders = await resolve5(this.config.headers());
39207
39347
  try {
39208
39348
  const { value: response, responseHeaders } = await postJsonToApi({
39209
39349
  url: this.getUrl(),
39210
- headers: combineHeaders(resolvedHeaders, options.headers, this.getModelConfigHeaders(this.modelId, true), await resolve4(this.config.o11yHeaders)),
39350
+ headers: combineHeaders(resolvedHeaders, options.headers, this.getModelConfigHeaders(this.modelId, true), await resolve5(this.config.o11yHeaders)),
39211
39351
  body: args,
39212
39352
  successfulResponseHandler: createEventSourceResponseHandler(exports_external2.any()),
39213
39353
  failedResponseHandler: createJsonErrorResponseHandler({
39214
39354
  errorSchema: exports_external2.any(),
39215
- errorToMessage: (data) => data
39355
+ errorToMessage: (data) => {
39356
+ var _a112;
39357
+ return (_a112 = getErrorMessage2(data)) != null ? _a112 : "unknown error";
39358
+ }
39216
39359
  }),
39217
39360
  ...abortSignal && { abortSignal },
39218
39361
  fetch: this.config.fetch
@@ -39292,7 +39435,7 @@ var import_oidc, import_oidc2, marker17 = "vercel.ai.gateway.error", symbol18, _
39292
39435
  providerOptions
39293
39436
  }) {
39294
39437
  var _a112, _b112;
39295
- const resolvedHeaders = await resolve4(this.config.headers());
39438
+ const resolvedHeaders = await resolve5(this.config.headers());
39296
39439
  try {
39297
39440
  const {
39298
39441
  responseHeaders,
@@ -39300,7 +39443,7 @@ var import_oidc, import_oidc2, marker17 = "vercel.ai.gateway.error", symbol18, _
39300
39443
  rawValue
39301
39444
  } = await postJsonToApi({
39302
39445
  url: this.getUrl(),
39303
- headers: combineHeaders(resolvedHeaders, headers != null ? headers : {}, this.getModelConfigHeaders(), await resolve4(this.config.o11yHeaders)),
39446
+ headers: combineHeaders(resolvedHeaders, headers != null ? headers : {}, this.getModelConfigHeaders(), await resolve5(this.config.o11yHeaders)),
39304
39447
  body: {
39305
39448
  values,
39306
39449
  ...providerOptions ? { providerOptions } : {}
@@ -39308,7 +39451,10 @@ var import_oidc, import_oidc2, marker17 = "vercel.ai.gateway.error", symbol18, _
39308
39451
  successfulResponseHandler: createJsonResponseHandler(gatewayEmbeddingResponseSchema),
39309
39452
  failedResponseHandler: createJsonErrorResponseHandler({
39310
39453
  errorSchema: exports_external2.any(),
39311
- errorToMessage: (data) => data
39454
+ errorToMessage: (data) => {
39455
+ var _a122;
39456
+ return (_a122 = getErrorMessage2(data)) != null ? _a122 : "unknown error";
39457
+ }
39312
39458
  }),
39313
39459
  ...abortSignal && { abortSignal },
39314
39460
  fetch: this.config.fetch
@@ -39356,7 +39502,7 @@ var import_oidc, import_oidc2, marker17 = "vercel.ai.gateway.error", symbol18, _
39356
39502
  abortSignal
39357
39503
  }) {
39358
39504
  var _a112, _b112, _c;
39359
- const resolvedHeaders = await resolve4(this.config.headers());
39505
+ const resolvedHeaders = await resolve5(this.config.headers());
39360
39506
  try {
39361
39507
  const {
39362
39508
  responseHeaders,
@@ -39364,7 +39510,7 @@ var import_oidc, import_oidc2, marker17 = "vercel.ai.gateway.error", symbol18, _
39364
39510
  rawValue
39365
39511
  } = await postJsonToApi({
39366
39512
  url: this.getUrl(),
39367
- headers: combineHeaders(resolvedHeaders, headers != null ? headers : {}, this.getModelConfigHeaders(), await resolve4(this.config.o11yHeaders)),
39513
+ headers: combineHeaders(resolvedHeaders, headers != null ? headers : {}, this.getModelConfigHeaders(), await resolve5(this.config.o11yHeaders)),
39368
39514
  body: {
39369
39515
  prompt,
39370
39516
  n,
@@ -39380,7 +39526,10 @@ var import_oidc, import_oidc2, marker17 = "vercel.ai.gateway.error", symbol18, _
39380
39526
  successfulResponseHandler: createJsonResponseHandler(gatewayImageResponseSchema),
39381
39527
  failedResponseHandler: createJsonErrorResponseHandler({
39382
39528
  errorSchema: exports_external2.any(),
39383
- errorToMessage: (data) => data
39529
+ errorToMessage: (data) => {
39530
+ var _a122;
39531
+ return (_a122 = getErrorMessage2(data)) != null ? _a122 : "unknown error";
39532
+ }
39384
39533
  }),
39385
39534
  ...abortSignal && { abortSignal },
39386
39535
  fetch: this.config.fetch
@@ -39441,11 +39590,11 @@ var import_oidc, import_oidc2, marker17 = "vercel.ai.gateway.error", symbol18, _
39441
39590
  headers,
39442
39591
  abortSignal
39443
39592
  }) {
39444
- const resolvedHeaders = await resolve4(this.config.headers());
39593
+ const resolvedHeaders = await resolve5(this.config.headers());
39445
39594
  try {
39446
39595
  const { responseHeaders, value: responseBody } = await postJsonToApi({
39447
39596
  url: this.getUrl(),
39448
- headers: combineHeaders(resolvedHeaders, headers != null ? headers : {}, this.getModelConfigHeaders(), await resolve4(this.config.o11yHeaders), { accept: "text/event-stream" }),
39597
+ headers: combineHeaders(resolvedHeaders, headers != null ? headers : {}, this.getModelConfigHeaders(), await resolve5(this.config.o11yHeaders), { accept: "text/event-stream" }),
39449
39598
  body: {
39450
39599
  prompt,
39451
39600
  n,
@@ -39533,7 +39682,10 @@ var import_oidc, import_oidc2, marker17 = "vercel.ai.gateway.error", symbol18, _
39533
39682
  },
39534
39683
  failedResponseHandler: createJsonErrorResponseHandler({
39535
39684
  errorSchema: exports_external2.any(),
39536
- errorToMessage: (data) => data
39685
+ errorToMessage: (data) => {
39686
+ var _a112;
39687
+ return (_a112 = getErrorMessage2(data)) != null ? _a112 : "unknown error";
39688
+ }
39537
39689
  }),
39538
39690
  ...abortSignal && { abortSignal },
39539
39691
  fetch: this.config.fetch
@@ -39579,7 +39731,7 @@ var import_oidc, import_oidc2, marker17 = "vercel.ai.gateway.error", symbol18, _
39579
39731
  providerOptions
39580
39732
  }) {
39581
39733
  var _a112;
39582
- const resolvedHeaders = await resolve4(this.config.headers());
39734
+ const resolvedHeaders = await resolve5(this.config.headers());
39583
39735
  try {
39584
39736
  const {
39585
39737
  responseHeaders,
@@ -39587,7 +39739,7 @@ var import_oidc, import_oidc2, marker17 = "vercel.ai.gateway.error", symbol18, _
39587
39739
  rawValue
39588
39740
  } = await postJsonToApi({
39589
39741
  url: this.getUrl(),
39590
- headers: combineHeaders(resolvedHeaders, headers != null ? headers : {}, this.getModelConfigHeaders(), await resolve4(this.config.o11yHeaders)),
39742
+ headers: combineHeaders(resolvedHeaders, headers != null ? headers : {}, this.getModelConfigHeaders(), await resolve5(this.config.o11yHeaders)),
39591
39743
  body: {
39592
39744
  documents,
39593
39745
  query,
@@ -39597,7 +39749,10 @@ var import_oidc, import_oidc2, marker17 = "vercel.ai.gateway.error", symbol18, _
39597
39749
  successfulResponseHandler: createJsonResponseHandler(gatewayRerankingResponseSchema),
39598
39750
  failedResponseHandler: createJsonErrorResponseHandler({
39599
39751
  errorSchema: exports_external2.any(),
39600
- errorToMessage: (data) => data
39752
+ errorToMessage: (data) => {
39753
+ var _a122;
39754
+ return (_a122 = getErrorMessage2(data)) != null ? _a122 : "unknown error";
39755
+ }
39601
39756
  }),
39602
39757
  ...abortSignal && { abortSignal },
39603
39758
  fetch: this.config.fetch
@@ -39641,7 +39796,7 @@ var import_oidc, import_oidc2, marker17 = "vercel.ai.gateway.error", symbol18, _
39641
39796
  headers,
39642
39797
  abortSignal
39643
39798
  }) {
39644
- const resolvedHeaders = await resolve4(this.config.headers());
39799
+ const resolvedHeaders = await resolve5(this.config.headers());
39645
39800
  try {
39646
39801
  const {
39647
39802
  responseHeaders,
@@ -39649,7 +39804,7 @@ var import_oidc, import_oidc2, marker17 = "vercel.ai.gateway.error", symbol18, _
39649
39804
  rawValue
39650
39805
  } = await postJsonToApi({
39651
39806
  url: this.getUrl(),
39652
- headers: combineHeaders(resolvedHeaders, headers != null ? headers : {}, this.getModelConfigHeaders(), await resolve4(this.config.o11yHeaders)),
39807
+ headers: combineHeaders(resolvedHeaders, headers != null ? headers : {}, this.getModelConfigHeaders(), await resolve5(this.config.o11yHeaders)),
39653
39808
  body: {
39654
39809
  text,
39655
39810
  ...voice && { voice },
@@ -39662,7 +39817,10 @@ var import_oidc, import_oidc2, marker17 = "vercel.ai.gateway.error", symbol18, _
39662
39817
  successfulResponseHandler: createJsonResponseHandler(gatewaySpeechResponseSchema),
39663
39818
  failedResponseHandler: createJsonErrorResponseHandler({
39664
39819
  errorSchema: exports_external2.any(),
39665
- errorToMessage: (data) => data
39820
+ errorToMessage: (data) => {
39821
+ var _a112;
39822
+ return (_a112 = getErrorMessage2(data)) != null ? _a112 : "unknown error";
39823
+ }
39666
39824
  }),
39667
39825
  ...abortSignal && { abortSignal },
39668
39826
  fetch: this.config.fetch
@@ -39708,7 +39866,7 @@ var import_oidc, import_oidc2, marker17 = "vercel.ai.gateway.error", symbol18, _
39708
39866
  abortSignal
39709
39867
  }) {
39710
39868
  var _a112, _b112, _c;
39711
- const resolvedHeaders = await resolve4(this.config.headers());
39869
+ const resolvedHeaders = await resolve5(this.config.headers());
39712
39870
  try {
39713
39871
  const {
39714
39872
  responseHeaders,
@@ -39716,7 +39874,7 @@ var import_oidc, import_oidc2, marker17 = "vercel.ai.gateway.error", symbol18, _
39716
39874
  rawValue
39717
39875
  } = await postJsonToApi({
39718
39876
  url: this.getUrl(),
39719
- headers: combineHeaders(resolvedHeaders, headers != null ? headers : {}, this.getModelConfigHeaders(), await resolve4(this.config.o11yHeaders)),
39877
+ headers: combineHeaders(resolvedHeaders, headers != null ? headers : {}, this.getModelConfigHeaders(), await resolve5(this.config.o11yHeaders)),
39720
39878
  body: {
39721
39879
  audio: audio instanceof Uint8Array ? convertUint8ArrayToBase64(audio) : audio,
39722
39880
  mediaType,
@@ -39725,7 +39883,10 @@ var import_oidc, import_oidc2, marker17 = "vercel.ai.gateway.error", symbol18, _
39725
39883
  successfulResponseHandler: createJsonResponseHandler(gatewayTranscriptionResponseSchema),
39726
39884
  failedResponseHandler: createJsonErrorResponseHandler({
39727
39885
  errorSchema: exports_external2.any(),
39728
- errorToMessage: (data) => data
39886
+ errorToMessage: (data) => {
39887
+ var _a122;
39888
+ return (_a122 = getErrorMessage2(data)) != null ? _a122 : "unknown error";
39889
+ }
39729
39890
  }),
39730
39891
  ...abortSignal && { abortSignal },
39731
39892
  fetch: this.config.fetch
@@ -39757,45 +39918,45 @@ var import_oidc, import_oidc2, marker17 = "vercel.ai.gateway.error", symbol18, _
39757
39918
  "ai-model-id": this.modelId
39758
39919
  };
39759
39920
  }
39760
- }, providerMetadataEntrySchema4, gatewayTranscriptionWarningSchema, gatewayTranscriptionResponseSchema, exaSearchInputSchema, exaSearchOutputSchema, exaSearchToolFactory, exaSearch = (config2 = {}) => exaSearchToolFactory(config2), parallelSearchInputSchema, parallelSearchOutputSchema, parallelSearchToolFactory, parallelSearch = (config2 = {}) => parallelSearchToolFactory(config2), perplexitySearchInputSchema, perplexitySearchOutputSchema, perplexitySearchToolFactory, perplexitySearch = (config2 = {}) => perplexitySearchToolFactory(config2), gatewayTools, VERSION5 = "3.0.166", AI_GATEWAY_PROTOCOL_VERSION = "0.0.1", gateway;
39761
- var init_dist7 = __esm(() => {
39762
- init_dist3();
39763
- init_dist();
39921
+ }, providerMetadataEntrySchema4, gatewayTranscriptionWarningSchema, gatewayTranscriptionResponseSchema, exaSearchInputSchema, exaSearchOutputSchema, exaSearchToolFactory, exaSearch = (config2 = {}) => exaSearchToolFactory(config2), parallelSearchInputSchema, parallelSearchOutputSchema, parallelSearchToolFactory, parallelSearch = (config2 = {}) => parallelSearchToolFactory(config2), perplexitySearchInputSchema, perplexitySearchOutputSchema, perplexitySearchToolFactory, perplexitySearch = (config2 = {}) => perplexitySearchToolFactory(config2), gatewayTools, VERSION5 = "3.0.175", AI_GATEWAY_PROTOCOL_VERSION = "0.0.1", gateway;
39922
+ var init_dist8 = __esm(() => {
39923
+ init_dist4();
39924
+ init_dist2();
39764
39925
  init_v4();
39765
39926
  init_v4();
39766
- init_dist3();
39927
+ init_dist4();
39767
39928
  init_v4();
39768
- init_dist3();
39769
- init_dist3();
39770
- init_dist3();
39929
+ init_dist4();
39930
+ init_dist4();
39931
+ init_dist4();
39771
39932
  init_v4();
39772
- init_dist3();
39773
- init_dist3();
39933
+ init_dist4();
39934
+ init_dist4();
39774
39935
  init_v4();
39775
- init_dist3();
39936
+ init_dist4();
39776
39937
  init_v4();
39777
- init_dist3();
39938
+ init_dist4();
39778
39939
  init_v4();
39779
- init_dist3();
39940
+ init_dist4();
39780
39941
  init_v4();
39781
- init_dist3();
39942
+ init_dist4();
39782
39943
  init_v4();
39783
- init_dist3();
39944
+ init_dist4();
39784
39945
  init_v4();
39785
- init_dist();
39786
- init_dist3();
39946
+ init_dist2();
39947
+ init_dist4();
39787
39948
  init_v4();
39788
- init_dist3();
39949
+ init_dist4();
39789
39950
  init_v4();
39790
- init_dist3();
39951
+ init_dist4();
39791
39952
  init_v4();
39792
- init_dist3();
39953
+ init_dist4();
39793
39954
  init_v4();
39794
- init_dist3();
39955
+ init_dist4();
39795
39956
  init_zod();
39796
- init_dist3();
39957
+ init_dist4();
39797
39958
  init_zod();
39798
- init_dist3();
39959
+ init_dist4();
39799
39960
  init_zod();
39800
39961
  import_oidc = __toESM(require_dist(), 1);
39801
39962
  import_oidc2 = __toESM(require_dist(), 1);
@@ -42073,7 +42234,7 @@ var require_src = __commonJS((exports) => {
42073
42234
  };
42074
42235
  });
42075
42236
 
42076
- // ../../node_modules/.bun/ai@6.0.246+27912429049419a2/node_modules/ai/dist/index.mjs
42237
+ // ../../node_modules/.bun/ai@6.0.257+27912429049419a2/node_modules/ai/dist/index.mjs
42077
42238
  var exports_dist4 = {};
42078
42239
  __export(exports_dist4, {
42079
42240
  zodSchema: () => zodSchema,
@@ -43358,7 +43519,8 @@ async function recordSpan({
43358
43519
  tracer,
43359
43520
  attributes,
43360
43521
  fn,
43361
- endWhenDone = true
43522
+ endWhenDone = true,
43523
+ endOnError = endWhenDone
43362
43524
  }) {
43363
43525
  return tracer.startActiveSpan(name222, { attributes: await attributes }, async (span) => {
43364
43526
  const ctx = import_api3.context.active();
@@ -43372,7 +43534,9 @@ async function recordSpan({
43372
43534
  try {
43373
43535
  recordErrorOnSpan(span, error40);
43374
43536
  } finally {
43375
- span.end();
43537
+ if (endOnError) {
43538
+ span.end();
43539
+ }
43376
43540
  }
43377
43541
  throw error40;
43378
43542
  }
@@ -45842,6 +46006,7 @@ function processUIMessageStream({
45842
46006
  case "reasoning-start": {
45843
46007
  const reasoningPart = {
45844
46008
  type: "reasoning",
46009
+ id: chunk.id,
45845
46010
  text: "",
45846
46011
  providerMetadata: chunk.providerMetadata,
45847
46012
  state: "streaming"
@@ -46138,7 +46303,7 @@ function processUIMessageStream({
46138
46303
  }
46139
46304
  await updateMessageMetadata(chunk.messageMetadata);
46140
46305
  if (chunk.messageId != null || chunk.messageMetadata != null) {
46141
- write();
46306
+ write({ updateStatus: false });
46142
46307
  }
46143
46308
  break;
46144
46309
  }
@@ -46361,9 +46526,18 @@ function createAsyncIterableStream(source) {
46361
46526
  }
46362
46527
  async function consumeStream({
46363
46528
  stream,
46364
- onError
46529
+ onError,
46530
+ abortSignal
46365
46531
  }) {
46366
46532
  const reader = stream.getReader();
46533
+ const cancelOnAbort = () => {
46534
+ reader.cancel().catch(() => {});
46535
+ };
46536
+ if (abortSignal == null ? undefined : abortSignal.aborted) {
46537
+ cancelOnAbort();
46538
+ } else {
46539
+ abortSignal == null || abortSignal.addEventListener("abort", cancelOnAbort, { once: true });
46540
+ }
46367
46541
  try {
46368
46542
  while (true) {
46369
46543
  const { done } = await reader.read();
@@ -46373,6 +46547,7 @@ async function consumeStream({
46373
46547
  } catch (error40) {
46374
46548
  onError == null || onError(error40);
46375
46549
  } finally {
46550
+ abortSignal == null || abortSignal.removeEventListener("abort", cancelOnAbort);
46376
46551
  reader.releaseLock();
46377
46552
  }
46378
46553
  }
@@ -46973,6 +47148,27 @@ function createUIMessageStream({
46973
47148
  onError
46974
47149
  });
46975
47150
  }
47151
+ function createUIMessageSnapshot(message) {
47152
+ const textByPartIndex = /* @__PURE__ */ new Map;
47153
+ const messageWithoutText = {
47154
+ ...message,
47155
+ parts: message.parts.map((part, index) => {
47156
+ if (part.type === "text" || part.type === "reasoning") {
47157
+ textByPartIndex.set(index, part.text);
47158
+ return { ...part, text: "" };
47159
+ }
47160
+ return part;
47161
+ })
47162
+ };
47163
+ const snapshot2 = structuredClone(messageWithoutText);
47164
+ for (const [index, text2] of textByPartIndex) {
47165
+ const part = snapshot2.parts[index];
47166
+ if (part.type === "text" || part.type === "reasoning") {
47167
+ part.text = text2;
47168
+ }
47169
+ }
47170
+ return snapshot2;
47171
+ }
46976
47172
  function readUIMessageStream({
46977
47173
  message,
46978
47174
  stream,
@@ -47005,7 +47201,7 @@ function readUIMessageStream({
47005
47201
  return job({
47006
47202
  state,
47007
47203
  write: () => {
47008
- controller == null || controller.enqueue(structuredClone(state.message));
47204
+ controller == null || controller.enqueue(createUIMessageSnapshot(state.message));
47009
47205
  }
47010
47206
  });
47011
47207
  },
@@ -49888,7 +50084,7 @@ var import_api2, import_api3, __defProp2, __export2 = (target, all) => {
49888
50084
  }, imageMediaTypeSignatures, audioMediaTypeSignatures, videoMediaTypeSignatures, DEFAULT_SNIFF_BYTES = 18, MAX_SIGNATURE_BYTES = 12, MAX_ID3_TAG_BYTES, ID3_SCAN_BYTES, stripID3 = (bytes) => {
49889
50085
  const id3Size = (bytes[6] & 127) << 21 | (bytes[7] & 127) << 14 | (bytes[8] & 127) << 7 | bytes[9] & 127;
49890
50086
  return bytes.subarray(id3Size + 10);
49891
- }, VERSION6 = "6.0.246", download = async ({
50087
+ }, VERSION6 = "6.0.257", download = async ({
49892
50088
  url: url2,
49893
50089
  maxBytes,
49894
50090
  abortSignal
@@ -49983,7 +50179,7 @@ var import_api2, import_api3, __defProp2, __export2 = (target, all) => {
49983
50179
  const schema = asSchema(inputSchema);
49984
50180
  return {
49985
50181
  name: "object",
49986
- responseFormat: resolve4(schema.jsonSchema).then((jsonSchema2) => ({
50182
+ responseFormat: resolve5(schema.jsonSchema).then((jsonSchema2) => ({
49987
50183
  type: "json",
49988
50184
  schema: jsonSchema2,
49989
50185
  ...name222 != null && { name: name222 },
@@ -50044,7 +50240,7 @@ var import_api2, import_api3, __defProp2, __export2 = (target, all) => {
50044
50240
  const elementSchema = asSchema(inputElementSchema);
50045
50241
  return {
50046
50242
  name: "array",
50047
- responseFormat: resolve4(elementSchema.jsonSchema).then((jsonSchema2) => {
50243
+ responseFormat: resolve5(elementSchema.jsonSchema).then((jsonSchema2) => {
50048
50244
  const { $schema, ...itemSchema } = jsonSchema2;
50049
50245
  return {
50050
50246
  type: "json",
@@ -51087,6 +51283,7 @@ var import_api2, import_api3, __defProp2, __export2 = (target, all) => {
51087
51283
  }),
51088
51284
  tracer,
51089
51285
  endWhenDone: false,
51286
+ endOnError: true,
51090
51287
  fn: async (doStreamSpan2) => ({
51091
51288
  startTimestampMs: now22(),
51092
51289
  doStreamSpan: doStreamSpan2,
@@ -52006,10 +52203,11 @@ var import_api2, import_api3, __defProp2, __export2 = (target, all) => {
52006
52203
  onStepFinish,
52007
52204
  ...options
52008
52205
  }) {
52206
+ const preparedCall = await this.prepareCall(options);
52009
52207
  return generateText({
52010
- ...await this.prepareCall(options),
52208
+ ...preparedCall,
52011
52209
  abortSignal,
52012
- timeout,
52210
+ timeout: timeout != null ? timeout : preparedCall.timeout,
52013
52211
  onStepFinish: this.mergeOnStepFinishCallbacks(onStepFinish)
52014
52212
  });
52015
52213
  }
@@ -52020,10 +52218,11 @@ var import_api2, import_api3, __defProp2, __export2 = (target, all) => {
52020
52218
  onStepFinish,
52021
52219
  ...options
52022
52220
  }) {
52221
+ const preparedCall = await this.prepareCall(options);
52023
52222
  return streamText({
52024
- ...await this.prepareCall(options),
52223
+ ...preparedCall,
52025
52224
  abortSignal,
52026
- timeout,
52225
+ timeout: timeout != null ? timeout : preparedCall.timeout,
52027
52226
  experimental_transform,
52028
52227
  onStepFinish: this.mergeOnStepFinishCallbacks(onStepFinish)
52029
52228
  });
@@ -52380,6 +52579,7 @@ var import_api2, import_api3, __defProp2, __export2 = (target, all) => {
52380
52579
  }),
52381
52580
  tracer,
52382
52581
  endWhenDone: false,
52582
+ endOnError: true,
52383
52583
  fn: async (rootSpan) => {
52384
52584
  const standardizedPrompt = await standardizePrompt({
52385
52585
  system,
@@ -52449,6 +52649,7 @@ var import_api2, import_api3, __defProp2, __export2 = (target, all) => {
52449
52649
  }),
52450
52650
  tracer,
52451
52651
  endWhenDone: false,
52652
+ endOnError: true,
52452
52653
  fn: async (doStreamSpan2) => ({
52453
52654
  startTimestampMs: now22(),
52454
52655
  doStreamSpan: doStreamSpan2,
@@ -53035,9 +53236,9 @@ var import_api2, import_api3, __defProp2, __export2 = (target, all) => {
53035
53236
  ...options
53036
53237
  }) {
53037
53238
  var _a222, _b16, _c, _d, _e;
53038
- const resolvedBody = await resolve4(this.body);
53039
- const resolvedHeaders = await resolve4(this.headers);
53040
- const resolvedCredentials = await resolve4(this.credentials);
53239
+ const resolvedBody = await resolve5(this.body);
53240
+ const resolvedHeaders = await resolve5(this.headers);
53241
+ const resolvedCredentials = await resolve5(this.credentials);
53041
53242
  const baseHeaders = {
53042
53243
  ...normalizeHeaders(resolvedHeaders),
53043
53244
  ...normalizeHeaders(options.headers)
@@ -53085,9 +53286,9 @@ var import_api2, import_api3, __defProp2, __export2 = (target, all) => {
53085
53286
  }
53086
53287
  async reconnectToStream(options) {
53087
53288
  var _a222, _b16, _c, _d, _e;
53088
- const resolvedBody = await resolve4(this.body);
53089
- const resolvedHeaders = await resolve4(this.headers);
53090
- const resolvedCredentials = await resolve4(this.credentials);
53289
+ const resolvedBody = await resolve5(this.body);
53290
+ const resolvedHeaders = await resolve5(this.headers);
53291
+ const resolvedCredentials = await resolve5(this.credentials);
53091
53292
  const baseHeaders = {
53092
53293
  ...normalizeHeaders(resolvedHeaders),
53093
53294
  ...normalizeHeaders(options.headers)
@@ -53107,7 +53308,8 @@ var import_api2, import_api3, __defProp2, __export2 = (target, all) => {
53107
53308
  const response = await fetch2(api2, {
53108
53309
  method: "GET",
53109
53310
  headers,
53110
- credentials
53311
+ credentials,
53312
+ signal: options.abortSignal
53111
53313
  });
53112
53314
  if (response.status === 204) {
53113
53315
  return null;
@@ -53135,6 +53337,7 @@ var import_api2, import_api3, __defProp2, __export2 = (target, all) => {
53135
53337
  sendAutomaticallyWhen
53136
53338
  }) {
53137
53339
  this.activeResponse = undefined;
53340
+ this.activeResumeRequest = undefined;
53138
53341
  this.jobExecutor = new SerialJobExecutor;
53139
53342
  this.sendMessage = async (message, options) => {
53140
53343
  var _a222, _b16, _c, _d;
@@ -53276,12 +53479,9 @@ var import_api2, import_api3, __defProp2, __export2 = (target, all) => {
53276
53479
  });
53277
53480
  this.addToolResult = this.addToolOutput;
53278
53481
  this.stop = async () => {
53279
- var _a222;
53280
- if (this.status !== "streaming" && this.status !== "submitted")
53281
- return;
53282
- if ((_a222 = this.activeResponse) == null ? undefined : _a222.abortController) {
53283
- this.activeResponse.abortController.abort();
53284
- }
53482
+ var _a222, _b16;
53483
+ (_a222 = this.activeResumeRequest) == null || _a222.abortController.abort();
53484
+ (_b16 = this.activeResponse) == null || _b16.abortController.abort();
53285
53485
  };
53286
53486
  this.id = id;
53287
53487
  this.transport = transport;
@@ -53337,25 +53537,59 @@ var import_api2, import_api3, __defProp2, __export2 = (target, all) => {
53337
53537
  body,
53338
53538
  messageId
53339
53539
  }) {
53340
- var _a222, _b16;
53540
+ var _a222, _b16, _c;
53541
+ const abortController = new AbortController;
53542
+ const activeResumeRequest = trigger === "resume-stream" ? { abortController } : undefined;
53543
+ if (activeResumeRequest) {
53544
+ (_a222 = this.activeResumeRequest) == null || _a222.abortController.abort();
53545
+ this.activeResumeRequest = activeResumeRequest;
53546
+ }
53547
+ const isCurrentRequest = () => activeResumeRequest == null || this.activeResumeRequest === activeResumeRequest;
53548
+ const clearActiveResumeRequest = () => {
53549
+ if (this.activeResumeRequest === activeResumeRequest) {
53550
+ this.activeResumeRequest = undefined;
53551
+ }
53552
+ };
53341
53553
  let resumeStream;
53342
53554
  if (trigger === "resume-stream") {
53343
53555
  try {
53344
53556
  const reconnect = await this.transport.reconnectToStream({
53345
53557
  chatId: this.id,
53558
+ abortSignal: abortController.signal,
53346
53559
  metadata,
53347
53560
  headers,
53348
53561
  body
53349
53562
  });
53563
+ if (abortController.signal.aborted || !isCurrentRequest()) {
53564
+ await (reconnect == null ? undefined : reconnect.cancel().catch(() => {}));
53565
+ if (isCurrentRequest()) {
53566
+ this.setStatus({ status: "ready" });
53567
+ }
53568
+ clearActiveResumeRequest();
53569
+ return;
53570
+ }
53350
53571
  if (reconnect == null) {
53572
+ this.setStatus({ status: "ready" });
53573
+ clearActiveResumeRequest();
53351
53574
  return;
53352
53575
  }
53353
53576
  resumeStream = reconnect;
53354
53577
  } catch (err) {
53578
+ if (abortController.signal.aborted || err.name === "AbortError") {
53579
+ if (isCurrentRequest()) {
53580
+ this.setStatus({ status: "ready" });
53581
+ }
53582
+ clearActiveResumeRequest();
53583
+ return;
53584
+ }
53585
+ if (!isCurrentRequest()) {
53586
+ return;
53587
+ }
53355
53588
  if (this.onError && err instanceof Error) {
53356
53589
  this.onError(err);
53357
53590
  }
53358
53591
  this.setStatus({ status: "error", error: err });
53592
+ clearActiveResumeRequest();
53359
53593
  return;
53360
53594
  }
53361
53595
  }
@@ -53368,10 +53602,10 @@ var import_api2, import_api3, __defProp2, __export2 = (target, all) => {
53368
53602
  try {
53369
53603
  const response = {
53370
53604
  state: createStreamingUIMessageState({
53371
- lastMessage: trigger === "regenerate-message" ? undefined : this.state.snapshot(lastMessage),
53605
+ lastMessage: trigger === "resume-stream" || trigger === "regenerate-message" ? undefined : this.state.snapshot(lastMessage),
53372
53606
  messageId: this.generateId()
53373
53607
  }),
53374
- abortController: new AbortController
53608
+ abortController
53375
53609
  };
53376
53610
  activeResponse = response;
53377
53611
  response.abortController.signal.addEventListener("abort", () => {
@@ -53393,19 +53627,29 @@ var import_api2, import_api3, __defProp2, __export2 = (target, all) => {
53393
53627
  messageId
53394
53628
  });
53395
53629
  }
53396
- const runUpdateMessageJob = (job) => this.jobExecutor.run(() => job({
53397
- state: response.state,
53398
- write: () => {
53399
- var _a232;
53400
- this.setStatus({ status: "streaming" });
53401
- const replaceLastMessage = response.state.message.id === ((_a232 = this.lastMessage) == null ? undefined : _a232.id);
53402
- if (replaceLastMessage) {
53403
- this.state.replaceMessage(this.state.messages.length - 1, response.state.message);
53404
- } else {
53405
- this.state.pushMessage(response.state.message);
53406
- }
53630
+ const runUpdateMessageJob = (job) => this.jobExecutor.run(() => {
53631
+ if (response.abortController.signal.aborted) {
53632
+ return Promise.resolve();
53407
53633
  }
53408
- }));
53634
+ return job({
53635
+ state: response.state,
53636
+ write: ({ updateStatus = true } = {}) => {
53637
+ var _a232;
53638
+ if (response.abortController.signal.aborted) {
53639
+ return;
53640
+ }
53641
+ if (updateStatus) {
53642
+ this.setStatus({ status: "streaming" });
53643
+ }
53644
+ const replaceLastMessage = response.state.message.id === ((_a232 = this.lastMessage) == null ? undefined : _a232.id);
53645
+ if (replaceLastMessage) {
53646
+ this.state.replaceMessage(this.state.messages.length - 1, response.state.message);
53647
+ } else {
53648
+ this.state.pushMessage(response.state.message);
53649
+ }
53650
+ }
53651
+ });
53652
+ });
53409
53653
  await consumeStream({
53410
53654
  stream: processUIMessageStream({
53411
53655
  stream,
@@ -53418,15 +53662,29 @@ var import_api2, import_api3, __defProp2, __export2 = (target, all) => {
53418
53662
  throw error40;
53419
53663
  }
53420
53664
  }),
53665
+ abortSignal: response.abortController.signal,
53421
53666
  onError: (error40) => {
53422
53667
  throw error40;
53423
53668
  }
53424
53669
  });
53425
- this.setStatus({ status: "ready" });
53670
+ if (isAbort) {
53671
+ if (isCurrentRequest()) {
53672
+ this.setStatus({ status: "ready" });
53673
+ }
53674
+ return null;
53675
+ }
53676
+ if (isCurrentRequest()) {
53677
+ this.setStatus({ status: "ready" });
53678
+ }
53426
53679
  } catch (err) {
53427
53680
  if (isAbort || err.name === "AbortError") {
53428
53681
  isAbort = true;
53429
- this.setStatus({ status: "ready" });
53682
+ if (isCurrentRequest()) {
53683
+ this.setStatus({ status: "ready" });
53684
+ }
53685
+ return null;
53686
+ }
53687
+ if (!isCurrentRequest()) {
53430
53688
  return null;
53431
53689
  }
53432
53690
  isError = true;
@@ -53440,7 +53698,7 @@ var import_api2, import_api3, __defProp2, __export2 = (target, all) => {
53440
53698
  } finally {
53441
53699
  try {
53442
53700
  if (activeResponse) {
53443
- (_a222 = this.onFinish) == null || _a222.call(this, {
53701
+ (_b16 = this.onFinish) == null || _b16.call(this, {
53444
53702
  message: activeResponse.state.message,
53445
53703
  messages: this.state.messages,
53446
53704
  isAbort,
@@ -53449,17 +53707,17 @@ var import_api2, import_api3, __defProp2, __export2 = (target, all) => {
53449
53707
  finishReason: activeResponse.state.finishReason
53450
53708
  });
53451
53709
  }
53452
- } catch (err) {
53453
- console.error(err);
53454
- }
53455
- if (this.activeResponse === activeResponse) {
53456
- this.activeResponse = undefined;
53710
+ } finally {
53711
+ if (this.activeResponse === activeResponse) {
53712
+ this.activeResponse = undefined;
53713
+ }
53714
+ clearActiveResumeRequest();
53457
53715
  }
53458
53716
  }
53459
53717
  if (!isError && await this.shouldSendAutomatically()) {
53460
53718
  await this.makeRequest({
53461
53719
  trigger: "submit-message",
53462
- messageId: (_b16 = this.lastMessage) == null ? undefined : _b16.id,
53720
+ messageId: (_c = this.lastMessage) == null ? undefined : _c.id,
53463
53721
  metadata,
53464
53722
  headers,
53465
53723
  body
@@ -53498,96 +53756,96 @@ var import_api2, import_api3, __defProp2, __export2 = (target, all) => {
53498
53756
  return null;
53499
53757
  }
53500
53758
  }, TextStreamChatTransport;
53501
- var init_dist8 = __esm(() => {
53502
- init_dist7();
53503
- init_dist3();
53504
- init_dist3();
53505
- init_dist3();
53506
- init_dist();
53507
- init_dist();
53508
- init_dist();
53509
- init_dist();
53510
- init_dist();
53511
- init_dist();
53512
- init_dist();
53513
- init_dist();
53514
- init_dist();
53515
- init_dist();
53516
- init_dist();
53517
- init_dist();
53518
- init_dist();
53519
- init_dist();
53520
- init_dist();
53521
- init_dist();
53522
- init_dist();
53523
- init_dist();
53524
- init_dist();
53525
- init_dist();
53526
- init_dist();
53527
- init_dist3();
53528
- init_dist();
53529
- init_dist7();
53530
- init_dist3();
53531
- init_dist3();
53532
- init_dist3();
53533
- init_dist();
53534
- init_dist3();
53759
+ var init_dist9 = __esm(() => {
53760
+ init_dist8();
53761
+ init_dist4();
53762
+ init_dist4();
53763
+ init_dist4();
53764
+ init_dist2();
53765
+ init_dist2();
53766
+ init_dist2();
53767
+ init_dist2();
53768
+ init_dist2();
53769
+ init_dist2();
53770
+ init_dist2();
53771
+ init_dist2();
53772
+ init_dist2();
53773
+ init_dist2();
53774
+ init_dist2();
53775
+ init_dist2();
53776
+ init_dist2();
53777
+ init_dist2();
53778
+ init_dist2();
53779
+ init_dist2();
53780
+ init_dist2();
53781
+ init_dist2();
53782
+ init_dist2();
53783
+ init_dist2();
53784
+ init_dist2();
53785
+ init_dist4();
53786
+ init_dist2();
53787
+ init_dist8();
53788
+ init_dist4();
53789
+ init_dist4();
53790
+ init_dist4();
53791
+ init_dist2();
53792
+ init_dist4();
53535
53793
  init_v4();
53536
- init_dist();
53537
- init_dist3();
53538
- init_dist();
53539
- init_dist3();
53794
+ init_dist2();
53795
+ init_dist4();
53796
+ init_dist2();
53797
+ init_dist4();
53540
53798
  init_v4();
53541
53799
  init_v4();
53542
53800
  init_v4();
53543
53801
  init_v4();
53544
53802
  init_v4();
53545
- init_dist7();
53546
- init_dist();
53547
- init_dist();
53548
- init_dist7();
53549
- init_dist3();
53550
- init_dist3();
53551
- init_dist3();
53552
- init_dist3();
53553
- init_dist3();
53554
- init_dist();
53555
- init_dist3();
53556
- init_dist3();
53557
- init_dist3();
53558
- init_dist();
53559
- init_dist3();
53560
- init_dist3();
53803
+ init_dist8();
53804
+ init_dist2();
53805
+ init_dist2();
53806
+ init_dist8();
53807
+ init_dist4();
53808
+ init_dist4();
53809
+ init_dist4();
53810
+ init_dist4();
53811
+ init_dist4();
53812
+ init_dist2();
53813
+ init_dist4();
53814
+ init_dist4();
53815
+ init_dist4();
53816
+ init_dist2();
53817
+ init_dist4();
53818
+ init_dist4();
53561
53819
  init_v4();
53562
- init_dist3();
53563
- init_dist3();
53564
- init_dist3();
53565
- init_dist3();
53566
- init_dist();
53567
- init_dist3();
53820
+ init_dist4();
53821
+ init_dist4();
53822
+ init_dist4();
53823
+ init_dist4();
53824
+ init_dist2();
53825
+ init_dist4();
53568
53826
  init_v4();
53569
- init_dist3();
53570
- init_dist3();
53571
- init_dist3();
53572
- init_dist3();
53573
- init_dist();
53574
- init_dist3();
53575
- init_dist();
53576
- init_dist3();
53577
- init_dist3();
53578
- init_dist3();
53579
- init_dist3();
53580
- init_dist3();
53581
- init_dist();
53582
- init_dist3();
53583
- init_dist();
53584
- init_dist();
53585
- init_dist();
53586
- init_dist3();
53587
- init_dist3();
53588
- init_dist3();
53589
- init_dist3();
53590
- init_dist3();
53827
+ init_dist4();
53828
+ init_dist4();
53829
+ init_dist4();
53830
+ init_dist4();
53831
+ init_dist2();
53832
+ init_dist4();
53833
+ init_dist2();
53834
+ init_dist4();
53835
+ init_dist4();
53836
+ init_dist4();
53837
+ init_dist4();
53838
+ init_dist4();
53839
+ init_dist2();
53840
+ init_dist4();
53841
+ init_dist2();
53842
+ init_dist2();
53843
+ init_dist2();
53844
+ init_dist4();
53845
+ init_dist4();
53846
+ init_dist4();
53847
+ init_dist4();
53848
+ init_dist4();
53591
53849
  import_api2 = __toESM(require_src(), 1);
53592
53850
  import_api3 = __toESM(require_src(), 1);
53593
53851
  __defProp2 = Object.defineProperty;
@@ -54646,6 +54904,7 @@ var init_dist8 = __esm(() => {
54646
54904
  }),
54647
54905
  exports_external2.object({
54648
54906
  type: exports_external2.literal("reasoning"),
54907
+ id: exports_external2.string().optional(),
54649
54908
  text: exports_external2.string(),
54650
54909
  state: exports_external2.enum(["streaming", "done"]).optional(),
54651
54910
  providerMetadata: providerMetadataSchema.optional()
@@ -55256,19 +55515,20 @@ var init_openapi = __esm(() => {
55256
55515
  });
55257
55516
 
55258
55517
  // src/server/index.ts
55259
- import { existsSync as existsSync5 } from "fs";
55518
+ import { existsSync as existsSync6 } from "fs";
55260
55519
  import { createRequire } from "module";
55261
- import { join as join7, resolve as resolve5, sep } from "path";
55520
+ import { join as join9, resolve as resolve6, sep } from "path";
55262
55521
 
55263
55522
  // src/lib/config.ts
55264
- import { existsSync, mkdirSync, readFileSync, readdirSync, writeFileSync, unlinkSync, cpSync } from "fs";
55265
- import { homedir } from "os";
55266
- import { basename, dirname, join, resolve } from "path";
55523
+ init_paths();
55524
+ import { existsSync as existsSync2, mkdirSync, readFileSync, readdirSync, writeFileSync, unlinkSync, cpSync } from "fs";
55525
+ import { homedir as homedir3 } from "os";
55526
+ import { basename, dirname, join as join3, resolve as resolve2 } from "path";
55267
55527
  function isInMemoryDb(path) {
55268
55528
  return path === ":memory:" || path.startsWith("file::memory:");
55269
55529
  }
55270
55530
  function homeDir() {
55271
- return process.env["HOME"] || process.env["USERPROFILE"] || homedir();
55531
+ return process.env["HOME"] || process.env["USERPROFILE"] || homedir3();
55272
55532
  }
55273
55533
  var DEFAULT_CONFIG = {
55274
55534
  default_scope: "private",
@@ -55326,9 +55586,9 @@ function isValidCategory(value) {
55326
55586
  return VALID_CATEGORIES.includes(value);
55327
55587
  }
55328
55588
  function loadConfig() {
55329
- const configPath = join(homeDir(), ".hasna", "mementos", "config.json");
55589
+ const configPath = join3(getDataRoot(), "config.json");
55330
55590
  let fileConfig = {};
55331
- if (existsSync(configPath)) {
55591
+ if (existsSync2(configPath)) {
55332
55592
  try {
55333
55593
  const raw = readFileSync(configPath, "utf-8");
55334
55594
  fileConfig = JSON.parse(raw);
@@ -55354,10 +55614,10 @@ function loadConfig() {
55354
55614
  }
55355
55615
  function findFileWalkingUp(filename) {
55356
55616
  let dir = process.cwd();
55357
- const legacyHomeMementosDb = resolve(homeDir(), ".mementos", "mementos.db");
55617
+ const legacyHomeMementosDb = resolve2(homeDir(), ".mementos", "mementos.db");
55358
55618
  while (true) {
55359
- const candidate = join(dir, filename);
55360
- if (existsSync(candidate) && resolve(candidate) !== legacyHomeMementosDb) {
55619
+ const candidate = join3(dir, filename);
55620
+ if (existsSync2(candidate) && resolve2(candidate) !== legacyHomeMementosDb) {
55361
55621
  return candidate;
55362
55622
  }
55363
55623
  const parent = dirname(dir);
@@ -55370,7 +55630,7 @@ function findFileWalkingUp(filename) {
55370
55630
  function findGitRoot() {
55371
55631
  let dir = process.cwd();
55372
55632
  while (true) {
55373
- if (existsSync(join(dir, ".git"))) {
55633
+ if (existsSync2(join3(dir, ".git"))) {
55374
55634
  return dir;
55375
55635
  }
55376
55636
  const parent = dirname(dir);
@@ -55381,14 +55641,14 @@ function findGitRoot() {
55381
55641
  }
55382
55642
  }
55383
55643
  function profilesDir() {
55384
- return join(homeDir(), ".hasna", "mementos", "profiles");
55644
+ return join3(getDataRoot(), "profiles");
55385
55645
  }
55386
55646
  function globalConfigPath() {
55387
- return join(homeDir(), ".hasna", "mementos", "config.json");
55647
+ return join3(getDataRoot(), "config.json");
55388
55648
  }
55389
55649
  function readGlobalConfig() {
55390
55650
  const p = globalConfigPath();
55391
- if (!existsSync(p))
55651
+ if (!existsSync2(p))
55392
55652
  return {};
55393
55653
  try {
55394
55654
  return JSON.parse(readFileSync(p, "utf-8"));
@@ -55405,16 +55665,16 @@ function getActiveProfile() {
55405
55665
  }
55406
55666
  function listProfiles() {
55407
55667
  const dir = profilesDir();
55408
- if (!existsSync(dir))
55668
+ if (!existsSync2(dir))
55409
55669
  return [];
55410
55670
  return readdirSync(dir).filter((f) => f.endsWith(".db")).map((f) => basename(f, ".db")).sort();
55411
55671
  }
55412
55672
  function getDbPath() {
55413
55673
  const _home = homeDir();
55414
- const _newDir = join(_home, ".hasna", "mementos");
55415
- const _oldDir = join(_home, ".mementos");
55416
- if (!existsSync(_newDir) && existsSync(_oldDir)) {
55417
- mkdirSync(join(_home, ".hasna"), { recursive: true });
55674
+ const _newDir = getDataRoot();
55675
+ const _oldDir = join3(_home, ".mementos");
55676
+ if (!existsSync2(_newDir) && existsSync2(_oldDir)) {
55677
+ mkdirSync(join3(_home, ".hasna"), { recursive: true });
55418
55678
  cpSync(_oldDir, _newDir, { recursive: true });
55419
55679
  }
55420
55680
  const envDbPath = process.env["HASNA_MEMENTOS_DB_PATH"] ?? process.env["MEMENTOS_DB_PATH"];
@@ -55422,13 +55682,13 @@ function getDbPath() {
55422
55682
  if (isInMemoryDb(envDbPath)) {
55423
55683
  return envDbPath;
55424
55684
  }
55425
- const resolved = resolve(envDbPath);
55685
+ const resolved = resolve2(envDbPath);
55426
55686
  ensureDir(dirname(resolved));
55427
55687
  return resolved;
55428
55688
  }
55429
55689
  const profile = getActiveProfile();
55430
55690
  if (profile) {
55431
- const profilePath = join(profilesDir(), `${profile}.db`);
55691
+ const profilePath = join3(profilesDir(), `${profile}.db`);
55432
55692
  ensureDir(dirname(profilePath));
55433
55693
  return profilePath;
55434
55694
  }
@@ -55436,21 +55696,21 @@ function getDbPath() {
55436
55696
  if (dbScope === "project") {
55437
55697
  const gitRoot = findGitRoot();
55438
55698
  if (gitRoot) {
55439
- const dbPath = join(gitRoot, ".mementos", "mementos.db");
55699
+ const dbPath = join3(gitRoot, ".mementos", "mementos.db");
55440
55700
  ensureDir(dirname(dbPath));
55441
55701
  return dbPath;
55442
55702
  }
55443
55703
  }
55444
- const found = findFileWalkingUp(join(".mementos", "mementos.db"));
55704
+ const found = findFileWalkingUp(join3(".mementos", "mementos.db"));
55445
55705
  if (found) {
55446
55706
  return found;
55447
55707
  }
55448
- const fallback = join(homeDir(), ".hasna", "mementos", "mementos.db");
55708
+ const fallback = join3(getDataRoot(), "mementos.db");
55449
55709
  ensureDir(dirname(fallback));
55450
55710
  return fallback;
55451
55711
  }
55452
55712
  function ensureDir(dir) {
55453
- if (!existsSync(dir)) {
55713
+ if (!existsSync2(dir)) {
55454
55714
  mkdirSync(dir, { recursive: true });
55455
55715
  }
55456
55716
  }
@@ -55527,6 +55787,8 @@ init_hooks();
55527
55787
  // src/db/webhook_hooks.ts
55528
55788
  init_database();
55529
55789
  init_api_mode();
55790
+ import { isIP } from "net";
55791
+ import { lookup as dnsLookup } from "dns/promises";
55530
55792
  function parseRow(row) {
55531
55793
  return {
55532
55794
  id: row["id"],
@@ -55543,7 +55805,154 @@ function parseRow(row) {
55543
55805
  failureCount: row["failure_count"]
55544
55806
  };
55545
55807
  }
55546
- function createWebhookHook(input, db) {
55808
+ function isBlockedIpv4(parts) {
55809
+ const a = parts[0];
55810
+ const b = parts[1];
55811
+ if (a === 0)
55812
+ return true;
55813
+ if (a === 127)
55814
+ return true;
55815
+ if (a === 169 && b === 254)
55816
+ return true;
55817
+ if (a === 10)
55818
+ return true;
55819
+ if (a === 172 && b >= 16 && b <= 31)
55820
+ return true;
55821
+ if (a === 192 && b === 168)
55822
+ return true;
55823
+ return false;
55824
+ }
55825
+ function isBlockedIpv6(bytes) {
55826
+ const mapped = bytes.slice(0, 10).every((b) => b === 0) && bytes[10] === 255 && bytes[11] === 255;
55827
+ if (mapped)
55828
+ return isBlockedIpv4(bytes.slice(12, 16));
55829
+ if (bytes.every((b) => b === 0))
55830
+ return true;
55831
+ if (bytes.slice(0, 15).every((b) => b === 0) && bytes[15] === 1)
55832
+ return true;
55833
+ if ((bytes[0] & 254) === 252)
55834
+ return true;
55835
+ if (bytes[0] === 254 && (bytes[1] & 192) === 128)
55836
+ return true;
55837
+ return false;
55838
+ }
55839
+ function quadToGroups(quad) {
55840
+ const nums = quad.split(".").map((p) => Number(p));
55841
+ const [a, b, c, d] = nums;
55842
+ const valid = [a, b, c, d].every((n) => n !== undefined && Number.isInteger(n) && n >= 0 && n <= 255);
55843
+ if (!valid)
55844
+ return null;
55845
+ return [a << 8 | b, c << 8 | d];
55846
+ }
55847
+ function parseIpv6Bytes(host) {
55848
+ const groups = host.split("::");
55849
+ if (groups.length > 2)
55850
+ return null;
55851
+ const headRaw = groups[0] ?? "";
55852
+ const tailRaw = groups[1] ?? "";
55853
+ const head = headRaw === "" ? [] : headRaw.split(":");
55854
+ const tail = tailRaw === "" ? [] : tailRaw.split(":");
55855
+ const headNums = [];
55856
+ for (const g of head) {
55857
+ if (!/^[0-9a-f]{1,4}$/i.test(g))
55858
+ return null;
55859
+ headNums.push(parseInt(g, 16));
55860
+ }
55861
+ const tailNums = [];
55862
+ for (const g of tail) {
55863
+ if (/^\d+\.\d+\.\d+\.\d+$/.test(g)) {
55864
+ const quads = quadToGroups(g);
55865
+ if (!quads)
55866
+ return null;
55867
+ tailNums.push(...quads);
55868
+ } else if (/^[0-9a-f]{1,4}$/i.test(g)) {
55869
+ tailNums.push(parseInt(g, 16));
55870
+ } else {
55871
+ return null;
55872
+ }
55873
+ }
55874
+ const hasCompression = groups.length === 2;
55875
+ if (!hasCompression && headNums.length !== 8)
55876
+ return null;
55877
+ if (hasCompression && headNums.length + tailNums.length >= 8)
55878
+ return null;
55879
+ const zeros = 8 - headNums.length - tailNums.length;
55880
+ const all = [...headNums, ...new Array(zeros).fill(0), ...tailNums];
55881
+ const bytes = [];
55882
+ for (const n of all) {
55883
+ bytes.push(n >> 8 & 255, n & 255);
55884
+ }
55885
+ return bytes;
55886
+ }
55887
+ var BLOCKED_TARGET_MESSAGE = "Invalid webhook handler URL \u2014 loopback, link-local, and private network targets are not allowed";
55888
+ function defaultResolveHost(hostname2) {
55889
+ return dnsLookup(hostname2, { all: true, verbatim: true });
55890
+ }
55891
+ function assertResolvedAddressPublic(address, url) {
55892
+ const version = isIP(address);
55893
+ if (version === 4) {
55894
+ if (isBlockedIpv4(address.split(".").map((p) => Number(p)))) {
55895
+ throw new Error(`${BLOCKED_TARGET_MESSAGE}: "${url}"`);
55896
+ }
55897
+ } else if (version === 6) {
55898
+ const bytes = parseIpv6Bytes(address);
55899
+ if (!bytes || isBlockedIpv6(bytes)) {
55900
+ throw new Error(`${BLOCKED_TARGET_MESSAGE}: "${url}"`);
55901
+ }
55902
+ } else {
55903
+ throw new Error(`${BLOCKED_TARGET_MESSAGE}: "${url}"`);
55904
+ }
55905
+ }
55906
+ async function validateWebhookHandlerUrl(url, opts) {
55907
+ const resolveHost = opts?.lookup ?? defaultResolveHost;
55908
+ let parsed;
55909
+ try {
55910
+ parsed = new URL(url);
55911
+ } catch {
55912
+ throw new Error(`Invalid webhook handler URL "${url}" \u2014 must be a valid http(s) URL`);
55913
+ }
55914
+ if (parsed.protocol !== "http:" && parsed.protocol !== "https:") {
55915
+ throw new Error(`Invalid webhook handler URL "${url}" \u2014 only http and https are allowed`);
55916
+ }
55917
+ if (parsed.username || parsed.password) {
55918
+ throw new Error(`Invalid webhook handler URL "${url}" \u2014 embedded credentials are not allowed`);
55919
+ }
55920
+ const host = parsed.hostname.replace(/^\[|\]$/g, "").toLowerCase();
55921
+ if (host === "localhost" || host.endsWith(".localhost")) {
55922
+ throw new Error(`${BLOCKED_TARGET_MESSAGE}: "${url}"`);
55923
+ }
55924
+ const version = isIP(host);
55925
+ if (version === 4 || version === 6) {
55926
+ if (version === 4) {
55927
+ if (isBlockedIpv4(host.split(".").map((p) => Number(p)))) {
55928
+ throw new Error(`${BLOCKED_TARGET_MESSAGE}: "${url}"`);
55929
+ }
55930
+ } else {
55931
+ const bytes = parseIpv6Bytes(host);
55932
+ if (!bytes || isBlockedIpv6(bytes)) {
55933
+ throw new Error(`${BLOCKED_TARGET_MESSAGE}: "${url}"`);
55934
+ }
55935
+ }
55936
+ return;
55937
+ }
55938
+ if (/^[0-9]+(\.[0-9]+)*$/.test(host) || /^0x[0-9a-f]+$/i.test(host) || host.includes("%")) {
55939
+ throw new Error(`${BLOCKED_TARGET_MESSAGE}: "${url}"`);
55940
+ }
55941
+ let addrs;
55942
+ try {
55943
+ addrs = await resolveHost(host);
55944
+ } catch {
55945
+ throw new Error(`${BLOCKED_TARGET_MESSAGE}: "${url}"`);
55946
+ }
55947
+ if (addrs.length === 0) {
55948
+ throw new Error(`${BLOCKED_TARGET_MESSAGE}: "${url}"`);
55949
+ }
55950
+ for (const { address } of addrs) {
55951
+ assertResolvedAddressPublic(address, url);
55952
+ }
55953
+ }
55954
+ async function createWebhookHook(input, db, opts) {
55955
+ await validateWebhookHandlerUrl(input.handlerUrl, opts);
55547
55956
  if (!db && isApiMode()) {
55548
55957
  const { data } = apiJson("POST", "/webhooks", {
55549
55958
  type: input.type,
@@ -55827,13 +56236,19 @@ hookRegistry.register({
55827
56236
  }
55828
56237
  });
55829
56238
  var _webhooksLoaded = false;
55830
- function loadWebhooksFromDb() {
56239
+ async function loadWebhooksFromDb() {
55831
56240
  if (_webhooksLoaded)
55832
56241
  return;
55833
56242
  _webhooksLoaded = true;
55834
56243
  try {
55835
56244
  const webhooks = listWebhookHooks({ enabled: true });
55836
56245
  for (const wh of webhooks) {
56246
+ try {
56247
+ await validateWebhookHandlerUrl(wh.handlerUrl);
56248
+ } catch (err) {
56249
+ console.error(`[hooks] Skipping webhook ${wh.id} (${wh.type}): ${err instanceof Error ? err.message : String(err)}`);
56250
+ continue;
56251
+ }
55837
56252
  hookRegistry.register({
55838
56253
  type: wh.type,
55839
56254
  blocking: wh.blocking,
@@ -55851,9 +56266,10 @@ function loadWebhooksFromDb() {
55851
56266
  console.error("[hooks] Failed to load webhooks from DB:", err);
55852
56267
  }
55853
56268
  }
55854
- function makeWebhookHandler(webhookId, url) {
56269
+ function makeWebhookHandler(webhookId, url, opts) {
55855
56270
  return async (context) => {
55856
56271
  try {
56272
+ await validateWebhookHandlerUrl(url, opts);
55857
56273
  const res = await fetch(url, {
55858
56274
  method: "POST",
55859
56275
  headers: { "Content-Type": "application/json" },
@@ -55866,9 +56282,9 @@ function makeWebhookHandler(webhookId, url) {
55866
56282
  }
55867
56283
  };
55868
56284
  }
55869
- function reloadWebhooks() {
56285
+ async function reloadWebhooks() {
55870
56286
  _webhooksLoaded = false;
55871
- loadWebhooksFromDb();
56287
+ await loadWebhooksFromDb();
55872
56288
  }
55873
56289
 
55874
56290
  // src/lib/session-queue.ts
@@ -57288,8 +57704,8 @@ function getMemoryHealth(filter = {}, db) {
57288
57704
  init_router();
57289
57705
 
57290
57706
  // src/server/helpers.ts
57291
- import { existsSync as existsSync4 } from "fs";
57292
- import { dirname as dirname3, extname, join as join5 } from "path";
57707
+ import { existsSync as existsSync5 } from "fs";
57708
+ import { dirname as dirname3, extname, join as join7 } from "path";
57293
57709
  import { fileURLToPath as fileURLToPath2 } from "url";
57294
57710
  var CORS_HEADERS = {
57295
57711
  "Access-Control-Allow-Origin": process.env["MEMENTOS_CORS_ORIGIN"] ?? "http://localhost:19428",
@@ -57297,6 +57713,43 @@ var CORS_HEADERS = {
57297
57713
  "Access-Control-Allow-Headers": "Content-Type, Authorization",
57298
57714
  "Access-Control-Max-Age": "86400"
57299
57715
  };
57716
+ var STATE_CHANGING_METHODS = new Set(["POST", "PATCH", "PUT", "DELETE"]);
57717
+ function isStateChangingMethod(method) {
57718
+ return STATE_CHANGING_METHODS.has(method);
57719
+ }
57720
+ function getAllowedOrigins() {
57721
+ const raw = process.env["MEMENTOS_CORS_ORIGIN"] ?? "http://localhost:19428";
57722
+ return raw.split(",").map((entry) => entry.trim()).filter(Boolean);
57723
+ }
57724
+ function hostOf(entry) {
57725
+ try {
57726
+ return new URL(entry).host;
57727
+ } catch {
57728
+ return entry;
57729
+ }
57730
+ }
57731
+ function checkOriginOrHost(req, method) {
57732
+ if (!isStateChangingMethod(method))
57733
+ return null;
57734
+ return checkWriteOriginOrHost(req);
57735
+ }
57736
+ function checkWriteOriginOrHost(req) {
57737
+ const allowlist = getAllowedOrigins();
57738
+ const allowedHosts = allowlist.map(hostOf);
57739
+ const origin = req.headers.get("origin");
57740
+ if (origin !== null) {
57741
+ if (allowlist.includes(origin))
57742
+ return null;
57743
+ return json({ error: "Forbidden. Origin is not allowed." }, 403);
57744
+ }
57745
+ const host = req.headers.get("host");
57746
+ if (host !== null) {
57747
+ if (allowedHosts.includes(host))
57748
+ return null;
57749
+ return json({ error: "Forbidden. Host is not allowed." }, 403);
57750
+ }
57751
+ return json({ error: "Forbidden. Missing Origin or Host header." }, 403);
57752
+ }
57300
57753
  var MIME_TYPES = {
57301
57754
  ".html": "text/html; charset=utf-8",
57302
57755
  ".js": "application/javascript",
@@ -57343,9 +57796,9 @@ async function readJson(req) {
57343
57796
  }
57344
57797
  }
57345
57798
  function getCorsHeaders(req) {
57346
- const allowedOrigin = process.env["MEMENTOS_CORS_ORIGIN"] ?? "http://localhost:19428";
57799
+ const allowlist = getAllowedOrigins();
57347
57800
  const origin = req?.headers.get("origin");
57348
- const finalOrigin = origin === allowedOrigin ? origin : allowedOrigin;
57801
+ const finalOrigin = typeof origin === "string" && allowlist.includes(origin) ? origin : allowlist[0] ?? "http://localhost:19428";
57349
57802
  return {
57350
57803
  "Access-Control-Allow-Origin": finalOrigin,
57351
57804
  "Access-Control-Allow-Methods": "GET, POST, PATCH, DELETE, OPTIONS",
@@ -57384,23 +57837,23 @@ function resolveDashboardDir() {
57384
57837
  const candidates = [];
57385
57838
  try {
57386
57839
  const scriptDir = dirname3(fileURLToPath2(import.meta.url));
57387
- candidates.push(join5(scriptDir, "..", "dashboard", "dist"));
57388
- candidates.push(join5(scriptDir, "..", "..", "dashboard", "dist"));
57840
+ candidates.push(join7(scriptDir, "..", "dashboard", "dist"));
57841
+ candidates.push(join7(scriptDir, "..", "..", "dashboard", "dist"));
57389
57842
  } catch {}
57390
57843
  if (process.argv[1]) {
57391
57844
  const mainDir = dirname3(process.argv[1]);
57392
- candidates.push(join5(mainDir, "..", "dashboard", "dist"));
57393
- candidates.push(join5(mainDir, "..", "..", "dashboard", "dist"));
57845
+ candidates.push(join7(mainDir, "..", "dashboard", "dist"));
57846
+ candidates.push(join7(mainDir, "..", "..", "dashboard", "dist"));
57394
57847
  }
57395
- candidates.push(join5(process.cwd(), "dashboard", "dist"));
57848
+ candidates.push(join7(process.cwd(), "dashboard", "dist"));
57396
57849
  for (const c of candidates) {
57397
- if (existsSync4(c))
57850
+ if (existsSync5(c))
57398
57851
  return c;
57399
57852
  }
57400
- return join5(process.cwd(), "dashboard", "dist");
57853
+ return join7(process.cwd(), "dashboard", "dist");
57401
57854
  }
57402
57855
  function serveStaticFile(filePath) {
57403
- if (!existsSync4(filePath))
57856
+ if (!existsSync5(filePath))
57404
57857
  return null;
57405
57858
  const ct = MIME_TYPES[extname(filePath)] || "application/octet-stream";
57406
57859
  return new Response(Bun.file(filePath), {
@@ -57472,6 +57925,9 @@ function getApiKeyVerifier() {
57472
57925
  async function checkApiKey(req, method, path, requiredScopes) {
57473
57926
  const verifier = getApiKeyVerifier();
57474
57927
  if (!verifier) {
57928
+ if (isStateChangingMethod(method) && !unauthenticatedWritesAllowed()) {
57929
+ return json({ error: "Unauthorized. No API key is configured; state-changing requests are refused." }, 401);
57930
+ }
57475
57931
  return authenticateRequest(req);
57476
57932
  }
57477
57933
  if (_schemaReady)
@@ -57481,6 +57937,10 @@ async function checkApiKey(req, method, path, requiredScopes) {
57481
57937
  return null;
57482
57938
  return json({ error: decision.message, reason: decision.reason }, decision.status);
57483
57939
  }
57940
+ function unauthenticatedWritesAllowed() {
57941
+ const raw = process.env["MEMENTOS_ALLOW_UNAUTHENTICATED_WRITES"]?.trim().toLowerCase();
57942
+ return raw === "1" || raw === "true" || raw === "yes";
57943
+ }
57484
57944
 
57485
57945
  // src/server/routes/memories-crud.ts
57486
57946
  init_memories();
@@ -57629,10 +58089,16 @@ addRoute("POST", "/api/memories", async (req) => {
57629
58089
  if (e instanceof DuplicateMemoryError) {
57630
58090
  return errorResponse(e.message, 409);
57631
58091
  }
58092
+ if (e instanceof MemoryConflictError) {
58093
+ return errorResponse(e.message, 409);
58094
+ }
57632
58095
  throw e;
57633
58096
  }
57634
58097
  });
57635
- addRoute("GET", "/api/memories/:id", (_req, _url, params) => {
58098
+ addRoute("GET", "/api/memories/:id", (req, _url, params) => {
58099
+ const gate = checkWriteOriginOrHost(req);
58100
+ if (gate)
58101
+ return gate;
57636
58102
  const memory = getMemory(params["id"]);
57637
58103
  if (!memory) {
57638
58104
  return errorResponse("Memory not found", 404);
@@ -57676,6 +58142,9 @@ addRoute("PATCH", "/api/memories/:id", async (req, _url, params) => {
57676
58142
  actual: e.actual
57677
58143
  });
57678
58144
  }
58145
+ if (e instanceof MemoryConflictError) {
58146
+ return errorResponse(e.message, 409);
58147
+ }
57679
58148
  throw e;
57680
58149
  }
57681
58150
  });
@@ -58701,7 +59170,10 @@ addRoute("POST", "/api/maintenance/cleanup", () => {
58701
59170
  const result = runCleanup(loadConfig());
58702
59171
  return json(result);
58703
59172
  });
58704
- addRoute("GET", "/api/inject", (_req, url) => {
59173
+ addRoute("GET", "/api/inject", (req, url) => {
59174
+ const gate = checkWriteOriginOrHost(req);
59175
+ if (gate)
59176
+ return gate;
58705
59177
  const q = getSearchParams(url);
58706
59178
  const maxTokens = q["max_tokens"] ? parseInt(q["max_tokens"], 10) : 500;
58707
59179
  const minImportance = 3;
@@ -58809,13 +59281,13 @@ import { createHash } from "crypto";
58809
59281
 
58810
59282
  // src/lib/package-version.ts
58811
59283
  import { readFileSync as readFileSync3 } from "fs";
58812
- import { dirname as dirname4, join as join6 } from "path";
59284
+ import { dirname as dirname4, join as join8 } from "path";
58813
59285
  import { fileURLToPath as fileURLToPath3 } from "url";
58814
59286
  function getMementosPackageVersion() {
58815
59287
  const here = dirname4(fileURLToPath3(import.meta.url));
58816
59288
  for (const candidate of [
58817
- join6(here, "..", "..", "package.json"),
58818
- join6(here, "..", "package.json")
59289
+ join8(here, "..", "..", "package.json"),
59290
+ join8(here, "..", "package.json")
58819
59291
  ]) {
58820
59292
  try {
58821
59293
  const parsed = JSON.parse(readFileSync3(candidate, "utf8"));
@@ -60579,7 +61051,7 @@ function getProjectUpdateReceipt(id, receiptId, identity = projectUpdateAuthorit
60579
61051
 
60580
61052
  // src/project-registration/authority.ts
60581
61053
  import { createHash as createHash3 } from "crypto";
60582
- import { resolve as resolve3 } from "path";
61054
+ import { resolve as resolve4 } from "path";
60583
61055
 
60584
61056
  // src/project-registration/project-references.ts
60585
61057
  var MEMENTOS_PROJECT_REFERENCE_SURFACES = [
@@ -60756,7 +61228,7 @@ function ownedPath(target) {
60756
61228
  }
60757
61229
  const path = target.withOwnedPath((value) => value);
60758
61230
  requireString(path, "target path", { max: 4096 });
60759
- if (path !== resolve3(path)) {
61231
+ if (path !== resolve4(path)) {
60760
61232
  throw new MementosProjectRegistrationError("MEMENTOS_PROJECT_REGISTRATION_INVALID_INPUT", "target path must already be canonical and absolute");
60761
61233
  }
60762
61234
  return path;
@@ -62617,17 +63089,21 @@ function registerSystemHookRoutes() {
62617
63089
  if (!body.type || !body.handler_url) {
62618
63090
  return errorResponse("type and handler_url are required", 400);
62619
63091
  }
62620
- const wh = createWebhookHook({
62621
- type: body.type,
62622
- handlerUrl: body.handler_url,
62623
- priority: body.priority,
62624
- blocking: body.blocking,
62625
- agentId: body.agent_id,
62626
- projectId: body.project_id,
62627
- description: body.description
62628
- });
62629
- reloadWebhooks();
62630
- return json(wh, 201);
63092
+ try {
63093
+ const wh = await createWebhookHook({
63094
+ type: body.type,
63095
+ handlerUrl: body.handler_url,
63096
+ priority: body.priority,
63097
+ blocking: body.blocking,
63098
+ agentId: body.agent_id,
63099
+ projectId: body.project_id,
63100
+ description: body.description
63101
+ });
63102
+ await reloadWebhooks();
63103
+ return json(wh, 201);
63104
+ } catch (err) {
63105
+ return errorResponse(err instanceof Error ? err.message : String(err), 400);
63106
+ }
62631
63107
  });
62632
63108
  addRoute("GET", "/api/webhooks/:id", (_req, _url, params) => {
62633
63109
  const wh = getWebhookHook(params["id"]);
@@ -62644,7 +63120,7 @@ function registerSystemHookRoutes() {
62644
63120
  });
62645
63121
  if (!updated)
62646
63122
  return errorResponse("Webhook not found", 404);
62647
- reloadWebhooks();
63123
+ await reloadWebhooks();
62648
63124
  return json(updated);
62649
63125
  });
62650
63126
  addRoute("DELETE", "/api/webhooks/:id", (_req, _url, params) => {
@@ -63602,13 +64078,13 @@ function registerSystemSynthesisRoutes() {
63602
64078
  return json({ error: e instanceof Error ? e.message : String(e) }, 500);
63603
64079
  }
63604
64080
  });
63605
- addRoute("GET", "/api/profile/synthesize", async (_req, url) => {
63606
- const q = getSearchParams(url);
64081
+ addRoute("POST", "/api/profile/synthesize", async (req) => {
64082
+ const body = await readJson(req) ?? {};
63607
64083
  try {
63608
64084
  const result = await synthesizeProfile({
63609
- project_id: q["project_id"] || undefined,
63610
- agent_id: q["agent_id"] || undefined,
63611
- force_refresh: q["force_refresh"] === "true"
64085
+ project_id: body["project_id"],
64086
+ agent_id: body["agent_id"],
64087
+ force_refresh: body["force_refresh"] === true
63612
64088
  });
63613
64089
  if (!result) {
63614
64090
  return json({ profile: null, message: "No preference/fact memories found to synthesize" });
@@ -64668,7 +65144,7 @@ async function resolveAISDKModel(provider, model) {
64668
65144
  const key = process.env["ANTHROPIC_API_KEY"];
64669
65145
  if (!key)
64670
65146
  return null;
64671
- const mod = await Promise.resolve().then(() => (init_dist4(), exports_dist));
65147
+ const mod = await Promise.resolve().then(() => (init_dist5(), exports_dist));
64672
65148
  const anthropic2 = mod["anthropic"];
64673
65149
  return anthropic2 ? anthropic2(model) : null;
64674
65150
  }
@@ -64676,7 +65152,7 @@ async function resolveAISDKModel(provider, model) {
64676
65152
  const key = process.env["OPENAI_API_KEY"];
64677
65153
  if (!key)
64678
65154
  return null;
64679
- const mod = await Promise.resolve().then(() => (init_dist5(), exports_dist2));
65155
+ const mod = await Promise.resolve().then(() => (init_dist6(), exports_dist2));
64680
65156
  const openai2 = mod["openai"];
64681
65157
  return openai2 ? openai2(model) : null;
64682
65158
  }
@@ -64685,7 +65161,7 @@ async function resolveAISDKModel(provider, model) {
64685
65161
  if (!apiKey)
64686
65162
  return null;
64687
65163
  const baseURL = provider === "cerebras" ? "https://api.cerebras.ai/v1" : "https://api.x.ai/v1";
64688
- const mod = await Promise.resolve().then(() => (init_dist6(), exports_dist3));
65164
+ const mod = await Promise.resolve().then(() => (init_dist7(), exports_dist3));
64689
65165
  const createOpenAICompatible2 = mod["createOpenAICompatible"];
64690
65166
  if (!createOpenAICompatible2)
64691
65167
  return null;
@@ -64701,7 +65177,7 @@ function createAISDKReflectionCritic(options = {}) {
64701
65177
  if (!resolvedModel)
64702
65178
  return heuristicReflectionCritic(trajectory);
64703
65179
  try {
64704
- const ai = await Promise.resolve().then(() => (init_dist8(), exports_dist4));
65180
+ const ai = await Promise.resolve().then(() => (init_dist9(), exports_dist4));
64705
65181
  const generateObject2 = ai["generateObject"];
64706
65182
  if (!generateObject2)
64707
65183
  return heuristicReflectionCritic(trajectory);
@@ -64967,18 +65443,18 @@ function pkgVersion() {
64967
65443
  }
64968
65444
  async function findFreePort(start) {
64969
65445
  const net = await import("net");
64970
- return new Promise((resolve6) => {
65446
+ return new Promise((resolve7) => {
64971
65447
  const server = net.createServer();
64972
65448
  server.unref();
64973
65449
  server.on("error", () => {
64974
- resolve6(findFreePort(start + 1));
65450
+ resolve7(findFreePort(start + 1));
64975
65451
  });
64976
65452
  server.listen(start, () => {
64977
65453
  const address = server.address();
64978
65454
  if (address && typeof address === "object") {
64979
- server.close(() => resolve6(address.port));
65455
+ server.close(() => resolve7(address.port));
64980
65456
  } else {
64981
- resolve6(start);
65457
+ resolve7(start);
64982
65458
  }
64983
65459
  });
64984
65460
  });
@@ -65060,12 +65536,14 @@ function startServer(port) {
65060
65536
  const { pathname } = url2;
65061
65537
  if (req.method === "OPTIONS") {
65062
65538
  const origin = req.headers.get("origin");
65063
- const allowedOrigin = process.env["MEMENTOS_CORS_ORIGIN"] ?? "http://localhost:19428";
65064
- if (origin && origin !== allowedOrigin) {
65539
+ if (origin && !getAllowedOrigins().includes(origin)) {
65065
65540
  return new Response(null, { status: 403 });
65066
65541
  }
65067
65542
  return new Response(null, { status: 204, headers: getCorsHeaders(req) });
65068
65543
  }
65544
+ const originGate = checkOriginOrHost(req, req.method);
65545
+ if (originGate)
65546
+ return originGate;
65069
65547
  const backend = getStorageBackend();
65070
65548
  if (pathname === "/version" || pathname === "/api/version" || pathname === "/v1/version") {
65071
65549
  return json({ status: "ok", version: pkgVersion(), backend });
@@ -65149,17 +65627,17 @@ function startServer(port) {
65149
65627
  return errorResponse("Not found", 404);
65150
65628
  }
65151
65629
  const dashDir = resolveDashboardDir();
65152
- if (existsSync5(dashDir) && (req.method === "GET" || req.method === "HEAD")) {
65630
+ if (existsSync6(dashDir) && (req.method === "GET" || req.method === "HEAD")) {
65153
65631
  if (pathname !== "/") {
65154
- const resolvedDash = resolve5(dashDir) + sep;
65155
- const requestedPath = resolve5(join7(dashDir, pathname));
65632
+ const resolvedDash = resolve6(dashDir) + sep;
65633
+ const requestedPath = resolve6(join9(dashDir, pathname));
65156
65634
  if (requestedPath.startsWith(resolvedDash)) {
65157
65635
  const staticRes = serveStaticFile(requestedPath);
65158
65636
  if (staticRes)
65159
65637
  return staticRes;
65160
65638
  }
65161
65639
  }
65162
- const indexRes = serveStaticFile(join7(dashDir, "index.html"));
65640
+ const indexRes = serveStaticFile(join9(dashDir, "index.html"));
65163
65641
  if (indexRes)
65164
65642
  return indexRes;
65165
65643
  }