@agent-native/core 0.97.0 → 0.98.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/corpus/README.md +2 -2
- package/corpus/core/CHANGELOG.md +56 -0
- package/corpus/core/docs/content/authentication.mdx +3 -3
- package/corpus/core/docs/content/doctor.mdx +170 -0
- package/corpus/core/docs/content/external-agents.mdx +8 -7
- package/corpus/core/docs/content/locales/ar-SA/authentication.mdx +2 -2
- package/corpus/core/docs/content/locales/ar-SA/external-agents.mdx +8 -7
- package/corpus/core/docs/content/locales/ar-SA/mcp-protocol.mdx +1 -1
- package/corpus/core/docs/content/locales/ar-SA/security.mdx +2 -0
- package/corpus/core/docs/content/locales/de-DE/authentication.mdx +1 -1
- package/corpus/core/docs/content/locales/de-DE/external-agents.mdx +8 -7
- package/corpus/core/docs/content/locales/de-DE/mcp-protocol.mdx +1 -1
- package/corpus/core/docs/content/locales/de-DE/security.mdx +2 -0
- package/corpus/core/docs/content/locales/es-ES/authentication.mdx +2 -2
- package/corpus/core/docs/content/locales/es-ES/external-agents.mdx +8 -7
- package/corpus/core/docs/content/locales/es-ES/mcp-protocol.mdx +1 -1
- package/corpus/core/docs/content/locales/es-ES/security.mdx +2 -0
- package/corpus/core/docs/content/locales/fr-FR/authentication.mdx +1 -1
- package/corpus/core/docs/content/locales/fr-FR/external-agents.mdx +8 -7
- package/corpus/core/docs/content/locales/fr-FR/mcp-protocol.mdx +1 -1
- package/corpus/core/docs/content/locales/fr-FR/security.mdx +2 -0
- package/corpus/core/docs/content/locales/hi-IN/authentication.mdx +2 -2
- package/corpus/core/docs/content/locales/hi-IN/external-agents.mdx +8 -7
- package/corpus/core/docs/content/locales/hi-IN/mcp-protocol.mdx +1 -1
- package/corpus/core/docs/content/locales/hi-IN/security.mdx +2 -0
- package/corpus/core/docs/content/locales/ja-JP/authentication.mdx +2 -2
- package/corpus/core/docs/content/locales/ja-JP/external-agents.mdx +8 -7
- package/corpus/core/docs/content/locales/ja-JP/mcp-protocol.mdx +1 -1
- package/corpus/core/docs/content/locales/ja-JP/security.mdx +2 -0
- package/corpus/core/docs/content/locales/ko-KR/authentication.mdx +2 -2
- package/corpus/core/docs/content/locales/ko-KR/external-agents.mdx +8 -7
- package/corpus/core/docs/content/locales/ko-KR/mcp-protocol.mdx +1 -1
- package/corpus/core/docs/content/locales/ko-KR/security.mdx +2 -0
- package/corpus/core/docs/content/locales/pt-BR/authentication.mdx +2 -2
- package/corpus/core/docs/content/locales/pt-BR/external-agents.mdx +8 -7
- package/corpus/core/docs/content/locales/pt-BR/mcp-protocol.mdx +1 -1
- package/corpus/core/docs/content/locales/pt-BR/security.mdx +2 -0
- package/corpus/core/docs/content/locales/zh-CN/authentication.mdx +2 -2
- package/corpus/core/docs/content/locales/zh-CN/external-agents.mdx +8 -7
- package/corpus/core/docs/content/locales/zh-CN/mcp-protocol.mdx +1 -1
- package/corpus/core/docs/content/locales/zh-CN/security.mdx +2 -0
- package/corpus/core/docs/content/locales/zh-TW/authentication.mdx +2 -2
- package/corpus/core/docs/content/locales/zh-TW/external-agents.mdx +8 -7
- package/corpus/core/docs/content/locales/zh-TW/mcp-protocol.mdx +1 -1
- package/corpus/core/docs/content/locales/zh-TW/security.mdx +2 -0
- package/corpus/core/docs/content/mcp-protocol.mdx +1 -1
- package/corpus/core/docs/content/security.mdx +2 -0
- package/corpus/core/package.json +6 -2
- package/corpus/core/scripts/finalize-build.mjs +63 -3
- package/corpus/core/scripts/materialize-source-corpus.mjs +101 -15
- package/corpus/core/src/action-change-marker.ts +8 -1
- package/corpus/core/src/action.ts +42 -0
- package/corpus/core/src/agent/engine/builder-engine.ts +3 -0
- package/corpus/core/src/agent/engine/context-directives-transform.ts +69 -0
- package/corpus/core/src/agent/engine/continuation-dispatch-retry.ts +168 -0
- package/corpus/core/src/agent/engine/tool-call-journal-seed.ts +85 -0
- package/corpus/core/src/agent/production-agent.ts +129 -244
- package/corpus/core/src/changelog/parse.ts +8 -3
- package/corpus/core/src/cli/doctor.ts +9 -3
- package/corpus/core/src/cli/plan-local.ts +10 -2
- package/corpus/core/src/cli/skills-content/assets-skill.ts +83 -0
- package/corpus/core/src/cli/skills-content/canvas.ts +153 -0
- package/corpus/core/src/cli/skills-content/connection.ts +52 -0
- package/corpus/core/src/cli/skills-content/content-skill.ts +109 -0
- package/corpus/core/src/cli/skills-content/design-exploration-skill.ts +118 -0
- package/corpus/core/src/cli/skills-content/design-visual-edit-skill.ts +228 -0
- package/corpus/core/src/cli/skills-content/document-quality.ts +196 -0
- package/corpus/core/src/cli/skills-content/exemplar.ts +69 -0
- package/corpus/core/src/cli/skills-content/help.ts +77 -0
- package/corpus/core/src/cli/skills-content/index.ts +22 -0
- package/corpus/core/src/cli/skills-content/local-files.ts +95 -0
- package/corpus/core/src/cli/skills-content/plan-setup-auth.ts +80 -0
- package/corpus/core/src/cli/skills-content/visual-plan-skill.ts +470 -0
- package/corpus/core/src/cli/skills-content/visual-recap-skill.ts +547 -0
- package/corpus/core/src/cli/skills-content/visualize-repo-skill.ts +93 -0
- package/corpus/core/src/cli/skills-content/wireframe.ts +349 -0
- package/corpus/core/src/cli/skills.ts +27 -2733
- package/corpus/core/src/client/AgentPanel.tsx +8 -8
- package/corpus/core/src/client/AssistantChat.tsx +83 -39
- package/corpus/core/src/client/CommandMenu.tsx +16 -5
- package/corpus/core/src/client/FeedbackButton.tsx +2 -2
- package/corpus/core/src/client/analytics.ts +29 -0
- package/corpus/core/src/client/app-providers.tsx +18 -5
- package/corpus/core/src/client/blocks/library/wireframe-kit.tsx +16 -2
- package/corpus/core/src/client/chat/tool-call-display.tsx +3 -3
- package/corpus/core/src/client/chat-model-groups.ts +28 -0
- package/corpus/core/src/client/composer/PastedTextChip.tsx +1 -1
- package/corpus/core/src/client/composer/RealtimeVoiceMode.tsx +523 -68
- package/corpus/core/src/client/composer/TiptapComposer.tsx +47 -30
- package/corpus/core/src/client/composer/VoiceButton.tsx +22 -5
- package/corpus/core/src/client/composer/index.ts +5 -0
- package/corpus/core/src/client/composer/useRealtimeVoiceMode.tsx +1271 -35
- package/corpus/core/src/client/context-xray/ContextXRayPanel.tsx +5 -2
- package/corpus/core/src/client/extensions/ExtensionEditor.tsx +37 -4
- package/corpus/core/src/client/extensions/ExtensionQueryErrorState.tsx +47 -0
- package/corpus/core/src/client/extensions/ExtensionSlot.tsx +39 -10
- package/corpus/core/src/client/extensions/ExtensionViewer.tsx +44 -6
- package/corpus/core/src/client/extensions/ExtensionsListPage.tsx +12 -3
- package/corpus/core/src/client/extensions/ExtensionsSidebarSection.tsx +49 -11
- package/corpus/core/src/client/index.ts +5 -13
- package/corpus/core/src/client/progress/RunsTray.tsx +23 -4
- package/corpus/core/src/client/settings/SecretsSection.tsx +387 -266
- package/corpus/core/src/client/settings/SettingsPanel.tsx +117 -38
- package/corpus/core/src/client/settings/SettingsTabsPage.tsx +7 -0
- package/corpus/core/src/client/settings/useBuilderStatus.ts +6 -0
- package/corpus/core/src/client/tool-cells/EditCell.tsx +19 -16
- package/corpus/core/src/client/tool-cells/FilesChangedSummary.tsx +26 -23
- package/corpus/core/src/client/tool-cells/WriteCell.tsx +19 -16
- package/corpus/core/src/client/use-action.ts +12 -0
- package/corpus/core/src/client/use-agent-chat-home-handoff.ts +8 -1
- package/corpus/core/src/client/use-agent-engine-configured.ts +17 -3
- package/corpus/core/src/client/use-db-sync.ts +84 -34
- package/corpus/core/src/client/use-pausing-interval.ts +14 -4
- package/corpus/core/src/client/visual-style-controls.tsx +1 -1
- package/corpus/core/src/deploy/build.ts +36 -14
- package/corpus/core/src/integrations/google-docs-poller.ts +23 -2
- package/corpus/core/src/integrations/plugin.ts +10 -0
- package/corpus/core/src/integrations/scope-store.ts +1 -1
- package/corpus/core/src/integrations/usage-budget-store.ts +1 -1
- package/corpus/core/src/integrations/webhook-handler.ts +27 -2
- package/corpus/core/src/jobs/scheduler.ts +28 -2
- package/corpus/core/src/localization/default-messages.ts +51 -1
- package/corpus/core/src/mcp/oauth-token.ts +6 -1
- package/corpus/core/src/mcp-client/workspace-servers.ts +4 -4
- package/corpus/core/src/observability/routes.ts +36 -0
- package/corpus/core/src/observability/sentiment.ts +261 -0
- package/corpus/core/src/observability/store.ts +23 -0
- package/corpus/core/src/observability/traces.ts +49 -63
- package/corpus/core/src/observability/tracking-identity.ts +55 -0
- package/corpus/core/src/observability/types.ts +13 -0
- package/corpus/core/src/secrets/crypto.ts +28 -8
- package/corpus/core/src/secrets/storage.ts +67 -3
- package/corpus/core/src/server/action-change.ts +5 -1
- package/corpus/core/src/server/action-routes.ts +8 -0
- package/corpus/core/src/server/agent-chat/action-filters-a2a.ts +199 -0
- package/corpus/core/src/server/agent-chat/browser-team-tools.ts +510 -0
- package/corpus/core/src/server/agent-chat/context-tools.ts +595 -0
- package/corpus/core/src/server/agent-chat/framework-prompts.ts +470 -0
- package/corpus/core/src/server/agent-chat/lazy-fs.ts +11 -0
- package/corpus/core/src/server/agent-chat/mcp-glue.ts +91 -0
- package/corpus/core/src/server/agent-chat/plugin-options.ts +350 -0
- package/corpus/core/src/server/agent-chat/process-run-failure.ts +62 -0
- package/corpus/core/src/server/agent-chat/prompt-resources.ts +688 -0
- package/corpus/core/src/server/agent-chat/recurring-jobs-runtime.ts +80 -0
- package/corpus/core/src/server/agent-chat/request-surface.ts +71 -0
- package/corpus/core/src/server/agent-chat/run-code-tools.ts +67 -0
- package/corpus/core/src/server/agent-chat/script-entries.ts +779 -0
- package/corpus/core/src/server/agent-chat/shared-thread.ts +301 -0
- package/corpus/core/src/server/agent-chat/skill-frontmatter.ts +41 -0
- package/corpus/core/src/server/agent-chat-plugin.ts +364 -4182
- package/corpus/core/src/server/agent-teams.ts +26 -3
- package/corpus/core/src/server/auth.ts +55 -57
- package/corpus/core/src/server/credential-provider.ts +22 -25
- package/corpus/core/src/server/edge.ts +1 -0
- package/corpus/core/src/server/onboarding-html.ts +1 -16
- package/corpus/core/src/server/poll.ts +1 -0
- package/corpus/core/src/server/realtime-voice.ts +335 -14
- package/corpus/core/src/server/request-origin.ts +6 -2
- package/corpus/core/src/server/ssr-handler.ts +55 -2
- package/corpus/core/src/sharing/access.ts +155 -11
- package/corpus/core/src/sharing/registry.ts +7 -0
- package/corpus/core/src/styles/agent-native.css +17 -16
- package/corpus/core/src/templates/default/.agents/skills/frontend-design/SKILL.md +1 -1
- package/corpus/core/src/templates/default/.agents/skills/real-time-sync/SKILL.md +2 -2
- package/corpus/core/src/templates/default/app/i18n/ar-SA.ts +6 -0
- package/corpus/core/src/templates/default/app/i18n/de-DE.ts +6 -0
- package/corpus/core/src/templates/default/app/i18n/en-US.ts +6 -0
- package/corpus/core/src/templates/default/app/i18n/es-ES.ts +6 -0
- package/corpus/core/src/templates/default/app/i18n/fr-FR.ts +6 -0
- package/corpus/core/src/templates/default/app/i18n/hi-IN.ts +6 -0
- package/corpus/core/src/templates/default/app/i18n/ja-JP.ts +6 -0
- package/corpus/core/src/templates/default/app/i18n/ko-KR.ts +6 -0
- package/corpus/core/src/templates/default/app/i18n/pt-BR.ts +6 -0
- package/corpus/core/src/templates/default/app/i18n/zh-CN.ts +6 -0
- package/corpus/core/src/templates/default/app/i18n/zh-TW.ts +6 -0
- package/corpus/core/src/templates/workspace-core/.agents/skills/authentication/SKILL.md +27 -29
- package/corpus/core/src/templates/workspace-core/.agents/skills/external-agents/SKILL.md +2 -1
- package/corpus/core/src/templates/workspace-core/.agents/skills/frontend-design/SKILL.md +1 -1
- package/corpus/core/src/templates/workspace-core/.agents/skills/observability/SKILL.md +32 -0
- package/corpus/core/src/templates/workspace-core/.agents/skills/real-time-sync/SKILL.md +2 -2
- package/corpus/core/src/templates/workspace-core/.agents/skills/secrets/SKILL.md +7 -3
- package/corpus/core/src/templates/workspace-core/.agents/skills/voice-transcription/SKILL.md +39 -9
- package/corpus/core/src/templates/workspace-core/.agents/skills/writing-agent-instructions/SKILL.md +25 -0
- package/corpus/core/src/templates/workspace-core/src/server/index.ts +4 -2
- package/corpus/core/src/testing.ts +26 -0
- package/corpus/core/src/triggers/dispatcher.ts +23 -2
- package/corpus/core/src/vite/client.ts +135 -3
- package/corpus/core/tsconfig.cli.json +1 -1
- package/corpus/core/tsconfig.json +5 -1
- package/corpus/templates/analytics/.agents/skills/bigquery/SKILL.md +2 -2
- package/corpus/templates/analytics/.agents/skills/frontend-design/SKILL.md +1 -1
- package/corpus/templates/analytics/.agents/skills/real-time-sync/SKILL.md +2 -2
- package/corpus/templates/analytics/.agents/skills/session-replay/SKILL.md +10 -5
- package/corpus/templates/analytics/AGENTS.md +15 -6
- package/corpus/templates/analytics/actions/install-dashboard-template.ts +79 -43
- package/corpus/templates/analytics/actions/list-explorer-dashboards.ts +3 -3
- package/corpus/templates/analytics/actions/list-sql-dashboards.ts +8 -3
- package/corpus/templates/analytics/actions/navigate.ts +59 -5
- package/corpus/templates/analytics/actions/rename-analysis.ts +8 -2
- package/corpus/templates/analytics/actions/rename-dashboard.ts +8 -7
- package/corpus/templates/analytics/actions/view-screen.ts +7 -29
- package/corpus/templates/analytics/app/components/ProviderCorpusJobNotifier.tsx +20 -3
- package/corpus/templates/analytics/app/components/ResourceLoadError.tsx +42 -0
- package/corpus/templates/analytics/app/components/dashboard/SqlChart.tsx +2 -1
- package/corpus/templates/analytics/app/components/layout/CommandPalette.tsx +85 -70
- package/corpus/templates/analytics/app/components/layout/Header.tsx +1 -1
- package/corpus/templates/analytics/app/components/layout/Sidebar.tsx +128 -95
- package/corpus/templates/analytics/app/components/layout/SidebarLoadError.tsx +24 -0
- package/corpus/templates/analytics/app/global.css +19 -20
- package/corpus/templates/analytics/app/hooks/use-dashboard-views.ts +15 -5
- package/corpus/templates/analytics/app/i18n/zh-TW.ts +4 -0
- package/corpus/templates/analytics/app/i18n-data.ts +40 -0
- package/corpus/templates/analytics/app/lib/provider-corpus-job-sync.ts +26 -0
- package/corpus/templates/analytics/app/pages/Settings.tsx +41 -343
- package/corpus/templates/analytics/app/pages/adhoc/explorer/components/SqlPreview.tsx +36 -20
- package/corpus/templates/analytics/app/pages/adhoc/explorer/index.tsx +34 -20
- package/corpus/templates/analytics/app/pages/adhoc/explorer/use-explorer-config.ts +42 -41
- package/corpus/templates/analytics/app/pages/adhoc/explorer-dashboard/index.tsx +43 -36
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/ViewsMenu.tsx +11 -2
- package/corpus/templates/analytics/app/pages/monitoring/ErrorsPanel.tsx +38 -7
- package/corpus/templates/analytics/app/pages/monitoring/MonitoringPage.tsx +1 -1
- package/corpus/templates/analytics/app/pages/monitoring/errors/i18n.ts +3 -0
- package/corpus/templates/analytics/app/pages/sessions/SessionDetailPage.tsx +333 -272
- package/corpus/templates/analytics/app/pages/sessions/SessionDevToolsPanel.tsx +72 -17
- package/corpus/templates/analytics/app/pages/sessions/SessionsPage.tsx +297 -108
- package/corpus/templates/analytics/app/root.tsx +40 -8
- package/corpus/templates/analytics/app/routes/_index.tsx +14 -2
- package/corpus/templates/analytics/changelog/2026-06-24-first-party-signup-and-pageview-panels-now-honor-dashboard-filters.md +2 -1
- package/corpus/templates/analytics/changelog/2026-06-25-referrer-dashboard-panels-show-external-domains.md +2 -1
- package/corpus/templates/analytics/changelog/2026-07-03-agent-llm-observability-dashboard.md +1 -1
- package/corpus/templates/analytics/changelog/2026-07-06-mobile-chat-header-is-more-compact-and-the-menu-button-opens-navigation.md +1 -0
- package/corpus/templates/analytics/changelog/2026-07-08-dashboard-history-and-chat-context.md +1 -0
- package/corpus/templates/analytics/changelog/2026-07-08-settings-are-cleaner-searchable-and-alerts-have-their-own-tab.md +1 -0
- package/corpus/templates/analytics/changelog/2026-07-08-sidebar-sections-stay-collapsed-until-opened.md +1 -0
- package/corpus/templates/analytics/changelog/2026-07-11-agent-feedback-sentiment-dashboard.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-11-analytics-chats-now-start-faster-by-loading-metric-definitio.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-11-analytics-no-longer-repeatedly-restarts-background-requests-.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-11-analytics-only-asks-for-replay-storage-when-you-enable-sessi.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-11-charts-now-show-their-loading-skeleton-while-refreshing.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-11-command-and-sql-previews-now-respond-without-lag.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-11-command-search-now-reports-loading-failures-and-lets-you-ret.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-11-dashboard-navigation-now-loads-faster-and-reports-request-fa.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-11-inferred-message-sentiment-dashboard.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-11-microphone-settings-from-realtime-voice-mode-now-open-the-vo.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-11-more-dashboard-edit-paths-are-now-safe-against-simultaneous-.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-11-realtime-voice-now-shows-a-clear-connection-indicator-comple.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-11-renaming-a-dashboard-is-now-safe-against-simultaneous-agent-.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-11-renaming-an-analysis-is-now-safe-against-simultaneous-edits.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-11-replay-event-counts-stay-hidden-until-recordings-finish-load.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-11-replay-storage-key-mismatches-show-actionable-setup-guidance.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-11-replay-timelines-group-continuous-scrolling-and-dev-tools-co.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-11-session-filters-now-stay-compact-in-a-settings-menu-at-mediu.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-11-session-replay-console-errors-now-link-to-matching-issues-or.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-11-session-replays-load-large-recordings-faster-and-surface-fai.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-11-session-replays-preserve-recorded-styles-and-viewport-layout.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-11-session-replays-stay-centered-instead-of-clipping-wide-recor.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-11-workspace-mounted-analytics-now-opens-ask-reliably-and-route.md +6 -0
- package/corpus/templates/analytics/docs/schemas/first-party-analytics.md +37 -3
- package/corpus/templates/analytics/package.json +1 -1
- package/corpus/templates/analytics/seeds/dashboards/agent-native-templates-first-party.json +37 -1
- package/corpus/templates/analytics/server/handlers/session-replay.ts +57 -0
- package/corpus/templates/analytics/server/lib/dashboard-catalog.ts +1 -24
- package/corpus/templates/analytics/server/lib/dashboard-seeds.ts +0 -5
- package/corpus/templates/analytics/server/lib/dashboards-store.ts +289 -20
- package/corpus/templates/analytics/server/lib/data-dictionary-context.ts +106 -34
- package/corpus/templates/analytics/server/lib/demo-dashboards.ts +20 -4
- package/corpus/templates/analytics/server/lib/session-replay-agent-context.ts +12 -0
- package/corpus/templates/analytics/server/lib/session-replay.ts +208 -2
- package/corpus/templates/analytics/server/plugins/agent-chat.ts +11 -39
- package/corpus/templates/analytics/server/plugins/onboarding.ts +7 -79
- package/corpus/templates/analytics/server/routes/api/session-replay/recordings/[recordingId]/chunks.get.ts +1 -0
- package/corpus/templates/assets/.agents/skills/frontend-design/SKILL.md +1 -1
- package/corpus/templates/assets/.agents/skills/real-time-sync/SKILL.md +2 -2
- package/corpus/templates/assets/app/components/create/RecentDraftsSection.tsx +30 -4
- package/corpus/templates/assets/app/global.css +4 -4
- package/corpus/templates/assets/app/routes/brand-kits.$id.tsx +0 -1
- package/corpus/templates/assets/app/routes/library.tsx +49 -6
- package/corpus/templates/assets/changelog/2026-07-11-library-load-failures-now-show-a-retry-action.md +6 -0
- package/corpus/templates/brain/.agents/skills/frontend-design/SKILL.md +1 -1
- package/corpus/templates/brain/.agents/skills/real-time-sync/SKILL.md +2 -2
- package/corpus/templates/brain/app/global.css +5 -5
- package/corpus/templates/brain/app/root.tsx +0 -3
- package/corpus/templates/calendar/.agents/skills/frontend-design/SKILL.md +1 -1
- package/corpus/templates/calendar/.agents/skills/real-time-sync/SKILL.md +2 -2
- package/corpus/templates/calendar/.env.example +5 -0
- package/corpus/templates/calendar/app/components/calendar/EventCard.tsx +2 -2
- package/corpus/templates/calendar/app/i18n/zh-TW.ts +2 -0
- package/corpus/templates/calendar/app/i18n-data.ts +20 -0
- package/corpus/templates/calendar/app/pages/BookingLinksPage.tsx +37 -1
- package/corpus/templates/calendar/app/pages/BookingsList.tsx +20 -3
- package/corpus/templates/calendar/app/root.tsx +1 -0
- package/corpus/templates/calendar/changelog/2026-07-11-booking-load-failures-now-show-a-retry-action.md +6 -0
- package/corpus/templates/calendar/changelog/2026-07-11-event-cards-give-subtle-press-feedback-and-smoother-hover.md +6 -0
- package/corpus/templates/chat/.agents/skills/frontend-design/SKILL.md +1 -1
- package/corpus/templates/chat/.agents/skills/real-time-sync/SKILL.md +2 -2
- package/corpus/templates/clips/.agents/skills/frontend-design/SKILL.md +1 -1
- package/corpus/templates/clips/actions/decline-invite.ts +8 -0
- package/corpus/templates/clips/app/components/library/folder-tree.tsx +209 -187
- package/corpus/templates/clips/app/components/meetings/meeting-card.tsx +2 -2
- package/corpus/templates/clips/app/components/player/reactions-tray.tsx +17 -5
- package/corpus/templates/clips/app/components/player/scrubber.tsx +5 -3
- package/corpus/templates/clips/app/components/recorder/pre-record-panel.tsx +2 -2
- package/corpus/templates/clips/app/components/workspace/insights-hub.tsx +119 -95
- package/corpus/templates/clips/app/global.css +45 -0
- package/corpus/templates/clips/app/hooks/use-auto-title.ts +74 -8
- package/corpus/templates/clips/app/hooks/use-library.ts +12 -25
- package/corpus/templates/clips/app/root.tsx +4 -0
- package/corpus/templates/clips/app/routes/_app.notifications.tsx +23 -2
- package/corpus/templates/clips/app/routes/_app.settings._index.tsx +20 -22
- package/corpus/templates/clips/app/routes/_app.trash.tsx +24 -2
- package/corpus/templates/clips/changelog/2026-07-11-controls-and-folders-now-move-more-smoothly.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-11-declining-an-invitation-now-requires-being-its-recipient.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-11-generated-titles-no-longer-cause-continuous-background-refreshes.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-11-recording-overlays-are-lighter-weight-and-no-longer-cause-pa.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-11-s3-storage-setup-stays-collapsed-until-you-choose-it-as-the-.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-11-workspace-load-failures-now-show-a-retry-action.md +6 -0
- package/corpus/templates/clips/chrome-extension/src/overlay.css +34 -5
- package/corpus/templates/clips/chrome-extension/src/styles.css +2 -2
- package/corpus/templates/clips/desktop/src/styles.css +71 -26
- package/corpus/templates/content/.agents/skills/frontend-design/SKILL.md +1 -1
- package/corpus/templates/content/.agents/skills/real-time-sync/SKILL.md +2 -2
- package/corpus/templates/content/actions/move-document.ts +34 -18
- package/corpus/templates/content/app/components/QueryErrorState.tsx +39 -0
- package/corpus/templates/content/app/components/editor/LinkHoverPreview.tsx +1 -1
- package/corpus/templates/content/app/components/editor/database/DatabaseView.tsx +225 -1435
- package/corpus/templates/content/app/components/editor/database/GalleryView.tsx +368 -0
- package/corpus/templates/content/app/components/editor/database/ListView.tsx +353 -0
- package/corpus/templates/content/app/components/editor/database/TimelineView.tsx +580 -0
- package/corpus/templates/content/app/components/sidebar/DocumentSidebar.tsx +11 -2
- package/corpus/templates/content/app/global.css +19 -19
- package/corpus/templates/content/app/hooks/use-comments.ts +0 -1
- package/corpus/templates/content/app/root.tsx +2 -2
- package/corpus/templates/content/app/routes/_app._index.tsx +11 -1
- package/corpus/templates/content/changelog/2026-07-11-comments-now-update-from-live-collaboration-events-without-c.md +6 -0
- package/corpus/templates/content/changelog/2026-07-11-document-load-failures-now-show-a-retry-action.md +6 -0
- package/corpus/templates/content/changelog/2026-07-11-editor-toggle-feedback-now-feels-more-responsive.md +6 -0
- package/corpus/templates/content/changelog/2026-07-11-moving-documents-at-the-same-time-no-longer-scrambles-their-.md +6 -0
- package/corpus/templates/content/changelog/2026-07-11-public-document-chats-now-start-faster-while-keeping-full-do.md +6 -0
- package/corpus/templates/content/changelog/2026-07-11-reopening-a-comment-now-uses-consistent-permissions-everywhe.md +6 -0
- package/corpus/templates/content/changelog/2026-07-11-sidebar-resizing-now-tracks-your-cursor-instantly-instead-of.md +6 -0
- package/corpus/templates/content/server/lib/public-documents.ts +47 -10
- package/corpus/templates/content/server/routes/api/comments/[id].patch.ts +24 -24
- package/corpus/templates/design/.agents/skills/frontend-design/SKILL.md +1 -1
- package/corpus/templates/design/app/components/QueryErrorState.tsx +24 -0
- package/corpus/templates/design/app/components/design/CanvasContextMenu.tsx +1 -1
- package/corpus/templates/design/app/components/design/DesignImportPanel.tsx +5 -2
- package/corpus/templates/design/app/components/design/EditPanel.tsx +326 -319
- package/corpus/templates/design/app/components/design/LayersPanel.tsx +198 -193
- package/corpus/templates/design/app/components/design/edit-panel/panel-primitives.tsx +11 -4
- package/corpus/templates/design/app/components/design/inspector/DesignColorPicker.tsx +1 -1
- package/corpus/templates/design/app/components/layout/Header.tsx +1 -1
- package/corpus/templates/design/app/components/layout/Layout.tsx +1 -1
- package/corpus/templates/design/app/pages/DesignSystems.tsx +7 -1
- package/corpus/templates/design/app/pages/Index.tsx +14 -2
- package/corpus/templates/design/app/pages/Present.tsx +16 -3
- package/corpus/templates/design/app/pages/Templates.tsx +10 -4
- package/corpus/templates/design/app/pages/design-editor/canvas-primitive-insert.ts +484 -0
- package/corpus/templates/design/app/pages/design-editor/clone-and-pen-edit.ts +378 -0
- package/corpus/templates/design/app/pages/design-editor/design-data-geometry-utils.ts +138 -0
- package/corpus/templates/design/app/pages/design-editor/dom-utils.ts +15 -0
- package/corpus/templates/design/app/pages/design-editor/generation-prompt-directives.ts +180 -0
- package/corpus/templates/design/app/pages/design-editor/html-layer-positioning.ts +226 -0
- package/corpus/templates/design/app/pages/design-editor/png-export-render.ts +348 -0
- package/corpus/templates/design/app/pages/design-editor/screen-command-utils.ts +160 -0
- package/corpus/templates/design/app/pages/design-editor/text-edit-utils.ts +238 -0
- package/corpus/templates/design/app/pages/design-editor/tool-state.ts +23 -1
- package/corpus/templates/design/app/pages/design-editor/types.ts +25 -0
- package/corpus/templates/design/app/root.tsx +10 -1
- package/corpus/templates/design/changelog/2026-07-11-canvas-context-menus-now-open-without-motion-jitter.md +6 -0
- package/corpus/templates/design/changelog/2026-07-11-design-load-failures-now-show-a-retry-action.md +6 -0
- package/corpus/templates/design/changelog/2026-07-11-inspector-tooltips-appear-instantly-as-you-sweep-across-icon.md +6 -0
- package/corpus/templates/dispatch/.agents/skills/frontend-design/SKILL.md +1 -1
- package/corpus/templates/dispatch/app/i18n/zh-TW.ts +10 -0
- package/corpus/templates/dispatch/app/i18n-data.ts +123 -0
- package/corpus/templates/dispatch/app/routes/integrations.tsx +163 -144
- package/corpus/templates/dispatch/changelog/2026-07-11-dispatch-mcp-connections-now-start-with-safer-app-access-and.md +6 -0
- package/corpus/templates/dispatch/changelog/2026-07-11-overview-and-chat-now-share-a-cleaner-more-stable-flow.md +6 -0
- package/corpus/templates/dispatch/changelog/2026-07-11-query-errors-now-show-a-retry-option.md +6 -0
- package/corpus/templates/forms/.agents/skills/frontend-design/SKILL.md +1 -1
- package/corpus/templates/forms/.agents/skills/real-time-sync/SKILL.md +2 -2
- package/corpus/templates/forms/app/components/layout/Sidebar.tsx +3 -3
- package/corpus/templates/forms/app/root.tsx +34 -8
- package/corpus/templates/macros/.agents/skills/frontend-design/SKILL.md +1 -1
- package/corpus/templates/macros/app/components/DailyProgress.tsx +25 -5
- package/corpus/templates/macros/app/components/QueryErrorState.tsx +31 -0
- package/corpus/templates/macros/app/components/WeightTracker.tsx +5 -1
- package/corpus/templates/macros/app/components/layout/AppLayout.tsx +1 -2
- package/corpus/templates/macros/app/components/ui/button.tsx +1 -1
- package/corpus/templates/macros/app/components/ui/progress.tsx +1 -1
- package/corpus/templates/macros/app/components/ui/tabs.tsx +1 -1
- package/corpus/templates/macros/app/i18n/ar-SA.ts +2 -0
- package/corpus/templates/macros/app/i18n/de-DE.ts +2 -0
- package/corpus/templates/macros/app/i18n/en-US.ts +2 -0
- package/corpus/templates/macros/app/i18n/es-ES.ts +2 -0
- package/corpus/templates/macros/app/i18n/fr-FR.ts +2 -0
- package/corpus/templates/macros/app/i18n/hi-IN.ts +2 -0
- package/corpus/templates/macros/app/i18n/ja-JP.ts +2 -0
- package/corpus/templates/macros/app/i18n/ko-KR.ts +2 -0
- package/corpus/templates/macros/app/i18n/pt-BR.ts +2 -0
- package/corpus/templates/macros/app/i18n/zh-CN.ts +2 -0
- package/corpus/templates/macros/app/i18n/zh-TW.ts +2 -0
- package/corpus/templates/macros/app/root.tsx +0 -3
- package/corpus/templates/macros/app/routes/_index.tsx +22 -12
- package/corpus/templates/macros/app/routes/analytics.tsx +31 -10
- package/corpus/templates/macros/changelog/2026-07-11-daily-tracking-now-loads-and-updates-more-quickly.md +6 -0
- package/corpus/templates/macros/changelog/2026-07-11-data-load-failures-now-show-a-clear-error-with-a-retry-actio.md +6 -0
- package/corpus/templates/mail/.agents/skills/frontend-design/SKILL.md +1 -1
- package/corpus/templates/mail/.agents/skills/real-time-sync/SKILL.md +2 -2
- package/corpus/templates/mail/.env.example +16 -11
- package/corpus/templates/mail/actions/list-emails.ts +39 -35
- package/corpus/templates/mail/app/components/email/ComposeModal.tsx +58 -6
- package/corpus/templates/mail/app/components/email/EmailListItem.tsx +35 -2
- package/corpus/templates/mail/app/components/layout/AppLayout.tsx +113 -104
- package/corpus/templates/mail/app/hooks/use-compose-state.ts +1 -0
- package/corpus/templates/mail/app/root.tsx +9 -22
- package/corpus/templates/mail/changelog/2026-07-11-compose-and-navigation-motion-now-feel-faster-and-smoother.md +6 -0
- package/corpus/templates/mail/changelog/2026-07-11-swipe-to-archive-or-snooze-now-responds-to-quick-flicks-not-.md +6 -0
- package/corpus/templates/mail/changelog/2026-07-11-the-assistant-now-sees-the-same-inbox-you-do-snoozed-mail-st.md +6 -0
- package/corpus/templates/mail/server/handlers/emails.ts +25 -69
- package/corpus/templates/mail/server/lib/list-inbox-emails.ts +169 -0
- package/corpus/templates/plan/.agents/skills/frontend-design/SKILL.md +1 -1
- package/corpus/templates/plan/.agents/skills/real-time-sync/SKILL.md +2 -2
- package/corpus/templates/plan/.env.example +4 -0
- package/corpus/templates/plan/actions/create-plan-design.ts +89 -81
- package/corpus/templates/plan/actions/create-prototype-plan.ts +72 -59
- package/corpus/templates/plan/actions/create-ui-plan.ts +70 -55
- package/corpus/templates/plan/actions/create-visual-plan.ts +65 -51
- package/corpus/templates/plan/actions/update-local-plan-folder.ts +43 -30
- package/corpus/templates/plan/actions/update-visual-plan.ts +81 -64
- package/corpus/templates/plan/app/components/layout/Sidebar.tsx +17 -0
- package/corpus/templates/plan/app/components/ui/tabs.tsx +1 -1
- package/corpus/templates/plan/app/hooks/use-navigation-state.ts +5 -2
- package/corpus/templates/plan/app/hooks/use-plans.ts +6 -13
- package/corpus/templates/plan/app/i18n/ar-SA.ts +10 -0
- package/corpus/templates/plan/app/i18n/de-DE.ts +10 -0
- package/corpus/templates/plan/app/i18n/en-US.ts +10 -0
- package/corpus/templates/plan/app/i18n/es-ES.ts +10 -0
- package/corpus/templates/plan/app/i18n/fr-FR.ts +10 -0
- package/corpus/templates/plan/app/i18n/hi-IN.ts +10 -0
- package/corpus/templates/plan/app/i18n/ja-JP.ts +10 -0
- package/corpus/templates/plan/app/i18n/ko-KR.ts +10 -0
- package/corpus/templates/plan/app/i18n/pt-BR.ts +10 -0
- package/corpus/templates/plan/app/i18n/zh-CN.ts +10 -0
- package/corpus/templates/plan/app/i18n/zh-TW.ts +10 -0
- package/corpus/templates/plan/app/lib/plan-local-bridge.ts +80 -1
- package/corpus/templates/plan/app/pages/PlansPage.tsx +157 -31
- package/corpus/templates/plan/app/root.tsx +11 -0
- package/corpus/templates/plan/changelog/2026-07-11-local-plans-now-explain-and-recover-from-browser-permission-.md +6 -0
- package/corpus/templates/plan/changelog/2026-07-11-plan-edits-now-save-atomically-and-can-no-longer-partially-a.md +6 -0
- package/corpus/templates/plan/changelog/2026-07-11-plan-lists-now-show-a-clear-error-with-a-retry-action-when-t.md +6 -0
- package/corpus/templates/plan/changelog/2026-07-11-plan-refreshes-only-when-content-changes.md +6 -0
- package/corpus/templates/plan/shared/plan-content.ts +546 -260
- package/corpus/templates/slides/.agents/skills/frontend-design/SKILL.md +1 -1
- package/corpus/templates/slides/actions/delete-slide-comment.ts +49 -0
- package/corpus/templates/slides/actions/update-slide-comment.ts +93 -0
- package/corpus/templates/slides/actions/view-screen.ts +14 -6
- package/corpus/templates/slides/app/components/comments/SlideCommentsPanel.tsx +37 -11
- package/corpus/templates/slides/app/components/editor/EditorSidebar.tsx +1 -1
- package/corpus/templates/slides/app/components/editor/EditorToolbar.tsx +2 -2
- package/corpus/templates/slides/app/components/editor/GenerateSlidesDialog.tsx +2 -2
- package/corpus/templates/slides/app/components/layout/Header.tsx +1 -1
- package/corpus/templates/slides/app/components/presentation/PresentationView.tsx +4 -2
- package/corpus/templates/slides/app/components/visual-editor/CanvasCommentPins.tsx +4 -3
- package/corpus/templates/slides/app/context/DeckContext.tsx +10 -0
- package/corpus/templates/slides/app/hooks/use-slide-comments.ts +7 -31
- package/corpus/templates/slides/app/i18n/ar-SA.ts +6 -0
- package/corpus/templates/slides/app/i18n/de-DE.ts +6 -0
- package/corpus/templates/slides/app/i18n/en-US.ts +6 -0
- package/corpus/templates/slides/app/i18n/es-ES.ts +6 -0
- package/corpus/templates/slides/app/i18n/fr-FR.ts +6 -0
- package/corpus/templates/slides/app/i18n/hi-IN.ts +6 -0
- package/corpus/templates/slides/app/i18n/ja-JP.ts +6 -0
- package/corpus/templates/slides/app/i18n/ko-KR.ts +6 -0
- package/corpus/templates/slides/app/i18n/pt-BR.ts +6 -0
- package/corpus/templates/slides/app/i18n/zh-CN.ts +5 -0
- package/corpus/templates/slides/app/i18n/zh-TW.ts +5 -0
- package/corpus/templates/slides/app/pages/DesignSystems.tsx +23 -2
- package/corpus/templates/slides/app/pages/Index.tsx +29 -1
- package/corpus/templates/slides/changelog/2026-07-11-comment-load-failures-now-show-a-retry-action-instead-of-say.md +6 -0
- package/corpus/templates/slides/changelog/2026-07-11-comment-pins-now-clear-with-a-faster-smoother-confirmation.md +6 -0
- package/corpus/templates/slides/changelog/2026-07-11-comments-now-update-from-live-collaboration-events-without-c.md +6 -0
- package/corpus/templates/slides/changelog/2026-07-11-deck-and-design-system-load-failures-now-show-a-retry-action.md +6 -0
- package/corpus/templates/slides/changelog/2026-07-11-editor-toggles-and-toolbar-menus-now-animate-smoothly.md +6 -0
- package/corpus/templates/slides/changelog/2026-07-11-the-assistant-can-now-resolve-reopen-and-delete-slide-commen.md +6 -0
- package/corpus/templates/slides/changelog/2026-07-11-viewing-slides-no-longer-loads-every-deck-s-full-contents-in.md +6 -0
- package/corpus/templates/slides/server/routes/api/comments/[id].delete.ts +29 -48
- package/corpus/templates/slides/server/routes/api/comments/[id].patch.ts +29 -65
- package/dist/action-change-marker.d.ts +1 -0
- package/dist/action-change-marker.d.ts.map +1 -1
- package/dist/action-change-marker.js +7 -1
- package/dist/action-change-marker.js.map +1 -1
- package/dist/action.d.ts +23 -0
- package/dist/action.d.ts.map +1 -1
- package/dist/action.js +13 -0
- package/dist/action.js.map +1 -1
- package/dist/agent/engine/builder-engine.d.ts.map +1 -1
- package/dist/agent/engine/builder-engine.js +3 -0
- package/dist/agent/engine/builder-engine.js.map +1 -1
- package/dist/agent/engine/context-directives-transform.d.ts +25 -0
- package/dist/agent/engine/context-directives-transform.d.ts.map +1 -0
- package/dist/agent/engine/context-directives-transform.js +53 -0
- package/dist/agent/engine/context-directives-transform.js.map +1 -0
- package/dist/agent/engine/continuation-dispatch-retry.d.ts +40 -0
- package/dist/agent/engine/continuation-dispatch-retry.d.ts.map +1 -0
- package/dist/agent/engine/continuation-dispatch-retry.js +109 -0
- package/dist/agent/engine/continuation-dispatch-retry.js.map +1 -0
- package/dist/agent/engine/tool-call-journal-seed.d.ts +46 -0
- package/dist/agent/engine/tool-call-journal-seed.d.ts.map +1 -0
- package/dist/agent/engine/tool-call-journal-seed.js +60 -0
- package/dist/agent/engine/tool-call-journal-seed.js.map +1 -0
- package/dist/agent/production-agent.d.ts +7 -0
- package/dist/agent/production-agent.d.ts.map +1 -1
- package/dist/agent/production-agent.js +102 -222
- package/dist/agent/production-agent.js.map +1 -1
- package/dist/changelog/parse.d.ts +4 -2
- package/dist/changelog/parse.d.ts.map +1 -1
- package/dist/changelog/parse.js +5 -3
- package/dist/changelog/parse.js.map +1 -1
- package/dist/cli/doctor.d.ts.map +1 -1
- package/dist/cli/doctor.js +7 -3
- package/dist/cli/doctor.js.map +1 -1
- package/dist/cli/plan-local.d.ts.map +1 -1
- package/dist/cli/plan-local.js +8 -2
- package/dist/cli/plan-local.js.map +1 -1
- package/dist/cli/skills-content/assets-skill.d.ts +2 -0
- package/dist/cli/skills-content/assets-skill.d.ts.map +1 -0
- package/dist/cli/skills-content/assets-skill.js +84 -0
- package/dist/cli/skills-content/assets-skill.js.map +1 -0
- package/dist/cli/skills-content/canvas.d.ts +4 -0
- package/dist/cli/skills-content/canvas.d.ts.map +1 -0
- package/dist/cli/skills-content/canvas.js +152 -0
- package/dist/cli/skills-content/canvas.js.map +1 -0
- package/dist/cli/skills-content/connection.d.ts +2 -0
- package/dist/cli/skills-content/connection.d.ts.map +1 -0
- package/dist/cli/skills-content/connection.js +53 -0
- package/dist/cli/skills-content/connection.js.map +1 -0
- package/dist/cli/skills-content/content-skill.d.ts +2 -0
- package/dist/cli/skills-content/content-skill.d.ts.map +1 -0
- package/dist/cli/skills-content/content-skill.js +110 -0
- package/dist/cli/skills-content/content-skill.js.map +1 -0
- package/dist/cli/skills-content/design-exploration-skill.d.ts +2 -0
- package/dist/cli/skills-content/design-exploration-skill.d.ts.map +1 -0
- package/dist/cli/skills-content/design-exploration-skill.js +119 -0
- package/dist/cli/skills-content/design-exploration-skill.js.map +1 -0
- package/dist/cli/skills-content/design-visual-edit-skill.d.ts +2 -0
- package/dist/cli/skills-content/design-visual-edit-skill.d.ts.map +1 -0
- package/dist/cli/skills-content/design-visual-edit-skill.js +229 -0
- package/dist/cli/skills-content/design-visual-edit-skill.js.map +1 -0
- package/dist/cli/skills-content/document-quality.d.ts +4 -0
- package/dist/cli/skills-content/document-quality.d.ts.map +1 -0
- package/dist/cli/skills-content/document-quality.js +195 -0
- package/dist/cli/skills-content/document-quality.js.map +1 -0
- package/dist/cli/skills-content/exemplar.d.ts +4 -0
- package/dist/cli/skills-content/exemplar.d.ts.map +1 -0
- package/dist/cli/skills-content/exemplar.js +68 -0
- package/dist/cli/skills-content/exemplar.js.map +1 -0
- package/dist/cli/skills-content/help.d.ts +2 -0
- package/dist/cli/skills-content/help.d.ts.map +1 -0
- package/dist/cli/skills-content/help.js +78 -0
- package/dist/cli/skills-content/help.js.map +1 -0
- package/dist/cli/skills-content/index.d.ts +23 -0
- package/dist/cli/skills-content/index.d.ts.map +1 -0
- package/dist/cli/skills-content/index.js +23 -0
- package/dist/cli/skills-content/index.js.map +1 -0
- package/dist/cli/skills-content/local-files.d.ts +2 -0
- package/dist/cli/skills-content/local-files.d.ts.map +1 -0
- package/dist/cli/skills-content/local-files.js +96 -0
- package/dist/cli/skills-content/local-files.js.map +1 -0
- package/dist/cli/skills-content/plan-setup-auth.d.ts +9 -0
- package/dist/cli/skills-content/plan-setup-auth.d.ts.map +1 -0
- package/dist/cli/skills-content/plan-setup-auth.js +81 -0
- package/dist/cli/skills-content/plan-setup-auth.js.map +1 -0
- package/dist/cli/skills-content/visual-plan-skill.d.ts +2 -0
- package/dist/cli/skills-content/visual-plan-skill.d.ts.map +1 -0
- package/dist/cli/skills-content/visual-plan-skill.js +471 -0
- package/dist/cli/skills-content/visual-plan-skill.js.map +1 -0
- package/dist/cli/skills-content/visual-recap-skill.d.ts +2 -0
- package/dist/cli/skills-content/visual-recap-skill.d.ts.map +1 -0
- package/dist/cli/skills-content/visual-recap-skill.js +548 -0
- package/dist/cli/skills-content/visual-recap-skill.js.map +1 -0
- package/dist/cli/skills-content/visualize-repo-skill.d.ts +2 -0
- package/dist/cli/skills-content/visualize-repo-skill.d.ts.map +1 -0
- package/dist/cli/skills-content/visualize-repo-skill.js +94 -0
- package/dist/cli/skills-content/visualize-repo-skill.js.map +1 -0
- package/dist/cli/skills-content/wireframe.d.ts +4 -0
- package/dist/cli/skills-content/wireframe.d.ts.map +1 -0
- package/dist/cli/skills-content/wireframe.js +347 -0
- package/dist/cli/skills-content/wireframe.js.map +1 -0
- package/dist/cli/skills.d.ts +2 -10
- package/dist/cli/skills.d.ts.map +1 -1
- package/dist/cli/skills.js +2 -2710
- package/dist/cli/skills.js.map +1 -1
- package/dist/client/AgentPanel.d.ts.map +1 -1
- package/dist/client/AgentPanel.js +6 -5
- package/dist/client/AgentPanel.js.map +1 -1
- package/dist/client/AssistantChat.d.ts +7 -0
- package/dist/client/AssistantChat.d.ts.map +1 -1
- package/dist/client/AssistantChat.js +62 -40
- package/dist/client/AssistantChat.js.map +1 -1
- package/dist/client/CommandMenu.d.ts.map +1 -1
- package/dist/client/CommandMenu.js +15 -3
- package/dist/client/CommandMenu.js.map +1 -1
- package/dist/client/FeedbackButton.js +2 -2
- package/dist/client/FeedbackButton.js.map +1 -1
- package/dist/client/analytics.d.ts.map +1 -1
- package/dist/client/analytics.js +26 -0
- package/dist/client/analytics.js.map +1 -1
- package/dist/client/app-providers.d.ts +13 -5
- package/dist/client/app-providers.d.ts.map +1 -1
- package/dist/client/app-providers.js +9 -6
- package/dist/client/app-providers.js.map +1 -1
- package/dist/client/blocks/library/wireframe-kit.d.ts +2 -0
- package/dist/client/blocks/library/wireframe-kit.d.ts.map +1 -1
- package/dist/client/blocks/library/wireframe-kit.js +9 -2
- package/dist/client/blocks/library/wireframe-kit.js.map +1 -1
- package/dist/client/chat/tool-call-display.d.ts +4 -0
- package/dist/client/chat/tool-call-display.d.ts.map +1 -1
- package/dist/client/chat/tool-call-display.js +3 -3
- package/dist/client/chat/tool-call-display.js.map +1 -1
- package/dist/client/chat-model-groups.d.ts.map +1 -1
- package/dist/client/chat-model-groups.js +24 -0
- package/dist/client/chat-model-groups.js.map +1 -1
- package/dist/client/composer/PastedTextChip.js +1 -1
- package/dist/client/composer/PastedTextChip.js.map +1 -1
- package/dist/client/composer/RealtimeVoiceMode.d.ts +40 -2
- package/dist/client/composer/RealtimeVoiceMode.d.ts.map +1 -1
- package/dist/client/composer/RealtimeVoiceMode.js +186 -35
- package/dist/client/composer/RealtimeVoiceMode.js.map +1 -1
- package/dist/client/composer/TiptapComposer.d.ts +4 -0
- package/dist/client/composer/TiptapComposer.d.ts.map +1 -1
- package/dist/client/composer/TiptapComposer.js +48 -30
- package/dist/client/composer/TiptapComposer.js.map +1 -1
- package/dist/client/composer/VoiceButton.d.ts +2 -0
- package/dist/client/composer/VoiceButton.d.ts.map +1 -1
- package/dist/client/composer/VoiceButton.js +9 -3
- package/dist/client/composer/VoiceButton.js.map +1 -1
- package/dist/client/composer/index.d.ts +2 -2
- package/dist/client/composer/index.d.ts.map +1 -1
- package/dist/client/composer/index.js +1 -1
- package/dist/client/composer/index.js.map +1 -1
- package/dist/client/composer/useRealtimeVoiceMode.d.ts +104 -2
- package/dist/client/composer/useRealtimeVoiceMode.d.ts.map +1 -1
- package/dist/client/composer/useRealtimeVoiceMode.js +1015 -35
- package/dist/client/composer/useRealtimeVoiceMode.js.map +1 -1
- package/dist/client/context-xray/ContextXRayPanel.d.ts.map +1 -1
- package/dist/client/context-xray/ContextXRayPanel.js +4 -1
- package/dist/client/context-xray/ContextXRayPanel.js.map +1 -1
- package/dist/client/extensions/ExtensionEditor.d.ts.map +1 -1
- package/dist/client/extensions/ExtensionEditor.js +15 -5
- package/dist/client/extensions/ExtensionEditor.js.map +1 -1
- package/dist/client/extensions/ExtensionQueryErrorState.d.ts +8 -0
- package/dist/client/extensions/ExtensionQueryErrorState.d.ts.map +1 -0
- package/dist/client/extensions/ExtensionQueryErrorState.js +11 -0
- package/dist/client/extensions/ExtensionQueryErrorState.js.map +1 -0
- package/dist/client/extensions/ExtensionSlot.d.ts.map +1 -1
- package/dist/client/extensions/ExtensionSlot.js +17 -7
- package/dist/client/extensions/ExtensionSlot.js.map +1 -1
- package/dist/client/extensions/ExtensionViewer.d.ts.map +1 -1
- package/dist/client/extensions/ExtensionViewer.js +17 -7
- package/dist/client/extensions/ExtensionViewer.js.map +1 -1
- package/dist/client/extensions/ExtensionsListPage.d.ts.map +1 -1
- package/dist/client/extensions/ExtensionsListPage.js +5 -3
- package/dist/client/extensions/ExtensionsListPage.js.map +1 -1
- package/dist/client/extensions/ExtensionsSidebarSection.d.ts.map +1 -1
- package/dist/client/extensions/ExtensionsSidebarSection.js +21 -8
- package/dist/client/extensions/ExtensionsSidebarSection.js.map +1 -1
- package/dist/client/index.d.ts +1 -3
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +1 -6
- package/dist/client/index.js.map +1 -1
- package/dist/client/progress/RunsTray.d.ts.map +1 -1
- package/dist/client/progress/RunsTray.js +17 -4
- package/dist/client/progress/RunsTray.js.map +1 -1
- package/dist/client/settings/SecretsSection.d.ts +2 -3
- package/dist/client/settings/SecretsSection.d.ts.map +1 -1
- package/dist/client/settings/SecretsSection.js +46 -22
- package/dist/client/settings/SecretsSection.js.map +1 -1
- package/dist/client/settings/SettingsPanel.d.ts +9 -0
- package/dist/client/settings/SettingsPanel.d.ts.map +1 -1
- package/dist/client/settings/SettingsPanel.js +46 -12
- package/dist/client/settings/SettingsPanel.js.map +1 -1
- package/dist/client/settings/SettingsTabsPage.d.ts.map +1 -1
- package/dist/client/settings/SettingsTabsPage.js +4 -0
- package/dist/client/settings/SettingsTabsPage.js.map +1 -1
- package/dist/client/settings/useBuilderStatus.d.ts +2 -0
- package/dist/client/settings/useBuilderStatus.d.ts.map +1 -1
- package/dist/client/settings/useBuilderStatus.js +4 -0
- package/dist/client/settings/useBuilderStatus.js.map +1 -1
- package/dist/client/tool-cells/EditCell.d.ts.map +1 -1
- package/dist/client/tool-cells/EditCell.js +2 -1
- package/dist/client/tool-cells/EditCell.js.map +1 -1
- package/dist/client/tool-cells/FilesChangedSummary.d.ts.map +1 -1
- package/dist/client/tool-cells/FilesChangedSummary.js +2 -1
- package/dist/client/tool-cells/FilesChangedSummary.js.map +1 -1
- package/dist/client/tool-cells/WriteCell.d.ts.map +1 -1
- package/dist/client/tool-cells/WriteCell.js +2 -1
- package/dist/client/tool-cells/WriteCell.js.map +1 -1
- package/dist/client/use-action.d.ts +2 -0
- package/dist/client/use-action.d.ts.map +1 -1
- package/dist/client/use-action.js +10 -0
- package/dist/client/use-action.js.map +1 -1
- package/dist/client/use-agent-chat-home-handoff.d.ts +2 -0
- package/dist/client/use-agent-chat-home-handoff.d.ts.map +1 -1
- package/dist/client/use-agent-chat-home-handoff.js +7 -1
- package/dist/client/use-agent-chat-home-handoff.js.map +1 -1
- package/dist/client/use-agent-engine-configured.d.ts.map +1 -1
- package/dist/client/use-agent-engine-configured.js +17 -3
- package/dist/client/use-agent-engine-configured.js.map +1 -1
- package/dist/client/use-db-sync.d.ts +8 -2
- package/dist/client/use-db-sync.d.ts.map +1 -1
- package/dist/client/use-db-sync.js +57 -32
- package/dist/client/use-db-sync.js.map +1 -1
- package/dist/client/use-pausing-interval.d.ts.map +1 -1
- package/dist/client/use-pausing-interval.js +16 -4
- package/dist/client/use-pausing-interval.js.map +1 -1
- package/dist/client/visual-style-controls.js +1 -1
- package/dist/client/visual-style-controls.js.map +1 -1
- package/dist/collab/routes.d.ts +1 -1
- package/dist/deploy/build.d.ts.map +1 -1
- package/dist/deploy/build.js +36 -14
- package/dist/deploy/build.js.map +1 -1
- package/dist/integrations/google-docs-poller.d.ts +7 -0
- package/dist/integrations/google-docs-poller.d.ts.map +1 -1
- package/dist/integrations/google-docs-poller.js +13 -3
- package/dist/integrations/google-docs-poller.js.map +1 -1
- package/dist/integrations/plugin.d.ts.map +1 -1
- package/dist/integrations/plugin.js +10 -0
- package/dist/integrations/plugin.js.map +1 -1
- package/dist/integrations/scope-store.js +1 -1
- package/dist/integrations/scope-store.js.map +1 -1
- package/dist/integrations/usage-budget-store.js +1 -1
- package/dist/integrations/usage-budget-store.js.map +1 -1
- package/dist/integrations/webhook-handler.d.ts +11 -0
- package/dist/integrations/webhook-handler.d.ts.map +1 -1
- package/dist/integrations/webhook-handler.js +16 -4
- package/dist/integrations/webhook-handler.js.map +1 -1
- package/dist/jobs/scheduler.d.ts +12 -0
- package/dist/jobs/scheduler.d.ts.map +1 -1
- package/dist/jobs/scheduler.js +13 -3
- package/dist/jobs/scheduler.js.map +1 -1
- package/dist/localization/default-messages.d.ts +47 -0
- package/dist/localization/default-messages.d.ts.map +1 -1
- package/dist/localization/default-messages.js +48 -1
- package/dist/localization/default-messages.js.map +1 -1
- package/dist/mcp/oauth-token.d.ts +1 -1
- package/dist/mcp/oauth-token.d.ts.map +1 -1
- package/dist/mcp/oauth-token.js +6 -1
- package/dist/mcp/oauth-token.js.map +1 -1
- package/dist/mcp-client/workspace-servers.js +4 -4
- package/dist/mcp-client/workspace-servers.js.map +1 -1
- package/dist/notifications/routes.d.ts +2 -2
- package/dist/observability/routes.d.ts +5 -5
- package/dist/observability/routes.d.ts.map +1 -1
- package/dist/observability/routes.js +32 -0
- package/dist/observability/routes.js.map +1 -1
- package/dist/observability/sentiment.d.ts +42 -0
- package/dist/observability/sentiment.d.ts.map +1 -0
- package/dist/observability/sentiment.js +196 -0
- package/dist/observability/sentiment.js.map +1 -0
- package/dist/observability/store.d.ts +5 -0
- package/dist/observability/store.d.ts.map +1 -1
- package/dist/observability/store.js +17 -0
- package/dist/observability/store.js.map +1 -1
- package/dist/observability/traces.d.ts +2 -0
- package/dist/observability/traces.d.ts.map +1 -1
- package/dist/observability/traces.js +42 -57
- package/dist/observability/traces.js.map +1 -1
- package/dist/observability/tracking-identity.d.ts +3 -0
- package/dist/observability/tracking-identity.d.ts.map +1 -0
- package/dist/observability/tracking-identity.js +51 -0
- package/dist/observability/tracking-identity.js.map +1 -0
- package/dist/observability/types.d.ts +10 -0
- package/dist/observability/types.d.ts.map +1 -1
- package/dist/observability/types.js +3 -0
- package/dist/observability/types.js.map +1 -1
- package/dist/progress/routes.d.ts +1 -1
- package/dist/resources/handlers.d.ts +1 -1
- package/dist/secrets/crypto.d.ts +7 -6
- package/dist/secrets/crypto.d.ts.map +1 -1
- package/dist/secrets/crypto.js +30 -11
- package/dist/secrets/crypto.js.map +1 -1
- package/dist/secrets/routes.d.ts +9 -9
- package/dist/secrets/storage.d.ts +6 -0
- package/dist/secrets/storage.d.ts.map +1 -1
- package/dist/secrets/storage.js +61 -3
- package/dist/secrets/storage.js.map +1 -1
- package/dist/server/action-change.d.ts +1 -0
- package/dist/server/action-change.d.ts.map +1 -1
- package/dist/server/action-change.js +4 -1
- package/dist/server/action-change.js.map +1 -1
- package/dist/server/action-routes.d.ts.map +1 -1
- package/dist/server/action-routes.js +5 -0
- package/dist/server/action-routes.js.map +1 -1
- package/dist/server/agent-chat/action-filters-a2a.d.ts +50 -0
- package/dist/server/agent-chat/action-filters-a2a.d.ts.map +1 -0
- package/dist/server/agent-chat/action-filters-a2a.js +127 -0
- package/dist/server/agent-chat/action-filters-a2a.js.map +1 -0
- package/dist/server/agent-chat/browser-team-tools.d.ts +21 -0
- package/dist/server/agent-chat/browser-team-tools.d.ts.map +1 -0
- package/dist/server/agent-chat/browser-team-tools.js +417 -0
- package/dist/server/agent-chat/browser-team-tools.js.map +1 -0
- package/dist/server/agent-chat/context-tools.d.ts +33 -0
- package/dist/server/agent-chat/context-tools.d.ts.map +1 -0
- package/dist/server/agent-chat/context-tools.js +520 -0
- package/dist/server/agent-chat/context-tools.js.map +1 -0
- package/dist/server/agent-chat/framework-prompts.d.ts +65 -0
- package/dist/server/agent-chat/framework-prompts.d.ts.map +1 -0
- package/dist/server/agent-chat/framework-prompts.js +403 -0
- package/dist/server/agent-chat/framework-prompts.js.map +1 -0
- package/dist/server/agent-chat/lazy-fs.d.ts +2 -0
- package/dist/server/agent-chat/lazy-fs.d.ts.map +1 -0
- package/dist/server/agent-chat/lazy-fs.js +11 -0
- package/dist/server/agent-chat/lazy-fs.js.map +1 -0
- package/dist/server/agent-chat/mcp-glue.d.ts +9 -0
- package/dist/server/agent-chat/mcp-glue.d.ts.map +1 -0
- package/dist/server/agent-chat/mcp-glue.js +63 -0
- package/dist/server/agent-chat/mcp-glue.js.map +1 -0
- package/dist/server/agent-chat/plugin-options.d.ts +322 -0
- package/dist/server/agent-chat/plugin-options.d.ts.map +1 -0
- package/dist/server/agent-chat/plugin-options.js +2 -0
- package/dist/server/agent-chat/plugin-options.js.map +1 -0
- package/dist/server/agent-chat/process-run-failure.d.ts +12 -0
- package/dist/server/agent-chat/process-run-failure.d.ts.map +1 -0
- package/dist/server/agent-chat/process-run-failure.js +24 -0
- package/dist/server/agent-chat/process-run-failure.js.map +1 -0
- package/dist/server/agent-chat/prompt-resources.d.ts +28 -0
- package/dist/server/agent-chat/prompt-resources.d.ts.map +1 -0
- package/dist/server/agent-chat/prompt-resources.js +514 -0
- package/dist/server/agent-chat/prompt-resources.js.map +1 -0
- package/dist/server/agent-chat/recurring-jobs-runtime.d.ts +5 -0
- package/dist/server/agent-chat/recurring-jobs-runtime.d.ts.map +1 -0
- package/dist/server/agent-chat/recurring-jobs-runtime.js +53 -0
- package/dist/server/agent-chat/recurring-jobs-runtime.js.map +1 -0
- package/dist/server/agent-chat/request-surface.d.ts +8 -0
- package/dist/server/agent-chat/request-surface.d.ts.map +1 -0
- package/dist/server/agent-chat/request-surface.js +56 -0
- package/dist/server/agent-chat/request-surface.js.map +1 -0
- package/dist/server/agent-chat/run-code-tools.d.ts +17 -0
- package/dist/server/agent-chat/run-code-tools.d.ts.map +1 -0
- package/dist/server/agent-chat/run-code-tools.js +55 -0
- package/dist/server/agent-chat/run-code-tools.js.map +1 -0
- package/dist/server/agent-chat/script-entries.d.ts +47 -0
- package/dist/server/agent-chat/script-entries.d.ts.map +1 -0
- package/dist/server/agent-chat/script-entries.js +633 -0
- package/dist/server/agent-chat/script-entries.js.map +1 -0
- package/dist/server/agent-chat/shared-thread.d.ts +33 -0
- package/dist/server/agent-chat/shared-thread.d.ts.map +1 -0
- package/dist/server/agent-chat/shared-thread.js +242 -0
- package/dist/server/agent-chat/shared-thread.js.map +1 -0
- package/dist/server/agent-chat/skill-frontmatter.d.ts +7 -0
- package/dist/server/agent-chat/skill-frontmatter.d.ts.map +1 -0
- package/dist/server/agent-chat/skill-frontmatter.js +26 -0
- package/dist/server/agent-chat/skill-frontmatter.js.map +1 -0
- package/dist/server/agent-chat-plugin.d.ts +45 -486
- package/dist/server/agent-chat-plugin.d.ts.map +1 -1
- package/dist/server/agent-chat-plugin.js +173 -3005
- package/dist/server/agent-chat-plugin.js.map +1 -1
- package/dist/server/agent-teams.d.ts +10 -0
- package/dist/server/agent-teams.d.ts.map +1 -1
- package/dist/server/agent-teams.js +13 -3
- package/dist/server/agent-teams.js.map +1 -1
- package/dist/server/auth.d.ts.map +1 -1
- package/dist/server/auth.js +50 -52
- package/dist/server/auth.js.map +1 -1
- package/dist/server/credential-provider.d.ts.map +1 -1
- package/dist/server/credential-provider.js +22 -21
- package/dist/server/credential-provider.js.map +1 -1
- package/dist/server/edge.d.ts +1 -0
- package/dist/server/edge.d.ts.map +1 -1
- package/dist/server/edge.js +1 -0
- package/dist/server/edge.js.map +1 -1
- package/dist/server/onboarding-html.d.ts.map +1 -1
- package/dist/server/onboarding-html.js +1 -16
- package/dist/server/onboarding-html.js.map +1 -1
- package/dist/server/poll.d.ts.map +1 -1
- package/dist/server/poll.js +1 -0
- package/dist/server/poll.js.map +1 -1
- package/dist/server/realtime-voice.d.ts +10 -0
- package/dist/server/realtime-voice.d.ts.map +1 -1
- package/dist/server/realtime-voice.js +249 -15
- package/dist/server/realtime-voice.js.map +1 -1
- package/dist/server/request-origin.d.ts.map +1 -1
- package/dist/server/request-origin.js +6 -3
- package/dist/server/request-origin.js.map +1 -1
- package/dist/server/ssr-handler.d.ts.map +1 -1
- package/dist/server/ssr-handler.js +47 -2
- package/dist/server/ssr-handler.js.map +1 -1
- package/dist/sharing/access.d.ts +63 -3
- package/dist/sharing/access.d.ts.map +1 -1
- package/dist/sharing/access.js +53 -15
- package/dist/sharing/access.js.map +1 -1
- package/dist/sharing/registry.d.ts +7 -0
- package/dist/sharing/registry.d.ts.map +1 -1
- package/dist/sharing/registry.js.map +1 -1
- package/dist/styles/agent-native.css +17 -16
- package/dist/templates/default/.agents/skills/frontend-design/SKILL.md +1 -1
- package/dist/templates/default/.agents/skills/real-time-sync/SKILL.md +2 -2
- 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/workspace-core/.agents/skills/authentication/SKILL.md +27 -29
- package/dist/templates/workspace-core/.agents/skills/external-agents/SKILL.md +2 -1
- package/dist/templates/workspace-core/.agents/skills/frontend-design/SKILL.md +1 -1
- package/dist/templates/workspace-core/.agents/skills/observability/SKILL.md +32 -0
- package/dist/templates/workspace-core/.agents/skills/real-time-sync/SKILL.md +2 -2
- package/dist/templates/workspace-core/.agents/skills/secrets/SKILL.md +7 -3
- package/dist/templates/workspace-core/.agents/skills/voice-transcription/SKILL.md +39 -9
- package/dist/templates/workspace-core/.agents/skills/writing-agent-instructions/SKILL.md +25 -0
- package/dist/templates/workspace-core/src/server/index.ts +4 -2
- package/dist/testing.d.ts +16 -0
- package/dist/testing.d.ts.map +1 -0
- package/dist/testing.js +16 -0
- package/dist/testing.js.map +1 -0
- package/dist/triggers/dispatcher.d.ts +7 -0
- package/dist/triggers/dispatcher.d.ts.map +1 -1
- package/dist/triggers/dispatcher.js +13 -3
- package/dist/triggers/dispatcher.js.map +1 -1
- package/dist/vite/client.d.ts +16 -1
- package/dist/vite/client.d.ts.map +1 -1
- package/dist/vite/client.js +111 -3
- package/dist/vite/client.js.map +1 -1
- package/docs/content/authentication.mdx +3 -3
- package/docs/content/doctor.mdx +170 -0
- package/docs/content/external-agents.mdx +8 -7
- package/docs/content/locales/ar-SA/authentication.mdx +2 -2
- package/docs/content/locales/ar-SA/external-agents.mdx +8 -7
- package/docs/content/locales/ar-SA/mcp-protocol.mdx +1 -1
- package/docs/content/locales/ar-SA/security.mdx +2 -0
- package/docs/content/locales/de-DE/authentication.mdx +1 -1
- package/docs/content/locales/de-DE/external-agents.mdx +8 -7
- package/docs/content/locales/de-DE/mcp-protocol.mdx +1 -1
- package/docs/content/locales/de-DE/security.mdx +2 -0
- package/docs/content/locales/es-ES/authentication.mdx +2 -2
- package/docs/content/locales/es-ES/external-agents.mdx +8 -7
- package/docs/content/locales/es-ES/mcp-protocol.mdx +1 -1
- package/docs/content/locales/es-ES/security.mdx +2 -0
- package/docs/content/locales/fr-FR/authentication.mdx +1 -1
- package/docs/content/locales/fr-FR/external-agents.mdx +8 -7
- package/docs/content/locales/fr-FR/mcp-protocol.mdx +1 -1
- package/docs/content/locales/fr-FR/security.mdx +2 -0
- package/docs/content/locales/hi-IN/authentication.mdx +2 -2
- package/docs/content/locales/hi-IN/external-agents.mdx +8 -7
- package/docs/content/locales/hi-IN/mcp-protocol.mdx +1 -1
- package/docs/content/locales/hi-IN/security.mdx +2 -0
- package/docs/content/locales/ja-JP/authentication.mdx +2 -2
- package/docs/content/locales/ja-JP/external-agents.mdx +8 -7
- package/docs/content/locales/ja-JP/mcp-protocol.mdx +1 -1
- package/docs/content/locales/ja-JP/security.mdx +2 -0
- package/docs/content/locales/ko-KR/authentication.mdx +2 -2
- package/docs/content/locales/ko-KR/external-agents.mdx +8 -7
- package/docs/content/locales/ko-KR/mcp-protocol.mdx +1 -1
- package/docs/content/locales/ko-KR/security.mdx +2 -0
- package/docs/content/locales/pt-BR/authentication.mdx +2 -2
- package/docs/content/locales/pt-BR/external-agents.mdx +8 -7
- package/docs/content/locales/pt-BR/mcp-protocol.mdx +1 -1
- package/docs/content/locales/pt-BR/security.mdx +2 -0
- package/docs/content/locales/zh-CN/authentication.mdx +2 -2
- package/docs/content/locales/zh-CN/external-agents.mdx +8 -7
- package/docs/content/locales/zh-CN/mcp-protocol.mdx +1 -1
- package/docs/content/locales/zh-CN/security.mdx +2 -0
- package/docs/content/locales/zh-TW/authentication.mdx +2 -2
- package/docs/content/locales/zh-TW/external-agents.mdx +8 -7
- package/docs/content/locales/zh-TW/mcp-protocol.mdx +1 -1
- package/docs/content/locales/zh-TW/security.mdx +2 -0
- package/docs/content/mcp-protocol.mdx +1 -1
- package/docs/content/security.mdx +2 -0
- package/package.json +7 -3
- package/src/templates/default/.agents/skills/frontend-design/SKILL.md +1 -1
- package/src/templates/default/.agents/skills/real-time-sync/SKILL.md +2 -2
- 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/workspace-core/.agents/skills/authentication/SKILL.md +27 -29
- package/src/templates/workspace-core/.agents/skills/external-agents/SKILL.md +2 -1
- package/src/templates/workspace-core/.agents/skills/frontend-design/SKILL.md +1 -1
- package/src/templates/workspace-core/.agents/skills/observability/SKILL.md +32 -0
- package/src/templates/workspace-core/.agents/skills/real-time-sync/SKILL.md +2 -2
- package/src/templates/workspace-core/.agents/skills/secrets/SKILL.md +7 -3
- package/src/templates/workspace-core/.agents/skills/voice-transcription/SKILL.md +39 -9
- package/src/templates/workspace-core/.agents/skills/writing-agent-instructions/SKILL.md +25 -0
- package/src/templates/workspace-core/src/server/index.ts +4 -2
- package/corpus/core/src/client/ProductionAgentPanel.tsx +0 -9
- package/corpus/core/src/client/auth-redirect-url.ts +0 -23
- package/corpus/core/src/client/useProductionAgent.ts +0 -253
- package/corpus/core/src/shared/auth-redirect-url.ts +0 -1
- package/corpus/templates/analytics/app/pages/Index.tsx +0 -16
- package/corpus/templates/analytics/seeds/dashboards/agent-observability-llm.json +0 -173
- package/dist/client/ProductionAgentPanel.d.ts +0 -6
- package/dist/client/ProductionAgentPanel.d.ts.map +0 -1
- package/dist/client/ProductionAgentPanel.js +0 -6
- package/dist/client/ProductionAgentPanel.js.map +0 -1
- package/dist/client/auth-redirect-url.d.ts +0 -2
- package/dist/client/auth-redirect-url.d.ts.map +0 -1
- package/dist/client/auth-redirect-url.js +0 -19
- package/dist/client/auth-redirect-url.js.map +0 -1
- package/dist/client/useProductionAgent.d.ts +0 -24
- package/dist/client/useProductionAgent.d.ts.map +0 -1
- package/dist/client/useProductionAgent.js +0 -179
- package/dist/client/useProductionAgent.js.map +0 -1
- package/dist/shared/auth-redirect-url.d.ts +0 -2
- package/dist/shared/auth-redirect-url.d.ts.map +0 -1
- package/dist/shared/auth-redirect-url.js +0 -2
- package/dist/shared/auth-redirect-url.js.map +0 -1
|
@@ -18,6 +18,7 @@ import { preUploadAttachments } from "../file-upload/pre-upload-attachments.js";
|
|
|
18
18
|
import { isMcpActionResult } from "../mcp-client/app-result.js";
|
|
19
19
|
import { extractMcpToolResultImages } from "../mcp-client/index.js";
|
|
20
20
|
import { isMcpToolAllowedForRequest } from "../mcp-client/visibility.js";
|
|
21
|
+
import { shouldInferSentimentForTurn } from "../observability/sentiment.js";
|
|
21
22
|
import {
|
|
22
23
|
completeRun as completeProgressRun,
|
|
23
24
|
startRun as startProgressRun,
|
|
@@ -49,13 +50,6 @@ import {
|
|
|
49
50
|
type ReasoningEffort,
|
|
50
51
|
} from "../shared/reasoning-effort.js";
|
|
51
52
|
import { actionPreparationContinuationNote } from "./action-continuation-guidance.js";
|
|
52
|
-
import { applyContextDirectives } from "./context-xray/apply-directives.js";
|
|
53
|
-
import { loadContextDirectives } from "./context-xray/directives-store.js";
|
|
54
|
-
import {
|
|
55
|
-
buildManifest,
|
|
56
|
-
writeContextManifest,
|
|
57
|
-
} from "./context-xray/manifest.js";
|
|
58
|
-
import { computeProtectedSegmentIds } from "./context-xray/segments.js";
|
|
59
53
|
import {
|
|
60
54
|
AGENT_CHAT_BACKGROUND_RUN_FIELD,
|
|
61
55
|
AGENT_CHAT_PROCESS_RUN_PATH,
|
|
@@ -66,6 +60,8 @@ import {
|
|
|
66
60
|
resolveAgentChatProcessRunDispatchPath,
|
|
67
61
|
shouldUseBackgroundFunctionTimeoutForWorker,
|
|
68
62
|
} from "./durable-background.js";
|
|
63
|
+
import { applyContextXrayTransformForIteration } from "./engine/context-directives-transform.js";
|
|
64
|
+
import { attemptContinuationDispatch } from "./engine/continuation-dispatch-retry.js";
|
|
69
65
|
import {
|
|
70
66
|
LLM_MISSING_CREDENTIALS_ERROR_CODE,
|
|
71
67
|
LLM_MISSING_CREDENTIALS_MESSAGE,
|
|
@@ -84,6 +80,7 @@ import {
|
|
|
84
80
|
resolveMaxOutputTokensForEngine,
|
|
85
81
|
} from "./engine/output-tokens.js";
|
|
86
82
|
import { PROVIDER_TO_ENV } from "./engine/provider-env-vars.js";
|
|
83
|
+
import { loadPriorTurnToolCallJournal } from "./engine/tool-call-journal-seed.js";
|
|
87
84
|
import {
|
|
88
85
|
backfillEngineMessagesToolResults,
|
|
89
86
|
stringifyToolUseInputForGateway,
|
|
@@ -133,7 +130,6 @@ import {
|
|
|
133
130
|
writeLedgerEntry,
|
|
134
131
|
readLedgerEntry,
|
|
135
132
|
clearLedgerForThread,
|
|
136
|
-
getCurrentTurnEventsForThread,
|
|
137
133
|
insertRun,
|
|
138
134
|
updateRunHeartbeat,
|
|
139
135
|
updateRunStatusIfRunning,
|
|
@@ -147,11 +143,7 @@ import {
|
|
|
147
143
|
UNCLAIMED_BACKGROUND_RUN_GRACE_MS,
|
|
148
144
|
} from "./run-store.js";
|
|
149
145
|
import { buildCurrentTimeUserContext } from "./runtime-context.js";
|
|
150
|
-
import {
|
|
151
|
-
classifyToolCallJournal,
|
|
152
|
-
findCompletedJournalEntry,
|
|
153
|
-
type ToolCallJournal,
|
|
154
|
-
} from "./tool-call-journal.js";
|
|
146
|
+
import { findCompletedJournalEntry } from "./tool-call-journal.js";
|
|
155
147
|
import {
|
|
156
148
|
redactSensitiveFields,
|
|
157
149
|
sanitizeToolErrorText,
|
|
@@ -1073,6 +1065,7 @@ const RUN_BUDGET_EXHAUSTED_MESSAGE =
|
|
|
1073
1065
|
"I stopped rather than keep retrying silently. " +
|
|
1074
1066
|
"Check any completed tool cards above before retrying, ideally as one smaller follow-up.";
|
|
1075
1067
|
const MAX_TEXT_ATTACHMENT_CHARS = 60_000;
|
|
1068
|
+
const MAX_TEXT_ATTACHMENTS_TOTAL_CHARS = 80_000;
|
|
1076
1069
|
const MAX_SELECTION_CONTEXT_CHARS = 8_000;
|
|
1077
1070
|
const MAX_RESOURCE_INVENTORY_ITEMS = 40;
|
|
1078
1071
|
const MAX_RESOURCE_INVENTORY_DESCRIPTION_CHARS = 160;
|
|
@@ -1330,21 +1323,32 @@ function unwrapTextAttachmentEnvelope(text: string): string {
|
|
|
1330
1323
|
return match ? match[1] : text;
|
|
1331
1324
|
}
|
|
1332
1325
|
|
|
1333
|
-
function truncateTextAttachment(
|
|
1334
|
-
|
|
1326
|
+
function truncateTextAttachment(
|
|
1327
|
+
text: string,
|
|
1328
|
+
attachmentName?: string,
|
|
1329
|
+
maxChars = MAX_TEXT_ATTACHMENT_CHARS,
|
|
1330
|
+
): string {
|
|
1331
|
+
if (text.length <= maxChars) return text;
|
|
1335
1332
|
|
|
1336
|
-
const omitted = text.length -
|
|
1333
|
+
const omitted = text.length - maxChars;
|
|
1337
1334
|
const readHint = attachmentName
|
|
1338
1335
|
? ` Use the \`read-attachment\` tool with name="${escapeAttachmentAttribute(attachmentName)}" to read the rest.`
|
|
1339
1336
|
: "";
|
|
1340
|
-
|
|
1337
|
+
if (maxChars === 0) {
|
|
1338
|
+
return `[Attachment content omitted from the initial request; ${omitted.toLocaleString()} characters available.${readHint}]`;
|
|
1339
|
+
}
|
|
1340
|
+
return `${text.slice(0, maxChars)}\n\n[Attachment truncated after ${maxChars.toLocaleString()} characters; ${omitted.toLocaleString()} characters omitted.${readHint}]`;
|
|
1341
1341
|
}
|
|
1342
1342
|
|
|
1343
|
-
function formatTextAttachment(
|
|
1343
|
+
function formatTextAttachment(
|
|
1344
|
+
att: AgentChatAttachment,
|
|
1345
|
+
maxChars = MAX_TEXT_ATTACHMENT_CHARS,
|
|
1346
|
+
): string | null {
|
|
1344
1347
|
if (typeof att.text !== "string" || att.text.length === 0) return null;
|
|
1345
1348
|
const text = truncateTextAttachment(
|
|
1346
1349
|
unwrapTextAttachmentEnvelope(att.text),
|
|
1347
1350
|
att.name,
|
|
1351
|
+
maxChars,
|
|
1348
1352
|
);
|
|
1349
1353
|
|
|
1350
1354
|
const attrs = [
|
|
@@ -1378,6 +1382,7 @@ export function buildUserContentWithAttachments(opts: {
|
|
|
1378
1382
|
}): EngineContentPart[] {
|
|
1379
1383
|
const userContent: EngineContentPart[] = [];
|
|
1380
1384
|
const textAttachments: string[] = [];
|
|
1385
|
+
let remainingTextAttachmentChars = MAX_TEXT_ATTACHMENTS_TOTAL_CHARS;
|
|
1381
1386
|
|
|
1382
1387
|
for (const att of opts.attachments ?? []) {
|
|
1383
1388
|
const uploadedUrl = (att as any).url as string | undefined;
|
|
@@ -1441,9 +1446,21 @@ export function buildUserContentWithAttachments(opts: {
|
|
|
1441
1446
|
continue;
|
|
1442
1447
|
}
|
|
1443
1448
|
|
|
1444
|
-
const
|
|
1449
|
+
const rawTextAttachment =
|
|
1450
|
+
typeof att.text === "string"
|
|
1451
|
+
? unwrapTextAttachmentEnvelope(att.text)
|
|
1452
|
+
: "";
|
|
1453
|
+
const attachmentCharBudget = Math.min(
|
|
1454
|
+
MAX_TEXT_ATTACHMENT_CHARS,
|
|
1455
|
+
remainingTextAttachmentChars,
|
|
1456
|
+
);
|
|
1457
|
+
const textAttachment = formatTextAttachment(att, attachmentCharBudget);
|
|
1445
1458
|
if (textAttachment) {
|
|
1446
1459
|
textAttachments.push(textAttachment);
|
|
1460
|
+
remainingTextAttachmentChars -= Math.min(
|
|
1461
|
+
rawTextAttachment.length,
|
|
1462
|
+
attachmentCharBudget,
|
|
1463
|
+
);
|
|
1447
1464
|
}
|
|
1448
1465
|
}
|
|
1449
1466
|
|
|
@@ -2384,66 +2401,44 @@ export function filterInitialEngineTools(
|
|
|
2384
2401
|
const names = new Set(initialToolNames);
|
|
2385
2402
|
names.add(TOOL_SEARCH_ACTION_NAME);
|
|
2386
2403
|
for (const tool of tools) {
|
|
2387
|
-
if (
|
|
2404
|
+
if (isDefaultInitialToolName(tool.name)) {
|
|
2388
2405
|
names.add(tool.name);
|
|
2389
2406
|
}
|
|
2390
2407
|
}
|
|
2391
2408
|
return tools.filter((tool) => names.has(tool.name));
|
|
2392
2409
|
}
|
|
2393
2410
|
|
|
2394
|
-
|
|
2395
|
-
|
|
2396
|
-
|
|
2397
|
-
|
|
2398
|
-
|
|
2399
|
-
|
|
2400
|
-
|
|
2401
|
-
"
|
|
2402
|
-
"provider-corpus-job",
|
|
2403
|
-
"provider-corpus-jobs",
|
|
2404
|
-
"query-staged-dataset",
|
|
2405
|
-
"list-staged-datasets",
|
|
2406
|
-
"delete-staged-dataset",
|
|
2407
|
-
"run-code",
|
|
2408
|
-
"get-code-execution",
|
|
2409
|
-
"list-extensions",
|
|
2410
|
-
"get-extension",
|
|
2411
|
-
"update-extension",
|
|
2412
|
-
"list-extension-history",
|
|
2413
|
-
"get-extension-history-version",
|
|
2414
|
-
// Common first-class integration shortcuts. These are included only when the
|
|
2415
|
-
// current app/mode registry actually exposes them.
|
|
2416
|
-
"bigquery",
|
|
2417
|
-
"search-bigquery-schema",
|
|
2418
|
-
"bigquery-table-info",
|
|
2419
|
-
"ga4",
|
|
2420
|
-
"amplitude",
|
|
2421
|
-
"prometheus",
|
|
2422
|
-
"grafana",
|
|
2423
|
-
"sentry",
|
|
2424
|
-
"stripe",
|
|
2425
|
-
"account-deep-dive",
|
|
2426
|
-
"slack-messages",
|
|
2427
|
-
"hubspot-deals",
|
|
2428
|
-
"hubspot-records",
|
|
2429
|
-
"hubspot-pipelines",
|
|
2430
|
-
"hubspot-metrics",
|
|
2431
|
-
"gong-calls",
|
|
2432
|
-
"github-repo-files",
|
|
2433
|
-
"jira",
|
|
2434
|
-
"jira-search",
|
|
2435
|
-
"gcloud",
|
|
2436
|
-
"notion-search",
|
|
2437
|
-
"pylon-search",
|
|
2438
|
-
]);
|
|
2439
|
-
|
|
2440
|
-
function isDefaultLeanInitialToolName(name: string): boolean {
|
|
2441
|
-
if (DEFAULT_LEAN_INITIAL_TOOL_NAMES.has(name)) return true;
|
|
2411
|
+
export function buildFirstRequestPayloadDetail(input: {
|
|
2412
|
+
isFirstRequest: boolean;
|
|
2413
|
+
systemPrompt: string;
|
|
2414
|
+
messages: EngineMessage[];
|
|
2415
|
+
tools: EngineTool[];
|
|
2416
|
+
availableToolCount: number;
|
|
2417
|
+
}): string {
|
|
2418
|
+
if (!input.isFirstRequest) return "";
|
|
2442
2419
|
return (
|
|
2443
|
-
|
|
2420
|
+
` first_request_system_chars=${input.systemPrompt.length}` +
|
|
2421
|
+
` first_request_message_chars=${JSON.stringify(input.messages).length}` +
|
|
2422
|
+
` first_request_tool_count=${input.tools.length}` +
|
|
2423
|
+
` first_request_tool_chars=${JSON.stringify(input.tools).length}` +
|
|
2424
|
+
` first_request_available_tool_count=${input.availableToolCount}`
|
|
2444
2425
|
);
|
|
2445
2426
|
}
|
|
2446
2427
|
|
|
2428
|
+
const DEFAULT_INITIAL_TOOL_NAMES = new Set([
|
|
2429
|
+
// Keep only the small discovery/runtime surface universal. App actions are
|
|
2430
|
+
// supplied by the plugin's effective starter list, while provider, MCP,
|
|
2431
|
+
// extension, and other uncommon schemas stay reachable through tool-search.
|
|
2432
|
+
"resources",
|
|
2433
|
+
"docs-search",
|
|
2434
|
+
"get-framework-context",
|
|
2435
|
+
"read-attachment",
|
|
2436
|
+
]);
|
|
2437
|
+
|
|
2438
|
+
function isDefaultInitialToolName(name: string): boolean {
|
|
2439
|
+
return DEFAULT_INITIAL_TOOL_NAMES.has(name);
|
|
2440
|
+
}
|
|
2441
|
+
|
|
2447
2442
|
function extractToolSearchResultNames(value: unknown): string[] {
|
|
2448
2443
|
if (!value || typeof value !== "object") return [];
|
|
2449
2444
|
const result = value as { query?: unknown; results?: unknown };
|
|
@@ -3000,48 +2995,19 @@ export async function runAgentLoop(opts: {
|
|
|
3000
2995
|
);
|
|
3001
2996
|
const repeatedToolErrors = new Map<string, number>();
|
|
3002
2997
|
|
|
3003
|
-
// Tool-call journal hard-block (resume safety).
|
|
3004
|
-
//
|
|
3005
|
-
//
|
|
3006
|
-
//
|
|
3007
|
-
//
|
|
3008
|
-
// Loaded eagerly (not lazily mid-loop) so the current chunk's own
|
|
3009
|
-
// asynchronously-persisted tool_done events can never leak in and make a
|
|
3010
|
-
// same-chunk call wrongly short-circuit. Best-effort: any ledger failure
|
|
3011
|
-
// leaves the journal empty and all calls run normally. Fresh first-turn calls
|
|
3012
|
-
// see an empty journal and are unaffected.
|
|
3013
|
-
let toolCallJournal: ToolCallJournal | null = null;
|
|
2998
|
+
// Tool-call journal hard-block (resume safety). See
|
|
2999
|
+
// `loadPriorTurnToolCallJournal` for the full rationale — snapshotted ONCE
|
|
3000
|
+
// here, before any tool runs in this chunk, and its prior-chunk tool
|
|
3001
|
+
// calls/results are folded into `toolCallHistory` / `toolResultHistory` so
|
|
3002
|
+
// final response guards see evidence from earlier chunks of this turn.
|
|
3014
3003
|
const consumedJournalKeys = new Set<string>();
|
|
3015
|
-
|
|
3016
|
-
|
|
3017
|
-
|
|
3018
|
-
|
|
3019
|
-
|
|
3020
|
-
|
|
3021
|
-
|
|
3022
|
-
// reject a grounded answer (or a successfully-created artifact) after
|
|
3023
|
-
// the evidence-producing query completed in a predecessor run.
|
|
3024
|
-
for (const event of priorEvents) {
|
|
3025
|
-
if (event.type === "tool_start") {
|
|
3026
|
-
toolCallHistory.push({
|
|
3027
|
-
name: event.tool,
|
|
3028
|
-
input: event.input,
|
|
3029
|
-
});
|
|
3030
|
-
} else if (event.type === "tool_done") {
|
|
3031
|
-
toolResultHistory.push({
|
|
3032
|
-
name: event.tool,
|
|
3033
|
-
content: event.result,
|
|
3034
|
-
isError: event.isError === true,
|
|
3035
|
-
});
|
|
3036
|
-
}
|
|
3037
|
-
}
|
|
3038
|
-
toolCallJournal = classifyToolCallJournal(priorEvents);
|
|
3039
|
-
}
|
|
3040
|
-
} catch {
|
|
3041
|
-
// Journal is a hardening layer, never a gate — a failed ledger read just
|
|
3042
|
-
// means no hard-block this turn.
|
|
3043
|
-
}
|
|
3044
|
-
}
|
|
3004
|
+
const {
|
|
3005
|
+
toolCallJournal,
|
|
3006
|
+
priorToolCalls: journaledPriorToolCalls,
|
|
3007
|
+
priorToolResults: journaledPriorToolResults,
|
|
3008
|
+
} = await loadPriorTurnToolCallJournal(opts.threadId);
|
|
3009
|
+
toolCallHistory.push(...journaledPriorToolCalls);
|
|
3010
|
+
toolResultHistory.push(...journaledPriorToolResults);
|
|
3045
3011
|
|
|
3046
3012
|
let finalGuardRetries = 0;
|
|
3047
3013
|
let emptyFinalResponseRetries = 0;
|
|
@@ -3090,40 +3056,13 @@ export async function runAgentLoop(opts: {
|
|
|
3090
3056
|
let contextMessages = messages;
|
|
3091
3057
|
|
|
3092
3058
|
if (opts.threadId) {
|
|
3093
|
-
|
|
3094
|
-
|
|
3095
|
-
|
|
3096
|
-
|
|
3097
|
-
|
|
3098
|
-
|
|
3099
|
-
|
|
3100
|
-
protectedSegmentIds,
|
|
3101
|
-
});
|
|
3102
|
-
const manifest = await buildManifest({
|
|
3103
|
-
threadId: opts.threadId,
|
|
3104
|
-
...(opts.turnId ? { turnId: opts.turnId } : {}),
|
|
3105
|
-
model,
|
|
3106
|
-
rawMessages: messages,
|
|
3107
|
-
sentMessages: transformedMessages,
|
|
3108
|
-
appliedStatus,
|
|
3109
|
-
directives,
|
|
3110
|
-
protectedSegmentIds,
|
|
3111
|
-
source: "structured",
|
|
3112
|
-
enforceable: true,
|
|
3113
|
-
});
|
|
3114
|
-
contextMessages = transformedMessages;
|
|
3115
|
-
void writeContextManifest(opts.threadId, manifest).catch((err) => {
|
|
3116
|
-
console.warn(
|
|
3117
|
-
"[context-xray] failed to write manifest:",
|
|
3118
|
-
err instanceof Error ? err.message : String(err),
|
|
3119
|
-
);
|
|
3120
|
-
});
|
|
3121
|
-
} catch (err) {
|
|
3122
|
-
console.warn(
|
|
3123
|
-
"[context-xray] context transform skipped:",
|
|
3124
|
-
err instanceof Error ? err.message : String(err),
|
|
3125
|
-
);
|
|
3126
|
-
}
|
|
3059
|
+
contextMessages = await applyContextXrayTransformForIteration({
|
|
3060
|
+
threadId: opts.threadId,
|
|
3061
|
+
ownerEmail: opts.ownerEmail,
|
|
3062
|
+
turnId: opts.turnId,
|
|
3063
|
+
model,
|
|
3064
|
+
messages,
|
|
3065
|
+
});
|
|
3127
3066
|
|
|
3128
3067
|
// Observational Memory (consumer): for long threads that have already been
|
|
3129
3068
|
// compacted, fold the reflections+observations in as a leading context
|
|
@@ -5476,7 +5415,6 @@ export async function chainServerDrivenContinuation(opts: {
|
|
|
5476
5415
|
opts.workerProvenInBackgroundFunction === true,
|
|
5477
5416
|
});
|
|
5478
5417
|
const maxDispatchAttempts = dispatchBudget.maxDispatchAttempts;
|
|
5479
|
-
const dispatchResponseTimeoutMs = dispatchBudget.dispatchResponseTimeoutMs;
|
|
5480
5418
|
const continuationMarker = {
|
|
5481
5419
|
runId: nextRunId,
|
|
5482
5420
|
turnId: effectiveTurnId,
|
|
@@ -5551,104 +5489,29 @@ export async function chainServerDrivenContinuation(opts: {
|
|
|
5551
5489
|
...continuationBody,
|
|
5552
5490
|
[AGENT_CHAT_BACKGROUND_RUN_FIELD]: continuationMarker,
|
|
5553
5491
|
};
|
|
5554
|
-
|
|
5555
|
-
|
|
5556
|
-
//
|
|
5557
|
-
//
|
|
5558
|
-
|
|
5559
|
-
|
|
5560
|
-
|
|
5561
|
-
|
|
5562
|
-
|
|
5563
|
-
|
|
5564
|
-
|
|
5565
|
-
|
|
5566
|
-
|
|
5567
|
-
|
|
5568
|
-
|
|
5569
|
-
|
|
5570
|
-
|
|
5571
|
-
|
|
5572
|
-
|
|
5573
|
-
|
|
5574
|
-
|
|
5575
|
-
|
|
5576
|
-
|
|
5577
|
-
// Uncapped budgets (durable-background and true-foreground) keep
|
|
5578
|
-
// the original `500 * 2 ** attempt` schedule unchanged. The capped
|
|
5579
|
-
// budget (proven-in-background-function) instead uses a schedule
|
|
5580
|
-
// starting at 500ms and doubling per gap, capped at
|
|
5581
|
-
// `backoffCapMs` — see `resolveContinuationDispatchBudget` for why
|
|
5582
|
-
// this stays well inside the worker's remaining wall clock even
|
|
5583
|
-
// with 5 attempts.
|
|
5584
|
-
const backoffMs = Number.isFinite(dispatchBudget.backoffCapMs)
|
|
5585
|
-
? Math.min(500 * 2 ** (attempt - 1), dispatchBudget.backoffCapMs)
|
|
5586
|
-
: 500 * 2 ** attempt;
|
|
5587
|
-
await d.sleep(backoffMs);
|
|
5588
|
-
// Keep the pre-inserted successor row visibly alive while we
|
|
5589
|
-
// retry: the awaited attempts + backoff can outlast
|
|
5590
|
-
// UNCLAIMED_BACKGROUND_RUN_GRACE_MS (25s), and without a fresh
|
|
5591
|
-
// heartbeat the unclaimed-run reaper / sweep could error a handoff
|
|
5592
|
-
// we are still delivering.
|
|
5593
|
-
if (nextRowInserted) {
|
|
5594
|
-
await d.updateRunHeartbeat(nextRunId).catch(() => {});
|
|
5595
|
-
}
|
|
5596
|
-
}
|
|
5597
|
-
await d.fireInternalDispatch({
|
|
5598
|
-
event: opts.event,
|
|
5599
|
-
// Durable chain: same path resolution as the initial dispatch —
|
|
5600
|
-
// on hosted Netlify the background function's DEFAULT url (no
|
|
5601
|
-
// custom config.path; async via background:true; never shadowed
|
|
5602
|
-
// because /.netlify/* is excluded from the /* catch-all) so each
|
|
5603
|
-
// chunk keeps the 15-min budget; off-Netlify the in-process
|
|
5604
|
-
// framework route. Foreground self-chain: always the framework
|
|
5605
|
-
// `_process-run` route on the regular function (see the fn doc).
|
|
5606
|
-
path: continuationDispatchPath,
|
|
5607
|
-
taskId: nextRunId,
|
|
5608
|
-
body: dispatchBody,
|
|
5609
|
-
awaitResponse: true,
|
|
5610
|
-
responseTimeoutMs: dispatchResponseTimeoutMs,
|
|
5611
|
-
});
|
|
5612
|
-
dispatched = true;
|
|
5613
|
-
} catch (dispatchErr) {
|
|
5614
|
-
lastDispatchErr = dispatchErr;
|
|
5615
|
-
// Regular-function targets (foreground self-chain) respond only
|
|
5616
|
-
// after the successor chunk FINISHES, so an await timeout is not
|
|
5617
|
-
// proof of a dead handoff. The successor's ATOMIC CLAIM is: a row
|
|
5618
|
-
// that left `dispatch_mode='background'` (claimed) or is already
|
|
5619
|
-
// terminal proves the handoff landed — stop retrying. A duplicate
|
|
5620
|
-
// delivery would lose the claim and no-op anyway; skipping it saves
|
|
5621
|
-
// wall-clock this close to the invocation deadline.
|
|
5622
|
-
if (!opts.chainViaDurableBackground && nextRowInserted) {
|
|
5623
|
-
const claim = await d
|
|
5624
|
-
.readBackgroundRunClaim(nextRunId)
|
|
5625
|
-
.catch(() => null);
|
|
5626
|
-
if (
|
|
5627
|
-
claim &&
|
|
5628
|
-
((claim.dispatchMode && claim.dispatchMode !== "background") ||
|
|
5629
|
-
(claim.status && claim.status !== "running"))
|
|
5630
|
-
) {
|
|
5631
|
-
dispatched = true;
|
|
5632
|
-
break;
|
|
5633
|
-
}
|
|
5634
|
-
}
|
|
5635
|
-
console.error(
|
|
5636
|
-
`[agent-chat] background continuation dispatch attempt ${attempt + 1} failed:`,
|
|
5637
|
-
dispatchErr instanceof Error ? dispatchErr.message : dispatchErr,
|
|
5638
|
-
);
|
|
5639
|
-
// Netlify loop protection (see `isLoopProtectionDispatchError`) is a
|
|
5640
|
-
// property of this same live, nested call chain — retrying the exact
|
|
5641
|
-
// same nested self-dispatch within the next few seconds will not
|
|
5642
|
-
// change that, so further attempts are a guaranteed-doomed use of
|
|
5643
|
-
// this worker's remaining wall clock. Stop immediately (instead of
|
|
5644
|
-
// burning the full `maxDispatchAttempts` budget) and fall into the
|
|
5645
|
-
// same deferred-recovery path below, which hands the successor to the
|
|
5646
|
-
// sweep — a genuinely different, non-nested invocation.
|
|
5647
|
-
if (isLoopProtectionDispatchError(dispatchErr)) {
|
|
5648
|
-
break;
|
|
5649
|
-
}
|
|
5650
|
-
}
|
|
5651
|
-
}
|
|
5492
|
+
// Attempts to deliver the dispatch, retrying with backoff up to the
|
|
5493
|
+
// resolved budget. See `attemptContinuationDispatch` for the full
|
|
5494
|
+
// per-attempt rationale (nested-depth cap, claim-check on failure,
|
|
5495
|
+
// Netlify loop-protection short-circuit) — moved verbatim, unchanged.
|
|
5496
|
+
const { dispatched, lastDispatchErr, nestedDepthExceeded } =
|
|
5497
|
+
await attemptContinuationDispatch({
|
|
5498
|
+
event: opts.event,
|
|
5499
|
+
chainViaDurableBackground: opts.chainViaDurableBackground,
|
|
5500
|
+
backgroundContinuationCount: opts.backgroundContinuationCount,
|
|
5501
|
+
nextRunId,
|
|
5502
|
+
nextRowInserted,
|
|
5503
|
+
continuationDispatchPath,
|
|
5504
|
+
dispatchBody,
|
|
5505
|
+
dispatchBudget,
|
|
5506
|
+
isLoopProtectionDispatchError,
|
|
5507
|
+
maxNestedSelfDispatchDepth: MAX_NESTED_SELF_DISPATCH_DEPTH,
|
|
5508
|
+
deps: {
|
|
5509
|
+
sleep: d.sleep,
|
|
5510
|
+
updateRunHeartbeat: d.updateRunHeartbeat,
|
|
5511
|
+
fireInternalDispatch: d.fireInternalDispatch,
|
|
5512
|
+
readBackgroundRunClaim: d.readBackgroundRunClaim,
|
|
5513
|
+
},
|
|
5514
|
+
});
|
|
5652
5515
|
if (!dispatched) {
|
|
5653
5516
|
if (nextRowInserted) {
|
|
5654
5517
|
// Classify WHY this handoff is being deferred — distinct, greppable
|
|
@@ -6691,6 +6554,13 @@ export function createProductionAgentHandler(
|
|
|
6691
6554
|
...historyMessages,
|
|
6692
6555
|
{ role: "user" as const, content: userContent },
|
|
6693
6556
|
];
|
|
6557
|
+
const firstRequestPayloadDetail = buildFirstRequestPayloadDetail({
|
|
6558
|
+
isFirstRequest: history.length === 0,
|
|
6559
|
+
systemPrompt: requestSystemPrompt,
|
|
6560
|
+
messages,
|
|
6561
|
+
tools: requestTools,
|
|
6562
|
+
availableToolCount: availableRequestTools.length,
|
|
6563
|
+
});
|
|
6694
6564
|
|
|
6695
6565
|
// Atomically claim the run slot for this thread. The claim checks SQL for
|
|
6696
6566
|
// a live (non-stale) running row so two near-simultaneous POSTs on
|
|
@@ -7264,7 +7134,8 @@ export function createProductionAgentHandler(
|
|
|
7264
7134
|
.map(([k, v]) => `${k}=${v}`)
|
|
7265
7135
|
.join(" ") +
|
|
7266
7136
|
` total=${Date.now() - setupT0}` +
|
|
7267
|
-
(backgroundRuntimeDetail ? ` ${backgroundRuntimeDetail}` : "")
|
|
7137
|
+
(backgroundRuntimeDetail ? ` ${backgroundRuntimeDetail}` : "") +
|
|
7138
|
+
firstRequestPayloadDetail;
|
|
7268
7139
|
|
|
7269
7140
|
startRun(
|
|
7270
7141
|
runId,
|
|
@@ -7565,6 +7436,12 @@ export function createProductionAgentHandler(
|
|
|
7565
7436
|
// `processors` opt + ProcessorChain/TripWire) is the deliverable and is
|
|
7566
7437
|
// already callable directly by sub-agents, A2A, MCP, and tests; this is
|
|
7567
7438
|
// only the HTTP-handler convenience plumbing.
|
|
7439
|
+
const userVisibleSentimentInput =
|
|
7440
|
+
typeof displayMessage === "string" && displayMessage.trim().length > 0
|
|
7441
|
+
? displayMessage
|
|
7442
|
+
: typeof message === "string" && message.trim().length > 0
|
|
7443
|
+
? message
|
|
7444
|
+
: undefined;
|
|
7568
7445
|
const agentLoopOpts = {
|
|
7569
7446
|
engine,
|
|
7570
7447
|
model: effectiveModel,
|
|
@@ -7652,6 +7529,14 @@ export function createProductionAgentHandler(
|
|
|
7652
7529
|
},
|
|
7653
7530
|
experimentAssignments,
|
|
7654
7531
|
modelSelectionSource,
|
|
7532
|
+
sentimentInput: shouldInferSentimentForTurn({
|
|
7533
|
+
internalContinuation: Boolean(internalContinuation),
|
|
7534
|
+
isBackgroundWorker,
|
|
7535
|
+
backgroundContinuationCount,
|
|
7536
|
+
hasUserText: Boolean(userVisibleSentimentInput),
|
|
7537
|
+
})
|
|
7538
|
+
? userVisibleSentimentInput
|
|
7539
|
+
: undefined,
|
|
7655
7540
|
classifyError: () => {
|
|
7656
7541
|
if (
|
|
7657
7542
|
agentLoopOpts.signal.aborted &&
|
|
@@ -154,9 +154,14 @@ function stripBrackets(title: string): string {
|
|
|
154
154
|
|
|
155
155
|
/**
|
|
156
156
|
* Parse a pending `changelog/<file>.md` entry: optional `---` frontmatter
|
|
157
|
-
* (`type:` / `date:`) followed by the markdown description body.
|
|
157
|
+
* (`type:` / `date:`) followed by the markdown description body. Callers that
|
|
158
|
+
* know the entry filename can provide its date as a fallback for hand-written
|
|
159
|
+
* entries that omit `date:`.
|
|
158
160
|
*/
|
|
159
|
-
export function parsePendingEntry(
|
|
161
|
+
export function parsePendingEntry(
|
|
162
|
+
content: string,
|
|
163
|
+
fallbackDate?: string,
|
|
164
|
+
): PendingChangelogEntry {
|
|
160
165
|
let type: string | undefined;
|
|
161
166
|
let date: string | undefined;
|
|
162
167
|
let body = content;
|
|
@@ -176,7 +181,7 @@ export function parsePendingEntry(content: string): PendingChangelogEntry {
|
|
|
176
181
|
|
|
177
182
|
return {
|
|
178
183
|
type: normalizeType(type),
|
|
179
|
-
date,
|
|
184
|
+
date: date?.match(ISO_DATE)?.[1] ?? fallbackDate?.match(ISO_DATE)?.[1],
|
|
180
185
|
text: body.trim(),
|
|
181
186
|
};
|
|
182
187
|
}
|
|
@@ -264,7 +264,7 @@ export function printDoctorHelp(io: Pick<DoctorIo, "log"> = defaultIo): void {
|
|
|
264
264
|
[
|
|
265
265
|
"Usage:",
|
|
266
266
|
" agent-native doctor Scan app source for security-critical guard violations",
|
|
267
|
-
" agent-native doctor --json Machine-readable report: { ok, findings, guardsRun }",
|
|
267
|
+
" agent-native doctor --json Machine-readable report: { ok, findings, guardsRun, strict }",
|
|
268
268
|
" agent-native doctor --only <guard,guard> Run only the named guard(s)",
|
|
269
269
|
" agent-native doctor --strict Escalate findings to a hard failure when used by `agent-native build --strict`",
|
|
270
270
|
" agent-native doctor --cwd <dir> Run against a project root other than the current directory",
|
|
@@ -328,8 +328,14 @@ export async function runDoctor(
|
|
|
328
328
|
const report = runDoctorScan({ root, only: opts.only });
|
|
329
329
|
|
|
330
330
|
if (opts.json) {
|
|
331
|
-
|
|
332
|
-
|
|
331
|
+
// The machine-readable report always goes to stdout (io.log), whether
|
|
332
|
+
// or not findings are present, so `agent-native doctor --json >
|
|
333
|
+
// report.json` in CI always captures the report. Only the usage/
|
|
334
|
+
// execution error payloads above (bad --cwd, unknown --only) go to
|
|
335
|
+
// stderr — those are diagnostics for exit code 2, not the report.
|
|
336
|
+
io.log(
|
|
337
|
+
JSON.stringify({ ...report, strict: Boolean(opts.strict) }, null, 2),
|
|
338
|
+
);
|
|
333
339
|
} else {
|
|
334
340
|
io.log(formatDoctorHuman(report, root));
|
|
335
341
|
if (!report.ok) {
|
|
@@ -2378,6 +2378,9 @@ function localPlanBridgeWarnings(input: {
|
|
|
2378
2378
|
const appUrl = new URL(input.appUrl);
|
|
2379
2379
|
const bridgeUrl = new URL(input.bridgeUrl);
|
|
2380
2380
|
if (appUrl.protocol === "https:" && bridgeUrl.protocol === "http:") {
|
|
2381
|
+
warnings.push(
|
|
2382
|
+
`Chrome/Edge will ask for Local Network access so ${appUrl.hostname} can read this loopback bridge. Allow it; if you denied it, re-enable Local Network access in the ${appUrl.hostname} site settings, then retry.`,
|
|
2383
|
+
);
|
|
2381
2384
|
warnings.push(
|
|
2382
2385
|
"Safari may block the hosted HTTPS Plan UI from reading the HTTP localhost bridge. Use Chrome/Chromium/Edge, or pass --app-url http://localhost:8096 when running a local Plan app.",
|
|
2383
2386
|
);
|
|
@@ -2926,6 +2929,7 @@ async function runServe(args: Record<string, string | boolean>): Promise<void> {
|
|
|
2926
2929
|
appUrl: bridge.result.appUrl,
|
|
2927
2930
|
bridgeUrl: bridge.result.bridgeUrl,
|
|
2928
2931
|
}),
|
|
2932
|
+
"Keep this bridge command running while the Plan page is open; stopping it makes this URL unreachable.",
|
|
2929
2933
|
"Press Ctrl+C to stop.",
|
|
2930
2934
|
]
|
|
2931
2935
|
.filter(Boolean)
|
|
@@ -3067,8 +3071,12 @@ Common flow:
|
|
|
3067
3071
|
against that local-only source. The hosted app fetches the MDX from localhost in
|
|
3068
3072
|
the browser; it does not write plan content to the hosted database. The served
|
|
3069
3073
|
URL is written to \`.plan-url\` by default; pass \`--url-file\` to choose a
|
|
3070
|
-
different local-only file. On macOS, \`--open\` prefers Chromium browsers
|
|
3071
|
-
|
|
3074
|
+
different local-only file. On macOS, \`--open\` prefers Chromium browsers.
|
|
3075
|
+
Chrome/Edge will ask for Local Network access to read the loopback bridge; if
|
|
3076
|
+
you deny it, re-enable Local Network access in the plan.agent-native.com site
|
|
3077
|
+
settings and retry. Keep the bridge command running while the page is open.
|
|
3078
|
+
Safari may block the hosted HTTPS page from reading the HTTP localhost bridge;
|
|
3079
|
+
use a Chromium browser or a local Plan app via \`--app-url http://localhost:8096\`.
|
|
3072
3080
|
Use \`plan local verify\` for headless bridge/CORS diagnostics that exit cleanly.
|
|
3073
3081
|
Use \`plan local preview\` for a local Plan dev server route. \`preview --out\` is
|
|
3074
3082
|
a legacy/debug escape hatch that writes a standalone static HTML file.
|