@agent-native/core 0.111.4 → 0.113.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (574) hide show
  1. package/corpus/README.md +4 -2
  2. package/corpus/core/CHANGELOG.md +34 -0
  3. package/corpus/core/docs/AGENTS.md +7 -0
  4. package/corpus/core/docs/content/integrations.mdx +63 -2
  5. package/corpus/core/docs/design/provider-integration-authority.md +117 -0
  6. package/corpus/core/package.json +8 -1
  7. package/corpus/core/scripts/materialize-source-corpus.mjs +9 -2
  8. package/corpus/core/src/cli/atomic-json-file.ts +324 -0
  9. package/corpus/core/src/cli/claude-code-participant.ts +515 -0
  10. package/corpus/core/src/cli/code-agent-executor.ts +35 -15
  11. package/corpus/core/src/cli/code-agent-runs.concurrent-worker.ts +33 -0
  12. package/corpus/core/src/cli/code-agent-runs.ts +70 -36
  13. package/corpus/core/src/cli/codex-cli-participant.ts +496 -0
  14. package/corpus/core/src/cli/multi-frontier-runs.ts +1952 -0
  15. package/corpus/core/src/client/chat/ChatHistoryList.tsx +7 -404
  16. package/corpus/core/src/coding-tools/index.ts +27 -8
  17. package/corpus/core/src/embeddings/index.ts +233 -0
  18. package/corpus/core/src/index.ts +2 -0
  19. package/corpus/core/src/integrations/index.ts +10 -0
  20. package/corpus/core/src/integrations/slack-oauth.ts +1 -0
  21. package/corpus/core/src/integrations/webhook-delivery.ts +55 -0
  22. package/corpus/core/src/notifications/channels.ts +4 -10
  23. package/corpus/core/src/provider-api/actions/custom-provider-registration.ts +197 -0
  24. package/corpus/core/src/provider-api/actions/delete-staged-dataset.ts +3 -42
  25. package/corpus/core/src/provider-api/actions/list-staged-datasets.ts +3 -45
  26. package/corpus/core/src/provider-api/actions/provider-api-audit.ts +88 -0
  27. package/corpus/core/src/provider-api/actions/provider-api.ts +460 -0
  28. package/corpus/core/src/provider-api/actions/query-staged-dataset.ts +3 -140
  29. package/corpus/core/src/provider-api/actions/staged-datasets.ts +359 -0
  30. package/corpus/core/src/provider-api/gong.ts +108 -0
  31. package/corpus/core/src/scripts/docs/source-search.ts +2 -1
  32. package/corpus/core/src/search/index.ts +413 -0
  33. package/corpus/core/src/server/google-oauth-credentials.ts +80 -3
  34. package/corpus/core/src/server/index.ts +6 -0
  35. package/corpus/core/src/styles/chat-history-list.css +1 -313
  36. package/corpus/core/src/templates/default/.agents/skills/actions/SKILL.md +32 -12
  37. package/corpus/core/src/templates/default/.agents/skills/agent-native-docs/SKILL.md +10 -0
  38. package/corpus/core/src/templates/default/.agents/skills/customizing-agent-native/SKILL.md +102 -0
  39. package/corpus/core/src/templates/default/.agents/skills/integration-webhooks/SKILL.md +323 -0
  40. package/corpus/core/src/templates/default/.agents/skills/onboarding/SKILL.md +56 -0
  41. package/corpus/core/src/templates/default/.agents/skills/secrets/SKILL.md +273 -0
  42. package/corpus/core/src/templates/default/.agents/skills/self-modifying-code/SKILL.md +11 -2
  43. package/corpus/core/src/templates/default/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
  44. package/corpus/core/src/templates/default/AGENTS.md +25 -18
  45. package/corpus/core/src/templates/headless/.agents/skills/actions/SKILL.md +512 -0
  46. package/corpus/core/src/templates/headless/.agents/skills/agent-native-docs/SKILL.md +10 -0
  47. package/corpus/core/src/templates/headless/.agents/skills/customizing-agent-native/SKILL.md +102 -0
  48. package/corpus/core/src/templates/headless/.agents/skills/integration-webhooks/SKILL.md +323 -0
  49. package/corpus/core/src/templates/headless/.agents/skills/secrets/SKILL.md +273 -0
  50. package/corpus/core/src/templates/headless/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
  51. package/corpus/core/src/templates/headless/AGENTS.md +7 -0
  52. package/corpus/core/src/templates/workspace-core/.agents/skills/actions/SKILL.md +32 -12
  53. package/corpus/core/src/templates/workspace-core/.agents/skills/agent-native-docs/SKILL.md +10 -0
  54. package/corpus/core/src/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +6 -0
  55. package/corpus/core/src/templates/workspace-core/.agents/skills/customizing-agent-native/SKILL.md +102 -0
  56. package/corpus/core/src/templates/workspace-core/.agents/skills/self-modifying-code/SKILL.md +11 -2
  57. package/corpus/core/src/templates/workspace-core/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
  58. package/corpus/core/src/templates/workspace-core/AGENTS.md +4 -0
  59. package/corpus/core/src/templates/workspace-root/AGENTS.md +4 -0
  60. package/corpus/templates/analytics/.agents/skills/actions/SKILL.md +32 -12
  61. package/corpus/templates/analytics/.agents/skills/customizing-agent-native/SKILL.md +102 -0
  62. package/corpus/templates/analytics/.agents/skills/self-modifying-code/SKILL.md +11 -2
  63. package/corpus/templates/analytics/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
  64. package/corpus/templates/analytics/actions/delete-staged-dataset.ts +3 -23
  65. package/corpus/templates/analytics/actions/list-staged-datasets.ts +3 -27
  66. package/corpus/templates/analytics/actions/provider-api-catalog.ts +16 -19
  67. package/corpus/templates/analytics/actions/provider-api-docs.ts +3 -5
  68. package/corpus/templates/analytics/actions/provider-api-request.ts +162 -185
  69. package/corpus/templates/analytics/actions/query-staged-dataset.ts +3 -47
  70. package/corpus/templates/analytics/app/components/layout/Sidebar.tsx +52 -161
  71. package/corpus/templates/assets/.agents/skills/actions/SKILL.md +32 -12
  72. package/corpus/templates/assets/.agents/skills/customizing-agent-native/SKILL.md +102 -0
  73. package/corpus/templates/assets/.agents/skills/self-modifying-code/SKILL.md +11 -2
  74. package/corpus/templates/assets/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
  75. package/corpus/templates/assets/app/components/layout/Sidebar.tsx +63 -160
  76. package/corpus/templates/brain/.agents/skills/actions/SKILL.md +32 -12
  77. package/corpus/templates/brain/.agents/skills/brain/RUNBOOK.md +48 -5
  78. package/corpus/templates/brain/.agents/skills/brain/SKILL.md +46 -14
  79. package/corpus/templates/brain/.agents/skills/customizing-agent-native/SKILL.md +102 -0
  80. package/corpus/templates/brain/.agents/skills/self-modifying-code/SKILL.md +11 -2
  81. package/corpus/templates/brain/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
  82. package/corpus/templates/brain/README.md +34 -3
  83. package/corpus/templates/brain/actions/_schemas.ts +13 -7
  84. package/corpus/templates/brain/actions/approve-proposal.ts +2 -0
  85. package/corpus/templates/brain/actions/claim-distillation.ts +24 -27
  86. package/corpus/templates/brain/actions/create-source.ts +1 -1
  87. package/corpus/templates/brain/actions/delete-staged-dataset.ts +3 -24
  88. package/corpus/templates/brain/actions/get-knowledge.ts +6 -2
  89. package/corpus/templates/brain/actions/get-pilot-report.ts +44 -8
  90. package/corpus/templates/brain/actions/import-capture.ts +21 -9
  91. package/corpus/templates/brain/actions/import-transcript.ts +42 -14
  92. package/corpus/templates/brain/actions/list-captures.ts +10 -1
  93. package/corpus/templates/brain/actions/list-distillation-queue.ts +39 -14
  94. package/corpus/templates/brain/actions/list-projects.ts +51 -0
  95. package/corpus/templates/brain/actions/list-proposals.ts +80 -4
  96. package/corpus/templates/brain/actions/list-sources.ts +17 -3
  97. package/corpus/templates/brain/actions/list-staged-datasets.ts +3 -28
  98. package/corpus/templates/brain/actions/manage-project.ts +118 -0
  99. package/corpus/templates/brain/actions/mark-capture-distilled.ts +68 -20
  100. package/corpus/templates/brain/actions/navigate.ts +1 -0
  101. package/corpus/templates/brain/actions/provider-api-catalog.ts +5 -11
  102. package/corpus/templates/brain/actions/provider-api-docs.ts +3 -5
  103. package/corpus/templates/brain/actions/provider-api-request.ts +3 -37
  104. package/corpus/templates/brain/actions/query-staged-dataset.ts +3 -48
  105. package/corpus/templates/brain/actions/reject-proposal.ts +6 -1
  106. package/corpus/templates/brain/actions/resanitize-captures.ts +159 -33
  107. package/corpus/templates/brain/actions/review-proposal.ts +2 -0
  108. package/corpus/templates/brain/actions/search-everything.ts +10 -1
  109. package/corpus/templates/brain/actions/search-knowledge.ts +1 -1
  110. package/corpus/templates/brain/actions/set-settings.ts +36 -1
  111. package/corpus/templates/brain/actions/update-proposal.ts +2 -0
  112. package/corpus/templates/brain/actions/update-source.ts +5 -1
  113. package/corpus/templates/brain/app/components/layout/Sidebar.tsx +48 -154
  114. package/corpus/templates/brain/app/hooks/use-distillation-bridge.ts +18 -9
  115. package/corpus/templates/brain/app/hooks/use-navigation-state.ts +3 -0
  116. package/corpus/templates/brain/app/i18n-data.ts +731 -2
  117. package/corpus/templates/brain/app/lib/brain.ts +88 -1
  118. package/corpus/templates/brain/app/lib/ingest-handoff.ts +35 -0
  119. package/corpus/templates/brain/app/routes/ops.tsx +47 -0
  120. package/corpus/templates/brain/app/routes/review.tsx +41 -2
  121. package/corpus/templates/brain/app/routes/search.tsx +33 -2
  122. package/corpus/templates/brain/app/routes/settings.tsx +158 -0
  123. package/corpus/templates/brain/app/routes/sources.tsx +31 -0
  124. package/corpus/templates/brain/changelog/2026-07-19-added-private-source-safe-semantic-search.md +6 -0
  125. package/corpus/templates/brain/changelog/2026-07-19-slack-backfills-can-now-join-configured-public-channels-befo.md +6 -0
  126. package/corpus/templates/brain/changelog/2026-07-19-slack-backfills-now-continue-across-the-configured-number-of.md +6 -0
  127. package/corpus/templates/brain/changelog/2026-07-19-slack-backfills-now-start-with-a-safe-four-week-window-and-r.md +6 -0
  128. package/corpus/templates/brain/jobs/process-ingest-queue.ts +270 -36
  129. package/corpus/templates/brain/package.json +1 -0
  130. package/corpus/templates/brain/server/db/index.ts +18 -0
  131. package/corpus/templates/brain/server/db/schema.ts +197 -1
  132. package/corpus/templates/brain/server/jobs/distillation-queue.ts +12 -5
  133. package/corpus/templates/brain/server/lib/audiences.ts +708 -0
  134. package/corpus/templates/brain/server/lib/brain-health.ts +251 -38
  135. package/corpus/templates/brain/server/lib/brain.ts +877 -50
  136. package/corpus/templates/brain/server/lib/capture-sanitization.ts +217 -53
  137. package/corpus/templates/brain/server/lib/connectors.ts +609 -72
  138. package/corpus/templates/brain/server/lib/demo.ts +17 -4
  139. package/corpus/templates/brain/server/lib/hybrid-search.ts +363 -0
  140. package/corpus/templates/brain/server/lib/ingest-queue.ts +104 -0
  141. package/corpus/templates/brain/server/lib/privacy-readiness.ts +24 -0
  142. package/corpus/templates/brain/server/lib/search-index-contracts.ts +72 -0
  143. package/corpus/templates/brain/server/lib/search-index.ts +714 -0
  144. package/corpus/templates/brain/server/lib/search.ts +120 -4
  145. package/corpus/templates/brain/server/lib/sensitivity-policy.ts +174 -0
  146. package/corpus/templates/brain/server/lib/slack-channel-membership.ts +44 -0
  147. package/corpus/templates/brain/server/lib/slack-events.ts +281 -0
  148. package/corpus/templates/brain/server/onboarding.ts +29 -0
  149. package/corpus/templates/brain/server/plugins/db.ts +204 -0
  150. package/corpus/templates/brain/server/register-secrets.ts +46 -0
  151. package/corpus/templates/brain/server/routes/api/_agent-native/brain/ingest.post.ts +36 -16
  152. package/corpus/templates/brain/server/routes/api/_agent-native/brain/slack-events.post.ts +28 -0
  153. package/corpus/templates/brain/shared/slack-source-config.ts +60 -0
  154. package/corpus/templates/brain/shared/types.ts +10 -0
  155. package/corpus/templates/calendar/.agents/skills/actions/SKILL.md +32 -12
  156. package/corpus/templates/calendar/.agents/skills/customizing-agent-native/SKILL.md +102 -0
  157. package/corpus/templates/calendar/.agents/skills/self-modifying-code/SKILL.md +11 -2
  158. package/corpus/templates/calendar/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
  159. package/corpus/templates/calendar/actions/delete-staged-dataset.ts +3 -24
  160. package/corpus/templates/calendar/actions/list-staged-datasets.ts +3 -28
  161. package/corpus/templates/calendar/actions/provider-api-catalog.ts +5 -11
  162. package/corpus/templates/calendar/actions/provider-api-docs.ts +3 -5
  163. package/corpus/templates/calendar/actions/provider-api-request.ts +3 -37
  164. package/corpus/templates/calendar/actions/query-staged-dataset.ts +3 -48
  165. package/corpus/templates/calendar/server/handlers/gong.ts +6 -61
  166. package/corpus/templates/calendar/server/handlers/google-auth.ts +10 -8
  167. package/corpus/templates/calendar/server/lib/google-calendar.ts +7 -45
  168. package/corpus/templates/chat/.agents/skills/actions/SKILL.md +32 -12
  169. package/corpus/templates/chat/.agents/skills/agent-native-docs/SKILL.md +10 -0
  170. package/corpus/templates/chat/.agents/skills/customizing-agent-native/SKILL.md +102 -0
  171. package/corpus/templates/chat/.agents/skills/self-modifying-code/SKILL.md +11 -2
  172. package/corpus/templates/chat/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
  173. package/corpus/templates/chat/AGENTS.md +5 -2
  174. package/corpus/templates/chat/app/components/layout/Sidebar.tsx +51 -157
  175. package/corpus/templates/clips/.agents/skills/actions/SKILL.md +32 -12
  176. package/corpus/templates/clips/.agents/skills/customizing-agent-native/SKILL.md +102 -0
  177. package/corpus/templates/clips/.agents/skills/self-modifying-code/SKILL.md +11 -2
  178. package/corpus/templates/clips/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
  179. package/corpus/templates/clips/AGENTS.md +11 -0
  180. package/corpus/templates/clips/actions/export-to-brain.ts +505 -171
  181. package/corpus/templates/clips/changelog/2026-07-19-ready-clips-transcripts-can-be-backfilled-to-brain-for-a-bou.md +6 -0
  182. package/corpus/templates/clips/server/lib/calendar-event-meetings.ts +1 -1
  183. package/corpus/templates/clips/server/lib/google-calendar-client.ts +12 -22
  184. package/corpus/templates/clips/server/lib/google-calendar-oauth.ts +9 -6
  185. package/corpus/templates/clips/server/lib/slack-oauth.ts +12 -47
  186. package/corpus/templates/clips/server/routes/_agent-native/google/auth-url.get.ts +2 -6
  187. package/corpus/templates/clips/server/routes/api/auth/google-calendar.get.ts +4 -4
  188. package/corpus/templates/content/.agents/skills/actions/SKILL.md +32 -12
  189. package/corpus/templates/content/.agents/skills/customizing-agent-native/SKILL.md +102 -0
  190. package/corpus/templates/content/.agents/skills/self-modifying-code/SKILL.md +11 -2
  191. package/corpus/templates/content/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
  192. package/corpus/templates/content/actions/delete-staged-dataset.ts +3 -24
  193. package/corpus/templates/content/actions/list-staged-datasets.ts +3 -28
  194. package/corpus/templates/content/actions/provider-api-catalog.ts +5 -11
  195. package/corpus/templates/content/actions/provider-api-docs.ts +3 -5
  196. package/corpus/templates/content/actions/provider-api-request.ts +3 -37
  197. package/corpus/templates/content/actions/query-staged-dataset.ts +3 -48
  198. package/corpus/templates/design/.agents/skills/actions/SKILL.md +32 -12
  199. package/corpus/templates/design/.agents/skills/customizing-agent-native/SKILL.md +102 -0
  200. package/corpus/templates/design/.agents/skills/self-modifying-code/SKILL.md +11 -2
  201. package/corpus/templates/design/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
  202. package/corpus/templates/design/actions/delete-staged-dataset.ts +4 -23
  203. package/corpus/templates/design/actions/list-staged-datasets.ts +4 -27
  204. package/corpus/templates/design/actions/provider-api-catalog.ts +15 -18
  205. package/corpus/templates/design/actions/provider-api-docs.ts +57 -48
  206. package/corpus/templates/design/actions/provider-api-request.ts +140 -164
  207. package/corpus/templates/design/actions/query-staged-dataset.ts +4 -47
  208. package/corpus/templates/dispatch/.agents/skills/actions/SKILL.md +32 -12
  209. package/corpus/templates/dispatch/.agents/skills/customizing-agent-native/SKILL.md +102 -0
  210. package/corpus/templates/dispatch/.agents/skills/self-modifying-code/SKILL.md +11 -2
  211. package/corpus/templates/dispatch/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
  212. package/corpus/templates/dispatch/actions/delete-staged-dataset.ts +4 -23
  213. package/corpus/templates/dispatch/actions/list-staged-datasets.ts +4 -30
  214. package/corpus/templates/dispatch/actions/provider-api-catalog.ts +15 -18
  215. package/corpus/templates/dispatch/actions/provider-api-docs.ts +57 -48
  216. package/corpus/templates/dispatch/actions/provider-api-request.ts +138 -163
  217. package/corpus/templates/dispatch/actions/query-staged-dataset.ts +4 -47
  218. package/corpus/templates/forms/.agents/skills/actions/SKILL.md +32 -12
  219. package/corpus/templates/forms/.agents/skills/customizing-agent-native/SKILL.md +102 -0
  220. package/corpus/templates/forms/.agents/skills/self-modifying-code/SKILL.md +11 -2
  221. package/corpus/templates/forms/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
  222. package/corpus/templates/forms/server/lib/integrations.ts +23 -22
  223. package/corpus/templates/macros/.agents/skills/customizing-agent-native/SKILL.md +102 -0
  224. package/corpus/templates/macros/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
  225. package/corpus/templates/mail/.agents/skills/actions/SKILL.md +32 -12
  226. package/corpus/templates/mail/.agents/skills/customizing-agent-native/SKILL.md +102 -0
  227. package/corpus/templates/mail/.agents/skills/self-modifying-code/SKILL.md +11 -2
  228. package/corpus/templates/mail/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
  229. package/corpus/templates/mail/actions/delete-staged-dataset.ts +4 -23
  230. package/corpus/templates/mail/actions/list-staged-datasets.ts +4 -27
  231. package/corpus/templates/mail/actions/provider-api-catalog.ts +15 -18
  232. package/corpus/templates/mail/actions/provider-api-docs.ts +57 -48
  233. package/corpus/templates/mail/actions/provider-api-request.ts +146 -173
  234. package/corpus/templates/mail/actions/query-staged-dataset.ts +4 -47
  235. package/corpus/templates/mail/server/handlers/gong.ts +6 -61
  236. package/corpus/templates/mail/server/lib/google-auth.ts +10 -13
  237. package/corpus/templates/plan/.agents/skills/actions/SKILL.md +32 -12
  238. package/corpus/templates/plan/.agents/skills/customizing-agent-native/SKILL.md +102 -0
  239. package/corpus/templates/plan/.agents/skills/self-modifying-code/SKILL.md +11 -2
  240. package/corpus/templates/plan/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
  241. package/corpus/templates/plan/app/components/layout/Sidebar.tsx +47 -156
  242. package/corpus/templates/slides/.agents/skills/actions/SKILL.md +32 -12
  243. package/corpus/templates/slides/.agents/skills/customizing-agent-native/SKILL.md +102 -0
  244. package/corpus/templates/slides/.agents/skills/self-modifying-code/SKILL.md +11 -2
  245. package/corpus/templates/slides/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
  246. package/corpus/templates/slides/actions/delete-staged-dataset.ts +4 -23
  247. package/corpus/templates/slides/actions/list-staged-datasets.ts +4 -27
  248. package/corpus/templates/slides/actions/provider-api-catalog.ts +15 -18
  249. package/corpus/templates/slides/actions/provider-api-docs.ts +57 -48
  250. package/corpus/templates/slides/actions/provider-api-request.ts +145 -172
  251. package/corpus/templates/slides/actions/query-staged-dataset.ts +4 -47
  252. package/corpus/templates/slides/server/lib/google-docs-oauth.ts +11 -36
  253. package/corpus/templates/tasks/.agents/skills/actions/SKILL.md +32 -12
  254. package/corpus/templates/tasks/.agents/skills/agent-native-docs/SKILL.md +10 -0
  255. package/corpus/templates/tasks/.agents/skills/customizing-agent-native/SKILL.md +102 -0
  256. package/corpus/templates/tasks/.agents/skills/self-modifying-code/SKILL.md +11 -2
  257. package/corpus/templates/tasks/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
  258. package/corpus/toolkit/CHANGELOG.md +125 -0
  259. package/corpus/toolkit/README.md +60 -0
  260. package/corpus/toolkit/export-snapshot.json +35 -0
  261. package/corpus/toolkit/migration-manifest.json +4 -0
  262. package/corpus/toolkit/package.json +281 -0
  263. package/corpus/toolkit/scripts/finalize-build.mjs +55 -0
  264. package/corpus/toolkit/src/app-shell/header-actions.tsx +84 -0
  265. package/corpus/toolkit/src/app-shell/index.ts +1 -0
  266. package/corpus/toolkit/src/chat-history/ChatHistoryList.tsx +469 -0
  267. package/corpus/toolkit/src/chat-history/index.ts +7 -0
  268. package/corpus/toolkit/src/chat-history.css +314 -0
  269. package/corpus/toolkit/src/collab-ui/AgentPresenceChip.tsx +69 -0
  270. package/corpus/toolkit/src/collab-ui/LiveCursorOverlay.tsx +241 -0
  271. package/corpus/toolkit/src/collab-ui/PresenceBar.tsx +346 -0
  272. package/corpus/toolkit/src/collab-ui/RecentEditHighlights.tsx +225 -0
  273. package/corpus/toolkit/src/collab-ui/RemoteSelectionRings.tsx +227 -0
  274. package/corpus/toolkit/src/collab-ui/agent-identity.ts +16 -0
  275. package/corpus/toolkit/src/collab-ui/index.ts +39 -0
  276. package/corpus/toolkit/src/collab-ui/lead-client.ts +32 -0
  277. package/corpus/toolkit/src/collab-ui/types.ts +96 -0
  278. package/corpus/toolkit/src/composer/AgentComposerFrame.tsx +59 -0
  279. package/corpus/toolkit/src/composer/ComposerPlusMenu.tsx +983 -0
  280. package/corpus/toolkit/src/composer/MentionPopover.tsx +412 -0
  281. package/corpus/toolkit/src/composer/PastedTextChip.tsx +150 -0
  282. package/corpus/toolkit/src/composer/PromptComposer.tsx +718 -0
  283. package/corpus/toolkit/src/composer/RealtimeVoiceMode.tsx +856 -0
  284. package/corpus/toolkit/src/composer/TiptapComposer.tsx +2936 -0
  285. package/corpus/toolkit/src/composer/VoiceButton.tsx +255 -0
  286. package/corpus/toolkit/src/composer/asset-picker-url.ts +80 -0
  287. package/corpus/toolkit/src/composer/attachment-accept.ts +71 -0
  288. package/corpus/toolkit/src/composer/draft-key.ts +7 -0
  289. package/corpus/toolkit/src/composer/extensions/FileReference.tsx +55 -0
  290. package/corpus/toolkit/src/composer/extensions/MentionReference.tsx +93 -0
  291. package/corpus/toolkit/src/composer/extensions/SkillReference.tsx +56 -0
  292. package/corpus/toolkit/src/composer/index.ts +79 -0
  293. package/corpus/toolkit/src/composer/pasted-text.ts +160 -0
  294. package/corpus/toolkit/src/composer/prompt-attachments.ts +93 -0
  295. package/corpus/toolkit/src/composer/realtime-voice-audio-level.ts +64 -0
  296. package/corpus/toolkit/src/composer/realtime-voice-transcript.ts +134 -0
  297. package/corpus/toolkit/src/composer/runtime-adapters.tsx +343 -0
  298. package/corpus/toolkit/src/composer/types.ts +66 -0
  299. package/corpus/toolkit/src/composer/use-file-search.ts +64 -0
  300. package/corpus/toolkit/src/composer/use-mention-search.ts +90 -0
  301. package/corpus/toolkit/src/composer/use-skills.ts +45 -0
  302. package/corpus/toolkit/src/composer/useRealtimeVoiceMode.tsx +2117 -0
  303. package/corpus/toolkit/src/composer/useVoiceDictation.ts +1191 -0
  304. package/corpus/toolkit/src/context-ui/ContextMeter.tsx +101 -0
  305. package/corpus/toolkit/src/context-ui/ContextSegmentRow.tsx +184 -0
  306. package/corpus/toolkit/src/context-ui/ContextTreemap.tsx +125 -0
  307. package/corpus/toolkit/src/context-ui/ContextXRayPanel.tsx +377 -0
  308. package/corpus/toolkit/src/context-ui/format.ts +42 -0
  309. package/corpus/toolkit/src/context-ui/index.ts +15 -0
  310. package/corpus/toolkit/src/context-ui/types.ts +43 -0
  311. package/corpus/toolkit/src/design-tweaks/index.ts +1 -0
  312. package/corpus/toolkit/src/design-tweaks/visual-style-controls.tsx +1084 -0
  313. package/corpus/toolkit/src/editor/BubbleToolbar.tsx +253 -0
  314. package/corpus/toolkit/src/editor/CodeBlockNode.tsx +254 -0
  315. package/corpus/toolkit/src/editor/DragHandle.ts +1437 -0
  316. package/corpus/toolkit/src/editor/ImageExtension.ts +306 -0
  317. package/corpus/toolkit/src/editor/RegistryBlockContext.tsx +107 -0
  318. package/corpus/toolkit/src/editor/RegistryBlockNode.tsx +652 -0
  319. package/corpus/toolkit/src/editor/RichMarkdownEditor.tsx +81 -0
  320. package/corpus/toolkit/src/editor/RunId.ts +61 -0
  321. package/corpus/toolkit/src/editor/SharedRichEditor.tsx +321 -0
  322. package/corpus/toolkit/src/editor/SlashCommandMenu.tsx +310 -0
  323. package/corpus/toolkit/src/editor/extensions.ts +402 -0
  324. package/corpus/toolkit/src/editor/gfmDoc.ts +92 -0
  325. package/corpus/toolkit/src/editor/index.ts +93 -0
  326. package/corpus/toolkit/src/editor/registrySlashCommands.ts +131 -0
  327. package/corpus/toolkit/src/editor/surgical-apply.ts +192 -0
  328. package/corpus/toolkit/src/editor/useCollabReconcile.ts +589 -0
  329. package/corpus/toolkit/src/editor.css +510 -0
  330. package/corpus/toolkit/src/hooks/index.ts +2 -0
  331. package/corpus/toolkit/src/hooks/use-mobile.tsx +21 -0
  332. package/corpus/toolkit/src/hooks/use-toast.ts +188 -0
  333. package/corpus/toolkit/src/index.ts +8 -0
  334. package/corpus/toolkit/src/onboarding/index.ts +1 -0
  335. package/corpus/toolkit/src/provider.tsx +47 -0
  336. package/corpus/toolkit/src/sharing/VisibilityBadge.tsx +37 -0
  337. package/corpus/toolkit/src/sharing/index.ts +4 -0
  338. package/corpus/toolkit/src/styles.css +21 -0
  339. package/corpus/toolkit/src/ui/accordion.tsx +56 -0
  340. package/corpus/toolkit/src/ui/alert-dialog.tsx +141 -0
  341. package/corpus/toolkit/src/ui/alert.tsx +59 -0
  342. package/corpus/toolkit/src/ui/aspect-ratio.tsx +5 -0
  343. package/corpus/toolkit/src/ui/avatar.tsx +48 -0
  344. package/corpus/toolkit/src/ui/badge.tsx +37 -0
  345. package/corpus/toolkit/src/ui/breadcrumb.tsx +115 -0
  346. package/corpus/toolkit/src/ui/button.tsx +78 -0
  347. package/corpus/toolkit/src/ui/calendar.tsx +214 -0
  348. package/corpus/toolkit/src/ui/card.tsx +86 -0
  349. package/corpus/toolkit/src/ui/carousel.tsx +260 -0
  350. package/corpus/toolkit/src/ui/chart.tsx +375 -0
  351. package/corpus/toolkit/src/ui/checkbox.tsx +28 -0
  352. package/corpus/toolkit/src/ui/collapsible.tsx +9 -0
  353. package/corpus/toolkit/src/ui/command.tsx +174 -0
  354. package/corpus/toolkit/src/ui/context-menu.tsx +202 -0
  355. package/corpus/toolkit/src/ui/date-picker.tsx +64 -0
  356. package/corpus/toolkit/src/ui/dialog.tsx +146 -0
  357. package/corpus/toolkit/src/ui/drawer.tsx +126 -0
  358. package/corpus/toolkit/src/ui/dropdown-menu.tsx +218 -0
  359. package/corpus/toolkit/src/ui/form.tsx +177 -0
  360. package/corpus/toolkit/src/ui/hover-card.tsx +27 -0
  361. package/corpus/toolkit/src/ui/index.ts +52 -0
  362. package/corpus/toolkit/src/ui/input-otp.tsx +69 -0
  363. package/corpus/toolkit/src/ui/input.tsx +22 -0
  364. package/corpus/toolkit/src/ui/label.tsx +24 -0
  365. package/corpus/toolkit/src/ui/logo.tsx +36 -0
  366. package/corpus/toolkit/src/ui/menubar.tsx +235 -0
  367. package/corpus/toolkit/src/ui/navigation-menu.tsx +128 -0
  368. package/corpus/toolkit/src/ui/pagination.tsx +121 -0
  369. package/corpus/toolkit/src/ui/popover.tsx +44 -0
  370. package/corpus/toolkit/src/ui/progress.tsx +26 -0
  371. package/corpus/toolkit/src/ui/radio-group.tsx +42 -0
  372. package/corpus/toolkit/src/ui/resizable.tsx +43 -0
  373. package/corpus/toolkit/src/ui/scroll-area.tsx +46 -0
  374. package/corpus/toolkit/src/ui/select.tsx +158 -0
  375. package/corpus/toolkit/src/ui/separator.tsx +29 -0
  376. package/corpus/toolkit/src/ui/sheet.tsx +160 -0
  377. package/corpus/toolkit/src/ui/sidebar.tsx +777 -0
  378. package/corpus/toolkit/src/ui/skeleton.tsx +18 -0
  379. package/corpus/toolkit/src/ui/slider.tsx +26 -0
  380. package/corpus/toolkit/src/ui/sonner.tsx +58 -0
  381. package/corpus/toolkit/src/ui/spinner.tsx +17 -0
  382. package/corpus/toolkit/src/ui/switch.tsx +27 -0
  383. package/corpus/toolkit/src/ui/table.tsx +117 -0
  384. package/corpus/toolkit/src/ui/tabs.tsx +53 -0
  385. package/corpus/toolkit/src/ui/textarea.tsx +23 -0
  386. package/corpus/toolkit/src/ui/toast.tsx +127 -0
  387. package/corpus/toolkit/src/ui/toaster.tsx +33 -0
  388. package/corpus/toolkit/src/ui/toggle-group.tsx +59 -0
  389. package/corpus/toolkit/src/ui/toggle.tsx +43 -0
  390. package/corpus/toolkit/src/ui/tooltip.tsx +53 -0
  391. package/corpus/toolkit/src/ui/use-toast.ts +3 -0
  392. package/corpus/toolkit/src/utils.ts +8 -0
  393. package/corpus/toolkit/tsconfig.json +23 -0
  394. package/dist/cli/atomic-json-file.d.ts +30 -0
  395. package/dist/cli/atomic-json-file.d.ts.map +1 -0
  396. package/dist/cli/atomic-json-file.js +240 -0
  397. package/dist/cli/atomic-json-file.js.map +1 -0
  398. package/dist/cli/claude-code-participant.d.ts +77 -0
  399. package/dist/cli/claude-code-participant.d.ts.map +1 -0
  400. package/dist/cli/claude-code-participant.js +355 -0
  401. package/dist/cli/claude-code-participant.js.map +1 -0
  402. package/dist/cli/code-agent-executor.d.ts +8 -9
  403. package/dist/cli/code-agent-executor.d.ts.map +1 -1
  404. package/dist/cli/code-agent-executor.js +27 -13
  405. package/dist/cli/code-agent-executor.js.map +1 -1
  406. package/dist/cli/code-agent-runs.concurrent-worker.d.ts +2 -0
  407. package/dist/cli/code-agent-runs.concurrent-worker.d.ts.map +1 -0
  408. package/dist/cli/code-agent-runs.concurrent-worker.js +32 -0
  409. package/dist/cli/code-agent-runs.concurrent-worker.js.map +1 -0
  410. package/dist/cli/code-agent-runs.d.ts +5 -0
  411. package/dist/cli/code-agent-runs.d.ts.map +1 -1
  412. package/dist/cli/code-agent-runs.js +51 -33
  413. package/dist/cli/code-agent-runs.js.map +1 -1
  414. package/dist/cli/codex-cli-participant.d.ts +77 -0
  415. package/dist/cli/codex-cli-participant.d.ts.map +1 -0
  416. package/dist/cli/codex-cli-participant.js +354 -0
  417. package/dist/cli/codex-cli-participant.js.map +1 -0
  418. package/dist/cli/multi-frontier-runs.d.ts +246 -0
  419. package/dist/cli/multi-frontier-runs.d.ts.map +1 -0
  420. package/dist/cli/multi-frontier-runs.js +1247 -0
  421. package/dist/cli/multi-frontier-runs.js.map +1 -0
  422. package/dist/client/chat/ChatHistoryList.d.ts +1 -87
  423. package/dist/client/chat/ChatHistoryList.d.ts.map +1 -1
  424. package/dist/client/chat/ChatHistoryList.js +1 -82
  425. package/dist/client/chat/ChatHistoryList.js.map +1 -1
  426. package/dist/coding-tools/index.d.ts +1 -0
  427. package/dist/coding-tools/index.d.ts.map +1 -1
  428. package/dist/coding-tools/index.js +25 -7
  429. package/dist/coding-tools/index.js.map +1 -1
  430. package/dist/collab/awareness.d.ts +2 -2
  431. package/dist/collab/awareness.d.ts.map +1 -1
  432. package/dist/embeddings/index.d.ts +24 -0
  433. package/dist/embeddings/index.d.ts.map +1 -0
  434. package/dist/embeddings/index.js +172 -0
  435. package/dist/embeddings/index.js.map +1 -0
  436. package/dist/index.d.ts +2 -0
  437. package/dist/index.d.ts.map +1 -1
  438. package/dist/index.js +2 -0
  439. package/dist/index.js.map +1 -1
  440. package/dist/integrations/index.d.ts +2 -1
  441. package/dist/integrations/index.d.ts.map +1 -1
  442. package/dist/integrations/index.js +2 -1
  443. package/dist/integrations/index.js.map +1 -1
  444. package/dist/integrations/slack-manifest.d.ts +1 -1
  445. package/dist/integrations/slack-oauth.d.ts +1 -1
  446. package/dist/integrations/slack-oauth.d.ts.map +1 -1
  447. package/dist/integrations/slack-oauth.js +1 -0
  448. package/dist/integrations/slack-oauth.js.map +1 -1
  449. package/dist/integrations/webhook-delivery.d.ts +23 -0
  450. package/dist/integrations/webhook-delivery.d.ts.map +1 -0
  451. package/dist/integrations/webhook-delivery.js +32 -0
  452. package/dist/integrations/webhook-delivery.js.map +1 -0
  453. package/dist/notifications/channels.d.ts.map +1 -1
  454. package/dist/notifications/channels.js +4 -9
  455. package/dist/notifications/channels.js.map +1 -1
  456. package/dist/notifications/routes.d.ts +3 -3
  457. package/dist/progress/routes.d.ts +1 -1
  458. package/dist/provider-api/actions/custom-provider-registration.d.ts +136 -0
  459. package/dist/provider-api/actions/custom-provider-registration.d.ts.map +1 -0
  460. package/dist/provider-api/actions/custom-provider-registration.js +154 -0
  461. package/dist/provider-api/actions/custom-provider-registration.js.map +1 -0
  462. package/dist/provider-api/actions/delete-staged-dataset.d.ts +1 -1
  463. package/dist/provider-api/actions/delete-staged-dataset.d.ts.map +1 -1
  464. package/dist/provider-api/actions/delete-staged-dataset.js +3 -34
  465. package/dist/provider-api/actions/delete-staged-dataset.js.map +1 -1
  466. package/dist/provider-api/actions/list-staged-datasets.d.ts +2 -3
  467. package/dist/provider-api/actions/list-staged-datasets.d.ts.map +1 -1
  468. package/dist/provider-api/actions/list-staged-datasets.js +3 -40
  469. package/dist/provider-api/actions/list-staged-datasets.js.map +1 -1
  470. package/dist/provider-api/actions/provider-api-audit.d.ts +7 -0
  471. package/dist/provider-api/actions/provider-api-audit.d.ts.map +1 -0
  472. package/dist/provider-api/actions/provider-api-audit.js +74 -0
  473. package/dist/provider-api/actions/provider-api-audit.js.map +1 -0
  474. package/dist/provider-api/actions/provider-api.d.ts +370 -0
  475. package/dist/provider-api/actions/provider-api.d.ts.map +1 -0
  476. package/dist/provider-api/actions/provider-api.js +280 -0
  477. package/dist/provider-api/actions/provider-api.js.map +1 -0
  478. package/dist/provider-api/actions/query-staged-dataset.d.ts +1 -1
  479. package/dist/provider-api/actions/query-staged-dataset.d.ts.map +1 -1
  480. package/dist/provider-api/actions/query-staged-dataset.js +3 -116
  481. package/dist/provider-api/actions/query-staged-dataset.js.map +1 -1
  482. package/dist/provider-api/actions/staged-datasets.d.ts +190 -0
  483. package/dist/provider-api/actions/staged-datasets.d.ts.map +1 -0
  484. package/dist/provider-api/actions/staged-datasets.js +210 -0
  485. package/dist/provider-api/actions/staged-datasets.js.map +1 -0
  486. package/dist/provider-api/gong.d.ts +44 -0
  487. package/dist/provider-api/gong.d.ts.map +1 -0
  488. package/dist/provider-api/gong.js +56 -0
  489. package/dist/provider-api/gong.js.map +1 -0
  490. package/dist/resources/handlers.d.ts +1 -1
  491. package/dist/scripts/docs/source-search.d.ts +2 -1
  492. package/dist/scripts/docs/source-search.d.ts.map +1 -1
  493. package/dist/scripts/docs/source-search.js +2 -1
  494. package/dist/scripts/docs/source-search.js.map +1 -1
  495. package/dist/search/index.d.ts +88 -0
  496. package/dist/search/index.d.ts.map +1 -0
  497. package/dist/search/index.js +267 -0
  498. package/dist/search/index.js.map +1 -0
  499. package/dist/server/agent-engine-api-key-route.d.ts +1 -1
  500. package/dist/server/google-oauth-credentials.d.ts +35 -0
  501. package/dist/server/google-oauth-credentials.d.ts.map +1 -1
  502. package/dist/server/google-oauth-credentials.js +48 -2
  503. package/dist/server/google-oauth-credentials.js.map +1 -1
  504. package/dist/server/index.d.ts +1 -1
  505. package/dist/server/index.d.ts.map +1 -1
  506. package/dist/server/index.js +1 -1
  507. package/dist/server/index.js.map +1 -1
  508. package/dist/styles/chat-history-list.css +1 -313
  509. package/dist/templates/chat/.agents/skills/actions/SKILL.md +32 -12
  510. package/dist/templates/chat/.agents/skills/agent-native-docs/SKILL.md +10 -0
  511. package/dist/templates/chat/.agents/skills/customizing-agent-native/SKILL.md +102 -0
  512. package/dist/templates/chat/.agents/skills/self-modifying-code/SKILL.md +11 -2
  513. package/dist/templates/chat/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
  514. package/dist/templates/chat/AGENTS.md +5 -2
  515. package/dist/templates/chat/app/components/layout/Sidebar.tsx +51 -157
  516. package/dist/templates/default/.agents/skills/actions/SKILL.md +32 -12
  517. package/dist/templates/default/.agents/skills/agent-native-docs/SKILL.md +10 -0
  518. package/dist/templates/default/.agents/skills/customizing-agent-native/SKILL.md +102 -0
  519. package/dist/templates/default/.agents/skills/integration-webhooks/SKILL.md +323 -0
  520. package/dist/templates/default/.agents/skills/onboarding/SKILL.md +56 -0
  521. package/dist/templates/default/.agents/skills/secrets/SKILL.md +273 -0
  522. package/dist/templates/default/.agents/skills/self-modifying-code/SKILL.md +11 -2
  523. package/dist/templates/default/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
  524. package/dist/templates/default/AGENTS.md +25 -18
  525. package/dist/templates/headless/.agents/skills/actions/SKILL.md +512 -0
  526. package/dist/templates/headless/.agents/skills/agent-native-docs/SKILL.md +10 -0
  527. package/dist/templates/headless/.agents/skills/customizing-agent-native/SKILL.md +102 -0
  528. package/dist/templates/headless/.agents/skills/integration-webhooks/SKILL.md +323 -0
  529. package/dist/templates/headless/.agents/skills/secrets/SKILL.md +273 -0
  530. package/dist/templates/headless/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
  531. package/dist/templates/headless/AGENTS.md +7 -0
  532. package/dist/templates/workspace-core/.agents/skills/actions/SKILL.md +32 -12
  533. package/dist/templates/workspace-core/.agents/skills/agent-native-docs/SKILL.md +10 -0
  534. package/dist/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +6 -0
  535. package/dist/templates/workspace-core/.agents/skills/customizing-agent-native/SKILL.md +102 -0
  536. package/dist/templates/workspace-core/.agents/skills/self-modifying-code/SKILL.md +11 -2
  537. package/dist/templates/workspace-core/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
  538. package/dist/templates/workspace-core/AGENTS.md +4 -0
  539. package/dist/templates/workspace-root/AGENTS.md +4 -0
  540. package/docs/AGENTS.md +7 -0
  541. package/docs/content/integrations.mdx +63 -2
  542. package/docs/design/provider-integration-authority.md +117 -0
  543. package/package.json +9 -2
  544. package/src/templates/chat/.agents/skills/actions/SKILL.md +32 -12
  545. package/src/templates/chat/.agents/skills/agent-native-docs/SKILL.md +10 -0
  546. package/src/templates/chat/.agents/skills/customizing-agent-native/SKILL.md +102 -0
  547. package/src/templates/chat/.agents/skills/self-modifying-code/SKILL.md +11 -2
  548. package/src/templates/chat/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
  549. package/src/templates/chat/AGENTS.md +5 -2
  550. package/src/templates/chat/app/components/layout/Sidebar.tsx +51 -157
  551. package/src/templates/default/.agents/skills/actions/SKILL.md +32 -12
  552. package/src/templates/default/.agents/skills/agent-native-docs/SKILL.md +10 -0
  553. package/src/templates/default/.agents/skills/customizing-agent-native/SKILL.md +102 -0
  554. package/src/templates/default/.agents/skills/integration-webhooks/SKILL.md +323 -0
  555. package/src/templates/default/.agents/skills/onboarding/SKILL.md +56 -0
  556. package/src/templates/default/.agents/skills/secrets/SKILL.md +273 -0
  557. package/src/templates/default/.agents/skills/self-modifying-code/SKILL.md +11 -2
  558. package/src/templates/default/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
  559. package/src/templates/default/AGENTS.md +25 -18
  560. package/src/templates/headless/.agents/skills/actions/SKILL.md +512 -0
  561. package/src/templates/headless/.agents/skills/agent-native-docs/SKILL.md +10 -0
  562. package/src/templates/headless/.agents/skills/customizing-agent-native/SKILL.md +102 -0
  563. package/src/templates/headless/.agents/skills/integration-webhooks/SKILL.md +323 -0
  564. package/src/templates/headless/.agents/skills/secrets/SKILL.md +273 -0
  565. package/src/templates/headless/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
  566. package/src/templates/headless/AGENTS.md +7 -0
  567. package/src/templates/workspace-core/.agents/skills/actions/SKILL.md +32 -12
  568. package/src/templates/workspace-core/.agents/skills/agent-native-docs/SKILL.md +10 -0
  569. package/src/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +6 -0
  570. package/src/templates/workspace-core/.agents/skills/customizing-agent-native/SKILL.md +102 -0
  571. package/src/templates/workspace-core/.agents/skills/self-modifying-code/SKILL.md +11 -2
  572. package/src/templates/workspace-core/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
  573. package/src/templates/workspace-core/AGENTS.md +4 -0
  574. package/src/templates/workspace-root/AGENTS.md +4 -0
@@ -0,0 +1,267 @@
1
+ import { isPostgres } from "../db/index.js";
2
+ export const DEFAULT_SEARCH_NAMESPACE = "creative_context";
3
+ export const PGVECTOR_REQUIRED_MESSAGE = "Vector search requires Postgres with the pgvector extension in the configured DATABASE_URL database.";
4
+ function pgVectorOptions(options) {
5
+ return typeof options === "boolean" ? { postgres: options } : (options ?? {});
6
+ }
7
+ export function searchNamespaceIdentifiers(namespace = DEFAULT_SEARCH_NAMESPACE, dimensions) {
8
+ if (!/^[a-z][a-z0-9_]{0,62}$/.test(namespace)) {
9
+ throw new Error("Search namespace must start with a lowercase letter and contain only lowercase letters, numbers, and underscores.");
10
+ }
11
+ const suffix = dimensions === undefined ? "" : `_${checkedDimensions(dimensions)}`;
12
+ return {
13
+ namespace,
14
+ ftsTable: `${namespace}_search_documents`,
15
+ ftsIndex: `${namespace}_search_documents_gin`,
16
+ ftsAudienceIndex: `${namespace}_search_documents_audience_gin`,
17
+ vectorTable: `${namespace}_vectors${suffix}`,
18
+ vectorIndex: `${namespace}_vectors${suffix}_hnsw`,
19
+ vectorAudienceIndex: `${namespace}_vectors${suffix}_audience_gin`,
20
+ };
21
+ }
22
+ function checkedDimensions(value) {
23
+ if (!Number.isInteger(value) || value < 1 || value > 16_000) {
24
+ throw new Error("Embedding dimensions must be an integer from 1 to 16000.");
25
+ }
26
+ return value;
27
+ }
28
+ function vectorLiteral(vector, dimensions) {
29
+ if (vector.length !== dimensions) {
30
+ throw new Error(`Embedding has ${vector.length} values; expected ${dimensions}.`);
31
+ }
32
+ for (const value of vector) {
33
+ if (!Number.isFinite(value)) {
34
+ throw new Error("Embedding vectors may contain only finite numbers.");
35
+ }
36
+ }
37
+ return `[${vector.join(",")}]`;
38
+ }
39
+ function audienceClause(audienceIds, column = "audience_ids") {
40
+ if (!audienceIds?.length)
41
+ return { sql: "", args: [] };
42
+ return {
43
+ sql: ` AND ${column} && ARRAY[${audienceIds.map(() => "?").join(", ")}]::TEXT[]`,
44
+ args: [...audienceIds],
45
+ };
46
+ }
47
+ export function assertPgVectorAvailable(postgres = isPostgres()) {
48
+ if (!postgres)
49
+ throw new Error(PGVECTOR_REQUIRED_MESSAGE);
50
+ }
51
+ export async function ensurePgVectorIndex(db, dimensions, options) {
52
+ const resolved = pgVectorOptions(options);
53
+ const names = searchNamespaceIdentifiers(resolved.namespace, dimensions);
54
+ assertPgVectorAvailable(resolved.postgres);
55
+ try {
56
+ await db.execute("CREATE EXTENSION IF NOT EXISTS vector");
57
+ await db.execute(`
58
+ CREATE TABLE IF NOT EXISTS ${names.vectorTable} (
59
+ vector_key TEXT PRIMARY KEY,
60
+ embedding_set_id TEXT NOT NULL,
61
+ audience_ids TEXT[] NOT NULL DEFAULT ARRAY[]::TEXT[],
62
+ embedding vector(${checkedDimensions(dimensions)}) NOT NULL,
63
+ updated_at TEXT NOT NULL
64
+ )
65
+ `);
66
+ await db.execute(`ALTER TABLE ${names.vectorTable} ADD COLUMN IF NOT EXISTS audience_ids TEXT[] NOT NULL DEFAULT ARRAY[]::TEXT[]`);
67
+ await db.execute(`CREATE INDEX IF NOT EXISTS ${names.vectorIndex} ON ${names.vectorTable} USING hnsw (embedding vector_cosine_ops)`);
68
+ await db.execute(`CREATE INDEX IF NOT EXISTS ${names.vectorAudienceIndex} ON ${names.vectorTable} USING GIN (audience_ids)`);
69
+ }
70
+ catch (error) {
71
+ throw new Error(PGVECTOR_REQUIRED_MESSAGE, { cause: error });
72
+ }
73
+ }
74
+ export async function upsertPgVector(db, input, options) {
75
+ const resolved = pgVectorOptions(options);
76
+ const names = searchNamespaceIdentifiers(resolved.namespace, input.dimensions);
77
+ assertPgVectorAvailable(resolved.postgres);
78
+ if (!resolved.indexInitialized) {
79
+ await ensurePgVectorIndex(db, input.dimensions, resolved);
80
+ }
81
+ await db.execute({
82
+ sql: `
83
+ INSERT INTO ${names.vectorTable} (vector_key, embedding_set_id, audience_ids, embedding, updated_at)
84
+ VALUES (?, ?, ARRAY[${(input.audienceIds ?? []).map(() => "?").join(", ")}]::TEXT[], ?::vector, ?)
85
+ ON CONFLICT (vector_key) DO UPDATE SET
86
+ embedding_set_id = EXCLUDED.embedding_set_id,
87
+ audience_ids = EXCLUDED.audience_ids,
88
+ embedding = EXCLUDED.embedding,
89
+ updated_at = EXCLUDED.updated_at
90
+ `,
91
+ args: [
92
+ input.vectorKey,
93
+ input.embeddingSetId,
94
+ ...(input.audienceIds ?? []),
95
+ vectorLiteral(input.vector, input.dimensions),
96
+ input.updatedAt ?? new Date().toISOString(),
97
+ ],
98
+ });
99
+ }
100
+ export async function deletePgVectors(db, input, postgres = isPostgres()) {
101
+ const names = searchNamespaceIdentifiers(input.namespace, input.dimensions);
102
+ assertPgVectorAvailable(postgres);
103
+ if (!input.vectorKeys.length)
104
+ return 0;
105
+ const result = await db.execute({
106
+ sql: `DELETE FROM ${names.vectorTable} WHERE vector_key IN (${input.vectorKeys.map(() => "?").join(", ")})`,
107
+ args: [...input.vectorKeys],
108
+ });
109
+ return result.rowsAffected;
110
+ }
111
+ export async function queryPgVectorIndex(db, input, postgres = isPostgres()) {
112
+ const names = searchNamespaceIdentifiers(input.namespace, input.dimensions);
113
+ assertPgVectorAvailable(postgres);
114
+ if (input.allowedVectorKeys?.length === 0 ||
115
+ input.allowedAudienceIds?.length === 0)
116
+ return [];
117
+ const limit = Math.max(1, Math.min(200, Math.floor(input.limit ?? 40)));
118
+ const literal = vectorLiteral(input.vector, input.dimensions);
119
+ const keySql = input.allowedVectorKeys?.length
120
+ ? ` AND vector_key IN (${input.allowedVectorKeys.map(() => "?").join(", ")})`
121
+ : "";
122
+ const audiences = audienceClause(input.allowedAudienceIds);
123
+ try {
124
+ await db.execute("SET hnsw.iterative_scan = strict_order");
125
+ }
126
+ catch { }
127
+ const result = await db.execute({
128
+ sql: `
129
+ SELECT vector_key, embedding_set_id, 1 - (embedding <=> ?::vector) AS score
130
+ FROM ${names.vectorTable}
131
+ WHERE embedding_set_id = ?${keySql}${audiences.sql}
132
+ ORDER BY embedding <=> ?::vector
133
+ LIMIT ?
134
+ `,
135
+ args: [
136
+ literal,
137
+ input.embeddingSetId,
138
+ ...(input.allowedVectorKeys ?? []),
139
+ ...audiences.args,
140
+ literal,
141
+ limit,
142
+ ],
143
+ });
144
+ return result.rows.map((row) => ({
145
+ vectorKey: String(row.vector_key),
146
+ embeddingSetId: String(row.embedding_set_id),
147
+ score: Number(row.score),
148
+ }));
149
+ }
150
+ export async function ensurePostgresFts(db, namespace = DEFAULT_SEARCH_NAMESPACE) {
151
+ const names = searchNamespaceIdentifiers(namespace);
152
+ if (!isPostgres())
153
+ return false;
154
+ await db.execute(`
155
+ CREATE TABLE IF NOT EXISTS ${names.ftsTable} (
156
+ chunk_id TEXT PRIMARY KEY,
157
+ item_version_id TEXT NOT NULL,
158
+ audience_ids TEXT[] NOT NULL DEFAULT ARRAY[]::TEXT[],
159
+ document TSVECTOR NOT NULL,
160
+ updated_at TEXT NOT NULL
161
+ )
162
+ `);
163
+ await db.execute(`ALTER TABLE ${names.ftsTable} ADD COLUMN IF NOT EXISTS audience_ids TEXT[] NOT NULL DEFAULT ARRAY[]::TEXT[]`);
164
+ await db.execute(`CREATE INDEX IF NOT EXISTS ${names.ftsIndex} ON ${names.ftsTable} USING GIN (document)`);
165
+ await db.execute(`CREATE INDEX IF NOT EXISTS ${names.ftsAudienceIndex} ON ${names.ftsTable} USING GIN (audience_ids)`);
166
+ return true;
167
+ }
168
+ export async function upsertPostgresFtsDocument(db, input) {
169
+ const namespace = input.namespace ?? DEFAULT_SEARCH_NAMESPACE;
170
+ if (!(await ensurePostgresFts(db, namespace)))
171
+ return false;
172
+ const names = searchNamespaceIdentifiers(namespace);
173
+ await db.execute({
174
+ sql: `
175
+ INSERT INTO ${names.ftsTable} (chunk_id, item_version_id, audience_ids, document, updated_at)
176
+ VALUES (?, ?, ARRAY[${(input.audienceIds ?? []).map(() => "?").join(", ")}]::TEXT[], setweight(to_tsvector('simple', ?), 'A') || setweight(to_tsvector('simple', ?), 'B') || setweight(to_tsvector('simple', ?), 'C'), ?)
177
+ ON CONFLICT (chunk_id) DO UPDATE SET item_version_id = EXCLUDED.item_version_id, audience_ids = EXCLUDED.audience_ids, document = EXCLUDED.document, updated_at = EXCLUDED.updated_at
178
+ `,
179
+ args: [
180
+ input.chunkId,
181
+ input.itemVersionId,
182
+ ...(input.audienceIds ?? []),
183
+ input.title,
184
+ input.summary ?? "",
185
+ input.body,
186
+ input.updatedAt ?? new Date().toISOString(),
187
+ ],
188
+ });
189
+ return true;
190
+ }
191
+ export async function queryPostgresFts(db, input) {
192
+ const namespace = input.namespace ?? DEFAULT_SEARCH_NAMESPACE;
193
+ const names = searchNamespaceIdentifiers(namespace);
194
+ if (!isPostgres() ||
195
+ input.allowedChunkIds?.length === 0 ||
196
+ input.allowedAudienceIds?.length === 0)
197
+ return [];
198
+ const keys = input.allowedChunkIds?.length
199
+ ? `chunk_id IN (${input.allowedChunkIds.map(() => "?").join(", ")}) AND`
200
+ : "";
201
+ const audiences = audienceClause(input.allowedAudienceIds);
202
+ const limit = Math.max(1, Math.min(200, Math.floor(input.limit ?? 40)));
203
+ try {
204
+ const result = await db.execute({
205
+ sql: `SELECT chunk_id, item_version_id, ts_rank_cd(document, websearch_to_tsquery('simple', ?)) AS score FROM ${names.ftsTable} WHERE ${keys} document @@ websearch_to_tsquery('simple', ?)${audiences.sql} ORDER BY score DESC, chunk_id ASC LIMIT ?`,
206
+ args: [
207
+ input.query,
208
+ ...(input.allowedChunkIds ?? []),
209
+ input.query,
210
+ ...audiences.args,
211
+ limit,
212
+ ],
213
+ });
214
+ return result.rows.map((row) => ({
215
+ chunkId: String(row.chunk_id),
216
+ itemVersionId: String(row.item_version_id),
217
+ score: Number(row.score),
218
+ }));
219
+ }
220
+ catch (error) {
221
+ // A read can race the first write for a tenant-specific namespace. Writers
222
+ // provision it; an absent lane simply contributes no candidates.
223
+ if (isMissingPostgresRelation(error))
224
+ return [];
225
+ throw error;
226
+ }
227
+ }
228
+ function isMissingPostgresRelation(error) {
229
+ if (!error || typeof error !== "object")
230
+ return false;
231
+ return error.code === "42P01";
232
+ }
233
+ export async function deletePostgresFtsDocuments(db, chunkIds, namespace = DEFAULT_SEARCH_NAMESPACE) {
234
+ const names = searchNamespaceIdentifiers(namespace);
235
+ if (!isPostgres() || !chunkIds.length)
236
+ return 0;
237
+ await ensurePostgresFts(db, namespace);
238
+ const result = await db.execute({
239
+ sql: `DELETE FROM ${names.ftsTable} WHERE chunk_id IN (${chunkIds.map(() => "?").join(", ")})`,
240
+ args: [...chunkIds],
241
+ });
242
+ return result.rowsAffected;
243
+ }
244
+ export function reciprocalRankFusion(lanes, options = {}) {
245
+ const rankConstant = Math.max(1, options.rankConstant ?? 60);
246
+ const fused = new Map();
247
+ for (const [lane, candidates] of Object.entries(lanes)) {
248
+ candidates.forEach((candidate, index) => {
249
+ const rank = index + 1;
250
+ const current = fused.get(candidate.key) ?? {
251
+ ...candidate,
252
+ score: 0,
253
+ laneRanks: {},
254
+ reasons: [],
255
+ };
256
+ current.score += 1 / (rankConstant + rank);
257
+ current.laneRanks[lane] = rank;
258
+ if (candidate.reason && !current.reasons.includes(candidate.reason))
259
+ current.reasons.push(candidate.reason);
260
+ fused.set(candidate.key, current);
261
+ });
262
+ }
263
+ return [...fused.values()]
264
+ .sort((a, b) => b.score - a.score || a.key.localeCompare(b.key))
265
+ .slice(0, Math.max(1, options.limit ?? 40));
266
+ }
267
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/search/index.ts"],"names":[],"mappings":"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","sourcesContent":["import type { DbExec } from \"../db/index.js\";\nimport { isPostgres } from \"../db/index.js\";\n\nexport const DEFAULT_SEARCH_NAMESPACE = \"creative_context\";\nexport const PGVECTOR_REQUIRED_MESSAGE =\n \"Vector search requires Postgres with the pgvector extension in the configured DATABASE_URL database.\";\n\nexport interface SearchNamespaceIdentifiers {\n namespace: string;\n ftsTable: string;\n ftsIndex: string;\n ftsAudienceIndex: string;\n vectorTable: string;\n vectorIndex: string;\n vectorAudienceIndex: string;\n}\n\nexport interface PgVectorHit {\n vectorKey: string;\n embeddingSetId: string;\n score: number;\n}\n\nexport interface PostgresFtsHit {\n chunkId: string;\n itemVersionId: string;\n score: number;\n}\n\nexport interface RankedCandidate<T> {\n key: string;\n value: T;\n score: number;\n reason?: string;\n}\n\nexport interface FusedCandidate<T> extends RankedCandidate<T> {\n laneRanks: Record<string, number>;\n reasons: string[];\n}\n\ntype PgVectorOptions =\n | boolean\n | {\n namespace?: string;\n postgres?: boolean;\n /** The caller has already provisioned this namespace and dimension. */\n indexInitialized?: boolean;\n };\n\nfunction pgVectorOptions(options: PgVectorOptions | undefined) {\n return typeof options === \"boolean\" ? { postgres: options } : (options ?? {});\n}\n\nexport function searchNamespaceIdentifiers(\n namespace = DEFAULT_SEARCH_NAMESPACE,\n dimensions?: number,\n): SearchNamespaceIdentifiers {\n if (!/^[a-z][a-z0-9_]{0,62}$/.test(namespace)) {\n throw new Error(\n \"Search namespace must start with a lowercase letter and contain only lowercase letters, numbers, and underscores.\",\n );\n }\n const suffix =\n dimensions === undefined ? \"\" : `_${checkedDimensions(dimensions)}`;\n return {\n namespace,\n ftsTable: `${namespace}_search_documents`,\n ftsIndex: `${namespace}_search_documents_gin`,\n ftsAudienceIndex: `${namespace}_search_documents_audience_gin`,\n vectorTable: `${namespace}_vectors${suffix}`,\n vectorIndex: `${namespace}_vectors${suffix}_hnsw`,\n vectorAudienceIndex: `${namespace}_vectors${suffix}_audience_gin`,\n };\n}\n\nfunction checkedDimensions(value: number): number {\n if (!Number.isInteger(value) || value < 1 || value > 16_000) {\n throw new Error(\"Embedding dimensions must be an integer from 1 to 16000.\");\n }\n return value;\n}\n\nfunction vectorLiteral(vector: readonly number[], dimensions: number): string {\n if (vector.length !== dimensions) {\n throw new Error(\n `Embedding has ${vector.length} values; expected ${dimensions}.`,\n );\n }\n for (const value of vector) {\n if (!Number.isFinite(value)) {\n throw new Error(\"Embedding vectors may contain only finite numbers.\");\n }\n }\n return `[${vector.join(\",\")}]`;\n}\n\nfunction audienceClause(\n audienceIds: readonly string[] | undefined,\n column = \"audience_ids\",\n): { sql: string; args: string[] } {\n if (!audienceIds?.length) return { sql: \"\", args: [] };\n return {\n sql: ` AND ${column} && ARRAY[${audienceIds.map(() => \"?\").join(\", \")}]::TEXT[]`,\n args: [...audienceIds],\n };\n}\n\nexport function assertPgVectorAvailable(postgres = isPostgres()): void {\n if (!postgres) throw new Error(PGVECTOR_REQUIRED_MESSAGE);\n}\n\nexport async function ensurePgVectorIndex(\n db: DbExec,\n dimensions: number,\n options?: PgVectorOptions,\n): Promise<void> {\n const resolved = pgVectorOptions(options);\n const names = searchNamespaceIdentifiers(resolved.namespace, dimensions);\n assertPgVectorAvailable(resolved.postgres);\n try {\n await db.execute(\"CREATE EXTENSION IF NOT EXISTS vector\");\n await db.execute(`\n CREATE TABLE IF NOT EXISTS ${names.vectorTable} (\n vector_key TEXT PRIMARY KEY,\n embedding_set_id TEXT NOT NULL,\n audience_ids TEXT[] NOT NULL DEFAULT ARRAY[]::TEXT[],\n embedding vector(${checkedDimensions(dimensions)}) NOT NULL,\n updated_at TEXT NOT NULL\n )\n `);\n await db.execute(\n `ALTER TABLE ${names.vectorTable} ADD COLUMN IF NOT EXISTS audience_ids TEXT[] NOT NULL DEFAULT ARRAY[]::TEXT[]`,\n );\n await db.execute(\n `CREATE INDEX IF NOT EXISTS ${names.vectorIndex} ON ${names.vectorTable} USING hnsw (embedding vector_cosine_ops)`,\n );\n await db.execute(\n `CREATE INDEX IF NOT EXISTS ${names.vectorAudienceIndex} ON ${names.vectorTable} USING GIN (audience_ids)`,\n );\n } catch (error) {\n throw new Error(PGVECTOR_REQUIRED_MESSAGE, { cause: error });\n }\n}\n\nexport async function upsertPgVector(\n db: DbExec,\n input: {\n vectorKey: string;\n embeddingSetId: string;\n dimensions: number;\n vector: readonly number[];\n audienceIds?: readonly string[];\n updatedAt?: string;\n },\n options?: PgVectorOptions,\n): Promise<void> {\n const resolved = pgVectorOptions(options);\n const names = searchNamespaceIdentifiers(\n resolved.namespace,\n input.dimensions,\n );\n assertPgVectorAvailable(resolved.postgres);\n if (!resolved.indexInitialized) {\n await ensurePgVectorIndex(db, input.dimensions, resolved);\n }\n await db.execute({\n sql: `\n INSERT INTO ${names.vectorTable} (vector_key, embedding_set_id, audience_ids, embedding, updated_at)\n VALUES (?, ?, ARRAY[${(input.audienceIds ?? []).map(() => \"?\").join(\", \")}]::TEXT[], ?::vector, ?)\n ON CONFLICT (vector_key) DO UPDATE SET\n embedding_set_id = EXCLUDED.embedding_set_id,\n audience_ids = EXCLUDED.audience_ids,\n embedding = EXCLUDED.embedding,\n updated_at = EXCLUDED.updated_at\n `,\n args: [\n input.vectorKey,\n input.embeddingSetId,\n ...(input.audienceIds ?? []),\n vectorLiteral(input.vector, input.dimensions),\n input.updatedAt ?? new Date().toISOString(),\n ],\n });\n}\n\nexport async function deletePgVectors(\n db: DbExec,\n input: {\n dimensions: number;\n vectorKeys: readonly string[];\n namespace?: string;\n },\n postgres = isPostgres(),\n): Promise<number> {\n const names = searchNamespaceIdentifiers(input.namespace, input.dimensions);\n assertPgVectorAvailable(postgres);\n if (!input.vectorKeys.length) return 0;\n const result = await db.execute({\n sql: `DELETE FROM ${names.vectorTable} WHERE vector_key IN (${input.vectorKeys.map(() => \"?\").join(\", \")})`,\n args: [...input.vectorKeys],\n });\n return result.rowsAffected;\n}\n\nexport async function queryPgVectorIndex(\n db: DbExec,\n input: {\n embeddingSetId: string;\n dimensions: number;\n vector: readonly number[];\n limit?: number;\n allowedVectorKeys?: readonly string[];\n allowedAudienceIds?: readonly string[];\n namespace?: string;\n },\n postgres = isPostgres(),\n): Promise<PgVectorHit[]> {\n const names = searchNamespaceIdentifiers(input.namespace, input.dimensions);\n assertPgVectorAvailable(postgres);\n if (\n input.allowedVectorKeys?.length === 0 ||\n input.allowedAudienceIds?.length === 0\n )\n return [];\n const limit = Math.max(1, Math.min(200, Math.floor(input.limit ?? 40)));\n const literal = vectorLiteral(input.vector, input.dimensions);\n const keySql = input.allowedVectorKeys?.length\n ? ` AND vector_key IN (${input.allowedVectorKeys.map(() => \"?\").join(\", \")})`\n : \"\";\n const audiences = audienceClause(input.allowedAudienceIds);\n try {\n await db.execute(\"SET hnsw.iterative_scan = strict_order\");\n } catch {}\n const result = await db.execute({\n sql: `\n SELECT vector_key, embedding_set_id, 1 - (embedding <=> ?::vector) AS score\n FROM ${names.vectorTable}\n WHERE embedding_set_id = ?${keySql}${audiences.sql}\n ORDER BY embedding <=> ?::vector\n LIMIT ?\n `,\n args: [\n literal,\n input.embeddingSetId,\n ...(input.allowedVectorKeys ?? []),\n ...audiences.args,\n literal,\n limit,\n ],\n });\n return result.rows.map((row) => ({\n vectorKey: String(row.vector_key),\n embeddingSetId: String(row.embedding_set_id),\n score: Number(row.score),\n }));\n}\n\nexport async function ensurePostgresFts(\n db: DbExec,\n namespace = DEFAULT_SEARCH_NAMESPACE,\n): Promise<boolean> {\n const names = searchNamespaceIdentifiers(namespace);\n if (!isPostgres()) return false;\n await db.execute(`\n CREATE TABLE IF NOT EXISTS ${names.ftsTable} (\n chunk_id TEXT PRIMARY KEY,\n item_version_id TEXT NOT NULL,\n audience_ids TEXT[] NOT NULL DEFAULT ARRAY[]::TEXT[],\n document TSVECTOR NOT NULL,\n updated_at TEXT NOT NULL\n )\n `);\n await db.execute(\n `ALTER TABLE ${names.ftsTable} ADD COLUMN IF NOT EXISTS audience_ids TEXT[] NOT NULL DEFAULT ARRAY[]::TEXT[]`,\n );\n await db.execute(\n `CREATE INDEX IF NOT EXISTS ${names.ftsIndex} ON ${names.ftsTable} USING GIN (document)`,\n );\n await db.execute(\n `CREATE INDEX IF NOT EXISTS ${names.ftsAudienceIndex} ON ${names.ftsTable} USING GIN (audience_ids)`,\n );\n return true;\n}\n\nexport async function upsertPostgresFtsDocument(\n db: DbExec,\n input: {\n chunkId: string;\n itemVersionId: string;\n title: string;\n summary?: string | null;\n body: string;\n audienceIds?: readonly string[];\n updatedAt?: string;\n namespace?: string;\n },\n): Promise<boolean> {\n const namespace = input.namespace ?? DEFAULT_SEARCH_NAMESPACE;\n if (!(await ensurePostgresFts(db, namespace))) return false;\n const names = searchNamespaceIdentifiers(namespace);\n await db.execute({\n sql: `\n INSERT INTO ${names.ftsTable} (chunk_id, item_version_id, audience_ids, document, updated_at)\n VALUES (?, ?, ARRAY[${(input.audienceIds ?? []).map(() => \"?\").join(\", \")}]::TEXT[], setweight(to_tsvector('simple', ?), 'A') || setweight(to_tsvector('simple', ?), 'B') || setweight(to_tsvector('simple', ?), 'C'), ?)\n ON CONFLICT (chunk_id) DO UPDATE SET item_version_id = EXCLUDED.item_version_id, audience_ids = EXCLUDED.audience_ids, document = EXCLUDED.document, updated_at = EXCLUDED.updated_at\n `,\n args: [\n input.chunkId,\n input.itemVersionId,\n ...(input.audienceIds ?? []),\n input.title,\n input.summary ?? \"\",\n input.body,\n input.updatedAt ?? new Date().toISOString(),\n ],\n });\n return true;\n}\n\nexport async function queryPostgresFts(\n db: DbExec,\n input: {\n query: string;\n allowedChunkIds?: readonly string[];\n allowedAudienceIds?: readonly string[];\n limit?: number;\n namespace?: string;\n },\n): Promise<PostgresFtsHit[]> {\n const namespace = input.namespace ?? DEFAULT_SEARCH_NAMESPACE;\n const names = searchNamespaceIdentifiers(namespace);\n if (\n !isPostgres() ||\n input.allowedChunkIds?.length === 0 ||\n input.allowedAudienceIds?.length === 0\n )\n return [];\n const keys = input.allowedChunkIds?.length\n ? `chunk_id IN (${input.allowedChunkIds.map(() => \"?\").join(\", \")}) AND`\n : \"\";\n const audiences = audienceClause(input.allowedAudienceIds);\n const limit = Math.max(1, Math.min(200, Math.floor(input.limit ?? 40)));\n try {\n const result = await db.execute({\n sql: `SELECT chunk_id, item_version_id, ts_rank_cd(document, websearch_to_tsquery('simple', ?)) AS score FROM ${names.ftsTable} WHERE ${keys} document @@ websearch_to_tsquery('simple', ?)${audiences.sql} ORDER BY score DESC, chunk_id ASC LIMIT ?`,\n args: [\n input.query,\n ...(input.allowedChunkIds ?? []),\n input.query,\n ...audiences.args,\n limit,\n ],\n });\n return result.rows.map((row) => ({\n chunkId: String(row.chunk_id),\n itemVersionId: String(row.item_version_id),\n score: Number(row.score),\n }));\n } catch (error) {\n // A read can race the first write for a tenant-specific namespace. Writers\n // provision it; an absent lane simply contributes no candidates.\n if (isMissingPostgresRelation(error)) return [];\n throw error;\n }\n}\n\nfunction isMissingPostgresRelation(error: unknown): boolean {\n if (!error || typeof error !== \"object\") return false;\n return (error as { code?: unknown }).code === \"42P01\";\n}\n\nexport async function deletePostgresFtsDocuments(\n db: DbExec,\n chunkIds: readonly string[],\n namespace = DEFAULT_SEARCH_NAMESPACE,\n): Promise<number> {\n const names = searchNamespaceIdentifiers(namespace);\n if (!isPostgres() || !chunkIds.length) return 0;\n await ensurePostgresFts(db, namespace);\n const result = await db.execute({\n sql: `DELETE FROM ${names.ftsTable} WHERE chunk_id IN (${chunkIds.map(() => \"?\").join(\", \")})`,\n args: [...chunkIds],\n });\n return result.rowsAffected;\n}\n\nexport function reciprocalRankFusion<T>(\n lanes: Readonly<Record<string, readonly RankedCandidate<T>[]>>,\n options: { rankConstant?: number; limit?: number } = {},\n): FusedCandidate<T>[] {\n const rankConstant = Math.max(1, options.rankConstant ?? 60);\n const fused = new Map<string, FusedCandidate<T>>();\n for (const [lane, candidates] of Object.entries(lanes)) {\n candidates.forEach((candidate, index) => {\n const rank = index + 1;\n const current = fused.get(candidate.key) ?? {\n ...candidate,\n score: 0,\n laneRanks: {},\n reasons: [],\n };\n current.score += 1 / (rankConstant + rank);\n current.laneRanks[lane] = rank;\n if (candidate.reason && !current.reasons.includes(candidate.reason))\n current.reasons.push(candidate.reason);\n fused.set(candidate.key, current);\n });\n }\n return [...fused.values()]\n .sort((a, b) => b.score - a.score || a.key.localeCompare(b.key))\n .slice(0, Math.max(1, options.limit ?? 40));\n}\n"]}
@@ -27,11 +27,11 @@ export declare function resolveAgentEngineApiKeyWriteTarget(event: H3Event, scop
27
27
  export declare function createAgentEngineApiKeyHandler(): import("h3").EventHandlerWithFetch<import("h3").EventHandlerRequest, Promise<{
28
28
  error: any;
29
29
  } | {
30
- error?: undefined;
31
30
  ok: boolean;
32
31
  key: string;
33
32
  baseUrlKey?: string;
34
33
  scope: AgentEngineApiKeyScope;
34
+ error?: undefined;
35
35
  }>>;
36
36
  export {};
37
37
  //# sourceMappingURL=agent-engine-api-key-route.d.ts.map
@@ -2,6 +2,41 @@ export interface GoogleOAuthCredentials {
2
2
  clientId: string;
3
3
  clientSecret: string;
4
4
  }
5
+ export interface GoogleOAuthCredentialKeyPair {
6
+ clientIdKey: string;
7
+ clientSecretKey: string;
8
+ }
9
+ export type ReadGoogleOAuthCredential = (key: string) => string | null | undefined | Promise<string | null | undefined>;
10
+ export declare const GOOGLE_PRIMARY_PROVIDER_CREDENTIAL_KEYS: {
11
+ readonly clientIdKey: "GOOGLE_CLIENT_ID";
12
+ readonly clientSecretKey: "GOOGLE_CLIENT_SECRET";
13
+ };
14
+ export declare const GOOGLE_LEGACY_PROVIDER_CREDENTIAL_KEYS: {
15
+ readonly clientIdKey: "GOOGLE_LEGACY_CLIENT_ID";
16
+ readonly clientSecretKey: "GOOGLE_LEGACY_CLIENT_SECRET";
17
+ };
18
+ export declare const GOOGLE_PROVIDER_CREDENTIAL_KEY_PAIRS: readonly [{
19
+ readonly clientIdKey: "GOOGLE_CLIENT_ID";
20
+ readonly clientSecretKey: "GOOGLE_CLIENT_SECRET";
21
+ }, {
22
+ readonly clientIdKey: "GOOGLE_LEGACY_CLIENT_ID";
23
+ readonly clientSecretKey: "GOOGLE_LEGACY_CLIENT_SECRET";
24
+ }];
25
+ /**
26
+ * Resolve Google provider credentials from an app-owned credential source.
27
+ *
28
+ * Templates pass their scoped secret reader so Core does not choose an app's
29
+ * secret store or request context. An optional fallback reader preserves
30
+ * deployments that still keep the same credential pair in environment vars.
31
+ * Each candidate pair is read atomically and de-duped by client id, which lets
32
+ * refresh paths retry tokens minted by a previous Google OAuth client without
33
+ * ever mixing an id and secret from different sources.
34
+ */
35
+ export declare function resolveGoogleProviderCredentialCandidatesWithReader(options: {
36
+ readCredential: ReadGoogleOAuthCredential;
37
+ fallbackReadCredential?: ReadGoogleOAuthCredential;
38
+ credentialKeyPairs?: readonly GoogleOAuthCredentialKeyPair[];
39
+ }): Promise<GoogleOAuthCredentials[]>;
5
40
  /**
6
41
  * Credentials for identity-only Google sign-in. Deploys that also use Google
7
42
  * product APIs can set these separately from GOOGLE_CLIENT_ID/SECRET, which
@@ -1 +1 @@
1
- {"version":3,"file":"google-oauth-credentials.d.ts","sourceRoot":"","sources":["../../src/server/google-oauth-credentials.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB;AAYD;;;;GAIG;AACH,wBAAgB,8BAA8B,IAAI,sBAAsB,GAAG,IAAI,CAO9E;AAED,wBAAgB,0BAA0B,IAAI,OAAO,CAEpD;AAED,wBAAgB,gCAAgC,IAAI,sBAAsB,GAAG,IAAI,CAEhF;AAED,wBAAgB,sCAAsC,IAAI,sBAAsB,GAAG,IAAI,CAKtF;AAED,wBAAgB,yCAAyC,IAAI,sBAAsB,EAAE,CAMpF"}
1
+ {"version":3,"file":"google-oauth-credentials.d.ts","sourceRoot":"","sources":["../../src/server/google-oauth-credentials.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,4BAA4B;IAC3C,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,MAAM,yBAAyB,GAAG,CACtC,GAAG,EAAE,MAAM,KACR,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;AAEpE,eAAO,MAAM,uCAAuC;0BACrC,kBAAkB;8BACd,sBAAsB;CACQ,CAAC;AAElD,eAAO,MAAM,sCAAsC;0BACpC,yBAAyB;8BACrB,6BAA6B;CACC,CAAC;AAElD,eAAO,MAAM,oCAAoC;0BATlC,kBAAkB;8BACd,sBAAsB;;0BAI1B,yBAAyB;8BACrB,6BAA6B;EAMY,CAAC;AAwB7D;;;;;;;;;GASG;AACH,wBAAsB,mDAAmD,CAAC,OAAO,EAAE;IACjF,cAAc,EAAE,yBAAyB,CAAC;IAC1C,sBAAsB,CAAC,EAAE,yBAAyB,CAAC;IACnD,kBAAkB,CAAC,EAAE,SAAS,4BAA4B,EAAE,CAAC;CAC9D,GAAG,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAsBpC;AAED;;;;GAIG;AACH,wBAAgB,8BAA8B,IAAI,sBAAsB,GAAG,IAAI,CAO9E;AAED,wBAAgB,0BAA0B,IAAI,OAAO,CAEpD;AAED,wBAAgB,gCAAgC,IAAI,sBAAsB,GAAG,IAAI,CAKhF;AAED,wBAAgB,sCAAsC,IAAI,sBAAsB,GAAG,IAAI,CAKtF;AAED,wBAAgB,yCAAyC,IAAI,sBAAsB,EAAE,CAMpF"}
@@ -1,3 +1,15 @@
1
+ export const GOOGLE_PRIMARY_PROVIDER_CREDENTIAL_KEYS = {
2
+ clientIdKey: "GOOGLE_CLIENT_ID",
3
+ clientSecretKey: "GOOGLE_CLIENT_SECRET",
4
+ };
5
+ export const GOOGLE_LEGACY_PROVIDER_CREDENTIAL_KEYS = {
6
+ clientIdKey: "GOOGLE_LEGACY_CLIENT_ID",
7
+ clientSecretKey: "GOOGLE_LEGACY_CLIENT_SECRET",
8
+ };
9
+ export const GOOGLE_PROVIDER_CREDENTIAL_KEY_PAIRS = [
10
+ GOOGLE_PRIMARY_PROVIDER_CREDENTIAL_KEYS,
11
+ GOOGLE_LEGACY_PROVIDER_CREDENTIAL_KEYS,
12
+ ];
1
13
  function readCredentialPair(clientIdKey, clientSecretKey) {
2
14
  const clientId = process.env[clientIdKey];
3
15
  const clientSecret = process.env[clientSecretKey];
@@ -5,6 +17,40 @@ function readCredentialPair(clientIdKey, clientSecretKey) {
5
17
  return null;
6
18
  return { clientId, clientSecret };
7
19
  }
20
+ async function readInjectedCredentialPair(readCredential, keys) {
21
+ const [clientId, clientSecret] = await Promise.all([
22
+ readCredential(keys.clientIdKey),
23
+ readCredential(keys.clientSecretKey),
24
+ ]);
25
+ if (!clientId || !clientSecret)
26
+ return null;
27
+ return { clientId, clientSecret };
28
+ }
29
+ /**
30
+ * Resolve Google provider credentials from an app-owned credential source.
31
+ *
32
+ * Templates pass their scoped secret reader so Core does not choose an app's
33
+ * secret store or request context. An optional fallback reader preserves
34
+ * deployments that still keep the same credential pair in environment vars.
35
+ * Each candidate pair is read atomically and de-duped by client id, which lets
36
+ * refresh paths retry tokens minted by a previous Google OAuth client without
37
+ * ever mixing an id and secret from different sources.
38
+ */
39
+ export async function resolveGoogleProviderCredentialCandidatesWithReader(options) {
40
+ const pairs = options.credentialKeyPairs ?? GOOGLE_PROVIDER_CREDENTIAL_KEY_PAIRS;
41
+ const candidates = [];
42
+ for (const keys of pairs) {
43
+ const credentials = (await readInjectedCredentialPair(options.readCredential, keys)) ??
44
+ (options.fallbackReadCredential
45
+ ? await readInjectedCredentialPair(options.fallbackReadCredential, keys)
46
+ : null);
47
+ if (credentials &&
48
+ !candidates.some((candidate) => candidate.clientId === credentials.clientId)) {
49
+ candidates.push(credentials);
50
+ }
51
+ }
52
+ return candidates;
53
+ }
8
54
  /**
9
55
  * Credentials for identity-only Google sign-in. Deploys that also use Google
10
56
  * product APIs can set these separately from GOOGLE_CLIENT_ID/SECRET, which
@@ -17,10 +63,10 @@ export function hasGoogleSignInCredentials() {
17
63
  return resolveGoogleSignInCredentials() !== null;
18
64
  }
19
65
  export function resolveGoogleProviderCredentials() {
20
- return readCredentialPair("GOOGLE_CLIENT_ID", "GOOGLE_CLIENT_SECRET");
66
+ return readCredentialPair(GOOGLE_PRIMARY_PROVIDER_CREDENTIAL_KEYS.clientIdKey, GOOGLE_PRIMARY_PROVIDER_CREDENTIAL_KEYS.clientSecretKey);
21
67
  }
22
68
  export function resolveGoogleLegacyProviderCredentials() {
23
- return readCredentialPair("GOOGLE_LEGACY_CLIENT_ID", "GOOGLE_LEGACY_CLIENT_SECRET");
69
+ return readCredentialPair(GOOGLE_LEGACY_PROVIDER_CREDENTIAL_KEYS.clientIdKey, GOOGLE_LEGACY_PROVIDER_CREDENTIAL_KEYS.clientSecretKey);
24
70
  }
25
71
  export function resolveGoogleProviderCredentialCandidates() {
26
72
  const primary = resolveGoogleProviderCredentials();
@@ -1 +1 @@
1
- {"version":3,"file":"google-oauth-credentials.js","sourceRoot":"","sources":["../../src/server/google-oauth-credentials.ts"],"names":[],"mappings":"AAKA,SAAS,kBAAkB,CACzB,WAAmB,EACnB,eAAuB;IAEvB,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC1C,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAClD,IAAI,CAAC,QAAQ,IAAI,CAAC,YAAY;QAAE,OAAO,IAAI,CAAC;IAC5C,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC;AACpC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,8BAA8B;IAC5C,OAAO,CACL,kBAAkB,CAChB,0BAA0B,EAC1B,8BAA8B,CAC/B,IAAI,kBAAkB,CAAC,kBAAkB,EAAE,sBAAsB,CAAC,CACpE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,0BAA0B;IACxC,OAAO,8BAA8B,EAAE,KAAK,IAAI,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,gCAAgC;IAC9C,OAAO,kBAAkB,CAAC,kBAAkB,EAAE,sBAAsB,CAAC,CAAC;AACxE,CAAC;AAED,MAAM,UAAU,sCAAsC;IACpD,OAAO,kBAAkB,CACvB,yBAAyB,EACzB,6BAA6B,CAC9B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,yCAAyC;IACvD,MAAM,OAAO,GAAG,gCAAgC,EAAE,CAAC;IACnD,MAAM,MAAM,GAAG,sCAAsC,EAAE,CAAC;IACxD,IAAI,CAAC,OAAO;QAAE,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5C,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,QAAQ,KAAK,OAAO,CAAC,QAAQ;QAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IACtE,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AAC3B,CAAC","sourcesContent":["export interface GoogleOAuthCredentials {\n clientId: string;\n clientSecret: string;\n}\n\nfunction readCredentialPair(\n clientIdKey: string,\n clientSecretKey: string,\n): GoogleOAuthCredentials | null {\n const clientId = process.env[clientIdKey];\n const clientSecret = process.env[clientSecretKey];\n if (!clientId || !clientSecret) return null;\n return { clientId, clientSecret };\n}\n\n/**\n * Credentials for identity-only Google sign-in. Deploys that also use Google\n * product APIs can set these separately from GOOGLE_CLIENT_ID/SECRET, which\n * remain the backwards-compatible provider OAuth credentials.\n */\nexport function resolveGoogleSignInCredentials(): GoogleOAuthCredentials | null {\n return (\n readCredentialPair(\n \"GOOGLE_SIGN_IN_CLIENT_ID\",\n \"GOOGLE_SIGN_IN_CLIENT_SECRET\",\n ) ?? readCredentialPair(\"GOOGLE_CLIENT_ID\", \"GOOGLE_CLIENT_SECRET\")\n );\n}\n\nexport function hasGoogleSignInCredentials(): boolean {\n return resolveGoogleSignInCredentials() !== null;\n}\n\nexport function resolveGoogleProviderCredentials(): GoogleOAuthCredentials | null {\n return readCredentialPair(\"GOOGLE_CLIENT_ID\", \"GOOGLE_CLIENT_SECRET\");\n}\n\nexport function resolveGoogleLegacyProviderCredentials(): GoogleOAuthCredentials | null {\n return readCredentialPair(\n \"GOOGLE_LEGACY_CLIENT_ID\",\n \"GOOGLE_LEGACY_CLIENT_SECRET\",\n );\n}\n\nexport function resolveGoogleProviderCredentialCandidates(): GoogleOAuthCredentials[] {\n const primary = resolveGoogleProviderCredentials();\n const legacy = resolveGoogleLegacyProviderCredentials();\n if (!primary) return legacy ? [legacy] : [];\n if (!legacy || legacy.clientId === primary.clientId) return [primary];\n return [primary, legacy];\n}\n"]}
1
+ {"version":3,"file":"google-oauth-credentials.js","sourceRoot":"","sources":["../../src/server/google-oauth-credentials.ts"],"names":[],"mappings":"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","sourcesContent":["export interface GoogleOAuthCredentials {\n clientId: string;\n clientSecret: string;\n}\n\nexport interface GoogleOAuthCredentialKeyPair {\n clientIdKey: string;\n clientSecretKey: string;\n}\n\nexport type ReadGoogleOAuthCredential = (\n key: string,\n) => string | null | undefined | Promise<string | null | undefined>;\n\nexport const GOOGLE_PRIMARY_PROVIDER_CREDENTIAL_KEYS = {\n clientIdKey: \"GOOGLE_CLIENT_ID\",\n clientSecretKey: \"GOOGLE_CLIENT_SECRET\",\n} as const satisfies GoogleOAuthCredentialKeyPair;\n\nexport const GOOGLE_LEGACY_PROVIDER_CREDENTIAL_KEYS = {\n clientIdKey: \"GOOGLE_LEGACY_CLIENT_ID\",\n clientSecretKey: \"GOOGLE_LEGACY_CLIENT_SECRET\",\n} as const satisfies GoogleOAuthCredentialKeyPair;\n\nexport const GOOGLE_PROVIDER_CREDENTIAL_KEY_PAIRS = [\n GOOGLE_PRIMARY_PROVIDER_CREDENTIAL_KEYS,\n GOOGLE_LEGACY_PROVIDER_CREDENTIAL_KEYS,\n] as const satisfies readonly GoogleOAuthCredentialKeyPair[];\n\nfunction readCredentialPair(\n clientIdKey: string,\n clientSecretKey: string,\n): GoogleOAuthCredentials | null {\n const clientId = process.env[clientIdKey];\n const clientSecret = process.env[clientSecretKey];\n if (!clientId || !clientSecret) return null;\n return { clientId, clientSecret };\n}\n\nasync function readInjectedCredentialPair(\n readCredential: ReadGoogleOAuthCredential,\n keys: GoogleOAuthCredentialKeyPair,\n): Promise<GoogleOAuthCredentials | null> {\n const [clientId, clientSecret] = await Promise.all([\n readCredential(keys.clientIdKey),\n readCredential(keys.clientSecretKey),\n ]);\n if (!clientId || !clientSecret) return null;\n return { clientId, clientSecret };\n}\n\n/**\n * Resolve Google provider credentials from an app-owned credential source.\n *\n * Templates pass their scoped secret reader so Core does not choose an app's\n * secret store or request context. An optional fallback reader preserves\n * deployments that still keep the same credential pair in environment vars.\n * Each candidate pair is read atomically and de-duped by client id, which lets\n * refresh paths retry tokens minted by a previous Google OAuth client without\n * ever mixing an id and secret from different sources.\n */\nexport async function resolveGoogleProviderCredentialCandidatesWithReader(options: {\n readCredential: ReadGoogleOAuthCredential;\n fallbackReadCredential?: ReadGoogleOAuthCredential;\n credentialKeyPairs?: readonly GoogleOAuthCredentialKeyPair[];\n}): Promise<GoogleOAuthCredentials[]> {\n const pairs =\n options.credentialKeyPairs ?? GOOGLE_PROVIDER_CREDENTIAL_KEY_PAIRS;\n const candidates: GoogleOAuthCredentials[] = [];\n\n for (const keys of pairs) {\n const credentials =\n (await readInjectedCredentialPair(options.readCredential, keys)) ??\n (options.fallbackReadCredential\n ? await readInjectedCredentialPair(options.fallbackReadCredential, keys)\n : null);\n if (\n credentials &&\n !candidates.some(\n (candidate) => candidate.clientId === credentials.clientId,\n )\n ) {\n candidates.push(credentials);\n }\n }\n\n return candidates;\n}\n\n/**\n * Credentials for identity-only Google sign-in. Deploys that also use Google\n * product APIs can set these separately from GOOGLE_CLIENT_ID/SECRET, which\n * remain the backwards-compatible provider OAuth credentials.\n */\nexport function resolveGoogleSignInCredentials(): GoogleOAuthCredentials | null {\n return (\n readCredentialPair(\n \"GOOGLE_SIGN_IN_CLIENT_ID\",\n \"GOOGLE_SIGN_IN_CLIENT_SECRET\",\n ) ?? readCredentialPair(\"GOOGLE_CLIENT_ID\", \"GOOGLE_CLIENT_SECRET\")\n );\n}\n\nexport function hasGoogleSignInCredentials(): boolean {\n return resolveGoogleSignInCredentials() !== null;\n}\n\nexport function resolveGoogleProviderCredentials(): GoogleOAuthCredentials | null {\n return readCredentialPair(\n GOOGLE_PRIMARY_PROVIDER_CREDENTIAL_KEYS.clientIdKey,\n GOOGLE_PRIMARY_PROVIDER_CREDENTIAL_KEYS.clientSecretKey,\n );\n}\n\nexport function resolveGoogleLegacyProviderCredentials(): GoogleOAuthCredentials | null {\n return readCredentialPair(\n GOOGLE_LEGACY_PROVIDER_CREDENTIAL_KEYS.clientIdKey,\n GOOGLE_LEGACY_PROVIDER_CREDENTIAL_KEYS.clientSecretKey,\n );\n}\n\nexport function resolveGoogleProviderCredentialCandidates(): GoogleOAuthCredentials[] {\n const primary = resolveGoogleProviderCredentials();\n const legacy = resolveGoogleLegacyProviderCredentials();\n if (!primary) return legacy ? [legacy] : [];\n if (!legacy || legacy.clientId === primary.clientId) return [primary];\n return [primary, legacy];\n}\n"]}
@@ -45,7 +45,7 @@ export { createTerminalPlugin, defaultTerminalPlugin, type TerminalPluginOptions
45
45
  export { createCollabPlugin, type CollabPluginOptions, } from "./collab-plugin.js";
46
46
  export { spawnTask, getTask, getTaskByThread, listTasks, sendToTask, markTaskErrored, type AgentTask, type SpawnTaskOptions, } from "./agent-teams.js";
47
47
  export { isOAuthConnected, getOAuthAccounts } from "./oauth-helpers.js";
48
- export { hasGoogleSignInCredentials, resolveGoogleLegacyProviderCredentials, resolveGoogleProviderCredentialCandidates, resolveGoogleProviderCredentials, resolveGoogleSignInCredentials, type GoogleOAuthCredentials, } from "./google-oauth-credentials.js";
48
+ export { hasGoogleSignInCredentials, GOOGLE_LEGACY_PROVIDER_CREDENTIAL_KEYS, GOOGLE_PRIMARY_PROVIDER_CREDENTIAL_KEYS, GOOGLE_PROVIDER_CREDENTIAL_KEY_PAIRS, resolveGoogleLegacyProviderCredentials, resolveGoogleProviderCredentialCandidatesWithReader, resolveGoogleProviderCredentialCandidates, resolveGoogleProviderCredentials, resolveGoogleSignInCredentials, type GoogleOAuthCredentialKeyPair, type GoogleOAuthCredentials, type ReadGoogleOAuthCredential, } from "./google-oauth-credentials.js";
49
49
  export { wrapWithAnalytics } from "./analytics.js";
50
50
  export { getH3App, awaitBootstrap, markDefaultPluginProvided, type H3AppShim, } from "./framework-request-handler.js";
51
51
  export { fireInternalDispatch, resolveSelfDispatchBaseUrl, type FireInternalDispatchOptions, } from "./self-dispatch.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,KAAK,mBAAmB,EACxB,KAAK,YAAY,GAClB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,gCAAgC,EAChC,gCAAgC,EAChC,sCAAsC,EACtC,4CAA4C,EAC5C,oCAAoC,GACrC,MAAM,gCAAgC,CAAC;AAExC,OAAO,EACL,QAAQ,EACR,qBAAqB,EACrB,UAAU,EACV,2BAA2B,EAC3B,6BAA6B,EAC7B,gCAAgC,EAChC,uBAAuB,GACxB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,KAAK,aAAa,GACnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,sBAAsB,EAAE,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAChF,OAAO,EACL,4BAA4B,EAC5B,mBAAmB,EACnB,KAAK,sBAAsB,GAC5B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,wBAAwB,EACxB,yBAAyB,EACzB,wBAAwB,EACxB,yBAAyB,EACzB,8BAA8B,EAC9B,qBAAqB,EACrB,qBAAqB,EACrB,uBAAuB,EACvB,KAAK,0BAA0B,EAC/B,KAAK,gCAAgC,EACrC,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,EAC5B,KAAK,oBAAoB,EACzB,KAAK,6BAA6B,GACnC,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,gBAAgB,EAAE,KAAK,iBAAiB,EAAE,MAAM,UAAU,CAAC;AACpE,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,UAAU,EACV,WAAW,EACX,UAAU,EACV,aAAa,EACb,eAAe,EACf,+BAA+B,EAC/B,yBAAyB,EACzB,4BAA4B,EAC5B,YAAY,EACZ,kBAAkB,EAClB,uBAAuB,EACvB,cAAc,EACd,KAAK,2BAA2B,EAChC,KAAK,WAAW,EAChB,KAAK,WAAW,GACjB,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,EACpB,uBAAuB,EACvB,0BAA0B,EAC1B,wBAAwB,EACxB,kBAAkB,GACnB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EACL,kCAAkC,EAClC,4BAA4B,GAC7B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,KAAK,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACvE,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,wBAAwB,EACxB,KAAK,uBAAuB,EAC5B,KAAK,+BAA+B,EACpC,KAAK,qBAAqB,GAC3B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,4BAA4B,EAC5B,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,sBAAsB,EAC3B,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,2BAA2B,EAChC,KAAK,kCAAkC,EACvC,KAAK,iCAAiC,EACtC,KAAK,wBAAwB,EAC7B,KAAK,0BAA0B,GAChC,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,YAAY,EACZ,KAAK,4BAA4B,EACjC,KAAK,2BAA2B,GACjC,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,wBAAwB,EACxB,6BAA6B,EAC7B,4BAA4B,EAC5B,kCAAkC,EAClC,oCAAoC,EACpC,2BAA2B,EAC3B,wBAAwB,EACxB,KAAK,+BAA+B,EACpC,KAAK,2BAA2B,EAChC,KAAK,iCAAiC,EACtC,KAAK,gCAAgC,GACtC,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,uBAAuB,EACvB,aAAa,GACd,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,YAAY,EACZ,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,GACvB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAElE,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,UAAU,EACV,eAAe,EACf,cAAc,EACd,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,uBAAuB,EACvB,iBAAiB,EACjB,KAAK,iBAAiB,GACvB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,4BAA4B,EAC5B,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,GAC1B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAI7E,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EACL,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,+BAA+B,EAC/B,gCAAgC,GACjC,MAAM,yCAAyC,CAAC;AACjD,OAAO,EACL,sBAAsB,EACtB,KAAK,uBAAuB,GAC7B,MAAM,yBAAyB,CAAC;AACjC,YAAY,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,uBAAuB,EACvB,KAAK,sBAAsB,GAC5B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,uCAAuC,EACvC,oCAAoC,EACpC,+BAA+B,EAC/B,wBAAwB,EACxB,mCAAmC,EACnC,KAAK,8BAA8B,EACnC,KAAK,6BAA6B,EAClC,KAAK,8BAA8B,EACnC,KAAK,gCAAgC,GACtC,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,YAAY,EACZ,SAAS,EACT,WAAW,EACX,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,GACxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,EACtB,KAAK,uBAAuB,GAC7B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,mCAAmC,EACnC,4BAA4B,EAC5B,2CAA2C,EAC3C,2BAA2B,EAC3B,iCAAiC,EACjC,+BAA+B,EAC/B,2BAA2B,EAC3B,2BAA2B,EAC3B,KAAK,uBAAuB,GAC7B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EACL,iCAAiC,EACjC,KAAK,wCAAwC,GAC9C,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,uCAAuC,EACvC,0CAA0C,EAC1C,8BAA8B,EAC9B,kBAAkB,EAClB,0BAA0B,EAC1B,6BAA6B,EAC7B,2BAA2B,EAC3B,wBAAwB,EACxB,iBAAiB,EACjB,wBAAwB,EACxB,mBAAmB,EACnB,sBAAsB,EACtB,4BAA4B,GAC7B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,yBAAyB,EACzB,KAAK,gCAAgC,GACtC,MAAM,+BAA+B,CAAC;AACvC,YAAY,EACV,yBAAyB,EACzB,+BAA+B,EAC/B,+BAA+B,EAC/B,gCAAgC,EAChC,sCAAsC,EACtC,oCAAoC,EACpC,2CAA2C,EAC3C,sCAAsC,GACvC,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,KAAK,qBAAqB,GAC3B,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,kBAAkB,EAClB,KAAK,mBAAmB,GACzB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,SAAS,EACT,OAAO,EACP,eAAe,EACf,SAAS,EACT,UAAU,EACV,eAAe,EACf,KAAK,SAAS,EACd,KAAK,gBAAgB,GACtB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EACL,0BAA0B,EAC1B,sCAAsC,EACtC,uCAAuC,EACvC,oCAAoC,EACpC,sCAAsC,EACtC,mDAAmD,EACnD,yCAAyC,EACzC,gCAAgC,EAChC,8BAA8B,EAC9B,KAAK,4BAA4B,EACjC,KAAK,sBAAsB,EAC3B,KAAK,yBAAyB,GAC/B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EACL,QAAQ,EACR,cAAc,EACd,yBAAyB,EACzB,KAAK,SAAS,GACf,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,oBAAoB,EACpB,0BAA0B,EAC1B,KAAK,2BAA2B,GACjC,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,kBAAkB,IAAI,0BAA0B,EAChD,mBAAmB,GACpB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,6BAA6B,EAC7B,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,6BAA6B,EAC7B,KAAK,qBAAqB,EAC1B,KAAK,4BAA4B,EACjC,KAAK,iCAAiC,GACvC,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,iBAAiB,EACjB,KAAK,wBAAwB,EAC7B,KAAK,sBAAsB,EAC3B,KAAK,yBAAyB,GAC/B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,2BAA2B,EAC3B,wBAAwB,EACxB,KAAK,oBAAoB,GAC1B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,0BAA0B,EAC1B,KAAK,cAAc,EACnB,KAAK,iBAAiB,GACvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAExE,OAAO,EACL,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,0BAA0B,EAC1B,4BAA4B,EAC5B,uBAAuB,EACvB,2BAA2B,EAC3B,qCAAqC,EACrC,UAAU,EACV,yBAAyB,EACzB,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,GACtB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,wBAAwB,EACxB,yBAAyB,EACzB,oBAAoB,EACpB,YAAY,EACZ,eAAe,EACf,eAAe,EACf,cAAc,EACd,qBAAqB,EACrB,YAAY,EACZ,wBAAwB,EACxB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,2BAA2B,EAChC,KAAK,wBAAwB,EAC7B,KAAK,iBAAiB,EACtB,KAAK,yBAAyB,EAC9B,KAAK,2BAA2B,EAChC,4BAA4B,EAC5B,sBAAsB,EACtB,0BAA0B,EAC1B,8BAA8B,EAC9B,sBAAsB,EACtB,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,EAC5B,KAAK,mBAAmB,EACxB,KAAK,gCAAgC,EACrC,KAAK,kBAAkB,EACvB,KAAK,0BAA0B,GAChC,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,UAAU,EACV,QAAQ,EACR,SAAS,EACT,cAAc,EACd,SAAS,EACT,uBAAuB,EACvB,yBAAyB,EACzB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,qBAAqB,EACrB,cAAc,EACd,wBAAwB,EACxB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,GACxB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,sCAAsC,EACtC,mCAAmC,EACnC,kCAAkC,EAClC,oCAAoC,EACpC,iCAAiC,EACjC,iCAAiC,EACjC,yBAAyB,EACzB,gCAAgC,EAChC,0BAA0B,EAC1B,KAAK,6BAA6B,EAClC,KAAK,0BAA0B,GAChC,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EACL,yBAAyB,EACzB,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACrB,gCAAgC,EAChC,0BAA0B,EAC1B,oBAAoB,EACpB,wBAAwB,EACxB,wBAAwB,EACxB,2BAA2B,EAC3B,mCAAmC,EACnC,yBAAyB,EACzB,wBAAwB,EACxB,uBAAuB,EACvB,uBAAuB,EACvB,wBAAwB,EACxB,aAAa,GACd,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,sBAAsB,EACtB,kCAAkC,EAClC,oCAAoC,EACpC,4BAA4B,EAC5B,8BAA8B,EAC9B,mCAAmC,EACnC,0BAA0B,EAC1B,sCAAsC,EACtC,sCAAsC,EACtC,6BAA6B,EAC7B,KAAK,yCAAyC,EAC9C,KAAK,gCAAgC,EACrC,KAAK,8BAA8B,EACnC,KAAK,2BAA2B,EAChC,KAAK,oCAAoC,EACzC,KAAK,4BAA4B,EACjC,KAAK,+BAA+B,EACpC,KAAK,8BAA8B,EACnC,KAAK,8BAA8B,EACnC,KAAK,qCAAqC,EAC1C,KAAK,iCAAiC,GACvC,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,yBAAyB,EACzB,yBAAyB,EACzB,+BAA+B,EAC/B,6BAA6B,EAC7B,gCAAgC,EAChC,eAAe,EACf,KAAK,qBAAqB,GAC3B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,gBAAgB,EAChB,wBAAwB,EACxB,mBAAmB,EACnB,gBAAgB,EAChB,wBAAwB,EACxB,mBAAmB,EACnB,KAAK,eAAe,EACpB,KAAK,2BAA2B,EAChC,KAAK,uBAAuB,GAC7B,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,SAAS,EACT,iBAAiB,EACjB,gBAAgB,EAChB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,aAAa,GACnB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,WAAW,EACX,WAAW,EACX,SAAS,EACT,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,QAAQ,GACd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACzE,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACpB,yBAAyB,GAC1B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,YAAY,IAAI,2BAA2B,GACjD,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,kBAAkB,EAClB,gCAAgC,EAChC,sBAAsB,EACtB,sBAAsB,EACtB,mBAAmB,EACnB,4BAA4B,EAC5B,4BAA4B,EAC5B,0BAA0B,EAC1B,2BAA2B,EAC3B,0BAA0B,EAC1B,gBAAgB,EAChB,4BAA4B,EAC5B,KAAK,wBAAwB,EAC7B,KAAK,wBAAwB,EAC7B,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,6BAA6B,GACnC,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,oCAAoC,EACpC,mCAAmC,EACnC,mCAAmC,EACnC,0CAA0C,EAC1C,eAAe,EACf,KAAK,8BAA8B,EACnC,KAAK,0CAA0C,GAChD,MAAM,sCAAsC,CAAC;AAU9C,MAAM,MAAM,cAAc,GAAG,CAAC,QAAQ,EAAE,GAAG,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AACrE,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,cAAc,GAAG,cAAc,CAErE"}
@@ -46,7 +46,7 @@ export { createTerminalPlugin, defaultTerminalPlugin, } from "../terminal/termin
46
46
  export { createCollabPlugin, } from "./collab-plugin.js";
47
47
  export { spawnTask, getTask, getTaskByThread, listTasks, sendToTask, markTaskErrored, } from "./agent-teams.js";
48
48
  export { isOAuthConnected, getOAuthAccounts } from "./oauth-helpers.js";
49
- export { hasGoogleSignInCredentials, resolveGoogleLegacyProviderCredentials, resolveGoogleProviderCredentialCandidates, resolveGoogleProviderCredentials, resolveGoogleSignInCredentials, } from "./google-oauth-credentials.js";
49
+ export { hasGoogleSignInCredentials, GOOGLE_LEGACY_PROVIDER_CREDENTIAL_KEYS, GOOGLE_PRIMARY_PROVIDER_CREDENTIAL_KEYS, GOOGLE_PROVIDER_CREDENTIAL_KEY_PAIRS, resolveGoogleLegacyProviderCredentials, resolveGoogleProviderCredentialCandidatesWithReader, resolveGoogleProviderCredentialCandidates, resolveGoogleProviderCredentials, resolveGoogleSignInCredentials, } from "./google-oauth-credentials.js";
50
50
  export { wrapWithAnalytics } from "./analytics.js";
51
51
  export { getH3App, awaitBootstrap, markDefaultPluginProvided, } from "./framework-request-handler.js";
52
52
  export { fireInternalDispatch, resolveSelfDispatchBaseUrl, } from "./self-dispatch.js";