@agent-native/core 0.149.2 → 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/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/global.css +1 -1
- 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-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-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/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/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/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-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/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/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-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/changelog/2026-08-11-plan-no-longer-reloads-when-runtime-state-changes.md +6 -0
- 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 +22 -25
- package/corpus/templates/slides/actions/get-deck-reference-context.ts +2 -2
- package/corpus/templates/slides/actions/get-deck.ts +57 -9
- package/corpus/templates/slides/actions/import-file.ts +2 -1
- package/corpus/templates/slides/actions/patch-deck.ts +45 -2
- 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 +428 -180
- package/corpus/templates/slides/app/components/editor/ExportMenu.tsx +294 -266
- package/corpus/templates/slides/app/components/editor/PromptDialog.tsx +7 -5
- package/corpus/templates/slides/app/components/editor/SlideContextToolbar.tsx +1 -1
- package/corpus/templates/slides/app/components/editor/SlideEditor.tsx +40 -12
- 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/Sidebar.tsx +8 -10
- package/corpus/templates/slides/app/context/DeckContext.tsx +2 -1
- package/corpus/templates/slides/app/global.css +76 -1
- package/corpus/templates/slides/app/i18n/en-US.ts +1 -0
- package/corpus/templates/slides/app/lib/create-deck-generation.ts +51 -23
- package/corpus/templates/slides/app/lib/slide-animation-elements.ts +68 -5
- package/corpus/templates/slides/app/pages/DeckEditor.tsx +13 -6
- package/corpus/templates/slides/app/pages/DesignSystems.tsx +2 -2
- package/corpus/templates/slides/app/pages/Index.tsx +87 -74
- package/corpus/templates/slides/app/root.tsx +43 -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/validate-slide-animations.ts +163 -0
- package/corpus/templates/slides/server/plugins/agent-chat.ts +4 -3
- package/corpus/templates/slides/shared/api.ts +46 -15
- 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/dist/agent/production-agent.js +376 -345
- 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/client/AssistantChat.d.ts +6 -2
- package/dist/client/AssistantChat.js +216 -131
- package/dist/client/active-run-state.d.ts +9 -1
- package/dist/client/active-run-state.js +34 -3
- package/dist/client/agent-chat-adapter.d.ts +8 -0
- package/dist/client/agent-chat-adapter.js +114 -28
- package/dist/client/chat/message-components.d.ts +7 -1
- package/dist/client/chat/message-components.js +32 -5
- 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 +2 -0
- package/dist/client/chat/tool-call-display.js +2 -0
- package/dist/client/chat-first/apps-rail.js +1 -1
- package/dist/client/chat-first/chat-history.d.ts +1 -1
- package/dist/client/chat-first/chat-history.js +5 -2
- package/dist/client/sse-event-processor.d.ts +4 -2
- package/dist/client/sse-event-processor.js +36 -6
- 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/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/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/resources/handlers.d.ts +1 -1
- package/dist/scripts/docs/source-search.js +2 -2
- package/dist/secrets/routes.d.ts +9 -9
- 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/better-auth-instance.d.ts +1 -0
- package/dist/server/better-auth-instance.js +17 -2
- 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/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/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/package.json +1 -1
- 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/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
|
@@ -20,7 +20,8 @@
|
|
|
20
20
|
*
|
|
21
21
|
* Result is cached in module scope so it's only computed once per cold start.
|
|
22
22
|
*/
|
|
23
|
-
|
|
23
|
+
import { DEFAULT_SKILL_SCOPE, isRuntimeVisibleScope, normalizeSkillScope, } from "./agent-chat/skill-frontmatter.js";
|
|
24
|
+
export { DEFAULT_SKILL_SCOPE, isRuntimeVisibleScope, normalizeSkillScope, };
|
|
24
25
|
const DEFAULT_AGENT_INSTRUCTIONS_PATH = "AGENTS.md";
|
|
25
26
|
export function resolveAgentInstructionPaths(instructions) {
|
|
26
27
|
return {
|
|
@@ -29,26 +30,6 @@ export function resolveAgentInstructionPaths(instructions) {
|
|
|
29
30
|
};
|
|
30
31
|
}
|
|
31
32
|
let cached = null;
|
|
32
|
-
/**
|
|
33
|
-
* Coerce a raw frontmatter `scope` value into a known `SkillScope`. Unknown,
|
|
34
|
-
* empty, or malformed values fall back to the default (`both`) so a typo never
|
|
35
|
-
* silently hides a skill from the runtime agent. Optionally warns once per
|
|
36
|
-
* distinct bad value to aid debugging without spamming logs.
|
|
37
|
-
*/
|
|
38
|
-
const warnedBadScopes = new Set();
|
|
39
|
-
export function normalizeSkillScope(raw) {
|
|
40
|
-
if (!raw)
|
|
41
|
-
return DEFAULT_SKILL_SCOPE;
|
|
42
|
-
const value = raw.trim().toLowerCase();
|
|
43
|
-
if (value === "runtime" || value === "dev" || value === "both") {
|
|
44
|
-
return value;
|
|
45
|
-
}
|
|
46
|
-
if (value && !warnedBadScopes.has(value)) {
|
|
47
|
-
warnedBadScopes.add(value);
|
|
48
|
-
console.warn(`[agents-bundle] Unknown skill scope "${raw}" — treating as "${DEFAULT_SKILL_SCOPE}". Valid values: runtime, dev, both.`);
|
|
49
|
-
}
|
|
50
|
-
return DEFAULT_SKILL_SCOPE;
|
|
51
|
-
}
|
|
52
33
|
/**
|
|
53
34
|
* Parse the YAML frontmatter at the top of a skill file.
|
|
54
35
|
* Only pulls out `name`, `description`, and `scope` — deliberately simple, no
|
|
@@ -57,8 +38,11 @@ export function normalizeSkillScope(raw) {
|
|
|
57
38
|
* - Inline: `description: Some text`
|
|
58
39
|
* - Folded scalar: `description: >-\n multi\n line` → "multi line"
|
|
59
40
|
* - Literal scalar: `description: |\n multi\n line` → "multi\nline"
|
|
41
|
+
*
|
|
42
|
+
* `sourceLabel` only names the file in the invalid-scope log; pass it wherever
|
|
43
|
+
* a path is known so a typo is traceable to the SKILL.md that carries it.
|
|
60
44
|
*/
|
|
61
|
-
export function parseSkillFrontmatter(content) {
|
|
45
|
+
export function parseSkillFrontmatter(content, sourceLabel) {
|
|
62
46
|
const match = content.match(/^---\r?\n([\s\S]+?)\r?\n---/);
|
|
63
47
|
if (!match)
|
|
64
48
|
return {};
|
|
@@ -106,7 +90,7 @@ export function parseSkillFrontmatter(content) {
|
|
|
106
90
|
else if (key === "description" && value)
|
|
107
91
|
result.description = value;
|
|
108
92
|
else if (key === "scope" && value)
|
|
109
|
-
result.scope = normalizeSkillScope(value);
|
|
93
|
+
result.scope = normalizeSkillScope(value, sourceLabel ?? result.name);
|
|
110
94
|
}
|
|
111
95
|
return result;
|
|
112
96
|
}
|
|
@@ -170,7 +154,7 @@ function readSkillsDir(skillsDir, rootForRelative, out, skipExistingNames) {
|
|
|
170
154
|
if (!fs.existsSync(realSkillFile))
|
|
171
155
|
continue;
|
|
172
156
|
const content = fs.readFileSync(realSkillFile, "utf-8");
|
|
173
|
-
const meta = parseSkillFrontmatter(content);
|
|
157
|
+
const meta = parseSkillFrontmatter(content, path.relative(rootForRelative, skillFile).replace(/\\/g, "/"));
|
|
174
158
|
const name = meta.name ?? entry.name;
|
|
175
159
|
if (skipExistingNames && out[name])
|
|
176
160
|
continue; // Template wins
|
|
@@ -375,17 +359,19 @@ export async function loadAgentsBundle() {
|
|
|
375
359
|
*/
|
|
376
360
|
/**
|
|
377
361
|
* Skills visible to the agent-native RUNTIME agent. Excludes `scope: dev`
|
|
378
|
-
* skills (those are for the human's coding agent only)
|
|
379
|
-
* `scope: runtime`, or `scope: both`
|
|
380
|
-
* runtime agent's view of skills is
|
|
381
|
-
* dev-scoped skill is invisible to the
|
|
362
|
+
* skills (those are for the human's coding agent only) and skills whose scope
|
|
363
|
+
* could not be read. Skills with no scope, `scope: runtime`, or `scope: both`
|
|
364
|
+
* are all included. Use this anywhere the runtime agent's view of skills is
|
|
365
|
+
* built (prompt block + docs-search) so a dev-scoped skill is invisible to the
|
|
366
|
+
* runtime agent everywhere.
|
|
382
367
|
*/
|
|
383
368
|
export function getRuntimeSkills(bundle) {
|
|
384
|
-
return Object.values(bundle.skills).filter((skill) => skill.meta.scope
|
|
369
|
+
return Object.values(bundle.skills).filter((skill) => isRuntimeVisibleScope(skill.meta.scope));
|
|
385
370
|
}
|
|
386
371
|
/**
|
|
387
372
|
* Skills visible to development/coding agents. Excludes `scope: runtime`
|
|
388
|
-
* skills that are intended only for the deployed in-app agent.
|
|
373
|
+
* skills that are intended only for the deployed in-app agent. An `invalid`
|
|
374
|
+
* scope stays visible here on purpose — this is the audience that can fix it.
|
|
389
375
|
*/
|
|
390
376
|
export function getDevelopmentSkills(bundle) {
|
|
391
377
|
return Object.values(bundle.skills).filter((skill) => skill.meta.scope !== "runtime");
|
|
@@ -437,14 +423,12 @@ function generateSkillsPromptBlockForEntries(entries, mode) {
|
|
|
437
423
|
extras = ` (also contains: ${s.extraFiles.join(", ")})`;
|
|
438
424
|
}
|
|
439
425
|
}
|
|
440
|
-
const runtimeHint = mode === "runtime"
|
|
441
|
-
? ` Read with \`docs-search --slug "${skillDocsSlug(s.meta.name)}"\` before starting a task it applies to.`
|
|
442
|
-
: "";
|
|
426
|
+
const runtimeHint = mode === "runtime" ? ` [${skillDocsSlug(s.meta.name)}]` : "";
|
|
443
427
|
return `- \`${s.meta.name}\` at \`${s.dir}/\` — ${s.meta.description || "(no description)"}${extras}${runtimeHint}`;
|
|
444
428
|
});
|
|
445
429
|
const readHint = mode === "runtime"
|
|
446
|
-
? `To read a skill in the in-app runtime agent:
|
|
447
|
-
\`docs-search --slug "
|
|
430
|
+
? `To read a skill in the in-app runtime agent, before starting a task it applies to:
|
|
431
|
+
\`docs-search --slug "<slug>"\` — each skill's slug is the [bracketed] token ending its line
|
|
448
432
|
\`docs-search --query "<topic>"\` to discover matching docs/skills`
|
|
449
433
|
: `To read a skill in dev mode (when you have bash access):
|
|
450
434
|
\`bash(command="cat <skill-dir>/SKILL.md")\`
|
|
@@ -253,3 +253,4 @@ export declare function resetBetterAuth(): Promise<void>;
|
|
|
253
253
|
export declare function configureLocalSqlite(sqlite: {
|
|
254
254
|
pragma(statement: string): unknown;
|
|
255
255
|
}): void;
|
|
256
|
+
export declare function buildDatabaseConfig(dialect: string): Promise<BetterAuthOptions["database"]>;
|
|
@@ -16,7 +16,7 @@ import { pgTable, text as pgText, timestamp as pgTimestamp, boolean as pgBoolean
|
|
|
16
16
|
import { sqliteTable, text as sqliteText, integer as sqliteInteger, } from "drizzle-orm/sqlite-core";
|
|
17
17
|
import { TEMPLATES } from "../cli/templates-meta.js";
|
|
18
18
|
import { getDbExec, isPostgres } from "../db/client.js";
|
|
19
|
-
import { getDialect, getDatabaseUrl, getDatabaseAuthToken, closePgliteClients, getPgliteClient, isPgliteUrl, loadPgliteDrizzle, pgPoolOptions, neonPoolOptions, guardNeonPool, sharedDbPool, onSharedDbPoolsClosed, onSharedDbPoolReplaced, } from "../db/client.js";
|
|
19
|
+
import { getDialect, getCloudflareD1Binding, getDatabaseUrl, getDatabaseAuthToken, closePgliteClients, getPgliteClient, isPgliteUrl, loadPgliteDrizzle, pgPoolOptions, neonPoolOptions, guardNeonPool, sharedDbPool, onSharedDbPoolsClosed, onSharedDbPoolReplaced, } from "../db/client.js";
|
|
20
20
|
import { CORE_RESET_PASSWORD_EMAIL_ID, CORE_VERIFY_SIGNUP_EMAIL_ID, } from "../email-catalog/system-emails.js";
|
|
21
21
|
import { saveOAuthTokens } from "../oauth-tokens/store.js";
|
|
22
22
|
import { acceptPendingInvitationsForEmail } from "../org/accept-pending.js";
|
|
@@ -1126,7 +1126,7 @@ export function configureLocalSqlite(sqlite) {
|
|
|
1126
1126
|
sqlite.pragma("busy_timeout = 10000");
|
|
1127
1127
|
sqlite.pragma("journal_mode = WAL");
|
|
1128
1128
|
}
|
|
1129
|
-
async function buildDatabaseConfig(dialect) {
|
|
1129
|
+
export async function buildDatabaseConfig(dialect) {
|
|
1130
1130
|
if (dialect === "postgres") {
|
|
1131
1131
|
const url = getDatabaseUrl();
|
|
1132
1132
|
const { buildResilientNeonPool, buildResilientPostgresJsClient, isNeonUrl, } = await import("../db/create-get-db.js");
|
|
@@ -1180,6 +1180,21 @@ async function buildDatabaseConfig(dialect) {
|
|
|
1180
1180
|
schema: pgAuthSchema,
|
|
1181
1181
|
});
|
|
1182
1182
|
}
|
|
1183
|
+
if (dialect === "d1") {
|
|
1184
|
+
const d1 = getCloudflareD1Binding();
|
|
1185
|
+
if (!d1) {
|
|
1186
|
+
throw new Error("Cloudflare D1 database binding is unavailable; configure the DB binding before initializing Better Auth.");
|
|
1187
|
+
}
|
|
1188
|
+
const { drizzle } = await import("drizzle-orm/d1");
|
|
1189
|
+
const db = drizzle(d1, {
|
|
1190
|
+
schema: sqliteAuthSchema,
|
|
1191
|
+
});
|
|
1192
|
+
const { drizzleAdapter } = await import("better-auth/adapters/drizzle");
|
|
1193
|
+
return drizzleAdapter(db, {
|
|
1194
|
+
provider: "sqlite",
|
|
1195
|
+
schema: sqliteAuthSchema,
|
|
1196
|
+
});
|
|
1197
|
+
}
|
|
1183
1198
|
// SQLite / libsql
|
|
1184
1199
|
const url = getDatabaseUrl("file:./data/app.db");
|
|
1185
1200
|
if (url.startsWith("file:") || !url.includes("://")) {
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Compact framework core instructions (FRAMEWORK_CORE_COMPACT).
|
|
3
3
|
* Used in lazy-context mode (lazyContext: true — the default).
|
|
4
4
|
*
|
|
5
|
-
* Shares rules 8–9,
|
|
5
|
+
* Shares rules 8–9, 13–15 with the full variant via shared-rules.ts.
|
|
6
6
|
* The compact version omits:
|
|
7
7
|
* - Verbose "Extended Capabilities" section (agent uses get-framework-context)
|
|
8
8
|
* - Detailed "Parallel Tool Calls" prose (replaced with one-liner)
|
|
@@ -18,6 +18,11 @@ export interface FrameworkCoreCompactPromptOptions {
|
|
|
18
18
|
* a group's tool by name is gated on this — a prompt naming an absent tool
|
|
19
19
|
* makes the model call it, fail, and often report the capability as missing. */
|
|
20
20
|
disabledFrameworkGroups?: ReadonlySet<FrameworkToolGroup>;
|
|
21
|
+
/** True for surfaces whose agent really can edit source (dev mode). This core
|
|
22
|
+
* prompt is appended to both the production and development prompts, so the
|
|
23
|
+
* Builder-handoff sentence must be dropped here or it contradicts the dev
|
|
24
|
+
* prompt's own "you have full local access". */
|
|
25
|
+
canEditSource?: boolean;
|
|
21
26
|
}
|
|
22
27
|
/**
|
|
23
28
|
* Build the compact FRAMEWORK_CORE prompt string.
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Compact framework core instructions (FRAMEWORK_CORE_COMPACT).
|
|
3
3
|
* Used in lazy-context mode (lazyContext: true — the default).
|
|
4
4
|
*
|
|
5
|
-
* Shares rules 8–9,
|
|
5
|
+
* Shares rules 8–9, 13–15 with the full variant via shared-rules.ts.
|
|
6
6
|
* The compact version omits:
|
|
7
7
|
* - Verbose "Extended Capabilities" section (agent uses get-framework-context)
|
|
8
8
|
* - Detailed "Parallel Tool Calls" prose (replaced with one-liner)
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
*/
|
|
11
11
|
import { frameworkGroupEnabled, } from "../../framework-tools.js";
|
|
12
12
|
import { hasDatabaseReadTools, hasDatabaseWriteTools, } from "../../scripts/db/tool-mode.js";
|
|
13
|
-
import { sharedRule8, SHARED_RULE_9,
|
|
13
|
+
import { sharedRule8, SHARED_RULE_9, sharedRule13, SHARED_RULE_14, SHARED_RULE_15, } from "./shared-rules.js";
|
|
14
14
|
/**
|
|
15
15
|
* Build the compact FRAMEWORK_CORE prompt string.
|
|
16
16
|
*
|
|
@@ -54,10 +54,13 @@ For generated media, prefer this app's native generation action; otherwise use \
|
|
|
54
54
|
const actionSurface = options?.extensionTools === true
|
|
55
55
|
? "registered actions, extensions, and MCP tools"
|
|
56
56
|
: "registered actions and MCP tools";
|
|
57
|
+
const codeHandoffClause = options?.canEditSource === true
|
|
58
|
+
? ""
|
|
59
|
+
: ", and hand code changes to Builder — you don't edit source yourself";
|
|
57
60
|
return `
|
|
58
61
|
### How You Work
|
|
59
62
|
|
|
60
|
-
Bring a senior engineer's judgment, arrived at through attention not premature certainty: understand the app's data and actions before acting, prefer existing actions and patterns over improvising, and keep work scoped. You act through ${actionSurface}
|
|
63
|
+
Bring a senior engineer's judgment, arrived at through attention not premature certainty: understand the app's data and actions before acting, prefer existing actions and patterns over improvising, and keep work scoped. You act through ${actionSurface}${codeHandoffClause}.
|
|
61
64
|
|
|
62
65
|
**Autonomy:** handle the task end to end this turn when feasible — take the actions, confirm they worked, report the outcome. Don't stop at a proposal or half-finished work; work through blockers yourself before handing back. In Plan mode, propose only.
|
|
63
66
|
|
|
@@ -76,18 +79,18 @@ Bring a senior engineer's judgment, arrived at through attention not premature c
|
|
|
76
79
|
7. **Security** — ${securityRule}
|
|
77
80
|
${sharedRule8(examples, options)}
|
|
78
81
|
${SHARED_RULE_9}
|
|
79
|
-
**Native widgets** — For table/chart/graph/report requests, prefer actions labeled \`Native chat widget\`; use \`render-data-widget\` for already-summarized data (≤50 rows) instead of markdown tables. Above that, give the total plus the top rows — never retype a full result set as widget arguments.
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
${
|
|
82
|
+
10. **Native widgets** — For table/chart/graph/report requests, prefer actions labeled \`Native chat widget\`; use \`render-data-widget\` for already-summarized data (≤50 rows) instead of markdown tables. Above that, give the total plus the top rows — never retype a full result set as widget arguments.
|
|
83
|
+
11. **Downloadable files** — Deliver files in chat, never just a path.
|
|
84
|
+
12. **Your tool list is not the whole surface** — Most app actions and connected MCP tools load on demand, so search the live registry with \`tool-search\` before concluding a capability doesn't exist.
|
|
85
|
+
${sharedRule13(options)}
|
|
86
|
+
${SHARED_RULE_14}
|
|
83
87
|
${SHARED_RULE_15}
|
|
84
|
-
${SHARED_RULE_AGENT_WARNINGS}
|
|
85
88
|
|
|
86
89
|
${resourcesSection}
|
|
87
90
|
### Extended Capabilities
|
|
88
91
|
|
|
89
92
|
You also have tools for ${extendedCapabilitiesList}. Call \`get-framework-context\` with the matching key — it lists its own topics — for full instructions when needed.
|
|
90
93
|
|
|
91
|
-
**Agent teams:** default to doing the work yourself
|
|
94
|
+
**Agent teams:** default to doing the work yourself; \`agent-teams\` can delegate to background sub-agents. Treat "background agent", "sub-agent", "parallel", "batch", "kick off", "run the rest", and "queued items" as delegation intent when the user is asking you to start or continue independent work items. Read \`get-framework-context\` key \`agent-teams\` before spawning — it carries the fan-out limits, briefing contract, and why a spawn is not a completion.
|
|
92
95
|
${callAgentSection}`;
|
|
93
96
|
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Full framework core instructions (FRAMEWORK_CORE).
|
|
3
3
|
* Used in the verbose prompt variant (lazyContext: false).
|
|
4
4
|
*
|
|
5
|
-
* Shared rules (8-9,
|
|
5
|
+
* Shared rules (8-9, 13-15) are imported from shared-rules.ts so the
|
|
6
6
|
* compact variant uses the same text and the two can never drift.
|
|
7
7
|
*/
|
|
8
8
|
import { type FrameworkToolGroup } from "../../framework-tools.js";
|
|
@@ -15,6 +15,11 @@ export interface FrameworkCorePromptOptions {
|
|
|
15
15
|
* a group's tool by name is gated on this — a prompt naming an absent tool
|
|
16
16
|
* makes the model call it, fail, and often report the capability as missing. */
|
|
17
17
|
disabledFrameworkGroups?: ReadonlySet<FrameworkToolGroup>;
|
|
18
|
+
/** True for surfaces whose agent really can edit source (dev mode). This core
|
|
19
|
+
* prompt is appended to both the production and development prompts, so the
|
|
20
|
+
* Builder-handoff sentence must be dropped here or it contradicts the dev
|
|
21
|
+
* prompt's own "you have full local access". */
|
|
22
|
+
canEditSource?: boolean;
|
|
18
23
|
}
|
|
19
24
|
/**
|
|
20
25
|
* Build the full FRAMEWORK_CORE prompt string.
|
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
* Full framework core instructions (FRAMEWORK_CORE).
|
|
3
3
|
* Used in the verbose prompt variant (lazyContext: false).
|
|
4
4
|
*
|
|
5
|
-
* Shared rules (8-9,
|
|
5
|
+
* Shared rules (8-9, 13-15) are imported from shared-rules.ts so the
|
|
6
6
|
* compact variant uses the same text and the two can never drift.
|
|
7
7
|
*/
|
|
8
8
|
import { frameworkGroupEnabled, } from "../../framework-tools.js";
|
|
9
9
|
import { hasDatabaseReadTools, hasDatabaseWriteTools, } from "../../scripts/db/tool-mode.js";
|
|
10
|
-
import { sharedRule8, SHARED_RULE_9,
|
|
10
|
+
import { sharedRule8, SHARED_RULE_9, sharedRule13, SHARED_RULE_14, SHARED_RULE_15, } from "./shared-rules.js";
|
|
11
11
|
/**
|
|
12
12
|
* Build the full FRAMEWORK_CORE prompt string.
|
|
13
13
|
*
|
|
@@ -41,6 +41,9 @@ export function buildFrameworkCore(examples, options) {
|
|
|
41
41
|
const actionSurface = options?.extensionTools === true
|
|
42
42
|
? "this app's registered actions, extensions, and connected MCP tools"
|
|
43
43
|
: "this app's registered actions and connected MCP tools";
|
|
44
|
+
const codeHandoffClause = options?.canEditSource === true
|
|
45
|
+
? ""
|
|
46
|
+
: " — and you hand code changes to Builder rather than editing source yourself";
|
|
44
47
|
const groupOn = (group) => frameworkGroupEnabled(options?.disabledFrameworkGroups, group);
|
|
45
48
|
const resourcesSection = groupOn("resources")
|
|
46
49
|
? `### Resources
|
|
@@ -73,7 +76,7 @@ Workspace resources are user-facing by default. If you need temporary working fi
|
|
|
73
76
|
|
|
74
77
|
You bring a senior engineer's judgment to this app, but you let it arrive through attention rather than premature certainty. Understand the app's data and actions before you act — read the current screen, the schema, and what tools exist — and let the shape of the existing system steer you. Prefer the app's own actions and established patterns over improvising a new approach. Keep your work scoped to what the request implies; don't redesign things that already work.
|
|
75
78
|
|
|
76
|
-
You act through ${actionSurface}
|
|
79
|
+
You act through ${actionSurface}${codeHandoffClause}. Within that surface, you own the task end to end.
|
|
77
80
|
|
|
78
81
|
### Autonomy And Persistence
|
|
79
82
|
|
|
@@ -102,13 +105,12 @@ ${refreshRule}
|
|
|
102
105
|
${securityRule}
|
|
103
106
|
${sharedRule8(examples, options)}
|
|
104
107
|
${SHARED_RULE_9}
|
|
105
|
-
**Native chat widgets** — When an available action says it renders a native widget such as \`data-table\`, \`data-chart\`, or \`data-insights\`, call that action for user requests asking for a table, chart, graph, trend, report, or inline data view. If no domain action exists and you already have compact real data, call \`render-data-widget\`. Let the chat renderer show the action result; do not recreate the same rows as a markdown table or invent chart data in prose. Add only a short human summary or next-step link around the widget. Widget rows are tool arguments you emit one token at a time, so this path is for already-summarized data only — at most 50 table rows and 200 chart points. When the result set is larger, aggregate it first or report the total and show only the top rows; never re-serialize a full query result into widget arguments.
|
|
106
|
-
**Downloadable files** — When the user asks you to create or export a file, deliver it in the same chat turn. For compact tabular results, prefer \`render-data-widget\` so the user gets the native Download CSV action without a second stored copy. For a complete or durable file written through \`workspaceWrite\`, use a normal non-\`scratch/\` path and then call \`show-workspace-file\` with that path so chat renders a direct download card. Never finish by giving filesystem paths or telling the user to navigate elsewhere to find the file.
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
${
|
|
108
|
+
10. **Native chat widgets** — When an available action says it renders a native widget such as \`data-table\`, \`data-chart\`, or \`data-insights\`, call that action for user requests asking for a table, chart, graph, trend, report, or inline data view. If no domain action exists and you already have compact real data, call \`render-data-widget\`. Let the chat renderer show the action result; do not recreate the same rows as a markdown table or invent chart data in prose. Add only a short human summary or next-step link around the widget. Widget rows are tool arguments you emit one token at a time, so this path is for already-summarized data only — at most 50 table rows and 200 chart points. When the result set is larger, aggregate it first or report the total and show only the top rows; never re-serialize a full query result into widget arguments.
|
|
109
|
+
11. **Downloadable files** — When the user asks you to create or export a file, deliver it in the same chat turn. For compact tabular results, prefer \`render-data-widget\` so the user gets the native Download CSV action without a second stored copy. For a complete or durable file written through \`workspaceWrite\`, use a normal non-\`scratch/\` path and then call \`show-workspace-file\` with that path so chat renders a direct download card. Never finish by giving filesystem paths or telling the user to navigate elsewhere to find the file.
|
|
110
|
+
12. **Your tool list is not the whole surface** — Most app actions and connected MCP tools load on demand, so search the live registry with \`tool-search\` before concluding a capability doesn't exist.
|
|
111
|
+
${sharedRule13(options)}
|
|
112
|
+
${SHARED_RULE_14}
|
|
110
113
|
${SHARED_RULE_15}
|
|
111
|
-
${SHARED_RULE_AGENT_WARNINGS}
|
|
112
114
|
|
|
113
115
|
### Parallel Tool Calls
|
|
114
116
|
|
|
@@ -4,5 +4,5 @@
|
|
|
4
4
|
*/
|
|
5
5
|
export { buildFrameworkCore } from "./framework-core.js";
|
|
6
6
|
export { buildFrameworkCoreCompact } from "./framework-core-compact.js";
|
|
7
|
-
export { sharedRule8, SHARED_RULE_9,
|
|
7
|
+
export { sharedRule8, SHARED_RULE_9, sharedRule13, SHARED_RULE_14, SHARED_RULE_15, type PromptExamples, type SharedRuleOptions, } from "./shared-rules.js";
|
|
8
8
|
export { getModelFamilyOverlay } from "./model-overlays.js";
|
|
@@ -4,5 +4,5 @@
|
|
|
4
4
|
*/
|
|
5
5
|
export { buildFrameworkCore } from "./framework-core.js";
|
|
6
6
|
export { buildFrameworkCoreCompact } from "./framework-core-compact.js";
|
|
7
|
-
export { sharedRule8, SHARED_RULE_9,
|
|
7
|
+
export { sharedRule8, SHARED_RULE_9, sharedRule13, SHARED_RULE_14, SHARED_RULE_15, } from "./shared-rules.js";
|
|
8
8
|
export { getModelFamilyOverlay } from "./model-overlays.js";
|
|
@@ -4,8 +4,13 @@
|
|
|
4
4
|
* identical between them.
|
|
5
5
|
*
|
|
6
6
|
* Rules 8–9 (db-* tools; the consolidated no-fabrication / verify / recover
|
|
7
|
-
* rule) and
|
|
8
|
-
* reproduced verbatim in both prompts — keep them
|
|
7
|
+
* rule) and 13–15 (planning discipline; collaborate through uncertainty;
|
|
8
|
+
* relay agent warnings) are reproduced verbatim in both prompts — keep them
|
|
9
|
+
* here.
|
|
10
|
+
*
|
|
11
|
+
* Each identifier carries the number its text emits. Renumbering a rule means
|
|
12
|
+
* renaming its identifier in the same change; the two drifted apart once
|
|
13
|
+
* already and left people editing a different rule than the name said.
|
|
9
14
|
*/
|
|
10
15
|
import { type FrameworkToolGroup } from "../../framework-tools.js";
|
|
11
16
|
import { type DatabaseToolsOption } from "../../scripts/db/tool-mode.js";
|
|
@@ -30,7 +35,7 @@ export interface SharedRuleOptions {
|
|
|
30
35
|
export declare function sharedRule8(examples?: PromptExamples, options?: SharedRuleOptions): string;
|
|
31
36
|
/**
|
|
32
37
|
* Rule 9 — Consolidated anti-fabrication rule (shared). Formerly three
|
|
33
|
-
* separate rules (fabricating facts, fabricating success, and
|
|
38
|
+
* separate rules (fabricating facts, fabricating success, and a since-removed
|
|
34
39
|
* "verify before you claim done") — merged because they are one behavior,
|
|
35
40
|
* honesty about what actually happened, viewed from three angles. Keep all
|
|
36
41
|
* three sub-behaviors distinct; do not re-split them back into separate
|
|
@@ -38,8 +43,8 @@ export declare function sharedRule8(examples?: PromptExamples, options?: SharedR
|
|
|
38
43
|
*/
|
|
39
44
|
export declare const SHARED_RULE_9 = "9. **Never fabricate \u2014 verify results, report failures honestly, and recover instead of giving up.**\n - **Never fabricate factual claims or records** \u2014 do not invent numbers, metrics, records, query results, URLs, citations, source attributions, customer names, dates, or success rates. This applies inside generated artifacts too: decks, documents, reports, dashboards, Slack/email replies, and charts. Only state factual numbers/claims the user provided or you retrieved with an action/tool. If a data source is unavailable, returns no rows, is missing credentials, or has a connection error, say so clearly; do not create placeholder rows or fetch unrelated providers to look complete unless the user explicitly asked you to import/sync/backfill. Prefer qualitative wording, placeholders like `[metric TBD]`, or clearly labeled draft assumptions over plausible-looking facts \u2014 presenting made-up data as real is worse than admitting the limitation.\n - **Never fabricate success from tool errors** \u2014 when a tool call returns an error (marked `isError: true`, contains \"Command failed\", \"Error:\", or non-zero exit output), the operation FAILED; do not synthesize a success narrative or describe what it \"would have\" produced. Report the failure verbatim (this applies especially to `bash(command=\"pnpm action ...\")` calls). Before telling the user a mutating action (create/update/delete/send/publish) is done, confirm it actually landed \u2014 check the tool result, or read the refreshed `<current-screen>` / re-query the data; having *called* an action is not proof it worked. If a result is ambiguous, check rather than assume.\n - **Recover instead of giving up** \u2014 treat a failure or ambiguous result as a signal to retry the obvious fix, try an alternate tool or approach, or clearly hand the blocker back with what you tried; never silently give up, and never paper over a failure by claiming success.";
|
|
40
45
|
/**
|
|
41
|
-
* Rule
|
|
42
|
-
* progress
|
|
46
|
+
* Rule 13 — Planning and progress. Deliberately states only when to open a
|
|
47
|
+
* progress run; the
|
|
43
48
|
* start/update/complete discipline lives in `manage-progress`'s own tool
|
|
44
49
|
* description (packages/core/src/progress/actions.ts). Re-adding the mechanics
|
|
45
50
|
* here means every turn pays for guidance the model only needs once it has the
|
|
@@ -49,10 +54,11 @@ export declare const SHARED_RULE_9 = "9. **Never fabricate \u2014 verify results
|
|
|
49
54
|
* the rule never names a tool the request does not carry. The planning
|
|
50
55
|
* discipline itself still applies — only the tool call goes away.
|
|
51
56
|
*/
|
|
52
|
-
export declare function
|
|
57
|
+
export declare function sharedRule13(options?: SharedRuleOptions): string;
|
|
58
|
+
/** Rule 14 — Collaborate through uncertainty (better-specified version). */
|
|
59
|
+
export declare const SHARED_RULE_14 = "14. **Collaborate through uncertainty** \u2014 If a task stalls, errors, or depends on setup the user may not know about, shift into builder-coach mode instead of repeating the same attempt. State what you verified, name the most likely next checks, and proactively try common unblockers you can inspect (for example prompt size, missing environment variables, unavailable connections, current screen state, or tool choice). When you finish a meaningful step, offer one or two concrete next steps or improvements so non-technical users can keep iterating. When you are genuinely blocked on a decision you cannot resolve from context \u2014 and a wrong guess would be costly \u2014 use `ask-question` to present the choice instead of guessing; otherwise prefer a reasonable assumption and keep moving.";
|
|
53
60
|
/**
|
|
54
|
-
* Rule
|
|
55
|
-
* since the `SHARED_RULE_14`/`15` names above no longer match theirs.
|
|
61
|
+
* Rule 15 — Relay agent warnings.
|
|
56
62
|
*
|
|
57
63
|
* Load-bearing: a tool result can carry an `<agent-warning>` block raised deep
|
|
58
64
|
* inside an action (see `agent/action-warnings.ts`) for an operation the caller
|
|
@@ -60,6 +66,4 @@ export declare function sharedRule14(options?: SharedRuleOptions): string;
|
|
|
60
66
|
* Without this rule the model summarizes past the block and reports success,
|
|
61
67
|
* which is the incident this channel was built to prevent.
|
|
62
68
|
*/
|
|
63
|
-
export declare const
|
|
64
|
-
/** Rule 13 (const name retained as SHARED_RULE_15 for import stability) — Collaborate through uncertainty (better-specified version). */
|
|
65
|
-
export declare const SHARED_RULE_15 = "13. **Collaborate through uncertainty** \u2014 If a task stalls, errors, or depends on setup the user may not know about, shift into builder-coach mode instead of repeating the same attempt. State what you verified, name the most likely next checks, and proactively try common unblockers you can inspect (for example prompt size, missing environment variables, unavailable connections, current screen state, or tool choice). When you finish a meaningful step, offer one or two concrete next steps or improvements so non-technical users can keep iterating. When you are genuinely blocked on a decision you cannot resolve from context \u2014 and a wrong guess would be costly \u2014 use `ask-question` to present the choice instead of guessing; otherwise prefer a reasonable assumption and keep moving.";
|
|
69
|
+
export declare const SHARED_RULE_15 = "15. **Relay `<agent-warning>` blocks before you report success** \u2014 A tool result may contain one or more `<agent-warning severity=\"...\" code=\"...\">` blocks. These are not part of the action's return value: they are raised by the operation the tool performed and they are the only place that consequence is reported. Never drop, bury, or paraphrase one away. On `severity=\"critical\"`, stop and tell the user what happened in your own words BEFORE any success summary \u2014 lead with the consequence and the remedy the block names, do not continue a multi-step plan whose later steps depend on the affected state, and if the operation is reversible say so and offer to reverse it. On `severity=\"advisory\"`, mention it in your final response. If a warning says something may already be broken, say that plainly; \"done\" is not an honest answer to a turn that raised a critical warning.";
|
|
@@ -4,8 +4,13 @@
|
|
|
4
4
|
* identical between them.
|
|
5
5
|
*
|
|
6
6
|
* Rules 8–9 (db-* tools; the consolidated no-fabrication / verify / recover
|
|
7
|
-
* rule) and
|
|
8
|
-
* reproduced verbatim in both prompts — keep them
|
|
7
|
+
* rule) and 13–15 (planning discipline; collaborate through uncertainty;
|
|
8
|
+
* relay agent warnings) are reproduced verbatim in both prompts — keep them
|
|
9
|
+
* here.
|
|
10
|
+
*
|
|
11
|
+
* Each identifier carries the number its text emits. Renumbering a rule means
|
|
12
|
+
* renaming its identifier in the same change; the two drifted apart once
|
|
13
|
+
* already and left people editing a different rule than the name said.
|
|
9
14
|
*/
|
|
10
15
|
import { frameworkGroupEnabled, } from "../../framework-tools.js";
|
|
11
16
|
import { normalizeDatabaseToolsMode, } from "../../scripts/db/tool-mode.js";
|
|
@@ -54,7 +59,7 @@ export function sharedRule8(examples, options) {
|
|
|
54
59
|
}
|
|
55
60
|
/**
|
|
56
61
|
* Rule 9 — Consolidated anti-fabrication rule (shared). Formerly three
|
|
57
|
-
* separate rules (fabricating facts, fabricating success, and
|
|
62
|
+
* separate rules (fabricating facts, fabricating success, and a since-removed
|
|
58
63
|
* "verify before you claim done") — merged because they are one behavior,
|
|
59
64
|
* honesty about what actually happened, viewed from three angles. Keep all
|
|
60
65
|
* three sub-behaviors distinct; do not re-split them back into separate
|
|
@@ -65,8 +70,8 @@ export const SHARED_RULE_9 = `9. **Never fabricate — verify results, report fa
|
|
|
65
70
|
- **Never fabricate success from tool errors** — when a tool call returns an error (marked \`isError: true\`, contains "Command failed", "Error:", or non-zero exit output), the operation FAILED; do not synthesize a success narrative or describe what it "would have" produced. Report the failure verbatim (this applies especially to \`bash(command="pnpm action ...")\` calls). Before telling the user a mutating action (create/update/delete/send/publish) is done, confirm it actually landed — check the tool result, or read the refreshed \`<current-screen>\` / re-query the data; having *called* an action is not proof it worked. If a result is ambiguous, check rather than assume.
|
|
66
71
|
- **Recover instead of giving up** — treat a failure or ambiguous result as a signal to retry the obvious fix, try an alternate tool or approach, or clearly hand the blocker back with what you tried; never silently give up, and never paper over a failure by claiming success.`;
|
|
67
72
|
/**
|
|
68
|
-
* Rule
|
|
69
|
-
* progress
|
|
73
|
+
* Rule 13 — Planning and progress. Deliberately states only when to open a
|
|
74
|
+
* progress run; the
|
|
70
75
|
* start/update/complete discipline lives in `manage-progress`'s own tool
|
|
71
76
|
* description (packages/core/src/progress/actions.ts). Re-adding the mechanics
|
|
72
77
|
* here means every turn pays for guidance the model only needs once it has the
|
|
@@ -76,15 +81,16 @@ export const SHARED_RULE_9 = `9. **Never fabricate — verify results, report fa
|
|
|
76
81
|
* the rule never names a tool the request does not carry. The planning
|
|
77
82
|
* discipline itself still applies — only the tool call goes away.
|
|
78
83
|
*/
|
|
79
|
-
export function
|
|
84
|
+
export function sharedRule13(options) {
|
|
80
85
|
if (!frameworkGroupEnabled(options?.disabledFrameworkGroups, "automation")) {
|
|
81
|
-
return `
|
|
86
|
+
return `13. **Plan and track multi-step work** — When a task spans several real steps, work through them in order and tell the user where you are as you go rather than only at the end. Skip ceremony for single-action lookups, simple reads, and anything that finishes in one tool call.`;
|
|
82
87
|
}
|
|
83
|
-
return `
|
|
88
|
+
return `13. **Plan and track multi-step work** — When a task spans several real steps the user would want to watch, open a \`manage-progress\` run so the work is visible while it's still in flight, and keep it updated as you go rather than after the fact; the tool's own description carries the full discipline. Skip it for single-action lookups, simple reads, and anything that finishes in one tool call — never create single-step plans.`;
|
|
84
89
|
}
|
|
90
|
+
/** Rule 14 — Collaborate through uncertainty (better-specified version). */
|
|
91
|
+
export const SHARED_RULE_14 = `14. **Collaborate through uncertainty** — If a task stalls, errors, or depends on setup the user may not know about, shift into builder-coach mode instead of repeating the same attempt. State what you verified, name the most likely next checks, and proactively try common unblockers you can inspect (for example prompt size, missing environment variables, unavailable connections, current screen state, or tool choice). When you finish a meaningful step, offer one or two concrete next steps or improvements so non-technical users can keep iterating. When you are genuinely blocked on a decision you cannot resolve from context — and a wrong guess would be costly — use \`ask-question\` to present the choice instead of guessing; otherwise prefer a reasonable assumption and keep moving.`;
|
|
85
92
|
/**
|
|
86
|
-
* Rule
|
|
87
|
-
* since the `SHARED_RULE_14`/`15` names above no longer match theirs.
|
|
93
|
+
* Rule 15 — Relay agent warnings.
|
|
88
94
|
*
|
|
89
95
|
* Load-bearing: a tool result can carry an `<agent-warning>` block raised deep
|
|
90
96
|
* inside an action (see `agent/action-warnings.ts`) for an operation the caller
|
|
@@ -92,6 +98,4 @@ export function sharedRule14(options) {
|
|
|
92
98
|
* Without this rule the model summarizes past the block and reports success,
|
|
93
99
|
* which is the incident this channel was built to prevent.
|
|
94
100
|
*/
|
|
95
|
-
export const
|
|
96
|
-
/** Rule 13 (const name retained as SHARED_RULE_15 for import stability) — Collaborate through uncertainty (better-specified version). */
|
|
97
|
-
export const SHARED_RULE_15 = `13. **Collaborate through uncertainty** — If a task stalls, errors, or depends on setup the user may not know about, shift into builder-coach mode instead of repeating the same attempt. State what you verified, name the most likely next checks, and proactively try common unblockers you can inspect (for example prompt size, missing environment variables, unavailable connections, current screen state, or tool choice). When you finish a meaningful step, offer one or two concrete next steps or improvements so non-technical users can keep iterating. When you are genuinely blocked on a decision you cannot resolve from context — and a wrong guess would be costly — use \`ask-question\` to present the choice instead of guessing; otherwise prefer a reasonable assumption and keep moving.`;
|
|
101
|
+
export const SHARED_RULE_15 = `15. **Relay \`<agent-warning>\` blocks before you report success** — A tool result may contain one or more \`<agent-warning severity="..." code="...">\` blocks. These are not part of the action's return value: they are raised by the operation the tool performed and they are the only place that consequence is reported. Never drop, bury, or paraphrase one away. On \`severity="critical"\`, stop and tell the user what happened in your own words BEFORE any success summary — lead with the consequence and the remedy the block names, do not continue a multi-step plan whose later steps depend on the affected state, and if the operation is reversible say so and offer to reverse it. On \`severity="advisory"\`, mention it in your final response. If a warning says something may already be broken, say that plainly; "done" is not an honest answer to a turn that raised a critical warning.`;
|
|
@@ -26,8 +26,8 @@ export declare function createRealtimeTokenHandler(): import("h3").EventHandlerW
|
|
|
26
26
|
expiresAt?: undefined;
|
|
27
27
|
ttlSeconds?: undefined;
|
|
28
28
|
} | {
|
|
29
|
+
error?: undefined;
|
|
29
30
|
token: string;
|
|
30
31
|
expiresAt: string;
|
|
31
32
|
ttlSeconds: number;
|
|
32
|
-
error?: undefined;
|
|
33
33
|
}>>;
|