@agent-native/core 0.145.5 → 0.145.6
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 +18 -0
- package/corpus/templates/analytics/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
- package/corpus/templates/analytics/.agents/skills/dashboard-management/SKILL.md +17 -1
- package/corpus/templates/analytics/.agents/skills/delegate-to-agent/SKILL.md +45 -47
- package/corpus/templates/analytics/.agents/skills/frontend-design/SKILL.md +1 -0
- package/corpus/templates/analytics/.agents/skills/gong/SKILL.md +22 -3
- package/corpus/templates/analytics/.agents/skills/turn-into-app/SKILL.md +76 -23
- package/corpus/templates/analytics/.agents/skills/turn-into-app/agents/openai.yaml +2 -2
- package/corpus/templates/analytics/.agents/skills/turn-into-app/references/fresh-project.md +64 -0
- package/corpus/templates/analytics/AGENTS.md +2 -1
- package/corpus/templates/analytics/actions/account-deep-dive.ts +83 -47
- package/corpus/templates/analytics/actions/create-dashboard-folder.ts +27 -0
- package/corpus/templates/analytics/actions/gong-calls.ts +3 -3
- package/corpus/templates/analytics/actions/list-dashboard-folders.ts +26 -0
- package/corpus/templates/analytics/actions/list-sql-dashboards.ts +1 -0
- package/corpus/templates/analytics/actions/set-dashboard-folder.ts +26 -0
- package/corpus/templates/analytics/app/components/ProviderCorpusJobNotifier.tsx +18 -3
- package/corpus/templates/analytics/app/components/layout/CommandPalette.tsx +6 -4
- package/corpus/templates/analytics/app/components/layout/Header.tsx +1 -0
- package/corpus/templates/analytics/app/components/layout/NewDashboardDialog.tsx +12 -2
- package/corpus/templates/analytics/app/components/layout/Sidebar.tsx +35 -20
- package/corpus/templates/analytics/app/global.css +17 -0
- package/corpus/templates/analytics/app/hooks/use-dashboard-revisions.ts +29 -15
- package/corpus/templates/analytics/app/hooks/use-dashboard-views.ts +15 -3
- package/corpus/templates/analytics/app/i18n-data.ts +296 -0
- package/corpus/templates/analytics/app/lib/prefetch-keys.ts +23 -2
- package/corpus/templates/analytics/app/pages/DashboardOverview.tsx +642 -0
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/index.tsx +66 -31
- package/corpus/templates/analytics/app/root.tsx +4 -0
- package/corpus/templates/analytics/app/routes/dashboards._index.tsx +5 -1
- package/corpus/templates/analytics/changelog/2026-08-07-added-a-dashboards-overview-with-personal-and-shared-folders.md +6 -0
- package/corpus/templates/analytics/changelog/2026-08-07-analytics-tracking-and-chat-startup-no-longer-emit-avoidable.md +6 -0
- package/corpus/templates/analytics/changelog/2026-08-07-dashboard-panels-now-load-custom-api-data-programs-reliably.md +6 -0
- package/corpus/templates/analytics/changelog/2026-08-07-gong-searches-conserve-api-quota-and-report-incomplete-coverage.md +6 -0
- package/corpus/templates/analytics/changelog/2026-08-07-searchable-dashboards-make-personal-and-shared-folders-easie.md +6 -0
- package/corpus/templates/analytics/netlify.toml +3 -0
- package/corpus/templates/analytics/scripts/emit-netlify-dashboard-report-cron.ts +112 -0
- package/corpus/templates/analytics/server/db/index.ts +12 -0
- package/corpus/templates/analytics/server/db/schema.ts +14 -0
- package/corpus/templates/analytics/server/jobs/analytics-rollup-backfill.ts +4 -0
- package/corpus/templates/analytics/server/lib/agent-chat-plan-mode.ts +1 -0
- package/corpus/templates/analytics/server/lib/analytics-query-catalog.ts +85 -15
- package/corpus/templates/analytics/server/lib/dashboard-folders-store.ts +168 -0
- package/corpus/templates/analytics/server/lib/dashboard-panel-query.ts +9 -4
- package/corpus/templates/analytics/server/lib/dashboards-store.ts +116 -1
- package/corpus/templates/analytics/server/lib/first-party-analytics-rollups.ts +4 -8
- package/corpus/templates/analytics/server/lib/gong.ts +139 -78
- package/corpus/templates/analytics/server/plugins/db.ts +55 -15
- package/corpus/templates/analytics/server/plugins/session-replay-retention-jobs.ts +6 -2
- package/corpus/templates/analytics/server/routes/api/session-replay/retention.post.ts +65 -0
- package/corpus/templates/assets/.agents/skills/actions/SKILL.md +18 -0
- package/corpus/templates/assets/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
- package/corpus/templates/assets/.agents/skills/delegate-to-agent/SKILL.md +45 -47
- package/corpus/templates/assets/.agents/skills/frontend-design/SKILL.md +1 -0
- package/corpus/templates/assets/.agents/skills/turn-into-app/SKILL.md +76 -23
- package/corpus/templates/assets/.agents/skills/turn-into-app/agents/openai.yaml +2 -2
- package/corpus/templates/assets/.agents/skills/turn-into-app/references/fresh-project.md +64 -0
- package/corpus/templates/brain/.agents/skills/actions/SKILL.md +18 -0
- package/corpus/templates/brain/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
- package/corpus/templates/brain/.agents/skills/delegate-to-agent/SKILL.md +45 -47
- package/corpus/templates/brain/.agents/skills/frontend-design/SKILL.md +1 -0
- package/corpus/templates/brain/.agents/skills/turn-into-app/SKILL.md +76 -23
- package/corpus/templates/brain/.agents/skills/turn-into-app/agents/openai.yaml +2 -2
- package/corpus/templates/brain/.agents/skills/turn-into-app/references/fresh-project.md +64 -0
- package/corpus/templates/calendar/.agents/skills/actions/SKILL.md +18 -0
- package/corpus/templates/calendar/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
- package/corpus/templates/calendar/.agents/skills/delegate-to-agent/SKILL.md +45 -47
- package/corpus/templates/calendar/.agents/skills/frontend-design/SKILL.md +1 -0
- package/corpus/templates/calendar/.agents/skills/turn-into-app/SKILL.md +76 -23
- package/corpus/templates/calendar/.agents/skills/turn-into-app/agents/openai.yaml +2 -2
- package/corpus/templates/calendar/.agents/skills/turn-into-app/references/fresh-project.md +64 -0
- package/corpus/templates/chat/.agents/skills/actions/SKILL.md +18 -0
- package/corpus/templates/chat/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
- package/corpus/templates/chat/.agents/skills/delegate-to-agent/SKILL.md +45 -47
- package/corpus/templates/chat/.agents/skills/frontend-design/SKILL.md +1 -0
- package/corpus/templates/chat/.agents/skills/turn-into-app/SKILL.md +76 -23
- package/corpus/templates/chat/.agents/skills/turn-into-app/agents/openai.yaml +2 -2
- package/corpus/templates/chat/.agents/skills/turn-into-app/references/fresh-project.md +64 -0
- package/corpus/templates/chat/.env.example +3 -0
- package/corpus/templates/chat/AGENTS.md +4 -0
- package/corpus/templates/clips/.agents/skills/actions/SKILL.md +18 -0
- package/corpus/templates/clips/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
- package/corpus/templates/clips/.agents/skills/delegate-to-agent/SKILL.md +45 -47
- package/corpus/templates/clips/.agents/skills/frontend-design/SKILL.md +1 -0
- package/corpus/templates/clips/.agents/skills/turn-into-app/SKILL.md +76 -23
- package/corpus/templates/clips/.agents/skills/turn-into-app/agents/openai.yaml +2 -2
- package/corpus/templates/clips/.agents/skills/turn-into-app/references/fresh-project.md +64 -0
- package/corpus/templates/clips/actions/lib/audio-only-transcription.ts +4 -0
- package/corpus/templates/clips/actions/request-transcript.ts +52 -3
- package/corpus/templates/clips/app/components/recorder/recorder-engine.ts +3 -10
- package/corpus/templates/clips/app/routes/r.$recordingId.tsx +1 -0
- package/corpus/templates/clips/changelog/2026-08-07-screen-recordings-now-capture-tab-and-system-audio-even-when.md +6 -0
- package/corpus/templates/clips/changelog/2026-08-07-transcription-now-retries-transient-cloud-failures-automatic.md +6 -0
- package/corpus/templates/clips/server/db/schema.ts +7 -0
- package/corpus/templates/clips/server/plugins/db.ts +8 -0
- package/corpus/templates/clips/shared/recording-capture.ts +38 -0
- package/corpus/templates/clips/shared/transcript-failure.ts +89 -0
- package/corpus/templates/content/.agents/skills/actions/SKILL.md +18 -0
- package/corpus/templates/content/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
- package/corpus/templates/content/.agents/skills/delegate-to-agent/SKILL.md +45 -47
- package/corpus/templates/content/.agents/skills/frontend-design/SKILL.md +1 -0
- package/corpus/templates/content/.agents/skills/turn-into-app/SKILL.md +76 -23
- package/corpus/templates/content/.agents/skills/turn-into-app/agents/openai.yaml +2 -2
- package/corpus/templates/content/.agents/skills/turn-into-app/references/fresh-project.md +64 -0
- package/corpus/templates/content/.env.example +9 -3
- package/corpus/templates/content/app/components/sidebar/DocumentSidebar.tsx +1 -0
- package/corpus/templates/content/changelog/2026-08-07-collapsed-sidebar-utility-buttons-stay-anchored-at-the-botto.md +6 -0
- package/corpus/templates/crm/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
- package/corpus/templates/crm/.agents/skills/turn-into-app/SKILL.md +76 -23
- package/corpus/templates/crm/.agents/skills/turn-into-app/agents/openai.yaml +2 -2
- package/corpus/templates/crm/.agents/skills/turn-into-app/references/fresh-project.md +64 -0
- package/corpus/templates/design/.agents/skills/actions/SKILL.md +18 -0
- package/corpus/templates/design/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
- package/corpus/templates/design/.agents/skills/delegate-to-agent/SKILL.md +45 -47
- package/corpus/templates/design/.agents/skills/frontend-design/SKILL.md +1 -0
- package/corpus/templates/design/.agents/skills/turn-into-app/SKILL.md +76 -23
- package/corpus/templates/design/.agents/skills/turn-into-app/agents/openai.yaml +2 -2
- package/corpus/templates/design/.agents/skills/turn-into-app/references/fresh-project.md +64 -0
- package/corpus/templates/dispatch/.agents/skills/actions/SKILL.md +18 -0
- package/corpus/templates/dispatch/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
- package/corpus/templates/dispatch/.agents/skills/delegate-to-agent/SKILL.md +45 -47
- package/corpus/templates/dispatch/.agents/skills/frontend-design/SKILL.md +1 -0
- package/corpus/templates/dispatch/.agents/skills/turn-into-app/SKILL.md +76 -23
- package/corpus/templates/dispatch/.agents/skills/turn-into-app/agents/openai.yaml +2 -2
- package/corpus/templates/dispatch/.agents/skills/turn-into-app/references/fresh-project.md +64 -0
- package/corpus/templates/factory/.agents/skills/actions/SKILL.md +18 -0
- package/corpus/templates/factory/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
- package/corpus/templates/factory/.agents/skills/delegate-to-agent/SKILL.md +45 -47
- package/corpus/templates/factory/.agents/skills/frontend-design/SKILL.md +1 -0
- package/corpus/templates/factory/.agents/skills/turn-into-app/SKILL.md +76 -23
- package/corpus/templates/factory/.agents/skills/turn-into-app/agents/openai.yaml +2 -2
- package/corpus/templates/factory/.agents/skills/turn-into-app/references/fresh-project.md +64 -0
- package/corpus/templates/factory/actions/babysit-agent-native-pull-request.ts +279 -0
- package/corpus/templates/factory/actions/get-factory-automation-health.ts +23 -4
- package/corpus/templates/factory/app/components/factory/FactoryCanvas.tsx +1 -1
- package/corpus/templates/factory/app/routes/factory.tsx +21 -3
- package/corpus/templates/factory/changelog/2026-08-07-factory-can-keep-builder-bot-pull-requests-moving-by-request.md +6 -0
- package/corpus/templates/factory/server/lib/require-factory-automation.ts +1 -0
- package/corpus/templates/factory/server/plugins/agent-chat.ts +4 -1
- package/corpus/templates/factory/server/plugins/factory-scheduler-job.ts +81 -12
- package/corpus/templates/factory/server/triage/github-client.ts +31 -0
- package/corpus/templates/factory/server/triage/pr-babysit.ts +75 -1
- package/corpus/templates/forms/.agents/skills/actions/SKILL.md +18 -0
- package/corpus/templates/forms/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
- package/corpus/templates/forms/.agents/skills/delegate-to-agent/SKILL.md +45 -47
- package/corpus/templates/forms/.agents/skills/frontend-design/SKILL.md +1 -0
- package/corpus/templates/forms/.agents/skills/turn-into-app/SKILL.md +76 -23
- package/corpus/templates/forms/.agents/skills/turn-into-app/agents/openai.yaml +2 -2
- package/corpus/templates/forms/.agents/skills/turn-into-app/references/fresh-project.md +64 -0
- package/corpus/templates/macros/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
- package/corpus/templates/macros/.agents/skills/frontend-design/SKILL.md +1 -0
- package/corpus/templates/macros/.agents/skills/turn-into-app/SKILL.md +76 -23
- package/corpus/templates/macros/.agents/skills/turn-into-app/agents/openai.yaml +2 -2
- package/corpus/templates/macros/.agents/skills/turn-into-app/references/fresh-project.md +64 -0
- package/corpus/templates/mail/.agents/skills/actions/SKILL.md +18 -0
- package/corpus/templates/mail/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
- package/corpus/templates/mail/.agents/skills/delegate-to-agent/SKILL.md +45 -47
- package/corpus/templates/mail/.agents/skills/frontend-design/SKILL.md +1 -0
- package/corpus/templates/mail/.agents/skills/turn-into-app/SKILL.md +76 -23
- package/corpus/templates/mail/.agents/skills/turn-into-app/agents/openai.yaml +2 -2
- package/corpus/templates/mail/.agents/skills/turn-into-app/references/fresh-project.md +64 -0
- package/corpus/templates/plan/.agents/skills/actions/SKILL.md +18 -0
- package/corpus/templates/plan/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
- package/corpus/templates/plan/.agents/skills/delegate-to-agent/SKILL.md +45 -47
- package/corpus/templates/plan/.agents/skills/frontend-design/SKILL.md +1 -0
- package/corpus/templates/plan/.agents/skills/turn-into-app/SKILL.md +76 -23
- package/corpus/templates/plan/.agents/skills/turn-into-app/agents/openai.yaml +2 -2
- package/corpus/templates/plan/.agents/skills/turn-into-app/references/fresh-project.md +64 -0
- package/corpus/templates/plan/app/pages/PlansPage.tsx +2 -1
- package/corpus/templates/plan/changelog/2026-08-07-inline-help-icons-now-stay-visually-balanced-with-nearby-tex.md +6 -0
- package/corpus/templates/slides/.agents/skills/actions/SKILL.md +18 -0
- package/corpus/templates/slides/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
- package/corpus/templates/slides/.agents/skills/delegate-to-agent/SKILL.md +45 -47
- package/corpus/templates/slides/.agents/skills/frontend-design/SKILL.md +1 -0
- package/corpus/templates/slides/.agents/skills/turn-into-app/SKILL.md +76 -23
- package/corpus/templates/slides/.agents/skills/turn-into-app/agents/openai.yaml +2 -2
- package/corpus/templates/slides/.agents/skills/turn-into-app/references/fresh-project.md +64 -0
- package/corpus/templates/slides/.env.example +5 -0
- package/corpus/templates/slides/changelog/2026-08-07-fixed-generated-slides-briefly-disappearing-while-they-are-b.md +6 -0
- package/corpus/templates/slides/server/plugins/collab.ts +20 -8
- package/corpus/templates/tasks/.agents/skills/actions/SKILL.md +18 -0
- package/corpus/templates/tasks/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
- package/corpus/templates/tasks/.agents/skills/delegate-to-agent/SKILL.md +45 -47
- package/corpus/templates/tasks/.agents/skills/frontend-design/SKILL.md +1 -0
- package/corpus/templates/tasks/.agents/skills/turn-into-app/SKILL.md +76 -23
- package/corpus/templates/tasks/.agents/skills/turn-into-app/agents/openai.yaml +2 -2
- package/corpus/templates/tasks/.agents/skills/turn-into-app/references/fresh-project.md +64 -0
- package/corpus/templates/tasks/.env.example +3 -0
- package/dist/agent/production-agent.js +24 -3
- package/dist/client/AgentPanel.d.ts +6 -0
- package/dist/client/AgentPanel.js +176 -30
- package/dist/client/AssistantChat.d.ts +2 -0
- package/dist/client/AssistantChat.js +4 -1
- package/dist/client/ConnectBuilderCard.js +6 -11
- package/dist/client/MultiTabAssistantChat.js +1 -1
- package/dist/client/RuntimeConfigNotice.d.ts +1 -0
- package/dist/client/RuntimeConfigNotice.js +94 -0
- package/dist/client/agent-chat/index.d.ts +1 -1
- package/dist/client/agent-chat/index.js +1 -1
- package/dist/client/agent-chat-adapter.js +85 -4
- package/dist/client/agent-page/AgentTabsPage.js +1 -1
- package/dist/client/agent-sidebar-state.d.ts +6 -0
- package/dist/client/agent-sidebar-state.js +25 -0
- package/dist/client/app-providers.js +2 -1
- package/dist/client/assistant-ui-recovery.js +1 -1
- package/dist/client/chat/index.d.ts +1 -1
- package/dist/client/chat/index.js +1 -1
- package/dist/client/chat/markdown-renderer.d.ts +2 -1
- package/dist/client/chat/markdown-renderer.js +48 -2
- package/dist/client/chat/message-components.d.ts +6 -0
- package/dist/client/chat/message-components.js +182 -53
- package/dist/client/chat/tool-call-display.d.ts +16 -4
- package/dist/client/chat/tool-call-display.js +225 -18
- package/dist/client/extensions/ExtensionsSidebarSection.js +1 -1
- package/dist/client/frame-protocol.d.ts +4 -0
- package/dist/client/i18n.js +9 -0
- package/dist/client/integrations/IntegrationsPanel.js +2 -5
- package/dist/client/onboarding/FirstRunOnboarding.js +2 -3
- package/dist/client/org/TeamPage.js +49 -6
- package/dist/client/org/hooks.d.ts +7 -2
- package/dist/client/org/hooks.js +11 -4
- package/dist/client/resources/McpConnectionSuggestion.js +2 -3
- package/dist/client/resources/McpIntegrationDialog.js +2 -16
- package/dist/client/resources/McpIntegrationLogo.d.ts +11 -0
- package/dist/client/resources/McpIntegrationLogo.js +14 -0
- package/dist/client/resources/ResourceTree.js +1 -1
- package/dist/client/resources/mcp-integration-logos.d.ts +1 -0
- package/dist/client/resources/mcp-integration-logos.js +47 -18
- package/dist/client/settings/useBuilderStatus.js +6 -0
- package/dist/client/ui/index.d.ts +1 -0
- package/dist/client/ui/index.js +1 -0
- package/dist/collab/routes.d.ts +1 -1
- package/dist/config.d.ts +26 -3
- package/dist/config.js +106 -14
- package/dist/db/ddl-guard.d.ts +15 -2
- package/dist/db/ddl-guard.js +53 -5
- package/dist/jobs/scheduler.js +7 -0
- package/dist/localization/default-messages.d.ts +17 -0
- package/dist/localization/default-messages.js +17 -0
- package/dist/mcp/oauth-client-metadata.js +5 -1
- package/dist/mcp/oauth-route.d.ts +5 -4
- package/dist/mcp/oauth-route.js +25 -9
- package/dist/mcp/screen-memory-stdio.d.ts +7 -7
- package/dist/mcp/server.d.ts +1 -1
- package/dist/mcp/server.js +9 -10
- package/dist/notifications/routes.d.ts +3 -3
- package/dist/org/handlers.d.ts +1 -0
- package/dist/org/handlers.js +17 -2
- package/dist/provider-api/actions/custom-provider-registration.d.ts +5 -5
- package/dist/provider-api/actions/provider-api.d.ts +7 -7
- package/dist/provider-api/corpus-jobs.d.ts +12 -2
- package/dist/provider-api/corpus-jobs.js +31 -1
- package/dist/provider-api/index.d.ts +2 -0
- package/dist/provider-api/index.js +7 -1
- package/dist/resources/handlers.d.ts +1 -1
- package/dist/secrets/routes.d.ts +3 -3
- package/dist/server/agent-chat/recurring-jobs-runtime.d.ts +1 -1
- package/dist/server/agent-chat/recurring-jobs-runtime.js +14 -2
- package/dist/server/agent-chat/script-entries.js +12 -1
- package/dist/server/agent-chat-plugin.js +2 -2
- package/dist/server/agent-engine-api-key-route.d.ts +1 -1
- package/dist/server/auth.d.ts +1 -0
- package/dist/server/auth.js +85 -1
- package/dist/server/better-auth-instance.d.ts +9 -0
- package/dist/server/better-auth-instance.js +25 -11
- package/dist/server/core-routes-plugin.d.ts +7 -0
- package/dist/server/core-routes-plugin.js +51 -5
- package/dist/server/create-server.js +23 -2
- package/dist/server/db-pressure.d.ts +38 -0
- package/dist/server/db-pressure.js +147 -0
- package/dist/server/index.d.ts +1 -0
- package/dist/server/index.js +1 -0
- package/dist/server/legacy-auth-migration.d.ts +10 -0
- package/dist/server/legacy-auth-migration.js +37 -0
- package/dist/server/onboarding-html.js +206 -2
- package/dist/server/poll.d.ts +26 -0
- package/dist/server/poll.js +108 -13
- package/dist/server/ssr-handler.js +4 -1
- package/dist/shared/index.d.ts +1 -0
- package/dist/shared/index.js +1 -0
- package/dist/shared/runtime-config.d.ts +44 -0
- package/dist/shared/runtime-config.js +284 -0
- package/dist/styles/agent-native.css +48 -1
- package/dist/templates/chat/.agents/skills/actions/SKILL.md +18 -0
- package/dist/templates/chat/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
- package/dist/templates/chat/.agents/skills/delegate-to-agent/SKILL.md +45 -47
- package/dist/templates/chat/.agents/skills/frontend-design/SKILL.md +1 -0
- package/dist/templates/chat/.agents/skills/turn-into-app/SKILL.md +76 -23
- package/dist/templates/chat/.agents/skills/turn-into-app/agents/openai.yaml +2 -2
- package/dist/templates/chat/.agents/skills/turn-into-app/references/fresh-project.md +64 -0
- package/dist/templates/chat/.env.example +3 -0
- package/dist/templates/chat/AGENTS.md +4 -0
- package/dist/templates/default/.agents/skills/actions/SKILL.md +18 -0
- package/dist/templates/default/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
- package/dist/templates/default/.agents/skills/delegate-to-agent/SKILL.md +45 -47
- package/dist/templates/default/.agents/skills/frontend-design/SKILL.md +1 -0
- package/dist/templates/default/.agents/skills/turn-into-app/SKILL.md +76 -23
- package/dist/templates/default/.agents/skills/turn-into-app/agents/openai.yaml +2 -2
- package/dist/templates/default/.agents/skills/turn-into-app/references/fresh-project.md +64 -0
- package/dist/templates/default/AGENTS.md +6 -1
- package/dist/templates/default/app/i18n/ar-SA.ts +6 -0
- package/dist/templates/default/app/i18n/de-DE.ts +6 -0
- package/dist/templates/default/app/i18n/en-US.ts +6 -0
- package/dist/templates/default/app/i18n/es-ES.ts +6 -0
- package/dist/templates/default/app/i18n/fr-FR.ts +6 -0
- package/dist/templates/default/app/i18n/hi-IN.ts +6 -0
- package/dist/templates/default/app/i18n/ja-JP.ts +6 -0
- package/dist/templates/default/app/i18n/ko-KR.ts +6 -0
- package/dist/templates/default/app/i18n/pt-BR.ts +6 -0
- package/dist/templates/default/app/i18n/zh-CN.ts +6 -0
- package/dist/templates/default/app/i18n/zh-TW.ts +6 -0
- package/dist/templates/headless/.agents/skills/actions/SKILL.md +18 -0
- package/dist/templates/headless/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
- package/dist/templates/headless/.agents/skills/turn-into-app/SKILL.md +76 -23
- package/dist/templates/headless/.agents/skills/turn-into-app/agents/openai.yaml +2 -2
- package/dist/templates/headless/.agents/skills/turn-into-app/references/fresh-project.md +64 -0
- package/dist/templates/workspace-core/.agents/skills/actions/SKILL.md +18 -0
- package/dist/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
- package/dist/templates/workspace-core/.agents/skills/delegate-to-agent/SKILL.md +45 -47
- package/dist/templates/workspace-core/.agents/skills/frontend-design/SKILL.md +1 -0
- package/dist/templates/workspace-core/.agents/skills/turn-into-app/SKILL.md +76 -23
- package/dist/templates/workspace-core/.agents/skills/turn-into-app/agents/openai.yaml +2 -2
- package/dist/templates/workspace-core/.agents/skills/turn-into-app/references/fresh-project.md +64 -0
- package/dist/templates/workspace-core/.agents/skills/workspace-conventions/SKILL.md +4 -0
- package/dist/templates/workspace-core/.agents/skills/writing-agent-instructions/SKILL.md +8 -0
- package/dist/templates/workspace-core/AGENTS.md +7 -2
- package/dist/templates/workspace-root/AGENTS.md +5 -0
- package/dist/vite/client.d.ts +3 -3
- package/dist/vite/client.js +47 -1
- package/dist/vite/index.d.ts +1 -1
- package/docs/content/agent-native-config.mdx +240 -139
- package/docs/content/authentication.mdx +17 -0
- package/docs/content/deployment.mdx +19 -14
- package/docs/content/drop-in-agent.mdx +19 -2
- package/docs/content/environment-variables.mdx +63 -38
- package/docs/content/getting-started-actions.mdx +15 -6
- package/docs/content/getting-started-database.mdx +14 -10
- package/docs/content/getting-started-pages.mdx +32 -35
- package/docs/content/getting-started.mdx +7 -6
- package/package.json +1 -1
- package/src/templates/chat/.agents/skills/actions/SKILL.md +18 -0
- package/src/templates/chat/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
- package/src/templates/chat/.agents/skills/delegate-to-agent/SKILL.md +45 -47
- package/src/templates/chat/.agents/skills/frontend-design/SKILL.md +1 -0
- package/src/templates/chat/.agents/skills/turn-into-app/SKILL.md +76 -23
- package/src/templates/chat/.agents/skills/turn-into-app/agents/openai.yaml +2 -2
- package/src/templates/chat/.agents/skills/turn-into-app/references/fresh-project.md +64 -0
- package/src/templates/chat/.env.example +3 -0
- package/src/templates/chat/AGENTS.md +4 -0
- package/src/templates/default/.agents/skills/actions/SKILL.md +18 -0
- package/src/templates/default/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
- package/src/templates/default/.agents/skills/delegate-to-agent/SKILL.md +45 -47
- package/src/templates/default/.agents/skills/frontend-design/SKILL.md +1 -0
- package/src/templates/default/.agents/skills/turn-into-app/SKILL.md +76 -23
- package/src/templates/default/.agents/skills/turn-into-app/agents/openai.yaml +2 -2
- package/src/templates/default/.agents/skills/turn-into-app/references/fresh-project.md +64 -0
- package/src/templates/default/AGENTS.md +6 -1
- package/src/templates/default/app/i18n/ar-SA.ts +6 -0
- package/src/templates/default/app/i18n/de-DE.ts +6 -0
- package/src/templates/default/app/i18n/en-US.ts +6 -0
- package/src/templates/default/app/i18n/es-ES.ts +6 -0
- package/src/templates/default/app/i18n/fr-FR.ts +6 -0
- package/src/templates/default/app/i18n/hi-IN.ts +6 -0
- package/src/templates/default/app/i18n/ja-JP.ts +6 -0
- package/src/templates/default/app/i18n/ko-KR.ts +6 -0
- package/src/templates/default/app/i18n/pt-BR.ts +6 -0
- package/src/templates/default/app/i18n/zh-CN.ts +6 -0
- package/src/templates/default/app/i18n/zh-TW.ts +6 -0
- package/src/templates/headless/.agents/skills/actions/SKILL.md +18 -0
- package/src/templates/headless/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
- package/src/templates/headless/.agents/skills/turn-into-app/SKILL.md +76 -23
- package/src/templates/headless/.agents/skills/turn-into-app/agents/openai.yaml +2 -2
- package/src/templates/headless/.agents/skills/turn-into-app/references/fresh-project.md +64 -0
- package/src/templates/workspace-core/.agents/skills/actions/SKILL.md +18 -0
- package/src/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
- package/src/templates/workspace-core/.agents/skills/delegate-to-agent/SKILL.md +45 -47
- package/src/templates/workspace-core/.agents/skills/frontend-design/SKILL.md +1 -0
- package/src/templates/workspace-core/.agents/skills/turn-into-app/SKILL.md +76 -23
- package/src/templates/workspace-core/.agents/skills/turn-into-app/agents/openai.yaml +2 -2
- package/src/templates/workspace-core/.agents/skills/turn-into-app/references/fresh-project.md +64 -0
- package/src/templates/workspace-core/.agents/skills/workspace-conventions/SKILL.md +4 -0
- package/src/templates/workspace-core/.agents/skills/writing-agent-instructions/SKILL.md +8 -0
- package/src/templates/workspace-core/AGENTS.md +7 -2
- package/src/templates/workspace-root/AGENTS.md +5 -0
- package/corpus/templates/dispatch/app/routes/admin.apps.$appId.tsx +0 -1
- package/corpus/templates/dispatch/app/routes/admin.apps.tsx +0 -1
|
@@ -14,12 +14,12 @@ import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel,
|
|
|
14
14
|
import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, } from "../components/ui/tooltip.js";
|
|
15
15
|
import { ThumbsFeedback } from "../observability/ThumbsFeedback.js";
|
|
16
16
|
import { McpConnectionSuggestion } from "../resources/McpConnectionSuggestion.js";
|
|
17
|
-
import { isCallAgentToolCallShadowed, shadowedCallAgentToolCallIds, } from "../tool-display.js";
|
|
17
|
+
import { humanizeToolName, isCallAgentToolCallShadowed, shadowedCallAgentToolCallIds, } from "../tool-display.js";
|
|
18
18
|
import { cn } from "../utils.js";
|
|
19
|
-
import { MarkdownText, renderMarkdownToClipboardHtml, } from "./markdown-renderer.js";
|
|
19
|
+
import { MarkdownText, renderMarkdownToClipboardHtml, SmoothMarkdownText, } from "./markdown-renderer.js";
|
|
20
20
|
import { getAssistantRunDurationMs } from "./repo-helpers.js";
|
|
21
21
|
import { getRunErrorMetadata, runErrorHeadline, runErrorKey, } from "./run-recovery.js";
|
|
22
|
-
import { ToolCallFallback, ToolActivityPresentation, FilesChangedSummary, ASSISTANT_VISIBLE_TOOL_CALL_LIMIT, ChatRunningContext, ChatRunDurationContext, formatWorkedDuration, RanToolsSummary, ReasoningCell, WorkedForSummary, toolCallHasPendingApproval, } from "./tool-call-display.js";
|
|
22
|
+
import { ToolCallFallback, ToolActivityPresentation, ToolCallStackMotion, FilesChangedSummary, ASSISTANT_VISIBLE_TOOL_CALL_LIMIT, ChatRunningContext, ChatRunDurationContext, formatWorkedDuration, RanToolsSummary, ReasoningCell, WorkedForSummary, toolCallHasPendingApproval, } from "./tool-call-display.js";
|
|
23
23
|
export { toolCallHasPendingApproval };
|
|
24
24
|
// ─── Pending selection context key ───────────────────────────────────────────
|
|
25
25
|
// Mirrored from AssistantChat to avoid a cross-import on a private constant.
|
|
@@ -438,6 +438,72 @@ export function messageTextFromContent(content) {
|
|
|
438
438
|
})
|
|
439
439
|
.join("\n");
|
|
440
440
|
}
|
|
441
|
+
export function isMissingFinalResponseWarningText(text) {
|
|
442
|
+
const normalized = text.trim();
|
|
443
|
+
if (normalized ===
|
|
444
|
+
"The agent stopped without sending a final message. Ask the agent to continue or retry.") {
|
|
445
|
+
return true;
|
|
446
|
+
}
|
|
447
|
+
return (normalized.includes("stopped before sending a final message") ||
|
|
448
|
+
normalized.includes("stopped without sending a final message"));
|
|
449
|
+
}
|
|
450
|
+
function finalResponseTextFromContent(content) {
|
|
451
|
+
if (typeof content === "string")
|
|
452
|
+
return content;
|
|
453
|
+
if (!Array.isArray(content))
|
|
454
|
+
return "";
|
|
455
|
+
return content
|
|
456
|
+
.flatMap((part) => {
|
|
457
|
+
if (!part || typeof part !== "object")
|
|
458
|
+
return [];
|
|
459
|
+
const record = part;
|
|
460
|
+
if (record.type !== "text" ||
|
|
461
|
+
typeof record.text !== "string" ||
|
|
462
|
+
isMissingFinalResponseWarningText(record.text)) {
|
|
463
|
+
return [];
|
|
464
|
+
}
|
|
465
|
+
return [record.text];
|
|
466
|
+
})
|
|
467
|
+
.join("\n");
|
|
468
|
+
}
|
|
469
|
+
function missingFinalResponseWarningText(content) {
|
|
470
|
+
if (!Array.isArray(content))
|
|
471
|
+
return null;
|
|
472
|
+
for (let index = content.length - 1; index >= 0; index -= 1) {
|
|
473
|
+
const part = content[index];
|
|
474
|
+
if (part &&
|
|
475
|
+
typeof part === "object" &&
|
|
476
|
+
part.type === "text" &&
|
|
477
|
+
typeof part.text === "string" &&
|
|
478
|
+
isMissingFinalResponseWarningText(part.text)) {
|
|
479
|
+
return part.text;
|
|
480
|
+
}
|
|
481
|
+
}
|
|
482
|
+
return null;
|
|
483
|
+
}
|
|
484
|
+
export function completedAssistantToolNamesAfterLastText(content) {
|
|
485
|
+
let lastTextIndex = -1;
|
|
486
|
+
for (let index = content.length - 1; index >= 0; index -= 1) {
|
|
487
|
+
if (content[index]?.type === "text") {
|
|
488
|
+
lastTextIndex = index;
|
|
489
|
+
break;
|
|
490
|
+
}
|
|
491
|
+
}
|
|
492
|
+
const names = new Set();
|
|
493
|
+
for (let index = lastTextIndex + 1; index < content.length; index += 1) {
|
|
494
|
+
const part = content[index];
|
|
495
|
+
if (part?.type !== "tool-call" ||
|
|
496
|
+
part.activity === true ||
|
|
497
|
+
part.result === undefined ||
|
|
498
|
+
part.isError === true ||
|
|
499
|
+
part.outcome === "unknown" ||
|
|
500
|
+
isCallAgentToolCallShadowed(content, index)) {
|
|
501
|
+
continue;
|
|
502
|
+
}
|
|
503
|
+
names.add(humanizeToolName(part.toolName));
|
|
504
|
+
}
|
|
505
|
+
return [...names];
|
|
506
|
+
}
|
|
441
507
|
export function latestUserMessageText(messages) {
|
|
442
508
|
for (let index = messages.length - 1; index >= 0; index -= 1) {
|
|
443
509
|
const message = messages[index];
|
|
@@ -507,7 +573,8 @@ export function assistantMessageHasCompletedCustomUi(content) {
|
|
|
507
573
|
}
|
|
508
574
|
hasCompletedTool = true;
|
|
509
575
|
lastCompletedToolIsCustomUi =
|
|
510
|
-
record
|
|
576
|
+
isAlwaysVisibleAssistantTool(record) ||
|
|
577
|
+
record.chatUI !== undefined ||
|
|
511
578
|
record.mcpApp !== undefined ||
|
|
512
579
|
toolCallHasPendingApproval(record);
|
|
513
580
|
}
|
|
@@ -521,7 +588,8 @@ export function assistantMessageHasCustomUi(content) {
|
|
|
521
588
|
return false;
|
|
522
589
|
const record = part;
|
|
523
590
|
return (record.type === "tool-call" &&
|
|
524
|
-
(record
|
|
591
|
+
(isAlwaysVisibleAssistantTool(record) ||
|
|
592
|
+
record.chatUI !== undefined ||
|
|
525
593
|
record.mcpApp !== undefined ||
|
|
526
594
|
toolCallHasPendingApproval(record)));
|
|
527
595
|
});
|
|
@@ -573,7 +641,7 @@ export function shouldShowMissingFinalResponse({ isCurrentTurnRunning, serverRun
|
|
|
573
641
|
* still alive server-side. Requiring the shape to hold for a beat keeps the
|
|
574
642
|
* notice off the screen for those gaps without hiding a real stop for long.
|
|
575
643
|
*/
|
|
576
|
-
const MISSING_FINAL_RESPONSE_SETTLE_MS =
|
|
644
|
+
const MISSING_FINAL_RESPONSE_SETTLE_MS = 250;
|
|
577
645
|
export function useSettledFlag(active, delayMs) {
|
|
578
646
|
const [settled, setSettled] = useState(false);
|
|
579
647
|
useEffect(() => {
|
|
@@ -627,11 +695,16 @@ function ReasoningMessagePart() {
|
|
|
627
695
|
return (_jsx(ReasoningCell, { text: part.text, isStreaming: isStreaming, resetKey: `message-reasoning-${partIndex}`, durationMs: durationMs, defaultOpen: partIndex === latestReasoningPartIndex, collapseWhenReplaced: partIndex < latestReasoningPartIndex }));
|
|
628
696
|
}
|
|
629
697
|
const ALWAYS_VISIBLE_ASSISTANT_TOOLS = new Set(["connect-builder"]);
|
|
698
|
+
export function isAlwaysVisibleAssistantTool(part) {
|
|
699
|
+
return (part.type === "tool-call" &&
|
|
700
|
+
typeof part.toolName === "string" &&
|
|
701
|
+
ALWAYS_VISIBLE_ASSISTANT_TOOLS.has(part.toolName));
|
|
702
|
+
}
|
|
630
703
|
export function isCollapsibleAssistantWorkPart(part) {
|
|
631
704
|
if (part.type === "reasoning")
|
|
632
705
|
return true;
|
|
633
706
|
return (part.type === "tool-call" &&
|
|
634
|
-
!
|
|
707
|
+
!isAlwaysVisibleAssistantTool(part) &&
|
|
635
708
|
part.chatUI === undefined &&
|
|
636
709
|
part.mcpApp === undefined &&
|
|
637
710
|
// Keep the Approve/Deny affordance outside "Worked for…" - needsApproval
|
|
@@ -705,6 +778,14 @@ export function InlineRunErrorNotice({ info, durationMs, onRetry, }) {
|
|
|
705
778
|
: headline;
|
|
706
779
|
return (_jsxs("div", { className: "my-1 w-full", children: [_jsxs("button", { type: "button", onClick: () => setOpen((v) => !v), "aria-expanded": open, className: "flex cursor-pointer items-center gap-1.5 py-0.5 text-[13px] text-muted-foreground transition-colors hover:text-foreground", children: [_jsx(IconAlertTriangle, { className: "size-3.5 shrink-0 text-amber-500" }), _jsx("span", { className: "truncate", children: label }), _jsx(IconChevronRight, { className: cn("size-3.5 shrink-0 transition-transform", open && "rotate-90") })] }), open && (_jsxs("div", { className: "mt-1 rounded-md border border-border/60 bg-background/70 p-2 text-[11px] leading-relaxed text-muted-foreground", children: [_jsx("p", { className: "whitespace-pre-wrap break-words", children: info.message }), info.errorCode && (_jsxs("div", { className: "mt-1 font-mono", children: ["code: ", info.errorCode] })), info.runId && _jsxs("div", { className: "font-mono", children: ["run: ", info.runId] }), info.details && (_jsx("pre", { className: "mt-1 max-h-28 overflow-auto whitespace-pre-wrap break-words font-mono", children: info.details })), onRetry && (_jsxs("button", { type: "button", onClick: onRetry, className: "mt-2 inline-flex h-7 cursor-pointer items-center gap-1.5 rounded-md border border-border bg-background px-2.5 text-[11px] font-medium text-foreground hover:bg-accent", children: [_jsx(IconRefresh, { className: "size-3" }), "Retry"] }))] }))] }));
|
|
707
780
|
}
|
|
781
|
+
function AssistantCompletionProgress({ messageId, toolNames, }) {
|
|
782
|
+
if (toolNames.length === 0)
|
|
783
|
+
return null;
|
|
784
|
+
return (_jsx("div", { className: "my-1 w-full text-[13px] text-muted-foreground", role: "status", "aria-live": "polite", "data-testid": "assistant-completion-progress", children: _jsx(SmoothMarkdownText, { text: `The agent completed these actions: ${toolNames.join(", ")}`, streaming: true, resetKey: `assistant-completion-progress:${messageId}`, statusType: "running" }) }));
|
|
785
|
+
}
|
|
786
|
+
function MissingFinalResponseNotice({ messageId, text, animate, onRevealComplete, }) {
|
|
787
|
+
return (_jsx("div", { className: "my-1 w-full text-muted-foreground", role: "status", "aria-live": "polite", "data-testid": "missing-final-response", children: _jsx(SmoothMarkdownText, { text: text, streaming: animate, resetKey: `missing-final-response:${messageId}`, statusType: animate ? "running" : "complete", onRevealComplete: animate ? onRevealComplete : undefined }) }));
|
|
788
|
+
}
|
|
708
789
|
export function AssistantMessage() {
|
|
709
790
|
const [restoreState, setRestoreState] = useState("idle");
|
|
710
791
|
const [restoreError, setRestoreError] = useState(null);
|
|
@@ -717,9 +798,11 @@ export function AssistantMessage() {
|
|
|
717
798
|
const timestamp = formatMessageTimestamp(msg.createdAt);
|
|
718
799
|
const isLast = thread.messages.length > 0 &&
|
|
719
800
|
thread.messages[thread.messages.length - 1].id === msg.id;
|
|
801
|
+
const wasLiveRef = useRef(false);
|
|
720
802
|
const hasRenderableContent = assistantMessageHasRenderableContent(msg);
|
|
721
803
|
const hasUnresolvedTool = assistantMessageHasUnresolvedTool(msg.content);
|
|
722
|
-
const
|
|
804
|
+
const missingWarningText = missingFinalResponseWarningText(msg.content);
|
|
805
|
+
const responseConnectionText = finalResponseTextFromContent(msg.content);
|
|
723
806
|
const statusIsTerminal = assistantMessageStatusIsTerminal(msg);
|
|
724
807
|
const hasCompletedCustomUi = assistantMessageHasCompletedCustomUi(msg.content);
|
|
725
808
|
const hasCustomUi = assistantMessageHasCustomUi(msg.content);
|
|
@@ -730,23 +813,63 @@ export function AssistantMessage() {
|
|
|
730
813
|
runError: messageRunError,
|
|
731
814
|
bannerRunErrorKey: messageActions?.bannerRunErrorKey,
|
|
732
815
|
});
|
|
733
|
-
const
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
816
|
+
const missingFinalResponseCandidate = missingWarningText == null &&
|
|
817
|
+
shouldShowMissingFinalResponse({
|
|
818
|
+
isCurrentTurnRunning: isLast && chatRunning,
|
|
819
|
+
serverRunActive: isLast && serverRunActive,
|
|
820
|
+
statusIsTerminal,
|
|
821
|
+
hasAssistantText: responseConnectionText.trim().length > 0,
|
|
822
|
+
hasUnresolvedTool,
|
|
823
|
+
hasCompletedCustomUi,
|
|
824
|
+
});
|
|
825
|
+
const showMissingFinalResponse = useSettledFlag(missingFinalResponseCandidate, isLast ? MISSING_FINAL_RESPONSE_SETTLE_MS : 0);
|
|
826
|
+
const missingFinalResponseNoticeText = missingWarningText ??
|
|
827
|
+
(showMissingFinalResponse
|
|
828
|
+
? "The agent stopped without sending a final message. Ask the agent to continue or retry."
|
|
829
|
+
: null);
|
|
830
|
+
const animateMissingFinalResponse = Boolean(isLast && missingFinalResponseNoticeText && wasLiveRef.current);
|
|
831
|
+
const missingFinalResponseAnimationKey = animateMissingFinalResponse
|
|
832
|
+
? missingFinalResponseNoticeText
|
|
833
|
+
: null;
|
|
834
|
+
const [revealedMissingFinalResponseKey, setRevealedMissingFinalResponseKey] = useState(null);
|
|
835
|
+
useEffect(() => {
|
|
836
|
+
if (missingFinalResponseAnimationKey == null) {
|
|
837
|
+
setRevealedMissingFinalResponseKey(null);
|
|
838
|
+
return;
|
|
839
|
+
}
|
|
840
|
+
setRevealedMissingFinalResponseKey((current) => current === missingFinalResponseAnimationKey ? current : null);
|
|
841
|
+
}, [missingFinalResponseAnimationKey]);
|
|
842
|
+
const missingFinalResponseRevealed = missingFinalResponseAnimationKey == null ||
|
|
843
|
+
revealedMissingFinalResponseKey === missingFinalResponseAnimationKey;
|
|
844
|
+
const handleMissingFinalResponseReveal = useCallback(() => {
|
|
845
|
+
if (missingFinalResponseAnimationKey == null)
|
|
846
|
+
return;
|
|
847
|
+
setRevealedMissingFinalResponseKey(missingFinalResponseAnimationKey);
|
|
848
|
+
}, [missingFinalResponseAnimationKey]);
|
|
849
|
+
const completedToolNames = isLast && chatRunning && !hasCompletedCustomUi && Array.isArray(msg.content)
|
|
850
|
+
? completedAssistantToolNamesAfterLastText(msg.content)
|
|
851
|
+
: [];
|
|
852
|
+
const shouldHoldCompletionFooter = isLast &&
|
|
853
|
+
((missingFinalResponseCandidate && !showMissingFinalResponse) ||
|
|
854
|
+
(animateMissingFinalResponse && !missingFinalResponseRevealed));
|
|
741
855
|
const responseConnectionContext = userMessageTextBeforeAssistant(thread.messages, msg.id);
|
|
742
|
-
const isComplete =
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
856
|
+
const isComplete = !shouldHoldCompletionFooter &&
|
|
857
|
+
shouldShowAssistantMessageFooter({
|
|
858
|
+
isLast,
|
|
859
|
+
chatRunning,
|
|
860
|
+
hasRenderableContent,
|
|
861
|
+
statusIsTerminal,
|
|
862
|
+
hasUnresolvedTool,
|
|
863
|
+
});
|
|
749
864
|
const cpCtx = React.useContext(CheckpointContext);
|
|
865
|
+
useEffect(() => {
|
|
866
|
+
if (isLast && chatRunning) {
|
|
867
|
+
wasLiveRef.current = true;
|
|
868
|
+
}
|
|
869
|
+
else if (!isLast) {
|
|
870
|
+
wasLiveRef.current = false;
|
|
871
|
+
}
|
|
872
|
+
}, [chatRunning, isLast]);
|
|
750
873
|
// Capture live run duration when this message finishes streaming.
|
|
751
874
|
const runStartedAtRef = useRef(null);
|
|
752
875
|
const [capturedDurationMs, setCapturedDurationMs] = useState(null);
|
|
@@ -844,38 +967,44 @@ export function AssistantMessage() {
|
|
|
844
967
|
});
|
|
845
968
|
if (!hasRenderableContent)
|
|
846
969
|
return null;
|
|
847
|
-
return (_jsxs("div", { className: "group relative", style: { contentVisibility: isComplete ? "auto" : "visible" }, children: [_jsxs("div", { className: "w-full max-w-[95%] text-sm leading-relaxed text-foreground", children: [_jsx(MessagePrimitive.GroupedParts, { groupBy: groupAssistantWorkParts, children: ({ part, children }) => {
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
970
|
+
return (_jsxs("div", { className: "group relative", style: { contentVisibility: isComplete ? "auto" : "visible" }, children: [_jsxs("div", { className: "w-full max-w-[95%] text-sm leading-relaxed text-foreground", children: [_jsx(ToolCallStackMotion, { children: _jsx(MessagePrimitive.GroupedParts, { groupBy: groupAssistantWorkParts, children: ({ part, children }) => {
|
|
971
|
+
switch (part.type) {
|
|
972
|
+
case "group-work": {
|
|
973
|
+
const showSummary = shouldShowAssistantWorkSummary({
|
|
974
|
+
isLast,
|
|
975
|
+
isComplete,
|
|
976
|
+
hasCollapsibleWork,
|
|
977
|
+
hasUnresolvedTool,
|
|
978
|
+
chatRunning,
|
|
979
|
+
});
|
|
980
|
+
if (!showSummary)
|
|
981
|
+
return _jsx(_Fragment, { children: children });
|
|
982
|
+
return (_jsx(WorkedForSummary, { durationMs: capturedDurationMs ?? persistedDurationMs, defaultOpen: hasCustomUi, autoCollapse: animateCollapse && !hasCustomUi, children: children }));
|
|
983
|
+
}
|
|
984
|
+
case "group-ran-tools": {
|
|
985
|
+
const toolCount = part.indices.filter((index) => msgContent?.[index]?.type === "tool-call").length;
|
|
986
|
+
return (_jsx(RanToolsSummary, { toolCount: toolCount, children: children }));
|
|
987
|
+
}
|
|
988
|
+
case "text":
|
|
989
|
+
if (missingWarningText != null &&
|
|
990
|
+
part.text === missingWarningText) {
|
|
991
|
+
return (_jsx(MissingFinalResponseNotice, { messageId: msg.id, text: part.text, animate: animateMissingFinalResponse, onRevealComplete: handleMissingFinalResponseReveal }));
|
|
992
|
+
}
|
|
993
|
+
return _jsx(MarkdownText, {});
|
|
994
|
+
case "reasoning":
|
|
995
|
+
return _jsx(ReasoningMessagePart, {});
|
|
996
|
+
case "tool-call":
|
|
997
|
+
if (shadowedToolCallIds.has(part.toolCallId))
|
|
998
|
+
return null;
|
|
999
|
+
return part.toolUI ? (_jsx(ToolActivityPresentation, { toolName: part.toolName, isRunning: part.status?.type === "running", isActiveTail: part.toolCallId === activeTailToolCallId, toolCallId: part.toolCallId, children: part.toolUI })) : (_jsx(ToolCallFallback, { ...part, isActiveTail: part.toolCallId === activeTailToolCallId }));
|
|
1000
|
+
default:
|
|
871
1001
|
return null;
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
return null;
|
|
875
|
-
}
|
|
876
|
-
} }), showInlineRunError && messageRunError && (_jsx(InlineRunErrorNotice, { info: messageRunError, durationMs: capturedDurationMs ?? persistedDurationMs, onRetry: isLast && messageRunError.recoverable
|
|
1002
|
+
}
|
|
1003
|
+
} }) }), completedToolNames.length > 0 && !showInlineRunError && (_jsx(AssistantCompletionProgress, { messageId: msg.id, toolNames: completedToolNames })), showInlineRunError && messageRunError && (_jsx(InlineRunErrorNotice, { info: messageRunError, durationMs: capturedDurationMs ?? persistedDurationMs, onRetry: isLast && messageRunError.recoverable
|
|
877
1004
|
? messageActions?.onRetryRunError
|
|
878
|
-
: undefined })),
|
|
1005
|
+
: undefined })), missingWarningText == null &&
|
|
1006
|
+
missingFinalResponseNoticeText != null &&
|
|
1007
|
+
!showInlineRunError && (_jsx(MissingFinalResponseNotice, { messageId: msg.id, text: missingFinalResponseNoticeText, animate: animateMissingFinalResponse, onRevealComplete: handleMissingFinalResponseReveal })), isComplete && hasCodeAgentTools && msgContent && (_jsx(FilesChangedSummary, { parts: msgContent })), isComplete && (_jsx(McpConnectionSuggestion, { text: responseConnectionText, contextText: responseConnectionContext, variant: "response" }))] }), isComplete && (_jsxs("div", { className: "mt-1 flex items-center justify-between", children: [_jsxs("div", { className: "flex min-w-0 items-center gap-1", children: [_jsx(MessageActionsMenu, { showRevert: showRestore && restoreState === "idle", onRevert: handleRestore }), isLast && (_jsx(TooltipProvider, { delayDuration: 400, children: _jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx(ActionBarPrimitive.Reload, { asChild: true, children: _jsx("button", { type: "button", "aria-label": "Regenerate response", className: `flex h-6 w-6 cursor-pointer items-center justify-center rounded-md text-muted-foreground/70 hover:bg-accent hover:text-foreground ${messageFooterFadeClassName} disabled:cursor-not-allowed disabled:opacity-40`, children: _jsx(IconRefresh, { className: "h-3.5 w-3.5" }) }) }) }), _jsx(TooltipContent, { side: "top", className: "text-xs", children: "Regenerate response" })] }) })), _jsx(MessageBranchPicker, {}), timestamp && (_jsx(MessageTimestamp, { timestamp: timestamp, className: messageFooterFadeClassName }))] }), showRestore && restoreState === "confirming" ? (_jsxs("div", { className: "flex items-center gap-1 text-xs", children: [_jsx("button", { onClick: handleRestore, className: "rounded-md bg-destructive px-1.5 py-0.5 text-destructive-foreground hover:bg-destructive/90", children: "Restore to here?" }), _jsx("button", { onClick: cancelRestore, className: "rounded-md px-1.5 py-0.5 text-muted-foreground hover:bg-accent", children: "Cancel" })] })) : showRestore && restoreState === "restoring" ? (_jsxs("span", { className: "flex items-center gap-1 text-xs text-muted-foreground", children: [_jsx(IconLoader2, { className: "h-3 w-3 animate-spin" }), "Restoring..."] })) : restoreState === "error" ? (_jsxs("span", { className: "flex items-center gap-1 text-xs text-destructive", children: [_jsx(IconAlertTriangle, { className: "h-3 w-3 shrink-0" }), _jsx("span", { className: "truncate", children: restoreError }), _jsx("button", { onClick: cancelRestore, className: "cursor-pointer rounded-md px-1.5 py-0.5 text-muted-foreground hover:bg-accent", children: "Dismiss" })] })) : (_jsx(ThumbsFeedback, { threadId: cpCtx?.threadId ?? "", runId: messageRunId ?? "", messageSeq: thread.messages.findIndex((m) => m.id === msg.id) }))] }))] }));
|
|
879
1008
|
}
|
|
880
1009
|
// ─── RunningActivityStatus / ThinkingIndicator ────────────────────────────────
|
|
881
1010
|
export function RunningActivityStatus({ label }) {
|
|
@@ -7,6 +7,15 @@ import { FilesChangedSummary } from "../tool-cells/index.js";
|
|
|
7
7
|
export declare const ChatRunningContext: React.Context<boolean>;
|
|
8
8
|
export declare const ChatRunDurationContext: React.Context<number | null>;
|
|
9
9
|
export declare const ASSISTANT_VISIBLE_TOOL_CALL_LIMIT = 3;
|
|
10
|
+
/**
|
|
11
|
+
* Keeps the visible tool stack spatially continuous as streaming calls change
|
|
12
|
+
* which rows belong to the collapsed history bucket. The rendered data stays
|
|
13
|
+
* untouched; this only animates the DOM's before/after positions.
|
|
14
|
+
*/
|
|
15
|
+
export declare function ToolCallStackMotion({ children, className, }: {
|
|
16
|
+
children: React.ReactNode;
|
|
17
|
+
className?: string;
|
|
18
|
+
}): React.JSX.Element;
|
|
10
19
|
/**
|
|
11
20
|
* Human-in-the-loop approval bridge. `AssistantChatInner` provides a value that
|
|
12
21
|
* re-issues the turn approving a specific paused tool call (opt-in
|
|
@@ -38,10 +47,11 @@ export declare function toolCallHasPendingApproval(part: {
|
|
|
38
47
|
} | null;
|
|
39
48
|
}): boolean;
|
|
40
49
|
export declare const TOOL_LONG_RUNNING_HINT_DELAY_MS = 45000;
|
|
41
|
-
export declare function ToolActivityPresentation({ toolName, isRunning, isActiveTail, suppressLongRunningHint, children, }: {
|
|
50
|
+
export declare function ToolActivityPresentation({ toolName, isRunning, isActiveTail, toolCallId, suppressLongRunningHint, children, }: {
|
|
42
51
|
toolName: string;
|
|
43
52
|
isRunning: boolean;
|
|
44
53
|
isActiveTail: boolean;
|
|
54
|
+
toolCallId?: string;
|
|
45
55
|
suppressLongRunningHint?: boolean;
|
|
46
56
|
children: React.ReactNode;
|
|
47
57
|
}): React.JSX.Element;
|
|
@@ -59,8 +69,9 @@ export declare function AnimatedCollapse({ open, children, }: {
|
|
|
59
69
|
open: boolean;
|
|
60
70
|
children: React.ReactNode;
|
|
61
71
|
}): React.JSX.Element | null;
|
|
62
|
-
export declare function ToolCallDisplay({ toolName, argsText, args, result, mcpApp, chatUI, isRunning, outcome, structuredMeta, approval, repeatCount, isLatestRunning, isActiveTail, }: {
|
|
72
|
+
export declare function ToolCallDisplay({ toolName, toolCallId, argsText, args, result, mcpApp, chatUI, isRunning, outcome, structuredMeta, approval, repeatCount, isLatestRunning, isActiveTail, }: {
|
|
63
73
|
toolName: string;
|
|
74
|
+
toolCallId?: string;
|
|
64
75
|
argsText?: string;
|
|
65
76
|
args: Record<string, unknown>;
|
|
66
77
|
result?: string;
|
|
@@ -80,7 +91,7 @@ export declare function ToolCallDisplay({ toolName, argsText, args, result, mcpA
|
|
|
80
91
|
/** @deprecated Use isActiveTail. */
|
|
81
92
|
isLatestRunning?: boolean;
|
|
82
93
|
}): React.JSX.Element;
|
|
83
|
-
export declare function ToolCallFallback({ toolName, args, argsText, result, ...rest }: ToolCallMessagePartProps & {
|
|
94
|
+
export declare function ToolCallFallback({ toolName, toolCallId, args, argsText, result, ...rest }: ToolCallMessagePartProps & {
|
|
84
95
|
mcpApp?: AgentMcpAppPayload;
|
|
85
96
|
chatUI?: ActionChatUIConfig;
|
|
86
97
|
structuredMeta?: Record<string, unknown>;
|
|
@@ -126,8 +137,9 @@ export declare function WorkedForSummary({ durationMs, defaultOpen, autoCollapse
|
|
|
126
137
|
autoCollapse?: boolean;
|
|
127
138
|
children: React.ReactNode;
|
|
128
139
|
}): React.JSX.Element;
|
|
129
|
-
export declare function RanToolsSummary({ toolCount, children, }: {
|
|
140
|
+
export declare function RanToolsSummary({ toolCount, motionKey, children, }: {
|
|
130
141
|
toolCount: number;
|
|
142
|
+
motionKey?: string;
|
|
131
143
|
children: React.ReactNode;
|
|
132
144
|
}): React.JSX.Element;
|
|
133
145
|
export { FilesChangedSummary };
|