@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.
- package/corpus/README.md +4 -2
- package/corpus/core/CHANGELOG.md +22 -0
- package/corpus/core/docs/AGENTS.md +7 -0
- package/corpus/core/docs/content/integrations.mdx +63 -2
- package/corpus/core/docs/design/provider-integration-authority.md +117 -0
- package/corpus/core/package.json +6 -1
- package/corpus/core/scripts/materialize-source-corpus.mjs +9 -2
- package/corpus/core/src/cli/atomic-json-file.ts +324 -0
- package/corpus/core/src/cli/claude-code-participant.ts +515 -0
- package/corpus/core/src/cli/code-agent-executor.ts +18 -10
- package/corpus/core/src/cli/code-agent-runs.concurrent-worker.ts +33 -0
- package/corpus/core/src/cli/code-agent-runs.ts +55 -62
- package/corpus/core/src/cli/codex-cli-participant.ts +496 -0
- package/corpus/core/src/cli/multi-frontier-runs.ts +1246 -135
- package/corpus/core/src/client/chat/ChatHistoryList.tsx +7 -404
- package/corpus/core/src/integrations/index.ts +10 -0
- package/corpus/core/src/integrations/slack-oauth.ts +1 -0
- package/corpus/core/src/integrations/webhook-delivery.ts +55 -0
- package/corpus/core/src/notifications/channels.ts +4 -10
- package/corpus/core/src/provider-api/actions/custom-provider-registration.ts +197 -0
- package/corpus/core/src/provider-api/actions/delete-staged-dataset.ts +3 -42
- package/corpus/core/src/provider-api/actions/list-staged-datasets.ts +3 -45
- package/corpus/core/src/provider-api/actions/provider-api-audit.ts +88 -0
- package/corpus/core/src/provider-api/actions/provider-api.ts +460 -0
- package/corpus/core/src/provider-api/actions/query-staged-dataset.ts +3 -140
- package/corpus/core/src/provider-api/actions/staged-datasets.ts +359 -0
- package/corpus/core/src/provider-api/gong.ts +108 -0
- package/corpus/core/src/scripts/docs/source-search.ts +2 -1
- package/corpus/core/src/server/google-oauth-credentials.ts +80 -3
- package/corpus/core/src/server/index.ts +6 -0
- package/corpus/core/src/styles/chat-history-list.css +1 -313
- package/corpus/core/src/templates/default/.agents/skills/actions/SKILL.md +32 -12
- package/corpus/core/src/templates/default/.agents/skills/agent-native-docs/SKILL.md +10 -0
- package/corpus/core/src/templates/default/.agents/skills/customizing-agent-native/SKILL.md +102 -0
- package/corpus/core/src/templates/default/.agents/skills/integration-webhooks/SKILL.md +323 -0
- package/corpus/core/src/templates/default/.agents/skills/onboarding/SKILL.md +56 -0
- package/corpus/core/src/templates/default/.agents/skills/secrets/SKILL.md +273 -0
- package/corpus/core/src/templates/default/.agents/skills/self-modifying-code/SKILL.md +11 -2
- package/corpus/core/src/templates/default/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
- package/corpus/core/src/templates/default/AGENTS.md +25 -18
- package/corpus/core/src/templates/headless/.agents/skills/actions/SKILL.md +512 -0
- package/corpus/core/src/templates/headless/.agents/skills/agent-native-docs/SKILL.md +10 -0
- package/corpus/core/src/templates/headless/.agents/skills/customizing-agent-native/SKILL.md +102 -0
- package/corpus/core/src/templates/headless/.agents/skills/integration-webhooks/SKILL.md +323 -0
- package/corpus/core/src/templates/headless/.agents/skills/secrets/SKILL.md +273 -0
- package/corpus/core/src/templates/headless/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
- package/corpus/core/src/templates/headless/AGENTS.md +7 -0
- package/corpus/core/src/templates/workspace-core/.agents/skills/actions/SKILL.md +32 -12
- package/corpus/core/src/templates/workspace-core/.agents/skills/agent-native-docs/SKILL.md +10 -0
- package/corpus/core/src/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +6 -0
- package/corpus/core/src/templates/workspace-core/.agents/skills/customizing-agent-native/SKILL.md +102 -0
- package/corpus/core/src/templates/workspace-core/.agents/skills/self-modifying-code/SKILL.md +11 -2
- package/corpus/core/src/templates/workspace-core/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
- package/corpus/core/src/templates/workspace-core/AGENTS.md +4 -0
- package/corpus/core/src/templates/workspace-root/AGENTS.md +4 -0
- package/corpus/templates/analytics/.agents/skills/actions/SKILL.md +32 -12
- package/corpus/templates/analytics/.agents/skills/customizing-agent-native/SKILL.md +102 -0
- package/corpus/templates/analytics/.agents/skills/self-modifying-code/SKILL.md +11 -2
- package/corpus/templates/analytics/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
- package/corpus/templates/analytics/actions/delete-staged-dataset.ts +3 -23
- package/corpus/templates/analytics/actions/list-staged-datasets.ts +3 -27
- package/corpus/templates/analytics/actions/provider-api-catalog.ts +16 -19
- package/corpus/templates/analytics/actions/provider-api-docs.ts +3 -5
- package/corpus/templates/analytics/actions/provider-api-request.ts +162 -185
- package/corpus/templates/analytics/actions/query-staged-dataset.ts +3 -47
- package/corpus/templates/analytics/app/components/layout/Sidebar.tsx +52 -161
- package/corpus/templates/assets/.agents/skills/actions/SKILL.md +32 -12
- package/corpus/templates/assets/.agents/skills/customizing-agent-native/SKILL.md +102 -0
- package/corpus/templates/assets/.agents/skills/self-modifying-code/SKILL.md +11 -2
- package/corpus/templates/assets/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
- package/corpus/templates/assets/app/components/layout/Sidebar.tsx +63 -160
- package/corpus/templates/brain/.agents/skills/actions/SKILL.md +32 -12
- package/corpus/templates/brain/.agents/skills/customizing-agent-native/SKILL.md +102 -0
- package/corpus/templates/brain/.agents/skills/self-modifying-code/SKILL.md +11 -2
- package/corpus/templates/brain/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
- package/corpus/templates/brain/actions/_schemas.ts +13 -7
- package/corpus/templates/brain/actions/delete-staged-dataset.ts +3 -24
- package/corpus/templates/brain/actions/list-staged-datasets.ts +3 -28
- package/corpus/templates/brain/actions/provider-api-catalog.ts +5 -11
- package/corpus/templates/brain/actions/provider-api-docs.ts +3 -5
- package/corpus/templates/brain/actions/provider-api-request.ts +3 -37
- package/corpus/templates/brain/actions/query-staged-dataset.ts +3 -48
- package/corpus/templates/brain/actions/update-source.ts +5 -1
- package/corpus/templates/brain/app/components/layout/Sidebar.tsx +48 -154
- package/corpus/templates/brain/app/lib/brain.ts +55 -0
- package/corpus/templates/brain/app/lib/ingest-handoff.ts +35 -0
- package/corpus/templates/brain/changelog/2026-07-19-slack-backfills-can-now-join-configured-public-channels-befo.md +6 -0
- package/corpus/templates/brain/changelog/2026-07-19-slack-backfills-now-continue-across-the-configured-number-of.md +6 -0
- package/corpus/templates/brain/changelog/2026-07-19-slack-backfills-now-start-with-a-safe-four-week-window-and-r.md +6 -0
- package/corpus/templates/brain/server/lib/connectors.ts +53 -2
- package/corpus/templates/brain/server/lib/slack-channel-membership.ts +44 -0
- package/corpus/templates/brain/shared/slack-source-config.ts +60 -0
- package/corpus/templates/calendar/.agents/skills/actions/SKILL.md +32 -12
- package/corpus/templates/calendar/.agents/skills/customizing-agent-native/SKILL.md +102 -0
- package/corpus/templates/calendar/.agents/skills/self-modifying-code/SKILL.md +11 -2
- package/corpus/templates/calendar/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
- package/corpus/templates/calendar/actions/delete-staged-dataset.ts +3 -24
- package/corpus/templates/calendar/actions/list-staged-datasets.ts +3 -28
- package/corpus/templates/calendar/actions/provider-api-catalog.ts +5 -11
- package/corpus/templates/calendar/actions/provider-api-docs.ts +3 -5
- package/corpus/templates/calendar/actions/provider-api-request.ts +3 -37
- package/corpus/templates/calendar/actions/query-staged-dataset.ts +3 -48
- package/corpus/templates/calendar/server/handlers/gong.ts +6 -61
- package/corpus/templates/calendar/server/handlers/google-auth.ts +10 -8
- package/corpus/templates/calendar/server/lib/google-calendar.ts +7 -45
- package/corpus/templates/chat/.agents/skills/actions/SKILL.md +32 -12
- package/corpus/templates/chat/.agents/skills/agent-native-docs/SKILL.md +10 -0
- package/corpus/templates/chat/.agents/skills/customizing-agent-native/SKILL.md +102 -0
- package/corpus/templates/chat/.agents/skills/self-modifying-code/SKILL.md +11 -2
- package/corpus/templates/chat/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
- package/corpus/templates/chat/AGENTS.md +5 -2
- package/corpus/templates/chat/app/components/layout/Sidebar.tsx +51 -157
- package/corpus/templates/clips/.agents/skills/actions/SKILL.md +32 -12
- package/corpus/templates/clips/.agents/skills/customizing-agent-native/SKILL.md +102 -0
- package/corpus/templates/clips/.agents/skills/self-modifying-code/SKILL.md +11 -2
- package/corpus/templates/clips/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
- package/corpus/templates/clips/AGENTS.md +11 -0
- package/corpus/templates/clips/actions/export-to-brain.ts +505 -171
- package/corpus/templates/clips/changelog/2026-07-19-ready-clips-transcripts-can-be-backfilled-to-brain-for-a-bou.md +6 -0
- package/corpus/templates/clips/server/lib/calendar-event-meetings.ts +1 -1
- package/corpus/templates/clips/server/lib/google-calendar-client.ts +12 -22
- package/corpus/templates/clips/server/lib/google-calendar-oauth.ts +9 -6
- package/corpus/templates/clips/server/lib/slack-oauth.ts +12 -47
- package/corpus/templates/clips/server/routes/_agent-native/google/auth-url.get.ts +2 -6
- package/corpus/templates/clips/server/routes/api/auth/google-calendar.get.ts +4 -4
- package/corpus/templates/content/.agents/skills/actions/SKILL.md +32 -12
- package/corpus/templates/content/.agents/skills/customizing-agent-native/SKILL.md +102 -0
- package/corpus/templates/content/.agents/skills/self-modifying-code/SKILL.md +11 -2
- package/corpus/templates/content/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
- package/corpus/templates/content/actions/delete-staged-dataset.ts +3 -24
- package/corpus/templates/content/actions/list-staged-datasets.ts +3 -28
- package/corpus/templates/content/actions/provider-api-catalog.ts +5 -11
- package/corpus/templates/content/actions/provider-api-docs.ts +3 -5
- package/corpus/templates/content/actions/provider-api-request.ts +3 -37
- package/corpus/templates/content/actions/query-staged-dataset.ts +3 -48
- package/corpus/templates/design/.agents/skills/actions/SKILL.md +32 -12
- package/corpus/templates/design/.agents/skills/customizing-agent-native/SKILL.md +102 -0
- package/corpus/templates/design/.agents/skills/self-modifying-code/SKILL.md +11 -2
- package/corpus/templates/design/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
- package/corpus/templates/design/actions/delete-staged-dataset.ts +4 -23
- package/corpus/templates/design/actions/list-staged-datasets.ts +4 -27
- package/corpus/templates/design/actions/provider-api-catalog.ts +15 -18
- package/corpus/templates/design/actions/provider-api-docs.ts +57 -48
- package/corpus/templates/design/actions/provider-api-request.ts +140 -164
- package/corpus/templates/design/actions/query-staged-dataset.ts +4 -47
- package/corpus/templates/dispatch/.agents/skills/actions/SKILL.md +32 -12
- package/corpus/templates/dispatch/.agents/skills/customizing-agent-native/SKILL.md +102 -0
- package/corpus/templates/dispatch/.agents/skills/self-modifying-code/SKILL.md +11 -2
- package/corpus/templates/dispatch/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
- package/corpus/templates/dispatch/actions/delete-staged-dataset.ts +4 -23
- package/corpus/templates/dispatch/actions/list-staged-datasets.ts +4 -30
- package/corpus/templates/dispatch/actions/provider-api-catalog.ts +15 -18
- package/corpus/templates/dispatch/actions/provider-api-docs.ts +57 -48
- package/corpus/templates/dispatch/actions/provider-api-request.ts +138 -163
- package/corpus/templates/dispatch/actions/query-staged-dataset.ts +4 -47
- package/corpus/templates/forms/.agents/skills/actions/SKILL.md +32 -12
- package/corpus/templates/forms/.agents/skills/customizing-agent-native/SKILL.md +102 -0
- package/corpus/templates/forms/.agents/skills/self-modifying-code/SKILL.md +11 -2
- package/corpus/templates/forms/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
- package/corpus/templates/forms/server/lib/integrations.ts +23 -22
- package/corpus/templates/macros/.agents/skills/customizing-agent-native/SKILL.md +102 -0
- package/corpus/templates/macros/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
- package/corpus/templates/mail/.agents/skills/actions/SKILL.md +32 -12
- package/corpus/templates/mail/.agents/skills/customizing-agent-native/SKILL.md +102 -0
- package/corpus/templates/mail/.agents/skills/self-modifying-code/SKILL.md +11 -2
- package/corpus/templates/mail/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
- package/corpus/templates/mail/actions/delete-staged-dataset.ts +4 -23
- package/corpus/templates/mail/actions/list-staged-datasets.ts +4 -27
- package/corpus/templates/mail/actions/provider-api-catalog.ts +15 -18
- package/corpus/templates/mail/actions/provider-api-docs.ts +57 -48
- package/corpus/templates/mail/actions/provider-api-request.ts +146 -173
- package/corpus/templates/mail/actions/query-staged-dataset.ts +4 -47
- package/corpus/templates/mail/server/handlers/gong.ts +6 -61
- package/corpus/templates/mail/server/lib/google-auth.ts +10 -13
- package/corpus/templates/plan/.agents/skills/actions/SKILL.md +32 -12
- package/corpus/templates/plan/.agents/skills/customizing-agent-native/SKILL.md +102 -0
- package/corpus/templates/plan/.agents/skills/self-modifying-code/SKILL.md +11 -2
- package/corpus/templates/plan/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
- package/corpus/templates/plan/app/components/layout/Sidebar.tsx +47 -156
- package/corpus/templates/slides/.agents/skills/actions/SKILL.md +32 -12
- package/corpus/templates/slides/.agents/skills/customizing-agent-native/SKILL.md +102 -0
- package/corpus/templates/slides/.agents/skills/self-modifying-code/SKILL.md +11 -2
- package/corpus/templates/slides/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
- package/corpus/templates/slides/actions/delete-staged-dataset.ts +4 -23
- package/corpus/templates/slides/actions/list-staged-datasets.ts +4 -27
- package/corpus/templates/slides/actions/provider-api-catalog.ts +15 -18
- package/corpus/templates/slides/actions/provider-api-docs.ts +57 -48
- package/corpus/templates/slides/actions/provider-api-request.ts +145 -172
- package/corpus/templates/slides/actions/query-staged-dataset.ts +4 -47
- package/corpus/templates/slides/server/lib/google-docs-oauth.ts +11 -36
- package/corpus/templates/tasks/.agents/skills/actions/SKILL.md +32 -12
- package/corpus/templates/tasks/.agents/skills/agent-native-docs/SKILL.md +10 -0
- package/corpus/templates/tasks/.agents/skills/customizing-agent-native/SKILL.md +102 -0
- package/corpus/templates/tasks/.agents/skills/self-modifying-code/SKILL.md +11 -2
- package/corpus/templates/tasks/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
- package/corpus/toolkit/CHANGELOG.md +125 -0
- package/corpus/toolkit/README.md +60 -0
- package/corpus/toolkit/export-snapshot.json +35 -0
- package/corpus/toolkit/migration-manifest.json +4 -0
- package/corpus/toolkit/package.json +281 -0
- package/corpus/toolkit/scripts/finalize-build.mjs +55 -0
- package/corpus/toolkit/src/app-shell/header-actions.tsx +84 -0
- package/corpus/toolkit/src/app-shell/index.ts +1 -0
- package/corpus/toolkit/src/chat-history/ChatHistoryList.tsx +469 -0
- package/corpus/toolkit/src/chat-history/index.ts +7 -0
- package/corpus/toolkit/src/chat-history.css +314 -0
- package/corpus/toolkit/src/collab-ui/AgentPresenceChip.tsx +69 -0
- package/corpus/toolkit/src/collab-ui/LiveCursorOverlay.tsx +241 -0
- package/corpus/toolkit/src/collab-ui/PresenceBar.tsx +346 -0
- package/corpus/toolkit/src/collab-ui/RecentEditHighlights.tsx +225 -0
- package/corpus/toolkit/src/collab-ui/RemoteSelectionRings.tsx +227 -0
- package/corpus/toolkit/src/collab-ui/agent-identity.ts +16 -0
- package/corpus/toolkit/src/collab-ui/index.ts +39 -0
- package/corpus/toolkit/src/collab-ui/lead-client.ts +32 -0
- package/corpus/toolkit/src/collab-ui/types.ts +96 -0
- package/corpus/toolkit/src/composer/AgentComposerFrame.tsx +59 -0
- package/corpus/toolkit/src/composer/ComposerPlusMenu.tsx +983 -0
- package/corpus/toolkit/src/composer/MentionPopover.tsx +412 -0
- package/corpus/toolkit/src/composer/PastedTextChip.tsx +150 -0
- package/corpus/toolkit/src/composer/PromptComposer.tsx +718 -0
- package/corpus/toolkit/src/composer/RealtimeVoiceMode.tsx +856 -0
- package/corpus/toolkit/src/composer/TiptapComposer.tsx +2936 -0
- package/corpus/toolkit/src/composer/VoiceButton.tsx +255 -0
- package/corpus/toolkit/src/composer/asset-picker-url.ts +80 -0
- package/corpus/toolkit/src/composer/attachment-accept.ts +71 -0
- package/corpus/toolkit/src/composer/draft-key.ts +7 -0
- package/corpus/toolkit/src/composer/extensions/FileReference.tsx +55 -0
- package/corpus/toolkit/src/composer/extensions/MentionReference.tsx +93 -0
- package/corpus/toolkit/src/composer/extensions/SkillReference.tsx +56 -0
- package/corpus/toolkit/src/composer/index.ts +79 -0
- package/corpus/toolkit/src/composer/pasted-text.ts +160 -0
- package/corpus/toolkit/src/composer/prompt-attachments.ts +93 -0
- package/corpus/toolkit/src/composer/realtime-voice-audio-level.ts +64 -0
- package/corpus/toolkit/src/composer/realtime-voice-transcript.ts +134 -0
- package/corpus/toolkit/src/composer/runtime-adapters.tsx +343 -0
- package/corpus/toolkit/src/composer/types.ts +66 -0
- package/corpus/toolkit/src/composer/use-file-search.ts +64 -0
- package/corpus/toolkit/src/composer/use-mention-search.ts +90 -0
- package/corpus/toolkit/src/composer/use-skills.ts +45 -0
- package/corpus/toolkit/src/composer/useRealtimeVoiceMode.tsx +2117 -0
- package/corpus/toolkit/src/composer/useVoiceDictation.ts +1191 -0
- package/corpus/toolkit/src/context-ui/ContextMeter.tsx +101 -0
- package/corpus/toolkit/src/context-ui/ContextSegmentRow.tsx +184 -0
- package/corpus/toolkit/src/context-ui/ContextTreemap.tsx +125 -0
- package/corpus/toolkit/src/context-ui/ContextXRayPanel.tsx +377 -0
- package/corpus/toolkit/src/context-ui/format.ts +42 -0
- package/corpus/toolkit/src/context-ui/index.ts +15 -0
- package/corpus/toolkit/src/context-ui/types.ts +43 -0
- package/corpus/toolkit/src/design-tweaks/index.ts +1 -0
- package/corpus/toolkit/src/design-tweaks/visual-style-controls.tsx +1084 -0
- package/corpus/toolkit/src/editor/BubbleToolbar.tsx +253 -0
- package/corpus/toolkit/src/editor/CodeBlockNode.tsx +254 -0
- package/corpus/toolkit/src/editor/DragHandle.ts +1437 -0
- package/corpus/toolkit/src/editor/ImageExtension.ts +306 -0
- package/corpus/toolkit/src/editor/RegistryBlockContext.tsx +107 -0
- package/corpus/toolkit/src/editor/RegistryBlockNode.tsx +652 -0
- package/corpus/toolkit/src/editor/RichMarkdownEditor.tsx +81 -0
- package/corpus/toolkit/src/editor/RunId.ts +61 -0
- package/corpus/toolkit/src/editor/SharedRichEditor.tsx +321 -0
- package/corpus/toolkit/src/editor/SlashCommandMenu.tsx +310 -0
- package/corpus/toolkit/src/editor/extensions.ts +402 -0
- package/corpus/toolkit/src/editor/gfmDoc.ts +92 -0
- package/corpus/toolkit/src/editor/index.ts +93 -0
- package/corpus/toolkit/src/editor/registrySlashCommands.ts +131 -0
- package/corpus/toolkit/src/editor/surgical-apply.ts +192 -0
- package/corpus/toolkit/src/editor/useCollabReconcile.ts +589 -0
- package/corpus/toolkit/src/editor.css +510 -0
- package/corpus/toolkit/src/hooks/index.ts +2 -0
- package/corpus/toolkit/src/hooks/use-mobile.tsx +21 -0
- package/corpus/toolkit/src/hooks/use-toast.ts +188 -0
- package/corpus/toolkit/src/index.ts +8 -0
- package/corpus/toolkit/src/onboarding/index.ts +1 -0
- package/corpus/toolkit/src/provider.tsx +47 -0
- package/corpus/toolkit/src/sharing/VisibilityBadge.tsx +37 -0
- package/corpus/toolkit/src/sharing/index.ts +4 -0
- package/corpus/toolkit/src/styles.css +21 -0
- package/corpus/toolkit/src/ui/accordion.tsx +56 -0
- package/corpus/toolkit/src/ui/alert-dialog.tsx +141 -0
- package/corpus/toolkit/src/ui/alert.tsx +59 -0
- package/corpus/toolkit/src/ui/aspect-ratio.tsx +5 -0
- package/corpus/toolkit/src/ui/avatar.tsx +48 -0
- package/corpus/toolkit/src/ui/badge.tsx +37 -0
- package/corpus/toolkit/src/ui/breadcrumb.tsx +115 -0
- package/corpus/toolkit/src/ui/button.tsx +78 -0
- package/corpus/toolkit/src/ui/calendar.tsx +214 -0
- package/corpus/toolkit/src/ui/card.tsx +86 -0
- package/corpus/toolkit/src/ui/carousel.tsx +260 -0
- package/corpus/toolkit/src/ui/chart.tsx +375 -0
- package/corpus/toolkit/src/ui/checkbox.tsx +28 -0
- package/corpus/toolkit/src/ui/collapsible.tsx +9 -0
- package/corpus/toolkit/src/ui/command.tsx +174 -0
- package/corpus/toolkit/src/ui/context-menu.tsx +202 -0
- package/corpus/toolkit/src/ui/date-picker.tsx +64 -0
- package/corpus/toolkit/src/ui/dialog.tsx +146 -0
- package/corpus/toolkit/src/ui/drawer.tsx +126 -0
- package/corpus/toolkit/src/ui/dropdown-menu.tsx +218 -0
- package/corpus/toolkit/src/ui/form.tsx +177 -0
- package/corpus/toolkit/src/ui/hover-card.tsx +27 -0
- package/corpus/toolkit/src/ui/index.ts +52 -0
- package/corpus/toolkit/src/ui/input-otp.tsx +69 -0
- package/corpus/toolkit/src/ui/input.tsx +22 -0
- package/corpus/toolkit/src/ui/label.tsx +24 -0
- package/corpus/toolkit/src/ui/logo.tsx +36 -0
- package/corpus/toolkit/src/ui/menubar.tsx +235 -0
- package/corpus/toolkit/src/ui/navigation-menu.tsx +128 -0
- package/corpus/toolkit/src/ui/pagination.tsx +121 -0
- package/corpus/toolkit/src/ui/popover.tsx +44 -0
- package/corpus/toolkit/src/ui/progress.tsx +26 -0
- package/corpus/toolkit/src/ui/radio-group.tsx +42 -0
- package/corpus/toolkit/src/ui/resizable.tsx +43 -0
- package/corpus/toolkit/src/ui/scroll-area.tsx +46 -0
- package/corpus/toolkit/src/ui/select.tsx +158 -0
- package/corpus/toolkit/src/ui/separator.tsx +29 -0
- package/corpus/toolkit/src/ui/sheet.tsx +160 -0
- package/corpus/toolkit/src/ui/sidebar.tsx +777 -0
- package/corpus/toolkit/src/ui/skeleton.tsx +18 -0
- package/corpus/toolkit/src/ui/slider.tsx +26 -0
- package/corpus/toolkit/src/ui/sonner.tsx +58 -0
- package/corpus/toolkit/src/ui/spinner.tsx +17 -0
- package/corpus/toolkit/src/ui/switch.tsx +27 -0
- package/corpus/toolkit/src/ui/table.tsx +117 -0
- package/corpus/toolkit/src/ui/tabs.tsx +53 -0
- package/corpus/toolkit/src/ui/textarea.tsx +23 -0
- package/corpus/toolkit/src/ui/toast.tsx +127 -0
- package/corpus/toolkit/src/ui/toaster.tsx +33 -0
- package/corpus/toolkit/src/ui/toggle-group.tsx +59 -0
- package/corpus/toolkit/src/ui/toggle.tsx +43 -0
- package/corpus/toolkit/src/ui/tooltip.tsx +53 -0
- package/corpus/toolkit/src/ui/use-toast.ts +3 -0
- package/corpus/toolkit/src/utils.ts +8 -0
- package/corpus/toolkit/tsconfig.json +23 -0
- package/dist/cli/atomic-json-file.d.ts +30 -0
- package/dist/cli/atomic-json-file.d.ts.map +1 -0
- package/dist/cli/atomic-json-file.js +240 -0
- package/dist/cli/atomic-json-file.js.map +1 -0
- package/dist/cli/claude-code-participant.d.ts +77 -0
- package/dist/cli/claude-code-participant.d.ts.map +1 -0
- package/dist/cli/claude-code-participant.js +355 -0
- package/dist/cli/claude-code-participant.js.map +1 -0
- package/dist/cli/code-agent-executor.d.ts.map +1 -1
- package/dist/cli/code-agent-executor.js +18 -10
- package/dist/cli/code-agent-executor.js.map +1 -1
- package/dist/cli/code-agent-runs.concurrent-worker.d.ts +2 -0
- package/dist/cli/code-agent-runs.concurrent-worker.d.ts.map +1 -0
- package/dist/cli/code-agent-runs.concurrent-worker.js +32 -0
- package/dist/cli/code-agent-runs.concurrent-worker.js.map +1 -0
- package/dist/cli/code-agent-runs.d.ts.map +1 -1
- package/dist/cli/code-agent-runs.js +43 -56
- package/dist/cli/code-agent-runs.js.map +1 -1
- package/dist/cli/codex-cli-participant.d.ts +77 -0
- package/dist/cli/codex-cli-participant.d.ts.map +1 -0
- package/dist/cli/codex-cli-participant.js +354 -0
- package/dist/cli/codex-cli-participant.js.map +1 -0
- package/dist/cli/multi-frontier-runs.d.ts +115 -0
- package/dist/cli/multi-frontier-runs.d.ts.map +1 -1
- package/dist/cli/multi-frontier-runs.js +831 -113
- package/dist/cli/multi-frontier-runs.js.map +1 -1
- package/dist/client/chat/ChatHistoryList.d.ts +1 -87
- package/dist/client/chat/ChatHistoryList.d.ts.map +1 -1
- package/dist/client/chat/ChatHistoryList.js +1 -82
- package/dist/client/chat/ChatHistoryList.js.map +1 -1
- package/dist/integrations/index.d.ts +2 -1
- package/dist/integrations/index.d.ts.map +1 -1
- package/dist/integrations/index.js +2 -1
- package/dist/integrations/index.js.map +1 -1
- package/dist/integrations/slack-manifest.d.ts +1 -1
- package/dist/integrations/slack-oauth.d.ts +1 -1
- package/dist/integrations/slack-oauth.d.ts.map +1 -1
- package/dist/integrations/slack-oauth.js +1 -0
- package/dist/integrations/slack-oauth.js.map +1 -1
- package/dist/integrations/webhook-delivery.d.ts +23 -0
- package/dist/integrations/webhook-delivery.d.ts.map +1 -0
- package/dist/integrations/webhook-delivery.js +32 -0
- package/dist/integrations/webhook-delivery.js.map +1 -0
- package/dist/notifications/channels.d.ts.map +1 -1
- package/dist/notifications/channels.js +4 -9
- package/dist/notifications/channels.js.map +1 -1
- package/dist/notifications/routes.d.ts +3 -3
- package/dist/provider-api/actions/custom-provider-registration.d.ts +136 -0
- package/dist/provider-api/actions/custom-provider-registration.d.ts.map +1 -0
- package/dist/provider-api/actions/custom-provider-registration.js +154 -0
- package/dist/provider-api/actions/custom-provider-registration.js.map +1 -0
- package/dist/provider-api/actions/delete-staged-dataset.d.ts +1 -1
- package/dist/provider-api/actions/delete-staged-dataset.d.ts.map +1 -1
- package/dist/provider-api/actions/delete-staged-dataset.js +3 -34
- package/dist/provider-api/actions/delete-staged-dataset.js.map +1 -1
- package/dist/provider-api/actions/list-staged-datasets.d.ts +2 -3
- package/dist/provider-api/actions/list-staged-datasets.d.ts.map +1 -1
- package/dist/provider-api/actions/list-staged-datasets.js +3 -40
- package/dist/provider-api/actions/list-staged-datasets.js.map +1 -1
- package/dist/provider-api/actions/provider-api-audit.d.ts +7 -0
- package/dist/provider-api/actions/provider-api-audit.d.ts.map +1 -0
- package/dist/provider-api/actions/provider-api-audit.js +74 -0
- package/dist/provider-api/actions/provider-api-audit.js.map +1 -0
- package/dist/provider-api/actions/provider-api.d.ts +370 -0
- package/dist/provider-api/actions/provider-api.d.ts.map +1 -0
- package/dist/provider-api/actions/provider-api.js +280 -0
- package/dist/provider-api/actions/provider-api.js.map +1 -0
- package/dist/provider-api/actions/query-staged-dataset.d.ts +1 -1
- package/dist/provider-api/actions/query-staged-dataset.d.ts.map +1 -1
- package/dist/provider-api/actions/query-staged-dataset.js +3 -116
- package/dist/provider-api/actions/query-staged-dataset.js.map +1 -1
- package/dist/provider-api/actions/staged-datasets.d.ts +190 -0
- package/dist/provider-api/actions/staged-datasets.d.ts.map +1 -0
- package/dist/provider-api/actions/staged-datasets.js +210 -0
- package/dist/provider-api/actions/staged-datasets.js.map +1 -0
- package/dist/provider-api/gong.d.ts +44 -0
- package/dist/provider-api/gong.d.ts.map +1 -0
- package/dist/provider-api/gong.js +56 -0
- package/dist/provider-api/gong.js.map +1 -0
- package/dist/scripts/docs/source-search.d.ts +2 -1
- package/dist/scripts/docs/source-search.d.ts.map +1 -1
- package/dist/scripts/docs/source-search.js +2 -1
- package/dist/scripts/docs/source-search.js.map +1 -1
- package/dist/server/agent-engine-api-key-route.d.ts +1 -1
- package/dist/server/google-oauth-credentials.d.ts +35 -0
- package/dist/server/google-oauth-credentials.d.ts.map +1 -1
- package/dist/server/google-oauth-credentials.js +48 -2
- package/dist/server/google-oauth-credentials.js.map +1 -1
- package/dist/server/index.d.ts +1 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +1 -1
- package/dist/server/index.js.map +1 -1
- package/dist/styles/chat-history-list.css +1 -313
- package/dist/templates/chat/.agents/skills/actions/SKILL.md +32 -12
- package/dist/templates/chat/.agents/skills/agent-native-docs/SKILL.md +10 -0
- package/dist/templates/chat/.agents/skills/customizing-agent-native/SKILL.md +102 -0
- package/dist/templates/chat/.agents/skills/self-modifying-code/SKILL.md +11 -2
- package/dist/templates/chat/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
- package/dist/templates/chat/AGENTS.md +5 -2
- package/dist/templates/chat/app/components/layout/Sidebar.tsx +51 -157
- package/dist/templates/default/.agents/skills/actions/SKILL.md +32 -12
- package/dist/templates/default/.agents/skills/agent-native-docs/SKILL.md +10 -0
- package/dist/templates/default/.agents/skills/customizing-agent-native/SKILL.md +102 -0
- package/dist/templates/default/.agents/skills/integration-webhooks/SKILL.md +323 -0
- package/dist/templates/default/.agents/skills/onboarding/SKILL.md +56 -0
- package/dist/templates/default/.agents/skills/secrets/SKILL.md +273 -0
- package/dist/templates/default/.agents/skills/self-modifying-code/SKILL.md +11 -2
- package/dist/templates/default/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
- package/dist/templates/default/AGENTS.md +25 -18
- package/dist/templates/headless/.agents/skills/actions/SKILL.md +512 -0
- package/dist/templates/headless/.agents/skills/agent-native-docs/SKILL.md +10 -0
- package/dist/templates/headless/.agents/skills/customizing-agent-native/SKILL.md +102 -0
- package/dist/templates/headless/.agents/skills/integration-webhooks/SKILL.md +323 -0
- package/dist/templates/headless/.agents/skills/secrets/SKILL.md +273 -0
- package/dist/templates/headless/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
- package/dist/templates/headless/AGENTS.md +7 -0
- package/dist/templates/workspace-core/.agents/skills/actions/SKILL.md +32 -12
- package/dist/templates/workspace-core/.agents/skills/agent-native-docs/SKILL.md +10 -0
- package/dist/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +6 -0
- package/dist/templates/workspace-core/.agents/skills/customizing-agent-native/SKILL.md +102 -0
- package/dist/templates/workspace-core/.agents/skills/self-modifying-code/SKILL.md +11 -2
- package/dist/templates/workspace-core/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
- package/dist/templates/workspace-core/AGENTS.md +4 -0
- package/dist/templates/workspace-root/AGENTS.md +4 -0
- package/docs/AGENTS.md +7 -0
- package/docs/content/integrations.mdx +63 -2
- package/docs/design/provider-integration-authority.md +117 -0
- package/package.json +7 -2
- package/src/templates/chat/.agents/skills/actions/SKILL.md +32 -12
- package/src/templates/chat/.agents/skills/agent-native-docs/SKILL.md +10 -0
- package/src/templates/chat/.agents/skills/customizing-agent-native/SKILL.md +102 -0
- package/src/templates/chat/.agents/skills/self-modifying-code/SKILL.md +11 -2
- package/src/templates/chat/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
- package/src/templates/chat/AGENTS.md +5 -2
- package/src/templates/chat/app/components/layout/Sidebar.tsx +51 -157
- package/src/templates/default/.agents/skills/actions/SKILL.md +32 -12
- package/src/templates/default/.agents/skills/agent-native-docs/SKILL.md +10 -0
- package/src/templates/default/.agents/skills/customizing-agent-native/SKILL.md +102 -0
- package/src/templates/default/.agents/skills/integration-webhooks/SKILL.md +323 -0
- package/src/templates/default/.agents/skills/onboarding/SKILL.md +56 -0
- package/src/templates/default/.agents/skills/secrets/SKILL.md +273 -0
- package/src/templates/default/.agents/skills/self-modifying-code/SKILL.md +11 -2
- package/src/templates/default/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
- package/src/templates/default/AGENTS.md +25 -18
- package/src/templates/headless/.agents/skills/actions/SKILL.md +512 -0
- package/src/templates/headless/.agents/skills/agent-native-docs/SKILL.md +10 -0
- package/src/templates/headless/.agents/skills/customizing-agent-native/SKILL.md +102 -0
- package/src/templates/headless/.agents/skills/integration-webhooks/SKILL.md +323 -0
- package/src/templates/headless/.agents/skills/secrets/SKILL.md +273 -0
- package/src/templates/headless/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
- package/src/templates/headless/AGENTS.md +7 -0
- package/src/templates/workspace-core/.agents/skills/actions/SKILL.md +32 -12
- package/src/templates/workspace-core/.agents/skills/agent-native-docs/SKILL.md +10 -0
- package/src/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +6 -0
- package/src/templates/workspace-core/.agents/skills/customizing-agent-native/SKILL.md +102 -0
- package/src/templates/workspace-core/.agents/skills/self-modifying-code/SKILL.md +11 -2
- package/src/templates/workspace-core/.agents/skills/upgrade-agent-native/SKILL.md +6 -0
- package/src/templates/workspace-core/AGENTS.md +4 -0
- package/src/templates/workspace-root/AGENTS.md +4 -0
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: secrets
|
|
3
|
+
description: >-
|
|
4
|
+
Declaratively register API keys and service credentials a template needs so
|
|
5
|
+
they appear in the agent sidebar settings UI and the onboarding checklist.
|
|
6
|
+
Use for any third-party API key (OpenAI, Stripe, Twilio, etc.) and for
|
|
7
|
+
surfacing OAuth connections in the unified settings UI.
|
|
8
|
+
scope: dev
|
|
9
|
+
metadata:
|
|
10
|
+
internal: true
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Secrets Registry
|
|
14
|
+
|
|
15
|
+
## Non-negotiable rule
|
|
16
|
+
|
|
17
|
+
Never hardcode credential values. Source, docs, tests, fixtures, prompts, seed
|
|
18
|
+
data, and generated extension/app content may mention credential **names** such
|
|
19
|
+
as `OPENAI_API_KEY`, but must not contain real API keys, tokens, webhook URLs,
|
|
20
|
+
signing secrets, OAuth refresh tokens, or private Builder/customer data.
|
|
21
|
+
|
|
22
|
+
Secret values are supplied at runtime through deployment configuration, the
|
|
23
|
+
encrypted `app_secrets` vault, `saveCredential` / `resolveCredential`, OAuth, or
|
|
24
|
+
`${keys.NAME}` substitution. Examples must use obvious placeholders such as
|
|
25
|
+
`<OPENAI_API_KEY>` or `${keys.SLACK_WEBHOOK}`, not real-looking copied values.
|
|
26
|
+
|
|
27
|
+
## When to use
|
|
28
|
+
|
|
29
|
+
Use this for any external credential your template needs: API keys, service
|
|
30
|
+
tokens, webhook secrets. It gives you:
|
|
31
|
+
|
|
32
|
+
- A sidebar UI entry for each credential (masked input, rotate, test, delete).
|
|
33
|
+
- Automatic onboarding-checklist items for `required: true` secrets.
|
|
34
|
+
- A stable server-side read API (`readAppSecret`) that decrypts values on
|
|
35
|
+
demand.
|
|
36
|
+
- Validator hooks for health-checking keys before save and from a Test button.
|
|
37
|
+
|
|
38
|
+
## When NOT to use
|
|
39
|
+
|
|
40
|
+
- OAuth flows that need to run the full authorization code exchange — use
|
|
41
|
+
`@agent-native/core/oauth-tokens` directly to save/refresh tokens. The
|
|
42
|
+
registry can still surface the OAuth connection in the sidebar by
|
|
43
|
+
registering a secret with `kind: "oauth"` — that just delegates status
|
|
44
|
+
lookup to oauth-tokens and renders a Connect button, no `app_secrets` row
|
|
45
|
+
is written.
|
|
46
|
+
- Purely process-level env vars that are never user-facing (e.g. `NODE_ENV`,
|
|
47
|
+
deployment flags). Those belong in the onboarding `form` method or the
|
|
48
|
+
`envKeys` list in `core-routes-plugin`.
|
|
49
|
+
|
|
50
|
+
## Registering a secret
|
|
51
|
+
|
|
52
|
+
```ts
|
|
53
|
+
// server/plugins/register-secrets.ts
|
|
54
|
+
import { defineNitroPlugin } from "@agent-native/core/server";
|
|
55
|
+
import { registerRequiredSecret } from "@agent-native/core/secrets";
|
|
56
|
+
|
|
57
|
+
export default defineNitroPlugin(() => {
|
|
58
|
+
registerRequiredSecret({
|
|
59
|
+
key: "OPENAI_API_KEY",
|
|
60
|
+
label: "OpenAI API Key",
|
|
61
|
+
description: "Used for Whisper transcription of your recordings.",
|
|
62
|
+
docsUrl: "https://platform.openai.com/api-keys",
|
|
63
|
+
scope: "user",
|
|
64
|
+
kind: "api-key",
|
|
65
|
+
required: true,
|
|
66
|
+
validator: async (value) => {
|
|
67
|
+
const res = await fetch("https://api.openai.com/v1/models", {
|
|
68
|
+
headers: { Authorization: `Bearer ${value}` },
|
|
69
|
+
});
|
|
70
|
+
return res.ok
|
|
71
|
+
? { ok: true }
|
|
72
|
+
: { ok: false, error: `OpenAI rejected the key (HTTP ${res.status})` };
|
|
73
|
+
},
|
|
74
|
+
});
|
|
75
|
+
});
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### OAuth in the unified UI
|
|
79
|
+
|
|
80
|
+
```ts
|
|
81
|
+
registerRequiredSecret({
|
|
82
|
+
key: "GOOGLE_CONNECTED",
|
|
83
|
+
label: "Google account",
|
|
84
|
+
description: "Grants access to Gmail / Calendar APIs.",
|
|
85
|
+
scope: "user",
|
|
86
|
+
kind: "oauth",
|
|
87
|
+
required: true,
|
|
88
|
+
oauthProvider: "google", // must match the provider id in oauth-tokens
|
|
89
|
+
oauthConnectUrl: "/_agent-native/google/auth-url",
|
|
90
|
+
});
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
The sidebar shows a Connect button instead of a text input; no `app_secrets`
|
|
94
|
+
row is written — status is derived from `hasOAuthTokens("google")`.
|
|
95
|
+
|
|
96
|
+
## Registered options
|
|
97
|
+
|
|
98
|
+
| Field | Type | Purpose |
|
|
99
|
+
| ------------------ | --------------------------------------- | ------------------------------------------------------------------------ |
|
|
100
|
+
| `key` | `string` | Env-var style name (`OPENAI_API_KEY`). Also the storage key. |
|
|
101
|
+
| `label` | `string` | Human-readable title in the sidebar. |
|
|
102
|
+
| `description` | `string?` | Subtitle under the label. |
|
|
103
|
+
| `docsUrl` | `string?` | "Get key" link rendered on the card. |
|
|
104
|
+
| `scope` | `"user" \| "workspace"` | Per-user or shared across the active org. |
|
|
105
|
+
| `kind` | `"api-key" \| "oauth"` | Drives UI and storage behavior. |
|
|
106
|
+
| `required` | `boolean?` | When true, an onboarding step is auto-injected. |
|
|
107
|
+
| `validator` | `(v) => Promise<boolean \| {ok,error}>` | Runs on save and from the Test button. Never log `v`. |
|
|
108
|
+
| `oauthProvider` | `string?` (oauth-kind only) | Provider id in `oauth-tokens` that backs this entry. |
|
|
109
|
+
| `oauthConnectUrl` | `string?` (oauth-kind only) | URL the Connect button points at. |
|
|
110
|
+
|
|
111
|
+
## Reading a secret from an action
|
|
112
|
+
|
|
113
|
+
```ts
|
|
114
|
+
import { z } from "zod";
|
|
115
|
+
import { defineAction } from "@agent-native/core/action";
|
|
116
|
+
import { readAppSecret } from "@agent-native/core/secrets";
|
|
117
|
+
import { getRequestUserEmail } from "@agent-native/core/server";
|
|
118
|
+
|
|
119
|
+
export default defineAction({
|
|
120
|
+
description: "Transcribe an audio file with Whisper",
|
|
121
|
+
schema: z.object({ fileUrl: z.string() }),
|
|
122
|
+
run: async ({ fileUrl }) => {
|
|
123
|
+
const email = await getRequestUserEmail();
|
|
124
|
+
if (!email) throw new Error("Not signed in");
|
|
125
|
+
|
|
126
|
+
const stored = await readAppSecret({
|
|
127
|
+
key: "OPENAI_API_KEY",
|
|
128
|
+
scope: "user",
|
|
129
|
+
scopeId: email,
|
|
130
|
+
});
|
|
131
|
+
const apiKey = stored?.value;
|
|
132
|
+
if (!apiKey) {
|
|
133
|
+
throw new Error(
|
|
134
|
+
"OPENAI_API_KEY is not set. Configure it in the sidebar settings.",
|
|
135
|
+
);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
// …call OpenAI. NEVER log the key or include it in error messages.
|
|
139
|
+
},
|
|
140
|
+
});
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
Rules:
|
|
144
|
+
|
|
145
|
+
- **Never log the value.** The read layer enforces this server-side; your
|
|
146
|
+
code must do the same.
|
|
147
|
+
- **Use env vars only for deploy-level secrets.** If a credential is
|
|
148
|
+
user-scoped, org-scoped, or workspace-scoped, read the scoped vault/credential
|
|
149
|
+
store. Do not add a `process.env` fallback that makes every user inherit one
|
|
150
|
+
deployment's key.
|
|
151
|
+
- **Scope matches the registration.** `scope: "user"` → pass the user email.
|
|
152
|
+
`scope: "workspace"` → pass the active `orgId` from
|
|
153
|
+
`getOrgContext(event).orgId`.
|
|
154
|
+
|
|
155
|
+
## HTTP routes
|
|
156
|
+
|
|
157
|
+
Core routes plugin mounts these under `/_agent-native/secrets/` automatically:
|
|
158
|
+
|
|
159
|
+
- `GET /_agent-native/secrets` — list registered secrets with status (`set`
|
|
160
|
+
/ `unset` / `invalid`), metadata, and — for set api-keys — the last 4
|
|
161
|
+
characters. Values are never returned.
|
|
162
|
+
- `POST /_agent-native/secrets/:key` — body `{ value, scope?, scopeId? }`.
|
|
163
|
+
Runs the registered validator; returns 400 with the error on failure.
|
|
164
|
+
- `DELETE /_agent-native/secrets/:key` — remove the stored value.
|
|
165
|
+
- `POST /_agent-native/secrets/:key/test` — re-run the validator against the
|
|
166
|
+
currently stored value.
|
|
167
|
+
|
|
168
|
+
## Storage & encryption
|
|
169
|
+
|
|
170
|
+
- Values are stored in `app_secrets` (created on-demand; no migration
|
|
171
|
+
needed).
|
|
172
|
+
- Encrypted at rest with AES-256-GCM. Key material is derived from
|
|
173
|
+
`<APP_NAME>_SECRETS_ENCRYPTION_KEY` when set (for example,
|
|
174
|
+
`ANALYTICS_SECRETS_ENCRYPTION_KEY`), then `SECRETS_ENCRYPTION_KEY`, then
|
|
175
|
+
`BETTER_AUTH_SECRET`. App-scoped keys are useful when a local multi-app
|
|
176
|
+
workspace connects one app to its production database without replacing the
|
|
177
|
+
shared local authentication secret. If none is set, the framework uses a
|
|
178
|
+
machine-local fallback and logs a one-time warning — set stable key material
|
|
179
|
+
in production and in every runtime that reads the same encrypted data.
|
|
180
|
+
|
|
181
|
+
## Ad-hoc Keys
|
|
182
|
+
|
|
183
|
+
Ad-hoc keys are user-created secrets that are not declared by the template.
|
|
184
|
+
Users create them through the settings UI or the agent chat to use with
|
|
185
|
+
automations and the `web-request` tool. They support `${keys.NAME}`
|
|
186
|
+
substitution in outbound HTTP requests.
|
|
187
|
+
|
|
188
|
+
### Ad-hoc API
|
|
189
|
+
|
|
190
|
+
Core routes plugin mounts these under `/_agent-native/secrets/adhoc`:
|
|
191
|
+
|
|
192
|
+
- `GET /_agent-native/secrets/adhoc` — list all ad-hoc keys (name, last 4
|
|
193
|
+
chars, URL allowlist). Values are never returned.
|
|
194
|
+
- `POST /_agent-native/secrets/adhoc` — body `{ name, value, urlAllowlist? }`.
|
|
195
|
+
Creates or updates an ad-hoc key.
|
|
196
|
+
- `DELETE /_agent-native/secrets/adhoc/:name` — remove an ad-hoc key.
|
|
197
|
+
|
|
198
|
+
### URL Allowlists
|
|
199
|
+
|
|
200
|
+
Each ad-hoc key can have a URL allowlist — an array of origin URLs that
|
|
201
|
+
restrict where the key's value can be sent. The check is origin-level
|
|
202
|
+
(scheme + host + port). If no allowlist is configured, the key can be used
|
|
203
|
+
with any URL.
|
|
204
|
+
|
|
205
|
+
```ts
|
|
206
|
+
// Creating a key with an allowlist
|
|
207
|
+
POST /_agent-native/secrets/adhoc
|
|
208
|
+
{
|
|
209
|
+
"name": "SLACK_WEBHOOK",
|
|
210
|
+
"value": "<SLACK_WEBHOOK_URL_FROM_SETTINGS>",
|
|
211
|
+
"urlAllowlist": ["https://hooks.slack.com"]
|
|
212
|
+
}
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
### `${keys.NAME}` Substitution
|
|
216
|
+
|
|
217
|
+
The `web-request` tool supports `${keys.NAME}` placeholders in the URL,
|
|
218
|
+
headers, and body. Substitution happens server-side after the agent emits
|
|
219
|
+
the tool call — the raw secret value never enters the agent's context.
|
|
220
|
+
|
|
221
|
+
```ts
|
|
222
|
+
import {
|
|
223
|
+
resolveKeyReferences,
|
|
224
|
+
validateUrlAllowlist,
|
|
225
|
+
} from "@agent-native/core/secrets/substitution";
|
|
226
|
+
|
|
227
|
+
// Resolve all ${keys.NAME} references in a string
|
|
228
|
+
const { resolved, usedKeys } = await resolveKeyReferences(
|
|
229
|
+
"Bearer ${keys.API_TOKEN}",
|
|
230
|
+
"user",
|
|
231
|
+
"user@example.com",
|
|
232
|
+
);
|
|
233
|
+
|
|
234
|
+
// Validate a URL against a key's allowlist
|
|
235
|
+
const allowed = validateUrlAllowlist(
|
|
236
|
+
"https://hooks.slack.com/services/<WORKSPACE>/<CHANNEL>/<SECRET>",
|
|
237
|
+
["https://hooks.slack.com"],
|
|
238
|
+
);
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
Key resolution falls back from user scope to workspace scope, so users can
|
|
242
|
+
override shared keys without breaking automations that reference workspace
|
|
243
|
+
defaults.
|
|
244
|
+
|
|
245
|
+
## Dispatch Vault Access
|
|
246
|
+
|
|
247
|
+
Dispatch workspaces have a vault access policy for workspace app credentials:
|
|
248
|
+
|
|
249
|
+
- `all-apps` is the default. Every saved Dispatch vault key is available to
|
|
250
|
+
every workspace app; `sync-vault-to-app` pushes all vault keys to the target
|
|
251
|
+
app.
|
|
252
|
+
- `manual` requires explicit per-app grants. Use
|
|
253
|
+
`create-vault-grant` / `grant-vault-secrets-to-app`, then
|
|
254
|
+
`sync-vault-to-app`.
|
|
255
|
+
|
|
256
|
+
Use `get-vault-access-settings` before deciding whether to create grants, and
|
|
257
|
+
use `set-vault-access-settings` only when the user asks to change the policy.
|
|
258
|
+
|
|
259
|
+
### Key Files (ad-hoc)
|
|
260
|
+
|
|
261
|
+
| File | Purpose |
|
|
262
|
+
| ---------------------------------------------- | ------------------------------------------- |
|
|
263
|
+
| `packages/core/src/secrets/substitution.ts` | `resolveKeyReferences()`, `validateUrlAllowlist()` |
|
|
264
|
+
| `packages/core/src/tools/fetch-tool.ts` | `web-request` tool consuming key references |
|
|
265
|
+
|
|
266
|
+
## Related skills
|
|
267
|
+
|
|
268
|
+
- `onboarding` — the setup checklist that required secrets show up in.
|
|
269
|
+
- `actions` — where you'll read secrets when calling third-party APIs.
|
|
270
|
+
- `authentication` — session scoping; `scope: "user"` uses the session
|
|
271
|
+
email.
|
|
272
|
+
- `security` — input validation and never logging secrets.
|
|
273
|
+
- `automations` — ad-hoc keys power `${keys.NAME}` in automation web requests.
|
|
@@ -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
|
|
@@ -39,6 +39,11 @@ first-party template patterns ships in `node_modules/@agent-native/core/corpus`.
|
|
|
39
39
|
`node_modules/@agent-native/core/docs/content/` directly with `rg`. Search
|
|
40
40
|
`node_modules/@agent-native/core/corpus/` for source examples.
|
|
41
41
|
|
|
42
|
+
When adding or customizing a browser UI, read `customizing-agent-native`.
|
|
43
|
+
Configure or compose public components first; if needed, copy only the smallest
|
|
44
|
+
reference UI piece into app-owned source. Never edit `node_modules`, deep-import
|
|
45
|
+
private source, or replace the headless app's existing action contracts.
|
|
46
|
+
|
|
42
47
|
Read these local package docs before implementing advanced Agent Native
|
|
43
48
|
features. Prefer this app's own `AGENTS.md` for app-specific rules, then use
|
|
44
49
|
the corpus for reusable framework/template patterns.
|
|
@@ -82,3 +87,5 @@ pnpm agent "Call the hello action for Builder and explain the result"
|
|
|
82
87
|
Skills in `.agents/skills/` provide detailed guidance. Read
|
|
83
88
|
`.agents/skills/agent-native-docs/SKILL.md` before using advanced Agent Native
|
|
84
89
|
framework APIs, generated-app features, automations, A2A, sharing, or MCP.
|
|
90
|
+
Read `.agents/skills/customizing-agent-native/SKILL.md` before adding UI or
|
|
91
|
+
overriding shared Agent Native components.
|
|
@@ -121,18 +121,38 @@ action trio instead:
|
|
|
121
121
|
provider host, injects configured credentials, blocks private/internal URLs,
|
|
122
122
|
and redacts secrets.
|
|
123
123
|
|
|
124
|
-
Use `@agent-native/core/provider-api` as the shared substrate
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
124
|
+
Use `@agent-native/core/provider-api` as the shared substrate, and build these
|
|
125
|
+
actions as thin factory imports rather than copying `defineAction` schemas and
|
|
126
|
+
handlers into each template:
|
|
127
|
+
|
|
128
|
+
```ts
|
|
129
|
+
import {
|
|
130
|
+
createProviderApiCatalogAction,
|
|
131
|
+
createProviderApiDocsAction,
|
|
132
|
+
createProviderApiRequestAction,
|
|
133
|
+
} from "@agent-native/core/provider-api/actions/provider-api";
|
|
134
|
+
import {
|
|
135
|
+
createDeleteStagedDatasetAction,
|
|
136
|
+
createListStagedDatasetsAction,
|
|
137
|
+
createQueryStagedDatasetAction,
|
|
138
|
+
} from "@agent-native/core/provider-api/actions/staged-datasets";
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
Pass the app's existing provider runtime to the provider factories, and pass
|
|
142
|
+
its app id to the staged-dataset factories. Keep app-specific descriptions,
|
|
143
|
+
provider allow-lists, HTTP/tool-callability settings, and credential adapters
|
|
144
|
+
as factory options. Only add a thin credential adapter when the app has
|
|
145
|
+
app-specific credential lookup rules. If the app stores a built-in provider's
|
|
146
|
+
OAuth grant under a narrower local provider id, use the runtime's
|
|
147
|
+
`oauthProviderOverrides` instead of duplicating provider config. If credentials
|
|
148
|
+
are stored on shareable/resource rows rather than in the shared credential or
|
|
149
|
+
OAuth-token stores, build a resolver that enforces those access checks before
|
|
150
|
+
exposing raw provider requests. Keep `provider-api-request` `http: false`
|
|
151
|
+
unless a separate UI permission model authorizes arbitrary provider writes.
|
|
152
|
+
Specific actions such as `search-records`, `search-emails`, or `sync-source`
|
|
153
|
+
are convenience shortcuts, not capability limits; agents should fall back to
|
|
154
|
+
the provider API trio when a question requires an endpoint or filter that the
|
|
155
|
+
shortcut does not model.
|
|
136
156
|
|
|
137
157
|
This is a framework tenet. The safety boundary should be provider host
|
|
138
158
|
allow-listing, credential scoping, auth injection, private-network blocking,
|
|
@@ -37,6 +37,7 @@ pnpm action docs-search --slug <slug>
|
|
|
37
37
|
pnpm action docs-search --list
|
|
38
38
|
pnpm action source-search --query "<pattern>"
|
|
39
39
|
pnpm action source-search --path templates/plan/AGENTS.md
|
|
40
|
+
pnpm action source-search --path toolkit/src/index.ts
|
|
40
41
|
pnpm action source-search --list
|
|
41
42
|
```
|
|
42
43
|
|
|
@@ -56,6 +57,13 @@ under `node_modules/@agent-native/core/docs/content/`. For source examples,
|
|
|
56
57
|
read files under `node_modules/@agent-native/core/corpus/core/` or
|
|
57
58
|
`node_modules/@agent-native/core/corpus/templates/`.
|
|
58
59
|
|
|
60
|
+
Toolkit source is searchable at `toolkit/` in the Core corpus and also ships as
|
|
61
|
+
readable TypeScript under `node_modules/@agent-native/toolkit/src/`. Read
|
|
62
|
+
`customizing-agent-native` before copying a shared component: inspect package
|
|
63
|
+
source as a read-only reference, copy only the smallest UI piece into app-owned
|
|
64
|
+
source, and preserve public actions, application state, auth, and agent-chat
|
|
65
|
+
runtime contracts. Never edit `node_modules` or deep-import its private source.
|
|
66
|
+
|
|
59
67
|
## Useful Slugs
|
|
60
68
|
|
|
61
69
|
| Need | Slugs |
|
|
@@ -74,3 +82,5 @@ read files under `node_modules/@agent-native/core/corpus/core/` or
|
|
|
74
82
|
- Do not add custom REST wrappers for app data before reading `actions`.
|
|
75
83
|
- Do not add inline LLM calls before reading `using-your-agent` and
|
|
76
84
|
`agent-surfaces`.
|
|
85
|
+
- Do not copy framework runtime internals when a public API or narrow UI copy
|
|
86
|
+
will do; read `customizing-agent-native` for the supported override ladder.
|
|
@@ -57,6 +57,9 @@ in the moment of agent use.
|
|
|
57
57
|
missing-secret states, OAuth grants, and provider connection health.
|
|
58
58
|
- **Agent UX kit**: sidebar, composer, staged context, mentions, voice, human
|
|
59
59
|
approval, generative UI, progress, and screen-state exposure.
|
|
60
|
+
- **Chat history kit**: presentational chat lists and recent-chat rails belong
|
|
61
|
+
in Toolkit; Core keeps thread persistence, agent execution, transport, and
|
|
62
|
+
page-to-sidebar handoff. Apps inject routing, labels, and domain actions.
|
|
60
63
|
- **Agent page kit**: the full-page `/agent` surface (`AgentTabsPage` from
|
|
61
64
|
`@agent-native/core/client`) with Context, Files, Connections, Jobs, and
|
|
62
65
|
Access tabs plus a Personal/Organization scope toggle. The canonical home
|
|
@@ -83,6 +86,9 @@ When adding or refactoring one of these areas:
|
|
|
83
86
|
5. Register app-specific labels, routes, resource adapters, and settings panels
|
|
84
87
|
instead of hardcoding app names in core UI.
|
|
85
88
|
6. Update docs and relevant skills so future apps discover the shared path.
|
|
89
|
+
7. Keep the component easy to adopt piecemeal: expose props/slots first and
|
|
90
|
+
ship readable source so apps can copy the smallest UI piece when their
|
|
91
|
+
product needs to own it. See `customizing-agent-native`.
|
|
86
92
|
|
|
87
93
|
## Related Skills
|
|
88
94
|
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: customizing-agent-native
|
|
3
|
+
description: >-
|
|
4
|
+
How to adopt, compose, or selectively copy Agent Native UI into app-owned
|
|
5
|
+
code. Use when overriding shared components, customizing a template, adding
|
|
6
|
+
UI to chat or headless apps, or inspecting installed framework source.
|
|
7
|
+
scope: dev
|
|
8
|
+
metadata:
|
|
9
|
+
internal: true
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Customizing Agent Native
|
|
13
|
+
|
|
14
|
+
## Rule
|
|
15
|
+
|
|
16
|
+
Start with the public component and its props, slots, callbacks, and stable
|
|
17
|
+
class names. If those seams are not enough, copy the smallest useful reference
|
|
18
|
+
implementation into the app and make that copy app-owned. Never edit
|
|
19
|
+
`node_modules`, deep-import a private source file at runtime, or patch an
|
|
20
|
+
`@agent-native/*` package.
|
|
21
|
+
|
|
22
|
+
Use this order:
|
|
23
|
+
|
|
24
|
+
1. Configure the public component.
|
|
25
|
+
2. Compose public primitives behind a local app component.
|
|
26
|
+
3. Copy one component or helper into app source and change the app import.
|
|
27
|
+
4. Propose a new Toolkit seam when the same override is useful in two apps.
|
|
28
|
+
|
|
29
|
+
Copying is for intentional product customization, not for hiding an upgrade
|
|
30
|
+
failure or replacing Core runtime behavior.
|
|
31
|
+
|
|
32
|
+
## Find The Installed Implementation
|
|
33
|
+
|
|
34
|
+
Use the source that matches the installed package version:
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
pnpm action docs-search --query "<component or feature>"
|
|
38
|
+
pnpm action source-search --query "<component or symbol>"
|
|
39
|
+
rg -n "<component or symbol>" node_modules/@agent-native/toolkit/src
|
|
40
|
+
rg -n "<component or symbol>" node_modules/@agent-native/core/corpus
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
- Toolkit publishes readable TypeScript under
|
|
44
|
+
`node_modules/@agent-native/toolkit/src/` for selective UI adoption.
|
|
45
|
+
- Core and first-party template source lives under
|
|
46
|
+
`node_modules/@agent-native/core/corpus/core/` and
|
|
47
|
+
`node_modules/@agent-native/core/corpus/templates/`.
|
|
48
|
+
- Treat those trees as read-only references. Copy files into an app directory
|
|
49
|
+
such as `app/components/`, then import the local copy.
|
|
50
|
+
|
|
51
|
+
When a copied component imports sibling helpers, copy only the required
|
|
52
|
+
siblings or replace them with public package imports. Do not copy an entire
|
|
53
|
+
package or template to change one surface.
|
|
54
|
+
|
|
55
|
+
## Preserve The Agent-Native Contract
|
|
56
|
+
|
|
57
|
+
UI ownership may change; product contracts should not:
|
|
58
|
+
|
|
59
|
+
- Keep app operations in `defineAction` actions and call them through
|
|
60
|
+
`useActionQuery`, `useActionMutation`, or another named client helper.
|
|
61
|
+
- Keep navigation, selection, and focused-object state visible through the
|
|
62
|
+
existing application-state keys.
|
|
63
|
+
- Keep AI work in the shared agent chat instead of adding direct LLM calls.
|
|
64
|
+
- Keep auth, access checks, persistence, chat transport, and agent execution in
|
|
65
|
+
Core. Do not copy those runtimes into the app.
|
|
66
|
+
- Keep local adapters narrow so package upgrades still improve every surface
|
|
67
|
+
the app has not intentionally taken ownership of.
|
|
68
|
+
|
|
69
|
+
## App Shapes
|
|
70
|
+
|
|
71
|
+
- **Template app:** begin with its existing local adapters and domain UI. Use
|
|
72
|
+
Toolkit for repeated workspace UI; copy only the piece being customized.
|
|
73
|
+
- **Chat app:** keep `AgentChatSurface`, thread state, and chat transport in
|
|
74
|
+
Core. Compose or copy Toolkit presentation such as chat-history UI around it.
|
|
75
|
+
- **Headless app:** stay action-first while no UI is needed. When adding a UI,
|
|
76
|
+
use the Chat template as the on-ramp or add Toolkit components without
|
|
77
|
+
replacing the existing actions.
|
|
78
|
+
- **Workspace:** put one-app overrides in that app. Promote a local component
|
|
79
|
+
to `packages/shared` only when multiple workspace apps use it.
|
|
80
|
+
|
|
81
|
+
## After Copying
|
|
82
|
+
|
|
83
|
+
- Remove unused dependencies and imports from the copied file.
|
|
84
|
+
- Keep visible text in the app's localization catalogs.
|
|
85
|
+
- Run the app's formatter, typecheck, and focused tests.
|
|
86
|
+
- Re-check the installed source during future package upgrades; the app-owned
|
|
87
|
+
copy does not receive upstream fixes automatically.
|
|
88
|
+
|
|
89
|
+
## Don't
|
|
90
|
+
|
|
91
|
+
- Don't edit or import from `node_modules/@agent-native/*/src` at runtime.
|
|
92
|
+
- Don't add `pnpm.overrides`, patches, or resolutions for Agent Native packages.
|
|
93
|
+
- Don't copy Core auth, DB, action, agent-loop, or transport internals.
|
|
94
|
+
- Don't fork a full template when a prop, slot, wrapper, or one-file copy works.
|
|
95
|
+
|
|
96
|
+
## Related Skills
|
|
97
|
+
|
|
98
|
+
- `agent-native-docs` — version-matched docs and source lookup
|
|
99
|
+
- `agent-native-toolkit` — shared-vs-app-owned architecture boundary
|
|
100
|
+
- `self-modifying-code` — safe app source edits
|
|
101
|
+
- `upgrade-agent-native` — supported package upgrade path
|
|
102
|
+
- `adding-a-feature` — UI/action/instructions/application-state parity
|
|
@@ -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
|
|
39
|
-
|
|
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
|
|
@@ -25,6 +25,10 @@ first-party template patterns ships in `node_modules/@agent-native/core/corpus`.
|
|
|
25
25
|
Use package docs for framework APIs, the package corpus for reusable
|
|
26
26
|
framework/template patterns, and this `AGENTS.md` plus `.agents/skills/` for
|
|
27
27
|
workspace-specific conventions.
|
|
28
|
+
Read `customizing-agent-native` before adapting shared UI: configure or compose
|
|
29
|
+
public components first, then copy only the smallest reference UI piece into
|
|
30
|
+
the owning app when necessary. Never edit `node_modules` or replace shared
|
|
31
|
+
runtime contracts.
|
|
28
32
|
|
|
29
33
|
## Shared Context
|
|
30
34
|
|
|
@@ -27,6 +27,10 @@ first-party template patterns ships in `node_modules/@agent-native/core/corpus`.
|
|
|
27
27
|
Use package docs for framework APIs, the package corpus for reusable
|
|
28
28
|
framework/template patterns, and `packages/shared/AGENTS.md` plus
|
|
29
29
|
`packages/shared/.agents/skills/` for workspace-specific conventions.
|
|
30
|
+
Read `customizing-agent-native` before adapting shared UI: configure or compose
|
|
31
|
+
public components first, then copy only the smallest reference UI piece into
|
|
32
|
+
the owning app when necessary. Never edit `node_modules` or replace shared
|
|
33
|
+
runtime contracts.
|
|
30
34
|
To bring an older workspace current, run `pnpm upgrade:agent-native` or
|
|
31
35
|
`npx @agent-native/core@latest upgrade` from the workspace root. That bumps
|
|
32
36
|
`@agent-native/*` deps, installs, refreshes scaffold skills, and typechecks.
|
package/docs/AGENTS.md
CHANGED
|
@@ -25,6 +25,7 @@ pnpm action docs-search --slug actions
|
|
|
25
25
|
pnpm action source-search --list
|
|
26
26
|
pnpm action source-search --query "defineAction useActionQuery"
|
|
27
27
|
pnpm action source-search --path templates/plan/AGENTS.md
|
|
28
|
+
pnpm action source-search --path toolkit/src/index.ts
|
|
28
29
|
```
|
|
29
30
|
|
|
30
31
|
The built-in app agent also has read-only `docs-search` and `source-search`
|
|
@@ -42,6 +43,12 @@ For source examples, read matching files under
|
|
|
42
43
|
`node_modules/@agent-native/core/corpus/core/` or
|
|
43
44
|
`node_modules/@agent-native/core/corpus/templates/`.
|
|
44
45
|
|
|
46
|
+
Readable Toolkit TypeScript is available under
|
|
47
|
+
`node_modules/@agent-native/toolkit/src/`. Before adapting it, read the
|
|
48
|
+
generated app's `customizing-agent-native` skill. Treat installed source as a
|
|
49
|
+
read-only reference, copy only the smallest UI piece into app-owned source, and
|
|
50
|
+
preserve public action, state, auth, and agent-chat runtime contracts.
|
|
51
|
+
|
|
45
52
|
## What To Read First
|
|
46
53
|
|
|
47
54
|
| Task | Start with |
|