@agent-native/core 0.122.4 → 0.123.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 +2 -2
- package/corpus/core/CHANGELOG.md +538 -0
- package/corpus/core/docs/content/actions.mdx +33 -20
- package/corpus/core/docs/content/agent-mentions.mdx +30 -19
- package/corpus/core/docs/content/agent-native-toolkit.mdx +8 -6
- package/corpus/core/docs/content/agent-resources.mdx +11 -0
- package/corpus/core/docs/content/agent-surfaces.mdx +41 -30
- package/corpus/core/docs/content/audit-log.mdx +78 -0
- package/corpus/core/docs/content/authentication.mdx +7 -5
- package/corpus/core/docs/content/automations.mdx +15 -9
- package/corpus/core/docs/content/client.mdx +11 -11
- package/corpus/core/docs/content/cloneable-saas.mdx +7 -1
- package/corpus/core/docs/content/code-agents-ui.mdx +9 -1
- package/corpus/core/docs/content/components.mdx +7 -0
- package/corpus/core/docs/content/context-awareness.mdx +1 -0
- package/corpus/core/docs/content/creating-templates.mdx +9 -1
- package/corpus/core/docs/content/custom-design-system.mdx +8 -0
- package/corpus/core/docs/content/data-programs.mdx +6 -0
- package/corpus/core/docs/content/deployment.mdx +2 -0
- package/corpus/core/docs/content/doctor.mdx +5 -3
- package/corpus/core/docs/content/extensions.mdx +26 -0
- package/corpus/core/docs/content/external-agents-catalog.mdx +533 -0
- package/corpus/core/docs/content/external-agents.mdx +20 -514
- package/corpus/core/docs/content/faq.mdx +2 -2
- package/corpus/core/docs/content/file-uploads.mdx +44 -0
- package/corpus/core/docs/content/frames.mdx +2 -2
- package/corpus/core/docs/content/generative-ui.mdx +8 -0
- package/corpus/core/docs/content/getting-started.mdx +45 -17
- package/corpus/core/docs/content/human-approval.mdx +9 -0
- package/corpus/core/docs/content/integrations.mdx +4 -3
- package/corpus/core/docs/content/internationalization.mdx +4 -11
- package/corpus/core/docs/content/key-concepts.mdx +1 -1
- package/corpus/core/docs/content/local-file-mode.mdx +5 -0
- package/corpus/core/docs/content/mcp-apps.mdx +2 -1
- package/corpus/core/docs/content/mcp-clients.mdx +32 -1
- package/corpus/core/docs/content/mcp-protocol.mdx +4 -3
- package/corpus/core/docs/content/messaging-internals.mdx +328 -0
- package/corpus/core/docs/content/messaging-recipes.mdx +194 -0
- package/corpus/core/docs/content/messaging.mdx +9 -307
- package/corpus/core/docs/content/multi-app-workspace.mdx +1 -1
- package/corpus/core/docs/content/multi-tenancy.mdx +1 -0
- package/corpus/core/docs/content/native-chat-ui.mdx +8 -0
- package/corpus/core/docs/content/notifications.mdx +18 -20
- package/corpus/core/docs/content/observability.mdx +1 -0
- package/corpus/core/docs/content/onboarding.mdx +20 -6
- package/corpus/core/docs/content/organizations-teams-permissions.mdx +99 -124
- package/corpus/core/docs/content/package-lifecycle.mdx +19 -7
- package/corpus/core/docs/content/progress.mdx +11 -0
- package/corpus/core/docs/content/real-time-collaboration.mdx +44 -3
- package/corpus/core/docs/content/recurring-jobs.mdx +14 -1
- package/corpus/core/docs/content/security.mdx +5 -2
- package/corpus/core/docs/content/server.mdx +2 -1
- package/corpus/core/docs/content/sharing.mdx +22 -3
- package/corpus/core/docs/content/skills-guide.mdx +62 -19
- package/corpus/core/docs/content/syncing-template-changes.mdx +9 -0
- package/corpus/core/docs/content/template-analytics-connectors.mdx +75 -0
- package/corpus/core/docs/content/template-analytics-dashboards.mdx +106 -0
- package/corpus/core/docs/content/template-analytics-developers.mdx +287 -0
- package/corpus/core/docs/content/template-analytics-monitoring-and-sessions.mdx +109 -0
- package/corpus/core/docs/content/template-analytics.mdx +21 -263
- package/corpus/core/docs/content/template-assets-developers.mdx +456 -0
- package/corpus/core/docs/content/template-assets-generation.mdx +147 -0
- package/corpus/core/docs/content/template-assets-integrations.mdx +319 -0
- package/corpus/core/docs/content/template-assets-presets.mdx +185 -0
- package/corpus/core/docs/content/template-assets.mdx +12 -562
- package/corpus/core/docs/content/template-brain-agent.mdx +103 -0
- package/corpus/core/docs/content/template-brain-developers.mdx +379 -0
- package/corpus/core/docs/content/template-brain-knowledge.mdx +50 -0
- package/corpus/core/docs/content/template-brain-sources.mdx +163 -0
- package/corpus/core/docs/content/template-brain.mdx +30 -390
- package/corpus/core/docs/content/template-calendar-agent.mdx +133 -0
- package/corpus/core/docs/content/template-calendar-booking-links.mdx +73 -0
- package/corpus/core/docs/content/template-calendar-developers.mdx +366 -0
- package/corpus/core/docs/content/template-calendar-scheduling.mdx +128 -0
- package/corpus/core/docs/content/template-calendar.mdx +13 -260
- package/corpus/core/docs/content/template-chat-developers.mdx +88 -0
- package/corpus/core/docs/content/template-chat-first-edits.mdx +145 -0
- package/corpus/core/docs/content/template-chat.mdx +12 -77
- package/corpus/core/docs/content/template-clips-ai-and-editing.mdx +114 -0
- package/corpus/core/docs/content/template-clips-capture-everywhere.mdx +120 -0
- package/corpus/core/docs/content/template-clips-developers.mdx +373 -0
- package/corpus/core/docs/content/template-clips-sharing-and-teams.mdx +182 -0
- package/corpus/core/docs/content/template-clips.mdx +19 -508
- package/corpus/core/docs/content/template-content-databases.mdx +406 -0
- package/corpus/core/docs/content/template-content-developers.mdx +364 -0
- package/corpus/core/docs/content/template-content-editing.mdx +60 -0
- package/corpus/core/docs/content/template-content-sync.mdx +149 -0
- package/corpus/core/docs/content/template-content.mdx +21 -561
- package/corpus/core/docs/content/template-design-brand-and-figma.mdx +150 -0
- package/corpus/core/docs/content/template-design-collaboration-and-full-apps.mdx +125 -0
- package/corpus/core/docs/content/template-design-developers.mdx +358 -0
- package/corpus/core/docs/content/template-design-quality-and-components.mdx +95 -0
- package/corpus/core/docs/content/template-design.mdx +20 -344
- package/corpus/core/docs/content/template-dispatch-developers.mdx +121 -0
- package/corpus/core/docs/content/template-dispatch-messaging-routing.mdx +114 -0
- package/corpus/core/docs/content/template-dispatch-operations.mdx +160 -0
- package/corpus/core/docs/content/template-dispatch-vault-integrations.mdx +316 -0
- package/corpus/core/docs/content/template-dispatch.mdx +24 -283
- package/corpus/core/docs/content/template-forms-building-publishing.mdx +135 -0
- package/corpus/core/docs/content/template-forms-developers.mdx +195 -0
- package/corpus/core/docs/content/template-forms-responses.mdx +120 -0
- package/corpus/core/docs/content/template-forms.mdx +21 -230
- package/corpus/core/docs/content/template-mail-agent.mdx +114 -0
- package/corpus/core/docs/content/template-mail-developers.mdx +356 -0
- package/corpus/core/docs/content/template-mail-drafts-and-queue.mdx +103 -0
- package/corpus/core/docs/content/template-mail-inbox.mdx +118 -0
- package/corpus/core/docs/content/template-mail.mdx +23 -274
- package/corpus/core/docs/content/template-plan-automations.mdx +213 -0
- package/corpus/core/docs/content/template-plan-developers.mdx +703 -0
- package/corpus/core/docs/content/template-plan-local-and-desktop.mdx +236 -0
- package/corpus/core/docs/content/template-plan-review-workflow.mdx +180 -0
- package/corpus/core/docs/content/template-plan.mdx +60 -910
- package/corpus/core/docs/content/template-slides-agent.mdx +102 -0
- package/corpus/core/docs/content/template-slides-design-and-media.mdx +94 -0
- package/corpus/core/docs/content/template-slides-developers.mdx +488 -0
- package/corpus/core/docs/content/template-slides-editing.mdx +56 -0
- package/corpus/core/docs/content/template-slides.mdx +20 -362
- package/corpus/core/docs/content/toolkit-capability-packages.mdx +38 -13
- package/corpus/core/docs/content/toolkit-context-knowledge.mdx +49 -9
- package/corpus/core/docs/content/toolkit-editors-canvases.mdx +72 -10
- package/corpus/core/docs/content/toolkit-resources.mdx +16 -0
- package/corpus/core/docs/content/toolkit-settings.mdx +3 -3
- package/corpus/core/docs/content/toolkit-sharing.mdx +5 -7
- package/corpus/core/docs/content/using-your-agent.mdx +25 -2
- package/corpus/core/docs/content/voice-input.mdx +11 -7
- package/corpus/core/docs/content/what-is-agent-native.mdx +1 -0
- package/corpus/core/docs/content/workspace-connections.mdx +21 -11
- package/corpus/core/docs/content/workspace-management.mdx +1 -1
- package/corpus/core/package.json +1 -3
- package/corpus/core/src/a2a/client.ts +4 -2
- package/corpus/core/src/agent/action-warnings.ts +103 -0
- package/corpus/core/src/agent/durable-background.ts +42 -5
- package/corpus/core/src/agent/engine/ai-sdk-engine.ts +58 -6
- package/corpus/core/src/agent/engine/anthropic-engine.ts +51 -8
- package/corpus/core/src/agent/engine/builder-engine.ts +56 -18
- package/corpus/core/src/agent/engine/continuation-dispatch-retry.ts +10 -9
- package/corpus/core/src/agent/engine/credential-errors.ts +11 -0
- package/corpus/core/src/agent/engine/error-detail.ts +39 -0
- package/corpus/core/src/agent/engine/prompt-cache.ts +44 -0
- package/corpus/core/src/agent/engine/registry.ts +22 -30
- package/corpus/core/src/agent/engine/tool-call-journal-seed.ts +2 -1
- package/corpus/core/src/agent/engine/translate-anthropic.ts +99 -0
- package/corpus/core/src/agent/loop-settings.ts +94 -7
- package/corpus/core/src/agent/production-agent.ts +667 -157
- package/corpus/core/src/agent/run-loop-with-resume.ts +27 -1
- package/corpus/core/src/agent/run-manager.ts +229 -39
- package/corpus/core/src/agent/run-store.ts +397 -64
- package/corpus/core/src/agent/thread-data-builder.ts +5 -1
- package/corpus/core/src/agent/types.ts +23 -6
- package/corpus/core/src/application-state/script-helpers.ts +5 -2
- package/corpus/core/src/cli/agents.ts +69 -1
- package/corpus/core/src/cli/app-skill.ts +1 -1
- package/corpus/core/src/cli/code-agent-executor.ts +7 -3
- package/corpus/core/src/cli/design-connect.ts +82 -8
- package/corpus/core/src/cli/skills-content/design-visual-edit-skill.ts +169 -24
- package/corpus/core/src/client/AssistantChat.tsx +623 -607
- package/corpus/core/src/client/agent-chat-adapter.ts +176 -29
- package/corpus/core/src/client/chat/message-components.tsx +13 -0
- package/corpus/core/src/client/embed-auth.ts +3 -1
- package/corpus/core/src/client/integrations/IntegrationCard.tsx +41 -24
- package/corpus/core/src/client/integrations/IntegrationsPanel.tsx +37 -21
- package/corpus/core/src/client/integrations/webhook-url.ts +29 -0
- package/corpus/core/src/client/org/OrgSwitcher.tsx +41 -27
- package/corpus/core/src/client/org/RequireActiveOrg.tsx +7 -0
- package/corpus/core/src/client/org/TeamPage.tsx +144 -14
- package/corpus/core/src/client/org/hooks.ts +27 -0
- package/corpus/core/src/client/org/index.ts +2 -0
- package/corpus/core/src/client/require-session.tsx +40 -29
- package/corpus/core/src/client/session-replay.ts +1 -1
- package/corpus/core/src/client/settings/DemoModeSection.tsx +0 -5
- package/corpus/core/src/client/settings/SecretsSection.tsx +47 -42
- package/corpus/core/src/client/settings/VoiceTranscriptionSection.tsx +0 -5
- package/corpus/core/src/client/sse-event-processor.ts +83 -8
- package/corpus/core/src/client/use-action.ts +22 -13
- package/corpus/core/src/client/use-agent-engine-configured.ts +36 -4
- package/corpus/core/src/client/use-db-sync.ts +21 -1
- package/corpus/core/src/credentials/index.ts +124 -2
- package/corpus/core/src/deploy/build.ts +93 -30
- package/corpus/core/src/deploy/workspace-deploy.ts +21 -16
- package/corpus/core/src/guards/no-localhost-fallback.ts +76 -14
- package/corpus/core/src/integrations/google-docs-poller.ts +19 -12
- package/corpus/core/src/integrations/webhook-handler.ts +56 -33
- package/corpus/core/src/jobs/scheduler.ts +57 -23
- package/corpus/core/src/localization/default-messages.ts +23 -1
- package/corpus/core/src/observability/evals.ts +7 -8
- package/corpus/core/src/observability/traces.ts +2 -0
- package/corpus/core/src/org/accept-pending.ts +2 -2
- package/corpus/core/src/org/active-org.ts +73 -0
- package/corpus/core/src/org/auto-join-domain.ts +7 -2
- package/corpus/core/src/org/context.ts +169 -66
- package/corpus/core/src/org/handlers.ts +148 -10
- package/corpus/core/src/org/plugin.ts +8 -1
- package/corpus/core/src/org/types.ts +6 -1
- package/corpus/core/src/provider-api/index.ts +6 -1
- package/corpus/core/src/resources/handlers.ts +2 -6
- package/corpus/core/src/resources/script-helpers.ts +2 -1
- package/corpus/core/src/scripts/chat/search-chats.ts +5 -2
- package/corpus/core/src/scripts/describe-workspace-apps.ts +59 -0
- package/corpus/core/src/scripts/resources/delete-memory.ts +5 -2
- package/corpus/core/src/scripts/resources/delete.ts +5 -2
- package/corpus/core/src/scripts/resources/effective.ts +5 -2
- package/corpus/core/src/scripts/resources/list.ts +5 -2
- package/corpus/core/src/scripts/resources/read.ts +5 -2
- package/corpus/core/src/scripts/resources/save-memory.ts +5 -2
- package/corpus/core/src/scripts/resources/write.ts +5 -2
- package/corpus/core/src/server/agent-capabilities.ts +147 -0
- package/corpus/core/src/server/agent-chat/framework-prompts.ts +11 -13
- package/corpus/core/src/server/agent-chat/prompt-resources.ts +183 -57
- package/corpus/core/src/server/agent-chat/script-entries.ts +20 -7
- package/corpus/core/src/server/agent-chat-plugin.ts +27 -0
- package/corpus/core/src/server/auth.ts +38 -32
- package/corpus/core/src/server/core-routes-plugin.ts +229 -179
- package/corpus/core/src/server/credential-provider.ts +196 -44
- package/corpus/core/src/server/embed-session.ts +10 -0
- package/corpus/core/src/server/framework-request-handler.ts +43 -0
- package/corpus/core/src/server/google-auth-plugin.ts +13 -450
- package/corpus/core/src/server/index.ts +4 -1
- package/corpus/core/src/server/onboarding-html.ts +20 -56
- package/corpus/core/src/server/open-route.ts +6 -1
- package/corpus/core/src/server/poll.ts +1 -1
- package/corpus/core/src/server/prompts/framework-core-compact.ts +5 -5
- package/corpus/core/src/server/prompts/framework-core.ts +7 -9
- package/corpus/core/src/server/prompts/shared-rules.ts +20 -9
- package/corpus/core/src/server/request-context.ts +58 -2
- package/corpus/core/src/server/scoped-key-storage.ts +1 -1
- package/corpus/core/src/settings/org-settings.ts +9 -0
- package/corpus/core/src/settings/store.ts +29 -0
- package/corpus/core/src/shared/index.ts +13 -0
- package/corpus/core/src/shared/sign-in-journey.ts +331 -0
- package/corpus/core/src/styles/agent-native.css +8 -0
- package/corpus/core/src/templates/chat/.agents/skills/actions/SKILL.md +19 -1
- package/corpus/core/src/templates/chat/.agents/skills/adding-a-feature/SKILL.md +2 -0
- package/corpus/core/src/templates/chat/.agents/skills/frontend-design/SKILL.md +20 -6
- package/corpus/core/src/templates/chat/.agents/skills/security/SKILL.md +2 -0
- package/corpus/core/src/templates/chat/.agents/skills/self-modifying-code/SKILL.md +4 -3
- package/corpus/core/src/templates/chat/.agents/skills/shadcn-ui/SKILL.md +7 -3
- package/corpus/core/src/templates/chat/AGENTS.md +8 -0
- package/corpus/core/src/templates/chat/app/entry.client.tsx +3 -0
- package/corpus/core/src/templates/chat/changelog/2026-07-24-borderless-secondary-surfaces.md +6 -0
- package/corpus/core/src/templates/chat/changelog/2026-07-24-sidebar-footer-controls-follow-a-consistent-order.md +6 -0
- package/corpus/core/src/templates/chat/changelog/2026-07-25-settings-navigation-now-keeps-manage-agent-as-a-dedicated-li.md +6 -0
- package/corpus/core/src/templates/default/.agents/skills/actions/SKILL.md +19 -1
- package/corpus/core/src/templates/default/.agents/skills/adding-a-feature/SKILL.md +2 -0
- package/corpus/core/src/templates/default/.agents/skills/frontend-design/SKILL.md +20 -6
- package/corpus/core/src/templates/default/.agents/skills/security/SKILL.md +2 -0
- package/corpus/core/src/templates/default/.agents/skills/self-modifying-code/SKILL.md +4 -3
- package/corpus/core/src/templates/default/.agents/skills/shadcn-ui/SKILL.md +7 -3
- package/corpus/core/src/templates/default/AGENTS.md +68 -195
- package/corpus/core/src/templates/default/app/entry.client.tsx +3 -0
- package/corpus/core/src/templates/default/app/i18n/ar-SA.ts +8 -0
- package/corpus/core/src/templates/default/app/i18n/de-DE.ts +8 -0
- package/corpus/core/src/templates/default/app/i18n/en-US.ts +8 -0
- package/corpus/core/src/templates/default/app/i18n/es-ES.ts +8 -0
- package/corpus/core/src/templates/default/app/i18n/fr-FR.ts +8 -0
- package/corpus/core/src/templates/default/app/i18n/hi-IN.ts +8 -0
- package/corpus/core/src/templates/default/app/i18n/ja-JP.ts +8 -0
- package/corpus/core/src/templates/default/app/i18n/ko-KR.ts +8 -0
- package/corpus/core/src/templates/default/app/i18n/pt-BR.ts +8 -0
- package/corpus/core/src/templates/default/app/i18n/zh-CN.ts +8 -0
- package/corpus/core/src/templates/default/app/i18n/zh-TW.ts +8 -0
- package/corpus/core/src/templates/headless/.agents/skills/actions/SKILL.md +19 -1
- package/corpus/core/src/templates/workspace-core/.agents/skills/actions/SKILL.md +19 -1
- package/corpus/core/src/templates/workspace-core/.agents/skills/adding-a-feature/SKILL.md +2 -0
- package/corpus/core/src/templates/workspace-core/.agents/skills/adding-workspace-apps/SKILL.md +100 -0
- package/corpus/core/src/templates/workspace-core/.agents/skills/address-feedback/SKILL.md +2 -1
- package/corpus/core/src/templates/workspace-core/.agents/skills/authentication/SKILL.md +28 -0
- package/corpus/core/src/templates/workspace-core/.agents/skills/composable-mini-apps/SKILL.md +14 -1
- package/corpus/core/src/templates/workspace-core/.agents/skills/frontend-design/SKILL.md +20 -6
- package/corpus/core/src/templates/workspace-core/.agents/skills/qa/SKILL.md +6 -3
- package/corpus/core/src/templates/workspace-core/.agents/skills/security/SKILL.md +2 -0
- package/corpus/core/src/templates/workspace-core/.agents/skills/self-modifying-code/SKILL.md +4 -3
- package/corpus/core/src/templates/workspace-core/.agents/skills/shadcn-ui/SKILL.md +7 -3
- package/corpus/core/src/templates/workspace-core/.agents/skills/workspace-conventions/SKILL.md +91 -0
- package/corpus/core/src/templates/workspace-core/.agents/skills/writing-agent-instructions/SKILL.md +60 -0
- package/corpus/core/src/templates/workspace-core/AGENTS.md +62 -124
- package/corpus/core/src/templates/workspace-root/AGENTS.md +6 -1
- package/corpus/core/src/triggers/dispatcher.ts +28 -17
- package/corpus/core/src/vite/client.ts +20 -8
- package/corpus/templates/analytics/.agents/skills/actions/SKILL.md +19 -1
- package/corpus/templates/analytics/.agents/skills/dashboard-management/SKILL.md +41 -1
- package/corpus/templates/analytics/.agents/skills/dashboard-ops/SKILL.md +50 -22
- package/corpus/templates/analytics/.agents/skills/data-querying/SKILL.md +1 -1
- package/corpus/templates/analytics/.agents/skills/data-querying/references/inline-chart-embeds.md +8 -0
- package/corpus/templates/analytics/.agents/skills/frontend-design/SKILL.md +20 -6
- package/corpus/templates/analytics/.agents/skills/security/SKILL.md +2 -0
- package/corpus/templates/analytics/.agents/skills/self-modifying-code/SKILL.md +4 -3
- package/corpus/templates/analytics/.agents/skills/shadcn-ui/SKILL.md +7 -3
- package/corpus/templates/analytics/.agents/skills/sharing/SKILL.md +228 -0
- package/corpus/templates/analytics/.builder/skills/charts/SKILL.md +2 -2
- package/corpus/templates/analytics/actions/delete-dashboard-view.ts +24 -0
- package/corpus/templates/analytics/actions/delete-user-pref.ts +22 -0
- package/corpus/templates/analytics/actions/generate-chart.ts +8 -245
- package/corpus/templates/analytics/actions/get-theme.ts +27 -0
- package/corpus/templates/analytics/actions/get-user-pref.ts +22 -0
- package/corpus/templates/analytics/actions/list-dashboard-views.ts +25 -0
- package/corpus/templates/analytics/actions/save-dashboard-view.ts +33 -0
- package/corpus/templates/analytics/actions/set-theme.ts +22 -0
- package/corpus/templates/analytics/actions/set-user-pref.ts +24 -0
- package/corpus/templates/analytics/app/components/dashboard/SqlChart.tsx +134 -27
- package/corpus/templates/analytics/app/components/layout/CommandPalette.tsx +2 -9
- package/corpus/templates/analytics/app/components/layout/Layout.tsx +0 -17
- package/corpus/templates/analytics/app/components/layout/Sidebar.tsx +10 -5
- package/corpus/templates/analytics/app/hooks/use-dashboard-views.ts +22 -52
- package/corpus/templates/analytics/app/hooks/use-user-pref.ts +21 -31
- package/corpus/templates/analytics/app/i18n-data.ts +10 -0
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/PanelEditorDialog.tsx +2 -1
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/dual-axis.ts +73 -0
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/index.tsx +8 -27
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/report-panel-window.ts +0 -57
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/types.ts +8 -0
- package/corpus/templates/analytics/app/root.tsx +0 -28
- package/corpus/templates/analytics/changelog/2026-07-26-error-issues-now-group-by-message-as-well-as-stack-frame-and.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-26-line-area-and-bar-dashboard-panels-can-plot-series-on-a-seco.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-26-scheduled-dashboard-email-reports-now-arrive-complete-and-re.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-26-session-replays-now-detect-rage-clicks-so-the-rage-click-fil.md +6 -0
- package/corpus/templates/analytics/docs/error-capture.md +8 -4
- package/corpus/templates/analytics/package.json +1 -2
- package/corpus/templates/analytics/scripts/preview-dashboard-report.ts +221 -0
- package/corpus/templates/analytics/server/jobs/dashboard-report.ts +39 -32
- package/corpus/templates/analytics/server/lib/dashboard-report-render.ts +1168 -0
- package/corpus/templates/analytics/server/lib/dashboard-report.ts +111 -1358
- package/corpus/templates/analytics/server/lib/error-capture.ts +32 -15
- package/corpus/templates/analytics/server/lib/report-chart-svg.ts +901 -0
- package/corpus/templates/analytics/server/lib/session-replay.ts +77 -1
- package/corpus/templates/analytics/shared/dashboard-report-timeouts.ts +3 -4
- package/corpus/templates/assets/.agents/skills/a2a-assets/SKILL.md +28 -0
- package/corpus/templates/assets/.agents/skills/actions/SKILL.md +19 -1
- package/corpus/templates/assets/.agents/skills/assets-navigation/SKILL.md +46 -0
- package/corpus/templates/assets/.agents/skills/creative-context/SKILL.md +12 -0
- package/corpus/templates/assets/.agents/skills/frontend-design/SKILL.md +20 -6
- package/corpus/templates/assets/.agents/skills/image-generation/SKILL.md +28 -0
- package/corpus/templates/assets/.agents/skills/library-management/SKILL.md +9 -0
- package/corpus/templates/assets/.agents/skills/logo-composite/SKILL.md +11 -0
- package/corpus/templates/assets/.agents/skills/security/SKILL.md +2 -0
- package/corpus/templates/assets/.agents/skills/self-modifying-code/SKILL.md +4 -3
- package/corpus/templates/assets/.agents/skills/shadcn-ui/SKILL.md +7 -3
- package/corpus/templates/assets/.agents/skills/sharing/SKILL.md +228 -0
- package/corpus/templates/assets/AGENTS.md +58 -125
- package/corpus/templates/assets/actions/variant-slots.ts +8 -4
- package/corpus/templates/assets/app/entry.client.tsx +3 -0
- package/corpus/templates/assets/package.json +0 -2
- package/corpus/templates/brain/.agents/skills/actions/SKILL.md +19 -1
- package/corpus/templates/brain/.agents/skills/adding-a-feature/SKILL.md +2 -0
- package/corpus/templates/brain/.agents/skills/brain/SKILL.md +78 -4
- package/corpus/templates/brain/.agents/skills/frontend-design/SKILL.md +20 -6
- package/corpus/templates/brain/.agents/skills/ingestion-and-connectors/SKILL.md +15 -3
- package/corpus/templates/brain/.agents/skills/security/SKILL.md +2 -0
- package/corpus/templates/brain/.agents/skills/self-modifying-code/SKILL.md +4 -3
- package/corpus/templates/brain/.agents/skills/shadcn-ui/SKILL.md +7 -3
- package/corpus/templates/brain/.agents/skills/sharing/SKILL.md +228 -0
- package/corpus/templates/brain/.agents/skills/storing-data/SKILL.md +178 -0
- package/corpus/templates/brain/AGENTS.md +73 -119
- package/corpus/templates/brain/app/entry.client.tsx +3 -0
- package/corpus/templates/calendar/.agents/skills/actions/SKILL.md +19 -1
- package/corpus/templates/calendar/.agents/skills/event-management/SKILL.md +56 -3
- package/corpus/templates/calendar/.agents/skills/frontend-design/SKILL.md +20 -6
- package/corpus/templates/calendar/.agents/skills/security/SKILL.md +2 -0
- package/corpus/templates/calendar/.agents/skills/self-modifying-code/SKILL.md +4 -3
- package/corpus/templates/calendar/.agents/skills/shadcn-ui/SKILL.md +7 -3
- package/corpus/templates/calendar/.agents/skills/sharing/SKILL.md +228 -0
- package/corpus/templates/calendar/AGENTS.md +22 -45
- package/corpus/templates/calendar/app/entry.client.tsx +3 -0
- package/corpus/templates/calendar/server/handlers/events.ts +0 -364
- package/corpus/templates/chat/.agents/skills/actions/SKILL.md +19 -1
- package/corpus/templates/chat/.agents/skills/adding-a-feature/SKILL.md +2 -0
- package/corpus/templates/chat/.agents/skills/frontend-design/SKILL.md +20 -6
- package/corpus/templates/chat/.agents/skills/security/SKILL.md +2 -0
- package/corpus/templates/chat/.agents/skills/self-modifying-code/SKILL.md +4 -3
- package/corpus/templates/chat/.agents/skills/shadcn-ui/SKILL.md +7 -3
- package/corpus/templates/chat/.agents/skills/sharing/SKILL.md +228 -0
- package/corpus/templates/chat/.agents/skills/storing-data/SKILL.md +178 -0
- package/corpus/templates/chat/AGENTS.md +8 -0
- package/corpus/templates/chat/app/entry.client.tsx +3 -0
- package/corpus/templates/clips/.agents/skills/actions/SKILL.md +19 -1
- package/corpus/templates/clips/.agents/skills/ai-video-tools/SKILL.md +42 -0
- package/corpus/templates/clips/.agents/skills/brain-export/SKILL.md +59 -0
- package/corpus/templates/clips/.agents/skills/bug-reports/SKILL.md +37 -0
- package/corpus/templates/clips/.agents/skills/crm-call-evidence/SKILL.md +41 -0
- package/corpus/templates/clips/.agents/skills/dictate/SKILL.md +4 -0
- package/corpus/templates/clips/.agents/skills/external-integrations/SKILL.md +45 -0
- package/corpus/templates/clips/.agents/skills/frontend-design/SKILL.md +20 -6
- package/corpus/templates/clips/.agents/skills/meetings/SKILL.md +9 -0
- package/corpus/templates/clips/.agents/skills/recording/SKILL.md +45 -0
- package/corpus/templates/clips/.agents/skills/screen-memory/SKILL.md +43 -0
- package/corpus/templates/clips/.agents/skills/security/SKILL.md +2 -0
- package/corpus/templates/clips/.agents/skills/self-modifying-code/SKILL.md +4 -3
- package/corpus/templates/clips/.agents/skills/shadcn-ui/SKILL.md +7 -3
- package/corpus/templates/clips/.agents/skills/video-sharing/SKILL.md +38 -1
- package/corpus/templates/clips/AGENTS.md +82 -224
- package/corpus/templates/clips/actions/create-recording.ts +4 -0
- package/corpus/templates/clips/app/components/player/sign-in-prompt-dialog.tsx +6 -10
- package/corpus/templates/clips/app/routes/invite.$token.tsx +6 -5
- package/corpus/templates/clips/app/routes/r.$recordingId.tsx +4 -5
- package/corpus/templates/clips/app/routes/share.$shareId.tsx +8 -8
- package/corpus/templates/clips/changelog/2026-07-26-long-agent-chat-turns-now-finish-instead-of-stopping-partway.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-26-recordings-no-longer-get-stuck-on-uploading-uploads-now-hold.md +6 -0
- package/corpus/templates/clips/server/db/schema.ts +3 -0
- package/corpus/templates/clips/server/jobs/brain-export.ts +4 -0
- package/corpus/templates/clips/server/lib/recording-upload-state.ts +0 -52
- package/corpus/templates/clips/server/lib/upload-lease.ts +241 -0
- package/corpus/templates/clips/server/plugins/agent-chat.ts +4 -0
- package/corpus/templates/clips/server/plugins/db.ts +18 -347
- package/corpus/templates/clips/server/routes/api/clips/brain-export/run.post.ts +7 -1
- package/corpus/templates/clips/server/routes/api/uploads/[recordingId]/chunk.post.ts +123 -126
- package/corpus/templates/clips/server/routes/api/uploads/[recordingId]/reset-chunks.post.ts +4 -0
- package/corpus/templates/clips/server/routes/api/uploads/[recordingId]/resume.get.ts +118 -0
- package/corpus/templates/clips/server/routes/api/uploads/reap.post.ts +69 -0
- package/corpus/templates/content/.agents/skills/actions/SKILL.md +19 -1
- package/corpus/templates/content/.agents/skills/content/SKILL.md +4 -0
- package/corpus/templates/content/.agents/skills/creative-context/SKILL.md +8 -0
- package/corpus/templates/content/.agents/skills/document-editing/SKILL.md +55 -0
- package/corpus/templates/content/.agents/skills/frontend-design/SKILL.md +20 -6
- package/corpus/templates/content/.agents/skills/notion-integration/SKILL.md +12 -1
- package/corpus/templates/content/.agents/skills/security/SKILL.md +2 -0
- package/corpus/templates/content/.agents/skills/self-modifying-code/SKILL.md +4 -3
- package/corpus/templates/content/.agents/skills/shadcn-ui/SKILL.md +7 -3
- package/corpus/templates/content/.agents/skills/sharing/SKILL.md +228 -0
- package/corpus/templates/content/AGENTS.md +63 -131
- package/corpus/templates/content/app/routes/_app.tsx +4 -4
- package/corpus/templates/content/server/routes/api/notion/callback.get.ts +6 -24
- package/corpus/templates/design/.agents/skills/actions/SKILL.md +19 -1
- package/corpus/templates/design/.agents/skills/design-generation/SKILL.md +16 -0
- package/corpus/templates/design/.agents/skills/design-systems/SKILL.md +15 -0
- package/corpus/templates/design/.agents/skills/frontend-design/SKILL.md +20 -6
- package/corpus/templates/design/.agents/skills/full-app-build/SKILL.md +12 -0
- package/corpus/templates/design/.agents/skills/security/SKILL.md +2 -0
- package/corpus/templates/design/.agents/skills/self-modifying-code/SKILL.md +4 -3
- package/corpus/templates/design/.agents/skills/shadcn-ui/SKILL.md +7 -3
- package/corpus/templates/design/.agents/skills/sharing/SKILL.md +228 -0
- package/corpus/templates/design/.agents/skills/storing-data/SKILL.md +178 -0
- package/corpus/templates/design/.agents/skills/visual-edit/SKILL.md +201 -102
- package/corpus/templates/design/AGENTS.md +58 -71
- package/corpus/templates/design/actions/open-visual-edit.ts +111 -2
- package/corpus/templates/design/app/components/design/AddLocalhostScreenDialog.tsx +236 -0
- package/corpus/templates/design/app/components/design/DesignCanvas.tsx +1 -1
- package/corpus/templates/design/app/components/design/MultiScreenCanvas.tsx +2 -2
- package/corpus/templates/design/app/entry.client.tsx +3 -0
- package/corpus/templates/design/app/i18n-data.ts +180 -0
- package/corpus/templates/design/app/pages/Present.tsx +6 -9
- package/corpus/templates/design/app/pages/VisualEdit.tsx +4 -7
- package/corpus/templates/design/app/pages/design-editor/design-data-geometry-utils.ts +20 -0
- package/corpus/templates/dispatch/.agents/skills/actions/SKILL.md +19 -1
- package/corpus/templates/dispatch/.agents/skills/frontend-design/SKILL.md +20 -6
- package/corpus/templates/dispatch/.agents/skills/security/SKILL.md +2 -0
- package/corpus/templates/dispatch/.agents/skills/self-modifying-code/SKILL.md +4 -3
- package/corpus/templates/dispatch/.agents/skills/shadcn-ui/SKILL.md +7 -3
- package/corpus/templates/dispatch/.agents/skills/sharing/SKILL.md +228 -0
- package/corpus/templates/dispatch/.agents/skills/storing-data/SKILL.md +178 -0
- package/corpus/templates/dispatch/app/entry.client.tsx +3 -0
- package/corpus/templates/dispatch/server/plugins/identity-sso.ts +27 -16
- package/corpus/templates/forms/.agents/skills/actions/SKILL.md +19 -1
- package/corpus/templates/forms/.agents/skills/frontend-design/SKILL.md +20 -6
- package/corpus/templates/forms/.agents/skills/security/SKILL.md +2 -0
- package/corpus/templates/forms/.agents/skills/self-modifying-code/SKILL.md +4 -3
- package/corpus/templates/forms/.agents/skills/shadcn-ui/SKILL.md +7 -3
- package/corpus/templates/forms/.agents/skills/sharing/SKILL.md +228 -0
- package/corpus/templates/forms/DEVELOPING.md +1 -1
- package/corpus/templates/forms/app/entry.client.tsx +3 -0
- package/corpus/templates/forms/app/pages/FormsListPage.tsx +3 -5
- package/corpus/templates/forms/app/routes/_app.tsx +4 -4
- package/corpus/templates/macros/.agents/skills/frontend-design/SKILL.md +20 -6
- package/corpus/templates/macros/.agents/skills/security/SKILL.md +2 -0
- package/corpus/templates/macros/.agents/skills/shadcn-ui/SKILL.md +7 -3
- package/corpus/templates/macros/.agents/skills/sharing/SKILL.md +228 -0
- package/corpus/templates/macros/.agents/skills/storing-data/SKILL.md +178 -0
- package/corpus/templates/macros/app/entry.client.tsx +3 -0
- package/corpus/templates/mail/.agents/skills/actions/SKILL.md +19 -1
- package/corpus/templates/mail/.agents/skills/contacts-and-crm/SKILL.md +10 -0
- package/corpus/templates/mail/.agents/skills/draft-queue/SKILL.md +3 -0
- package/corpus/templates/mail/.agents/skills/email-drafts/SKILL.md +26 -2
- package/corpus/templates/mail/.agents/skills/frontend-design/SKILL.md +20 -6
- package/corpus/templates/mail/.agents/skills/inbox-automations/SKILL.md +37 -0
- package/corpus/templates/mail/.agents/skills/inbox-reads-and-triage/SKILL.md +58 -0
- package/corpus/templates/mail/.agents/skills/mail-backends/SKILL.md +33 -0
- package/corpus/templates/mail/.agents/skills/provider-api-scans/SKILL.md +39 -0
- package/corpus/templates/mail/.agents/skills/security/SKILL.md +2 -0
- package/corpus/templates/mail/.agents/skills/self-modifying-code/SKILL.md +4 -3
- package/corpus/templates/mail/.agents/skills/shadcn-ui/SKILL.md +7 -3
- package/corpus/templates/mail/.agents/skills/sharing/SKILL.md +228 -0
- package/corpus/templates/mail/AGENTS.md +74 -143
- package/corpus/templates/mail/actions/create-alias.ts +36 -0
- package/corpus/templates/mail/actions/create-automation.ts +28 -0
- package/corpus/templates/mail/actions/create-scheduled-job.ts +45 -0
- package/corpus/templates/mail/actions/delete-alias.ts +26 -0
- package/corpus/templates/mail/actions/delete-automation.ts +21 -0
- package/corpus/templates/mail/actions/get-automation-settings.ts +32 -0
- package/corpus/templates/mail/actions/get-mail-preferences.ts +18 -0
- package/corpus/templates/mail/actions/list-aliases.ts +17 -0
- package/corpus/templates/mail/actions/list-automations.ts +18 -0
- package/corpus/templates/mail/actions/list-scheduled-jobs.ts +18 -0
- package/corpus/templates/mail/actions/update-alias.ts +37 -0
- package/corpus/templates/mail/actions/update-automation-settings.ts +33 -0
- package/corpus/templates/mail/actions/update-automation.ts +33 -0
- package/corpus/templates/mail/actions/update-mail-preferences.ts +68 -0
- package/corpus/templates/mail/actions/update-scheduled-job.ts +25 -0
- package/corpus/templates/mail/app/entry.client.tsx +3 -0
- package/corpus/templates/mail/app/hooks/use-aliases.ts +6 -36
- package/corpus/templates/mail/app/hooks/use-automations.ts +9 -16
- package/corpus/templates/mail/app/hooks/use-emails.ts +6 -5
- package/corpus/templates/mail/app/hooks/use-scheduled-jobs.ts +12 -15
- package/corpus/templates/mail/app/pages/SettingsPage.tsx +15 -9
- package/corpus/templates/mail/server/handlers/automations.ts +5 -142
- package/corpus/templates/mail/server/handlers/emails.ts +1 -56
- package/corpus/templates/mail/server/handlers/scheduled-jobs.ts +0 -134
- package/corpus/templates/mail/server/lib/aliases.ts +18 -0
- package/corpus/templates/mail/server/lib/automations.ts +104 -0
- package/corpus/templates/mail/server/lib/jobs.ts +34 -0
- package/corpus/templates/mail/server/lib/mail-settings.ts +43 -0
- package/corpus/templates/mail/shared/automation-schema.ts +10 -0
- package/corpus/templates/plan/.agents/skills/actions/SKILL.md +19 -1
- package/corpus/templates/plan/.agents/skills/adding-a-feature/SKILL.md +2 -0
- package/corpus/templates/plan/.agents/skills/frontend-design/SKILL.md +20 -6
- package/corpus/templates/plan/.agents/skills/plan-authoring-flow/SKILL.md +98 -0
- package/corpus/templates/plan/.agents/skills/plan-browser-editing/SKILL.md +42 -0
- package/corpus/templates/plan/.agents/skills/plan-comments-and-feedback/SKILL.md +68 -0
- package/corpus/templates/plan/.agents/skills/plan-events/SKILL.md +22 -0
- package/corpus/templates/plan/.agents/skills/plan-hosted-writes/SKILL.md +42 -0
- package/corpus/templates/plan/.agents/skills/plan-local-codebase-chat/SKILL.md +38 -0
- package/corpus/templates/plan/.agents/skills/plan-review-recaps/SKILL.md +25 -0
- package/corpus/templates/plan/.agents/skills/plan-source-sync/SKILL.md +68 -0
- package/corpus/templates/plan/.agents/skills/plan-version-history/SKILL.md +25 -0
- package/corpus/templates/plan/.agents/skills/security/SKILL.md +2 -0
- package/corpus/templates/plan/.agents/skills/self-modifying-code/SKILL.md +4 -3
- package/corpus/templates/plan/.agents/skills/shadcn-ui/SKILL.md +7 -3
- package/corpus/templates/plan/.agents/skills/sharing/SKILL.md +228 -0
- package/corpus/templates/plan/.agents/skills/storing-data/SKILL.md +178 -0
- package/corpus/templates/plan/AGENTS.md +64 -296
- package/corpus/templates/plan/app/components/layout/Sidebar.tsx +9 -8
- package/corpus/templates/plan/app/pages/PlansPage.tsx +5 -10
- package/corpus/templates/slides/.agents/skills/actions/SKILL.md +19 -1
- package/corpus/templates/slides/.agents/skills/deck-management/SKILL.md +7 -7
- package/corpus/templates/slides/.agents/skills/frontend-design/SKILL.md +20 -6
- package/corpus/templates/slides/.agents/skills/security/SKILL.md +2 -0
- package/corpus/templates/slides/.agents/skills/self-modifying-code/SKILL.md +4 -3
- package/corpus/templates/slides/.agents/skills/shadcn-ui/SKILL.md +7 -3
- package/corpus/templates/slides/.agents/skills/sharing/SKILL.md +228 -0
- package/corpus/templates/slides/.agents/skills/slide-editing/SKILL.md +3 -2
- package/corpus/templates/slides/.agents/skills/storing-data/SKILL.md +178 -0
- package/corpus/templates/slides/DEVELOPING.md +3 -3
- package/corpus/templates/slides/actions/_deck-write.ts +52 -0
- package/corpus/templates/slides/actions/add-deck.ts +73 -0
- package/corpus/templates/slides/actions/delete-deck.ts +60 -0
- package/corpus/templates/slides/actions/get-deck.ts +3 -1
- package/corpus/templates/slides/actions/save-deck.ts +144 -0
- package/corpus/templates/slides/app/components/editor/SlideEditor.tsx +27 -20
- package/corpus/templates/slides/app/context/DeckContext.tsx +173 -100
- package/corpus/templates/slides/app/pages/Index.tsx +3 -6
- package/corpus/templates/slides/app/routes/slide.tsx +16 -12
- package/corpus/templates/slides/changelog/2026-07-26-a-newly-created-deck-now-appears-in-the-deck-list-right-away.md +6 -0
- package/corpus/templates/slides/server/handlers/decks.ts +2 -378
- package/corpus/templates/tasks/.agents/skills/action-reference/SKILL.md +47 -0
- package/corpus/templates/tasks/.agents/skills/actions/SKILL.md +19 -1
- package/corpus/templates/tasks/.agents/skills/adding-a-feature/SKILL.md +2 -0
- package/corpus/templates/tasks/.agents/skills/change-summary/SKILL.md +19 -1
- package/corpus/templates/tasks/.agents/skills/custom-fields/SKILL.md +63 -0
- package/corpus/templates/tasks/.agents/skills/frontend-design/SKILL.md +20 -6
- package/corpus/templates/tasks/.agents/skills/security/SKILL.md +2 -0
- package/corpus/templates/tasks/.agents/skills/self-modifying-code/SKILL.md +4 -3
- package/corpus/templates/tasks/.agents/skills/shadcn-ui/SKILL.md +7 -3
- package/corpus/templates/tasks/.agents/skills/sharing/SKILL.md +228 -0
- package/corpus/templates/tasks/.agents/skills/store-conventions/SKILL.md +45 -0
- package/corpus/templates/tasks/.agents/skills/storing-data/SKILL.md +178 -0
- package/corpus/templates/tasks/.agents/skills/task-inbox-workflow/SKILL.md +66 -0
- package/corpus/templates/tasks/AGENTS.md +48 -113
- package/corpus/templates/tasks/app/entry.client.tsx +3 -0
- package/corpus/toolkit/CHANGELOG.md +12 -0
- package/corpus/toolkit/package.json +1 -1
- package/corpus/toolkit/src/composer/PromptComposer.tsx +23 -20
- package/dist/a2a/client.d.ts +3 -1
- package/dist/a2a/client.d.ts.map +1 -1
- package/dist/a2a/client.js +4 -2
- package/dist/a2a/client.js.map +1 -1
- package/dist/agent/action-warnings.d.ts +27 -0
- package/dist/agent/action-warnings.d.ts.map +1 -0
- package/dist/agent/action-warnings.js +73 -0
- package/dist/agent/action-warnings.js.map +1 -0
- package/dist/agent/durable-background.d.ts +8 -0
- package/dist/agent/durable-background.d.ts.map +1 -1
- package/dist/agent/durable-background.js +37 -5
- package/dist/agent/durable-background.js.map +1 -1
- package/dist/agent/engine/ai-sdk-engine.d.ts.map +1 -1
- package/dist/agent/engine/ai-sdk-engine.js +47 -6
- package/dist/agent/engine/ai-sdk-engine.js.map +1 -1
- package/dist/agent/engine/anthropic-engine.d.ts.map +1 -1
- package/dist/agent/engine/anthropic-engine.js +41 -9
- package/dist/agent/engine/anthropic-engine.js.map +1 -1
- package/dist/agent/engine/builder-engine.d.ts.map +1 -1
- package/dist/agent/engine/builder-engine.js +46 -19
- package/dist/agent/engine/builder-engine.js.map +1 -1
- package/dist/agent/engine/continuation-dispatch-retry.d.ts.map +1 -1
- package/dist/agent/engine/continuation-dispatch-retry.js +11 -9
- package/dist/agent/engine/continuation-dispatch-retry.js.map +1 -1
- package/dist/agent/engine/credential-errors.d.ts +6 -0
- package/dist/agent/engine/credential-errors.d.ts.map +1 -1
- package/dist/agent/engine/credential-errors.js +10 -0
- package/dist/agent/engine/credential-errors.js.map +1 -1
- package/dist/agent/engine/error-detail.d.ts +2 -0
- package/dist/agent/engine/error-detail.d.ts.map +1 -0
- package/dist/agent/engine/error-detail.js +37 -0
- package/dist/agent/engine/error-detail.js.map +1 -0
- package/dist/agent/engine/prompt-cache.d.ts +34 -0
- package/dist/agent/engine/prompt-cache.d.ts.map +1 -0
- package/dist/agent/engine/prompt-cache.js +39 -0
- package/dist/agent/engine/prompt-cache.js.map +1 -0
- package/dist/agent/engine/registry.d.ts.map +1 -1
- package/dist/agent/engine/registry.js +23 -33
- package/dist/agent/engine/registry.js.map +1 -1
- package/dist/agent/engine/tool-call-journal-seed.d.ts +1 -1
- package/dist/agent/engine/tool-call-journal-seed.d.ts.map +1 -1
- package/dist/agent/engine/tool-call-journal-seed.js +2 -2
- package/dist/agent/engine/tool-call-journal-seed.js.map +1 -1
- package/dist/agent/engine/translate-anthropic.d.ts +28 -0
- package/dist/agent/engine/translate-anthropic.d.ts.map +1 -1
- package/dist/agent/engine/translate-anthropic.js +75 -0
- package/dist/agent/engine/translate-anthropic.js.map +1 -1
- package/dist/agent/loop-settings.d.ts +35 -2
- package/dist/agent/loop-settings.d.ts.map +1 -1
- package/dist/agent/loop-settings.js +71 -8
- package/dist/agent/loop-settings.js.map +1 -1
- package/dist/agent/production-agent.d.ts +105 -20
- package/dist/agent/production-agent.d.ts.map +1 -1
- package/dist/agent/production-agent.js +516 -123
- package/dist/agent/production-agent.js.map +1 -1
- package/dist/agent/run-loop-with-resume.d.ts.map +1 -1
- package/dist/agent/run-loop-with-resume.js +24 -2
- package/dist/agent/run-loop-with-resume.js.map +1 -1
- package/dist/agent/run-manager.d.ts +52 -9
- package/dist/agent/run-manager.d.ts.map +1 -1
- package/dist/agent/run-manager.js +191 -36
- package/dist/agent/run-manager.js.map +1 -1
- package/dist/agent/run-store.d.ts +87 -14
- package/dist/agent/run-store.d.ts.map +1 -1
- package/dist/agent/run-store.js +331 -59
- package/dist/agent/run-store.js.map +1 -1
- package/dist/agent/thread-data-builder.d.ts.map +1 -1
- package/dist/agent/thread-data-builder.js +6 -1
- package/dist/agent/thread-data-builder.js.map +1 -1
- package/dist/agent/types.d.ts +18 -6
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/agent/types.js +9 -5
- package/dist/agent/types.js.map +1 -1
- package/dist/application-state/script-helpers.d.ts.map +1 -1
- package/dist/application-state/script-helpers.js +2 -2
- package/dist/application-state/script-helpers.js.map +1 -1
- package/dist/cli/agents.d.ts +2 -0
- package/dist/cli/agents.d.ts.map +1 -1
- package/dist/cli/agents.js +48 -1
- package/dist/cli/agents.js.map +1 -1
- package/dist/cli/app-skill.js +1 -1
- package/dist/cli/app-skill.js.map +1 -1
- package/dist/cli/code-agent-executor.d.ts.map +1 -1
- package/dist/cli/code-agent-executor.js +3 -3
- package/dist/cli/code-agent-executor.js.map +1 -1
- package/dist/cli/design-connect.d.ts.map +1 -1
- package/dist/cli/design-connect.js +73 -8
- package/dist/cli/design-connect.js.map +1 -1
- package/dist/cli/skills-content/design-visual-edit-skill.d.ts +1 -1
- package/dist/cli/skills-content/design-visual-edit-skill.d.ts.map +1 -1
- package/dist/cli/skills-content/design-visual-edit-skill.js +169 -24
- package/dist/cli/skills-content/design-visual-edit-skill.js.map +1 -1
- package/dist/client/AssistantChat.d.ts.map +1 -1
- package/dist/client/AssistantChat.js +135 -125
- package/dist/client/AssistantChat.js.map +1 -1
- package/dist/client/agent-chat-adapter.d.ts +17 -0
- package/dist/client/agent-chat-adapter.d.ts.map +1 -1
- package/dist/client/agent-chat-adapter.js +141 -31
- package/dist/client/agent-chat-adapter.js.map +1 -1
- package/dist/client/chat/message-components.d.ts +9 -1
- package/dist/client/chat/message-components.d.ts.map +1 -1
- package/dist/client/chat/message-components.js +12 -1
- package/dist/client/chat/message-components.js.map +1 -1
- package/dist/client/embed-auth.d.ts.map +1 -1
- package/dist/client/embed-auth.js +3 -1
- package/dist/client/embed-auth.js.map +1 -1
- package/dist/client/integrations/IntegrationCard.d.ts.map +1 -1
- package/dist/client/integrations/IntegrationCard.js +9 -4
- package/dist/client/integrations/IntegrationCard.js.map +1 -1
- package/dist/client/integrations/IntegrationsPanel.d.ts.map +1 -1
- package/dist/client/integrations/IntegrationsPanel.js +13 -7
- package/dist/client/integrations/IntegrationsPanel.js.map +1 -1
- package/dist/client/integrations/webhook-url.d.ts +7 -0
- package/dist/client/integrations/webhook-url.d.ts.map +1 -0
- package/dist/client/integrations/webhook-url.js +32 -0
- package/dist/client/integrations/webhook-url.js.map +1 -0
- package/dist/client/org/OrgSwitcher.d.ts.map +1 -1
- package/dist/client/org/OrgSwitcher.js +13 -11
- package/dist/client/org/OrgSwitcher.js.map +1 -1
- package/dist/client/org/RequireActiveOrg.d.ts.map +1 -1
- package/dist/client/org/RequireActiveOrg.js +2 -2
- package/dist/client/org/RequireActiveOrg.js.map +1 -1
- package/dist/client/org/TeamPage.d.ts.map +1 -1
- package/dist/client/org/TeamPage.js +52 -13
- package/dist/client/org/TeamPage.js.map +1 -1
- package/dist/client/org/hooks.d.ts +9 -0
- package/dist/client/org/hooks.d.ts.map +1 -1
- package/dist/client/org/hooks.js +24 -0
- package/dist/client/org/hooks.js.map +1 -1
- package/dist/client/org/index.d.ts +1 -1
- package/dist/client/org/index.d.ts.map +1 -1
- package/dist/client/org/index.js +1 -1
- package/dist/client/org/index.js.map +1 -1
- package/dist/client/require-session.d.ts +12 -17
- package/dist/client/require-session.d.ts.map +1 -1
- package/dist/client/require-session.js +36 -23
- package/dist/client/require-session.js.map +1 -1
- package/dist/client/session-replay.js +1 -1
- package/dist/client/session-replay.js.map +1 -1
- package/dist/client/settings/DemoModeSection.d.ts +0 -1
- package/dist/client/settings/DemoModeSection.d.ts.map +1 -1
- package/dist/client/settings/DemoModeSection.js +0 -4
- package/dist/client/settings/DemoModeSection.js.map +1 -1
- package/dist/client/settings/SecretsSection.d.ts.map +1 -1
- package/dist/client/settings/SecretsSection.js +12 -8
- package/dist/client/settings/SecretsSection.js.map +1 -1
- package/dist/client/settings/VoiceTranscriptionSection.d.ts +0 -1
- package/dist/client/settings/VoiceTranscriptionSection.d.ts.map +1 -1
- package/dist/client/settings/VoiceTranscriptionSection.js +1 -4
- package/dist/client/settings/VoiceTranscriptionSection.js.map +1 -1
- package/dist/client/sse-event-processor.d.ts +33 -1
- package/dist/client/sse-event-processor.d.ts.map +1 -1
- package/dist/client/sse-event-processor.js +83 -8
- package/dist/client/sse-event-processor.js.map +1 -1
- package/dist/client/use-action.d.ts.map +1 -1
- package/dist/client/use-action.js +23 -14
- package/dist/client/use-action.js.map +1 -1
- package/dist/client/use-agent-engine-configured.d.ts +9 -3
- package/dist/client/use-agent-engine-configured.d.ts.map +1 -1
- package/dist/client/use-agent-engine-configured.js +30 -3
- package/dist/client/use-agent-engine-configured.js.map +1 -1
- package/dist/client/use-db-sync.d.ts +3 -0
- package/dist/client/use-db-sync.d.ts.map +1 -1
- package/dist/client/use-db-sync.js +18 -1
- package/dist/client/use-db-sync.js.map +1 -1
- package/dist/collab/awareness.d.ts +2 -2
- package/dist/collab/awareness.d.ts.map +1 -1
- package/dist/collab/routes.d.ts +1 -1
- package/dist/credentials/index.d.ts +29 -1
- package/dist/credentials/index.d.ts.map +1 -1
- package/dist/credentials/index.js +111 -2
- package/dist/credentials/index.js.map +1 -1
- package/dist/deploy/build.d.ts +14 -3
- package/dist/deploy/build.d.ts.map +1 -1
- package/dist/deploy/build.js +81 -24
- package/dist/deploy/build.js.map +1 -1
- package/dist/deploy/workspace-deploy.d.ts +15 -0
- package/dist/deploy/workspace-deploy.d.ts.map +1 -1
- package/dist/deploy/workspace-deploy.js +19 -18
- package/dist/deploy/workspace-deploy.js.map +1 -1
- package/dist/file-upload/actions/upload-image.d.ts +2 -2
- package/dist/guards/no-localhost-fallback.d.ts +7 -0
- package/dist/guards/no-localhost-fallback.d.ts.map +1 -1
- package/dist/guards/no-localhost-fallback.js +75 -16
- package/dist/guards/no-localhost-fallback.js.map +1 -1
- package/dist/integrations/google-docs-poller.d.ts.map +1 -1
- package/dist/integrations/google-docs-poller.js +8 -3
- package/dist/integrations/google-docs-poller.js.map +1 -1
- package/dist/integrations/webhook-handler.d.ts.map +1 -1
- package/dist/integrations/webhook-handler.js +22 -4
- package/dist/integrations/webhook-handler.js.map +1 -1
- package/dist/jobs/scheduler.d.ts +17 -0
- package/dist/jobs/scheduler.d.ts.map +1 -1
- package/dist/jobs/scheduler.js +60 -33
- package/dist/jobs/scheduler.js.map +1 -1
- package/dist/localization/default-messages.d.ts +17 -1
- package/dist/localization/default-messages.d.ts.map +1 -1
- package/dist/localization/default-messages.js +17 -1
- package/dist/localization/default-messages.js.map +1 -1
- package/dist/notifications/routes.d.ts +1 -1
- package/dist/observability/evals.d.ts.map +1 -1
- package/dist/observability/evals.js +7 -10
- package/dist/observability/evals.js.map +1 -1
- package/dist/observability/routes.d.ts +1 -1
- package/dist/observability/traces.d.ts +2 -0
- package/dist/observability/traces.d.ts.map +1 -1
- package/dist/observability/traces.js.map +1 -1
- package/dist/org/accept-pending.js +2 -2
- package/dist/org/accept-pending.js.map +1 -1
- package/dist/org/active-org.d.ts +16 -0
- package/dist/org/active-org.d.ts.map +1 -0
- package/dist/org/active-org.js +57 -0
- package/dist/org/active-org.js.map +1 -0
- package/dist/org/auto-join-domain.d.ts.map +1 -1
- package/dist/org/auto-join-domain.js +3 -2
- package/dist/org/auto-join-domain.js.map +1 -1
- package/dist/org/context.d.ts +19 -1
- package/dist/org/context.d.ts.map +1 -1
- package/dist/org/context.js +159 -71
- package/dist/org/context.js.map +1 -1
- package/dist/org/handlers.d.ts +24 -1
- package/dist/org/handlers.d.ts.map +1 -1
- package/dist/org/handlers.js +129 -10
- package/dist/org/handlers.js.map +1 -1
- package/dist/org/plugin.d.ts +2 -0
- package/dist/org/plugin.d.ts.map +1 -1
- package/dist/org/plugin.js +9 -2
- package/dist/org/plugin.js.map +1 -1
- package/dist/org/types.d.ts +6 -1
- package/dist/org/types.d.ts.map +1 -1
- package/dist/org/types.js.map +1 -1
- package/dist/progress/routes.d.ts +1 -1
- package/dist/provider-api/actions/custom-provider-registration.d.ts +9 -9
- package/dist/provider-api/actions/provider-api.d.ts +11 -11
- package/dist/provider-api/index.d.ts.map +1 -1
- package/dist/provider-api/index.js +3 -2
- package/dist/provider-api/index.js.map +1 -1
- package/dist/resources/handlers.d.ts.map +1 -1
- package/dist/resources/handlers.js +2 -7
- package/dist/resources/handlers.js.map +1 -1
- package/dist/resources/script-helpers.d.ts.map +1 -1
- package/dist/resources/script-helpers.js +2 -2
- package/dist/resources/script-helpers.js.map +1 -1
- package/dist/scripts/chat/search-chats.d.ts.map +1 -1
- package/dist/scripts/chat/search-chats.js +2 -2
- package/dist/scripts/chat/search-chats.js.map +1 -1
- package/dist/scripts/describe-workspace-apps.d.ts +4 -0
- package/dist/scripts/describe-workspace-apps.d.ts.map +1 -0
- package/dist/scripts/describe-workspace-apps.js +34 -0
- package/dist/scripts/describe-workspace-apps.js.map +1 -0
- package/dist/scripts/resources/delete-memory.d.ts.map +1 -1
- package/dist/scripts/resources/delete-memory.js +2 -2
- package/dist/scripts/resources/delete-memory.js.map +1 -1
- package/dist/scripts/resources/delete.d.ts.map +1 -1
- package/dist/scripts/resources/delete.js +2 -2
- package/dist/scripts/resources/delete.js.map +1 -1
- package/dist/scripts/resources/effective.d.ts.map +1 -1
- package/dist/scripts/resources/effective.js +2 -2
- package/dist/scripts/resources/effective.js.map +1 -1
- package/dist/scripts/resources/list.d.ts.map +1 -1
- package/dist/scripts/resources/list.js +2 -2
- package/dist/scripts/resources/list.js.map +1 -1
- package/dist/scripts/resources/read.d.ts.map +1 -1
- package/dist/scripts/resources/read.js +2 -2
- package/dist/scripts/resources/read.js.map +1 -1
- package/dist/scripts/resources/save-memory.d.ts.map +1 -1
- package/dist/scripts/resources/save-memory.js +2 -2
- package/dist/scripts/resources/save-memory.js.map +1 -1
- package/dist/scripts/resources/write.d.ts.map +1 -1
- package/dist/scripts/resources/write.js +2 -2
- package/dist/scripts/resources/write.js.map +1 -1
- package/dist/secrets/routes.d.ts +9 -9
- package/dist/server/agent-capabilities.d.ts +21 -0
- package/dist/server/agent-capabilities.d.ts.map +1 -0
- package/dist/server/agent-capabilities.js +106 -0
- package/dist/server/agent-capabilities.js.map +1 -0
- package/dist/server/agent-chat/framework-prompts.d.ts.map +1 -1
- package/dist/server/agent-chat/framework-prompts.js +11 -13
- package/dist/server/agent-chat/framework-prompts.js.map +1 -1
- package/dist/server/agent-chat/prompt-resources.d.ts +32 -0
- package/dist/server/agent-chat/prompt-resources.d.ts.map +1 -1
- package/dist/server/agent-chat/prompt-resources.js +117 -56
- package/dist/server/agent-chat/prompt-resources.js.map +1 -1
- package/dist/server/agent-chat/script-entries.d.ts.map +1 -1
- package/dist/server/agent-chat/script-entries.js +18 -8
- package/dist/server/agent-chat/script-entries.js.map +1 -1
- package/dist/server/agent-chat-plugin.d.ts.map +1 -1
- package/dist/server/agent-chat-plugin.js +27 -1
- package/dist/server/agent-chat-plugin.js.map +1 -1
- package/dist/server/agent-engine-api-key-route.d.ts +1 -1
- package/dist/server/auth.d.ts +9 -9
- package/dist/server/auth.d.ts.map +1 -1
- package/dist/server/auth.js +32 -33
- package/dist/server/auth.js.map +1 -1
- package/dist/server/core-routes-plugin.d.ts +45 -0
- package/dist/server/core-routes-plugin.d.ts.map +1 -1
- package/dist/server/core-routes-plugin.js +162 -139
- package/dist/server/core-routes-plugin.js.map +1 -1
- package/dist/server/credential-provider.d.ts +35 -2
- package/dist/server/credential-provider.d.ts.map +1 -1
- package/dist/server/credential-provider.js +155 -40
- package/dist/server/credential-provider.js.map +1 -1
- package/dist/server/embed-session.d.ts.map +1 -1
- package/dist/server/embed-session.js +10 -0
- package/dist/server/embed-session.js.map +1 -1
- package/dist/server/framework-request-handler.d.ts.map +1 -1
- package/dist/server/framework-request-handler.js +38 -0
- package/dist/server/framework-request-handler.js.map +1 -1
- package/dist/server/google-auth-plugin.d.ts.map +1 -1
- package/dist/server/google-auth-plugin.js +12 -444
- package/dist/server/google-auth-plugin.js.map +1 -1
- package/dist/server/index.d.ts +2 -2
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +2 -2
- package/dist/server/index.js.map +1 -1
- package/dist/server/onboarding-html.d.ts.map +1 -1
- package/dist/server/onboarding-html.js +20 -56
- package/dist/server/onboarding-html.js.map +1 -1
- package/dist/server/open-route.d.ts.map +1 -1
- package/dist/server/open-route.js +6 -1
- package/dist/server/open-route.js.map +1 -1
- package/dist/server/poll.js +1 -1
- package/dist/server/poll.js.map +1 -1
- package/dist/server/prompts/framework-core-compact.d.ts.map +1 -1
- package/dist/server/prompts/framework-core-compact.js +5 -6
- package/dist/server/prompts/framework-core-compact.js.map +1 -1
- package/dist/server/prompts/framework-core.d.ts.map +1 -1
- package/dist/server/prompts/framework-core.js +7 -10
- package/dist/server/prompts/framework-core.js.map +1 -1
- package/dist/server/prompts/shared-rules.d.ts +20 -2
- package/dist/server/prompts/shared-rules.d.ts.map +1 -1
- package/dist/server/prompts/shared-rules.js +20 -10
- package/dist/server/prompts/shared-rules.js.map +1 -1
- package/dist/server/request-context.d.ts +26 -1
- package/dist/server/request-context.d.ts.map +1 -1
- package/dist/server/request-context.js +52 -2
- package/dist/server/request-context.js.map +1 -1
- package/dist/server/scoped-key-storage.js +1 -1
- package/dist/server/scoped-key-storage.js.map +1 -1
- package/dist/settings/org-settings.d.ts +2 -0
- package/dist/settings/org-settings.d.ts.map +1 -1
- package/dist/settings/org-settings.js +5 -1
- package/dist/settings/org-settings.js.map +1 -1
- package/dist/settings/store.d.ts +6 -0
- package/dist/settings/store.d.ts.map +1 -1
- package/dist/settings/store.js +25 -0
- package/dist/settings/store.js.map +1 -1
- package/dist/shared/index.d.ts +1 -0
- package/dist/shared/index.d.ts.map +1 -1
- package/dist/shared/index.js +1 -0
- package/dist/shared/index.js.map +1 -1
- package/dist/shared/sign-in-journey.d.ts +102 -0
- package/dist/shared/sign-in-journey.d.ts.map +1 -0
- package/dist/shared/sign-in-journey.js +269 -0
- package/dist/shared/sign-in-journey.js.map +1 -0
- package/dist/styles/agent-native.css +8 -0
- package/dist/templates/chat/.agents/skills/actions/SKILL.md +19 -1
- package/dist/templates/chat/.agents/skills/adding-a-feature/SKILL.md +2 -0
- package/dist/templates/chat/.agents/skills/frontend-design/SKILL.md +20 -6
- package/dist/templates/chat/.agents/skills/security/SKILL.md +2 -0
- package/dist/templates/chat/.agents/skills/self-modifying-code/SKILL.md +4 -3
- package/dist/templates/chat/.agents/skills/shadcn-ui/SKILL.md +7 -3
- package/dist/templates/chat/.agents/skills/sharing/SKILL.md +228 -0
- package/dist/templates/chat/.agents/skills/storing-data/SKILL.md +178 -0
- package/dist/templates/chat/AGENTS.md +8 -0
- package/dist/templates/chat/app/entry.client.tsx +3 -0
- package/dist/templates/default/.agents/skills/actions/SKILL.md +19 -1
- package/dist/templates/default/.agents/skills/adding-a-feature/SKILL.md +2 -0
- package/dist/templates/default/.agents/skills/frontend-design/SKILL.md +20 -6
- package/dist/templates/default/.agents/skills/security/SKILL.md +2 -0
- package/dist/templates/default/.agents/skills/self-modifying-code/SKILL.md +4 -3
- package/dist/templates/default/.agents/skills/shadcn-ui/SKILL.md +7 -3
- package/dist/templates/default/AGENTS.md +68 -195
- package/dist/templates/default/app/entry.client.tsx +3 -0
- package/dist/templates/default/app/i18n/ar-SA.ts +8 -0
- package/dist/templates/default/app/i18n/de-DE.ts +8 -0
- package/dist/templates/default/app/i18n/en-US.ts +8 -0
- package/dist/templates/default/app/i18n/es-ES.ts +8 -0
- package/dist/templates/default/app/i18n/fr-FR.ts +8 -0
- package/dist/templates/default/app/i18n/hi-IN.ts +8 -0
- package/dist/templates/default/app/i18n/ja-JP.ts +8 -0
- package/dist/templates/default/app/i18n/ko-KR.ts +8 -0
- package/dist/templates/default/app/i18n/pt-BR.ts +8 -0
- package/dist/templates/default/app/i18n/zh-CN.ts +8 -0
- package/dist/templates/default/app/i18n/zh-TW.ts +8 -0
- package/dist/templates/headless/.agents/skills/actions/SKILL.md +19 -1
- package/dist/templates/workspace-core/.agents/skills/actions/SKILL.md +19 -1
- package/dist/templates/workspace-core/.agents/skills/adding-a-feature/SKILL.md +2 -0
- package/dist/templates/workspace-core/.agents/skills/adding-workspace-apps/SKILL.md +100 -0
- package/dist/templates/workspace-core/.agents/skills/address-feedback/SKILL.md +2 -1
- package/dist/templates/workspace-core/.agents/skills/authentication/SKILL.md +28 -0
- package/dist/templates/workspace-core/.agents/skills/composable-mini-apps/SKILL.md +14 -1
- package/dist/templates/workspace-core/.agents/skills/frontend-design/SKILL.md +20 -6
- package/dist/templates/workspace-core/.agents/skills/qa/SKILL.md +6 -3
- package/dist/templates/workspace-core/.agents/skills/security/SKILL.md +2 -0
- package/dist/templates/workspace-core/.agents/skills/self-modifying-code/SKILL.md +4 -3
- package/dist/templates/workspace-core/.agents/skills/shadcn-ui/SKILL.md +7 -3
- package/dist/templates/workspace-core/.agents/skills/workspace-conventions/SKILL.md +91 -0
- package/dist/templates/workspace-core/.agents/skills/writing-agent-instructions/SKILL.md +60 -0
- package/dist/templates/workspace-core/AGENTS.md +62 -124
- package/dist/templates/workspace-root/AGENTS.md +6 -1
- package/dist/triggers/dispatcher.d.ts.map +1 -1
- package/dist/triggers/dispatcher.js +10 -3
- package/dist/triggers/dispatcher.js.map +1 -1
- package/dist/vite/client.d.ts.map +1 -1
- package/dist/vite/client.js +18 -8
- package/dist/vite/client.js.map +1 -1
- package/docs/content/actions.mdx +33 -20
- package/docs/content/agent-mentions.mdx +30 -19
- package/docs/content/agent-native-toolkit.mdx +8 -6
- package/docs/content/agent-resources.mdx +11 -0
- package/docs/content/agent-surfaces.mdx +41 -30
- package/docs/content/audit-log.mdx +78 -0
- package/docs/content/authentication.mdx +7 -5
- package/docs/content/automations.mdx +15 -9
- package/docs/content/client.mdx +11 -11
- package/docs/content/cloneable-saas.mdx +7 -1
- package/docs/content/code-agents-ui.mdx +9 -1
- package/docs/content/components.mdx +7 -0
- package/docs/content/context-awareness.mdx +1 -0
- package/docs/content/creating-templates.mdx +9 -1
- package/docs/content/custom-design-system.mdx +8 -0
- package/docs/content/data-programs.mdx +6 -0
- package/docs/content/deployment.mdx +2 -0
- package/docs/content/doctor.mdx +5 -3
- package/docs/content/extensions.mdx +26 -0
- package/docs/content/external-agents-catalog.mdx +533 -0
- package/docs/content/external-agents.mdx +20 -514
- package/docs/content/faq.mdx +2 -2
- package/docs/content/file-uploads.mdx +44 -0
- package/docs/content/frames.mdx +2 -2
- package/docs/content/generative-ui.mdx +8 -0
- package/docs/content/getting-started.mdx +45 -17
- package/docs/content/human-approval.mdx +9 -0
- package/docs/content/integrations.mdx +4 -3
- package/docs/content/internationalization.mdx +4 -11
- package/docs/content/key-concepts.mdx +1 -1
- package/docs/content/local-file-mode.mdx +5 -0
- package/docs/content/mcp-apps.mdx +2 -1
- package/docs/content/mcp-clients.mdx +32 -1
- package/docs/content/mcp-protocol.mdx +4 -3
- package/docs/content/messaging-internals.mdx +328 -0
- package/docs/content/messaging-recipes.mdx +194 -0
- package/docs/content/messaging.mdx +9 -307
- package/docs/content/multi-app-workspace.mdx +1 -1
- package/docs/content/multi-tenancy.mdx +1 -0
- package/docs/content/native-chat-ui.mdx +8 -0
- package/docs/content/notifications.mdx +18 -20
- package/docs/content/observability.mdx +1 -0
- package/docs/content/onboarding.mdx +20 -6
- package/docs/content/organizations-teams-permissions.mdx +99 -124
- package/docs/content/package-lifecycle.mdx +19 -7
- package/docs/content/progress.mdx +11 -0
- package/docs/content/real-time-collaboration.mdx +44 -3
- package/docs/content/recurring-jobs.mdx +14 -1
- package/docs/content/security.mdx +5 -2
- package/docs/content/server.mdx +2 -1
- package/docs/content/sharing.mdx +22 -3
- package/docs/content/skills-guide.mdx +62 -19
- package/docs/content/syncing-template-changes.mdx +9 -0
- package/docs/content/template-analytics-connectors.mdx +75 -0
- package/docs/content/template-analytics-dashboards.mdx +106 -0
- package/docs/content/template-analytics-developers.mdx +287 -0
- package/docs/content/template-analytics-monitoring-and-sessions.mdx +109 -0
- package/docs/content/template-analytics.mdx +21 -263
- package/docs/content/template-assets-developers.mdx +456 -0
- package/docs/content/template-assets-generation.mdx +147 -0
- package/docs/content/template-assets-integrations.mdx +319 -0
- package/docs/content/template-assets-presets.mdx +185 -0
- package/docs/content/template-assets.mdx +12 -562
- package/docs/content/template-brain-agent.mdx +103 -0
- package/docs/content/template-brain-developers.mdx +379 -0
- package/docs/content/template-brain-knowledge.mdx +50 -0
- package/docs/content/template-brain-sources.mdx +163 -0
- package/docs/content/template-brain.mdx +30 -390
- package/docs/content/template-calendar-agent.mdx +133 -0
- package/docs/content/template-calendar-booking-links.mdx +73 -0
- package/docs/content/template-calendar-developers.mdx +366 -0
- package/docs/content/template-calendar-scheduling.mdx +128 -0
- package/docs/content/template-calendar.mdx +13 -260
- package/docs/content/template-chat-developers.mdx +88 -0
- package/docs/content/template-chat-first-edits.mdx +145 -0
- package/docs/content/template-chat.mdx +12 -77
- package/docs/content/template-clips-ai-and-editing.mdx +114 -0
- package/docs/content/template-clips-capture-everywhere.mdx +120 -0
- package/docs/content/template-clips-developers.mdx +373 -0
- package/docs/content/template-clips-sharing-and-teams.mdx +182 -0
- package/docs/content/template-clips.mdx +19 -508
- package/docs/content/template-content-databases.mdx +406 -0
- package/docs/content/template-content-developers.mdx +364 -0
- package/docs/content/template-content-editing.mdx +60 -0
- package/docs/content/template-content-sync.mdx +149 -0
- package/docs/content/template-content.mdx +21 -561
- package/docs/content/template-design-brand-and-figma.mdx +150 -0
- package/docs/content/template-design-collaboration-and-full-apps.mdx +125 -0
- package/docs/content/template-design-developers.mdx +358 -0
- package/docs/content/template-design-quality-and-components.mdx +95 -0
- package/docs/content/template-design.mdx +20 -344
- package/docs/content/template-dispatch-developers.mdx +121 -0
- package/docs/content/template-dispatch-messaging-routing.mdx +114 -0
- package/docs/content/template-dispatch-operations.mdx +160 -0
- package/docs/content/template-dispatch-vault-integrations.mdx +316 -0
- package/docs/content/template-dispatch.mdx +24 -283
- package/docs/content/template-forms-building-publishing.mdx +135 -0
- package/docs/content/template-forms-developers.mdx +195 -0
- package/docs/content/template-forms-responses.mdx +120 -0
- package/docs/content/template-forms.mdx +21 -230
- package/docs/content/template-mail-agent.mdx +114 -0
- package/docs/content/template-mail-developers.mdx +356 -0
- package/docs/content/template-mail-drafts-and-queue.mdx +103 -0
- package/docs/content/template-mail-inbox.mdx +118 -0
- package/docs/content/template-mail.mdx +23 -274
- package/docs/content/template-plan-automations.mdx +213 -0
- package/docs/content/template-plan-developers.mdx +703 -0
- package/docs/content/template-plan-local-and-desktop.mdx +236 -0
- package/docs/content/template-plan-review-workflow.mdx +180 -0
- package/docs/content/template-plan.mdx +60 -910
- package/docs/content/template-slides-agent.mdx +102 -0
- package/docs/content/template-slides-design-and-media.mdx +94 -0
- package/docs/content/template-slides-developers.mdx +488 -0
- package/docs/content/template-slides-editing.mdx +56 -0
- package/docs/content/template-slides.mdx +20 -362
- package/docs/content/toolkit-capability-packages.mdx +38 -13
- package/docs/content/toolkit-context-knowledge.mdx +49 -9
- package/docs/content/toolkit-editors-canvases.mdx +72 -10
- package/docs/content/toolkit-resources.mdx +16 -0
- package/docs/content/toolkit-settings.mdx +3 -3
- package/docs/content/toolkit-sharing.mdx +5 -7
- package/docs/content/using-your-agent.mdx +25 -2
- package/docs/content/voice-input.mdx +11 -7
- package/docs/content/what-is-agent-native.mdx +1 -0
- package/docs/content/workspace-connections.mdx +21 -11
- package/docs/content/workspace-management.mdx +1 -1
- package/package.json +2 -4
- package/src/a2a/client.ts +4 -2
- package/src/agent/action-warnings.ts +103 -0
- package/src/agent/durable-background.ts +42 -5
- package/src/agent/engine/ai-sdk-engine.ts +58 -6
- package/src/agent/engine/anthropic-engine.ts +51 -8
- package/src/agent/engine/builder-engine.ts +56 -18
- package/src/agent/engine/continuation-dispatch-retry.ts +10 -9
- package/src/agent/engine/credential-errors.ts +11 -0
- package/src/agent/engine/error-detail.ts +39 -0
- package/src/agent/engine/prompt-cache.ts +44 -0
- package/src/agent/engine/registry.ts +22 -30
- package/src/agent/engine/tool-call-journal-seed.ts +2 -1
- package/src/agent/engine/translate-anthropic.ts +99 -0
- package/src/agent/loop-settings.ts +94 -7
- package/src/agent/production-agent.ts +667 -157
- package/src/agent/run-loop-with-resume.ts +27 -1
- package/src/agent/run-manager.ts +229 -39
- package/src/agent/run-store.ts +397 -64
- package/src/agent/thread-data-builder.ts +5 -1
- package/src/agent/types.ts +23 -6
- package/src/application-state/script-helpers.ts +5 -2
- package/src/cli/agents.ts +69 -1
- package/src/cli/app-skill.ts +1 -1
- package/src/cli/code-agent-executor.ts +7 -3
- package/src/cli/design-connect.ts +82 -8
- package/src/cli/skills-content/design-visual-edit-skill.ts +169 -24
- package/src/client/AssistantChat.tsx +623 -607
- package/src/client/agent-chat-adapter.ts +176 -29
- package/src/client/chat/message-components.tsx +13 -0
- package/src/client/embed-auth.ts +3 -1
- package/src/client/integrations/IntegrationCard.tsx +41 -24
- package/src/client/integrations/IntegrationsPanel.tsx +37 -21
- package/src/client/integrations/webhook-url.ts +29 -0
- package/src/client/org/OrgSwitcher.tsx +41 -27
- package/src/client/org/RequireActiveOrg.tsx +7 -0
- package/src/client/org/TeamPage.tsx +144 -14
- package/src/client/org/hooks.ts +27 -0
- package/src/client/org/index.ts +2 -0
- package/src/client/require-session.tsx +40 -29
- package/src/client/session-replay.ts +1 -1
- package/src/client/settings/DemoModeSection.tsx +0 -5
- package/src/client/settings/SecretsSection.tsx +47 -42
- package/src/client/settings/VoiceTranscriptionSection.tsx +0 -5
- package/src/client/sse-event-processor.ts +83 -8
- package/src/client/use-action.ts +22 -13
- package/src/client/use-agent-engine-configured.ts +36 -4
- package/src/client/use-db-sync.ts +21 -1
- package/src/credentials/index.ts +124 -2
- package/src/deploy/build.ts +93 -30
- package/src/deploy/workspace-deploy.ts +21 -16
- package/src/guards/no-localhost-fallback.ts +76 -14
- package/src/integrations/google-docs-poller.ts +19 -12
- package/src/integrations/webhook-handler.ts +56 -33
- package/src/jobs/scheduler.ts +57 -23
- package/src/localization/default-messages.ts +23 -1
- package/src/observability/evals.ts +7 -8
- package/src/observability/traces.ts +2 -0
- package/src/org/accept-pending.ts +2 -2
- package/src/org/active-org.ts +73 -0
- package/src/org/auto-join-domain.ts +7 -2
- package/src/org/context.ts +169 -66
- package/src/org/handlers.ts +148 -10
- package/src/org/plugin.ts +8 -1
- package/src/org/types.ts +6 -1
- package/src/provider-api/index.ts +6 -1
- package/src/resources/handlers.ts +2 -6
- package/src/resources/script-helpers.ts +2 -1
- package/src/scripts/chat/search-chats.ts +5 -2
- package/src/scripts/describe-workspace-apps.ts +59 -0
- package/src/scripts/resources/delete-memory.ts +5 -2
- package/src/scripts/resources/delete.ts +5 -2
- package/src/scripts/resources/effective.ts +5 -2
- package/src/scripts/resources/list.ts +5 -2
- package/src/scripts/resources/read.ts +5 -2
- package/src/scripts/resources/save-memory.ts +5 -2
- package/src/scripts/resources/write.ts +5 -2
- package/src/server/__snapshots__/agent-chat-plugin.surface.spec.ts.snap +11 -31
- package/src/server/agent-capabilities.ts +147 -0
- package/src/server/agent-chat/framework-prompts.ts +11 -13
- package/src/server/agent-chat/prompt-resources.ts +183 -57
- package/src/server/agent-chat/script-entries.ts +20 -7
- package/src/server/agent-chat-plugin.ts +27 -0
- package/src/server/auth.ts +38 -32
- package/src/server/core-routes-plugin.ts +229 -179
- package/src/server/credential-provider.ts +196 -44
- package/src/server/embed-session.ts +10 -0
- package/src/server/framework-request-handler.ts +43 -0
- package/src/server/google-auth-plugin.ts +13 -450
- package/src/server/index.ts +4 -1
- package/src/server/onboarding-html.ts +20 -56
- package/src/server/open-route.ts +6 -1
- package/src/server/poll.ts +1 -1
- package/src/server/prompts/framework-core-compact.ts +5 -5
- package/src/server/prompts/framework-core.ts +7 -9
- package/src/server/prompts/shared-rules.ts +20 -9
- package/src/server/request-context.ts +58 -2
- package/src/server/scoped-key-storage.ts +1 -1
- package/src/settings/org-settings.ts +9 -0
- package/src/settings/store.ts +29 -0
- package/src/shared/index.ts +13 -0
- package/src/shared/sign-in-journey.ts +331 -0
- package/src/styles/agent-native.css +8 -0
- package/src/templates/chat/.agents/skills/actions/SKILL.md +19 -1
- package/src/templates/chat/.agents/skills/adding-a-feature/SKILL.md +2 -0
- package/src/templates/chat/.agents/skills/frontend-design/SKILL.md +20 -6
- package/src/templates/chat/.agents/skills/security/SKILL.md +2 -0
- package/src/templates/chat/.agents/skills/self-modifying-code/SKILL.md +4 -3
- package/src/templates/chat/.agents/skills/shadcn-ui/SKILL.md +7 -3
- package/src/templates/chat/.agents/skills/sharing/SKILL.md +228 -0
- package/src/templates/chat/.agents/skills/storing-data/SKILL.md +178 -0
- package/src/templates/chat/AGENTS.md +8 -0
- package/src/templates/chat/app/entry.client.tsx +3 -0
- package/src/templates/default/.agents/skills/actions/SKILL.md +19 -1
- package/src/templates/default/.agents/skills/adding-a-feature/SKILL.md +2 -0
- package/src/templates/default/.agents/skills/frontend-design/SKILL.md +20 -6
- package/src/templates/default/.agents/skills/security/SKILL.md +2 -0
- package/src/templates/default/.agents/skills/self-modifying-code/SKILL.md +4 -3
- package/src/templates/default/.agents/skills/shadcn-ui/SKILL.md +7 -3
- package/src/templates/default/AGENTS.md +68 -195
- package/src/templates/default/app/entry.client.tsx +3 -0
- package/src/templates/default/app/i18n/ar-SA.ts +8 -0
- package/src/templates/default/app/i18n/de-DE.ts +8 -0
- package/src/templates/default/app/i18n/en-US.ts +8 -0
- package/src/templates/default/app/i18n/es-ES.ts +8 -0
- package/src/templates/default/app/i18n/fr-FR.ts +8 -0
- package/src/templates/default/app/i18n/hi-IN.ts +8 -0
- package/src/templates/default/app/i18n/ja-JP.ts +8 -0
- package/src/templates/default/app/i18n/ko-KR.ts +8 -0
- package/src/templates/default/app/i18n/pt-BR.ts +8 -0
- package/src/templates/default/app/i18n/zh-CN.ts +8 -0
- package/src/templates/default/app/i18n/zh-TW.ts +8 -0
- package/src/templates/headless/.agents/skills/actions/SKILL.md +19 -1
- package/src/templates/workspace-core/.agents/skills/actions/SKILL.md +19 -1
- package/src/templates/workspace-core/.agents/skills/adding-a-feature/SKILL.md +2 -0
- package/src/templates/workspace-core/.agents/skills/adding-workspace-apps/SKILL.md +100 -0
- package/src/templates/workspace-core/.agents/skills/address-feedback/SKILL.md +2 -1
- package/src/templates/workspace-core/.agents/skills/authentication/SKILL.md +28 -0
- package/src/templates/workspace-core/.agents/skills/composable-mini-apps/SKILL.md +14 -1
- package/src/templates/workspace-core/.agents/skills/frontend-design/SKILL.md +20 -6
- package/src/templates/workspace-core/.agents/skills/qa/SKILL.md +6 -3
- package/src/templates/workspace-core/.agents/skills/security/SKILL.md +2 -0
- package/src/templates/workspace-core/.agents/skills/self-modifying-code/SKILL.md +4 -3
- package/src/templates/workspace-core/.agents/skills/shadcn-ui/SKILL.md +7 -3
- package/src/templates/workspace-core/.agents/skills/workspace-conventions/SKILL.md +91 -0
- package/src/templates/workspace-core/.agents/skills/writing-agent-instructions/SKILL.md +60 -0
- package/src/templates/workspace-core/AGENTS.md +62 -124
- package/src/templates/workspace-root/AGENTS.md +6 -1
- package/src/triggers/dispatcher.ts +28 -17
- package/src/vite/client.ts +20 -8
- package/corpus/core/src/client/components/MissingKeyCard.tsx +0 -61
- package/corpus/core/src/client/extensions/agent-native-extension-runtime.ts +0 -495
- package/corpus/core/src/client/settings/BackgroundAgentSection.tsx +0 -193
- package/corpus/core/src/client/settings/BrowserSection.tsx +0 -110
- package/corpus/templates/analytics/app/components/InlineMetric.tsx +0 -31
- package/corpus/templates/analytics/app/components/auth/LoginScreen.tsx +0 -4
- package/corpus/templates/analytics/app/components/dashboard/CumulativeNetChart.tsx +0 -128
- package/corpus/templates/analytics/app/components/dashboard/DataTable.tsx +0 -264
- package/corpus/templates/analytics/app/components/dashboard/RecentActivity.tsx +0 -84
- package/corpus/templates/analytics/app/components/dashboard/RevenueChart.tsx +0 -92
- package/corpus/templates/analytics/app/components/dashboard/RevenueComparisonChart.tsx +0 -154
- package/corpus/templates/analytics/app/components/dashboard/StatsCard.tsx +0 -49
- package/corpus/templates/analytics/app/components/dashboard/TimeSeriesChart.tsx +0 -120
- package/corpus/templates/analytics/server/handlers/dashboard-views.ts +0 -85
- package/corpus/templates/analytics/server/handlers/user-prefs.ts +0 -58
- package/corpus/templates/analytics/server/routes/api/dashboard-views/[dashboardId]/[viewId].delete.ts +0 -1
- package/corpus/templates/analytics/server/routes/api/dashboard-views/[dashboardId].get.ts +0 -1
- package/corpus/templates/analytics/server/routes/api/dashboard-views/[dashboardId].post.ts +0 -1
- package/corpus/templates/analytics/server/routes/api/theme.get.ts +0 -17
- package/corpus/templates/analytics/server/routes/api/theme.post.ts +0 -15
- package/corpus/templates/analytics/server/routes/api/user-prefs/[key].delete.ts +0 -1
- package/corpus/templates/analytics/server/routes/api/user-prefs/[key].get.ts +0 -1
- package/corpus/templates/analytics/server/routes/api/user-prefs/[key].put.ts +0 -1
- package/corpus/templates/assets/app/components/library/CreateLibraryDialog.tsx +0 -156
- package/corpus/templates/assets/app/components/library/LibraryCard.tsx +0 -213
- package/corpus/templates/calendar/app/components/calendar/GoogleSyncButton.tsx +0 -49
- package/corpus/templates/calendar/server/routes/api/events/[id].delete.ts +0 -1
- package/corpus/templates/calendar/server/routes/api/events/[id].get.ts +0 -1
- package/corpus/templates/calendar/server/routes/api/events/[id].put.ts +0 -1
- package/corpus/templates/content/app/components/layout/AppLayout.tsx +0 -9
- package/corpus/templates/content/server/routes/api/comments/[id].delete.ts +0 -69
- package/corpus/templates/content/server/routes/api/comments/[id].patch.ts +0 -109
- package/corpus/templates/content/server/routes/api/documents/[id]/versions.get.ts +0 -53
- package/corpus/templates/design/app/components/design/code-workbench/ActivityBar.tsx +0 -85
- package/corpus/templates/design/app/components/design-system/DesignSystemCard.tsx +0 -129
- package/corpus/templates/forms/app/components/layout/AppLayout.tsx +0 -9
- package/corpus/templates/mail/app/components/email/SnoozePopover.tsx +0 -213
- package/corpus/templates/mail/server/handlers/aliases.ts +0 -98
- package/corpus/templates/mail/server/routes/api/aliases/[id].delete.ts +0 -1
- package/corpus/templates/mail/server/routes/api/aliases/[id].patch.ts +0 -1
- package/corpus/templates/mail/server/routes/api/aliases/index.get.ts +0 -1
- package/corpus/templates/mail/server/routes/api/aliases/index.post.ts +0 -1
- package/corpus/templates/mail/server/routes/api/automations/[id].delete.ts +0 -1
- package/corpus/templates/mail/server/routes/api/automations/[id].patch.ts +0 -1
- package/corpus/templates/mail/server/routes/api/automations/index.get.ts +0 -1
- package/corpus/templates/mail/server/routes/api/automations/index.post.ts +0 -1
- package/corpus/templates/mail/server/routes/api/automations/settings.get.ts +0 -22
- package/corpus/templates/mail/server/routes/api/automations/settings.put.ts +0 -25
- package/corpus/templates/mail/server/routes/api/scheduled-jobs/[id].delete.ts +0 -1
- package/corpus/templates/mail/server/routes/api/scheduled-jobs/[id].patch.ts +0 -1
- package/corpus/templates/mail/server/routes/api/scheduled-jobs/index.get.ts +0 -1
- package/corpus/templates/mail/server/routes/api/scheduled-jobs/index.post.ts +0 -1
- package/corpus/templates/mail/server/routes/api/settings.get.ts +0 -1
- package/corpus/templates/mail/server/routes/api/settings.patch.ts +0 -1
- package/corpus/templates/slides/app/components/deck/BuilderLogo.tsx +0 -22
- package/corpus/templates/slides/app/components/design-system/DesignSystemPreview.tsx +0 -176
- package/corpus/templates/slides/app/components/editor/GenerateSlidesDialog.tsx +0 -244
- package/corpus/templates/slides/app/components/editor/ImportButton.tsx +0 -84
- package/corpus/templates/slides/server/routes/api/comments/[id].delete.ts +0 -43
- package/corpus/templates/slides/server/routes/api/comments/[id].patch.ts +0 -50
- package/corpus/templates/slides/server/routes/api/decks/[id].delete.ts +0 -1
- package/corpus/templates/slides/server/routes/api/decks/[id].get.ts +0 -1
- package/corpus/templates/slides/server/routes/api/decks/[id].put.ts +0 -1
- package/corpus/templates/slides/server/routes/api/decks/index.get.ts +0 -1
- package/corpus/templates/slides/server/routes/api/decks/index.post.ts +0 -1
- package/dist/client/components/MissingKeyCard.d.ts +0 -7
- package/dist/client/components/MissingKeyCard.d.ts.map +0 -1
- package/dist/client/components/MissingKeyCard.js +0 -32
- package/dist/client/components/MissingKeyCard.js.map +0 -1
- package/dist/client/extensions/agent-native-extension-runtime.d.ts +0 -69
- package/dist/client/extensions/agent-native-extension-runtime.d.ts.map +0 -1
- package/dist/client/extensions/agent-native-extension-runtime.js +0 -348
- package/dist/client/extensions/agent-native-extension-runtime.js.map +0 -1
- package/dist/client/settings/BackgroundAgentSection.d.ts +0 -2
- package/dist/client/settings/BackgroundAgentSection.d.ts.map +0 -1
- package/dist/client/settings/BackgroundAgentSection.js +0 -68
- package/dist/client/settings/BackgroundAgentSection.js.map +0 -1
- package/dist/client/settings/BrowserSection.d.ts +0 -2
- package/dist/client/settings/BrowserSection.d.ts.map +0 -1
- package/dist/client/settings/BrowserSection.js +0 -40
- package/dist/client/settings/BrowserSection.js.map +0 -1
- package/dist/templates/chat/.react-router/types/+server-build.d.ts +0 -18
- package/dist/templates/chat/.react-router/types/app/+types/root.ts +0 -68
- package/src/client/components/MissingKeyCard.tsx +0 -61
- package/src/client/extensions/agent-native-extension-runtime.ts +0 -495
- package/src/client/settings/BackgroundAgentSection.tsx +0 -193
- package/src/client/settings/BrowserSection.tsx +0 -110
- package/src/templates/chat/.react-router/types/+server-build.d.ts +0 -18
- package/src/templates/chat/.react-router/types/app/+types/root.ts +0 -68
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-skill.js","sourceRoot":"","sources":["../../src/cli/app-skill.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * `agent-native app-skill` packages an agent-native app as a distributable\n * skill bundle: instructions + MCP connector + embeddable app surfaces.\n *\n * The manifest intentionally contains no user secrets. Hosted installs write\n * URL-only MCP entries; clients that need auth complete OAuth/device setup in\n * the host. Local installs point at a developer-owned app process.\n */\n\nimport { spawn } from \"node:child_process\";\nimport { createHash } from \"node:crypto\";\nimport fs from \"node:fs\";\nimport os from \"node:os\";\nimport path from \"node:path\";\n\nimport {\n resolveClients,\n supportsRemoteMcpOAuth,\n writeConfigs,\n} from \"./connect.js\";\nimport {\n type ClientId,\n buildHttpMcpEntry,\n removeSameUrlDuplicatesForClient,\n} from \"./mcp-config-writers.js\";\n\nexport type SkillVisibility = \"internal\" | \"exported\" | \"both\";\nexport type AppSkillHostAdapter =\n | \"codex-plugin\"\n | \"claude-marketplace\"\n | \"vercel-skills\"\n | \"plain-skill\"\n | \"claude-skill\"\n | \"chatgpt-mcp\"\n | \"generic-mcp\";\n\nexport interface AppSkillManifestSkill {\n path: string;\n visibility: SkillVisibility;\n exportAs?: string;\n}\n\nexport interface AppSkillSurface {\n id: string;\n action?: string;\n path: string;\n mediaTypes?: string[];\n defaultMediaType?: string;\n}\n\nexport interface AppSkillManifest {\n schemaVersion: 1;\n id: string;\n displayName: string;\n description: string;\n /**\n * Optional semver base for generated plugin manifests. Codex keys its plugin\n * cache on the version string, so the packer appends a content hash to this\n * base; leave it unset to default to \"1.0.0\".\n */\n version?: string;\n hosted: {\n url: string;\n mcpUrl: string;\n };\n mcp: {\n serverName: string;\n aliases?: string[];\n };\n local?: {\n template?: string;\n sourcePath?: string;\n defaultUrl?: string;\n commands?: {\n install?: string;\n dev?: string;\n start?: string;\n };\n };\n auth?: {\n mode?: \"oauth\" | \"device\" | \"none\";\n setup?: string;\n };\n surfaces: AppSkillSurface[];\n skills: AppSkillManifestSkill[];\n hostAdapters: AppSkillHostAdapter[];\n}\n\nexport interface LoadedAppSkillManifest {\n manifest: AppSkillManifest;\n file: string;\n dir: string;\n}\n\nexport interface ParsedAppSkillArgs {\n command: \"ensure\" | \"launch\" | \"pack\" | \"help\";\n manifest?: string;\n client: string;\n scope: string;\n serverName?: string;\n out?: string;\n into?: string;\n mode: \"hosted\" | \"local\";\n dryRun: boolean;\n skipInstall: boolean;\n noRegister: boolean;\n printJson: boolean;\n yes: boolean;\n}\n\nexport interface EnsureAppSkillOptions {\n mode?: \"hosted\" | \"local\";\n clients?: ClientId[];\n scope?: string;\n serverName?: string;\n baseDir?: string;\n dryRun?: boolean;\n confirm?: boolean;\n yes?: boolean;\n log?: (message: string) => void;\n}\n\nexport interface EnsureAppSkillResult {\n mode: \"hosted\" | \"local\";\n serverName: string;\n mcpUrl: string;\n clients: ClientId[];\n written: { client: ClientId; file: string }[];\n}\n\nexport interface LaunchAppSkillOptions {\n mode?: \"hosted\" | \"local\";\n into?: string;\n dryRun?: boolean;\n skipInstall?: boolean;\n noRegister?: boolean;\n clients?: ClientId[];\n scope?: string;\n serverName?: string;\n baseDir?: string;\n confirm?: boolean;\n yes?: boolean;\n log?: (message: string) => void;\n}\n\nexport interface AppSkillLaunchPlan {\n mode: \"hosted\" | \"local\";\n appId: string;\n appDir?: string;\n sourceDir?: string;\n url: string;\n mcpUrl: string;\n serverName: string;\n commands: {\n install?: string;\n dev?: string;\n start?: string;\n };\n}\n\nconst HELP = `agent-native app-skill\n\nUsage:\n agent-native app-skill ensure [--manifest <file>] [--hosted|--local] [--client all|codex|claude-code|claude-code-cli|cowork] [--scope user|project] [--name <server>] [--yes] [--dry-run] [--json]\n agent-native app-skill launch [--manifest <file>] [--local|--hosted] [--into <path>] [--client <client>] [--scope user|project] [--name <server>] [--no-register] [--skip-install] [--yes] [--dry-run] [--json]\n agent-native app-skill pack [--manifest <file>] --out <dir> [--json]\n\nCommands:\n ensure Register the app skill MCP connector for your local agent clients.\n launch Open the hosted app, or materialize and start a local editable app.\n pack Create marketplace-ready skill, MCP, Codex/Claude plugin, and Vercel skills adapters.\n\nHosted is the default. Use --local when you want editable source, offline work,\nor a privacy-sensitive local app instance.`;\n\nconst APP_SKILL_COMMANDS = new Set([\"ensure\", \"launch\", \"pack\"]);\nconst APP_SKILL_SCOPES = new Set([\"user\", \"project\"]);\nconst SAFE_PACKAGE_EXECUTABLES = new Set([\"pnpm\", \"npm\", \"bun\", \"yarn\"]);\nconst SAFE_ENV_KEYS = [\n \"PATH\",\n \"HOME\",\n \"USER\",\n \"SHELL\",\n \"TMPDIR\",\n \"TEMP\",\n \"TMP\",\n \"TERM\",\n \"CI\",\n \"PNPM_HOME\",\n \"COREPACK_HOME\",\n \"SystemRoot\",\n \"ComSpec\",\n];\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return Boolean(value && typeof value === \"object\" && !Array.isArray(value));\n}\n\nfunction stringValue(value: unknown): string | undefined {\n return typeof value === \"string\" && value.trim() ? value.trim() : undefined;\n}\n\nfunction stringArray(value: unknown): string[] {\n if (!Array.isArray(value)) return [];\n return value.filter((item): item is string => typeof item === \"string\");\n}\n\nfunction normalizeOriginUrl(value: string, field: string): string {\n let url: URL;\n try {\n url = new URL(value);\n } catch {\n throw new Error(`${field} must be a valid URL.`);\n }\n if (url.protocol !== \"https:\" && url.protocol !== \"http:\") {\n throw new Error(`${field} must use http:// or https://.`);\n }\n return `${url.origin}${url.pathname}`.replace(/\\/+$/, \"\");\n}\n\nfunction withMcpPath(baseUrl: string): string {\n return `${baseUrl.replace(/\\/+$/, \"\")}/_agent-native/mcp`;\n}\n\nfunction normalizeSkillVisibility(value: unknown): SkillVisibility {\n if (value === \"internal\" || value === \"exported\" || value === \"both\") {\n return value;\n }\n return \"both\";\n}\n\nfunction normalizeHostAdapter(value: unknown): AppSkillHostAdapter | null {\n if (\n value === \"codex-plugin\" ||\n value === \"claude-marketplace\" ||\n value === \"vercel-skills\" ||\n value === \"plain-skill\" ||\n value === \"claude-skill\" ||\n value === \"chatgpt-mcp\" ||\n value === \"generic-mcp\"\n ) {\n return value;\n }\n return null;\n}\n\nfunction defaultHostAdapters(): AppSkillHostAdapter[] {\n return [\n \"codex-plugin\",\n \"claude-marketplace\",\n \"vercel-skills\",\n \"plain-skill\",\n \"claude-skill\",\n \"chatgpt-mcp\",\n \"generic-mcp\",\n ];\n}\n\nfunction uniqueAdapters(values: AppSkillHostAdapter[]): AppSkillHostAdapter[] {\n const seen = new Set<AppSkillHostAdapter>();\n return values.filter((value) => {\n if (seen.has(value)) return false;\n seen.add(value);\n return true;\n });\n}\n\nexport function normalizeAppSkillManifest(raw: unknown): AppSkillManifest {\n if (!isRecord(raw)) throw new Error(\"App skill manifest must be an object.\");\n const schemaVersion = raw.schemaVersion ?? 1;\n if (schemaVersion !== 1) {\n throw new Error(`Unsupported app skill schemaVersion: ${schemaVersion}`);\n }\n\n const id = stringValue(raw.id);\n if (!id || !/^[a-z0-9][a-z0-9-]{0,62}[a-z0-9]$/.test(id)) {\n throw new Error(\n \"App skill manifest id must be kebab-case and 2-64 characters.\",\n );\n }\n\n const hostedRaw = isRecord(raw.hosted) ? raw.hosted : {};\n const hostedUrl = normalizeOriginUrl(\n stringValue(hostedRaw.url) ?? \"\",\n \"hosted.url\",\n );\n const hostedMcpUrl = normalizeOriginUrl(\n stringValue(hostedRaw.mcpUrl) ?? withMcpPath(hostedUrl),\n \"hosted.mcpUrl\",\n );\n\n const mcpRaw = isRecord(raw.mcp) ? raw.mcp : {};\n const localRaw = isRecord(raw.local) ? raw.local : undefined;\n const commandsRaw = isRecord(localRaw?.commands)\n ? localRaw.commands\n : undefined;\n const surfacesRaw = Array.isArray(raw.surfaces) ? raw.surfaces : [];\n const skillsRaw = Array.isArray(raw.skills) ? raw.skills : [];\n const adaptersRaw = Array.isArray(raw.hostAdapters) ? raw.hostAdapters : [];\n const authRaw = isRecord(raw.auth) ? raw.auth : undefined;\n\n const adapters = uniqueAdapters(\n adaptersRaw\n .map(normalizeHostAdapter)\n .filter((value): value is AppSkillHostAdapter => Boolean(value)),\n );\n\n return {\n schemaVersion: 1,\n id,\n displayName: stringValue(raw.displayName) ?? id,\n description:\n stringValue(raw.description) ??\n `Agent-native app-backed skill for ${id}.`,\n ...(stringValue(raw.version) ? { version: stringValue(raw.version) } : {}),\n hosted: {\n url: hostedUrl,\n mcpUrl: hostedMcpUrl,\n },\n mcp: {\n serverName: stringValue(mcpRaw.serverName) ?? `agent-native-${id}`,\n aliases: stringArray(mcpRaw.aliases),\n },\n ...(localRaw\n ? {\n local: {\n ...(stringValue(localRaw.template)\n ? { template: stringValue(localRaw.template) }\n : {}),\n ...(stringValue(localRaw.sourcePath)\n ? { sourcePath: stringValue(localRaw.sourcePath) }\n : {}),\n ...(stringValue(localRaw.defaultUrl)\n ? {\n defaultUrl: normalizeOriginUrl(\n stringValue(localRaw.defaultUrl)!,\n \"local.defaultUrl\",\n ),\n }\n : {}),\n commands: {\n install: stringValue(commandsRaw?.install) ?? \"pnpm install\",\n dev: stringValue(commandsRaw?.dev) ?? \"pnpm dev\",\n start: stringValue(commandsRaw?.start) ?? \"pnpm start\",\n },\n },\n }\n : {}),\n ...(authRaw\n ? {\n auth: {\n ...(authRaw.mode === \"oauth\" ||\n authRaw.mode === \"device\" ||\n authRaw.mode === \"none\"\n ? { mode: authRaw.mode }\n : {}),\n ...(stringValue(authRaw.setup)\n ? { setup: stringValue(authRaw.setup) }\n : {}),\n },\n }\n : {}),\n surfaces: surfacesRaw.filter(isRecord).map((surface) => ({\n id: stringValue(surface.id) ?? \"app\",\n ...(stringValue(surface.action)\n ? { action: stringValue(surface.action) }\n : {}),\n path: stringValue(surface.path) ?? \"/\",\n mediaTypes: stringArray(surface.mediaTypes),\n ...(stringValue(surface.defaultMediaType)\n ? { defaultMediaType: stringValue(surface.defaultMediaType) }\n : {}),\n })),\n skills: skillsRaw\n .filter(isRecord)\n .map((skill) => ({\n path: stringValue(skill.path) ?? \"\",\n visibility: normalizeSkillVisibility(skill.visibility),\n ...(stringValue(skill.exportAs)\n ? { exportAs: stringValue(skill.exportAs) }\n : {}),\n }))\n .filter((skill) => skill.path),\n hostAdapters: adapters.length ? adapters : defaultHostAdapters(),\n };\n}\n\nexport function findAppSkillManifest(startDir: string = process.cwd()): string {\n let current = path.resolve(startDir);\n while (true) {\n const candidate = path.join(current, \"agent-native.app-skill.json\");\n if (fs.existsSync(candidate)) return candidate;\n const parent = path.dirname(current);\n if (parent === current) break;\n current = parent;\n }\n throw new Error(\n \"Could not find agent-native.app-skill.json. Pass --manifest <file>.\",\n );\n}\n\nexport function loadAppSkillManifest(file?: string): LoadedAppSkillManifest {\n const resolved = path.resolve(file ?? findAppSkillManifest());\n const raw = JSON.parse(fs.readFileSync(resolved, \"utf-8\"));\n return {\n manifest: normalizeAppSkillManifest(raw),\n file: resolved,\n dir: path.dirname(resolved),\n };\n}\n\nexport function exportedSkills(\n manifest: AppSkillManifest,\n): AppSkillManifestSkill[] {\n return manifest.skills.filter(\n (skill) => skill.visibility === \"exported\" || skill.visibility === \"both\",\n );\n}\n\nexport function internalSkills(\n manifest: AppSkillManifest,\n): AppSkillManifestSkill[] {\n return manifest.skills.filter(\n (skill) => skill.visibility === \"internal\" || skill.visibility === \"both\",\n );\n}\n\nexport function parseAppSkillArgs(argv: string[]): ParsedAppSkillArgs {\n const first = argv[0];\n let command: ParsedAppSkillArgs[\"command\"] = \"ensure\";\n let args = argv;\n if (first === \"help\" || first === \"--help\" || first === \"-h\") {\n command = \"help\";\n args = argv.slice(1);\n } else if (APP_SKILL_COMMANDS.has(first ?? \"\")) {\n command = first as ParsedAppSkillArgs[\"command\"];\n args = argv.slice(1);\n } else if (first && !first.startsWith(\"-\") && !looksLikeManifestArg(first)) {\n throw new Error(`Unknown app-skill command: ${first}`);\n }\n const out: ParsedAppSkillArgs = {\n command,\n client: \"all\",\n scope: \"user\",\n mode: \"hosted\",\n dryRun: false,\n skipInstall: false,\n noRegister: false,\n printJson: false,\n yes: false,\n };\n\n for (let i = 0; i < args.length; i++) {\n const arg = args[i];\n const eat = (flag: string): string | undefined => {\n if (arg === flag) {\n const next = args[++i];\n if (!next || next.startsWith(\"-\")) {\n throw new Error(`Missing value for ${flag}.`);\n }\n return next;\n }\n if (arg.startsWith(`${flag}=`)) {\n const value = arg.slice(flag.length + 1);\n if (!value) throw new Error(`Missing value for ${flag}.`);\n return value;\n }\n return undefined;\n };\n let value: string | undefined;\n if ((value = eat(\"--manifest\")) !== undefined) out.manifest = value;\n else if ((value = eat(\"--client\")) !== undefined) out.client = value;\n else if ((value = eat(\"--scope\")) !== undefined) out.scope = value;\n else if ((value = eat(\"--name\")) !== undefined) out.serverName = value;\n else if ((value = eat(\"--server-name\")) !== undefined)\n out.serverName = value;\n else if ((value = eat(\"--out\")) !== undefined) out.out = value;\n else if ((value = eat(\"--into\")) !== undefined) out.into = value;\n else if (arg === \"--local\") out.mode = \"local\";\n else if (arg === \"--hosted\") out.mode = \"hosted\";\n else if (arg === \"--dry-run\") out.dryRun = true;\n else if (arg === \"--skip-install\" || arg === \"--no-install\")\n out.skipInstall = true;\n else if (arg === \"--no-register\") out.noRegister = true;\n else if (arg === \"--json\") out.printJson = true;\n else if (arg === \"--yes\" || arg === \"-y\") out.yes = true;\n else if (arg.startsWith(\"-\")) throw new Error(`Unknown option: ${arg}`);\n else if (!out.manifest) out.manifest = arg;\n else throw new Error(`Unexpected argument: ${arg}`);\n }\n\n if (!APP_SKILL_SCOPES.has(out.scope)) {\n throw new Error(\"--scope must be either user or project.\");\n }\n\n return out;\n}\n\nfunction looksLikeManifestArg(value: string): boolean {\n return (\n value.endsWith(\".json\") ||\n value.includes(\"/\") ||\n value.includes(\"\\\\\") ||\n fs.existsSync(value)\n );\n}\n\nfunction assertPathInside(root: string, target: string, field: string): string {\n const resolvedRoot = path.resolve(root);\n const resolvedTarget = path.resolve(target);\n const relative = path.relative(resolvedRoot, resolvedTarget);\n if (relative && (relative.startsWith(\"..\") || path.isAbsolute(relative))) {\n throw new Error(`${field} must resolve inside ${resolvedRoot}.`);\n }\n return resolvedTarget;\n}\n\nfunction resolveSkillSource(manifestDir: string, skill: AppSkillManifestSkill) {\n if (path.isAbsolute(skill.path)) {\n throw new Error(`Skill path must be relative: ${skill.path}`);\n }\n return assertPathInside(\n manifestDir,\n path.resolve(manifestDir, skill.path),\n `Skill path ${skill.path}`,\n );\n}\n\nfunction skillExportName(skill: AppSkillManifestSkill): string {\n if (skill.exportAs) {\n if (!/^[a-zA-Z0-9][a-zA-Z0-9._-]*$/.test(skill.exportAs)) {\n throw new Error(`Invalid skill export name: ${skill.exportAs}`);\n }\n return skill.exportAs;\n }\n const normalized = skill.path.replace(/\\/+$/, \"\");\n return path.basename(normalized);\n}\n\nfunction copyDirFiltered(source: string, dest: string): void {\n const sourceRoot = path.resolve(source);\n const destRoot = path.resolve(dest);\n const relativeDest = path.relative(sourceRoot, destRoot);\n const outputRootInsideSource =\n relativeDest &&\n !relativeDest.startsWith(\"..\") &&\n !path.isAbsolute(relativeDest)\n ? path.join(sourceRoot, relativeDest.split(path.sep)[0])\n : destRoot;\n fs.cpSync(source, dest, {\n recursive: true,\n filter: (src) => {\n const resolved = path.resolve(src);\n if (\n resolved === outputRootInsideSource ||\n resolved.startsWith(`${outputRootInsideSource}${path.sep}`)\n ) {\n return false;\n }\n const base = path.basename(src);\n const lower = base.toLowerCase();\n return (\n base !== \"node_modules\" &&\n base !== \".git\" &&\n base !== \"dist\" &&\n base !== \".output\" &&\n base !== \".react-router\" &&\n base !== \".netlify\" &&\n base !== \"secrets\" &&\n base !== \"private\" &&\n !base.startsWith(\".env\") &&\n base !== \".dev.vars\" &&\n base !== \".npmrc\" &&\n !lower.endsWith(\".db\") &&\n !lower.endsWith(\".sqlite\") &&\n !lower.endsWith(\".sqlite3\") &&\n !lower.endsWith(\".pem\") &&\n !lower.endsWith(\".key\") &&\n !lower.endsWith(\".crt\") &&\n !lower.endsWith(\".p12\")\n );\n },\n });\n}\n\nfunction copySkill(\n manifestDir: string,\n skill: AppSkillManifestSkill,\n destRoot: string,\n): string {\n const source = resolveSkillSource(manifestDir, skill);\n const exportName = skillExportName(skill);\n const dest = path.join(destRoot, exportName);\n if (!fs.existsSync(source)) {\n throw new Error(`Exported skill source not found: ${source}`);\n }\n fs.mkdirSync(destRoot, { recursive: true });\n const stat = fs.statSync(source);\n if (stat.isDirectory()) {\n copyDirFiltered(source, dest);\n } else {\n fs.mkdirSync(dest, { recursive: true });\n fs.copyFileSync(source, path.join(dest, \"SKILL.md\"));\n }\n rewriteSkillFrontmatterName(path.join(dest, \"SKILL.md\"), exportName);\n return dest;\n}\n\nfunction rewriteSkillFrontmatterName(file: string, name: string): void {\n if (!fs.existsSync(file)) return;\n const source = fs.readFileSync(file, \"utf-8\");\n const lines = source.split(\"\\n\");\n if (lines[0]?.trim() !== \"---\") return;\n const end = lines.findIndex(\n (line, index) => index > 0 && line.trim() === \"---\",\n );\n if (end <= 0) return;\n const nameIndex = lines.findIndex(\n (line, index) => index > 0 && index < end && /^name\\s*:/.test(line),\n );\n if (nameIndex === -1) {\n lines.splice(1, 0, `name: ${name}`);\n } else {\n lines[nameIndex] = `name: ${name}`;\n }\n fs.writeFileSync(file, lines.join(\"\\n\"), \"utf-8\");\n}\n\nfunction writeJson(file: string, value: unknown): void {\n fs.mkdirSync(path.dirname(file), { recursive: true });\n fs.writeFileSync(file, JSON.stringify(value, null, 2) + \"\\n\", \"utf-8\");\n}\n\nfunction mcpServerNames(\n manifest: AppSkillManifest,\n serverName?: string,\n): string[] {\n if (serverName) return [serverName];\n const names = [manifest.mcp.serverName, ...(manifest.mcp.aliases ?? [])];\n return [...new Set(names.filter(Boolean))];\n}\n\nfunction mcpServerConfig(manifest: AppSkillManifest, serverName?: string) {\n const entry = buildHttpMcpEntry(manifest.hosted.mcpUrl);\n return {\n mcpServers: Object.fromEntries(\n mcpServerNames(manifest, serverName).map((name) => [name, entry]),\n ),\n };\n}\n\nfunction pluginName(manifest: AppSkillManifest): string {\n return `agent-native-${manifest.id}`;\n}\n\nfunction claudeMarketplaceName(): string {\n return \"agent-native-apps\";\n}\n\nexport function exportedSkillContentHash(\n manifestDir: string,\n skills: AppSkillManifestSkill[],\n manifest: AppSkillManifest,\n): string {\n const parts = skills\n .map((skill) => {\n const skillDir = path.join(manifestDir, skill.path);\n // Hash SKILL.md plus every sibling file under the skill dir (e.g.\n // references/*), so a progressive-disclosure reference edit still changes\n // the content hash and bumps the Codex plugin version for auto-upgrade.\n const body = collectSkillFiles(skillDir)\n .map(\n (rel) =>\n `${rel}\\n${fs.readFileSync(path.join(skillDir, rel), \"utf-8\")}`,\n )\n .join(\"\\n \\n\");\n return `${skillExportName(skill)}\\n${body}`;\n })\n .sort();\n parts.push(\n `mcp:${mcpServerNames(manifest).join(\",\")}:${manifest.hosted.mcpUrl}`,\n );\n return createHash(\"sha256\")\n .update(parts.join(\"\\n\u0000\\n\"))\n .digest(\"hex\")\n .slice(0, 12);\n}\n\n/**\n * List a skill dir's files (SKILL.md + any siblings like references/*) as\n * skill-relative POSIX paths, sorted for a stable content hash. A bare SKILL.md\n * source (file, not dir) falls back to just \"SKILL.md\".\n */\nfunction collectSkillFiles(skillDir: string): string[] {\n const out: string[] = [];\n const walk = (dir: string, prefix: string): void => {\n if (!fs.existsSync(dir) || !fs.statSync(dir).isDirectory()) return;\n for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {\n const rel = prefix ? `${prefix}/${entry.name}` : entry.name;\n if (entry.isDirectory()) walk(path.join(dir, entry.name), rel);\n else if (entry.isFile()) out.push(rel);\n }\n };\n walk(skillDir, \"\");\n if (out.length === 0) {\n // Source resolved to a single SKILL.md file rather than a dir, or is empty.\n return [\"SKILL.md\"];\n }\n return out.sort();\n}\n\n/**\n * Plugin version embeds a content hash of the exported skills + MCP server\n * identity/endpoint.\n * Codex keys its plugin cache on the version string, so a changed skill or MCP\n * URL yields a new version and `codex plugin marketplace upgrade` (which runs\n * on startup) delivers the update automatically — no manual semver bump per\n * edit. Claude Code uses commit-SHA versioning instead (plugin.json omits\n * version), so it auto-updates on every push.\n */\nexport function resolvePluginVersion(\n manifest: AppSkillManifest,\n manifestDir: string,\n skills: AppSkillManifestSkill[],\n): string {\n const base = manifest.version ?? \"1.0.0\";\n return `${base}+codex.${exportedSkillContentHash(manifestDir, skills, manifest)}`;\n}\n\nfunction writeCodexPluginAdapter(\n manifest: AppSkillManifest,\n outDir: string,\n version: string,\n): void {\n const name = pluginName(manifest);\n writeJson(path.join(outDir, \".codex-plugin\", \"plugin.json\"), {\n name,\n version,\n description: manifest.description,\n author: {\n name: \"Agent-Native\",\n url: \"https://agent-native.com\",\n },\n homepage: manifest.hosted.url,\n license: \"MIT\",\n keywords: [\n \"agent-native\",\n manifest.id,\n \"mcp\",\n \"skills\",\n \"app-backed-skill\",\n ],\n skills: \"./skills/\",\n mcpServers: \"./.mcp.json\",\n interface: {\n displayName: manifest.displayName,\n shortDescription: manifest.description,\n longDescription:\n `${manifest.displayName} packages agent instructions, app actions, ` +\n \"an MCP connector, and inline UI surfaces as an installable skill.\",\n developerName: \"Agent-Native\",\n category: \"Productivity\",\n capabilities: [\"Interactive\", \"Read\", \"Write\"],\n websiteURL: manifest.hosted.url,\n defaultPrompt: [\n `Open ${manifest.displayName} where useful`,\n `Use ${manifest.displayName} for app-backed workflows`,\n `Search ${manifest.displayName} and return usable context`,\n ],\n brandColor: \"#2563EB\",\n },\n });\n writeJson(path.join(outDir, \".mcp.json\"), mcpServerConfig(manifest));\n}\n\nfunction writeClaudeMarketplaceAdapter(\n manifest: AppSkillManifest,\n manifestDir: string,\n skills: AppSkillManifestSkill[],\n outDir: string,\n): void {\n const adapterDir = path.join(outDir, \"adapters\", \"claude-marketplace\");\n const name = pluginName(manifest);\n const marketplaceName = claudeMarketplaceName();\n const pluginDir = path.join(adapterDir, \"plugins\", name);\n const skillRoot = path.join(pluginDir, \"skills\");\n\n for (const skill of skills) copySkill(manifestDir, skill, skillRoot);\n\n writeJson(path.join(adapterDir, \".claude-plugin\", \"marketplace.json\"), {\n name: marketplaceName,\n description:\n \"Agent-Native app-backed skills that bundle instructions, MCP connectors, and UI surfaces.\",\n owner: {\n name: \"Agent-Native\",\n },\n plugins: [\n {\n name,\n displayName: manifest.displayName,\n description: manifest.description,\n source: `./plugins/${name}`,\n autoUpdate: true,\n homepage: manifest.hosted.url,\n keywords: [\n \"agent-native\",\n manifest.id,\n \"mcp\",\n \"skills\",\n \"app-backed-skill\",\n ],\n },\n ],\n });\n\n writeJson(path.join(pluginDir, \".claude-plugin\", \"plugin.json\"), {\n name,\n displayName: manifest.displayName,\n description: manifest.description,\n author: {\n name: \"Agent-Native\",\n url: \"https://agent-native.com\",\n },\n homepage: manifest.hosted.url,\n repository: \"https://github.com/BuilderIO/agent-native\",\n license: \"MIT\",\n keywords: [\n \"agent-native\",\n manifest.id,\n \"mcp\",\n \"skills\",\n \"app-backed-skill\",\n ],\n skills: \"./skills/\",\n mcpServers: \"./.mcp.json\",\n });\n writeJson(path.join(pluginDir, \".mcp.json\"), mcpServerConfig(manifest));\n fs.writeFileSync(\n path.join(adapterDir, \"README.md\"),\n [\n `# ${manifest.displayName} Claude Code Marketplace`,\n \"\",\n \"Install this local marketplace from Claude Code:\",\n \"\",\n \"```text\",\n `/plugin marketplace add ./dist/${manifest.id}-skill/adapters/claude-marketplace`,\n `/plugin install ${name}@${marketplaceName}`,\n \"/reload-plugins\",\n \"/mcp\",\n \"```\",\n \"\",\n \"Authenticate the MCP connector from `/mcp` after installation. The plugin ships a URL-only MCP config, so no shared secrets are stored in the marketplace package.\",\n \"\",\n \"For a published marketplace repo, point `/plugin marketplace add` at the repository URL instead of the local folder.\",\n \"\",\n ].join(\"\\n\"),\n \"utf-8\",\n );\n}\n\nfunction writeMcpAdapter(\n manifest: AppSkillManifest,\n outDir: string,\n adapter: \"generic-mcp\" | \"chatgpt-mcp\",\n): void {\n const dir = path.join(outDir, \"adapters\", adapter);\n if (adapter === \"generic-mcp\") {\n writeJson(path.join(dir, \"mcp.json\"), mcpServerConfig(manifest));\n return;\n }\n writeJson(path.join(dir, \"connector.json\"), {\n name: manifest.mcp.serverName,\n title: manifest.displayName,\n url: manifest.hosted.mcpUrl,\n auth: manifest.auth?.mode ?? \"oauth\",\n surfaces: manifest.surfaces,\n });\n}\n\nfunction copySkillAdapter(\n manifestDir: string,\n skills: AppSkillManifestSkill[],\n outDir: string,\n adapter: \"plain-skill\" | \"claude-skill\" | \"vercel-skills\",\n): void {\n const skillRoot = path.join(outDir, \"adapters\", adapter, \"skills\");\n for (const skill of skills) copySkill(manifestDir, skill, skillRoot);\n}\n\nfunction writeVercelSkillsAdapter(\n manifest: AppSkillManifest,\n manifestDir: string,\n skills: AppSkillManifestSkill[],\n outDir: string,\n): void {\n const adapterDir = path.join(outDir, \"adapters\", \"vercel-skills\");\n copySkillAdapter(manifestDir, skills, outDir, \"vercel-skills\");\n fs.writeFileSync(\n path.join(adapterDir, \"README.md\"),\n [\n `# ${manifest.displayName} Skills`,\n \"\",\n \"Install instructions only with the Vercel Labs/open skills CLI:\",\n \"\",\n \"```bash\",\n `npx skills@latest add . --skill ${skills.map(skillExportName).join(\" --skill \")} -a codex`,\n \"```\",\n \"\",\n \"Then register the app-backed MCP connector:\",\n \"\",\n \"```bash\",\n `npx @agent-native/core@latest app-skill ensure --manifest agent-native.app-skill.json --yes`,\n \"```\",\n \"\",\n \"The open skills CLI installs instruction files only; it does not run postinstall scripts or register MCP connectors. OAuth or device setup happens in the MCP host; secrets are not stored in skills.\",\n \"\",\n ].join(\"\\n\"),\n \"utf-8\",\n );\n writeJson(path.join(adapterDir, \"agent-native.app-skill.json\"), manifest);\n}\n\nexport interface AppSkillPackResult {\n outDir: string;\n exportedSkillNames: string[];\n files: string[];\n}\n\nexport function buildAppSkillPack(\n loaded: LoadedAppSkillManifest,\n outDir: string,\n): AppSkillPackResult {\n const manifest = loaded.manifest;\n const target = path.resolve(outDir);\n const skills = exportedSkills(manifest);\n if (skills.length === 0) {\n throw new Error(\"Manifest has no exported or both-visibility skills.\");\n }\n const pluginVersion = resolvePluginVersion(manifest, loaded.dir, skills);\n\n fs.mkdirSync(target, { recursive: true });\n const appSource = resolveLocalSourceDir(loaded);\n const packedManifest: AppSkillManifest = appSource\n ? {\n ...manifest,\n local: {\n ...(manifest.local ?? {}),\n sourcePath: \"./app\",\n commands: manifest.local?.commands ?? {\n install: \"pnpm install\",\n dev: \"pnpm dev\",\n start: \"pnpm start\",\n },\n },\n }\n : manifest;\n writeJson(path.join(target, \"agent-native.app-skill.json\"), packedManifest);\n if (appSource) {\n copyDirFiltered(appSource, path.join(target, \"app\"));\n }\n const exportedSkillNames = skills.map(skillExportName);\n for (const skill of skills)\n copySkill(loaded.dir, skill, path.join(target, \"skills\"));\n\n const files: string[] = [\n path.join(target, \"agent-native.app-skill.json\"),\n ...(appSource ? [path.join(target, \"app\")] : []),\n ...exportedSkillNames.map((name) =>\n path.join(target, \"skills\", name, \"SKILL.md\"),\n ),\n ];\n\n if (manifest.hostAdapters.includes(\"codex-plugin\")) {\n writeCodexPluginAdapter(manifest, target, pluginVersion);\n files.push(\n path.join(target, \".codex-plugin\", \"plugin.json\"),\n path.join(target, \".mcp.json\"),\n );\n }\n if (manifest.hostAdapters.includes(\"claude-marketplace\")) {\n writeClaudeMarketplaceAdapter(manifest, loaded.dir, skills, target);\n files.push(\n path.join(\n target,\n \"adapters\",\n \"claude-marketplace\",\n \".claude-plugin\",\n \"marketplace.json\",\n ),\n path.join(\n target,\n \"adapters\",\n \"claude-marketplace\",\n \"plugins\",\n pluginName(manifest),\n \".claude-plugin\",\n \"plugin.json\",\n ),\n path.join(\n target,\n \"adapters\",\n \"claude-marketplace\",\n \"plugins\",\n pluginName(manifest),\n \".mcp.json\",\n ),\n path.join(\n target,\n \"adapters\",\n \"claude-marketplace\",\n \"plugins\",\n pluginName(manifest),\n \"skills\",\n ),\n path.join(target, \"adapters\", \"claude-marketplace\", \"README.md\"),\n );\n }\n if (manifest.hostAdapters.includes(\"vercel-skills\")) {\n writeVercelSkillsAdapter(manifest, loaded.dir, skills, target);\n files.push(\n path.join(target, \"adapters\", \"vercel-skills\", \"skills\"),\n path.join(target, \"adapters\", \"vercel-skills\", \"README.md\"),\n path.join(\n target,\n \"adapters\",\n \"vercel-skills\",\n \"agent-native.app-skill.json\",\n ),\n );\n }\n if (manifest.hostAdapters.includes(\"plain-skill\")) {\n copySkillAdapter(loaded.dir, skills, target, \"plain-skill\");\n files.push(path.join(target, \"adapters\", \"plain-skill\", \"skills\"));\n }\n if (manifest.hostAdapters.includes(\"claude-skill\")) {\n copySkillAdapter(loaded.dir, skills, target, \"claude-skill\");\n files.push(path.join(target, \"adapters\", \"claude-skill\", \"skills\"));\n }\n if (manifest.hostAdapters.includes(\"generic-mcp\")) {\n writeMcpAdapter(manifest, target, \"generic-mcp\");\n files.push(path.join(target, \"adapters\", \"generic-mcp\", \"mcp.json\"));\n }\n if (manifest.hostAdapters.includes(\"chatgpt-mcp\")) {\n writeMcpAdapter(manifest, target, \"chatgpt-mcp\");\n files.push(path.join(target, \"adapters\", \"chatgpt-mcp\", \"connector.json\"));\n }\n\n return { outDir: target, exportedSkillNames, files };\n}\n\nfunction appSkillCacheDir(appId: string): string {\n return path.join(os.homedir(), \".agent-native\", \"app-skills\", appId, \"app\");\n}\n\nfunction resolveLocalSourceDir(\n loaded: LoadedAppSkillManifest,\n): string | undefined {\n const local = loaded.manifest.local;\n if (local?.sourcePath) {\n if (path.isAbsolute(local.sourcePath)) {\n throw new Error(\"local.sourcePath must be relative to the manifest.\");\n }\n const source = assertPathInside(\n loaded.dir,\n path.resolve(loaded.dir, local.sourcePath),\n \"local.sourcePath\",\n );\n if (fs.existsSync(source)) return source;\n throw new Error(\n `local.sourcePath \"${local.sourcePath}\" does not exist. ` +\n \"Run pack from the directory containing the app source.\",\n );\n }\n if (local?.template) {\n if (!/^[a-z0-9][a-z0-9-]*$/i.test(local.template)) {\n throw new Error(\"local.template must be a direct template name.\");\n }\n const repoTemplate = path.resolve(\n process.cwd(),\n \"templates\",\n local.template,\n );\n if (fs.existsSync(repoTemplate)) return repoTemplate;\n }\n return undefined;\n}\n\nexport function resolveLaunchPlan(\n loaded: LoadedAppSkillManifest,\n options: LaunchAppSkillOptions = {},\n): AppSkillLaunchPlan {\n const manifest = loaded.manifest;\n const mode = options.mode ?? \"hosted\";\n const serverName = options.serverName ?? manifest.mcp.serverName;\n if (mode === \"hosted\") {\n return {\n mode,\n appId: manifest.id,\n url: manifest.hosted.url,\n mcpUrl: manifest.hosted.mcpUrl,\n serverName,\n commands: {},\n };\n }\n\n const defaultUrl = manifest.local?.defaultUrl ?? \"http://127.0.0.1:8100\";\n const appDir = path.resolve(options.into ?? appSkillCacheDir(manifest.id));\n return {\n mode,\n appId: manifest.id,\n appDir,\n sourceDir: resolveLocalSourceDir(loaded),\n url: defaultUrl,\n mcpUrl: withMcpPath(defaultUrl),\n serverName,\n commands: manifest.local?.commands ?? {\n install: \"pnpm install\",\n dev: \"pnpm dev\",\n start: \"pnpm start\",\n },\n };\n}\n\nfunction printPlan(plan: AppSkillLaunchPlan, log: (message: string) => void) {\n log(` App: ${plan.appId}`);\n log(` Mode: ${plan.mode}`);\n log(` URL: ${plan.url}`);\n log(` MCP URL: ${plan.mcpUrl}`);\n log(` Server: ${plan.serverName}`);\n if (plan.appDir) log(` App dir: ${plan.appDir}`);\n if (plan.sourceDir) log(` Source: ${plan.sourceDir}`);\n if (plan.commands.install) log(` Install: ${plan.commands.install}`);\n if (plan.commands.dev) log(` Dev: ${plan.commands.dev}`);\n}\n\nfunction safeChildEnv(): NodeJS.ProcessEnv {\n const env: NodeJS.ProcessEnv = {};\n for (const key of SAFE_ENV_KEYS) {\n const value = process.env[key];\n if (value !== undefined) env[key] = value;\n }\n return env;\n}\n\nfunction parsePackageCommand(command: string): {\n executable: string;\n args: string[];\n} {\n const trimmed = command.trim();\n if (!trimmed) throw new Error(\"Command cannot be empty.\");\n if (/[\\n\\r;&|<>`$]/.test(trimmed)) {\n throw new Error(\n `Unsafe shell syntax is not allowed in command: ${command}`,\n );\n }\n const parts = trimmed.split(/\\s+/);\n const executable = parts[0];\n if (!SAFE_PACKAGE_EXECUTABLES.has(executable)) {\n throw new Error(\n `Unsupported app-skill command executable: ${executable}. Use pnpm, npm, bun, or yarn.`,\n );\n }\n return { executable, args: parts.slice(1) };\n}\n\nfunction runShell(command: string, cwd: string): Promise<number> {\n const { executable, args } = parsePackageCommand(command);\n return new Promise((resolve, reject) => {\n const child = spawn(executable, args, {\n cwd,\n env: safeChildEnv(),\n stdio: \"inherit\",\n });\n child.on(\"error\", reject);\n child.on(\"exit\", (code, signal) => {\n if (signal) {\n reject(new Error(`Command \"${command}\" was terminated by ${signal}.`));\n return;\n }\n resolve(code ?? 1);\n });\n });\n}\n\nfunction openUrl(url: string): void {\n const command =\n process.platform === \"darwin\"\n ? \"open\"\n : process.platform === \"win32\"\n ? \"cmd\"\n : \"xdg-open\";\n const args = process.platform === \"win32\" ? [\"/c\", \"start\", \"\", url] : [url];\n const child = spawn(command, args, {\n detached: true,\n stdio: \"ignore\",\n shell: process.platform === \"win32\",\n });\n child.unref();\n}\n\nexport async function ensureAppSkill(\n loaded: LoadedAppSkillManifest,\n options: EnsureAppSkillOptions = {},\n): Promise<EnsureAppSkillResult> {\n const manifest = loaded.manifest;\n const mode = options.mode ?? \"hosted\";\n const clients = options.clients ?? resolveClients(\"all\");\n const serverName = options.serverName ?? manifest.mcp.serverName;\n const scope = options.scope ?? \"user\";\n const plan = resolveLaunchPlan(loaded, { mode, serverName });\n const result: EnsureAppSkillResult = {\n mode,\n serverName,\n mcpUrl: plan.mcpUrl,\n clients,\n written: [],\n };\n\n if (options.dryRun) return result;\n\n if (options.confirm && !options.yes) {\n await confirmMcpRegistration(result, loaded.manifest.displayName, scope);\n }\n\n const baseDir = options.baseDir ?? process.cwd();\n const authMode = manifest.auth?.mode ?? \"oauth\";\n const shouldSkipDeviceHostedConfig = mode === \"hosted\" && authMode !== \"none\";\n const writableClients = shouldSkipDeviceHostedConfig\n ? clients.filter((client) => supportsRemoteMcpOAuth(client))\n : clients;\n const skippedClients = shouldSkipDeviceHostedConfig\n ? clients.filter((client) => !supportsRemoteMcpOAuth(client))\n : [];\n\n result.written = writableClients.length\n ? writeConfigs(\n writableClients,\n serverName,\n plan.mcpUrl,\n undefined,\n scope,\n baseDir,\n )\n : [];\n\n if (skippedClients.length > 0) {\n options.log?.(\n `Skipped URL-only hosted MCP config for ${skippedClients.join(\n \", \",\n )}; run agent-native connect ${manifest.hosted.url} --client ${skippedClients.join(\n \",\",\n )} --scope ${scope} to write bearer auth.`,\n );\n }\n\n if (writableClients.length === 0) {\n return result;\n }\n\n // Aliases are intentionally NOT written as separate entries. Instead,\n // repurpose the alias list as a cleanup list: remove any other entries in\n // the same config files that point at the same URL (covers legacy alias\n // names, old default names like 'agent-native-<slug>', and any stale\n // custom names left from previous installs).\n const allRemovedNames: string[] = [];\n for (const client of writableClients) {\n const removed = removeSameUrlDuplicatesForClient(\n client,\n serverName,\n plan.mcpUrl,\n baseDir,\n scope,\n );\n allRemovedNames.push(...removed);\n }\n\n const uniqueRemoved = [...new Set(allRemovedNames)];\n const logMsg =\n uniqueRemoved.length > 0\n ? `Registered \"${serverName}\" for ${writableClients.join(\", \")} at ${plan.mcpUrl}; removed duplicate entries: ${uniqueRemoved.join(\", \")}`\n : `Registered \"${serverName}\" for ${writableClients.join(\", \")} at ${plan.mcpUrl}`;\n options.log?.(logMsg);\n return result;\n}\n\nasync function confirmMcpRegistration(\n result: EnsureAppSkillResult,\n displayName: string,\n scope: string,\n): Promise<void> {\n if (!process.stdin.isTTY || !process.stdout.isTTY) {\n throw new Error(\n \"Refusing to register MCP servers from a manifest without confirmation. Re-run with --yes to approve.\",\n );\n }\n const readline = await import(\"node:readline/promises\");\n const rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout,\n });\n try {\n const answer = await rl.question(\n [\n `Register ${displayName} MCP server \"${result.serverName}\"?`,\n ` URL: ${result.mcpUrl}`,\n ` Clients: ${result.clients.join(\", \")}`,\n ` Scope: ${scope}`,\n \"Proceed? [y/N] \",\n ].join(\"\\n\"),\n );\n if (!/^(y|yes)$/i.test(answer.trim())) {\n throw new Error(\"Cancelled app-skill MCP registration.\");\n }\n } finally {\n rl.close();\n }\n}\n\nexport async function launchAppSkill(\n loaded: LoadedAppSkillManifest,\n options: LaunchAppSkillOptions = {},\n): Promise<AppSkillLaunchPlan> {\n const log =\n options.log ?? ((message: string) => process.stdout.write(`${message}\\n`));\n const plan = resolveLaunchPlan(loaded, options);\n\n if (options.dryRun) {\n printPlan(plan, log);\n return plan;\n }\n\n if (plan.mode === \"hosted\") {\n log(`Opening ${loaded.manifest.displayName}: ${plan.url}`);\n openUrl(plan.url);\n return plan;\n }\n\n if (!plan.appDir) throw new Error(\"Local launch plan is missing appDir.\");\n if (!fs.existsSync(path.join(plan.appDir, \"package.json\"))) {\n if (!plan.sourceDir) {\n throw new Error(\n \"Local launch needs bundled app source. Pass --into <path> from a manifest with local.sourcePath.\",\n );\n }\n fs.mkdirSync(path.dirname(plan.appDir), { recursive: true });\n copyDirFiltered(plan.sourceDir, plan.appDir);\n log(`Materialized ${loaded.manifest.displayName} at ${plan.appDir}`);\n } else {\n log(`Using existing local app at ${plan.appDir}`);\n }\n\n if (!options.noRegister) {\n await ensureAppSkill(loaded, {\n mode: \"local\",\n clients: options.clients,\n scope: options.scope,\n serverName: options.serverName,\n baseDir: options.baseDir,\n confirm: options.confirm,\n yes: options.yes,\n log,\n });\n }\n\n if (!options.skipInstall && plan.commands.install) {\n const installCode = await runShell(plan.commands.install, plan.appDir);\n if (installCode !== 0) {\n throw new Error(`Install command failed with exit code ${installCode}.`);\n }\n }\n\n if (plan.commands.dev) {\n const code = await runShell(plan.commands.dev, plan.appDir);\n if (code !== 0) throw new Error(`Dev command exited with code ${code}.`);\n }\n\n return plan;\n}\n\nfunction resolveArgsClients(parsed: ParsedAppSkillArgs): ClientId[] {\n return resolveClients(parsed.client);\n}\n\nexport async function runAppSkill(argv: string[]): Promise<void> {\n try {\n const parsed = parseAppSkillArgs(argv);\n if (parsed.command === \"help\") {\n process.stdout.write(`${HELP}\\n`);\n return;\n }\n\n const loaded = loadAppSkillManifest(parsed.manifest);\n const log = (message: string) =>\n (parsed.printJson ? process.stderr : process.stdout).write(\n `${message}\\n`,\n );\n if (parsed.command === \"ensure\") {\n const result = await ensureAppSkill(loaded, {\n mode: parsed.mode,\n clients: resolveArgsClients(parsed),\n scope: parsed.scope,\n serverName: parsed.serverName,\n dryRun: parsed.dryRun,\n confirm: true,\n yes: parsed.yes,\n log,\n });\n if (parsed.printJson) {\n process.stdout.write(`${JSON.stringify(result, null, 2)}\\n`);\n } else if (parsed.dryRun) {\n process.stdout.write(\n `Would register ${result.serverName} at ${result.mcpUrl} for ${result.clients.join(\", \")}\\n`,\n );\n }\n return;\n }\n\n if (parsed.command === \"launch\") {\n const plan = await launchAppSkill(loaded, {\n mode: parsed.mode,\n into: parsed.into,\n dryRun: parsed.dryRun,\n skipInstall: parsed.skipInstall,\n noRegister: parsed.noRegister,\n clients: resolveArgsClients(parsed),\n scope: parsed.scope,\n serverName: parsed.serverName,\n confirm: true,\n yes: parsed.yes,\n log,\n });\n if (parsed.printJson) {\n process.stdout.write(`${JSON.stringify(plan, null, 2)}\\n`);\n }\n return;\n }\n\n if (parsed.command === \"pack\") {\n if (!parsed.out) {\n throw new Error(\"Missing --out <dir> for app-skill pack.\");\n }\n const result = buildAppSkillPack(loaded, parsed.out);\n if (parsed.printJson) {\n process.stdout.write(`${JSON.stringify(result, null, 2)}\\n`);\n } else {\n process.stdout.write(\n `Packed ${loaded.manifest.displayName} app skill at ${result.outDir}\\n`,\n );\n }\n }\n } catch (err: any) {\n process.stderr.write(`${err?.message ?? err}\\n`);\n process.exitCode = 1;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"app-skill.js","sourceRoot":"","sources":["../../src/cli/app-skill.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * `agent-native app-skill` packages an agent-native app as a distributable\n * skill bundle: instructions + MCP connector + embeddable app surfaces.\n *\n * The manifest intentionally contains no user secrets. Hosted installs write\n * URL-only MCP entries; clients that need auth complete OAuth/device setup in\n * the host. Local installs point at a developer-owned app process.\n */\n\nimport { spawn } from \"node:child_process\";\nimport { createHash } from \"node:crypto\";\nimport fs from \"node:fs\";\nimport os from \"node:os\";\nimport path from \"node:path\";\n\nimport {\n resolveClients,\n supportsRemoteMcpOAuth,\n writeConfigs,\n} from \"./connect.js\";\nimport {\n type ClientId,\n buildHttpMcpEntry,\n removeSameUrlDuplicatesForClient,\n} from \"./mcp-config-writers.js\";\n\nexport type SkillVisibility = \"internal\" | \"exported\" | \"both\";\nexport type AppSkillHostAdapter =\n | \"codex-plugin\"\n | \"claude-marketplace\"\n | \"vercel-skills\"\n | \"plain-skill\"\n | \"claude-skill\"\n | \"chatgpt-mcp\"\n | \"generic-mcp\";\n\nexport interface AppSkillManifestSkill {\n path: string;\n visibility: SkillVisibility;\n exportAs?: string;\n}\n\nexport interface AppSkillSurface {\n id: string;\n action?: string;\n path: string;\n mediaTypes?: string[];\n defaultMediaType?: string;\n}\n\nexport interface AppSkillManifest {\n schemaVersion: 1;\n id: string;\n displayName: string;\n description: string;\n /**\n * Optional semver base for generated plugin manifests. Codex keys its plugin\n * cache on the version string, so the packer appends a content hash to this\n * base; leave it unset to default to \"1.0.0\".\n */\n version?: string;\n hosted: {\n url: string;\n mcpUrl: string;\n };\n mcp: {\n serverName: string;\n aliases?: string[];\n };\n local?: {\n template?: string;\n sourcePath?: string;\n defaultUrl?: string;\n commands?: {\n install?: string;\n dev?: string;\n start?: string;\n };\n };\n auth?: {\n mode?: \"oauth\" | \"device\" | \"none\";\n setup?: string;\n };\n surfaces: AppSkillSurface[];\n skills: AppSkillManifestSkill[];\n hostAdapters: AppSkillHostAdapter[];\n}\n\nexport interface LoadedAppSkillManifest {\n manifest: AppSkillManifest;\n file: string;\n dir: string;\n}\n\nexport interface ParsedAppSkillArgs {\n command: \"ensure\" | \"launch\" | \"pack\" | \"help\";\n manifest?: string;\n client: string;\n scope: string;\n serverName?: string;\n out?: string;\n into?: string;\n mode: \"hosted\" | \"local\";\n dryRun: boolean;\n skipInstall: boolean;\n noRegister: boolean;\n printJson: boolean;\n yes: boolean;\n}\n\nexport interface EnsureAppSkillOptions {\n mode?: \"hosted\" | \"local\";\n clients?: ClientId[];\n scope?: string;\n serverName?: string;\n baseDir?: string;\n dryRun?: boolean;\n confirm?: boolean;\n yes?: boolean;\n log?: (message: string) => void;\n}\n\nexport interface EnsureAppSkillResult {\n mode: \"hosted\" | \"local\";\n serverName: string;\n mcpUrl: string;\n clients: ClientId[];\n written: { client: ClientId; file: string }[];\n}\n\nexport interface LaunchAppSkillOptions {\n mode?: \"hosted\" | \"local\";\n into?: string;\n dryRun?: boolean;\n skipInstall?: boolean;\n noRegister?: boolean;\n clients?: ClientId[];\n scope?: string;\n serverName?: string;\n baseDir?: string;\n confirm?: boolean;\n yes?: boolean;\n log?: (message: string) => void;\n}\n\nexport interface AppSkillLaunchPlan {\n mode: \"hosted\" | \"local\";\n appId: string;\n appDir?: string;\n sourceDir?: string;\n url: string;\n mcpUrl: string;\n serverName: string;\n commands: {\n install?: string;\n dev?: string;\n start?: string;\n };\n}\n\nconst HELP = `agent-native app-skill\n\nUsage:\n agent-native app-skill ensure [--manifest <file>] [--hosted|--local] [--client all|codex|claude-code|claude-code-cli|cowork] [--scope user|project] [--name <server>] [--yes] [--dry-run] [--json]\n agent-native app-skill launch [--manifest <file>] [--local|--hosted] [--into <path>] [--client <client>] [--scope user|project] [--name <server>] [--no-register] [--skip-install] [--yes] [--dry-run] [--json]\n agent-native app-skill pack [--manifest <file>] --out <dir> [--json]\n\nCommands:\n ensure Register the app skill MCP connector for your local agent clients.\n launch Open the hosted app, or materialize and start a local editable app.\n pack Create marketplace-ready skill, MCP, Codex/Claude plugin, and Vercel skills adapters.\n\nHosted is the default. Use --local when you want editable source, offline work,\nor a privacy-sensitive local app instance.`;\n\nconst APP_SKILL_COMMANDS = new Set([\"ensure\", \"launch\", \"pack\"]);\nconst APP_SKILL_SCOPES = new Set([\"user\", \"project\"]);\nconst SAFE_PACKAGE_EXECUTABLES = new Set([\"pnpm\", \"npm\", \"bun\", \"yarn\"]);\nconst SAFE_ENV_KEYS = [\n \"PATH\",\n \"HOME\",\n \"USER\",\n \"SHELL\",\n \"TMPDIR\",\n \"TEMP\",\n \"TMP\",\n \"TERM\",\n \"CI\",\n \"PNPM_HOME\",\n \"COREPACK_HOME\",\n \"SystemRoot\",\n \"ComSpec\",\n];\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return Boolean(value && typeof value === \"object\" && !Array.isArray(value));\n}\n\nfunction stringValue(value: unknown): string | undefined {\n return typeof value === \"string\" && value.trim() ? value.trim() : undefined;\n}\n\nfunction stringArray(value: unknown): string[] {\n if (!Array.isArray(value)) return [];\n return value.filter((item): item is string => typeof item === \"string\");\n}\n\nfunction normalizeOriginUrl(value: string, field: string): string {\n let url: URL;\n try {\n url = new URL(value);\n } catch {\n throw new Error(`${field} must be a valid URL.`);\n }\n if (url.protocol !== \"https:\" && url.protocol !== \"http:\") {\n throw new Error(`${field} must use http:// or https://.`);\n }\n return `${url.origin}${url.pathname}`.replace(/\\/+$/, \"\");\n}\n\nfunction withMcpPath(baseUrl: string): string {\n return `${baseUrl.replace(/\\/+$/, \"\")}/_agent-native/mcp`;\n}\n\nfunction normalizeSkillVisibility(value: unknown): SkillVisibility {\n if (value === \"internal\" || value === \"exported\" || value === \"both\") {\n return value;\n }\n return \"both\";\n}\n\nfunction normalizeHostAdapter(value: unknown): AppSkillHostAdapter | null {\n if (\n value === \"codex-plugin\" ||\n value === \"claude-marketplace\" ||\n value === \"vercel-skills\" ||\n value === \"plain-skill\" ||\n value === \"claude-skill\" ||\n value === \"chatgpt-mcp\" ||\n value === \"generic-mcp\"\n ) {\n return value;\n }\n return null;\n}\n\nfunction defaultHostAdapters(): AppSkillHostAdapter[] {\n return [\n \"codex-plugin\",\n \"claude-marketplace\",\n \"vercel-skills\",\n \"plain-skill\",\n \"claude-skill\",\n \"chatgpt-mcp\",\n \"generic-mcp\",\n ];\n}\n\nfunction uniqueAdapters(values: AppSkillHostAdapter[]): AppSkillHostAdapter[] {\n const seen = new Set<AppSkillHostAdapter>();\n return values.filter((value) => {\n if (seen.has(value)) return false;\n seen.add(value);\n return true;\n });\n}\n\nexport function normalizeAppSkillManifest(raw: unknown): AppSkillManifest {\n if (!isRecord(raw)) throw new Error(\"App skill manifest must be an object.\");\n const schemaVersion = raw.schemaVersion ?? 1;\n if (schemaVersion !== 1) {\n throw new Error(`Unsupported app skill schemaVersion: ${schemaVersion}`);\n }\n\n const id = stringValue(raw.id);\n if (!id || !/^[a-z0-9][a-z0-9-]{0,62}[a-z0-9]$/.test(id)) {\n throw new Error(\n \"App skill manifest id must be kebab-case and 2-64 characters.\",\n );\n }\n\n const hostedRaw = isRecord(raw.hosted) ? raw.hosted : {};\n const hostedUrl = normalizeOriginUrl(\n stringValue(hostedRaw.url) ?? \"\",\n \"hosted.url\",\n );\n const hostedMcpUrl = normalizeOriginUrl(\n stringValue(hostedRaw.mcpUrl) ?? withMcpPath(hostedUrl),\n \"hosted.mcpUrl\",\n );\n\n const mcpRaw = isRecord(raw.mcp) ? raw.mcp : {};\n const localRaw = isRecord(raw.local) ? raw.local : undefined;\n const commandsRaw = isRecord(localRaw?.commands)\n ? localRaw.commands\n : undefined;\n const surfacesRaw = Array.isArray(raw.surfaces) ? raw.surfaces : [];\n const skillsRaw = Array.isArray(raw.skills) ? raw.skills : [];\n const adaptersRaw = Array.isArray(raw.hostAdapters) ? raw.hostAdapters : [];\n const authRaw = isRecord(raw.auth) ? raw.auth : undefined;\n\n const adapters = uniqueAdapters(\n adaptersRaw\n .map(normalizeHostAdapter)\n .filter((value): value is AppSkillHostAdapter => Boolean(value)),\n );\n\n return {\n schemaVersion: 1,\n id,\n displayName: stringValue(raw.displayName) ?? id,\n description:\n stringValue(raw.description) ??\n `Agent-native app-backed skill for ${id}.`,\n ...(stringValue(raw.version) ? { version: stringValue(raw.version) } : {}),\n hosted: {\n url: hostedUrl,\n mcpUrl: hostedMcpUrl,\n },\n mcp: {\n serverName: stringValue(mcpRaw.serverName) ?? `agent-native-${id}`,\n aliases: stringArray(mcpRaw.aliases),\n },\n ...(localRaw\n ? {\n local: {\n ...(stringValue(localRaw.template)\n ? { template: stringValue(localRaw.template) }\n : {}),\n ...(stringValue(localRaw.sourcePath)\n ? { sourcePath: stringValue(localRaw.sourcePath) }\n : {}),\n ...(stringValue(localRaw.defaultUrl)\n ? {\n defaultUrl: normalizeOriginUrl(\n stringValue(localRaw.defaultUrl)!,\n \"local.defaultUrl\",\n ),\n }\n : {}),\n commands: {\n install: stringValue(commandsRaw?.install) ?? \"pnpm install\",\n dev: stringValue(commandsRaw?.dev) ?? \"pnpm dev\",\n start: stringValue(commandsRaw?.start) ?? \"pnpm start\",\n },\n },\n }\n : {}),\n ...(authRaw\n ? {\n auth: {\n ...(authRaw.mode === \"oauth\" ||\n authRaw.mode === \"device\" ||\n authRaw.mode === \"none\"\n ? { mode: authRaw.mode }\n : {}),\n ...(stringValue(authRaw.setup)\n ? { setup: stringValue(authRaw.setup) }\n : {}),\n },\n }\n : {}),\n surfaces: surfacesRaw.filter(isRecord).map((surface) => ({\n id: stringValue(surface.id) ?? \"app\",\n ...(stringValue(surface.action)\n ? { action: stringValue(surface.action) }\n : {}),\n path: stringValue(surface.path) ?? \"/\",\n mediaTypes: stringArray(surface.mediaTypes),\n ...(stringValue(surface.defaultMediaType)\n ? { defaultMediaType: stringValue(surface.defaultMediaType) }\n : {}),\n })),\n skills: skillsRaw\n .filter(isRecord)\n .map((skill) => ({\n path: stringValue(skill.path) ?? \"\",\n visibility: normalizeSkillVisibility(skill.visibility),\n ...(stringValue(skill.exportAs)\n ? { exportAs: stringValue(skill.exportAs) }\n : {}),\n }))\n .filter((skill) => skill.path),\n hostAdapters: adapters.length ? adapters : defaultHostAdapters(),\n };\n}\n\nexport function findAppSkillManifest(startDir: string = process.cwd()): string {\n let current = path.resolve(startDir);\n while (true) {\n const candidate = path.join(current, \"agent-native.app-skill.json\");\n if (fs.existsSync(candidate)) return candidate;\n const parent = path.dirname(current);\n if (parent === current) break;\n current = parent;\n }\n throw new Error(\n \"Could not find agent-native.app-skill.json. Pass --manifest <file>.\",\n );\n}\n\nexport function loadAppSkillManifest(file?: string): LoadedAppSkillManifest {\n const resolved = path.resolve(file ?? findAppSkillManifest());\n const raw = JSON.parse(fs.readFileSync(resolved, \"utf-8\"));\n return {\n manifest: normalizeAppSkillManifest(raw),\n file: resolved,\n dir: path.dirname(resolved),\n };\n}\n\nexport function exportedSkills(\n manifest: AppSkillManifest,\n): AppSkillManifestSkill[] {\n return manifest.skills.filter(\n (skill) => skill.visibility === \"exported\" || skill.visibility === \"both\",\n );\n}\n\nexport function internalSkills(\n manifest: AppSkillManifest,\n): AppSkillManifestSkill[] {\n return manifest.skills.filter(\n (skill) => skill.visibility === \"internal\" || skill.visibility === \"both\",\n );\n}\n\nexport function parseAppSkillArgs(argv: string[]): ParsedAppSkillArgs {\n const first = argv[0];\n let command: ParsedAppSkillArgs[\"command\"] = \"ensure\";\n let args = argv;\n if (first === \"help\" || first === \"--help\" || first === \"-h\") {\n command = \"help\";\n args = argv.slice(1);\n } else if (APP_SKILL_COMMANDS.has(first ?? \"\")) {\n command = first as ParsedAppSkillArgs[\"command\"];\n args = argv.slice(1);\n } else if (first && !first.startsWith(\"-\") && !looksLikeManifestArg(first)) {\n throw new Error(`Unknown app-skill command: ${first}`);\n }\n const out: ParsedAppSkillArgs = {\n command,\n client: \"all\",\n scope: \"user\",\n mode: \"hosted\",\n dryRun: false,\n skipInstall: false,\n noRegister: false,\n printJson: false,\n yes: false,\n };\n\n for (let i = 0; i < args.length; i++) {\n const arg = args[i];\n const eat = (flag: string): string | undefined => {\n if (arg === flag) {\n const next = args[++i];\n if (!next || next.startsWith(\"-\")) {\n throw new Error(`Missing value for ${flag}.`);\n }\n return next;\n }\n if (arg.startsWith(`${flag}=`)) {\n const value = arg.slice(flag.length + 1);\n if (!value) throw new Error(`Missing value for ${flag}.`);\n return value;\n }\n return undefined;\n };\n let value: string | undefined;\n if ((value = eat(\"--manifest\")) !== undefined) out.manifest = value;\n else if ((value = eat(\"--client\")) !== undefined) out.client = value;\n else if ((value = eat(\"--scope\")) !== undefined) out.scope = value;\n else if ((value = eat(\"--name\")) !== undefined) out.serverName = value;\n else if ((value = eat(\"--server-name\")) !== undefined)\n out.serverName = value;\n else if ((value = eat(\"--out\")) !== undefined) out.out = value;\n else if ((value = eat(\"--into\")) !== undefined) out.into = value;\n else if (arg === \"--local\") out.mode = \"local\";\n else if (arg === \"--hosted\") out.mode = \"hosted\";\n else if (arg === \"--dry-run\") out.dryRun = true;\n else if (arg === \"--skip-install\" || arg === \"--no-install\")\n out.skipInstall = true;\n else if (arg === \"--no-register\") out.noRegister = true;\n else if (arg === \"--json\") out.printJson = true;\n else if (arg === \"--yes\" || arg === \"-y\") out.yes = true;\n else if (arg.startsWith(\"-\")) throw new Error(`Unknown option: ${arg}`);\n else if (!out.manifest) out.manifest = arg;\n else throw new Error(`Unexpected argument: ${arg}`);\n }\n\n if (!APP_SKILL_SCOPES.has(out.scope)) {\n throw new Error(\"--scope must be either user or project.\");\n }\n\n return out;\n}\n\nfunction looksLikeManifestArg(value: string): boolean {\n return (\n value.endsWith(\".json\") ||\n value.includes(\"/\") ||\n value.includes(\"\\\\\") ||\n fs.existsSync(value)\n );\n}\n\nfunction assertPathInside(root: string, target: string, field: string): string {\n const resolvedRoot = path.resolve(root);\n const resolvedTarget = path.resolve(target);\n const relative = path.relative(resolvedRoot, resolvedTarget);\n if (relative && (relative.startsWith(\"..\") || path.isAbsolute(relative))) {\n throw new Error(`${field} must resolve inside ${resolvedRoot}.`);\n }\n return resolvedTarget;\n}\n\nfunction resolveSkillSource(manifestDir: string, skill: AppSkillManifestSkill) {\n if (path.isAbsolute(skill.path)) {\n throw new Error(`Skill path must be relative: ${skill.path}`);\n }\n return assertPathInside(\n manifestDir,\n path.resolve(manifestDir, skill.path),\n `Skill path ${skill.path}`,\n );\n}\n\nfunction skillExportName(skill: AppSkillManifestSkill): string {\n if (skill.exportAs) {\n if (!/^[a-zA-Z0-9][a-zA-Z0-9._-]*$/.test(skill.exportAs)) {\n throw new Error(`Invalid skill export name: ${skill.exportAs}`);\n }\n return skill.exportAs;\n }\n const normalized = skill.path.replace(/\\/+$/, \"\");\n return path.basename(normalized);\n}\n\nfunction copyDirFiltered(source: string, dest: string): void {\n const sourceRoot = path.resolve(source);\n const destRoot = path.resolve(dest);\n const relativeDest = path.relative(sourceRoot, destRoot);\n const outputRootInsideSource =\n relativeDest &&\n !relativeDest.startsWith(\"..\") &&\n !path.isAbsolute(relativeDest)\n ? path.join(sourceRoot, relativeDest.split(path.sep)[0])\n : destRoot;\n fs.cpSync(source, dest, {\n recursive: true,\n filter: (src) => {\n const resolved = path.resolve(src);\n if (\n resolved === outputRootInsideSource ||\n resolved.startsWith(`${outputRootInsideSource}${path.sep}`)\n ) {\n return false;\n }\n const base = path.basename(src);\n const lower = base.toLowerCase();\n return (\n base !== \"node_modules\" &&\n base !== \".git\" &&\n base !== \"dist\" &&\n base !== \".output\" &&\n base !== \".react-router\" &&\n base !== \".netlify\" &&\n base !== \"secrets\" &&\n base !== \"private\" &&\n !base.startsWith(\".env\") &&\n base !== \".dev.vars\" &&\n base !== \".npmrc\" &&\n !lower.endsWith(\".db\") &&\n !lower.endsWith(\".sqlite\") &&\n !lower.endsWith(\".sqlite3\") &&\n !lower.endsWith(\".pem\") &&\n !lower.endsWith(\".key\") &&\n !lower.endsWith(\".crt\") &&\n !lower.endsWith(\".p12\")\n );\n },\n });\n}\n\nfunction copySkill(\n manifestDir: string,\n skill: AppSkillManifestSkill,\n destRoot: string,\n): string {\n const source = resolveSkillSource(manifestDir, skill);\n const exportName = skillExportName(skill);\n const dest = path.join(destRoot, exportName);\n if (!fs.existsSync(source)) {\n throw new Error(`Exported skill source not found: ${source}`);\n }\n fs.mkdirSync(destRoot, { recursive: true });\n const stat = fs.statSync(source);\n if (stat.isDirectory()) {\n copyDirFiltered(source, dest);\n } else {\n fs.mkdirSync(dest, { recursive: true });\n fs.copyFileSync(source, path.join(dest, \"SKILL.md\"));\n }\n rewriteSkillFrontmatterName(path.join(dest, \"SKILL.md\"), exportName);\n return dest;\n}\n\nfunction rewriteSkillFrontmatterName(file: string, name: string): void {\n if (!fs.existsSync(file)) return;\n const source = fs.readFileSync(file, \"utf-8\");\n const lines = source.split(\"\\n\");\n if (lines[0]?.trim() !== \"---\") return;\n const end = lines.findIndex(\n (line, index) => index > 0 && line.trim() === \"---\",\n );\n if (end <= 0) return;\n const nameIndex = lines.findIndex(\n (line, index) => index > 0 && index < end && /^name\\s*:/.test(line),\n );\n if (nameIndex === -1) {\n lines.splice(1, 0, `name: ${name}`);\n } else {\n lines[nameIndex] = `name: ${name}`;\n }\n fs.writeFileSync(file, lines.join(\"\\n\"), \"utf-8\");\n}\n\nfunction writeJson(file: string, value: unknown): void {\n fs.mkdirSync(path.dirname(file), { recursive: true });\n fs.writeFileSync(file, JSON.stringify(value, null, 2) + \"\\n\", \"utf-8\");\n}\n\nfunction mcpServerNames(\n manifest: AppSkillManifest,\n serverName?: string,\n): string[] {\n if (serverName) return [serverName];\n const names = [manifest.mcp.serverName, ...(manifest.mcp.aliases ?? [])];\n return [...new Set(names.filter(Boolean))];\n}\n\nfunction mcpServerConfig(manifest: AppSkillManifest, serverName?: string) {\n const entry = buildHttpMcpEntry(manifest.hosted.mcpUrl);\n return {\n mcpServers: Object.fromEntries(\n mcpServerNames(manifest, serverName).map((name) => [name, entry]),\n ),\n };\n}\n\nfunction pluginName(manifest: AppSkillManifest): string {\n return `agent-native-${manifest.id}`;\n}\n\nfunction claudeMarketplaceName(): string {\n return \"agent-native-apps\";\n}\n\nexport function exportedSkillContentHash(\n manifestDir: string,\n skills: AppSkillManifestSkill[],\n manifest: AppSkillManifest,\n): string {\n const parts = skills\n .map((skill) => {\n const skillDir = path.join(manifestDir, skill.path);\n // Hash SKILL.md plus every sibling file under the skill dir (e.g.\n // references/*), so a progressive-disclosure reference edit still changes\n // the content hash and bumps the Codex plugin version for auto-upgrade.\n const body = collectSkillFiles(skillDir)\n .map(\n (rel) =>\n `${rel}\\n${fs.readFileSync(path.join(skillDir, rel), \"utf-8\")}`,\n )\n .join(\"\\n \\n\");\n return `${skillExportName(skill)}\\n${body}`;\n })\n .sort();\n parts.push(\n `mcp:${mcpServerNames(manifest).join(\",\")}:${manifest.hosted.mcpUrl}`,\n );\n return createHash(\"sha256\")\n .update(parts.join(\"\\n\\u0000\\n\"))\n .digest(\"hex\")\n .slice(0, 12);\n}\n\n/**\n * List a skill dir's files (SKILL.md + any siblings like references/*) as\n * skill-relative POSIX paths, sorted for a stable content hash. A bare SKILL.md\n * source (file, not dir) falls back to just \"SKILL.md\".\n */\nfunction collectSkillFiles(skillDir: string): string[] {\n const out: string[] = [];\n const walk = (dir: string, prefix: string): void => {\n if (!fs.existsSync(dir) || !fs.statSync(dir).isDirectory()) return;\n for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {\n const rel = prefix ? `${prefix}/${entry.name}` : entry.name;\n if (entry.isDirectory()) walk(path.join(dir, entry.name), rel);\n else if (entry.isFile()) out.push(rel);\n }\n };\n walk(skillDir, \"\");\n if (out.length === 0) {\n // Source resolved to a single SKILL.md file rather than a dir, or is empty.\n return [\"SKILL.md\"];\n }\n return out.sort();\n}\n\n/**\n * Plugin version embeds a content hash of the exported skills + MCP server\n * identity/endpoint.\n * Codex keys its plugin cache on the version string, so a changed skill or MCP\n * URL yields a new version and `codex plugin marketplace upgrade` (which runs\n * on startup) delivers the update automatically — no manual semver bump per\n * edit. Claude Code uses commit-SHA versioning instead (plugin.json omits\n * version), so it auto-updates on every push.\n */\nexport function resolvePluginVersion(\n manifest: AppSkillManifest,\n manifestDir: string,\n skills: AppSkillManifestSkill[],\n): string {\n const base = manifest.version ?? \"1.0.0\";\n return `${base}+codex.${exportedSkillContentHash(manifestDir, skills, manifest)}`;\n}\n\nfunction writeCodexPluginAdapter(\n manifest: AppSkillManifest,\n outDir: string,\n version: string,\n): void {\n const name = pluginName(manifest);\n writeJson(path.join(outDir, \".codex-plugin\", \"plugin.json\"), {\n name,\n version,\n description: manifest.description,\n author: {\n name: \"Agent-Native\",\n url: \"https://agent-native.com\",\n },\n homepage: manifest.hosted.url,\n license: \"MIT\",\n keywords: [\n \"agent-native\",\n manifest.id,\n \"mcp\",\n \"skills\",\n \"app-backed-skill\",\n ],\n skills: \"./skills/\",\n mcpServers: \"./.mcp.json\",\n interface: {\n displayName: manifest.displayName,\n shortDescription: manifest.description,\n longDescription:\n `${manifest.displayName} packages agent instructions, app actions, ` +\n \"an MCP connector, and inline UI surfaces as an installable skill.\",\n developerName: \"Agent-Native\",\n category: \"Productivity\",\n capabilities: [\"Interactive\", \"Read\", \"Write\"],\n websiteURL: manifest.hosted.url,\n defaultPrompt: [\n `Open ${manifest.displayName} where useful`,\n `Use ${manifest.displayName} for app-backed workflows`,\n `Search ${manifest.displayName} and return usable context`,\n ],\n brandColor: \"#2563EB\",\n },\n });\n writeJson(path.join(outDir, \".mcp.json\"), mcpServerConfig(manifest));\n}\n\nfunction writeClaudeMarketplaceAdapter(\n manifest: AppSkillManifest,\n manifestDir: string,\n skills: AppSkillManifestSkill[],\n outDir: string,\n): void {\n const adapterDir = path.join(outDir, \"adapters\", \"claude-marketplace\");\n const name = pluginName(manifest);\n const marketplaceName = claudeMarketplaceName();\n const pluginDir = path.join(adapterDir, \"plugins\", name);\n const skillRoot = path.join(pluginDir, \"skills\");\n\n for (const skill of skills) copySkill(manifestDir, skill, skillRoot);\n\n writeJson(path.join(adapterDir, \".claude-plugin\", \"marketplace.json\"), {\n name: marketplaceName,\n description:\n \"Agent-Native app-backed skills that bundle instructions, MCP connectors, and UI surfaces.\",\n owner: {\n name: \"Agent-Native\",\n },\n plugins: [\n {\n name,\n displayName: manifest.displayName,\n description: manifest.description,\n source: `./plugins/${name}`,\n autoUpdate: true,\n homepage: manifest.hosted.url,\n keywords: [\n \"agent-native\",\n manifest.id,\n \"mcp\",\n \"skills\",\n \"app-backed-skill\",\n ],\n },\n ],\n });\n\n writeJson(path.join(pluginDir, \".claude-plugin\", \"plugin.json\"), {\n name,\n displayName: manifest.displayName,\n description: manifest.description,\n author: {\n name: \"Agent-Native\",\n url: \"https://agent-native.com\",\n },\n homepage: manifest.hosted.url,\n repository: \"https://github.com/BuilderIO/agent-native\",\n license: \"MIT\",\n keywords: [\n \"agent-native\",\n manifest.id,\n \"mcp\",\n \"skills\",\n \"app-backed-skill\",\n ],\n skills: \"./skills/\",\n mcpServers: \"./.mcp.json\",\n });\n writeJson(path.join(pluginDir, \".mcp.json\"), mcpServerConfig(manifest));\n fs.writeFileSync(\n path.join(adapterDir, \"README.md\"),\n [\n `# ${manifest.displayName} Claude Code Marketplace`,\n \"\",\n \"Install this local marketplace from Claude Code:\",\n \"\",\n \"```text\",\n `/plugin marketplace add ./dist/${manifest.id}-skill/adapters/claude-marketplace`,\n `/plugin install ${name}@${marketplaceName}`,\n \"/reload-plugins\",\n \"/mcp\",\n \"```\",\n \"\",\n \"Authenticate the MCP connector from `/mcp` after installation. The plugin ships a URL-only MCP config, so no shared secrets are stored in the marketplace package.\",\n \"\",\n \"For a published marketplace repo, point `/plugin marketplace add` at the repository URL instead of the local folder.\",\n \"\",\n ].join(\"\\n\"),\n \"utf-8\",\n );\n}\n\nfunction writeMcpAdapter(\n manifest: AppSkillManifest,\n outDir: string,\n adapter: \"generic-mcp\" | \"chatgpt-mcp\",\n): void {\n const dir = path.join(outDir, \"adapters\", adapter);\n if (adapter === \"generic-mcp\") {\n writeJson(path.join(dir, \"mcp.json\"), mcpServerConfig(manifest));\n return;\n }\n writeJson(path.join(dir, \"connector.json\"), {\n name: manifest.mcp.serverName,\n title: manifest.displayName,\n url: manifest.hosted.mcpUrl,\n auth: manifest.auth?.mode ?? \"oauth\",\n surfaces: manifest.surfaces,\n });\n}\n\nfunction copySkillAdapter(\n manifestDir: string,\n skills: AppSkillManifestSkill[],\n outDir: string,\n adapter: \"plain-skill\" | \"claude-skill\" | \"vercel-skills\",\n): void {\n const skillRoot = path.join(outDir, \"adapters\", adapter, \"skills\");\n for (const skill of skills) copySkill(manifestDir, skill, skillRoot);\n}\n\nfunction writeVercelSkillsAdapter(\n manifest: AppSkillManifest,\n manifestDir: string,\n skills: AppSkillManifestSkill[],\n outDir: string,\n): void {\n const adapterDir = path.join(outDir, \"adapters\", \"vercel-skills\");\n copySkillAdapter(manifestDir, skills, outDir, \"vercel-skills\");\n fs.writeFileSync(\n path.join(adapterDir, \"README.md\"),\n [\n `# ${manifest.displayName} Skills`,\n \"\",\n \"Install instructions only with the Vercel Labs/open skills CLI:\",\n \"\",\n \"```bash\",\n `npx skills@latest add . --skill ${skills.map(skillExportName).join(\" --skill \")} -a codex`,\n \"```\",\n \"\",\n \"Then register the app-backed MCP connector:\",\n \"\",\n \"```bash\",\n `npx @agent-native/core@latest app-skill ensure --manifest agent-native.app-skill.json --yes`,\n \"```\",\n \"\",\n \"The open skills CLI installs instruction files only; it does not run postinstall scripts or register MCP connectors. OAuth or device setup happens in the MCP host; secrets are not stored in skills.\",\n \"\",\n ].join(\"\\n\"),\n \"utf-8\",\n );\n writeJson(path.join(adapterDir, \"agent-native.app-skill.json\"), manifest);\n}\n\nexport interface AppSkillPackResult {\n outDir: string;\n exportedSkillNames: string[];\n files: string[];\n}\n\nexport function buildAppSkillPack(\n loaded: LoadedAppSkillManifest,\n outDir: string,\n): AppSkillPackResult {\n const manifest = loaded.manifest;\n const target = path.resolve(outDir);\n const skills = exportedSkills(manifest);\n if (skills.length === 0) {\n throw new Error(\"Manifest has no exported or both-visibility skills.\");\n }\n const pluginVersion = resolvePluginVersion(manifest, loaded.dir, skills);\n\n fs.mkdirSync(target, { recursive: true });\n const appSource = resolveLocalSourceDir(loaded);\n const packedManifest: AppSkillManifest = appSource\n ? {\n ...manifest,\n local: {\n ...(manifest.local ?? {}),\n sourcePath: \"./app\",\n commands: manifest.local?.commands ?? {\n install: \"pnpm install\",\n dev: \"pnpm dev\",\n start: \"pnpm start\",\n },\n },\n }\n : manifest;\n writeJson(path.join(target, \"agent-native.app-skill.json\"), packedManifest);\n if (appSource) {\n copyDirFiltered(appSource, path.join(target, \"app\"));\n }\n const exportedSkillNames = skills.map(skillExportName);\n for (const skill of skills)\n copySkill(loaded.dir, skill, path.join(target, \"skills\"));\n\n const files: string[] = [\n path.join(target, \"agent-native.app-skill.json\"),\n ...(appSource ? [path.join(target, \"app\")] : []),\n ...exportedSkillNames.map((name) =>\n path.join(target, \"skills\", name, \"SKILL.md\"),\n ),\n ];\n\n if (manifest.hostAdapters.includes(\"codex-plugin\")) {\n writeCodexPluginAdapter(manifest, target, pluginVersion);\n files.push(\n path.join(target, \".codex-plugin\", \"plugin.json\"),\n path.join(target, \".mcp.json\"),\n );\n }\n if (manifest.hostAdapters.includes(\"claude-marketplace\")) {\n writeClaudeMarketplaceAdapter(manifest, loaded.dir, skills, target);\n files.push(\n path.join(\n target,\n \"adapters\",\n \"claude-marketplace\",\n \".claude-plugin\",\n \"marketplace.json\",\n ),\n path.join(\n target,\n \"adapters\",\n \"claude-marketplace\",\n \"plugins\",\n pluginName(manifest),\n \".claude-plugin\",\n \"plugin.json\",\n ),\n path.join(\n target,\n \"adapters\",\n \"claude-marketplace\",\n \"plugins\",\n pluginName(manifest),\n \".mcp.json\",\n ),\n path.join(\n target,\n \"adapters\",\n \"claude-marketplace\",\n \"plugins\",\n pluginName(manifest),\n \"skills\",\n ),\n path.join(target, \"adapters\", \"claude-marketplace\", \"README.md\"),\n );\n }\n if (manifest.hostAdapters.includes(\"vercel-skills\")) {\n writeVercelSkillsAdapter(manifest, loaded.dir, skills, target);\n files.push(\n path.join(target, \"adapters\", \"vercel-skills\", \"skills\"),\n path.join(target, \"adapters\", \"vercel-skills\", \"README.md\"),\n path.join(\n target,\n \"adapters\",\n \"vercel-skills\",\n \"agent-native.app-skill.json\",\n ),\n );\n }\n if (manifest.hostAdapters.includes(\"plain-skill\")) {\n copySkillAdapter(loaded.dir, skills, target, \"plain-skill\");\n files.push(path.join(target, \"adapters\", \"plain-skill\", \"skills\"));\n }\n if (manifest.hostAdapters.includes(\"claude-skill\")) {\n copySkillAdapter(loaded.dir, skills, target, \"claude-skill\");\n files.push(path.join(target, \"adapters\", \"claude-skill\", \"skills\"));\n }\n if (manifest.hostAdapters.includes(\"generic-mcp\")) {\n writeMcpAdapter(manifest, target, \"generic-mcp\");\n files.push(path.join(target, \"adapters\", \"generic-mcp\", \"mcp.json\"));\n }\n if (manifest.hostAdapters.includes(\"chatgpt-mcp\")) {\n writeMcpAdapter(manifest, target, \"chatgpt-mcp\");\n files.push(path.join(target, \"adapters\", \"chatgpt-mcp\", \"connector.json\"));\n }\n\n return { outDir: target, exportedSkillNames, files };\n}\n\nfunction appSkillCacheDir(appId: string): string {\n return path.join(os.homedir(), \".agent-native\", \"app-skills\", appId, \"app\");\n}\n\nfunction resolveLocalSourceDir(\n loaded: LoadedAppSkillManifest,\n): string | undefined {\n const local = loaded.manifest.local;\n if (local?.sourcePath) {\n if (path.isAbsolute(local.sourcePath)) {\n throw new Error(\"local.sourcePath must be relative to the manifest.\");\n }\n const source = assertPathInside(\n loaded.dir,\n path.resolve(loaded.dir, local.sourcePath),\n \"local.sourcePath\",\n );\n if (fs.existsSync(source)) return source;\n throw new Error(\n `local.sourcePath \"${local.sourcePath}\" does not exist. ` +\n \"Run pack from the directory containing the app source.\",\n );\n }\n if (local?.template) {\n if (!/^[a-z0-9][a-z0-9-]*$/i.test(local.template)) {\n throw new Error(\"local.template must be a direct template name.\");\n }\n const repoTemplate = path.resolve(\n process.cwd(),\n \"templates\",\n local.template,\n );\n if (fs.existsSync(repoTemplate)) return repoTemplate;\n }\n return undefined;\n}\n\nexport function resolveLaunchPlan(\n loaded: LoadedAppSkillManifest,\n options: LaunchAppSkillOptions = {},\n): AppSkillLaunchPlan {\n const manifest = loaded.manifest;\n const mode = options.mode ?? \"hosted\";\n const serverName = options.serverName ?? manifest.mcp.serverName;\n if (mode === \"hosted\") {\n return {\n mode,\n appId: manifest.id,\n url: manifest.hosted.url,\n mcpUrl: manifest.hosted.mcpUrl,\n serverName,\n commands: {},\n };\n }\n\n const defaultUrl = manifest.local?.defaultUrl ?? \"http://127.0.0.1:8100\";\n const appDir = path.resolve(options.into ?? appSkillCacheDir(manifest.id));\n return {\n mode,\n appId: manifest.id,\n appDir,\n sourceDir: resolveLocalSourceDir(loaded),\n url: defaultUrl,\n mcpUrl: withMcpPath(defaultUrl),\n serverName,\n commands: manifest.local?.commands ?? {\n install: \"pnpm install\",\n dev: \"pnpm dev\",\n start: \"pnpm start\",\n },\n };\n}\n\nfunction printPlan(plan: AppSkillLaunchPlan, log: (message: string) => void) {\n log(` App: ${plan.appId}`);\n log(` Mode: ${plan.mode}`);\n log(` URL: ${plan.url}`);\n log(` MCP URL: ${plan.mcpUrl}`);\n log(` Server: ${plan.serverName}`);\n if (plan.appDir) log(` App dir: ${plan.appDir}`);\n if (plan.sourceDir) log(` Source: ${plan.sourceDir}`);\n if (plan.commands.install) log(` Install: ${plan.commands.install}`);\n if (plan.commands.dev) log(` Dev: ${plan.commands.dev}`);\n}\n\nfunction safeChildEnv(): NodeJS.ProcessEnv {\n const env: NodeJS.ProcessEnv = {};\n for (const key of SAFE_ENV_KEYS) {\n const value = process.env[key];\n if (value !== undefined) env[key] = value;\n }\n return env;\n}\n\nfunction parsePackageCommand(command: string): {\n executable: string;\n args: string[];\n} {\n const trimmed = command.trim();\n if (!trimmed) throw new Error(\"Command cannot be empty.\");\n if (/[\\n\\r;&|<>`$]/.test(trimmed)) {\n throw new Error(\n `Unsafe shell syntax is not allowed in command: ${command}`,\n );\n }\n const parts = trimmed.split(/\\s+/);\n const executable = parts[0];\n if (!SAFE_PACKAGE_EXECUTABLES.has(executable)) {\n throw new Error(\n `Unsupported app-skill command executable: ${executable}. Use pnpm, npm, bun, or yarn.`,\n );\n }\n return { executable, args: parts.slice(1) };\n}\n\nfunction runShell(command: string, cwd: string): Promise<number> {\n const { executable, args } = parsePackageCommand(command);\n return new Promise((resolve, reject) => {\n const child = spawn(executable, args, {\n cwd,\n env: safeChildEnv(),\n stdio: \"inherit\",\n });\n child.on(\"error\", reject);\n child.on(\"exit\", (code, signal) => {\n if (signal) {\n reject(new Error(`Command \"${command}\" was terminated by ${signal}.`));\n return;\n }\n resolve(code ?? 1);\n });\n });\n}\n\nfunction openUrl(url: string): void {\n const command =\n process.platform === \"darwin\"\n ? \"open\"\n : process.platform === \"win32\"\n ? \"cmd\"\n : \"xdg-open\";\n const args = process.platform === \"win32\" ? [\"/c\", \"start\", \"\", url] : [url];\n const child = spawn(command, args, {\n detached: true,\n stdio: \"ignore\",\n shell: process.platform === \"win32\",\n });\n child.unref();\n}\n\nexport async function ensureAppSkill(\n loaded: LoadedAppSkillManifest,\n options: EnsureAppSkillOptions = {},\n): Promise<EnsureAppSkillResult> {\n const manifest = loaded.manifest;\n const mode = options.mode ?? \"hosted\";\n const clients = options.clients ?? resolveClients(\"all\");\n const serverName = options.serverName ?? manifest.mcp.serverName;\n const scope = options.scope ?? \"user\";\n const plan = resolveLaunchPlan(loaded, { mode, serverName });\n const result: EnsureAppSkillResult = {\n mode,\n serverName,\n mcpUrl: plan.mcpUrl,\n clients,\n written: [],\n };\n\n if (options.dryRun) return result;\n\n if (options.confirm && !options.yes) {\n await confirmMcpRegistration(result, loaded.manifest.displayName, scope);\n }\n\n const baseDir = options.baseDir ?? process.cwd();\n const authMode = manifest.auth?.mode ?? \"oauth\";\n const shouldSkipDeviceHostedConfig = mode === \"hosted\" && authMode !== \"none\";\n const writableClients = shouldSkipDeviceHostedConfig\n ? clients.filter((client) => supportsRemoteMcpOAuth(client))\n : clients;\n const skippedClients = shouldSkipDeviceHostedConfig\n ? clients.filter((client) => !supportsRemoteMcpOAuth(client))\n : [];\n\n result.written = writableClients.length\n ? writeConfigs(\n writableClients,\n serverName,\n plan.mcpUrl,\n undefined,\n scope,\n baseDir,\n )\n : [];\n\n if (skippedClients.length > 0) {\n options.log?.(\n `Skipped URL-only hosted MCP config for ${skippedClients.join(\n \", \",\n )}; run agent-native connect ${manifest.hosted.url} --client ${skippedClients.join(\n \",\",\n )} --scope ${scope} to write bearer auth.`,\n );\n }\n\n if (writableClients.length === 0) {\n return result;\n }\n\n // Aliases are intentionally NOT written as separate entries. Instead,\n // repurpose the alias list as a cleanup list: remove any other entries in\n // the same config files that point at the same URL (covers legacy alias\n // names, old default names like 'agent-native-<slug>', and any stale\n // custom names left from previous installs).\n const allRemovedNames: string[] = [];\n for (const client of writableClients) {\n const removed = removeSameUrlDuplicatesForClient(\n client,\n serverName,\n plan.mcpUrl,\n baseDir,\n scope,\n );\n allRemovedNames.push(...removed);\n }\n\n const uniqueRemoved = [...new Set(allRemovedNames)];\n const logMsg =\n uniqueRemoved.length > 0\n ? `Registered \"${serverName}\" for ${writableClients.join(\", \")} at ${plan.mcpUrl}; removed duplicate entries: ${uniqueRemoved.join(\", \")}`\n : `Registered \"${serverName}\" for ${writableClients.join(\", \")} at ${plan.mcpUrl}`;\n options.log?.(logMsg);\n return result;\n}\n\nasync function confirmMcpRegistration(\n result: EnsureAppSkillResult,\n displayName: string,\n scope: string,\n): Promise<void> {\n if (!process.stdin.isTTY || !process.stdout.isTTY) {\n throw new Error(\n \"Refusing to register MCP servers from a manifest without confirmation. Re-run with --yes to approve.\",\n );\n }\n const readline = await import(\"node:readline/promises\");\n const rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout,\n });\n try {\n const answer = await rl.question(\n [\n `Register ${displayName} MCP server \"${result.serverName}\"?`,\n ` URL: ${result.mcpUrl}`,\n ` Clients: ${result.clients.join(\", \")}`,\n ` Scope: ${scope}`,\n \"Proceed? [y/N] \",\n ].join(\"\\n\"),\n );\n if (!/^(y|yes)$/i.test(answer.trim())) {\n throw new Error(\"Cancelled app-skill MCP registration.\");\n }\n } finally {\n rl.close();\n }\n}\n\nexport async function launchAppSkill(\n loaded: LoadedAppSkillManifest,\n options: LaunchAppSkillOptions = {},\n): Promise<AppSkillLaunchPlan> {\n const log =\n options.log ?? ((message: string) => process.stdout.write(`${message}\\n`));\n const plan = resolveLaunchPlan(loaded, options);\n\n if (options.dryRun) {\n printPlan(plan, log);\n return plan;\n }\n\n if (plan.mode === \"hosted\") {\n log(`Opening ${loaded.manifest.displayName}: ${plan.url}`);\n openUrl(plan.url);\n return plan;\n }\n\n if (!plan.appDir) throw new Error(\"Local launch plan is missing appDir.\");\n if (!fs.existsSync(path.join(plan.appDir, \"package.json\"))) {\n if (!plan.sourceDir) {\n throw new Error(\n \"Local launch needs bundled app source. Pass --into <path> from a manifest with local.sourcePath.\",\n );\n }\n fs.mkdirSync(path.dirname(plan.appDir), { recursive: true });\n copyDirFiltered(plan.sourceDir, plan.appDir);\n log(`Materialized ${loaded.manifest.displayName} at ${plan.appDir}`);\n } else {\n log(`Using existing local app at ${plan.appDir}`);\n }\n\n if (!options.noRegister) {\n await ensureAppSkill(loaded, {\n mode: \"local\",\n clients: options.clients,\n scope: options.scope,\n serverName: options.serverName,\n baseDir: options.baseDir,\n confirm: options.confirm,\n yes: options.yes,\n log,\n });\n }\n\n if (!options.skipInstall && plan.commands.install) {\n const installCode = await runShell(plan.commands.install, plan.appDir);\n if (installCode !== 0) {\n throw new Error(`Install command failed with exit code ${installCode}.`);\n }\n }\n\n if (plan.commands.dev) {\n const code = await runShell(plan.commands.dev, plan.appDir);\n if (code !== 0) throw new Error(`Dev command exited with code ${code}.`);\n }\n\n return plan;\n}\n\nfunction resolveArgsClients(parsed: ParsedAppSkillArgs): ClientId[] {\n return resolveClients(parsed.client);\n}\n\nexport async function runAppSkill(argv: string[]): Promise<void> {\n try {\n const parsed = parseAppSkillArgs(argv);\n if (parsed.command === \"help\") {\n process.stdout.write(`${HELP}\\n`);\n return;\n }\n\n const loaded = loadAppSkillManifest(parsed.manifest);\n const log = (message: string) =>\n (parsed.printJson ? process.stderr : process.stdout).write(\n `${message}\\n`,\n );\n if (parsed.command === \"ensure\") {\n const result = await ensureAppSkill(loaded, {\n mode: parsed.mode,\n clients: resolveArgsClients(parsed),\n scope: parsed.scope,\n serverName: parsed.serverName,\n dryRun: parsed.dryRun,\n confirm: true,\n yes: parsed.yes,\n log,\n });\n if (parsed.printJson) {\n process.stdout.write(`${JSON.stringify(result, null, 2)}\\n`);\n } else if (parsed.dryRun) {\n process.stdout.write(\n `Would register ${result.serverName} at ${result.mcpUrl} for ${result.clients.join(\", \")}\\n`,\n );\n }\n return;\n }\n\n if (parsed.command === \"launch\") {\n const plan = await launchAppSkill(loaded, {\n mode: parsed.mode,\n into: parsed.into,\n dryRun: parsed.dryRun,\n skipInstall: parsed.skipInstall,\n noRegister: parsed.noRegister,\n clients: resolveArgsClients(parsed),\n scope: parsed.scope,\n serverName: parsed.serverName,\n confirm: true,\n yes: parsed.yes,\n log,\n });\n if (parsed.printJson) {\n process.stdout.write(`${JSON.stringify(plan, null, 2)}\\n`);\n }\n return;\n }\n\n if (parsed.command === \"pack\") {\n if (!parsed.out) {\n throw new Error(\"Missing --out <dir> for app-skill pack.\");\n }\n const result = buildAppSkillPack(loaded, parsed.out);\n if (parsed.printJson) {\n process.stdout.write(`${JSON.stringify(result, null, 2)}\\n`);\n } else {\n process.stdout.write(\n `Packed ${loaded.manifest.displayName} app skill at ${result.outDir}\\n`,\n );\n }\n }\n } catch (err: any) {\n process.stderr.write(`${err?.message ?? err}\\n`);\n process.exitCode = 1;\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"code-agent-executor.d.ts","sourceRoot":"","sources":["../../src/cli/code-agent-executor.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EACV,WAAW,EAEX,aAAa,EAEd,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAIL,KAAK,cAAc,EACpB,MAAM,8BAA8B,CAAC;AAMtC,OAAO,EAEL,KAAK,qBAAqB,EAC3B,MAAM,sCAAsC,CAAC;AAS9C,OAAO,EAIL,KAAK,uBAAuB,EAC7B,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"code-agent-executor.d.ts","sourceRoot":"","sources":["../../src/cli/code-agent-executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,7 +11,7 @@ import { formatPromptWithAttachments, } from "../code-agents/prompt-attachments.
|
|
|
11
11
|
import { createCodingToolRegistry, isReadOnlyShellCommand, runCodingCommand, truncateBashOutput, truncateCodingOutput, } from "../coding-tools/index.js";
|
|
12
12
|
import { buildMergedConfig, McpClientManager, mcpToolsToActionEntries, } from "../mcp-client/index.js";
|
|
13
13
|
import { readAgentsBundleFromFs, generateDevelopmentSkillsPromptBlock, } from "../server/agents-bundle.js";
|
|
14
|
-
import { runWithRequestContext } from "../server/request-context.js";
|
|
14
|
+
import { getAmbientOrgId, getAmbientUserEmail, runWithRequestContext, } from "../server/request-context.js";
|
|
15
15
|
import { isReasoningEffort, } from "../shared/reasoning-effort.js";
|
|
16
16
|
import { createCodeAgentOutputSmoother } from "./code-agent-output-smoother.js";
|
|
17
17
|
import { addCodeAgentCommandToAllowlist, appendCodeAgentTranscriptEvent, dequeueCodeAgentFollowUp, getCodeAgentRunRecord, isCodeAgentCommandAllowed, listCodeAgentTranscriptEvents, updateCodeAgentRunRecord, } from "./code-agent-runs.js";
|
|
@@ -926,8 +926,8 @@ async function startCodeAgentMcpManager(runId) {
|
|
|
926
926
|
function runWithOptionalCodeAgentRequestContext(run, fn) {
|
|
927
927
|
const userEmail = metadataString(run, "ownerEmail") ??
|
|
928
928
|
metadataString(run, "userEmail") ??
|
|
929
|
-
|
|
930
|
-
const orgId = metadataString(run, "orgId") ??
|
|
929
|
+
getAmbientUserEmail();
|
|
930
|
+
const orgId = metadataString(run, "orgId") ?? getAmbientOrgId();
|
|
931
931
|
if (!userEmail && !orgId)
|
|
932
932
|
return fn();
|
|
933
933
|
return runWithRequestContext({ userEmail, orgId }, fn);
|