@agent-native/core 0.111.4 → 0.113.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/corpus/README.md +4 -2
- package/corpus/core/CHANGELOG.md +34 -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 +8 -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 +35 -15
- package/corpus/core/src/cli/code-agent-runs.concurrent-worker.ts +33 -0
- package/corpus/core/src/cli/code-agent-runs.ts +70 -36
- package/corpus/core/src/cli/codex-cli-participant.ts +496 -0
- package/corpus/core/src/cli/multi-frontier-runs.ts +1952 -0
- package/corpus/core/src/client/chat/ChatHistoryList.tsx +7 -404
- package/corpus/core/src/coding-tools/index.ts +27 -8
- package/corpus/core/src/embeddings/index.ts +233 -0
- package/corpus/core/src/index.ts +2 -0
- 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/search/index.ts +413 -0
- 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/brain/RUNBOOK.md +48 -5
- package/corpus/templates/brain/.agents/skills/brain/SKILL.md +46 -14
- 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/README.md +34 -3
- package/corpus/templates/brain/actions/_schemas.ts +13 -7
- package/corpus/templates/brain/actions/approve-proposal.ts +2 -0
- package/corpus/templates/brain/actions/claim-distillation.ts +24 -27
- package/corpus/templates/brain/actions/create-source.ts +1 -1
- package/corpus/templates/brain/actions/delete-staged-dataset.ts +3 -24
- package/corpus/templates/brain/actions/get-knowledge.ts +6 -2
- package/corpus/templates/brain/actions/get-pilot-report.ts +44 -8
- package/corpus/templates/brain/actions/import-capture.ts +21 -9
- package/corpus/templates/brain/actions/import-transcript.ts +42 -14
- package/corpus/templates/brain/actions/list-captures.ts +10 -1
- package/corpus/templates/brain/actions/list-distillation-queue.ts +39 -14
- package/corpus/templates/brain/actions/list-projects.ts +51 -0
- package/corpus/templates/brain/actions/list-proposals.ts +80 -4
- package/corpus/templates/brain/actions/list-sources.ts +17 -3
- package/corpus/templates/brain/actions/list-staged-datasets.ts +3 -28
- package/corpus/templates/brain/actions/manage-project.ts +118 -0
- package/corpus/templates/brain/actions/mark-capture-distilled.ts +68 -20
- package/corpus/templates/brain/actions/navigate.ts +1 -0
- 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/reject-proposal.ts +6 -1
- package/corpus/templates/brain/actions/resanitize-captures.ts +159 -33
- package/corpus/templates/brain/actions/review-proposal.ts +2 -0
- package/corpus/templates/brain/actions/search-everything.ts +10 -1
- package/corpus/templates/brain/actions/search-knowledge.ts +1 -1
- package/corpus/templates/brain/actions/set-settings.ts +36 -1
- package/corpus/templates/brain/actions/update-proposal.ts +2 -0
- 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/hooks/use-distillation-bridge.ts +18 -9
- package/corpus/templates/brain/app/hooks/use-navigation-state.ts +3 -0
- package/corpus/templates/brain/app/i18n-data.ts +731 -2
- package/corpus/templates/brain/app/lib/brain.ts +88 -1
- package/corpus/templates/brain/app/lib/ingest-handoff.ts +35 -0
- package/corpus/templates/brain/app/routes/ops.tsx +47 -0
- package/corpus/templates/brain/app/routes/review.tsx +41 -2
- package/corpus/templates/brain/app/routes/search.tsx +33 -2
- package/corpus/templates/brain/app/routes/settings.tsx +158 -0
- package/corpus/templates/brain/app/routes/sources.tsx +31 -0
- package/corpus/templates/brain/changelog/2026-07-19-added-private-source-safe-semantic-search.md +6 -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/jobs/process-ingest-queue.ts +270 -36
- package/corpus/templates/brain/package.json +1 -0
- package/corpus/templates/brain/server/db/index.ts +18 -0
- package/corpus/templates/brain/server/db/schema.ts +197 -1
- package/corpus/templates/brain/server/jobs/distillation-queue.ts +12 -5
- package/corpus/templates/brain/server/lib/audiences.ts +708 -0
- package/corpus/templates/brain/server/lib/brain-health.ts +251 -38
- package/corpus/templates/brain/server/lib/brain.ts +877 -50
- package/corpus/templates/brain/server/lib/capture-sanitization.ts +217 -53
- package/corpus/templates/brain/server/lib/connectors.ts +609 -72
- package/corpus/templates/brain/server/lib/demo.ts +17 -4
- package/corpus/templates/brain/server/lib/hybrid-search.ts +363 -0
- package/corpus/templates/brain/server/lib/ingest-queue.ts +104 -0
- package/corpus/templates/brain/server/lib/privacy-readiness.ts +24 -0
- package/corpus/templates/brain/server/lib/search-index-contracts.ts +72 -0
- package/corpus/templates/brain/server/lib/search-index.ts +714 -0
- package/corpus/templates/brain/server/lib/search.ts +120 -4
- package/corpus/templates/brain/server/lib/sensitivity-policy.ts +174 -0
- package/corpus/templates/brain/server/lib/slack-channel-membership.ts +44 -0
- package/corpus/templates/brain/server/lib/slack-events.ts +281 -0
- package/corpus/templates/brain/server/onboarding.ts +29 -0
- package/corpus/templates/brain/server/plugins/db.ts +204 -0
- package/corpus/templates/brain/server/register-secrets.ts +46 -0
- package/corpus/templates/brain/server/routes/api/_agent-native/brain/ingest.post.ts +36 -16
- package/corpus/templates/brain/server/routes/api/_agent-native/brain/slack-events.post.ts +28 -0
- package/corpus/templates/brain/shared/slack-source-config.ts +60 -0
- package/corpus/templates/brain/shared/types.ts +10 -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 +8 -9
- package/dist/cli/code-agent-executor.d.ts.map +1 -1
- package/dist/cli/code-agent-executor.js +27 -13
- 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 +5 -0
- package/dist/cli/code-agent-runs.d.ts.map +1 -1
- package/dist/cli/code-agent-runs.js +51 -33
- 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 +246 -0
- package/dist/cli/multi-frontier-runs.d.ts.map +1 -0
- package/dist/cli/multi-frontier-runs.js +1247 -0
- package/dist/cli/multi-frontier-runs.js.map +1 -0
- 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/coding-tools/index.d.ts +1 -0
- package/dist/coding-tools/index.d.ts.map +1 -1
- package/dist/coding-tools/index.js +25 -7
- package/dist/coding-tools/index.js.map +1 -1
- package/dist/collab/awareness.d.ts +2 -2
- package/dist/collab/awareness.d.ts.map +1 -1
- package/dist/embeddings/index.d.ts +24 -0
- package/dist/embeddings/index.d.ts.map +1 -0
- package/dist/embeddings/index.js +172 -0
- package/dist/embeddings/index.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.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/progress/routes.d.ts +1 -1
- 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/resources/handlers.d.ts +1 -1
- 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/search/index.d.ts +88 -0
- package/dist/search/index.d.ts.map +1 -0
- package/dist/search/index.js +267 -0
- package/dist/search/index.js.map +1 -0
- 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 +9 -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
|
@@ -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,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Thin calendar re-export of staged dataset deletion, pre-bound to appId="calendar".
|
|
3
3
|
*/
|
|
4
|
-
import {
|
|
5
|
-
import { deleteStagedDataset } from "@agent-native/core/provider-api/staged-datasets-store";
|
|
6
|
-
import { getCredentialContext } from "@agent-native/core/server/request-context";
|
|
4
|
+
import { createDeleteStagedDatasetAction } from "@agent-native/core/provider-api/actions/staged-datasets";
|
|
7
5
|
import { z } from "zod";
|
|
8
6
|
|
|
9
7
|
import { CALENDAR_APP_ID } from "../server/lib/provider-api.js";
|
|
10
8
|
|
|
11
|
-
export default
|
|
9
|
+
export default createDeleteStagedDatasetAction({
|
|
12
10
|
description:
|
|
13
11
|
"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
12
|
schema: z.object({
|
|
@@ -20,24 +18,5 @@ export default defineAction({
|
|
|
20
18
|
),
|
|
21
19
|
}),
|
|
22
20
|
http: false,
|
|
23
|
-
|
|
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: CALENDAR_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
|
-
},
|
|
21
|
+
appId: CALENDAR_APP_ID,
|
|
43
22
|
});
|
|
@@ -1,40 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Thin calendar re-export of staged dataset listing, pre-bound to appId="calendar".
|
|
3
3
|
*/
|
|
4
|
-
import {
|
|
5
|
-
import { listStagedDatasets } from "@agent-native/core/provider-api/staged-datasets-store";
|
|
6
|
-
import { getCredentialContext } from "@agent-native/core/server/request-context";
|
|
4
|
+
import { createListStagedDatasetsAction } from "@agent-native/core/provider-api/actions/staged-datasets";
|
|
7
5
|
import { z } from "zod";
|
|
8
6
|
|
|
9
7
|
import { CALENDAR_APP_ID } from "../server/lib/provider-api.js";
|
|
10
8
|
|
|
11
|
-
export default
|
|
9
|
+
export default createListStagedDatasetsAction({
|
|
12
10
|
description:
|
|
13
11
|
"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
12
|
schema: z.object({}),
|
|
15
13
|
http: { method: "GET" },
|
|
16
|
-
|
|
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: CALENDAR_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
|
-
},
|
|
14
|
+
appId: CALENDAR_APP_ID,
|
|
40
15
|
});
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { createProviderApiCatalogAction } from "@agent-native/core/provider-api/actions/provider-api";
|
|
2
2
|
import { z } from "zod";
|
|
3
3
|
|
|
4
4
|
import {
|
|
5
5
|
CALENDAR_PROVIDER_API_IDS,
|
|
6
|
-
|
|
6
|
+
getCalendarProviderApiRuntime,
|
|
7
7
|
} from "../server/lib/provider-api.js";
|
|
8
8
|
|
|
9
9
|
const ProviderSchema = z.enum(CALENDAR_PROVIDER_API_IDS);
|
|
10
10
|
|
|
11
|
-
export default
|
|
11
|
+
export default createProviderApiCatalogAction(getCalendarProviderApiRuntime(), {
|
|
12
12
|
description:
|
|
13
13
|
"List raw HTTP API capabilities for Calendar-connected providers. Use before provider-api-request when calendar/event/CRM 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
14
|
schema: z.object({
|
|
@@ -17,12 +17,6 @@ export default defineAction({
|
|
|
17
17
|
),
|
|
18
18
|
}),
|
|
19
19
|
http: { method: "GET" },
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
return {
|
|
23
|
-
providers: await listProviderApiCatalog(provider),
|
|
24
|
-
guidance:
|
|
25
|
-
"Calendar actions like list-events, search-events, and CRM contact lookups are convenience shortcuts, not capability limits. When the provider API can answer the question with a better endpoint, query, body, pagination mode, or API version, inspect docs/spec URLs and call provider-api-request directly.",
|
|
26
|
-
};
|
|
27
|
-
},
|
|
20
|
+
guidance:
|
|
21
|
+
"Calendar actions like list-events, search-events, and CRM contact lookups are convenience shortcuts, not capability limits. When the provider API can answer the question with a better endpoint, query, body, pagination mode, or API version, inspect docs/spec URLs and call provider-api-request directly.",
|
|
28
22
|
});
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { createProviderApiDocsAction } from "@agent-native/core/provider-api/actions/provider-api";
|
|
2
2
|
import { z } from "zod";
|
|
3
3
|
|
|
4
4
|
import {
|
|
5
5
|
CALENDAR_PROVIDER_API_IDS,
|
|
6
|
-
|
|
6
|
+
getCalendarProviderApiRuntime,
|
|
7
7
|
} from "../server/lib/provider-api.js";
|
|
8
8
|
|
|
9
9
|
const ProviderSchema = z.enum(CALENDAR_PROVIDER_API_IDS);
|
|
@@ -23,7 +23,7 @@ const WebContentSearchSchema = z.object({
|
|
|
23
23
|
caseSensitive: BooleanFromQuerySchema.optional(),
|
|
24
24
|
});
|
|
25
25
|
|
|
26
|
-
export default
|
|
26
|
+
export default createProviderApiDocsAction(getCalendarProviderApiRuntime(), {
|
|
27
27
|
description:
|
|
28
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 Calendar/CRM endpoint, filter operator, payload shape, pagination, or API version is uncertain.",
|
|
29
29
|
schema: z.object({
|
|
@@ -69,6 +69,4 @@ export default defineAction({
|
|
|
69
69
|
),
|
|
70
70
|
}),
|
|
71
71
|
http: { method: "GET" },
|
|
72
|
-
readOnly: true,
|
|
73
|
-
run: async (args) => fetchProviderApiDocs(args),
|
|
74
72
|
});
|
|
@@ -1,12 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { stagingExecuteRequest } from "@agent-native/core/provider-api/staging";
|
|
3
|
-
import { getCredentialContext } from "@agent-native/core/server/request-context";
|
|
1
|
+
import { createProviderApiRequestAction } from "@agent-native/core/provider-api/actions/provider-api";
|
|
4
2
|
import { z } from "zod";
|
|
5
3
|
|
|
6
4
|
import {
|
|
7
5
|
CALENDAR_APP_ID,
|
|
8
6
|
CALENDAR_PROVIDER_API_IDS,
|
|
9
|
-
executeProviderApiRequest,
|
|
10
7
|
getCalendarProviderApiRuntime,
|
|
11
8
|
} from "../server/lib/provider-api.js";
|
|
12
9
|
|
|
@@ -68,7 +65,7 @@ const PaginationSchema = z
|
|
|
68
65
|
})
|
|
69
66
|
.optional();
|
|
70
67
|
|
|
71
|
-
export default
|
|
68
|
+
export default createProviderApiRequestAction(getCalendarProviderApiRuntime(), {
|
|
72
69
|
description:
|
|
73
70
|
"Make an arbitrary authenticated HTTP request to a Calendar-connected provider API. " +
|
|
74
71
|
"Use this as the flexible escape hatch when a convenience action cannot express the needed endpoint, event filter, attendee search, calendar list, CRM object, pagination mode, payload, or API version. " +
|
|
@@ -205,36 +202,5 @@ export default defineAction({
|
|
|
205
202
|
}),
|
|
206
203
|
http: false,
|
|
207
204
|
toolCallable: false,
|
|
208
|
-
|
|
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 = getCalendarProviderApiRuntime();
|
|
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: CALENDAR_APP_ID, ownerEmail: ctx.userEmail },
|
|
234
|
-
);
|
|
235
|
-
}
|
|
236
|
-
return executeProviderApiRequest(
|
|
237
|
-
args as unknown as Parameters<typeof executeProviderApiRequest>[0],
|
|
238
|
-
);
|
|
239
|
-
},
|
|
205
|
+
appId: CALENDAR_APP_ID,
|
|
240
206
|
});
|
|
@@ -1,13 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Thin calendar re-export of the staged dataset query helper, pre-bound to appId="calendar".
|
|
3
3
|
*/
|
|
4
|
-
import {
|
|
5
|
-
import { runAggregateQuery } from "@agent-native/core/provider-api/staged-datasets-aggregate";
|
|
6
|
-
import {
|
|
7
|
-
getStagedDatasetMeta,
|
|
8
|
-
getStagedDatasetRows,
|
|
9
|
-
} from "@agent-native/core/provider-api/staged-datasets-store";
|
|
10
|
-
import { getCredentialContext } from "@agent-native/core/server/request-context";
|
|
4
|
+
import { createQueryStagedDatasetAction } from "@agent-native/core/provider-api/actions/staged-datasets";
|
|
11
5
|
import { z } from "zod";
|
|
12
6
|
|
|
13
7
|
import { CALENDAR_APP_ID } from "../server/lib/provider-api.js";
|
|
@@ -40,7 +34,7 @@ const AggregateFieldSchema = z.object({
|
|
|
40
34
|
.describe("Output column name. Default: {op}_{column}."),
|
|
41
35
|
});
|
|
42
36
|
|
|
43
|
-
export default
|
|
37
|
+
export default createQueryStagedDatasetAction({
|
|
44
38
|
description:
|
|
45
39
|
"Run a filter/aggregate/project query over a staged dataset previously written by provider-api-request (stageAs). Use after staging Google Calendar events, calendar lists, attendee searches, or CRM records to count, group, filter, or project rows without re-fetching provider APIs.",
|
|
46
40
|
schema: z.object({
|
|
@@ -86,44 +80,5 @@ export default defineAction({
|
|
|
86
80
|
.describe("Maximum rows to return (default all, max 10000)."),
|
|
87
81
|
}),
|
|
88
82
|
http: false,
|
|
89
|
-
|
|
90
|
-
run: async (args) => {
|
|
91
|
-
const ctx = getCredentialContext();
|
|
92
|
-
if (!ctx) {
|
|
93
|
-
throw new Error("No authenticated context for query-staged-dataset.");
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
const meta = await getStagedDatasetMeta({
|
|
97
|
-
id: args.datasetId,
|
|
98
|
-
appId: CALENDAR_APP_ID,
|
|
99
|
-
ownerEmail: ctx.userEmail,
|
|
100
|
-
});
|
|
101
|
-
if (!meta) {
|
|
102
|
-
throw new Error(
|
|
103
|
-
`Dataset ${args.datasetId} not found (or belongs to a different owner/app).`,
|
|
104
|
-
);
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
const rows = await getStagedDatasetRows({
|
|
108
|
-
id: args.datasetId,
|
|
109
|
-
appId: CALENDAR_APP_ID,
|
|
110
|
-
ownerEmail: ctx.userEmail,
|
|
111
|
-
});
|
|
112
|
-
|
|
113
|
-
const result = runAggregateQuery(rows, {
|
|
114
|
-
where: args.where,
|
|
115
|
-
groupBy: args.groupBy,
|
|
116
|
-
aggregate: args.aggregate,
|
|
117
|
-
select: args.select,
|
|
118
|
-
orderBy: args.orderBy,
|
|
119
|
-
orderDir: args.orderDir,
|
|
120
|
-
limit: args.limit,
|
|
121
|
-
});
|
|
122
|
-
|
|
123
|
-
return {
|
|
124
|
-
dataset: { id: meta.id, name: meta.name, totalRows: meta.rowCount },
|
|
125
|
-
rowCount: result.length,
|
|
126
|
-
rows: result,
|
|
127
|
-
};
|
|
128
|
-
},
|
|
83
|
+
appId: CALENDAR_APP_ID,
|
|
129
84
|
});
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { lookupGongCallsByEmail } from "@agent-native/core/provider-api/gong";
|
|
1
2
|
import { readBody } from "@agent-native/core/server";
|
|
2
3
|
import {
|
|
3
4
|
defineEventHandler,
|
|
@@ -57,66 +58,10 @@ export const gongCallsLookup = defineEventHandler(async (event: H3Event) => {
|
|
|
57
58
|
return { error: "Gong API key not configured" };
|
|
58
59
|
}
|
|
59
60
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
new Date(Date.now() - 90 * 24 * 60 * 60 * 1000).toISOString(),
|
|
65
|
-
{
|
|
66
|
-
headers: {
|
|
67
|
-
Authorization: `Bearer ${apiKey}`,
|
|
68
|
-
"Content-Type": "application/json",
|
|
69
|
-
},
|
|
70
|
-
},
|
|
71
|
-
);
|
|
72
|
-
|
|
73
|
-
if (!response.ok) {
|
|
74
|
-
// Try with basic auth format (accessKey:secretKey base64)
|
|
75
|
-
const basicRes = await fetch(
|
|
76
|
-
"https://api.gong.io/v2/calls?fromDateTime=" +
|
|
77
|
-
new Date(Date.now() - 90 * 24 * 60 * 60 * 1000).toISOString(),
|
|
78
|
-
{
|
|
79
|
-
headers: {
|
|
80
|
-
Authorization: `Basic ${Buffer.from(apiKey).toString("base64")}`,
|
|
81
|
-
"Content-Type": "application/json",
|
|
82
|
-
},
|
|
83
|
-
},
|
|
84
|
-
);
|
|
85
|
-
if (!basicRes.ok) {
|
|
86
|
-
setResponseStatus(event, response.status);
|
|
87
|
-
return { error: `Gong API error: ${response.status}` };
|
|
88
|
-
}
|
|
89
|
-
const basicData = await basicRes.json();
|
|
90
|
-
return filterCallsByEmail(basicData.calls || [], email);
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
const data = await response.json();
|
|
94
|
-
return filterCallsByEmail(data.calls || [], email);
|
|
95
|
-
} catch {
|
|
96
|
-
setResponseStatus(event, 500);
|
|
97
|
-
return { error: "Failed to reach Gong API" };
|
|
61
|
+
const result = await lookupGongCallsByEmail({ credential: apiKey, email });
|
|
62
|
+
if (!result.ok) {
|
|
63
|
+
setResponseStatus(event, result.status);
|
|
64
|
+
return { error: result.error };
|
|
98
65
|
}
|
|
66
|
+
return result.calls;
|
|
99
67
|
});
|
|
100
|
-
|
|
101
|
-
function filterCallsByEmail(calls: any[], email: string) {
|
|
102
|
-
const emailLower = email.toLowerCase();
|
|
103
|
-
return calls
|
|
104
|
-
.filter((call: any) => {
|
|
105
|
-
const participants = call.parties || [];
|
|
106
|
-
return participants.some(
|
|
107
|
-
(p: any) => p.emailAddress?.toLowerCase() === emailLower,
|
|
108
|
-
);
|
|
109
|
-
})
|
|
110
|
-
.slice(0, 10)
|
|
111
|
-
.map((call: any) => ({
|
|
112
|
-
id: call.id,
|
|
113
|
-
title: call.title,
|
|
114
|
-
started: call.started,
|
|
115
|
-
duration: call.duration,
|
|
116
|
-
direction: call.direction,
|
|
117
|
-
parties: (call.parties || []).map((p: any) => ({
|
|
118
|
-
name: p.name,
|
|
119
|
-
email: p.emailAddress,
|
|
120
|
-
})),
|
|
121
|
-
}));
|
|
122
|
-
}
|
|
@@ -4,8 +4,9 @@ import {
|
|
|
4
4
|
getSession,
|
|
5
5
|
isElectron,
|
|
6
6
|
getAppUrl,
|
|
7
|
+
GOOGLE_PRIMARY_PROVIDER_CREDENTIAL_KEYS,
|
|
7
8
|
resolveGoogleSignInCredentials,
|
|
8
|
-
|
|
9
|
+
resolveGoogleProviderCredentialCandidatesWithReader,
|
|
9
10
|
resolveOAuthRedirectUri,
|
|
10
11
|
encodeOAuthState,
|
|
11
12
|
decodeOAuthState,
|
|
@@ -68,15 +69,16 @@ function getCalendarOAuthStateOrgId(
|
|
|
68
69
|
|
|
69
70
|
async function resolveCalendarOAuthCredentials(event: H3Event) {
|
|
70
71
|
const session = await getSession(event).catch(() => null);
|
|
71
|
-
const
|
|
72
|
+
const [credentials] = await runWithRequestContext(
|
|
72
73
|
{ userEmail: session?.email, orgId: session?.orgId },
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
74
|
+
() =>
|
|
75
|
+
resolveGoogleProviderCredentialCandidatesWithReader({
|
|
76
|
+
readCredential: resolveSecret,
|
|
77
|
+
fallbackReadCredential: (key) => process.env[key],
|
|
78
|
+
credentialKeyPairs: [GOOGLE_PRIMARY_PROVIDER_CREDENTIAL_KEYS],
|
|
79
|
+
}),
|
|
77
80
|
);
|
|
78
|
-
|
|
79
|
-
return resolveGoogleProviderCredentials();
|
|
81
|
+
return credentials ?? null;
|
|
80
82
|
}
|
|
81
83
|
|
|
82
84
|
function isCalendarConnectRequest(
|
|
@@ -10,8 +10,7 @@ import {
|
|
|
10
10
|
getRequestOrgId,
|
|
11
11
|
resolveSecret,
|
|
12
12
|
runWithRequestContext,
|
|
13
|
-
|
|
14
|
-
resolveGoogleLegacyProviderCredentials,
|
|
13
|
+
resolveGoogleProviderCredentialCandidatesWithReader,
|
|
15
14
|
} from "@agent-native/core/server";
|
|
16
15
|
|
|
17
16
|
import type {
|
|
@@ -56,11 +55,6 @@ interface GoogleTokens {
|
|
|
56
55
|
photoUrl?: string;
|
|
57
56
|
}
|
|
58
57
|
|
|
59
|
-
interface GoogleOAuthCredentials {
|
|
60
|
-
clientId: string;
|
|
61
|
-
clientSecret: string;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
58
|
function optionalString(value: unknown): string | undefined {
|
|
65
59
|
return typeof value === "string" && value.length > 0 ? value : undefined;
|
|
66
60
|
}
|
|
@@ -90,47 +84,15 @@ async function getOAuth2RefreshCredentials(owner?: string, orgId?: string) {
|
|
|
90
84
|
return candidates;
|
|
91
85
|
}
|
|
92
86
|
|
|
93
|
-
async function readCredentialPair(
|
|
94
|
-
clientIdKey: string,
|
|
95
|
-
clientSecretKey: string,
|
|
96
|
-
): Promise<GoogleOAuthCredentials | null> {
|
|
97
|
-
const [clientId, clientSecret] = await Promise.all([
|
|
98
|
-
resolveSecret(clientIdKey),
|
|
99
|
-
resolveSecret(clientSecretKey),
|
|
100
|
-
]);
|
|
101
|
-
if (clientId && clientSecret) return { clientId, clientSecret };
|
|
102
|
-
if (
|
|
103
|
-
clientIdKey === "GOOGLE_CLIENT_ID" &&
|
|
104
|
-
clientSecretKey === "GOOGLE_CLIENT_SECRET"
|
|
105
|
-
) {
|
|
106
|
-
return resolveGoogleProviderCredentials();
|
|
107
|
-
}
|
|
108
|
-
if (
|
|
109
|
-
clientIdKey === "GOOGLE_LEGACY_CLIENT_ID" &&
|
|
110
|
-
clientSecretKey === "GOOGLE_LEGACY_CLIENT_SECRET"
|
|
111
|
-
) {
|
|
112
|
-
return resolveGoogleLegacyProviderCredentials();
|
|
113
|
-
}
|
|
114
|
-
return null;
|
|
115
|
-
}
|
|
116
|
-
|
|
117
87
|
async function resolveGoogleProviderCredentialCandidates(
|
|
118
88
|
owner?: string,
|
|
119
89
|
orgId?: string,
|
|
120
|
-
)
|
|
121
|
-
const resolve =
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
);
|
|
126
|
-
const legacy = await readCredentialPair(
|
|
127
|
-
"GOOGLE_LEGACY_CLIENT_ID",
|
|
128
|
-
"GOOGLE_LEGACY_CLIENT_SECRET",
|
|
129
|
-
);
|
|
130
|
-
if (!primary) return legacy ? [legacy] : [];
|
|
131
|
-
if (!legacy || legacy.clientId === primary.clientId) return [primary];
|
|
132
|
-
return [primary, legacy];
|
|
133
|
-
};
|
|
90
|
+
) {
|
|
91
|
+
const resolve = () =>
|
|
92
|
+
resolveGoogleProviderCredentialCandidatesWithReader({
|
|
93
|
+
readCredential: resolveSecret,
|
|
94
|
+
fallbackReadCredential: (key) => process.env[key],
|
|
95
|
+
});
|
|
134
96
|
const resolvedOrgId = orgId ?? getRequestOrgId();
|
|
135
97
|
return owner
|
|
136
98
|
? runWithRequestContext({ userEmail: owner, orgId: resolvedOrgId }, resolve)
|
|
@@ -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.
|
|
@@ -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
|