@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
@@ -35,8 +35,14 @@ Tier 4 includes **all** of the following — not only editing package source:
35
35
  - Files under `node_modules/@agent-native/*` (core, dispatch, scheduling, …)
36
36
  - `pnpm.overrides`, `overrides`, `resolutions`, or `patchedDependencies` that
37
37
  target any `@agent-native/*` package
38
- - Local patches, vendored copies, or invented "dispatch/core behavior"
39
- shims meant to paper over a version skew or failed upgrade
38
+ - Local package patches or invented "dispatch/core behavior" shims meant to
39
+ paper over a version skew or failed upgrade
40
+
41
+ This does not prohibit intentional app-owned UI customization. When public
42
+ props and composition are insufficient, the `customizing-agent-native` skill
43
+ allows copying the smallest reference UI component from the installed source
44
+ into the app. The copy must use public runtime contracts and must not replace
45
+ Core auth, DB, actions, agent execution, or transport behavior.
40
46
 
41
47
  When an older branch needs current packages, use **`agent-native upgrade`**
42
48
  (see the `upgrade-agent-native` skill). If upgrade or typecheck fails, fix
@@ -88,6 +94,8 @@ inline strings in components.
88
94
  - Don't modify `.env` files or files containing secrets
89
95
  - Don't modify `@agent-native/core`, `@agent-native/dispatch`, or other
90
96
  `@agent-native/*` package internals (including under `node_modules`)
97
+ - Don't confuse a read-only reference copy with editing package internals: use
98
+ `customizing-agent-native` for selective app-owned UI adoption
91
99
  - Don't add `pnpm.overrides` / `patchedDependencies` / `resolutions` for
92
100
  `@agent-native/*` to "make the app run" after a version bump
93
101
  - Don't invent local dispatch/core behavior overrides when upgrade fails —
@@ -99,6 +107,7 @@ inline strings in components.
99
107
  ## Related Skills
100
108
 
101
109
  - **upgrade-agent-native** — supported path to bring an older app/workspace current
110
+ - **customizing-agent-native** — safe selective adoption of installed reference UI
102
111
  - **storing-data** — Tier 1 modifications (data files) are the safest and most common
103
112
  - **actions** — The agent can create or modify actions to add new capabilities
104
113
  - **delegate-to-agent** — Self-modification requests come through the agent chat
@@ -63,6 +63,11 @@ install → refresh scaffold skills → verify, then fix **app** code only.
63
63
  - Re-run `agent-native upgrade` or `pnpm typecheck`
64
64
  - Stop and ask the user if you cannot fix the app-level error
65
65
 
66
+ Intentional app-level UI customization is a separate workflow. Read
67
+ `customizing-agent-native` when the product needs to own a selectively
68
+ copied component; do not use that path to reproduce framework runtime
69
+ behavior or hide version skew.
70
+
66
71
  4. **Dry-run / partial runs**
67
72
 
68
73
  ```bash
@@ -91,4 +96,5 @@ install → refresh scaffold skills → verify, then fix **app** code only.
91
96
 
92
97
  - **self-modifying-code** — Tier 4: framework packages are off limits
93
98
  - **agent-native-docs** — version-matched docs after the bump
99
+ - **customizing-agent-native** — intentional app-owned UI copies, not upgrade patches
94
100
  - **portability** — keep app code provider-agnostic across upgrades
@@ -1,14 +1,13 @@
1
1
  /**
2
2
  * Thin slides re-export of staged dataset deletion, pre-bound to appId="slides".
3
3
  */
4
- import { defineAction } from "@agent-native/core";
5
- import { deleteStagedDataset } from "@agent-native/core/provider-api/staged-datasets-store";
4
+ import { createDeleteStagedDatasetAction } from "@agent-native/core/provider-api/actions/staged-datasets";
6
5
  import { getCredentialContext } from "@agent-native/core/server/request-context";
7
6
  import { z } from "zod";
8
7
 
9
8
  import { SLIDES_APP_ID } from "../server/lib/provider-api.js";
10
9
 
11
- export default defineAction({
10
+ export default createDeleteStagedDatasetAction({
12
11
  description:
13
12
  "Delete a staged dataset by id, freeing its scratch storage. Use after analysis is complete or before re-staging under the same name. Only the owner who staged the dataset can delete it.",
14
13
  schema: z.object({
@@ -19,25 +18,7 @@ export default defineAction({
19
18
  "Dataset id to delete (from list-staged-datasets or provider-api-request stageAs result).",
20
19
  ),
21
20
  }),
21
+ appId: SLIDES_APP_ID,
22
+ getOwnerEmail: () => getCredentialContext()?.userEmail ?? null,
22
23
  http: false,
23
- run: async (args) => {
24
- const ctx = getCredentialContext();
25
- if (!ctx) {
26
- throw new Error("No authenticated context for delete-staged-dataset.");
27
- }
28
-
29
- const deleted = await deleteStagedDataset({
30
- id: args.datasetId,
31
- appId: SLIDES_APP_ID,
32
- ownerEmail: ctx.userEmail,
33
- });
34
-
35
- if (!deleted) {
36
- throw new Error(
37
- `Dataset ${args.datasetId} not found (or belongs to a different owner/app).`,
38
- );
39
- }
40
-
41
- return { deleted: true, datasetId: args.datasetId };
42
- },
43
24
  });
@@ -1,40 +1,17 @@
1
1
  /**
2
2
  * Thin slides re-export of staged dataset listing, pre-bound to appId="slides".
3
3
  */
4
- import { defineAction } from "@agent-native/core";
5
- import { listStagedDatasets } from "@agent-native/core/provider-api/staged-datasets-store";
4
+ import { createListStagedDatasetsAction } from "@agent-native/core/provider-api/actions/staged-datasets";
6
5
  import { getCredentialContext } from "@agent-native/core/server/request-context";
7
6
  import { z } from "zod";
8
7
 
9
8
  import { SLIDES_APP_ID } from "../server/lib/provider-api.js";
10
9
 
11
- export default defineAction({
10
+ export default createListStagedDatasetsAction({
12
11
  description:
13
12
  "List staged datasets stored by provider-api-request (stageAs) for the current user. Returns dataset ids, names, row counts, columns, and sizes. Use dataset ids with query-staged-dataset to aggregate, or with delete-staged-dataset to free scratch storage.",
14
13
  schema: z.object({}),
14
+ appId: SLIDES_APP_ID,
15
+ getOwnerEmail: () => getCredentialContext()?.userEmail ?? null,
15
16
  http: { method: "GET" },
16
- readOnly: true,
17
- run: async () => {
18
- const ctx = getCredentialContext();
19
- if (!ctx) {
20
- throw new Error("No authenticated context for list-staged-datasets.");
21
- }
22
-
23
- const datasets = await listStagedDatasets({
24
- appId: SLIDES_APP_ID,
25
- ownerEmail: ctx.userEmail,
26
- });
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
17
  });
@@ -1,4 +1,4 @@
1
- import { defineAction } from "@agent-native/core";
1
+ import { createProviderApiCatalogAction } from "@agent-native/core/provider-api/actions/provider-api";
2
2
  import { z } from "zod";
3
3
 
4
4
  import {
@@ -8,21 +8,18 @@ import {
8
8
 
9
9
  const ProviderSchema = z.enum(SLIDES_PROVIDER_API_IDS);
10
10
 
11
- export default defineAction({
12
- description:
13
- "List raw HTTP API capabilities for Slides-connected providers. Use before provider-api-request when deck/import convenience actions are too narrow. Returns provider base URLs, auth style, credential key names, docs/spec URLs, placeholders, and examples; never returns secret values.",
14
- schema: z.object({
15
- provider: ProviderSchema.optional().describe(
16
- "Optional provider id to inspect. Omit to list every Slides provider API escape hatch.",
17
- ),
18
- }),
19
- http: { method: "GET" },
20
- readOnly: true,
21
- run: async ({ provider }) => {
22
- return {
23
- providers: await listProviderApiCatalog(provider),
24
- guidance:
25
- "Slides actions like import-google-doc and export-google-slides are workflow shortcuts, not capability limits. When the provider API can answer the question with a better endpoint, query, body, pagination mode, metadata field, export format, or API version, inspect docs/spec URLs and call provider-api-request directly.",
26
- };
11
+ export default createProviderApiCatalogAction(
12
+ { listCatalog: listProviderApiCatalog },
13
+ {
14
+ description:
15
+ "List raw HTTP API capabilities for Slides-connected providers. Use before provider-api-request when deck/import convenience actions are too narrow. Returns provider base URLs, auth style, credential key names, docs/spec URLs, placeholders, and examples; never returns secret values.",
16
+ schema: z.object({
17
+ provider: ProviderSchema.optional().describe(
18
+ "Optional provider id to inspect. Omit to list every Slides provider API escape hatch.",
19
+ ),
20
+ }),
21
+ http: { method: "GET" },
22
+ guidance:
23
+ "Slides actions like import-google-doc and export-google-slides are workflow shortcuts, not capability limits. When the provider API can answer the question with a better endpoint, query, body, pagination mode, metadata field, export format, or API version, inspect docs/spec URLs and call provider-api-request directly.",
27
24
  },
28
- });
25
+ );
@@ -1,4 +1,4 @@
1
- import { defineAction } from "@agent-native/core";
1
+ import { createProviderApiDocsAction } from "@agent-native/core/provider-api/actions/provider-api";
2
2
  import { z } from "zod";
3
3
 
4
4
  import {
@@ -23,52 +23,61 @@ const WebContentSearchSchema = z.object({
23
23
  caseSensitive: BooleanFromQuerySchema.optional(),
24
24
  });
25
25
 
26
- export default defineAction({
27
- description:
28
- "Inspect provider API docs/spec metadata, or fetch any public API documentation page, OpenAPI spec, changelog, or web page. Use this before provider-api-request when the exact Google Drive endpoint, export format, payload shape, pagination, or API version is uncertain.",
29
- schema: z.object({
30
- provider: ProviderSchema.describe(
31
- "Provider whose API docs/spec to inspect.",
32
- ),
33
- url: z
34
- .string()
35
- .url()
36
- .optional()
37
- .describe(
38
- "Optional public docs/spec URL to fetch. Registered docs/spec URLs from provider-api-catalog are curated starting points, but any public http(s) API documentation URL is allowed.",
26
+ export default createProviderApiDocsAction(
27
+ { fetchDocs: fetchProviderApiDocs },
28
+ {
29
+ description:
30
+ "Inspect provider API docs/spec metadata, or fetch any public API documentation page, OpenAPI spec, changelog, or web page. Use this before provider-api-request when the exact Google Drive endpoint, export format, payload shape, pagination, or API version is uncertain.",
31
+ schema: z.object({
32
+ provider: ProviderSchema.describe(
33
+ "Provider whose API docs/spec to inspect.",
39
34
  ),
40
- maxBytes: z.coerce
41
- .number()
42
- .int()
43
- .min(1_000)
44
- .max(4 * 1024 * 1024)
45
- .optional()
46
- .describe("Maximum response bytes to read. Default 1MB, max 4MB."),
47
- maxChars: z.coerce
48
- .number()
49
- .int()
50
- .min(1)
51
- .max(200_000)
52
- .optional()
53
- .describe("Maximum extracted content characters to return."),
54
- responseMode: z
55
- .enum(["auto", "raw", "text", "markdown", "links", "metadata", "matches"])
56
- .optional()
57
- .describe(
58
- "How to return fetched docs. Default auto extracts HTML to markdown; use matches with search for compact snippets.",
35
+ url: z
36
+ .string()
37
+ .url()
38
+ .optional()
39
+ .describe(
40
+ "Optional public docs/spec URL to fetch. Registered docs/spec URLs from provider-api-catalog are curated starting points, but any public http(s) API documentation URL is allowed.",
41
+ ),
42
+ maxBytes: z.coerce
43
+ .number()
44
+ .int()
45
+ .min(1_000)
46
+ .max(4 * 1024 * 1024)
47
+ .optional()
48
+ .describe("Maximum response bytes to read. Default 1MB, max 4MB."),
49
+ maxChars: z.coerce
50
+ .number()
51
+ .int()
52
+ .min(1)
53
+ .max(200_000)
54
+ .optional()
55
+ .describe("Maximum extracted content characters to return."),
56
+ responseMode: z
57
+ .enum([
58
+ "auto",
59
+ "raw",
60
+ "text",
61
+ "markdown",
62
+ "links",
63
+ "metadata",
64
+ "matches",
65
+ ])
66
+ .optional()
67
+ .describe(
68
+ "How to return fetched docs. Default auto extracts HTML to markdown; use matches with search for compact snippets.",
69
+ ),
70
+ extract: z
71
+ .enum(["readability", "all-visible", "none"])
72
+ .optional()
73
+ .describe("HTML extraction strategy. Default readability."),
74
+ includeLinks: BooleanFromQuerySchema.optional().describe(
75
+ "Include compact links from extracted HTML. Default true.",
59
76
  ),
60
- extract: z
61
- .enum(["readability", "all-visible", "none"])
62
- .optional()
63
- .describe("HTML extraction strategy. Default readability."),
64
- includeLinks: BooleanFromQuerySchema.optional().describe(
65
- "Include compact links from extracted HTML. Default true.",
66
- ),
67
- search: WebContentSearchSchema.optional().describe(
68
- "Optional post-fetch search over extracted content by default. Supports query, queries, terms, regex, source, maxMatches, and contextChars.",
69
- ),
70
- }),
71
- http: { method: "GET" },
72
- readOnly: true,
73
- run: async (args) => fetchProviderApiDocs(args),
74
- });
77
+ search: WebContentSearchSchema.optional().describe(
78
+ "Optional post-fetch search over extracted content by default. Supports query, queries, terms, regex, source, maxMatches, and contextChars.",
79
+ ),
80
+ }),
81
+ http: { method: "GET" },
82
+ },
83
+ );
@@ -1,5 +1,4 @@
1
- import { defineAction } from "@agent-native/core";
2
- import { stagingExecuteRequest } from "@agent-native/core/provider-api/staging";
1
+ import { createProviderApiRequestAction } from "@agent-native/core/provider-api/actions/provider-api";
3
2
  import { getCredentialContext } from "@agent-native/core/server/request-context";
4
3
  import { z } from "zod";
5
4
 
@@ -7,7 +6,6 @@ import {
7
6
  SLIDES_APP_ID,
8
7
  SLIDES_PROVIDER_API_IDS,
9
8
  executeProviderApiRequest,
10
- getSlidesProviderApiRuntime,
11
9
  } from "../server/lib/provider-api.js";
12
10
 
13
11
  const ProviderSchema = z.enum(SLIDES_PROVIDER_API_IDS);
@@ -68,173 +66,148 @@ const PaginationSchema = z
68
66
  })
69
67
  .optional();
70
68
 
71
- export default defineAction({
72
- description:
73
- "Make an arbitrary authenticated HTTP request to a Slides-connected provider API. " +
74
- "Use this as the flexible escape hatch when a convenience action cannot express the needed Google Drive endpoint, file metadata field, export format, query, request body, pagination mode, payload shape, or API version. " +
75
- "The request is constrained to the provider host, uses the user's configured Google Docs/Drive OAuth connection automatically, blocks private/internal URLs, and redacts secrets from responses. " +
76
- "\n\nSTAGING MODE (preferred for large responses): Pass stageAs to write response items into a scratch dataset instead of returning the raw body. " +
77
- "Returns { dataset, rowCount, columns, sampleRows } so only a compact summary enters context. Use query-staged-dataset to aggregate, filter, and project the data without re-fetching. " +
78
- "\n\nPAGINATION: When stageAs is set, pass pagination config to fetch all pages server-side into the same dataset. For Google Drive files.list, use nextCursorPath='nextPageToken', cursorParam='pageToken', and itemsPath='files'.",
79
- schema: z.object({
80
- provider: ProviderSchema.describe(
81
- "Configured provider API to call, e.g. google_drive.",
82
- ),
83
- method: MethodSchema.default("GET").describe("HTTP method to use."),
84
- path: z
85
- .string()
86
- .min(1)
87
- .describe(
88
- "Provider API path such as /files, /files/{fileId}, /files/{fileId}/export, or a full URL on an allowed provider host. Use placeholders from provider-api-catalog when provided.",
89
- ),
90
- query: z
91
- .unknown()
92
- .optional()
93
- .describe(
94
- "Optional query params as a JSON object/string. Array values produce repeated query params.",
95
- ),
96
- headers: z
97
- .record(z.string(), z.unknown())
98
- .optional()
99
- .describe(
100
- "Optional extra headers. Unsafe hop-by-hop headers are ignored. Auth headers are injected from stored credentials.",
101
- ),
102
- body: z
103
- .unknown()
104
- .optional()
105
- .describe(
106
- "Optional request body. Objects/arrays are JSON encoded; strings are sent as-is.",
107
- ),
108
- auth: z
109
- .enum(["default", "none"])
110
- .default("default")
111
- .describe(
112
- "Use default to inject configured provider auth. Use none only for public provider endpoints that intentionally require no auth.",
113
- ),
114
- connectionId: z
115
- .string()
116
- .trim()
117
- .min(1)
118
- .optional()
119
- .describe(
120
- "Unused for Slides Google Docs OAuth; reserved for shared grants.",
121
- ),
122
- accountId: z
123
- .string()
124
- .optional()
125
- .describe(
126
- "Optional Google Docs OAuth account email when multiple accounts are connected.",
127
- ),
128
- timeoutMs: z.coerce
129
- .number()
130
- .int()
131
- .min(1_000)
132
- .max(120_000)
133
- .optional()
134
- .describe("Request timeout in milliseconds. Default 30000, max 120000."),
135
- maxBytes: z.coerce
136
- .number()
137
- .int()
138
- .min(1_000)
139
- .max(4 * 1024 * 1024)
140
- .optional()
141
- .describe(
142
- "Maximum response bytes to read. Default 1MB, max 4MB. Ignored when saveToFile is set (allows up to 20MB).",
143
- ),
144
- stageAs: z
145
- .string()
146
- .min(1)
147
- .optional()
148
- .describe(
149
- "When set, parse the response as an array of records and write them into a staged dataset with this name. Returns a compact summary instead of the raw body. Re-staging the same name replaces the previous dataset.",
150
- ),
151
- itemsPath: z
152
- .string()
153
- .optional()
154
- .describe(
155
- "Dot-path to the items array in the response JSON, e.g. 'files' for Google Drive files.list. Omit for auto-detection.",
156
- ),
157
- pagination: PaginationSchema.describe(
158
- "Pagination config for server-side fetchAll when stageAs is set. Supports cursor (nextCursorPath + cursorParam or cursorBodyPath), page, and offset modes.",
159
- ),
160
- saveToFile: z
161
- .string()
162
- .optional()
163
- .describe(
164
- "Workspace file path to save the full response body to instead of returning it in context, e.g. 'slides/google-drive-files.json'. When set, returns only a compact summary and allows up to 20MB response.",
165
- ),
166
- fetchAllPages: z
167
- .object({
168
- cursorPath: z
169
- .string()
170
- .describe(
171
- "Dot-path in the JSON response body where the next-page cursor lives, e.g. 'nextPageToken'.",
172
- ),
173
- cursorParam: z
174
- .string()
175
- .optional()
176
- .describe(
177
- "Query parameter name to pass the cursor on subsequent pages, e.g. 'pageToken'. Use cursorBodyPath instead for APIs that put cursors in POST bodies.",
178
- ),
179
- cursorBodyPath: z
180
- .string()
181
- .optional()
182
- .describe(
183
- "Dot-path in the JSON request body to set to the next cursor. Use for POST-body pagination.",
184
- ),
185
- itemsPath: z
186
- .string()
187
- .optional()
188
- .describe(
189
- "Dot-path to the items array in each response, e.g. 'files'. When omitted, the whole response body is appended per page.",
190
- ),
191
- maxPages: z.coerce
192
- .number()
193
- .int()
194
- .min(1)
195
- .max(50)
196
- .optional()
197
- .describe(
198
- "Maximum pages to fetch. Default 10, max 50. Stops early when cursor is empty.",
199
- ),
200
- })
201
- .optional()
202
- .describe(
203
- "Enable cursor-based pagination. For Google Drive files.list use { cursorPath: 'nextPageToken', cursorParam: 'pageToken', itemsPath: 'files' }. For APIs that page through POST bodies, use cursorBodyPath instead of cursorParam.",
204
- ),
205
- }),
206
- http: false,
207
- toolCallable: false,
208
- run: async (args) => {
209
- if (args.stageAs) {
210
- const ctx = getCredentialContext();
211
- if (!ctx) {
212
- throw new Error("No authenticated context for provider API staging.");
213
- }
214
- const providerRuntime = getSlidesProviderApiRuntime();
215
- return stagingExecuteRequest(
216
- {
217
- provider: args.provider,
218
- method: args.method,
219
- path: args.path,
220
- query: args.query,
221
- headers: args.headers,
222
- body: args.body,
223
- auth: args.auth,
224
- connectionId: args.connectionId,
225
- accountId: args.accountId,
226
- timeoutMs: args.timeoutMs,
227
- maxBytes: args.maxBytes,
228
- stageAs: args.stageAs,
229
- itemsPath: args.itemsPath,
230
- pagination: args.pagination,
231
- },
232
- (reqArgs) => providerRuntime.executeRequest(reqArgs),
233
- { appId: SLIDES_APP_ID, ownerEmail: ctx.userEmail },
234
- );
235
- }
236
- return executeProviderApiRequest(
237
- args as unknown as Parameters<typeof executeProviderApiRequest>[0],
238
- );
69
+ export default createProviderApiRequestAction(
70
+ { executeRequest: executeProviderApiRequest },
71
+ {
72
+ description:
73
+ "Make an arbitrary authenticated HTTP request to a Slides-connected provider API. " +
74
+ "Use this as the flexible escape hatch when a convenience action cannot express the needed Google Drive endpoint, file metadata field, export format, query, request body, pagination mode, payload shape, or API version. " +
75
+ "The request is constrained to the provider host, uses the user's configured Google Docs/Drive OAuth connection automatically, blocks private/internal URLs, and redacts secrets from responses. " +
76
+ "\n\nSTAGING MODE (preferred for large responses): Pass stageAs to write response items into a scratch dataset instead of returning the raw body. " +
77
+ "Returns { dataset, rowCount, columns, sampleRows } so only a compact summary enters context. Use query-staged-dataset to aggregate, filter, and project the data without re-fetching. " +
78
+ "\n\nPAGINATION: When stageAs is set, pass pagination config to fetch all pages server-side into the same dataset. For Google Drive files.list, use nextCursorPath='nextPageToken', cursorParam='pageToken', and itemsPath='files'.",
79
+ schema: z.object({
80
+ provider: ProviderSchema.describe(
81
+ "Configured provider API to call, e.g. google_drive.",
82
+ ),
83
+ method: MethodSchema.default("GET").describe("HTTP method to use."),
84
+ path: z
85
+ .string()
86
+ .min(1)
87
+ .describe(
88
+ "Provider API path such as /files, /files/{fileId}, /files/{fileId}/export, or a full URL on an allowed provider host. Use placeholders from provider-api-catalog when provided.",
89
+ ),
90
+ query: z
91
+ .unknown()
92
+ .optional()
93
+ .describe(
94
+ "Optional query params as a JSON object/string. Array values produce repeated query params.",
95
+ ),
96
+ headers: z
97
+ .record(z.string(), z.unknown())
98
+ .optional()
99
+ .describe(
100
+ "Optional extra headers. Unsafe hop-by-hop headers are ignored. Auth headers are injected from stored credentials.",
101
+ ),
102
+ body: z
103
+ .unknown()
104
+ .optional()
105
+ .describe(
106
+ "Optional request body. Objects/arrays are JSON encoded; strings are sent as-is.",
107
+ ),
108
+ auth: z
109
+ .enum(["default", "none"])
110
+ .default("default")
111
+ .describe(
112
+ "Use default to inject configured provider auth. Use none only for public provider endpoints that intentionally require no auth.",
113
+ ),
114
+ connectionId: z
115
+ .string()
116
+ .trim()
117
+ .min(1)
118
+ .optional()
119
+ .describe(
120
+ "Unused for Slides Google Docs OAuth; reserved for shared grants.",
121
+ ),
122
+ accountId: z
123
+ .string()
124
+ .optional()
125
+ .describe(
126
+ "Optional Google Docs OAuth account email when multiple accounts are connected.",
127
+ ),
128
+ timeoutMs: z.coerce
129
+ .number()
130
+ .int()
131
+ .min(1_000)
132
+ .max(120_000)
133
+ .optional()
134
+ .describe(
135
+ "Request timeout in milliseconds. Default 30000, max 120000.",
136
+ ),
137
+ maxBytes: z.coerce
138
+ .number()
139
+ .int()
140
+ .min(1_000)
141
+ .max(4 * 1024 * 1024)
142
+ .optional()
143
+ .describe(
144
+ "Maximum response bytes to read. Default 1MB, max 4MB. Ignored when saveToFile is set (allows up to 20MB).",
145
+ ),
146
+ stageAs: z
147
+ .string()
148
+ .min(1)
149
+ .optional()
150
+ .describe(
151
+ "When set, parse the response as an array of records and write them into a staged dataset with this name. Returns a compact summary instead of the raw body. Re-staging the same name replaces the previous dataset.",
152
+ ),
153
+ itemsPath: z
154
+ .string()
155
+ .optional()
156
+ .describe(
157
+ "Dot-path to the items array in the response JSON, e.g. 'files' for Google Drive files.list. Omit for auto-detection.",
158
+ ),
159
+ pagination: PaginationSchema.describe(
160
+ "Pagination config for server-side fetchAll when stageAs is set. Supports cursor (nextCursorPath + cursorParam or cursorBodyPath), page, and offset modes.",
161
+ ),
162
+ saveToFile: z
163
+ .string()
164
+ .optional()
165
+ .describe(
166
+ "Workspace file path to save the full response body to instead of returning it in context, e.g. 'slides/google-drive-files.json'. When set, returns only a compact summary and allows up to 20MB response.",
167
+ ),
168
+ fetchAllPages: z
169
+ .object({
170
+ cursorPath: z
171
+ .string()
172
+ .describe(
173
+ "Dot-path in the JSON response body where the next-page cursor lives, e.g. 'nextPageToken'.",
174
+ ),
175
+ cursorParam: z
176
+ .string()
177
+ .optional()
178
+ .describe(
179
+ "Query parameter name to pass the cursor on subsequent pages, e.g. 'pageToken'. Use cursorBodyPath instead for APIs that put cursors in POST bodies.",
180
+ ),
181
+ cursorBodyPath: z
182
+ .string()
183
+ .optional()
184
+ .describe(
185
+ "Dot-path in the JSON request body to set to the next cursor. Use for POST-body pagination.",
186
+ ),
187
+ itemsPath: z
188
+ .string()
189
+ .optional()
190
+ .describe(
191
+ "Dot-path to the items array in each response, e.g. 'files'. When omitted, the whole response body is appended per page.",
192
+ ),
193
+ maxPages: z.coerce
194
+ .number()
195
+ .int()
196
+ .min(1)
197
+ .max(50)
198
+ .optional()
199
+ .describe(
200
+ "Maximum pages to fetch. Default 10, max 50. Stops early when cursor is empty.",
201
+ ),
202
+ })
203
+ .optional()
204
+ .describe(
205
+ "Enable cursor-based pagination. For Google Drive files.list use { cursorPath: 'nextPageToken', cursorParam: 'pageToken', itemsPath: 'files' }. For APIs that page through POST bodies, use cursorBodyPath instead of cursorParam.",
206
+ ),
207
+ }),
208
+ appId: SLIDES_APP_ID,
209
+ getOwnerEmail: () => getCredentialContext()?.userEmail ?? null,
210
+ http: false,
211
+ toolCallable: false,
239
212
  },
240
- });
213
+ );