@agent-native/core 0.149.1 → 0.149.3
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 +1 -1
- package/corpus/templates/analytics/.agents/skills/actions/SKILL.md +54 -488
- package/corpus/templates/analytics/.agents/skills/actions/references/action-fields.md +136 -0
- package/corpus/templates/analytics/.agents/skills/actions/references/examples.md +94 -0
- package/corpus/templates/analytics/.agents/skills/actions/references/provider-apis.md +95 -0
- package/corpus/templates/analytics/.agents/skills/create-skill/SKILL.md +9 -35
- package/corpus/templates/analytics/.agents/skills/creative-context/SKILL.md +4 -2
- package/corpus/templates/analytics/.agents/skills/dashboard-management/SKILL.md +2 -0
- package/corpus/templates/analytics/.agents/skills/frontend-design/SKILL.md +4 -5
- package/corpus/templates/analytics/.agents/skills/turn-into-app/SKILL.md +18 -31
- package/corpus/templates/analytics/AGENTS.md +25 -32
- package/corpus/templates/analytics/app/components/dashboard/SqlChart.tsx +150 -46
- package/corpus/templates/analytics/app/global.css +1 -1
- package/corpus/templates/analytics/app/i18n-data.ts +37 -0
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/PanelEditorDialog.tsx +1 -1
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/SqlChartCard.tsx +32 -0
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/types.ts +2 -0
- package/corpus/templates/analytics/changelog/2026-08-10-dashboard-tables-can-be-copied-and-sorted-by-multiple-column.md +6 -0
- package/corpus/templates/analytics/changelog/2026-08-10-full-page-chat-now-uses-the-available-width-up-to-1000px-for.md +6 -0
- package/corpus/templates/analytics/changelog/2026-08-11-full-page-chat-composers-stay-at-a-focused-750px-width.md +6 -0
- package/corpus/templates/assets/.agents/skills/actions/SKILL.md +54 -488
- package/corpus/templates/assets/.agents/skills/actions/references/action-fields.md +136 -0
- package/corpus/templates/assets/.agents/skills/actions/references/examples.md +94 -0
- package/corpus/templates/assets/.agents/skills/actions/references/provider-apis.md +95 -0
- package/corpus/templates/assets/.agents/skills/create-skill/SKILL.md +9 -35
- package/corpus/templates/assets/.agents/skills/creative-context/SKILL.md +4 -2
- package/corpus/templates/assets/.agents/skills/frontend-design/SKILL.md +4 -5
- package/corpus/templates/assets/.agents/skills/turn-into-app/SKILL.md +18 -31
- package/corpus/templates/assets/AGENTS.md +6 -9
- package/corpus/templates/assets/app/global.css +1 -1
- package/corpus/templates/assets/changelog/2026-08-10-full-page-chat-now-uses-the-available-width-up-to-1000px-for.md +6 -0
- package/corpus/templates/assets/changelog/2026-08-11-full-page-chat-composers-stay-at-a-focused-750px-width.md +6 -0
- package/corpus/templates/brain/.agents/skills/actions/SKILL.md +54 -488
- package/corpus/templates/brain/.agents/skills/actions/references/action-fields.md +136 -0
- package/corpus/templates/brain/.agents/skills/actions/references/examples.md +94 -0
- package/corpus/templates/brain/.agents/skills/actions/references/provider-apis.md +95 -0
- package/corpus/templates/brain/.agents/skills/create-skill/SKILL.md +9 -35
- package/corpus/templates/brain/.agents/skills/frontend-design/SKILL.md +4 -5
- package/corpus/templates/brain/.agents/skills/turn-into-app/SKILL.md +18 -31
- package/corpus/templates/brain/AGENTS.md +5 -12
- package/corpus/templates/brain/app/global.css +1 -1
- package/corpus/templates/brain/changelog/2026-08-10-full-page-chat-now-uses-the-available-width-up-to-1000px-for.md +6 -0
- package/corpus/templates/brain/changelog/2026-08-11-full-page-chat-composers-stay-at-a-focused-750px-width.md +6 -0
- package/corpus/templates/calendar/.agents/skills/actions/SKILL.md +54 -488
- package/corpus/templates/calendar/.agents/skills/actions/references/action-fields.md +136 -0
- package/corpus/templates/calendar/.agents/skills/actions/references/examples.md +94 -0
- package/corpus/templates/calendar/.agents/skills/actions/references/provider-apis.md +95 -0
- package/corpus/templates/calendar/.agents/skills/create-skill/SKILL.md +9 -35
- package/corpus/templates/calendar/.agents/skills/frontend-design/SKILL.md +4 -5
- package/corpus/templates/calendar/.agents/skills/turn-into-app/SKILL.md +18 -31
- package/corpus/templates/calendar/AGENTS.md +8 -9
- package/corpus/templates/chat/.agents/skills/actions/SKILL.md +54 -488
- package/corpus/templates/chat/.agents/skills/actions/references/action-fields.md +136 -0
- package/corpus/templates/chat/.agents/skills/actions/references/examples.md +94 -0
- package/corpus/templates/chat/.agents/skills/actions/references/provider-apis.md +95 -0
- package/corpus/templates/chat/.agents/skills/create-skill/SKILL.md +9 -35
- package/corpus/templates/chat/.agents/skills/frontend-design/SKILL.md +4 -5
- package/corpus/templates/chat/.agents/skills/turn-into-app/SKILL.md +18 -31
- package/corpus/templates/chat/AGENTS.md +32 -80
- package/corpus/templates/chat/changelog/2026-08-10-full-page-chat-now-uses-the-available-width-up-to-1000px-for.md +6 -0
- package/corpus/templates/clips/.agents/skills/actions/SKILL.md +54 -488
- package/corpus/templates/clips/.agents/skills/actions/references/action-fields.md +136 -0
- package/corpus/templates/clips/.agents/skills/actions/references/examples.md +94 -0
- package/corpus/templates/clips/.agents/skills/actions/references/provider-apis.md +95 -0
- package/corpus/templates/clips/.agents/skills/create-skill/SKILL.md +9 -35
- package/corpus/templates/clips/.agents/skills/frontend-design/SKILL.md +4 -5
- package/corpus/templates/clips/.agents/skills/turn-into-app/SKILL.md +18 -31
- package/corpus/templates/clips/AGENTS.md +25 -31
- package/corpus/templates/clips/changelog/2026-08-10-clips-desktop-sign-in-now-starts-with-magic-links-and-google.md +6 -0
- package/corpus/templates/clips/chrome-extension/src/overlay.css +1 -0
- package/corpus/templates/clips/desktop/src/app.tsx +274 -137
- package/corpus/templates/clips/desktop/src/styles.css +35 -0
- package/corpus/templates/content/.agents/skills/actions/SKILL.md +54 -488
- package/corpus/templates/content/.agents/skills/actions/references/action-fields.md +136 -0
- package/corpus/templates/content/.agents/skills/actions/references/examples.md +94 -0
- package/corpus/templates/content/.agents/skills/actions/references/provider-apis.md +95 -0
- package/corpus/templates/content/.agents/skills/create-skill/SKILL.md +9 -35
- package/corpus/templates/content/.agents/skills/creative-context/SKILL.md +4 -2
- package/corpus/templates/content/.agents/skills/frontend-design/SKILL.md +4 -5
- package/corpus/templates/content/.agents/skills/turn-into-app/SKILL.md +18 -31
- package/corpus/templates/content/AGENTS.md +5 -9
- package/corpus/templates/content/app/global.css +1 -0
- package/corpus/templates/crm/.agents/skills/turn-into-app/SKILL.md +18 -31
- package/corpus/templates/crm/AGENTS.md +7 -11
- package/corpus/templates/crm/app/global.css +1 -1
- package/corpus/templates/crm/changelog/2026-08-10-full-page-chat-now-uses-the-available-width-up-to-1000px-for.md +6 -0
- package/corpus/templates/crm/changelog/2026-08-11-full-page-chat-composers-stay-at-a-focused-750px-width.md +6 -0
- package/corpus/templates/design/.agents/skills/actions/SKILL.md +54 -488
- package/corpus/templates/design/.agents/skills/actions/references/action-fields.md +136 -0
- package/corpus/templates/design/.agents/skills/actions/references/examples.md +94 -0
- package/corpus/templates/design/.agents/skills/actions/references/provider-apis.md +95 -0
- package/corpus/templates/design/.agents/skills/create-skill/SKILL.md +9 -35
- package/corpus/templates/design/.agents/skills/creative-context/SKILL.md +4 -2
- package/corpus/templates/design/.agents/skills/frontend-design/SKILL.md +4 -5
- package/corpus/templates/design/.agents/skills/turn-into-app/SKILL.md +18 -31
- package/corpus/templates/design/.generated/bridge/editor-chrome.generated.ts +70 -3
- package/corpus/templates/design/AGENTS.md +13 -21
- package/corpus/templates/design/app/components/design/DesignCanvas.tsx +12 -0
- package/corpus/templates/design/app/components/design/LayersPanel.tsx +19 -2
- package/corpus/templates/design/app/components/design/MultiScreenCanvas.tsx +115 -7
- package/corpus/templates/design/app/components/design/bridge/editor-chrome.bridge.ts +82 -7
- package/corpus/templates/design/app/components/design/design-trace.ts +120 -0
- package/corpus/templates/design/app/components/design/dnd-debug.ts +2 -1
- package/corpus/templates/design/app/components/design/edit-panel/position-layout-properties.tsx +40 -26
- package/corpus/templates/design/app/components/design/multi-screen/board-surface-html.ts +4 -1
- package/corpus/templates/design/app/components/design/multi-screen/frame-geometry.ts +12 -3
- package/corpus/templates/design/app/components/design/multi-screen/screen-content-cache.ts +4 -0
- package/corpus/templates/design/app/components/design/multi-screen/types.ts +7 -0
- package/corpus/templates/design/app/components/editor/PromptDialog.tsx +3 -2
- package/corpus/templates/design/app/components/layout/Sidebar.tsx +2 -2
- package/corpus/templates/design/app/hooks/useDesignHotkeys.ts +3 -0
- package/corpus/templates/design/app/i18n-data.ts +1 -0
- package/corpus/templates/design/app/pages/DesignSystemSetup.tsx +5 -5
- package/corpus/templates/design/app/pages/DesignSystems.tsx +3 -2
- package/corpus/templates/design/app/pages/design-editor/canvas-primitive-insert.ts +100 -13
- package/corpus/templates/design/app/pages/design-editor/cross-screen-text-color.ts +1 -1
- package/corpus/templates/design/app/pages/design-editor/data-operations.ts +14 -0
- package/corpus/templates/design/changelog/2026-08-10-marquee-selecting-layers-far-down-a-tall-screen-now-selects-.md +6 -0
- package/corpus/templates/design/changelog/2026-08-10-the-frame-tool-draws-a-plain-frame-by-default-with-screen-av.md +6 -0
- package/corpus/templates/design/e2e/global-setup.ts +27 -32
- package/corpus/templates/design/playwright.config.ts +3 -5
- package/corpus/templates/design/shared/breakpoint-media.ts +9 -2
- package/corpus/templates/dispatch/.agents/skills/actions/SKILL.md +54 -488
- package/corpus/templates/dispatch/.agents/skills/actions/references/action-fields.md +136 -0
- package/corpus/templates/dispatch/.agents/skills/actions/references/examples.md +94 -0
- package/corpus/templates/dispatch/.agents/skills/actions/references/provider-apis.md +95 -0
- package/corpus/templates/dispatch/.agents/skills/create-skill/SKILL.md +9 -35
- package/corpus/templates/dispatch/.agents/skills/frontend-design/SKILL.md +4 -5
- package/corpus/templates/dispatch/.agents/skills/turn-into-app/SKILL.md +18 -31
- package/corpus/templates/dispatch/AGENTS.md +9 -16
- package/corpus/templates/dispatch/changelog/2026-08-10-full-page-chat-now-uses-the-available-width-up-to-1000px-for.md +6 -0
- package/corpus/templates/factory/.agents/skills/actions/SKILL.md +54 -488
- package/corpus/templates/factory/.agents/skills/actions/references/action-fields.md +136 -0
- package/corpus/templates/factory/.agents/skills/actions/references/examples.md +94 -0
- package/corpus/templates/factory/.agents/skills/actions/references/provider-apis.md +95 -0
- package/corpus/templates/factory/.agents/skills/create-skill/SKILL.md +9 -35
- package/corpus/templates/factory/.agents/skills/frontend-design/SKILL.md +4 -5
- package/corpus/templates/factory/.agents/skills/turn-into-app/SKILL.md +18 -31
- package/corpus/templates/factory/AGENTS.md +10 -24
- package/corpus/templates/factory/changelog/2026-08-10-full-page-chat-now-uses-the-available-width-up-to-1000px-for.md +6 -0
- package/corpus/templates/forms/.agents/skills/actions/SKILL.md +54 -488
- package/corpus/templates/forms/.agents/skills/actions/references/action-fields.md +136 -0
- package/corpus/templates/forms/.agents/skills/actions/references/examples.md +94 -0
- package/corpus/templates/forms/.agents/skills/actions/references/provider-apis.md +95 -0
- package/corpus/templates/forms/.agents/skills/create-skill/SKILL.md +9 -35
- package/corpus/templates/forms/.agents/skills/frontend-design/SKILL.md +4 -5
- package/corpus/templates/forms/.agents/skills/turn-into-app/SKILL.md +18 -31
- package/corpus/templates/forms/AGENTS.md +11 -17
- package/corpus/templates/forms/app/global.css +1 -0
- package/corpus/templates/forms/changelog/2026-08-10-full-page-chat-now-uses-the-available-width-up-to-1000px-for.md +6 -0
- package/corpus/templates/forms/changelog/2026-08-11-full-page-chat-composers-stay-at-a-focused-750px-width.md +6 -0
- package/corpus/templates/macros/.agents/skills/frontend-design/SKILL.md +4 -5
- package/corpus/templates/macros/.agents/skills/turn-into-app/SKILL.md +18 -31
- package/corpus/templates/macros/AGENTS.md +8 -8
- package/corpus/templates/mail/.agents/skills/actions/SKILL.md +54 -488
- package/corpus/templates/mail/.agents/skills/actions/references/action-fields.md +136 -0
- package/corpus/templates/mail/.agents/skills/actions/references/examples.md +94 -0
- package/corpus/templates/mail/.agents/skills/actions/references/provider-apis.md +95 -0
- package/corpus/templates/mail/.agents/skills/create-skill/SKILL.md +9 -35
- package/corpus/templates/mail/.agents/skills/frontend-design/SKILL.md +4 -5
- package/corpus/templates/mail/.agents/skills/turn-into-app/SKILL.md +18 -31
- package/corpus/templates/mail/AGENTS.md +5 -6
- package/corpus/templates/plan/.agents/skills/actions/SKILL.md +54 -488
- package/corpus/templates/plan/.agents/skills/actions/references/action-fields.md +136 -0
- package/corpus/templates/plan/.agents/skills/actions/references/examples.md +94 -0
- package/corpus/templates/plan/.agents/skills/actions/references/provider-apis.md +95 -0
- package/corpus/templates/plan/.agents/skills/create-skill/SKILL.md +9 -35
- package/corpus/templates/plan/.agents/skills/frontend-design/SKILL.md +4 -5
- package/corpus/templates/plan/.agents/skills/turn-into-app/SKILL.md +18 -31
- package/corpus/templates/plan/AGENTS.md +5 -14
- package/corpus/templates/plan/app/global.css +1 -0
- package/corpus/templates/plan/changelog/2026-08-10-full-page-chat-now-uses-the-available-width-up-to-1000px-for.md +6 -0
- package/corpus/templates/plan/changelog/2026-08-11-plan-no-longer-reloads-when-runtime-state-changes.md +6 -0
- package/corpus/templates/plan/server/ui-plan-html.ts +4 -1
- package/corpus/templates/plan/vite.config.ts +5 -0
- package/corpus/templates/slides/.agents/skills/actions/SKILL.md +54 -488
- package/corpus/templates/slides/.agents/skills/actions/references/action-fields.md +136 -0
- package/corpus/templates/slides/.agents/skills/actions/references/examples.md +94 -0
- package/corpus/templates/slides/.agents/skills/actions/references/provider-apis.md +95 -0
- package/corpus/templates/slides/.agents/skills/create-deck/SKILL.md +2 -2
- package/corpus/templates/slides/.agents/skills/create-skill/SKILL.md +9 -35
- package/corpus/templates/slides/.agents/skills/creative-context/SKILL.md +6 -3
- package/corpus/templates/slides/.agents/skills/deck-management/SKILL.md +6 -1
- package/corpus/templates/slides/.agents/skills/frontend-design/SKILL.md +4 -5
- package/corpus/templates/slides/.agents/skills/image-generation-via-a2a/SKILL.md +3 -2
- package/corpus/templates/slides/.agents/skills/slide-editing/SKILL.md +3 -0
- package/corpus/templates/slides/.agents/skills/slide-images/SKILL.md +3 -3
- package/corpus/templates/slides/.agents/skills/turn-into-app/SKILL.md +18 -31
- package/corpus/templates/slides/AGENTS.md +33 -35
- package/corpus/templates/slides/actions/add-deck.ts +2 -0
- package/corpus/templates/slides/actions/add-slide.ts +15 -1
- package/corpus/templates/slides/actions/create-deck.ts +18 -6
- package/corpus/templates/slides/actions/get-deck-reference-context.ts +2 -2
- package/corpus/templates/slides/actions/get-deck.ts +83 -7
- package/corpus/templates/slides/actions/import-file.ts +2 -1
- package/corpus/templates/slides/actions/patch-deck.ts +165 -9
- package/corpus/templates/slides/actions/save-deck.ts +24 -1
- package/corpus/templates/slides/actions/update-slide.ts +1 -1
- package/corpus/templates/slides/app/components/comments/SlideCommentsPanel.tsx +2 -2
- package/corpus/templates/slides/app/components/deck/DeckCard.tsx +1 -23
- package/corpus/templates/slides/app/components/design-system/DesignSystemCard.tsx +2 -2
- package/corpus/templates/slides/app/components/design-system/DesignSystemSetup.tsx +6 -6
- package/corpus/templates/slides/app/components/editor/AnimationsPanel.tsx +3 -3
- package/corpus/templates/slides/app/components/editor/DeckEditorSkeleton.tsx +4 -4
- package/corpus/templates/slides/app/components/editor/EditorSidebar.tsx +1 -1
- package/corpus/templates/slides/app/components/editor/EditorToolbar.tsx +432 -668
- package/corpus/templates/slides/app/components/editor/ExportMenu.tsx +296 -259
- package/corpus/templates/slides/app/components/editor/GeneratingSlidePreview.tsx +1 -1
- package/corpus/templates/slides/app/components/editor/GoogleDriveConnectionCta.tsx +13 -1
- package/corpus/templates/slides/app/components/editor/NewDeckReferenceStep.tsx +56 -174
- package/corpus/templates/slides/app/components/editor/PromptDialog.tsx +241 -116
- package/corpus/templates/slides/app/components/editor/SlideContextToolbar.tsx +1 -1
- package/corpus/templates/slides/app/components/editor/SlideEditor.tsx +42 -14
- package/corpus/templates/slides/app/components/editor/SpeakerNotesPanel.tsx +6 -12
- package/corpus/templates/slides/app/components/editor/editor-command-model.ts +35 -0
- package/corpus/templates/slides/app/components/layout/AgentWorkIndicator.tsx +1 -1
- package/corpus/templates/slides/app/components/layout/Layout.tsx +34 -35
- package/corpus/templates/slides/app/components/layout/Sidebar.tsx +8 -10
- package/corpus/templates/slides/app/components/layout/layout-route-policy.ts +2 -5
- package/corpus/templates/slides/app/components/onboarding/FirstDeckOnboardingFlow.tsx +45 -40
- package/corpus/templates/slides/app/components/presentation/PresentationView.tsx +63 -16
- package/corpus/templates/slides/app/context/DeckContext.tsx +2 -1
- package/corpus/templates/slides/app/global.css +76 -1
- package/corpus/templates/slides/app/hooks/use-generating-slide-preview.ts +25 -3
- package/corpus/templates/slides/app/i18n/en-US.ts +2 -0
- package/corpus/templates/slides/app/lib/create-deck-generation.ts +52 -23
- package/corpus/templates/slides/app/lib/recent-references.ts +23 -1
- package/corpus/templates/slides/app/lib/slide-animation-elements.ts +104 -3
- package/corpus/templates/slides/app/pages/DeckEditor.tsx +17 -33
- package/corpus/templates/slides/app/pages/DesignSystems.tsx +2 -2
- package/corpus/templates/slides/app/pages/Index.tsx +315 -151
- package/corpus/templates/slides/app/root.tsx +43 -0
- package/corpus/templates/slides/changelog/2026-08-10-ai-editing-avatar-badge.md +6 -0
- package/corpus/templates/slides/changelog/2026-08-10-generated-decks-keep-a-clear-human-readable-title.md +6 -0
- package/corpus/templates/slides/changelog/2026-08-10-new-deck-creation-now-shows-progress-opens-the-editor-direct.md +6 -0
- package/corpus/templates/slides/changelog/2026-08-10-presentation-reveals-now-follow-valid-targets.md +6 -0
- package/corpus/templates/slides/changelog/2026-08-10-slides-editing-controls-are-consolidated-into-one-focused-me.md +6 -0
- package/corpus/templates/slides/changelog/2026-08-10-slides-now-verify-and-restyle-every-imported-slide-in-one-pa.md +6 -0
- package/corpus/templates/slides/changelog/2026-08-10-slides-only-suggests-a-google-connection-for-relevant-reques.md +6 -0
- package/corpus/templates/slides/changelog/2026-08-10-the-google-slides-import-option-is-now-labeled-slides.md +6 -0
- package/corpus/templates/slides/changelog/2026-08-11-faster-slides-chat-deck-reads.md +6 -0
- package/corpus/templates/slides/changelog/2026-08-11-slides-chat-can-read-one-slide-without-loading-the-full-deck.md +6 -0
- package/corpus/templates/slides/changelog/2026-08-11-slides-clearly-indicate-when-an-ai-agent-is-editing-alongsid.md +6 -0
- package/corpus/templates/slides/package.json +1 -0
- package/corpus/templates/slides/server/lib/chat-attachments.ts +1 -1
- package/corpus/templates/slides/server/lib/validate-slide-animations.ts +163 -0
- package/corpus/templates/slides/server/plugins/agent-chat.ts +8 -5
- package/corpus/templates/slides/shared/api.ts +47 -15
- package/corpus/templates/slides/shared/deck-title.ts +135 -0
- package/corpus/templates/tasks/.agents/skills/actions/SKILL.md +54 -488
- package/corpus/templates/tasks/.agents/skills/actions/references/action-fields.md +136 -0
- package/corpus/templates/tasks/.agents/skills/actions/references/examples.md +94 -0
- package/corpus/templates/tasks/.agents/skills/actions/references/provider-apis.md +95 -0
- package/corpus/templates/tasks/.agents/skills/agent-watchdog/SKILL.md +1 -0
- package/corpus/templates/tasks/.agents/skills/create-skill/SKILL.md +9 -35
- package/corpus/templates/tasks/.agents/skills/efficient-fable/SKILL.md +1 -0
- package/corpus/templates/tasks/.agents/skills/efficient-frontier/SKILL.md +1 -0
- package/corpus/templates/tasks/.agents/skills/frontend-design/SKILL.md +4 -5
- package/corpus/templates/tasks/.agents/skills/plan-arbiter/SKILL.md +1 -0
- package/corpus/templates/tasks/.agents/skills/plow-ahead/SKILL.md +1 -0
- package/corpus/templates/tasks/.agents/skills/quick-recap/SKILL.md +1 -0
- package/corpus/templates/tasks/.agents/skills/read-the-damn-docs/SKILL.md +1 -0
- package/corpus/templates/tasks/.agents/skills/stay-within-limits/SKILL.md +1 -0
- package/corpus/templates/tasks/.agents/skills/turn-into-app/SKILL.md +18 -31
- package/corpus/templates/tasks/AGENTS.md +5 -20
- package/corpus/templates/tasks/app/components/tasks/TaskListRow.tsx +4 -1
- package/dist/agent/engine/ai-sdk-engine.js +1 -1
- package/dist/agent/production-agent.d.ts +21 -1
- package/dist/agent/production-agent.js +505 -355
- package/dist/agent/run-manager.js +156 -14
- package/dist/agent/run-store.d.ts +11 -10
- package/dist/agent/run-store.js +17 -13
- package/dist/agent/tool-approval-store.d.ts +18 -0
- package/dist/agent/tool-approval-store.js +122 -0
- package/dist/agent/types.d.ts +1 -1
- package/dist/cli/code-agent-executor.js +11 -2
- package/dist/client/AgentPanel.js +31 -6
- package/dist/client/AssistantChat.d.ts +9 -4
- package/dist/client/AssistantChat.js +221 -149
- package/dist/client/active-run-state.d.ts +9 -1
- package/dist/client/active-run-state.js +34 -3
- package/dist/client/agent-chat/index.d.ts +1 -1
- package/dist/client/agent-chat-adapter.d.ts +8 -0
- package/dist/client/agent-chat-adapter.js +125 -28
- package/dist/client/agent-chat.d.ts +1 -1
- package/dist/client/chat/markdown-renderer.js +14 -2
- package/dist/client/chat/message-components.d.ts +13 -3
- package/dist/client/chat/message-components.js +57 -52
- package/dist/client/chat/run-recovery.d.ts +1 -0
- package/dist/client/chat/run-recovery.js +8 -0
- package/dist/client/chat/tool-call-display.d.ts +5 -5
- package/dist/client/chat/tool-call-display.js +9 -212
- package/dist/client/chat-first/apps-rail.js +3 -3
- package/dist/client/chat-first/browser-pane.js +4 -1
- package/dist/client/chat-first/chat-history.d.ts +3 -1
- package/dist/client/chat-first/chat-history.js +7 -4
- package/dist/client/chat-first/surface-tabs.d.ts +1 -1
- package/dist/client/chat-first/surface-tabs.js +52 -41
- package/dist/client/chat-first/types.d.ts +3 -0
- package/dist/client/chat-first.d.ts +10 -0
- package/dist/client/chat-first.js +37 -2
- package/dist/client/components/ui/message-scroller.js +4 -1
- package/dist/client/i18n.js +3 -1
- package/dist/client/resources/McpConnectionSuggestion.js +9 -1
- package/dist/client/sse-event-processor.d.ts +4 -2
- package/dist/client/sse-event-processor.js +46 -6
- package/dist/client/use-chat-models.js +156 -80
- package/dist/client/use-run-stuck-detection.d.ts +2 -0
- package/dist/client/use-run-stuck-detection.js +85 -9
- package/dist/collab/awareness.d.ts +2 -2
- package/dist/collab/routes.d.ts +1 -1
- package/dist/collab/struct-routes.d.ts +1 -1
- package/dist/integrations/adapters/slack.d.ts +0 -4
- package/dist/integrations/adapters/slack.js +6 -30
- package/dist/integrations/catalog.js +1 -1
- package/dist/integrations/pending-tasks-store.d.ts +0 -8
- package/dist/integrations/pending-tasks-store.js +0 -21
- package/dist/integrations/slack-manifest.d.ts +2 -2
- package/dist/integrations/slack-manifest.js +0 -3
- package/dist/integrations/webhook-handler.js +1 -1
- package/dist/mcp/screen-memory-stdio.d.ts +7 -7
- package/dist/observability/routes.d.ts +3 -3
- package/dist/provider-api/actions/custom-provider-registration.d.ts +4 -4
- package/dist/provider-api/actions/provider-api.d.ts +8 -8
- package/dist/scripts/docs/source-search.js +2 -2
- package/dist/server/agent-chat/framework-prompts.js +7 -2
- package/dist/server/agent-chat/prompt-resources.js +2 -2
- package/dist/server/agent-chat/skill-frontmatter.d.ts +31 -2
- package/dist/server/agent-chat/skill-frontmatter.js +41 -15
- package/dist/server/agent-chat-plugin.js +3 -3
- package/dist/server/agent-engine-api-key-route.d.ts +1 -1
- package/dist/server/agents-bundle.d.ts +16 -19
- package/dist/server/agents-bundle.js +19 -35
- package/dist/server/auth.js +262 -31
- package/dist/server/better-auth-instance.d.ts +1 -0
- package/dist/server/better-auth-instance.js +17 -2
- package/dist/server/onboarding-html.js +56 -9
- package/dist/server/prompts/framework-core-compact.d.ts +6 -1
- package/dist/server/prompts/framework-core-compact.js +12 -9
- package/dist/server/prompts/framework-core.d.ts +6 -1
- package/dist/server/prompts/framework-core.js +11 -9
- package/dist/server/prompts/index.d.ts +1 -1
- package/dist/server/prompts/index.js +1 -1
- package/dist/server/prompts/shared-rules.d.ts +15 -11
- package/dist/server/prompts/shared-rules.js +17 -13
- package/dist/server/realtime-token.d.ts +1 -1
- package/dist/server/transcribe-voice.d.ts +1 -1
- package/dist/shared/reasoning-effort.d.ts +8 -8
- package/dist/shared/reasoning-effort.js +10 -10
- package/dist/shared/streaming-text-smoothing.js +41 -11
- package/dist/styles/agent-native.css +19 -32
- package/dist/templates/chat/.agents/skills/actions/SKILL.md +54 -488
- package/dist/templates/chat/.agents/skills/actions/references/action-fields.md +136 -0
- package/dist/templates/chat/.agents/skills/actions/references/examples.md +94 -0
- package/dist/templates/chat/.agents/skills/actions/references/provider-apis.md +95 -0
- package/dist/templates/chat/.agents/skills/create-skill/SKILL.md +9 -35
- package/dist/templates/chat/.agents/skills/frontend-design/SKILL.md +4 -5
- package/dist/templates/chat/.agents/skills/turn-into-app/SKILL.md +18 -31
- package/dist/templates/chat/AGENTS.md +32 -80
- package/dist/templates/chat/changelog/2026-08-10-full-page-chat-now-uses-the-available-width-up-to-1000px-for.md +6 -0
- package/dist/templates/default/.agents/skills/actions/SKILL.md +54 -488
- package/dist/templates/default/.agents/skills/actions/references/action-fields.md +136 -0
- package/dist/templates/default/.agents/skills/actions/references/examples.md +94 -0
- package/dist/templates/default/.agents/skills/actions/references/provider-apis.md +95 -0
- package/dist/templates/default/.agents/skills/create-skill/SKILL.md +9 -35
- package/dist/templates/default/.agents/skills/frontend-design/SKILL.md +4 -5
- package/dist/templates/default/.agents/skills/turn-into-app/SKILL.md +18 -31
- package/dist/templates/headless/.agents/skills/actions/SKILL.md +54 -488
- package/dist/templates/headless/.agents/skills/actions/references/action-fields.md +136 -0
- package/dist/templates/headless/.agents/skills/actions/references/examples.md +94 -0
- package/dist/templates/headless/.agents/skills/actions/references/provider-apis.md +95 -0
- package/dist/templates/headless/.agents/skills/turn-into-app/SKILL.md +18 -31
- package/dist/templates/workspace-core/.agents/skills/actions/SKILL.md +54 -488
- package/dist/templates/workspace-core/.agents/skills/actions/references/action-fields.md +136 -0
- package/dist/templates/workspace-core/.agents/skills/actions/references/examples.md +94 -0
- package/dist/templates/workspace-core/.agents/skills/actions/references/provider-apis.md +95 -0
- package/dist/templates/workspace-core/.agents/skills/adding-workspace-apps/SKILL.md +1 -0
- package/dist/templates/workspace-core/.agents/skills/agent-page/SKILL.md +1 -0
- package/dist/templates/workspace-core/.agents/skills/create-skill/SKILL.md +9 -35
- package/dist/templates/workspace-core/.agents/skills/frontend-design/SKILL.md +4 -5
- package/dist/templates/workspace-core/.agents/skills/recurring-jobs/SKILL.md +21 -29
- package/dist/templates/workspace-core/.agents/skills/turn-into-app/SKILL.md +18 -31
- package/dist/templates/workspace-core/.agents/skills/workspace-conventions/SKILL.md +7 -17
- package/dist/templates/workspace-core/.agents/skills/writing-agent-instructions/SKILL.md +3 -3
- package/dist/templates/workspace-core/AGENTS.md +7 -16
- package/docs/content/messaging.mdx +6 -7
- package/docs/content/template-chat.mdx +1 -1
- package/package.json +2 -2
- package/src/templates/chat/.agents/skills/actions/SKILL.md +54 -488
- package/src/templates/chat/.agents/skills/actions/references/action-fields.md +136 -0
- package/src/templates/chat/.agents/skills/actions/references/examples.md +94 -0
- package/src/templates/chat/.agents/skills/actions/references/provider-apis.md +95 -0
- package/src/templates/chat/.agents/skills/create-skill/SKILL.md +9 -35
- package/src/templates/chat/.agents/skills/frontend-design/SKILL.md +4 -5
- package/src/templates/chat/.agents/skills/turn-into-app/SKILL.md +18 -31
- package/src/templates/chat/AGENTS.md +32 -80
- package/src/templates/chat/changelog/2026-08-10-full-page-chat-now-uses-the-available-width-up-to-1000px-for.md +6 -0
- package/src/templates/default/.agents/skills/actions/SKILL.md +54 -488
- package/src/templates/default/.agents/skills/actions/references/action-fields.md +136 -0
- package/src/templates/default/.agents/skills/actions/references/examples.md +94 -0
- package/src/templates/default/.agents/skills/actions/references/provider-apis.md +95 -0
- package/src/templates/default/.agents/skills/create-skill/SKILL.md +9 -35
- package/src/templates/default/.agents/skills/frontend-design/SKILL.md +4 -5
- package/src/templates/default/.agents/skills/turn-into-app/SKILL.md +18 -31
- package/src/templates/headless/.agents/skills/actions/SKILL.md +54 -488
- package/src/templates/headless/.agents/skills/actions/references/action-fields.md +136 -0
- package/src/templates/headless/.agents/skills/actions/references/examples.md +94 -0
- package/src/templates/headless/.agents/skills/actions/references/provider-apis.md +95 -0
- package/src/templates/headless/.agents/skills/turn-into-app/SKILL.md +18 -31
- package/src/templates/workspace-core/.agents/skills/actions/SKILL.md +54 -488
- package/src/templates/workspace-core/.agents/skills/actions/references/action-fields.md +136 -0
- package/src/templates/workspace-core/.agents/skills/actions/references/examples.md +94 -0
- package/src/templates/workspace-core/.agents/skills/actions/references/provider-apis.md +95 -0
- package/src/templates/workspace-core/.agents/skills/adding-workspace-apps/SKILL.md +1 -0
- package/src/templates/workspace-core/.agents/skills/agent-page/SKILL.md +1 -0
- package/src/templates/workspace-core/.agents/skills/create-skill/SKILL.md +9 -35
- package/src/templates/workspace-core/.agents/skills/frontend-design/SKILL.md +4 -5
- package/src/templates/workspace-core/.agents/skills/recurring-jobs/SKILL.md +21 -29
- package/src/templates/workspace-core/.agents/skills/turn-into-app/SKILL.md +18 -31
- package/src/templates/workspace-core/.agents/skills/workspace-conventions/SKILL.md +7 -17
- package/src/templates/workspace-core/.agents/skills/writing-agent-instructions/SKILL.md +3 -3
- package/src/templates/workspace-core/AGENTS.md +7 -16
|
@@ -110,27 +110,6 @@ async function ensureDispatchColumns(client) {
|
|
|
110
110
|
}
|
|
111
111
|
}
|
|
112
112
|
}
|
|
113
|
-
/**
|
|
114
|
-
* Whether a provider thread currently has queued or executing work.
|
|
115
|
-
*
|
|
116
|
-
* Messaging adapters use this to accept unmentioned replies only while an
|
|
117
|
-
* agent task is active. This prevents broad message subscriptions from turning
|
|
118
|
-
* every channel message into an agent invocation.
|
|
119
|
-
*/
|
|
120
|
-
export async function hasActivePendingTask(platform, externalThreadId) {
|
|
121
|
-
await ensureTable();
|
|
122
|
-
const client = getDbExec();
|
|
123
|
-
const { rows } = await client.execute({
|
|
124
|
-
sql: `SELECT 1 AS active
|
|
125
|
-
FROM integration_pending_tasks
|
|
126
|
-
WHERE platform = ?
|
|
127
|
-
AND external_thread_id = ?
|
|
128
|
-
AND status IN ('pending', 'processing')
|
|
129
|
-
LIMIT 1`,
|
|
130
|
-
args: [platform, externalThreadId],
|
|
131
|
-
});
|
|
132
|
-
return rows.length > 0;
|
|
133
|
-
}
|
|
134
113
|
function rowToTask(row) {
|
|
135
114
|
return {
|
|
136
115
|
id: row.id,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const SLACK_AGENT_BOT_EVENTS: readonly ["app_home_opened", "app_context_changed", "app_mention", "message.
|
|
1
|
+
export declare const SLACK_AGENT_BOT_EVENTS: readonly ["app_home_opened", "app_context_changed", "app_mention", "message.im"];
|
|
2
2
|
export interface SlackAgentManifestUrls {
|
|
3
3
|
oauthRedirectUrl: string;
|
|
4
4
|
eventsRequestUrl: string;
|
|
@@ -52,7 +52,7 @@ export declare function buildSlackAgentManifest(urls: SlackAgentManifestUrls): {
|
|
|
52
52
|
readonly settings: {
|
|
53
53
|
readonly event_subscriptions: {
|
|
54
54
|
readonly request_url: string;
|
|
55
|
-
readonly bot_events: readonly ["app_home_opened", "app_context_changed", "app_mention", "message.
|
|
55
|
+
readonly bot_events: readonly ["app_home_opened", "app_context_changed", "app_mention", "message.im"];
|
|
56
56
|
};
|
|
57
57
|
readonly interactivity: {
|
|
58
58
|
readonly is_enabled: true;
|
|
@@ -928,7 +928,7 @@ async function processIncomingMessage(incoming, options, opts = {}) {
|
|
|
928
928
|
// leave a user-facing Slack reply empty.
|
|
929
929
|
maxOutputTokens: resolveMainChatMaxOutputTokens(resolvedModel),
|
|
930
930
|
// Explicitly resolve the normal chat default so an empty-final
|
|
931
|
-
// retry can step its
|
|
931
|
+
// retry can step its effort down rather than
|
|
932
932
|
// repeatedly letting the engine choose Medium.
|
|
933
933
|
reasoningEffort: normalizeReasoningEffortForRequest(resolvedModel, undefined),
|
|
934
934
|
}, undefined, {
|
|
@@ -137,13 +137,13 @@ export declare function screenMemoryMcpToolDefinitions(): ({
|
|
|
137
137
|
inputSchema: {
|
|
138
138
|
type: string;
|
|
139
139
|
properties: {
|
|
140
|
+
count?: undefined;
|
|
140
141
|
query?: undefined;
|
|
141
142
|
minutes?: undefined;
|
|
142
143
|
limit?: undefined;
|
|
143
144
|
clientHint?: undefined;
|
|
144
145
|
timestamp?: undefined;
|
|
145
146
|
chapterId?: undefined;
|
|
146
|
-
count?: undefined;
|
|
147
147
|
startAt?: undefined;
|
|
148
148
|
endAt?: undefined;
|
|
149
149
|
reason?: undefined;
|
|
@@ -159,6 +159,7 @@ export declare function screenMemoryMcpToolDefinitions(): ({
|
|
|
159
159
|
inputSchema: {
|
|
160
160
|
type: string;
|
|
161
161
|
properties: {
|
|
162
|
+
count?: undefined;
|
|
162
163
|
query: {
|
|
163
164
|
type: string;
|
|
164
165
|
description: string;
|
|
@@ -174,7 +175,6 @@ export declare function screenMemoryMcpToolDefinitions(): ({
|
|
|
174
175
|
clientHint?: undefined;
|
|
175
176
|
timestamp?: undefined;
|
|
176
177
|
chapterId?: undefined;
|
|
177
|
-
count?: undefined;
|
|
178
178
|
startAt?: undefined;
|
|
179
179
|
endAt?: undefined;
|
|
180
180
|
reason?: undefined;
|
|
@@ -190,6 +190,7 @@ export declare function screenMemoryMcpToolDefinitions(): ({
|
|
|
190
190
|
inputSchema: {
|
|
191
191
|
type: string;
|
|
192
192
|
properties: {
|
|
193
|
+
count?: undefined;
|
|
193
194
|
minutes: {
|
|
194
195
|
type: string;
|
|
195
196
|
description: string;
|
|
@@ -199,7 +200,6 @@ export declare function screenMemoryMcpToolDefinitions(): ({
|
|
|
199
200
|
clientHint?: undefined;
|
|
200
201
|
timestamp?: undefined;
|
|
201
202
|
chapterId?: undefined;
|
|
202
|
-
count?: undefined;
|
|
203
203
|
startAt?: undefined;
|
|
204
204
|
endAt?: undefined;
|
|
205
205
|
reason?: undefined;
|
|
@@ -216,6 +216,7 @@ export declare function screenMemoryMcpToolDefinitions(): ({
|
|
|
216
216
|
type: string;
|
|
217
217
|
required: string[];
|
|
218
218
|
properties: {
|
|
219
|
+
count?: undefined;
|
|
219
220
|
query: {
|
|
220
221
|
type: string;
|
|
221
222
|
description: string;
|
|
@@ -234,7 +235,6 @@ export declare function screenMemoryMcpToolDefinitions(): ({
|
|
|
234
235
|
};
|
|
235
236
|
timestamp?: undefined;
|
|
236
237
|
chapterId?: undefined;
|
|
237
|
-
count?: undefined;
|
|
238
238
|
startAt?: undefined;
|
|
239
239
|
endAt?: undefined;
|
|
240
240
|
reason?: undefined;
|
|
@@ -250,6 +250,7 @@ export declare function screenMemoryMcpToolDefinitions(): ({
|
|
|
250
250
|
type: string;
|
|
251
251
|
required: string[];
|
|
252
252
|
properties: {
|
|
253
|
+
count?: undefined;
|
|
253
254
|
query?: undefined;
|
|
254
255
|
minutes?: undefined;
|
|
255
256
|
limit?: undefined;
|
|
@@ -263,7 +264,6 @@ export declare function screenMemoryMcpToolDefinitions(): ({
|
|
|
263
264
|
description: string;
|
|
264
265
|
};
|
|
265
266
|
chapterId?: undefined;
|
|
266
|
-
count?: undefined;
|
|
267
267
|
startAt?: undefined;
|
|
268
268
|
endAt?: undefined;
|
|
269
269
|
includeMicrophone?: undefined;
|
|
@@ -314,13 +314,13 @@ export declare function screenMemoryMcpToolDefinitions(): ({
|
|
|
314
314
|
type: string;
|
|
315
315
|
required: string[];
|
|
316
316
|
properties: {
|
|
317
|
+
count?: undefined;
|
|
317
318
|
query?: undefined;
|
|
318
319
|
minutes?: undefined;
|
|
319
320
|
limit?: undefined;
|
|
320
321
|
clientHint?: undefined;
|
|
321
322
|
timestamp?: undefined;
|
|
322
323
|
chapterId?: undefined;
|
|
323
|
-
count?: undefined;
|
|
324
324
|
startAt: {
|
|
325
325
|
type: string;
|
|
326
326
|
description: string;
|
|
@@ -349,13 +349,13 @@ export declare function screenMemoryMcpToolDefinitions(): ({
|
|
|
349
349
|
type: string;
|
|
350
350
|
required: string[];
|
|
351
351
|
properties: {
|
|
352
|
+
count?: undefined;
|
|
352
353
|
query?: undefined;
|
|
353
354
|
minutes?: undefined;
|
|
354
355
|
limit?: undefined;
|
|
355
356
|
clientHint?: undefined;
|
|
356
357
|
timestamp?: undefined;
|
|
357
358
|
chapterId?: undefined;
|
|
358
|
-
count?: undefined;
|
|
359
359
|
startAt?: undefined;
|
|
360
360
|
endAt?: undefined;
|
|
361
361
|
reason?: undefined;
|
|
@@ -41,16 +41,16 @@ export declare function createObservabilityHandler(): import("h3").EventHandlerW
|
|
|
41
41
|
thumbsUpRate: number;
|
|
42
42
|
avgEvalScore: number;
|
|
43
43
|
} | {
|
|
44
|
+
error?: undefined;
|
|
44
45
|
summary: import("./types.js").TraceSummary;
|
|
45
46
|
spans: import("./types.js").TraceSpan[];
|
|
46
47
|
id?: undefined;
|
|
47
|
-
error?: undefined;
|
|
48
48
|
ok?: undefined;
|
|
49
49
|
} | {
|
|
50
|
+
error?: undefined;
|
|
50
51
|
summary?: undefined;
|
|
51
52
|
spans?: undefined;
|
|
52
53
|
id: string;
|
|
53
|
-
error?: undefined;
|
|
54
54
|
ok?: undefined;
|
|
55
55
|
} | {
|
|
56
56
|
summary?: undefined;
|
|
@@ -59,9 +59,9 @@ export declare function createObservabilityHandler(): import("h3").EventHandlerW
|
|
|
59
59
|
error: any;
|
|
60
60
|
ok?: undefined;
|
|
61
61
|
} | {
|
|
62
|
+
error?: undefined;
|
|
62
63
|
summary?: undefined;
|
|
63
64
|
spans?: undefined;
|
|
64
65
|
id?: undefined;
|
|
65
|
-
error?: undefined;
|
|
66
66
|
ok: boolean;
|
|
67
67
|
}>>;
|
|
@@ -76,8 +76,8 @@ export declare function createCustomProviderRegistrationAction<TSchema extends Z
|
|
|
76
76
|
}>>;
|
|
77
77
|
}, z.core.$strip>>, {
|
|
78
78
|
id?: undefined;
|
|
79
|
-
provider?: undefined;
|
|
80
79
|
deleted?: undefined;
|
|
80
|
+
provider?: undefined;
|
|
81
81
|
providers: {
|
|
82
82
|
id: string;
|
|
83
83
|
label: string;
|
|
@@ -93,9 +93,9 @@ export declare function createCustomProviderRegistrationAction<TSchema extends Z
|
|
|
93
93
|
label?: undefined;
|
|
94
94
|
message?: undefined;
|
|
95
95
|
} | {
|
|
96
|
-
count?: undefined;
|
|
97
96
|
id?: undefined;
|
|
98
97
|
deleted?: undefined;
|
|
98
|
+
count?: undefined;
|
|
99
99
|
providers?: undefined;
|
|
100
100
|
found: boolean;
|
|
101
101
|
provider: import("../custom-registry.js").CustomProviderConfig;
|
|
@@ -103,9 +103,9 @@ export declare function createCustomProviderRegistrationAction<TSchema extends Z
|
|
|
103
103
|
label?: undefined;
|
|
104
104
|
message?: undefined;
|
|
105
105
|
} | {
|
|
106
|
+
deleted?: undefined;
|
|
106
107
|
count?: undefined;
|
|
107
108
|
provider?: undefined;
|
|
108
|
-
deleted?: undefined;
|
|
109
109
|
providers?: undefined;
|
|
110
110
|
found: boolean;
|
|
111
111
|
id: string;
|
|
@@ -123,9 +123,9 @@ export declare function createCustomProviderRegistrationAction<TSchema extends Z
|
|
|
123
123
|
label?: undefined;
|
|
124
124
|
message?: undefined;
|
|
125
125
|
} | {
|
|
126
|
+
deleted?: undefined;
|
|
126
127
|
count?: undefined;
|
|
127
128
|
provider?: undefined;
|
|
128
|
-
deleted?: undefined;
|
|
129
129
|
providers?: undefined;
|
|
130
130
|
found?: undefined;
|
|
131
131
|
registered: boolean;
|
|
@@ -311,8 +311,9 @@ export declare function createProviderApiActions(runtime: Pick<ProviderApiRuntim
|
|
|
311
311
|
notes?: string | undefined;
|
|
312
312
|
scope?: "org" | "user" | undefined;
|
|
313
313
|
}, {
|
|
314
|
-
|
|
314
|
+
message?: undefined;
|
|
315
315
|
id?: undefined;
|
|
316
|
+
deleted?: undefined;
|
|
316
317
|
providers: {
|
|
317
318
|
id: string;
|
|
318
319
|
label: string;
|
|
@@ -327,28 +328,28 @@ export declare function createProviderApiActions(runtime: Pick<ProviderApiRuntim
|
|
|
327
328
|
found?: undefined;
|
|
328
329
|
registered?: undefined;
|
|
329
330
|
label?: undefined;
|
|
330
|
-
message?: undefined;
|
|
331
331
|
} | {
|
|
332
|
-
|
|
332
|
+
message?: undefined;
|
|
333
333
|
count?: undefined;
|
|
334
334
|
id?: undefined;
|
|
335
|
+
deleted?: undefined;
|
|
335
336
|
providers?: undefined;
|
|
336
337
|
found: boolean;
|
|
337
338
|
provider: import("../custom-registry.js").CustomProviderConfig;
|
|
338
339
|
registered?: undefined;
|
|
339
340
|
label?: undefined;
|
|
340
|
-
message?: undefined;
|
|
341
341
|
} | {
|
|
342
|
-
|
|
342
|
+
message?: undefined;
|
|
343
343
|
count?: undefined;
|
|
344
|
+
deleted?: undefined;
|
|
344
345
|
providers?: undefined;
|
|
345
346
|
provider?: undefined;
|
|
346
347
|
found: boolean;
|
|
347
348
|
id: string;
|
|
348
349
|
registered?: undefined;
|
|
349
350
|
label?: undefined;
|
|
350
|
-
message?: undefined;
|
|
351
351
|
} | {
|
|
352
|
+
message?: undefined;
|
|
352
353
|
count?: undefined;
|
|
353
354
|
providers?: undefined;
|
|
354
355
|
provider?: undefined;
|
|
@@ -357,10 +358,9 @@ export declare function createProviderApiActions(runtime: Pick<ProviderApiRuntim
|
|
|
357
358
|
id: string;
|
|
358
359
|
registered?: undefined;
|
|
359
360
|
label?: undefined;
|
|
360
|
-
message?: undefined;
|
|
361
361
|
} | {
|
|
362
|
-
deleted?: undefined;
|
|
363
362
|
count?: undefined;
|
|
363
|
+
deleted?: undefined;
|
|
364
364
|
providers?: undefined;
|
|
365
365
|
provider?: undefined;
|
|
366
366
|
found?: undefined;
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
import fs from "node:fs";
|
|
16
16
|
import path from "node:path";
|
|
17
17
|
import { fileURLToPath } from "node:url";
|
|
18
|
-
import { parseSkillFrontmatter } from "../../server/agents-bundle.js";
|
|
18
|
+
import { isRuntimeVisibleScope, parseSkillFrontmatter, } from "../../server/agents-bundle.js";
|
|
19
19
|
import { isValidPath, parseArgs } from "../utils.js";
|
|
20
20
|
const MAX_FILE_BYTES = 1_000_000;
|
|
21
21
|
const MAX_READ_CHARS = 40_000;
|
|
@@ -155,7 +155,7 @@ function isRuntimeVisibleCorpusPath(corpusRoot, absolutePath) {
|
|
|
155
155
|
return true;
|
|
156
156
|
try {
|
|
157
157
|
const raw = fs.readFileSync(skillEntryPath, "utf-8");
|
|
158
|
-
return parseSkillFrontmatter(raw).scope
|
|
158
|
+
return isRuntimeVisibleScope(parseSkillFrontmatter(raw).scope);
|
|
159
159
|
}
|
|
160
160
|
catch {
|
|
161
161
|
return true;
|
|
@@ -22,6 +22,11 @@ import { lazyFs } from "./lazy-fs.js";
|
|
|
22
22
|
export function buildFrameworkPrompts(examples, options) {
|
|
23
23
|
const FRAMEWORK_CORE = buildFrameworkCore(examples, options);
|
|
24
24
|
const FRAMEWORK_CORE_COMPACT = buildFrameworkCoreCompact(examples, options);
|
|
25
|
+
// Dev agents edit source directly, so their copy of the core drops the
|
|
26
|
+
// production-only "hand code changes to Builder" sentence.
|
|
27
|
+
const devCoreOptions = { ...options, canEditSource: true };
|
|
28
|
+
const DEV_FRAMEWORK_CORE = buildFrameworkCore(examples, devCoreOptions);
|
|
29
|
+
const DEV_FRAMEWORK_CORE_COMPACT = buildFrameworkCoreCompact(examples, devCoreOptions);
|
|
25
30
|
const extensionToolsEnabled = options?.extensionTools === true;
|
|
26
31
|
const planModeArtifactList = extensionToolsEnabled
|
|
27
32
|
? "source-code handoffs and app-created artifacts such as extensions, widgets, dashboards, calculators, mini-apps, documents, designs, slides, or videos"
|
|
@@ -107,7 +112,7 @@ When editing code, follow the agent-native architecture:
|
|
|
107
112
|
- All SQL must be dialect-agnostic (works on SQLite and Postgres)
|
|
108
113
|
- No Node.js-specific APIs in server routes (must work on Cloudflare Workers, etc.)
|
|
109
114
|
- Use shadcn/ui components and Tabler Icons for all UI work
|
|
110
|
-
${
|
|
115
|
+
${DEV_FRAMEWORK_CORE}`;
|
|
111
116
|
const PROD_FRAMEWORK_PROMPT_COMPACT = `## Agent-Native Framework — Production Mode
|
|
112
117
|
|
|
113
118
|
You are an AI agent in an agent-native application, running in **production mode**.
|
|
@@ -141,7 +146,7 @@ When editing code, follow the agent-native architecture:
|
|
|
141
146
|
- All SQL must be dialect-agnostic (works on SQLite and Postgres)
|
|
142
147
|
- No Node.js-specific APIs in server routes (must work on Cloudflare Workers, etc.)
|
|
143
148
|
- Use shadcn/ui components and Tabler Icons for all UI work
|
|
144
|
-
${
|
|
149
|
+
${DEV_FRAMEWORK_CORE_COMPACT}`;
|
|
145
150
|
return {
|
|
146
151
|
FRAMEWORK_CORE,
|
|
147
152
|
FRAMEWORK_CORE_COMPACT,
|
|
@@ -3,7 +3,7 @@ import { getFrontmatterValue, getSkillNameFromPath, parseFrontmatter, } from "..
|
|
|
3
3
|
import { ensurePersonalDefaults, organizationIdFromResourceOwner, resourceGet, resourceGetByPath, resourceList, resourceListAccessible, SHARED_OWNER, sharedResourceOwner, WORKSPACE_OWNER, } from "../../resources/store.js";
|
|
4
4
|
import { discoverAgents } from "../agent-discovery.js";
|
|
5
5
|
import { getRequestOrgId } from "../request-context.js";
|
|
6
|
-
import { parseSkillFrontmatter } from "./skill-frontmatter.js";
|
|
6
|
+
import { isRuntimeVisibleScope, parseSkillFrontmatter, } from "./skill-frontmatter.js";
|
|
7
7
|
// ---------------------------------------------------------------------------
|
|
8
8
|
// System-prompt resource loading: AGENTS.md, instructions/*.md, skills
|
|
9
9
|
// summaries, and the shared/workspace resource index. Assembled by
|
|
@@ -523,7 +523,7 @@ async function loadResourceSkillsPromptBlock(owner, orgId) {
|
|
|
523
523
|
const meta = parseSkillFrontmatter(full.content);
|
|
524
524
|
if (meta.userInvocable === false)
|
|
525
525
|
continue;
|
|
526
|
-
if (meta.scope
|
|
526
|
+
if (!isRuntimeVisibleScope(meta.scope))
|
|
527
527
|
continue;
|
|
528
528
|
const name = meta.name || getSkillNameFromPath(resource.path);
|
|
529
529
|
if (!name || seen.has(name))
|
|
@@ -1,6 +1,35 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Where a skill is meant to be used:
|
|
3
|
+
* - `runtime` — only the in-app agent at runtime.
|
|
4
|
+
* - `dev` — only the human's development/coding agent (e.g. Claude Code).
|
|
5
|
+
* Hidden from the runtime agent everywhere.
|
|
6
|
+
* - `both` — loaded everywhere. The default when `scope` is absent.
|
|
7
|
+
* - `invalid` — never written by hand: the parse result for a `scope:` nobody
|
|
8
|
+
* recognizes. See `normalizeSkillScope`.
|
|
9
|
+
*/
|
|
10
|
+
export type SkillScope = "runtime" | "dev" | "both" | "invalid";
|
|
11
|
+
export declare const DEFAULT_SKILL_SCOPE: SkillScope;
|
|
12
|
+
/**
|
|
13
|
+
* An unrecognized `scope:` can neither throw nor fall back to `both`.
|
|
14
|
+
* Throwing would be swallowed: every caller parses inside a `catch` that skips
|
|
15
|
+
* the skill (`readSkillsDir`) or falls back to a permissive default, so at
|
|
16
|
+
* production cold start the skill would vanish with no log — the same
|
|
17
|
+
* invisible failure pointed the other way. Falling back to `both` ships a
|
|
18
|
+
* dev-only skill's body to the deployed agent, which is the bug this sentinel
|
|
19
|
+
* exists to prevent. So `invalid` stays distinguishable from an absent scope,
|
|
20
|
+
* is loud once per file+value, and is excluded from the runtime agent's view
|
|
21
|
+
* while the development agent still sees the skill and the mistake.
|
|
22
|
+
*/
|
|
23
|
+
export declare function normalizeSkillScope(raw: string | undefined, sourceLabel?: string): SkillScope;
|
|
24
|
+
/**
|
|
25
|
+
* The one runtime-visibility gate. A skill whose scope could not be read is
|
|
26
|
+
* withheld alongside `dev`, so a typo fails closed instead of leaking the body
|
|
27
|
+
* into the deployed agent's prompt and docs-search.
|
|
28
|
+
*/
|
|
29
|
+
export declare function isRuntimeVisibleScope(scope: SkillScope | undefined): boolean;
|
|
30
|
+
export declare function parseSkillFrontmatter(content: string, sourceLabel?: string): {
|
|
2
31
|
name?: string;
|
|
3
32
|
description?: string;
|
|
4
33
|
userInvocable?: boolean;
|
|
5
|
-
scope?:
|
|
34
|
+
scope?: SkillScope;
|
|
6
35
|
};
|
|
@@ -1,25 +1,51 @@
|
|
|
1
1
|
import { getFrontmatterValue, parseFrontmatter, } from "../../resources/metadata.js";
|
|
2
|
-
export
|
|
2
|
+
export const DEFAULT_SKILL_SCOPE = "both";
|
|
3
|
+
const warnedBadScopes = new Set();
|
|
4
|
+
/**
|
|
5
|
+
* An unrecognized `scope:` can neither throw nor fall back to `both`.
|
|
6
|
+
* Throwing would be swallowed: every caller parses inside a `catch` that skips
|
|
7
|
+
* the skill (`readSkillsDir`) or falls back to a permissive default, so at
|
|
8
|
+
* production cold start the skill would vanish with no log — the same
|
|
9
|
+
* invisible failure pointed the other way. Falling back to `both` ships a
|
|
10
|
+
* dev-only skill's body to the deployed agent, which is the bug this sentinel
|
|
11
|
+
* exists to prevent. So `invalid` stays distinguishable from an absent scope,
|
|
12
|
+
* is loud once per file+value, and is excluded from the runtime agent's view
|
|
13
|
+
* while the development agent still sees the skill and the mistake.
|
|
14
|
+
*/
|
|
15
|
+
export function normalizeSkillScope(raw, sourceLabel) {
|
|
16
|
+
if (!raw?.trim())
|
|
17
|
+
return DEFAULT_SKILL_SCOPE;
|
|
18
|
+
const value = raw.trim().toLowerCase();
|
|
19
|
+
if (value === "runtime" || value === "dev" || value === "both")
|
|
20
|
+
return value;
|
|
21
|
+
const warnKey = `${sourceLabel ?? ""}\u0000${value}`;
|
|
22
|
+
if (!warnedBadScopes.has(warnKey)) {
|
|
23
|
+
warnedBadScopes.add(warnKey);
|
|
24
|
+
console.error(`[skill-frontmatter] Invalid scope "${raw.trim()}" in ${sourceLabel ?? "an unidentified SKILL.md"} — valid values are runtime, dev, both. Hiding this skill from the runtime agent until it is fixed.`);
|
|
25
|
+
}
|
|
26
|
+
return "invalid";
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* The one runtime-visibility gate. A skill whose scope could not be read is
|
|
30
|
+
* withheld alongside `dev`, so a typo fails closed instead of leaking the body
|
|
31
|
+
* into the deployed agent's prompt and docs-search.
|
|
32
|
+
*/
|
|
33
|
+
export function isRuntimeVisibleScope(scope) {
|
|
34
|
+
return scope !== "dev" && scope !== "invalid";
|
|
35
|
+
}
|
|
36
|
+
export function parseSkillFrontmatter(content, sourceLabel) {
|
|
3
37
|
const frontmatter = parseFrontmatter(content);
|
|
4
38
|
const userInvocable = getFrontmatterValue(frontmatter, "user-invocable");
|
|
5
|
-
const
|
|
39
|
+
const rawScope = getFrontmatterValue(frontmatter, "scope");
|
|
40
|
+
const name = getFrontmatterValue(frontmatter, "name");
|
|
6
41
|
return {
|
|
7
|
-
name
|
|
42
|
+
name,
|
|
8
43
|
description: getFrontmatterValue(frontmatter, "description"),
|
|
9
|
-
scope
|
|
44
|
+
scope: rawScope
|
|
45
|
+
? normalizeSkillScope(rawScope, sourceLabel ?? name)
|
|
46
|
+
: undefined,
|
|
10
47
|
userInvocable: userInvocable === undefined
|
|
11
48
|
? undefined
|
|
12
49
|
: userInvocable.toLowerCase() === "true",
|
|
13
50
|
};
|
|
14
51
|
}
|
|
15
|
-
function normalizeSkillFrontmatterScope(value) {
|
|
16
|
-
if (!value)
|
|
17
|
-
return undefined;
|
|
18
|
-
const normalized = value.trim().toLowerCase();
|
|
19
|
-
if (normalized === "runtime" ||
|
|
20
|
-
normalized === "dev" ||
|
|
21
|
-
normalized === "both") {
|
|
22
|
-
return normalized;
|
|
23
|
-
}
|
|
24
|
-
return "both";
|
|
25
|
-
}
|
|
@@ -118,7 +118,7 @@ import { isNetlifyRecurringJobsRuntime, shouldDisableRecurringJobsRuntime, } fro
|
|
|
118
118
|
import { isLocalhost, shouldBlockInProductCodeEditingSurface, } from "./agent-chat/request-surface.js";
|
|
119
119
|
import { loadRunCodeToolEntries } from "./agent-chat/run-code-tools.js";
|
|
120
120
|
import { createAgentEngineScriptEntries, createAgentLoopSettingsScriptEntries, createCallAgentScriptEntry, createChatScriptEntries, createDbScriptEntries, createDocsScriptEntries, createResourceScriptEntries, } from "./agent-chat/script-entries.js";
|
|
121
|
-
import { parseSkillFrontmatter } from "./agent-chat/skill-frontmatter.js";
|
|
121
|
+
import { isRuntimeVisibleScope, parseSkillFrontmatter, } from "./agent-chat/skill-frontmatter.js";
|
|
122
122
|
import { shouldDisableInProcessSweeps } from "./sweep-runtime.js";
|
|
123
123
|
export { loadResourcesForPrompt };
|
|
124
124
|
export { _agentChatPromptSectionsForTests };
|
|
@@ -3373,7 +3373,7 @@ Non-code requests are still fine on this surface: read data, navigate the UI, su
|
|
|
3373
3373
|
const fm = parseSkillFrontmatter(content);
|
|
3374
3374
|
if (fm.userInvocable === false)
|
|
3375
3375
|
continue;
|
|
3376
|
-
if (fm.scope
|
|
3376
|
+
if (!isRuntimeVisibleScope(fm.scope))
|
|
3377
3377
|
continue;
|
|
3378
3378
|
const skillName = fm.name || entry.name.replace(/\.md$/, "");
|
|
3379
3379
|
if (!seenNames.has(skillName)) {
|
|
@@ -3455,7 +3455,7 @@ Non-code requests are still fine on this surface: read data, navigate the UI, su
|
|
|
3455
3455
|
: undefined);
|
|
3456
3456
|
if (full) {
|
|
3457
3457
|
const fm = parseSkillFrontmatter(full.content);
|
|
3458
|
-
if (fm.scope
|
|
3458
|
+
if (!isRuntimeVisibleScope(fm.scope))
|
|
3459
3459
|
continue;
|
|
3460
3460
|
if (fm.name)
|
|
3461
3461
|
skillName = fm.name;
|
|
@@ -27,10 +27,10 @@ export declare function resolveAgentEngineApiKeyWriteTarget(event: H3Event, scop
|
|
|
27
27
|
export declare function createAgentEngineApiKeyHandler(): import("h3").EventHandlerWithFetch<import("h3").EventHandlerRequest, Promise<{
|
|
28
28
|
error: any;
|
|
29
29
|
} | {
|
|
30
|
-
error?: undefined;
|
|
31
30
|
ok: boolean;
|
|
32
31
|
key: string;
|
|
33
32
|
baseUrlKey?: string;
|
|
34
33
|
scope: AgentEngineApiKeyScope;
|
|
34
|
+
error?: undefined;
|
|
35
35
|
}>>;
|
|
36
36
|
export {};
|
|
@@ -20,23 +20,16 @@
|
|
|
20
20
|
*
|
|
21
21
|
* Result is cached in module scope so it's only computed once per cold start.
|
|
22
22
|
*/
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
* - `runtime` — only the in-app agent at runtime (not the human's coding agent).
|
|
26
|
-
* - `dev` — only the human's development/coding agent (e.g. Claude Code).
|
|
27
|
-
* EXCLUDED from the runtime agent's prompt block and docs-search.
|
|
28
|
-
* - `both` — loaded everywhere. This is the default when `scope` is absent
|
|
29
|
-
* or set to an unrecognized value (fully backward compatible).
|
|
30
|
-
*/
|
|
31
|
-
export type SkillScope = "runtime" | "dev" | "both";
|
|
32
|
-
export declare const DEFAULT_SKILL_SCOPE: SkillScope;
|
|
23
|
+
import { DEFAULT_SKILL_SCOPE, isRuntimeVisibleScope, normalizeSkillScope, type SkillScope } from "./agent-chat/skill-frontmatter.js";
|
|
24
|
+
export { DEFAULT_SKILL_SCOPE, isRuntimeVisibleScope, normalizeSkillScope, type SkillScope, };
|
|
33
25
|
export interface SkillMeta {
|
|
34
26
|
name: string;
|
|
35
27
|
description: string;
|
|
36
28
|
/**
|
|
37
29
|
* Audience for the skill. Defaults to `both` when the SKILL.md frontmatter
|
|
38
|
-
* omits `scope
|
|
39
|
-
* from the runtime agent everywhere (prompt block + docs-search)
|
|
30
|
+
* omits `scope`. An unrecognized value parses to `invalid`, which is hidden
|
|
31
|
+
* from the runtime agent everywhere (prompt block + docs-search) exactly
|
|
32
|
+
* like `dev`. `dev`-scoped skills are likewise hidden from the runtime agent.
|
|
40
33
|
*/
|
|
41
34
|
scope: SkillScope;
|
|
42
35
|
}
|
|
@@ -104,7 +97,6 @@ export interface AgentInstructionPaths {
|
|
|
104
97
|
development: string;
|
|
105
98
|
}
|
|
106
99
|
export declare function resolveAgentInstructionPaths(instructions?: AgentNativeInstructionsConfig): AgentInstructionPaths;
|
|
107
|
-
export declare function normalizeSkillScope(raw: string | undefined): SkillScope;
|
|
108
100
|
/**
|
|
109
101
|
* Parse the YAML frontmatter at the top of a skill file.
|
|
110
102
|
* Only pulls out `name`, `description`, and `scope` — deliberately simple, no
|
|
@@ -113,8 +105,11 @@ export declare function normalizeSkillScope(raw: string | undefined): SkillScope
|
|
|
113
105
|
* - Inline: `description: Some text`
|
|
114
106
|
* - Folded scalar: `description: >-\n multi\n line` → "multi line"
|
|
115
107
|
* - Literal scalar: `description: |\n multi\n line` → "multi\nline"
|
|
108
|
+
*
|
|
109
|
+
* `sourceLabel` only names the file in the invalid-scope log; pass it wherever
|
|
110
|
+
* a path is known so a typo is traceable to the SKILL.md that carries it.
|
|
116
111
|
*/
|
|
117
|
-
export declare function parseSkillFrontmatter(content: string): Partial<SkillMeta>;
|
|
112
|
+
export declare function parseSkillFrontmatter(content: string, sourceLabel?: string): Partial<SkillMeta>;
|
|
118
113
|
import type { AgentNativeInstructionsConfig } from "../config.js";
|
|
119
114
|
/**
|
|
120
115
|
* Paths to a workspace-core's agent resources, for merging into a template's
|
|
@@ -160,15 +155,17 @@ export declare function loadAgentsBundle(): Promise<AgentsBundle>;
|
|
|
160
155
|
*/
|
|
161
156
|
/**
|
|
162
157
|
* Skills visible to the agent-native RUNTIME agent. Excludes `scope: dev`
|
|
163
|
-
* skills (those are for the human's coding agent only)
|
|
164
|
-
* `scope: runtime`, or `scope: both`
|
|
165
|
-
* runtime agent's view of skills is
|
|
166
|
-
* dev-scoped skill is invisible to the
|
|
158
|
+
* skills (those are for the human's coding agent only) and skills whose scope
|
|
159
|
+
* could not be read. Skills with no scope, `scope: runtime`, or `scope: both`
|
|
160
|
+
* are all included. Use this anywhere the runtime agent's view of skills is
|
|
161
|
+
* built (prompt block + docs-search) so a dev-scoped skill is invisible to the
|
|
162
|
+
* runtime agent everywhere.
|
|
167
163
|
*/
|
|
168
164
|
export declare function getRuntimeSkills(bundle: AgentsBundle): Skill[];
|
|
169
165
|
/**
|
|
170
166
|
* Skills visible to development/coding agents. Excludes `scope: runtime`
|
|
171
|
-
* skills that are intended only for the deployed in-app agent.
|
|
167
|
+
* skills that are intended only for the deployed in-app agent. An `invalid`
|
|
168
|
+
* scope stays visible here on purpose — this is the audience that can fix it.
|
|
172
169
|
*/
|
|
173
170
|
export declare function getDevelopmentSkills(bundle: AgentsBundle): Skill[];
|
|
174
171
|
export declare function skillDocsSlug(name: string): string;
|