@agent-native/core 0.112.0 → 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 (490) hide show
  1. package/corpus/README.md +4 -2
  2. package/corpus/core/CHANGELOG.md +22 -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 +6 -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 +18 -10
  11. package/corpus/core/src/cli/code-agent-runs.concurrent-worker.ts +33 -0
  12. package/corpus/core/src/cli/code-agent-runs.ts +55 -62
  13. package/corpus/core/src/cli/codex-cli-participant.ts +496 -0
  14. package/corpus/core/src/cli/multi-frontier-runs.ts +1246 -135
  15. package/corpus/core/src/client/chat/ChatHistoryList.tsx +7 -404
  16. package/corpus/core/src/integrations/index.ts +10 -0
  17. package/corpus/core/src/integrations/slack-oauth.ts +1 -0
  18. package/corpus/core/src/integrations/webhook-delivery.ts +55 -0
  19. package/corpus/core/src/notifications/channels.ts +4 -10
  20. package/corpus/core/src/provider-api/actions/custom-provider-registration.ts +197 -0
  21. package/corpus/core/src/provider-api/actions/delete-staged-dataset.ts +3 -42
  22. package/corpus/core/src/provider-api/actions/list-staged-datasets.ts +3 -45
  23. package/corpus/core/src/provider-api/actions/provider-api-audit.ts +88 -0
  24. package/corpus/core/src/provider-api/actions/provider-api.ts +460 -0
  25. package/corpus/core/src/provider-api/actions/query-staged-dataset.ts +3 -140
  26. package/corpus/core/src/provider-api/actions/staged-datasets.ts +359 -0
  27. package/corpus/core/src/provider-api/gong.ts +108 -0
  28. package/corpus/core/src/scripts/docs/source-search.ts +2 -1
  29. package/corpus/core/src/server/google-oauth-credentials.ts +80 -3
  30. package/corpus/core/src/server/index.ts +6 -0
  31. package/corpus/core/src/styles/chat-history-list.css +1 -313
  32. package/corpus/core/src/templates/default/.agents/skills/actions/SKILL.md +32 -12
  33. package/corpus/core/src/templates/default/.agents/skills/agent-native-docs/SKILL.md +10 -0
  34. package/corpus/core/src/templates/default/.agents/skills/customizing-agent-native/SKILL.md +102 -0
  35. package/corpus/core/src/templates/default/.agents/skills/integration-webhooks/SKILL.md +323 -0
  36. package/corpus/core/src/templates/default/.agents/skills/onboarding/SKILL.md +56 -0
  37. package/corpus/core/src/templates/default/.agents/skills/secrets/SKILL.md +273 -0
  38. package/corpus/core/src/templates/default/.agents/skills/self-modifying-code/SKILL.md +11 -2
  39. package/corpus/core/src/templates/default/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
  40. package/corpus/core/src/templates/default/AGENTS.md +25 -18
  41. package/corpus/core/src/templates/headless/.agents/skills/actions/SKILL.md +512 -0
  42. package/corpus/core/src/templates/headless/.agents/skills/agent-native-docs/SKILL.md +10 -0
  43. package/corpus/core/src/templates/headless/.agents/skills/customizing-agent-native/SKILL.md +102 -0
  44. package/corpus/core/src/templates/headless/.agents/skills/integration-webhooks/SKILL.md +323 -0
  45. package/corpus/core/src/templates/headless/.agents/skills/secrets/SKILL.md +273 -0
  46. package/corpus/core/src/templates/headless/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
  47. package/corpus/core/src/templates/headless/AGENTS.md +7 -0
  48. package/corpus/core/src/templates/workspace-core/.agents/skills/actions/SKILL.md +32 -12
  49. package/corpus/core/src/templates/workspace-core/.agents/skills/agent-native-docs/SKILL.md +10 -0
  50. package/corpus/core/src/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +6 -0
  51. package/corpus/core/src/templates/workspace-core/.agents/skills/customizing-agent-native/SKILL.md +102 -0
  52. package/corpus/core/src/templates/workspace-core/.agents/skills/self-modifying-code/SKILL.md +11 -2
  53. package/corpus/core/src/templates/workspace-core/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
  54. package/corpus/core/src/templates/workspace-core/AGENTS.md +4 -0
  55. package/corpus/core/src/templates/workspace-root/AGENTS.md +4 -0
  56. package/corpus/templates/analytics/.agents/skills/actions/SKILL.md +32 -12
  57. package/corpus/templates/analytics/.agents/skills/customizing-agent-native/SKILL.md +102 -0
  58. package/corpus/templates/analytics/.agents/skills/self-modifying-code/SKILL.md +11 -2
  59. package/corpus/templates/analytics/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
  60. package/corpus/templates/analytics/actions/delete-staged-dataset.ts +3 -23
  61. package/corpus/templates/analytics/actions/list-staged-datasets.ts +3 -27
  62. package/corpus/templates/analytics/actions/provider-api-catalog.ts +16 -19
  63. package/corpus/templates/analytics/actions/provider-api-docs.ts +3 -5
  64. package/corpus/templates/analytics/actions/provider-api-request.ts +162 -185
  65. package/corpus/templates/analytics/actions/query-staged-dataset.ts +3 -47
  66. package/corpus/templates/analytics/app/components/layout/Sidebar.tsx +52 -161
  67. package/corpus/templates/assets/.agents/skills/actions/SKILL.md +32 -12
  68. package/corpus/templates/assets/.agents/skills/customizing-agent-native/SKILL.md +102 -0
  69. package/corpus/templates/assets/.agents/skills/self-modifying-code/SKILL.md +11 -2
  70. package/corpus/templates/assets/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
  71. package/corpus/templates/assets/app/components/layout/Sidebar.tsx +63 -160
  72. package/corpus/templates/brain/.agents/skills/actions/SKILL.md +32 -12
  73. package/corpus/templates/brain/.agents/skills/customizing-agent-native/SKILL.md +102 -0
  74. package/corpus/templates/brain/.agents/skills/self-modifying-code/SKILL.md +11 -2
  75. package/corpus/templates/brain/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
  76. package/corpus/templates/brain/actions/_schemas.ts +13 -7
  77. package/corpus/templates/brain/actions/delete-staged-dataset.ts +3 -24
  78. package/corpus/templates/brain/actions/list-staged-datasets.ts +3 -28
  79. package/corpus/templates/brain/actions/provider-api-catalog.ts +5 -11
  80. package/corpus/templates/brain/actions/provider-api-docs.ts +3 -5
  81. package/corpus/templates/brain/actions/provider-api-request.ts +3 -37
  82. package/corpus/templates/brain/actions/query-staged-dataset.ts +3 -48
  83. package/corpus/templates/brain/actions/update-source.ts +5 -1
  84. package/corpus/templates/brain/app/components/layout/Sidebar.tsx +48 -154
  85. package/corpus/templates/brain/app/lib/brain.ts +55 -0
  86. package/corpus/templates/brain/app/lib/ingest-handoff.ts +35 -0
  87. package/corpus/templates/brain/changelog/2026-07-19-slack-backfills-can-now-join-configured-public-channels-befo.md +6 -0
  88. package/corpus/templates/brain/changelog/2026-07-19-slack-backfills-now-continue-across-the-configured-number-of.md +6 -0
  89. package/corpus/templates/brain/changelog/2026-07-19-slack-backfills-now-start-with-a-safe-four-week-window-and-r.md +6 -0
  90. package/corpus/templates/brain/server/lib/connectors.ts +53 -2
  91. package/corpus/templates/brain/server/lib/slack-channel-membership.ts +44 -0
  92. package/corpus/templates/brain/shared/slack-source-config.ts +60 -0
  93. package/corpus/templates/calendar/.agents/skills/actions/SKILL.md +32 -12
  94. package/corpus/templates/calendar/.agents/skills/customizing-agent-native/SKILL.md +102 -0
  95. package/corpus/templates/calendar/.agents/skills/self-modifying-code/SKILL.md +11 -2
  96. package/corpus/templates/calendar/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
  97. package/corpus/templates/calendar/actions/delete-staged-dataset.ts +3 -24
  98. package/corpus/templates/calendar/actions/list-staged-datasets.ts +3 -28
  99. package/corpus/templates/calendar/actions/provider-api-catalog.ts +5 -11
  100. package/corpus/templates/calendar/actions/provider-api-docs.ts +3 -5
  101. package/corpus/templates/calendar/actions/provider-api-request.ts +3 -37
  102. package/corpus/templates/calendar/actions/query-staged-dataset.ts +3 -48
  103. package/corpus/templates/calendar/server/handlers/gong.ts +6 -61
  104. package/corpus/templates/calendar/server/handlers/google-auth.ts +10 -8
  105. package/corpus/templates/calendar/server/lib/google-calendar.ts +7 -45
  106. package/corpus/templates/chat/.agents/skills/actions/SKILL.md +32 -12
  107. package/corpus/templates/chat/.agents/skills/agent-native-docs/SKILL.md +10 -0
  108. package/corpus/templates/chat/.agents/skills/customizing-agent-native/SKILL.md +102 -0
  109. package/corpus/templates/chat/.agents/skills/self-modifying-code/SKILL.md +11 -2
  110. package/corpus/templates/chat/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
  111. package/corpus/templates/chat/AGENTS.md +5 -2
  112. package/corpus/templates/chat/app/components/layout/Sidebar.tsx +51 -157
  113. package/corpus/templates/clips/.agents/skills/actions/SKILL.md +32 -12
  114. package/corpus/templates/clips/.agents/skills/customizing-agent-native/SKILL.md +102 -0
  115. package/corpus/templates/clips/.agents/skills/self-modifying-code/SKILL.md +11 -2
  116. package/corpus/templates/clips/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
  117. package/corpus/templates/clips/AGENTS.md +11 -0
  118. package/corpus/templates/clips/actions/export-to-brain.ts +505 -171
  119. package/corpus/templates/clips/changelog/2026-07-19-ready-clips-transcripts-can-be-backfilled-to-brain-for-a-bou.md +6 -0
  120. package/corpus/templates/clips/server/lib/calendar-event-meetings.ts +1 -1
  121. package/corpus/templates/clips/server/lib/google-calendar-client.ts +12 -22
  122. package/corpus/templates/clips/server/lib/google-calendar-oauth.ts +9 -6
  123. package/corpus/templates/clips/server/lib/slack-oauth.ts +12 -47
  124. package/corpus/templates/clips/server/routes/_agent-native/google/auth-url.get.ts +2 -6
  125. package/corpus/templates/clips/server/routes/api/auth/google-calendar.get.ts +4 -4
  126. package/corpus/templates/content/.agents/skills/actions/SKILL.md +32 -12
  127. package/corpus/templates/content/.agents/skills/customizing-agent-native/SKILL.md +102 -0
  128. package/corpus/templates/content/.agents/skills/self-modifying-code/SKILL.md +11 -2
  129. package/corpus/templates/content/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
  130. package/corpus/templates/content/actions/delete-staged-dataset.ts +3 -24
  131. package/corpus/templates/content/actions/list-staged-datasets.ts +3 -28
  132. package/corpus/templates/content/actions/provider-api-catalog.ts +5 -11
  133. package/corpus/templates/content/actions/provider-api-docs.ts +3 -5
  134. package/corpus/templates/content/actions/provider-api-request.ts +3 -37
  135. package/corpus/templates/content/actions/query-staged-dataset.ts +3 -48
  136. package/corpus/templates/design/.agents/skills/actions/SKILL.md +32 -12
  137. package/corpus/templates/design/.agents/skills/customizing-agent-native/SKILL.md +102 -0
  138. package/corpus/templates/design/.agents/skills/self-modifying-code/SKILL.md +11 -2
  139. package/corpus/templates/design/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
  140. package/corpus/templates/design/actions/delete-staged-dataset.ts +4 -23
  141. package/corpus/templates/design/actions/list-staged-datasets.ts +4 -27
  142. package/corpus/templates/design/actions/provider-api-catalog.ts +15 -18
  143. package/corpus/templates/design/actions/provider-api-docs.ts +57 -48
  144. package/corpus/templates/design/actions/provider-api-request.ts +140 -164
  145. package/corpus/templates/design/actions/query-staged-dataset.ts +4 -47
  146. package/corpus/templates/dispatch/.agents/skills/actions/SKILL.md +32 -12
  147. package/corpus/templates/dispatch/.agents/skills/customizing-agent-native/SKILL.md +102 -0
  148. package/corpus/templates/dispatch/.agents/skills/self-modifying-code/SKILL.md +11 -2
  149. package/corpus/templates/dispatch/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
  150. package/corpus/templates/dispatch/actions/delete-staged-dataset.ts +4 -23
  151. package/corpus/templates/dispatch/actions/list-staged-datasets.ts +4 -30
  152. package/corpus/templates/dispatch/actions/provider-api-catalog.ts +15 -18
  153. package/corpus/templates/dispatch/actions/provider-api-docs.ts +57 -48
  154. package/corpus/templates/dispatch/actions/provider-api-request.ts +138 -163
  155. package/corpus/templates/dispatch/actions/query-staged-dataset.ts +4 -47
  156. package/corpus/templates/forms/.agents/skills/actions/SKILL.md +32 -12
  157. package/corpus/templates/forms/.agents/skills/customizing-agent-native/SKILL.md +102 -0
  158. package/corpus/templates/forms/.agents/skills/self-modifying-code/SKILL.md +11 -2
  159. package/corpus/templates/forms/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
  160. package/corpus/templates/forms/server/lib/integrations.ts +23 -22
  161. package/corpus/templates/macros/.agents/skills/customizing-agent-native/SKILL.md +102 -0
  162. package/corpus/templates/macros/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
  163. package/corpus/templates/mail/.agents/skills/actions/SKILL.md +32 -12
  164. package/corpus/templates/mail/.agents/skills/customizing-agent-native/SKILL.md +102 -0
  165. package/corpus/templates/mail/.agents/skills/self-modifying-code/SKILL.md +11 -2
  166. package/corpus/templates/mail/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
  167. package/corpus/templates/mail/actions/delete-staged-dataset.ts +4 -23
  168. package/corpus/templates/mail/actions/list-staged-datasets.ts +4 -27
  169. package/corpus/templates/mail/actions/provider-api-catalog.ts +15 -18
  170. package/corpus/templates/mail/actions/provider-api-docs.ts +57 -48
  171. package/corpus/templates/mail/actions/provider-api-request.ts +146 -173
  172. package/corpus/templates/mail/actions/query-staged-dataset.ts +4 -47
  173. package/corpus/templates/mail/server/handlers/gong.ts +6 -61
  174. package/corpus/templates/mail/server/lib/google-auth.ts +10 -13
  175. package/corpus/templates/plan/.agents/skills/actions/SKILL.md +32 -12
  176. package/corpus/templates/plan/.agents/skills/customizing-agent-native/SKILL.md +102 -0
  177. package/corpus/templates/plan/.agents/skills/self-modifying-code/SKILL.md +11 -2
  178. package/corpus/templates/plan/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
  179. package/corpus/templates/plan/app/components/layout/Sidebar.tsx +47 -156
  180. package/corpus/templates/slides/.agents/skills/actions/SKILL.md +32 -12
  181. package/corpus/templates/slides/.agents/skills/customizing-agent-native/SKILL.md +102 -0
  182. package/corpus/templates/slides/.agents/skills/self-modifying-code/SKILL.md +11 -2
  183. package/corpus/templates/slides/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
  184. package/corpus/templates/slides/actions/delete-staged-dataset.ts +4 -23
  185. package/corpus/templates/slides/actions/list-staged-datasets.ts +4 -27
  186. package/corpus/templates/slides/actions/provider-api-catalog.ts +15 -18
  187. package/corpus/templates/slides/actions/provider-api-docs.ts +57 -48
  188. package/corpus/templates/slides/actions/provider-api-request.ts +145 -172
  189. package/corpus/templates/slides/actions/query-staged-dataset.ts +4 -47
  190. package/corpus/templates/slides/server/lib/google-docs-oauth.ts +11 -36
  191. package/corpus/templates/tasks/.agents/skills/actions/SKILL.md +32 -12
  192. package/corpus/templates/tasks/.agents/skills/agent-native-docs/SKILL.md +10 -0
  193. package/corpus/templates/tasks/.agents/skills/customizing-agent-native/SKILL.md +102 -0
  194. package/corpus/templates/tasks/.agents/skills/self-modifying-code/SKILL.md +11 -2
  195. package/corpus/templates/tasks/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
  196. package/corpus/toolkit/CHANGELOG.md +125 -0
  197. package/corpus/toolkit/README.md +60 -0
  198. package/corpus/toolkit/export-snapshot.json +35 -0
  199. package/corpus/toolkit/migration-manifest.json +4 -0
  200. package/corpus/toolkit/package.json +281 -0
  201. package/corpus/toolkit/scripts/finalize-build.mjs +55 -0
  202. package/corpus/toolkit/src/app-shell/header-actions.tsx +84 -0
  203. package/corpus/toolkit/src/app-shell/index.ts +1 -0
  204. package/corpus/toolkit/src/chat-history/ChatHistoryList.tsx +469 -0
  205. package/corpus/toolkit/src/chat-history/index.ts +7 -0
  206. package/corpus/toolkit/src/chat-history.css +314 -0
  207. package/corpus/toolkit/src/collab-ui/AgentPresenceChip.tsx +69 -0
  208. package/corpus/toolkit/src/collab-ui/LiveCursorOverlay.tsx +241 -0
  209. package/corpus/toolkit/src/collab-ui/PresenceBar.tsx +346 -0
  210. package/corpus/toolkit/src/collab-ui/RecentEditHighlights.tsx +225 -0
  211. package/corpus/toolkit/src/collab-ui/RemoteSelectionRings.tsx +227 -0
  212. package/corpus/toolkit/src/collab-ui/agent-identity.ts +16 -0
  213. package/corpus/toolkit/src/collab-ui/index.ts +39 -0
  214. package/corpus/toolkit/src/collab-ui/lead-client.ts +32 -0
  215. package/corpus/toolkit/src/collab-ui/types.ts +96 -0
  216. package/corpus/toolkit/src/composer/AgentComposerFrame.tsx +59 -0
  217. package/corpus/toolkit/src/composer/ComposerPlusMenu.tsx +983 -0
  218. package/corpus/toolkit/src/composer/MentionPopover.tsx +412 -0
  219. package/corpus/toolkit/src/composer/PastedTextChip.tsx +150 -0
  220. package/corpus/toolkit/src/composer/PromptComposer.tsx +718 -0
  221. package/corpus/toolkit/src/composer/RealtimeVoiceMode.tsx +856 -0
  222. package/corpus/toolkit/src/composer/TiptapComposer.tsx +2936 -0
  223. package/corpus/toolkit/src/composer/VoiceButton.tsx +255 -0
  224. package/corpus/toolkit/src/composer/asset-picker-url.ts +80 -0
  225. package/corpus/toolkit/src/composer/attachment-accept.ts +71 -0
  226. package/corpus/toolkit/src/composer/draft-key.ts +7 -0
  227. package/corpus/toolkit/src/composer/extensions/FileReference.tsx +55 -0
  228. package/corpus/toolkit/src/composer/extensions/MentionReference.tsx +93 -0
  229. package/corpus/toolkit/src/composer/extensions/SkillReference.tsx +56 -0
  230. package/corpus/toolkit/src/composer/index.ts +79 -0
  231. package/corpus/toolkit/src/composer/pasted-text.ts +160 -0
  232. package/corpus/toolkit/src/composer/prompt-attachments.ts +93 -0
  233. package/corpus/toolkit/src/composer/realtime-voice-audio-level.ts +64 -0
  234. package/corpus/toolkit/src/composer/realtime-voice-transcript.ts +134 -0
  235. package/corpus/toolkit/src/composer/runtime-adapters.tsx +343 -0
  236. package/corpus/toolkit/src/composer/types.ts +66 -0
  237. package/corpus/toolkit/src/composer/use-file-search.ts +64 -0
  238. package/corpus/toolkit/src/composer/use-mention-search.ts +90 -0
  239. package/corpus/toolkit/src/composer/use-skills.ts +45 -0
  240. package/corpus/toolkit/src/composer/useRealtimeVoiceMode.tsx +2117 -0
  241. package/corpus/toolkit/src/composer/useVoiceDictation.ts +1191 -0
  242. package/corpus/toolkit/src/context-ui/ContextMeter.tsx +101 -0
  243. package/corpus/toolkit/src/context-ui/ContextSegmentRow.tsx +184 -0
  244. package/corpus/toolkit/src/context-ui/ContextTreemap.tsx +125 -0
  245. package/corpus/toolkit/src/context-ui/ContextXRayPanel.tsx +377 -0
  246. package/corpus/toolkit/src/context-ui/format.ts +42 -0
  247. package/corpus/toolkit/src/context-ui/index.ts +15 -0
  248. package/corpus/toolkit/src/context-ui/types.ts +43 -0
  249. package/corpus/toolkit/src/design-tweaks/index.ts +1 -0
  250. package/corpus/toolkit/src/design-tweaks/visual-style-controls.tsx +1084 -0
  251. package/corpus/toolkit/src/editor/BubbleToolbar.tsx +253 -0
  252. package/corpus/toolkit/src/editor/CodeBlockNode.tsx +254 -0
  253. package/corpus/toolkit/src/editor/DragHandle.ts +1437 -0
  254. package/corpus/toolkit/src/editor/ImageExtension.ts +306 -0
  255. package/corpus/toolkit/src/editor/RegistryBlockContext.tsx +107 -0
  256. package/corpus/toolkit/src/editor/RegistryBlockNode.tsx +652 -0
  257. package/corpus/toolkit/src/editor/RichMarkdownEditor.tsx +81 -0
  258. package/corpus/toolkit/src/editor/RunId.ts +61 -0
  259. package/corpus/toolkit/src/editor/SharedRichEditor.tsx +321 -0
  260. package/corpus/toolkit/src/editor/SlashCommandMenu.tsx +310 -0
  261. package/corpus/toolkit/src/editor/extensions.ts +402 -0
  262. package/corpus/toolkit/src/editor/gfmDoc.ts +92 -0
  263. package/corpus/toolkit/src/editor/index.ts +93 -0
  264. package/corpus/toolkit/src/editor/registrySlashCommands.ts +131 -0
  265. package/corpus/toolkit/src/editor/surgical-apply.ts +192 -0
  266. package/corpus/toolkit/src/editor/useCollabReconcile.ts +589 -0
  267. package/corpus/toolkit/src/editor.css +510 -0
  268. package/corpus/toolkit/src/hooks/index.ts +2 -0
  269. package/corpus/toolkit/src/hooks/use-mobile.tsx +21 -0
  270. package/corpus/toolkit/src/hooks/use-toast.ts +188 -0
  271. package/corpus/toolkit/src/index.ts +8 -0
  272. package/corpus/toolkit/src/onboarding/index.ts +1 -0
  273. package/corpus/toolkit/src/provider.tsx +47 -0
  274. package/corpus/toolkit/src/sharing/VisibilityBadge.tsx +37 -0
  275. package/corpus/toolkit/src/sharing/index.ts +4 -0
  276. package/corpus/toolkit/src/styles.css +21 -0
  277. package/corpus/toolkit/src/ui/accordion.tsx +56 -0
  278. package/corpus/toolkit/src/ui/alert-dialog.tsx +141 -0
  279. package/corpus/toolkit/src/ui/alert.tsx +59 -0
  280. package/corpus/toolkit/src/ui/aspect-ratio.tsx +5 -0
  281. package/corpus/toolkit/src/ui/avatar.tsx +48 -0
  282. package/corpus/toolkit/src/ui/badge.tsx +37 -0
  283. package/corpus/toolkit/src/ui/breadcrumb.tsx +115 -0
  284. package/corpus/toolkit/src/ui/button.tsx +78 -0
  285. package/corpus/toolkit/src/ui/calendar.tsx +214 -0
  286. package/corpus/toolkit/src/ui/card.tsx +86 -0
  287. package/corpus/toolkit/src/ui/carousel.tsx +260 -0
  288. package/corpus/toolkit/src/ui/chart.tsx +375 -0
  289. package/corpus/toolkit/src/ui/checkbox.tsx +28 -0
  290. package/corpus/toolkit/src/ui/collapsible.tsx +9 -0
  291. package/corpus/toolkit/src/ui/command.tsx +174 -0
  292. package/corpus/toolkit/src/ui/context-menu.tsx +202 -0
  293. package/corpus/toolkit/src/ui/date-picker.tsx +64 -0
  294. package/corpus/toolkit/src/ui/dialog.tsx +146 -0
  295. package/corpus/toolkit/src/ui/drawer.tsx +126 -0
  296. package/corpus/toolkit/src/ui/dropdown-menu.tsx +218 -0
  297. package/corpus/toolkit/src/ui/form.tsx +177 -0
  298. package/corpus/toolkit/src/ui/hover-card.tsx +27 -0
  299. package/corpus/toolkit/src/ui/index.ts +52 -0
  300. package/corpus/toolkit/src/ui/input-otp.tsx +69 -0
  301. package/corpus/toolkit/src/ui/input.tsx +22 -0
  302. package/corpus/toolkit/src/ui/label.tsx +24 -0
  303. package/corpus/toolkit/src/ui/logo.tsx +36 -0
  304. package/corpus/toolkit/src/ui/menubar.tsx +235 -0
  305. package/corpus/toolkit/src/ui/navigation-menu.tsx +128 -0
  306. package/corpus/toolkit/src/ui/pagination.tsx +121 -0
  307. package/corpus/toolkit/src/ui/popover.tsx +44 -0
  308. package/corpus/toolkit/src/ui/progress.tsx +26 -0
  309. package/corpus/toolkit/src/ui/radio-group.tsx +42 -0
  310. package/corpus/toolkit/src/ui/resizable.tsx +43 -0
  311. package/corpus/toolkit/src/ui/scroll-area.tsx +46 -0
  312. package/corpus/toolkit/src/ui/select.tsx +158 -0
  313. package/corpus/toolkit/src/ui/separator.tsx +29 -0
  314. package/corpus/toolkit/src/ui/sheet.tsx +160 -0
  315. package/corpus/toolkit/src/ui/sidebar.tsx +777 -0
  316. package/corpus/toolkit/src/ui/skeleton.tsx +18 -0
  317. package/corpus/toolkit/src/ui/slider.tsx +26 -0
  318. package/corpus/toolkit/src/ui/sonner.tsx +58 -0
  319. package/corpus/toolkit/src/ui/spinner.tsx +17 -0
  320. package/corpus/toolkit/src/ui/switch.tsx +27 -0
  321. package/corpus/toolkit/src/ui/table.tsx +117 -0
  322. package/corpus/toolkit/src/ui/tabs.tsx +53 -0
  323. package/corpus/toolkit/src/ui/textarea.tsx +23 -0
  324. package/corpus/toolkit/src/ui/toast.tsx +127 -0
  325. package/corpus/toolkit/src/ui/toaster.tsx +33 -0
  326. package/corpus/toolkit/src/ui/toggle-group.tsx +59 -0
  327. package/corpus/toolkit/src/ui/toggle.tsx +43 -0
  328. package/corpus/toolkit/src/ui/tooltip.tsx +53 -0
  329. package/corpus/toolkit/src/ui/use-toast.ts +3 -0
  330. package/corpus/toolkit/src/utils.ts +8 -0
  331. package/corpus/toolkit/tsconfig.json +23 -0
  332. package/dist/cli/atomic-json-file.d.ts +30 -0
  333. package/dist/cli/atomic-json-file.d.ts.map +1 -0
  334. package/dist/cli/atomic-json-file.js +240 -0
  335. package/dist/cli/atomic-json-file.js.map +1 -0
  336. package/dist/cli/claude-code-participant.d.ts +77 -0
  337. package/dist/cli/claude-code-participant.d.ts.map +1 -0
  338. package/dist/cli/claude-code-participant.js +355 -0
  339. package/dist/cli/claude-code-participant.js.map +1 -0
  340. package/dist/cli/code-agent-executor.d.ts.map +1 -1
  341. package/dist/cli/code-agent-executor.js +18 -10
  342. package/dist/cli/code-agent-executor.js.map +1 -1
  343. package/dist/cli/code-agent-runs.concurrent-worker.d.ts +2 -0
  344. package/dist/cli/code-agent-runs.concurrent-worker.d.ts.map +1 -0
  345. package/dist/cli/code-agent-runs.concurrent-worker.js +32 -0
  346. package/dist/cli/code-agent-runs.concurrent-worker.js.map +1 -0
  347. package/dist/cli/code-agent-runs.d.ts.map +1 -1
  348. package/dist/cli/code-agent-runs.js +43 -56
  349. package/dist/cli/code-agent-runs.js.map +1 -1
  350. package/dist/cli/codex-cli-participant.d.ts +77 -0
  351. package/dist/cli/codex-cli-participant.d.ts.map +1 -0
  352. package/dist/cli/codex-cli-participant.js +354 -0
  353. package/dist/cli/codex-cli-participant.js.map +1 -0
  354. package/dist/cli/multi-frontier-runs.d.ts +115 -0
  355. package/dist/cli/multi-frontier-runs.d.ts.map +1 -1
  356. package/dist/cli/multi-frontier-runs.js +831 -113
  357. package/dist/cli/multi-frontier-runs.js.map +1 -1
  358. package/dist/client/chat/ChatHistoryList.d.ts +1 -87
  359. package/dist/client/chat/ChatHistoryList.d.ts.map +1 -1
  360. package/dist/client/chat/ChatHistoryList.js +1 -82
  361. package/dist/client/chat/ChatHistoryList.js.map +1 -1
  362. package/dist/integrations/index.d.ts +2 -1
  363. package/dist/integrations/index.d.ts.map +1 -1
  364. package/dist/integrations/index.js +2 -1
  365. package/dist/integrations/index.js.map +1 -1
  366. package/dist/integrations/slack-manifest.d.ts +1 -1
  367. package/dist/integrations/slack-oauth.d.ts +1 -1
  368. package/dist/integrations/slack-oauth.d.ts.map +1 -1
  369. package/dist/integrations/slack-oauth.js +1 -0
  370. package/dist/integrations/slack-oauth.js.map +1 -1
  371. package/dist/integrations/webhook-delivery.d.ts +23 -0
  372. package/dist/integrations/webhook-delivery.d.ts.map +1 -0
  373. package/dist/integrations/webhook-delivery.js +32 -0
  374. package/dist/integrations/webhook-delivery.js.map +1 -0
  375. package/dist/notifications/channels.d.ts.map +1 -1
  376. package/dist/notifications/channels.js +4 -9
  377. package/dist/notifications/channels.js.map +1 -1
  378. package/dist/notifications/routes.d.ts +3 -3
  379. package/dist/provider-api/actions/custom-provider-registration.d.ts +136 -0
  380. package/dist/provider-api/actions/custom-provider-registration.d.ts.map +1 -0
  381. package/dist/provider-api/actions/custom-provider-registration.js +154 -0
  382. package/dist/provider-api/actions/custom-provider-registration.js.map +1 -0
  383. package/dist/provider-api/actions/delete-staged-dataset.d.ts +1 -1
  384. package/dist/provider-api/actions/delete-staged-dataset.d.ts.map +1 -1
  385. package/dist/provider-api/actions/delete-staged-dataset.js +3 -34
  386. package/dist/provider-api/actions/delete-staged-dataset.js.map +1 -1
  387. package/dist/provider-api/actions/list-staged-datasets.d.ts +2 -3
  388. package/dist/provider-api/actions/list-staged-datasets.d.ts.map +1 -1
  389. package/dist/provider-api/actions/list-staged-datasets.js +3 -40
  390. package/dist/provider-api/actions/list-staged-datasets.js.map +1 -1
  391. package/dist/provider-api/actions/provider-api-audit.d.ts +7 -0
  392. package/dist/provider-api/actions/provider-api-audit.d.ts.map +1 -0
  393. package/dist/provider-api/actions/provider-api-audit.js +74 -0
  394. package/dist/provider-api/actions/provider-api-audit.js.map +1 -0
  395. package/dist/provider-api/actions/provider-api.d.ts +370 -0
  396. package/dist/provider-api/actions/provider-api.d.ts.map +1 -0
  397. package/dist/provider-api/actions/provider-api.js +280 -0
  398. package/dist/provider-api/actions/provider-api.js.map +1 -0
  399. package/dist/provider-api/actions/query-staged-dataset.d.ts +1 -1
  400. package/dist/provider-api/actions/query-staged-dataset.d.ts.map +1 -1
  401. package/dist/provider-api/actions/query-staged-dataset.js +3 -116
  402. package/dist/provider-api/actions/query-staged-dataset.js.map +1 -1
  403. package/dist/provider-api/actions/staged-datasets.d.ts +190 -0
  404. package/dist/provider-api/actions/staged-datasets.d.ts.map +1 -0
  405. package/dist/provider-api/actions/staged-datasets.js +210 -0
  406. package/dist/provider-api/actions/staged-datasets.js.map +1 -0
  407. package/dist/provider-api/gong.d.ts +44 -0
  408. package/dist/provider-api/gong.d.ts.map +1 -0
  409. package/dist/provider-api/gong.js +56 -0
  410. package/dist/provider-api/gong.js.map +1 -0
  411. package/dist/scripts/docs/source-search.d.ts +2 -1
  412. package/dist/scripts/docs/source-search.d.ts.map +1 -1
  413. package/dist/scripts/docs/source-search.js +2 -1
  414. package/dist/scripts/docs/source-search.js.map +1 -1
  415. package/dist/server/agent-engine-api-key-route.d.ts +1 -1
  416. package/dist/server/google-oauth-credentials.d.ts +35 -0
  417. package/dist/server/google-oauth-credentials.d.ts.map +1 -1
  418. package/dist/server/google-oauth-credentials.js +48 -2
  419. package/dist/server/google-oauth-credentials.js.map +1 -1
  420. package/dist/server/index.d.ts +1 -1
  421. package/dist/server/index.d.ts.map +1 -1
  422. package/dist/server/index.js +1 -1
  423. package/dist/server/index.js.map +1 -1
  424. package/dist/styles/chat-history-list.css +1 -313
  425. package/dist/templates/chat/.agents/skills/actions/SKILL.md +32 -12
  426. package/dist/templates/chat/.agents/skills/agent-native-docs/SKILL.md +10 -0
  427. package/dist/templates/chat/.agents/skills/customizing-agent-native/SKILL.md +102 -0
  428. package/dist/templates/chat/.agents/skills/self-modifying-code/SKILL.md +11 -2
  429. package/dist/templates/chat/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
  430. package/dist/templates/chat/AGENTS.md +5 -2
  431. package/dist/templates/chat/app/components/layout/Sidebar.tsx +51 -157
  432. package/dist/templates/default/.agents/skills/actions/SKILL.md +32 -12
  433. package/dist/templates/default/.agents/skills/agent-native-docs/SKILL.md +10 -0
  434. package/dist/templates/default/.agents/skills/customizing-agent-native/SKILL.md +102 -0
  435. package/dist/templates/default/.agents/skills/integration-webhooks/SKILL.md +323 -0
  436. package/dist/templates/default/.agents/skills/onboarding/SKILL.md +56 -0
  437. package/dist/templates/default/.agents/skills/secrets/SKILL.md +273 -0
  438. package/dist/templates/default/.agents/skills/self-modifying-code/SKILL.md +11 -2
  439. package/dist/templates/default/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
  440. package/dist/templates/default/AGENTS.md +25 -18
  441. package/dist/templates/headless/.agents/skills/actions/SKILL.md +512 -0
  442. package/dist/templates/headless/.agents/skills/agent-native-docs/SKILL.md +10 -0
  443. package/dist/templates/headless/.agents/skills/customizing-agent-native/SKILL.md +102 -0
  444. package/dist/templates/headless/.agents/skills/integration-webhooks/SKILL.md +323 -0
  445. package/dist/templates/headless/.agents/skills/secrets/SKILL.md +273 -0
  446. package/dist/templates/headless/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
  447. package/dist/templates/headless/AGENTS.md +7 -0
  448. package/dist/templates/workspace-core/.agents/skills/actions/SKILL.md +32 -12
  449. package/dist/templates/workspace-core/.agents/skills/agent-native-docs/SKILL.md +10 -0
  450. package/dist/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +6 -0
  451. package/dist/templates/workspace-core/.agents/skills/customizing-agent-native/SKILL.md +102 -0
  452. package/dist/templates/workspace-core/.agents/skills/self-modifying-code/SKILL.md +11 -2
  453. package/dist/templates/workspace-core/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
  454. package/dist/templates/workspace-core/AGENTS.md +4 -0
  455. package/dist/templates/workspace-root/AGENTS.md +4 -0
  456. package/docs/AGENTS.md +7 -0
  457. package/docs/content/integrations.mdx +63 -2
  458. package/docs/design/provider-integration-authority.md +117 -0
  459. package/package.json +7 -2
  460. package/src/templates/chat/.agents/skills/actions/SKILL.md +32 -12
  461. package/src/templates/chat/.agents/skills/agent-native-docs/SKILL.md +10 -0
  462. package/src/templates/chat/.agents/skills/customizing-agent-native/SKILL.md +102 -0
  463. package/src/templates/chat/.agents/skills/self-modifying-code/SKILL.md +11 -2
  464. package/src/templates/chat/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
  465. package/src/templates/chat/AGENTS.md +5 -2
  466. package/src/templates/chat/app/components/layout/Sidebar.tsx +51 -157
  467. package/src/templates/default/.agents/skills/actions/SKILL.md +32 -12
  468. package/src/templates/default/.agents/skills/agent-native-docs/SKILL.md +10 -0
  469. package/src/templates/default/.agents/skills/customizing-agent-native/SKILL.md +102 -0
  470. package/src/templates/default/.agents/skills/integration-webhooks/SKILL.md +323 -0
  471. package/src/templates/default/.agents/skills/onboarding/SKILL.md +56 -0
  472. package/src/templates/default/.agents/skills/secrets/SKILL.md +273 -0
  473. package/src/templates/default/.agents/skills/self-modifying-code/SKILL.md +11 -2
  474. package/src/templates/default/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
  475. package/src/templates/default/AGENTS.md +25 -18
  476. package/src/templates/headless/.agents/skills/actions/SKILL.md +512 -0
  477. package/src/templates/headless/.agents/skills/agent-native-docs/SKILL.md +10 -0
  478. package/src/templates/headless/.agents/skills/customizing-agent-native/SKILL.md +102 -0
  479. package/src/templates/headless/.agents/skills/integration-webhooks/SKILL.md +323 -0
  480. package/src/templates/headless/.agents/skills/secrets/SKILL.md +273 -0
  481. package/src/templates/headless/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
  482. package/src/templates/headless/AGENTS.md +7 -0
  483. package/src/templates/workspace-core/.agents/skills/actions/SKILL.md +32 -12
  484. package/src/templates/workspace-core/.agents/skills/agent-native-docs/SKILL.md +10 -0
  485. package/src/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +6 -0
  486. package/src/templates/workspace-core/.agents/skills/customizing-agent-native/SKILL.md +102 -0
  487. package/src/templates/workspace-core/.agents/skills/self-modifying-code/SKILL.md +11 -2
  488. package/src/templates/workspace-core/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
  489. package/src/templates/workspace-core/AGENTS.md +4 -0
  490. package/src/templates/workspace-root/AGENTS.md +4 -0
@@ -0,0 +1,136 @@
1
+ import { z, type ZodTypeAny } from "zod";
2
+ export declare const CustomProviderRegistrationSchema: z.ZodObject<{
3
+ operation: z.ZodDefault<z.ZodEnum<{
4
+ delete: "delete";
5
+ get: "get";
6
+ list: "list";
7
+ upsert: "upsert";
8
+ }>>;
9
+ id: z.ZodOptional<z.ZodString>;
10
+ label: z.ZodOptional<z.ZodString>;
11
+ baseUrl: z.ZodOptional<z.ZodString>;
12
+ auth: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
13
+ type: z.ZodLiteral<"none">;
14
+ }, z.core.$strip>, z.ZodObject<{
15
+ type: z.ZodLiteral<"bearer">;
16
+ credentialKey: z.ZodString;
17
+ }, z.core.$strip>, z.ZodObject<{
18
+ type: z.ZodLiteral<"basic">;
19
+ usernameKey: z.ZodString;
20
+ passwordKey: z.ZodString;
21
+ }, z.core.$strip>, z.ZodObject<{
22
+ type: z.ZodLiteral<"api-key-header">;
23
+ credentialKey: z.ZodString;
24
+ headerName: z.ZodString;
25
+ }, z.core.$strip>], "type">>;
26
+ docsUrls: z.ZodOptional<z.ZodArray<z.ZodString>>;
27
+ allowedHostSuffixes: z.ZodOptional<z.ZodArray<z.ZodString>>;
28
+ defaultHeaders: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
29
+ notes: z.ZodOptional<z.ZodString>;
30
+ scope: z.ZodDefault<z.ZodEnum<{
31
+ org: "org";
32
+ user: "user";
33
+ }>>;
34
+ }, z.core.$strip>;
35
+ export interface CustomProviderRegistrationContext {
36
+ userEmail: string;
37
+ orgId: string | null;
38
+ }
39
+ export interface CreateCustomProviderRegistrationActionOptions<TSchema extends ZodTypeAny = typeof CustomProviderRegistrationSchema> {
40
+ schema?: TSchema;
41
+ description?: string;
42
+ getContext?: () => CustomProviderRegistrationContext | null;
43
+ resolveOrgRole?: (orgId: string, userEmail: string) => Promise<string | null>;
44
+ }
45
+ export declare function createCustomProviderRegistrationAction<TSchema extends ZodTypeAny = typeof CustomProviderRegistrationSchema>(options?: CreateCustomProviderRegistrationActionOptions<TSchema>): import("../../action.js").ActionDefinition<import("better-auth").StandardSchemaV1.InferInput<TSchema | z.ZodObject<{
46
+ operation: z.ZodDefault<z.ZodEnum<{
47
+ delete: "delete";
48
+ get: "get";
49
+ list: "list";
50
+ upsert: "upsert";
51
+ }>>;
52
+ id: z.ZodOptional<z.ZodString>;
53
+ label: z.ZodOptional<z.ZodString>;
54
+ baseUrl: z.ZodOptional<z.ZodString>;
55
+ auth: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
56
+ type: z.ZodLiteral<"none">;
57
+ }, z.core.$strip>, z.ZodObject<{
58
+ type: z.ZodLiteral<"bearer">;
59
+ credentialKey: z.ZodString;
60
+ }, z.core.$strip>, z.ZodObject<{
61
+ type: z.ZodLiteral<"basic">;
62
+ usernameKey: z.ZodString;
63
+ passwordKey: z.ZodString;
64
+ }, z.core.$strip>, z.ZodObject<{
65
+ type: z.ZodLiteral<"api-key-header">;
66
+ credentialKey: z.ZodString;
67
+ headerName: z.ZodString;
68
+ }, z.core.$strip>], "type">>;
69
+ docsUrls: z.ZodOptional<z.ZodArray<z.ZodString>>;
70
+ allowedHostSuffixes: z.ZodOptional<z.ZodArray<z.ZodString>>;
71
+ defaultHeaders: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
72
+ notes: z.ZodOptional<z.ZodString>;
73
+ scope: z.ZodDefault<z.ZodEnum<{
74
+ org: "org";
75
+ user: "user";
76
+ }>>;
77
+ }, z.core.$strip>>, {
78
+ deleted?: undefined;
79
+ id?: undefined;
80
+ found?: undefined;
81
+ providers: {
82
+ id: string;
83
+ label: string;
84
+ baseUrl: string;
85
+ authType: "api-key-header" | "basic" | "bearer" | "none";
86
+ docsUrls: string[];
87
+ notes: string;
88
+ updatedAt: number;
89
+ }[];
90
+ count: number;
91
+ provider?: undefined;
92
+ registered?: undefined;
93
+ label?: undefined;
94
+ message?: undefined;
95
+ } | {
96
+ deleted?: undefined;
97
+ count?: undefined;
98
+ id?: undefined;
99
+ providers?: undefined;
100
+ found: boolean;
101
+ provider: import("../custom-registry.js").CustomProviderConfig;
102
+ registered?: undefined;
103
+ label?: undefined;
104
+ message?: undefined;
105
+ } | {
106
+ deleted?: undefined;
107
+ count?: undefined;
108
+ providers?: undefined;
109
+ provider?: undefined;
110
+ found: boolean;
111
+ id: string;
112
+ registered?: undefined;
113
+ label?: undefined;
114
+ message?: undefined;
115
+ } | {
116
+ count?: undefined;
117
+ found?: undefined;
118
+ providers?: undefined;
119
+ provider?: undefined;
120
+ deleted: boolean;
121
+ id: string;
122
+ registered?: undefined;
123
+ label?: undefined;
124
+ message?: undefined;
125
+ } | {
126
+ deleted?: undefined;
127
+ count?: undefined;
128
+ found?: undefined;
129
+ providers?: undefined;
130
+ provider?: undefined;
131
+ registered: boolean;
132
+ id: string;
133
+ label: string;
134
+ message: string;
135
+ }>;
136
+ //# sourceMappingURL=custom-provider-registration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custom-provider-registration.d.ts","sourceRoot":"","sources":["../../../src/provider-api/actions/custom-provider-registration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,KAAK,UAAU,EAAE,MAAM,KAAK,CAAC;AAsCzC,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA4C3C,CAAC;AAIH,MAAM,WAAW,iCAAiC;IAChD,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,6CAA6C,CAC5D,OAAO,SAAS,UAAU,GAAG,OAAO,gCAAgC;IAEpE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,iCAAiC,GAAG,IAAI,CAAC;IAC5D,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CAC/E;AAED,wBAAgB,sCAAsC,CACpD,OAAO,SAAS,UAAU,GAAG,OAAO,gCAAgC,EACpE,OAAO,GAAE,6CAA6C,CAAC,OAAO,CAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8FrE"}
@@ -0,0 +1,154 @@
1
+ import { z } from "zod";
2
+ import { defineAction } from "../../action.js";
3
+ import { getCredentialContext } from "../../server/request-context.js";
4
+ import { assertCanMutateCustomProviderScope, deleteCustomProvider, getCustomProvider, listCustomProviders, upsertCustomProvider, } from "../index.js";
5
+ const AuthSchema = z.discriminatedUnion("type", [
6
+ z.object({ type: z.literal("none") }),
7
+ z.object({
8
+ type: z.literal("bearer"),
9
+ credentialKey: z
10
+ .string()
11
+ .min(1)
12
+ .describe("Name of the credential key. The secret value must already be stored; this action never accepts secret values."),
13
+ }),
14
+ z.object({
15
+ type: z.literal("basic"),
16
+ usernameKey: z.string().min(1).describe("Credential key for the username."),
17
+ passwordKey: z.string().min(1).describe("Credential key for the password."),
18
+ }),
19
+ z.object({
20
+ type: z.literal("api-key-header"),
21
+ credentialKey: z
22
+ .string()
23
+ .min(1)
24
+ .describe("Credential key for the API key."),
25
+ headerName: z.string().min(1).describe("HTTP header name for the API key."),
26
+ }),
27
+ ]);
28
+ export const CustomProviderRegistrationSchema = z.object({
29
+ operation: z
30
+ .enum(["upsert", "delete", "list", "get"])
31
+ .default("upsert")
32
+ .describe("Operation to perform."),
33
+ id: z
34
+ .string()
35
+ .min(1)
36
+ .max(64)
37
+ .optional()
38
+ .describe("Provider slug. Required for upsert, delete, and get."),
39
+ label: z
40
+ .string()
41
+ .min(1)
42
+ .max(200)
43
+ .optional()
44
+ .describe("Human-readable provider name. Required for upsert."),
45
+ baseUrl: z
46
+ .string()
47
+ .url()
48
+ .optional()
49
+ .describe("Public HTTP(S) API base URL. Required for upsert."),
50
+ auth: AuthSchema.optional().describe("Authentication configuration."),
51
+ docsUrls: z
52
+ .array(z.string().url())
53
+ .optional()
54
+ .describe("Optional provider documentation URLs."),
55
+ allowedHostSuffixes: z
56
+ .array(z.string())
57
+ .optional()
58
+ .describe("Optional additional allowed host suffixes."),
59
+ defaultHeaders: z
60
+ .record(z.string(), z.string())
61
+ .optional()
62
+ .describe("Optional non-secret headers included with every request."),
63
+ notes: z
64
+ .string()
65
+ .max(1000)
66
+ .optional()
67
+ .describe("Optional notes shown in the provider catalog."),
68
+ scope: z
69
+ .enum(["user", "org"])
70
+ .default("org")
71
+ .describe("Store for the current user or the current organization."),
72
+ });
73
+ export function createCustomProviderRegistrationAction(options = {}) {
74
+ const schema = options.schema ?? CustomProviderRegistrationSchema;
75
+ return defineAction({
76
+ description: options.description ??
77
+ "Register, inspect, or delete a custom API provider for provider-api-request. This stores credential key names only, never secret values. Save required credentials through the app's secrets surface before registration.",
78
+ schema,
79
+ http: false,
80
+ run: async (rawArgs) => {
81
+ const args = rawArgs;
82
+ const ctx = options.getContext?.() ?? getCredentialContext();
83
+ if (!ctx) {
84
+ throw new Error("provider-api-register requires an authenticated request context.");
85
+ }
86
+ const scopeId = args.scope === "org" ? (ctx.orgId ?? ctx.userEmail) : ctx.userEmail;
87
+ let orgRole = null;
88
+ if ((args.operation === "upsert" || args.operation === "delete") &&
89
+ args.scope === "org") {
90
+ orgRole = ctx.orgId
91
+ ? ((await options.resolveOrgRole?.(ctx.orgId, ctx.userEmail)) ?? null)
92
+ : "owner";
93
+ assertCanMutateCustomProviderScope(args.scope, scopeId, orgRole);
94
+ }
95
+ if (args.operation === "list") {
96
+ const providers = await listCustomProviders(args.scope, scopeId);
97
+ return {
98
+ providers: providers.map((provider) => ({
99
+ id: provider.id,
100
+ label: provider.label,
101
+ baseUrl: provider.baseUrl,
102
+ authType: provider.auth.type,
103
+ docsUrls: provider.docsUrls,
104
+ notes: provider.notes,
105
+ updatedAt: provider.updatedAt,
106
+ })),
107
+ count: providers.length,
108
+ };
109
+ }
110
+ if (args.operation === "get") {
111
+ if (!args.id)
112
+ throw new Error("id is required for get operation.");
113
+ const provider = await getCustomProvider(args.scope, scopeId, args.id);
114
+ return provider
115
+ ? { found: true, provider }
116
+ : { found: false, id: args.id };
117
+ }
118
+ if (args.operation === "delete") {
119
+ if (!args.id)
120
+ throw new Error("id is required for delete operation.");
121
+ const deleted = await deleteCustomProvider(args.scope, scopeId, args.id, orgRole);
122
+ return { deleted, id: args.id };
123
+ }
124
+ if (!args.id)
125
+ throw new Error("id is required for upsert operation.");
126
+ if (!args.label)
127
+ throw new Error("label is required for upsert operation.");
128
+ if (!args.baseUrl)
129
+ throw new Error("baseUrl is required for upsert operation.");
130
+ if (!args.auth)
131
+ throw new Error("auth is required for upsert operation.");
132
+ await upsertCustomProvider({
133
+ scope: args.scope,
134
+ scopeId,
135
+ id: args.id,
136
+ label: args.label,
137
+ baseUrl: args.baseUrl,
138
+ auth: args.auth,
139
+ docsUrls: args.docsUrls,
140
+ allowedHostSuffixes: args.allowedHostSuffixes,
141
+ defaultHeaders: args.defaultHeaders,
142
+ notes: args.notes,
143
+ orgRole,
144
+ });
145
+ return {
146
+ registered: true,
147
+ id: args.id,
148
+ label: args.label,
149
+ message: `Custom provider "${args.id}" registered. Use provider-api-catalog to inspect it and provider-api-request to call it.`,
150
+ };
151
+ },
152
+ });
153
+ }
154
+ //# sourceMappingURL=custom-provider-registration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custom-provider-registration.js","sourceRoot":"","sources":["../../../src/provider-api/actions/custom-provider-registration.ts"],"names":[],"mappings":"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","sourcesContent":["import { z, type ZodTypeAny } from \"zod\";\n\nimport { defineAction } from \"../../action.js\";\nimport { getCredentialContext } from \"../../server/request-context.js\";\nimport {\n assertCanMutateCustomProviderScope,\n deleteCustomProvider,\n getCustomProvider,\n listCustomProviders,\n upsertCustomProvider,\n} from \"../index.js\";\n\nconst AuthSchema = z.discriminatedUnion(\"type\", [\n z.object({ type: z.literal(\"none\") }),\n z.object({\n type: z.literal(\"bearer\"),\n credentialKey: z\n .string()\n .min(1)\n .describe(\n \"Name of the credential key. The secret value must already be stored; this action never accepts secret values.\",\n ),\n }),\n z.object({\n type: z.literal(\"basic\"),\n usernameKey: z.string().min(1).describe(\"Credential key for the username.\"),\n passwordKey: z.string().min(1).describe(\"Credential key for the password.\"),\n }),\n z.object({\n type: z.literal(\"api-key-header\"),\n credentialKey: z\n .string()\n .min(1)\n .describe(\"Credential key for the API key.\"),\n headerName: z.string().min(1).describe(\"HTTP header name for the API key.\"),\n }),\n]);\n\nexport const CustomProviderRegistrationSchema = z.object({\n operation: z\n .enum([\"upsert\", \"delete\", \"list\", \"get\"])\n .default(\"upsert\")\n .describe(\"Operation to perform.\"),\n id: z\n .string()\n .min(1)\n .max(64)\n .optional()\n .describe(\"Provider slug. Required for upsert, delete, and get.\"),\n label: z\n .string()\n .min(1)\n .max(200)\n .optional()\n .describe(\"Human-readable provider name. Required for upsert.\"),\n baseUrl: z\n .string()\n .url()\n .optional()\n .describe(\"Public HTTP(S) API base URL. Required for upsert.\"),\n auth: AuthSchema.optional().describe(\"Authentication configuration.\"),\n docsUrls: z\n .array(z.string().url())\n .optional()\n .describe(\"Optional provider documentation URLs.\"),\n allowedHostSuffixes: z\n .array(z.string())\n .optional()\n .describe(\"Optional additional allowed host suffixes.\"),\n defaultHeaders: z\n .record(z.string(), z.string())\n .optional()\n .describe(\"Optional non-secret headers included with every request.\"),\n notes: z\n .string()\n .max(1000)\n .optional()\n .describe(\"Optional notes shown in the provider catalog.\"),\n scope: z\n .enum([\"user\", \"org\"])\n .default(\"org\")\n .describe(\"Store for the current user or the current organization.\"),\n});\n\ntype RegistrationArgs = z.output<typeof CustomProviderRegistrationSchema>;\n\nexport interface CustomProviderRegistrationContext {\n userEmail: string;\n orgId: string | null;\n}\n\nexport interface CreateCustomProviderRegistrationActionOptions<\n TSchema extends ZodTypeAny = typeof CustomProviderRegistrationSchema,\n> {\n schema?: TSchema;\n description?: string;\n getContext?: () => CustomProviderRegistrationContext | null;\n resolveOrgRole?: (orgId: string, userEmail: string) => Promise<string | null>;\n}\n\nexport function createCustomProviderRegistrationAction<\n TSchema extends ZodTypeAny = typeof CustomProviderRegistrationSchema,\n>(options: CreateCustomProviderRegistrationActionOptions<TSchema> = {}) {\n const schema = options.schema ?? CustomProviderRegistrationSchema;\n return defineAction({\n description:\n options.description ??\n \"Register, inspect, or delete a custom API provider for provider-api-request. This stores credential key names only, never secret values. Save required credentials through the app's secrets surface before registration.\",\n schema,\n http: false,\n run: async (rawArgs) => {\n const args = rawArgs as RegistrationArgs;\n const ctx = options.getContext?.() ?? getCredentialContext();\n if (!ctx) {\n throw new Error(\n \"provider-api-register requires an authenticated request context.\",\n );\n }\n const scopeId =\n args.scope === \"org\" ? (ctx.orgId ?? ctx.userEmail) : ctx.userEmail;\n\n let orgRole: string | null = null;\n if (\n (args.operation === \"upsert\" || args.operation === \"delete\") &&\n args.scope === \"org\"\n ) {\n orgRole = ctx.orgId\n ? ((await options.resolveOrgRole?.(ctx.orgId, ctx.userEmail)) ?? null)\n : \"owner\";\n assertCanMutateCustomProviderScope(args.scope, scopeId, orgRole);\n }\n\n if (args.operation === \"list\") {\n const providers = await listCustomProviders(args.scope, scopeId);\n return {\n providers: providers.map((provider) => ({\n id: provider.id,\n label: provider.label,\n baseUrl: provider.baseUrl,\n authType: provider.auth.type,\n docsUrls: provider.docsUrls,\n notes: provider.notes,\n updatedAt: provider.updatedAt,\n })),\n count: providers.length,\n };\n }\n\n if (args.operation === \"get\") {\n if (!args.id) throw new Error(\"id is required for get operation.\");\n const provider = await getCustomProvider(args.scope, scopeId, args.id);\n return provider\n ? { found: true, provider }\n : { found: false, id: args.id };\n }\n\n if (args.operation === \"delete\") {\n if (!args.id) throw new Error(\"id is required for delete operation.\");\n const deleted = await deleteCustomProvider(\n args.scope,\n scopeId,\n args.id,\n orgRole,\n );\n return { deleted, id: args.id };\n }\n\n if (!args.id) throw new Error(\"id is required for upsert operation.\");\n if (!args.label)\n throw new Error(\"label is required for upsert operation.\");\n if (!args.baseUrl)\n throw new Error(\"baseUrl is required for upsert operation.\");\n if (!args.auth) throw new Error(\"auth is required for upsert operation.\");\n\n await upsertCustomProvider({\n scope: args.scope,\n scopeId,\n id: args.id,\n label: args.label,\n baseUrl: args.baseUrl,\n auth: args.auth,\n docsUrls: args.docsUrls,\n allowedHostSuffixes: args.allowedHostSuffixes,\n defaultHeaders: args.defaultHeaders,\n notes: args.notes,\n orgRole,\n });\n\n return {\n registered: true,\n id: args.id,\n label: args.label,\n message: `Custom provider \"${args.id}\" registered. Use provider-api-catalog to inspect it and provider-api-request to call it.`,\n };\n },\n });\n}\n"]}
@@ -1,6 +1,6 @@
1
+ export { createDeleteStagedDatasetAction } from "./staged-datasets.js";
1
2
  declare const _default: import("../../action.js").ActionDefinition<{
2
3
  datasetId: string;
3
- appId: string;
4
4
  }, {
5
5
  deleted: boolean;
6
6
  datasetId: string;
@@ -1 +1 @@
1
- {"version":3,"file":"delete-staged-dataset.d.ts","sourceRoot":"","sources":["../../../src/provider-api/actions/delete-staged-dataset.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"delete-staged-dataset.d.ts","sourceRoot":"","sources":["../../../src/provider-api/actions/delete-staged-dataset.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,+BAA+B,EAAE,MAAM,sBAAsB,CAAC"}
@@ -1,35 +1,4 @@
1
- import { z } from "zod";
2
- /**
3
- * delete-staged-dataset — remove a staged dataset and free its storage.
4
- */
5
- import { defineAction } from "../../action.js";
6
- import { getCredentialContext } from "../../server/request-context.js";
7
- import { deleteStagedDataset } from "../staged-datasets-store.js";
8
- export default defineAction({
9
- description: "Delete a staged dataset by id, freeing its scratch storage. " +
10
- "Use after analysis is complete or before re-staging a large dataset under the same name. " +
11
- "Only the owner who staged the dataset can delete it.",
12
- schema: z.object({
13
- datasetId: z
14
- .string()
15
- .min(1)
16
- .describe("Dataset id to delete (from list-staged-datasets or provider-api-request stageAs result)."),
17
- appId: z.string().min(1).describe("App id that owns the dataset."),
18
- }),
19
- http: false,
20
- run: async (args) => {
21
- const ctx = getCredentialContext();
22
- if (!ctx)
23
- throw new Error("No authenticated context for delete-staged-dataset.");
24
- const deleted = await deleteStagedDataset({
25
- id: args.datasetId,
26
- appId: args.appId,
27
- ownerEmail: ctx.userEmail,
28
- });
29
- if (!deleted) {
30
- throw new Error(`Dataset ${args.datasetId} not found (or belongs to a different owner/app).`);
31
- }
32
- return { deleted: true, datasetId: args.datasetId };
33
- },
34
- });
1
+ import { createDeleteStagedDatasetAction } from "./staged-datasets.js";
2
+ export { createDeleteStagedDatasetAction } from "./staged-datasets.js";
3
+ export default createDeleteStagedDatasetAction();
35
4
  //# sourceMappingURL=delete-staged-dataset.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"delete-staged-dataset.js","sourceRoot":"","sources":["../../../src/provider-api/actions/delete-staged-dataset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;GAEG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAElE,eAAe,YAAY,CAAC;IAC1B,WAAW,EACT,8DAA8D;QAC9D,2FAA2F;QAC3F,sDAAsD;IACxD,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,SAAS,EAAE,CAAC;aACT,MAAM,EAAE;aACR,GAAG,CAAC,CAAC,CAAC;aACN,QAAQ,CACP,0FAA0F,CAC3F;QACH,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,+BAA+B,CAAC;KACnE,CAAC;IACF,IAAI,EAAE,KAAK;IACX,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAClB,MAAM,GAAG,GAAG,oBAAoB,EAAE,CAAC;QACnC,IAAI,CAAC,GAAG;YACN,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;QAEzE,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC;YACxC,EAAE,EAAE,IAAI,CAAC,SAAS;YAClB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,UAAU,EAAE,GAAG,CAAC,SAAS;SAC1B,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CACb,WAAW,IAAI,CAAC,SAAS,mDAAmD,CAC7E,CAAC;QACJ,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;IACtD,CAAC;CACF,CAAC,CAAC","sourcesContent":["import { z } from \"zod\";\n\n/**\n * delete-staged-dataset — remove a staged dataset and free its storage.\n */\nimport { defineAction } from \"../../action.js\";\nimport { getCredentialContext } from \"../../server/request-context.js\";\nimport { deleteStagedDataset } from \"../staged-datasets-store.js\";\n\nexport default defineAction({\n description:\n \"Delete a staged dataset by id, freeing its scratch storage. \" +\n \"Use after analysis is complete or before re-staging a large dataset under the same name. \" +\n \"Only the owner who staged the dataset can delete it.\",\n schema: z.object({\n datasetId: z\n .string()\n .min(1)\n .describe(\n \"Dataset id to delete (from list-staged-datasets or provider-api-request stageAs result).\",\n ),\n appId: z.string().min(1).describe(\"App id that owns the dataset.\"),\n }),\n http: false,\n run: async (args) => {\n const ctx = getCredentialContext();\n if (!ctx)\n throw new Error(\"No authenticated context for delete-staged-dataset.\");\n\n const deleted = await deleteStagedDataset({\n id: args.datasetId,\n appId: args.appId,\n ownerEmail: ctx.userEmail,\n });\n\n if (!deleted) {\n throw new Error(\n `Dataset ${args.datasetId} not found (or belongs to a different owner/app).`,\n );\n }\n\n return { deleted: true, datasetId: args.datasetId };\n },\n});\n"]}
1
+ {"version":3,"file":"delete-staged-dataset.js","sourceRoot":"","sources":["../../../src/provider-api/actions/delete-staged-dataset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,+BAA+B,EAAE,MAAM,sBAAsB,CAAC;AAEvE,OAAO,EAAE,+BAA+B,EAAE,MAAM,sBAAsB,CAAC;AAEvE,eAAe,+BAA+B,EAAE,CAAC","sourcesContent":["import { createDeleteStagedDatasetAction } from \"./staged-datasets.js\";\n\nexport { createDeleteStagedDatasetAction } from \"./staged-datasets.js\";\n\nexport default createDeleteStagedDatasetAction();\n"]}
@@ -1,6 +1,5 @@
1
- declare const _default: import("../../action.js").ActionDefinition<{
2
- appId: string;
3
- }, {
1
+ export { createListStagedDatasetsAction } from "./staged-datasets.js";
2
+ declare const _default: import("../../action.js").ActionDefinition<Record<string, never>, {
4
3
  datasets: {
5
4
  id: string;
6
5
  name: string;
@@ -1 +1 @@
1
- {"version":3,"file":"list-staged-datasets.d.ts","sourceRoot":"","sources":["../../../src/provider-api/actions/list-staged-datasets.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"list-staged-datasets.d.ts","sourceRoot":"","sources":["../../../src/provider-api/actions/list-staged-datasets.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,8BAA8B,EAAE,MAAM,sBAAsB,CAAC"}
@@ -1,41 +1,4 @@
1
- import { z } from "zod";
2
- /**
3
- * list-staged-datasets — enumerate scratch datasets staged by the current user.
4
- */
5
- import { defineAction } from "../../action.js";
6
- import { getCredentialContext } from "../../server/request-context.js";
7
- import { listStagedDatasets } from "../staged-datasets-store.js";
8
- export default defineAction({
9
- description: "List staged datasets stored by provider-api-request (stageAs) for the current user and app. " +
10
- "Returns dataset ids, names, row counts, columns, and sizes. " +
11
- "Use these ids with query-staged-dataset to run aggregations, or with delete-staged-dataset to free space.",
12
- schema: z.object({
13
- appId: z
14
- .string()
15
- .min(1)
16
- .describe("App id that owns the datasets (must match the staging context)."),
17
- }),
18
- http: { method: "GET" },
19
- readOnly: true,
20
- run: async (args) => {
21
- const ctx = getCredentialContext();
22
- if (!ctx)
23
- throw new Error("No authenticated context for list-staged-datasets.");
24
- const datasets = await listStagedDatasets({
25
- appId: args.appId,
26
- ownerEmail: ctx.userEmail,
27
- });
28
- return {
29
- datasets: datasets.map((d) => ({
30
- id: d.id,
31
- name: d.name,
32
- rowCount: d.rowCount,
33
- columns: d.columns,
34
- byteSize: d.byteSize,
35
- updatedAt: new Date(d.updatedAt).toISOString(),
36
- })),
37
- total: datasets.length,
38
- };
39
- },
40
- });
1
+ import { createListStagedDatasetsAction } from "./staged-datasets.js";
2
+ export { createListStagedDatasetsAction } from "./staged-datasets.js";
3
+ export default createListStagedDatasetsAction();
41
4
  //# sourceMappingURL=list-staged-datasets.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"list-staged-datasets.js","sourceRoot":"","sources":["../../../src/provider-api/actions/list-staged-datasets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;GAEG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAEjE,eAAe,YAAY,CAAC;IAC1B,WAAW,EACT,8FAA8F;QAC9F,8DAA8D;QAC9D,2GAA2G;IAC7G,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,KAAK,EAAE,CAAC;aACL,MAAM,EAAE;aACR,GAAG,CAAC,CAAC,CAAC;aACN,QAAQ,CACP,iEAAiE,CAClE;KACJ,CAAC;IACF,IAAI,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;IACvB,QAAQ,EAAE,IAAI;IACd,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAClB,MAAM,GAAG,GAAG,oBAAoB,EAAE,CAAC;QACnC,IAAI,CAAC,GAAG;YACN,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;QAExE,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC;YACxC,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,UAAU,EAAE,GAAG,CAAC,SAAS;SAC1B,CAAC,CAAC;QAEH,OAAO;YACL,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC7B,EAAE,EAAE,CAAC,CAAC,EAAE;gBACR,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,SAAS,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE;aAC/C,CAAC,CAAC;YACH,KAAK,EAAE,QAAQ,CAAC,MAAM;SACvB,CAAC;IACJ,CAAC;CACF,CAAC,CAAC","sourcesContent":["import { z } from \"zod\";\n\n/**\n * list-staged-datasets — enumerate scratch datasets staged by the current user.\n */\nimport { defineAction } from \"../../action.js\";\nimport { getCredentialContext } from \"../../server/request-context.js\";\nimport { listStagedDatasets } from \"../staged-datasets-store.js\";\n\nexport default defineAction({\n description:\n \"List staged datasets stored by provider-api-request (stageAs) for the current user and app. \" +\n \"Returns dataset ids, names, row counts, columns, and sizes. \" +\n \"Use these ids with query-staged-dataset to run aggregations, or with delete-staged-dataset to free space.\",\n schema: z.object({\n appId: z\n .string()\n .min(1)\n .describe(\n \"App id that owns the datasets (must match the staging context).\",\n ),\n }),\n http: { method: \"GET\" },\n readOnly: true,\n run: async (args) => {\n const ctx = getCredentialContext();\n if (!ctx)\n throw new Error(\"No authenticated context for list-staged-datasets.\");\n\n const datasets = await listStagedDatasets({\n appId: args.appId,\n ownerEmail: ctx.userEmail,\n });\n\n return {\n datasets: datasets.map((d) => ({\n id: d.id,\n name: d.name,\n rowCount: d.rowCount,\n columns: d.columns,\n byteSize: d.byteSize,\n updatedAt: new Date(d.updatedAt).toISOString(),\n })),\n total: datasets.length,\n };\n },\n});\n"]}
1
+ {"version":3,"file":"list-staged-datasets.js","sourceRoot":"","sources":["../../../src/provider-api/actions/list-staged-datasets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAAE,MAAM,sBAAsB,CAAC;AAEtE,OAAO,EAAE,8BAA8B,EAAE,MAAM,sBAAsB,CAAC;AAEtE,eAAe,8BAA8B,EAAE,CAAC","sourcesContent":["import { createListStagedDatasetsAction } from \"./staged-datasets.js\";\n\nexport { createListStagedDatasetsAction } from \"./staged-datasets.js\";\n\nexport default createListStagedDatasetsAction();\n"]}
@@ -0,0 +1,7 @@
1
+ export declare function sanitizeProviderApiAuditPath(path: unknown): string;
2
+ export declare function buildProviderApiAuditSummary(args: {
3
+ method?: unknown;
4
+ provider?: unknown;
5
+ path?: unknown;
6
+ }): string;
7
+ //# sourceMappingURL=provider-api-audit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-api-audit.d.ts","sourceRoot":"","sources":["../../../src/provider-api/actions/provider-api-audit.ts"],"names":[],"mappings":"AA8DA,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAclE;AAED,wBAAgB,4BAA4B,CAAC,IAAI,EAAE;IACjD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,GAAG,MAAM,CAKT"}
@@ -0,0 +1,74 @@
1
+ const REDACTED = "[redacted]";
2
+ const CREDENTIAL_NAME = /^(?:api[-_]?key|access[-_]?token|auth(?:orization)?|bearer|credential|password|secret|signature|sig|token|x-amz-credential|x-amz-signature)$/i;
3
+ function decodePathSegment(segment) {
4
+ try {
5
+ return decodeURIComponent(segment);
6
+ }
7
+ catch {
8
+ return segment;
9
+ }
10
+ }
11
+ function looksLikeCredentialValue(segment) {
12
+ const value = decodePathSegment(segment);
13
+ if (/^eyJ[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+$/.test(value)) {
14
+ return true;
15
+ }
16
+ if (/^(?:sk|pk|rk|ghp|github_pat|xox[baprs]|ya29|AIza)[-_][A-Za-z0-9_-]+$/i.test(value)) {
17
+ return true;
18
+ }
19
+ return value.length >= 32 && /^[A-Za-z0-9._~-]+$/.test(value);
20
+ }
21
+ function sanitizePathname(pathname) {
22
+ let redactNext = false;
23
+ return pathname
24
+ .split("/")
25
+ .map((segment) => {
26
+ if (!segment)
27
+ return segment;
28
+ const decoded = decodePathSegment(segment);
29
+ if (redactNext) {
30
+ redactNext = false;
31
+ return REDACTED;
32
+ }
33
+ const assignment = decoded.match(/^([^=:]+)([=:])(.+)$/);
34
+ if (assignment && CREDENTIAL_NAME.test(assignment[1])) {
35
+ return `${assignment[1]}${assignment[2]}${REDACTED}`;
36
+ }
37
+ if (CREDENTIAL_NAME.test(decoded)) {
38
+ redactNext = true;
39
+ return segment;
40
+ }
41
+ return looksLikeCredentialValue(segment) ? REDACTED : segment;
42
+ })
43
+ .join("/");
44
+ }
45
+ function sanitizeQuery(search) {
46
+ if (!search)
47
+ return "";
48
+ const redacted = Array.from(new URLSearchParams(search).keys(), (key) => {
49
+ const safeKey = encodeURIComponent(key.slice(0, 100));
50
+ return `${safeKey}=${REDACTED}`;
51
+ });
52
+ return redacted.length > 0 ? `?${redacted.join("&")}` : "";
53
+ }
54
+ export function sanitizeProviderApiAuditPath(path) {
55
+ const raw = String(path ?? "");
56
+ const withoutFragment = raw.split("#", 1)[0] ?? "";
57
+ try {
58
+ const url = new URL(withoutFragment);
59
+ return `${url.protocol}//${url.host}${sanitizePathname(url.pathname)}${sanitizeQuery(url.search)}`;
60
+ }
61
+ catch {
62
+ const queryIndex = withoutFragment.indexOf("?");
63
+ const pathname = queryIndex >= 0 ? withoutFragment.slice(0, queryIndex) : withoutFragment;
64
+ const search = queryIndex >= 0 ? withoutFragment.slice(queryIndex + 1) : "";
65
+ return `${sanitizePathname(pathname)}${sanitizeQuery(search)}`;
66
+ }
67
+ }
68
+ export function buildProviderApiAuditSummary(args) {
69
+ const method = String(args.method || "GET").toUpperCase();
70
+ const provider = String(args.provider ?? "");
71
+ const path = sanitizeProviderApiAuditPath(args.path);
72
+ return `${method} ${provider} ${path}`.slice(0, 200);
73
+ }
74
+ //# sourceMappingURL=provider-api-audit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-api-audit.js","sourceRoot":"","sources":["../../../src/provider-api/actions/provider-api-audit.ts"],"names":[],"mappings":"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","sourcesContent":["const REDACTED = \"[redacted]\";\n\nconst CREDENTIAL_NAME =\n /^(?:api[-_]?key|access[-_]?token|auth(?:orization)?|bearer|credential|password|secret|signature|sig|token|x-amz-credential|x-amz-signature)$/i;\n\nfunction decodePathSegment(segment: string): string {\n try {\n return decodeURIComponent(segment);\n } catch {\n return segment;\n }\n}\n\nfunction looksLikeCredentialValue(segment: string): boolean {\n const value = decodePathSegment(segment);\n if (/^eyJ[A-Za-z0-9_-]+\\.[A-Za-z0-9_-]+\\.[A-Za-z0-9_-]+$/.test(value)) {\n return true;\n }\n if (\n /^(?:sk|pk|rk|ghp|github_pat|xox[baprs]|ya29|AIza)[-_][A-Za-z0-9_-]+$/i.test(\n value,\n )\n ) {\n return true;\n }\n return value.length >= 32 && /^[A-Za-z0-9._~-]+$/.test(value);\n}\n\nfunction sanitizePathname(pathname: string): string {\n let redactNext = false;\n return pathname\n .split(\"/\")\n .map((segment) => {\n if (!segment) return segment;\n const decoded = decodePathSegment(segment);\n if (redactNext) {\n redactNext = false;\n return REDACTED;\n }\n\n const assignment = decoded.match(/^([^=:]+)([=:])(.+)$/);\n if (assignment && CREDENTIAL_NAME.test(assignment[1]!)) {\n return `${assignment[1]}${assignment[2]}${REDACTED}`;\n }\n if (CREDENTIAL_NAME.test(decoded)) {\n redactNext = true;\n return segment;\n }\n return looksLikeCredentialValue(segment) ? REDACTED : segment;\n })\n .join(\"/\");\n}\n\nfunction sanitizeQuery(search: string): string {\n if (!search) return \"\";\n const redacted = Array.from(new URLSearchParams(search).keys(), (key) => {\n const safeKey = encodeURIComponent(key.slice(0, 100));\n return `${safeKey}=${REDACTED}`;\n });\n return redacted.length > 0 ? `?${redacted.join(\"&\")}` : \"\";\n}\n\nexport function sanitizeProviderApiAuditPath(path: unknown): string {\n const raw = String(path ?? \"\");\n const withoutFragment = raw.split(\"#\", 1)[0] ?? \"\";\n\n try {\n const url = new URL(withoutFragment);\n return `${url.protocol}//${url.host}${sanitizePathname(url.pathname)}${sanitizeQuery(url.search)}`;\n } catch {\n const queryIndex = withoutFragment.indexOf(\"?\");\n const pathname =\n queryIndex >= 0 ? withoutFragment.slice(0, queryIndex) : withoutFragment;\n const search = queryIndex >= 0 ? withoutFragment.slice(queryIndex + 1) : \"\";\n return `${sanitizePathname(pathname)}${sanitizeQuery(search)}`;\n }\n}\n\nexport function buildProviderApiAuditSummary(args: {\n method?: unknown;\n provider?: unknown;\n path?: unknown;\n}): string {\n const method = String(args.method || \"GET\").toUpperCase();\n const provider = String(args.provider ?? \"\");\n const path = sanitizeProviderApiAuditPath(args.path);\n return `${method} ${provider} ${path}`.slice(0, 200);\n}\n"]}