@agent-native/core 0.92.11 → 0.93.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/corpus/README.md +2 -2
- package/corpus/core/CHANGELOG.md +45 -0
- package/corpus/core/docs/content/automation-connectors.mdx +80 -0
- package/corpus/core/docs/content/extensions.mdx +8 -0
- package/corpus/core/docs/content/locales/ar-SA/extensions.mdx +8 -0
- package/corpus/core/docs/content/locales/ar-SA/messaging.mdx +84 -15
- package/corpus/core/docs/content/locales/ar-SA/template-clips.mdx +1 -0
- package/corpus/core/docs/content/locales/ar-SA/template-design.mdx +1 -0
- package/corpus/core/docs/content/locales/de-DE/extensions.mdx +10 -0
- package/corpus/core/docs/content/locales/de-DE/messaging.mdx +92 -15
- package/corpus/core/docs/content/locales/de-DE/template-clips.mdx +1 -0
- package/corpus/core/docs/content/locales/de-DE/template-design.mdx +1 -0
- package/corpus/core/docs/content/locales/es-ES/extensions.mdx +10 -0
- package/corpus/core/docs/content/locales/es-ES/messaging.mdx +91 -15
- package/corpus/core/docs/content/locales/es-ES/template-clips.mdx +1 -0
- package/corpus/core/docs/content/locales/es-ES/template-design.mdx +1 -0
- package/corpus/core/docs/content/locales/fr-FR/extensions.mdx +10 -0
- package/corpus/core/docs/content/locales/fr-FR/messaging.mdx +91 -15
- package/corpus/core/docs/content/locales/fr-FR/template-clips.mdx +1 -0
- package/corpus/core/docs/content/locales/fr-FR/template-design.mdx +1 -0
- package/corpus/core/docs/content/locales/hi-IN/extensions.mdx +8 -0
- package/corpus/core/docs/content/locales/hi-IN/messaging.mdx +81 -15
- package/corpus/core/docs/content/locales/hi-IN/template-clips.mdx +1 -0
- package/corpus/core/docs/content/locales/hi-IN/template-design.mdx +1 -0
- package/corpus/core/docs/content/locales/ja-JP/extensions.mdx +9 -0
- package/corpus/core/docs/content/locales/ja-JP/messaging.mdx +81 -15
- package/corpus/core/docs/content/locales/ja-JP/template-clips.mdx +1 -0
- package/corpus/core/docs/content/locales/ja-JP/template-design.mdx +1 -0
- package/corpus/core/docs/content/locales/ko-KR/extensions.mdx +8 -0
- package/corpus/core/docs/content/locales/ko-KR/messaging.mdx +80 -15
- package/corpus/core/docs/content/locales/ko-KR/template-clips.mdx +1 -0
- package/corpus/core/docs/content/locales/ko-KR/template-design.mdx +1 -0
- package/corpus/core/docs/content/locales/pt-BR/extensions.mdx +9 -0
- package/corpus/core/docs/content/locales/pt-BR/messaging.mdx +88 -15
- package/corpus/core/docs/content/locales/pt-BR/template-clips.mdx +1 -0
- package/corpus/core/docs/content/locales/pt-BR/template-design.mdx +1 -0
- package/corpus/core/docs/content/locales/zh-CN/extensions.mdx +6 -0
- package/corpus/core/docs/content/locales/zh-CN/messaging.mdx +78 -15
- package/corpus/core/docs/content/locales/zh-CN/template-clips.mdx +1 -0
- package/corpus/core/docs/content/locales/zh-CN/template-design.mdx +1 -0
- package/corpus/core/docs/content/locales/zh-TW/extensions.mdx +6 -0
- package/corpus/core/docs/content/locales/zh-TW/messaging.mdx +78 -15
- package/corpus/core/docs/content/locales/zh-TW/template-clips.mdx +1 -0
- package/corpus/core/docs/content/locales/zh-TW/template-design.mdx +1 -0
- package/corpus/core/docs/content/messaging.mdx +227 -45
- package/corpus/core/docs/content/template-clips.mdx +3 -0
- package/corpus/core/docs/content/template-design.mdx +4 -0
- package/corpus/core/package.json +5 -1
- package/corpus/core/src/a2a/artifact-response.ts +131 -2
- package/corpus/core/src/a2a/client.ts +10 -0
- package/corpus/core/src/a2a/handlers.ts +40 -76
- package/corpus/core/src/a2a/types.ts +2 -0
- package/corpus/core/src/agent/durable-background.ts +24 -0
- package/corpus/core/src/agent/production-agent.ts +48 -5
- package/corpus/core/src/agent/run-manager.ts +171 -20
- package/corpus/core/src/agent/run-store.ts +297 -42
- package/corpus/core/src/agent/types.ts +23 -0
- package/corpus/core/src/audit/record.ts +31 -0
- package/corpus/core/src/audit/store.ts +69 -3
- package/corpus/core/src/audit/types.ts +13 -0
- package/corpus/core/src/automation/index.ts +802 -0
- package/corpus/core/src/cli/create.ts +12 -5
- package/corpus/core/src/cli/design-connect.ts +596 -36
- package/corpus/core/src/client/AgentPanel.tsx +51 -6
- package/corpus/core/src/client/AssistantChat.tsx +274 -147
- package/corpus/core/src/client/MultiTabAssistantChat.tsx +3 -0
- package/corpus/core/src/client/RunStuckBanner.tsx +69 -20
- package/corpus/core/src/client/agent-chat-adapter.ts +110 -17
- package/corpus/core/src/client/automation.ts +22 -0
- package/corpus/core/src/client/chat/run-recovery.tsx +67 -50
- package/corpus/core/src/client/composer/TiptapComposer.tsx +8 -0
- package/corpus/core/src/client/index.ts +30 -0
- package/corpus/core/src/client/integrations/api.ts +295 -0
- package/corpus/core/src/client/integrations/index.ts +26 -0
- package/corpus/core/src/client/transcription/use-live-transcription.ts +68 -5
- package/corpus/core/src/client/use-run-stuck-detection.ts +41 -3
- package/corpus/core/src/deploy/build.ts +59 -3
- package/corpus/core/src/deploy/workspace-deploy.ts +37 -2
- package/corpus/core/src/file-upload/types.ts +2 -0
- package/corpus/core/src/index.ts +37 -0
- package/corpus/core/src/integrations/a2a-continuations-store.ts +6 -4
- package/corpus/core/src/integrations/adapters/discord.ts +362 -0
- package/corpus/core/src/integrations/adapters/index.ts +29 -0
- package/corpus/core/src/integrations/adapters/microsoft-teams.ts +411 -0
- package/corpus/core/src/integrations/adapters/slack.ts +861 -27
- package/corpus/core/src/integrations/adapters/telegram.ts +54 -15
- package/corpus/core/src/integrations/adapters/whatsapp.ts +41 -17
- package/corpus/core/src/integrations/catalog.ts +571 -0
- package/corpus/core/src/integrations/controls-store.ts +187 -0
- package/corpus/core/src/integrations/index.ts +100 -0
- package/corpus/core/src/integrations/installations-store.ts +677 -0
- package/corpus/core/src/integrations/integration-memory.ts +187 -0
- package/corpus/core/src/integrations/pending-tasks-retry-job.ts +6 -6
- package/corpus/core/src/integrations/pending-tasks-store.ts +83 -5
- package/corpus/core/src/integrations/plugin.ts +685 -47
- package/corpus/core/src/integrations/scope-store.ts +498 -0
- package/corpus/core/src/integrations/slack-manifest.ts +78 -0
- package/corpus/core/src/integrations/slack-oauth.ts +343 -0
- package/corpus/core/src/integrations/types.ts +179 -0
- package/corpus/core/src/integrations/usage-budget-store.ts +906 -0
- package/corpus/core/src/integrations/webhook-handler.ts +562 -51
- package/corpus/core/src/jobs/scheduler.ts +100 -2
- package/corpus/core/src/jobs/tools.ts +45 -9
- package/corpus/core/src/provider-api/index.ts +72 -1
- package/corpus/core/src/resources/handlers.ts +88 -14
- package/corpus/core/src/resources/script-helpers.ts +36 -7
- package/corpus/core/src/resources/store.ts +59 -52
- package/corpus/core/src/scripts/call-agent.ts +107 -1
- package/corpus/core/src/server/agent-chat-plugin.ts +294 -119
- package/corpus/core/src/server/auth.ts +10 -14
- package/corpus/core/src/server/builder-design-systems.ts +16 -1
- package/corpus/core/src/server/edge.ts +18 -0
- package/corpus/core/src/server/index.ts +26 -0
- package/corpus/core/src/server/request-context.ts +18 -0
- package/corpus/core/src/server/social-og-image.ts +3 -2
- package/corpus/core/src/styles/agent-native.css +62 -44
- package/corpus/core/src/templates/default/.agents/skills/capture-learnings/SKILL.md +22 -9
- package/corpus/core/src/templates/default/AGENTS.md +7 -3
- package/corpus/core/src/templates/workspace-core/.agents/skills/authentication/SKILL.md +1 -1
- package/corpus/core/src/templates/workspace-core/.agents/skills/capture-learnings/SKILL.md +22 -9
- package/corpus/core/src/templates/workspace-core/.agents/skills/extension-points/SKILL.md +6 -3
- package/corpus/core/src/templates/workspace-core/.agents/skills/extensions/SKILL.md +25 -0
- package/corpus/core/src/templates/workspace-core/.agents/skills/integration-webhooks/SKILL.md +15 -0
- package/corpus/core/src/templates/workspace-core/AGENTS.md +3 -2
- package/corpus/core/src/usage/store.ts +37 -2
- package/corpus/templates/analytics/.agents/skills/capture-learnings/SKILL.md +22 -9
- package/corpus/templates/analytics/.agents/skills/provider-api/SKILL.md +23 -0
- package/corpus/templates/analytics/.builder/skills/provider-api/SKILL.md +15 -0
- package/corpus/templates/analytics/actions/save-monitor.ts +25 -2
- package/corpus/templates/analytics/app/lib/data-sources.ts +28 -0
- package/corpus/templates/analytics/changelog/2026-07-10-agent-created-uptime-monitors-now-return-a-direct-link-to-th.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-10-dashboard-email-reports-still-arrive-when-screenshot-capture-temporarily-fails.md +6 -0
- package/corpus/templates/analytics/server/jobs/dashboard-report.ts +3 -7
- package/corpus/templates/analytics/server/lib/credential-keys.ts +12 -0
- package/corpus/templates/analytics/server/lib/dashboard-report.ts +5 -1
- package/corpus/templates/analytics/server/lib/provider-credentials.ts +2 -0
- package/corpus/templates/analytics/server/routes/api/test-connection.post.ts +16 -0
- package/corpus/templates/assets/.agents/skills/capture-learnings/SKILL.md +22 -9
- package/corpus/templates/brain/.agents/skills/capture-learnings/SKILL.md +22 -9
- package/corpus/templates/calendar/.agents/skills/capture-learnings/SKILL.md +22 -9
- package/corpus/templates/calendar/app/components/calendar/CommandPalette.tsx +98 -108
- package/corpus/templates/calendar/app/components/calendar/EventAttendeesSection.tsx +97 -90
- package/corpus/templates/calendar/changelog/2026-07-10-event-guest-details-and-option-menus-now-use-valid-accessibl.md +6 -0
- package/corpus/templates/calendar/changelog/2026-07-10-natural-language-event-phrases-stay-available-as-quick-creat.md +6 -0
- package/corpus/templates/chat/.agents/skills/capture-learnings/SKILL.md +22 -9
- package/corpus/templates/chat/changelog/2026-07-10-chat-now-makes-ai-connection-setup-clear-without-shifting-th.md +6 -0
- package/corpus/templates/clips/.agents/skills/capture-learnings/SKILL.md +22 -9
- package/corpus/templates/clips/.agents/skills/recording/SKILL.md +17 -1
- package/corpus/templates/clips/.agents/skills/video-sharing/SKILL.md +8 -0
- package/corpus/templates/clips/AGENTS.md +8 -3
- package/corpus/templates/clips/actions/finalize-recording.ts +63 -23
- package/corpus/templates/clips/actions/get-recording-player-data.ts +6 -2
- package/corpus/templates/clips/actions/lib/ensure-seekable-video.ts +72 -9
- package/corpus/templates/clips/actions/list-recordings.ts +19 -3
- package/corpus/templates/clips/actions/navigate.ts +2 -0
- package/corpus/templates/clips/actions/reprocess-recording.ts +20 -6
- package/corpus/templates/clips/actions/request-transcript.ts +16 -31
- package/corpus/templates/clips/actions/view-screen.ts +57 -5
- package/corpus/templates/clips/app/components/layout/Header.tsx +1 -0
- package/corpus/templates/clips/app/components/library/empty-state.tsx +2 -0
- package/corpus/templates/clips/app/components/library/library-grid.tsx +69 -42
- package/corpus/templates/clips/app/components/library/library-layout.tsx +15 -1
- package/corpus/templates/clips/app/components/library/recording-card.tsx +81 -68
- package/corpus/templates/clips/app/components/library/search-bar.tsx +4 -3
- package/corpus/templates/clips/app/components/player/delete-recording-menu.tsx +9 -3
- package/corpus/templates/clips/app/components/player/share-dialog.tsx +1 -1
- package/corpus/templates/clips/app/components/player/transcript-panel.tsx +27 -5
- package/corpus/templates/clips/app/hooks/use-library.ts +1 -1
- package/corpus/templates/clips/app/hooks/use-navigation-state.ts +10 -2
- package/corpus/templates/clips/app/hooks/use-player-shortcuts.ts +1 -0
- package/corpus/templates/clips/app/i18n/ar-SA.ts +7 -1
- package/corpus/templates/clips/app/i18n/de-DE.ts +7 -1
- package/corpus/templates/clips/app/i18n/en-US.ts +7 -1
- package/corpus/templates/clips/app/i18n/es-ES.ts +7 -1
- package/corpus/templates/clips/app/i18n/fr-FR.ts +7 -1
- package/corpus/templates/clips/app/i18n/hi-IN.ts +7 -1
- package/corpus/templates/clips/app/i18n/ja-JP.ts +7 -1
- package/corpus/templates/clips/app/i18n/ko-KR.ts +7 -1
- package/corpus/templates/clips/app/i18n/pt-BR.ts +7 -1
- package/corpus/templates/clips/app/i18n/zh-CN.ts +8 -1
- package/corpus/templates/clips/app/i18n/zh-TW.ts +8 -1
- package/corpus/templates/clips/app/lib/recording-visibility.ts +70 -0
- package/corpus/templates/clips/app/routes/_app.shared.tsx +20 -0
- package/corpus/templates/clips/app/routes/download.tsx +24 -8
- package/corpus/templates/clips/app/routes/r.$recordingId.tsx +115 -2
- package/corpus/templates/clips/app/routes/record.tsx +62 -0
- package/corpus/templates/clips/app/routes/share.$shareId.tsx +25 -16
- package/corpus/templates/clips/changelog/2026-07-10-clips-desktop-is-now-available-for-linux-with-appimage-debia.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-10-clips-downloads-updates-sooner-in-the-background-and-offers-.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-10-clips-shared-with-you-now-appear-in-a-searchable-shared-with.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-10-clips-with-missing-mobile-video-frames-can-be-repaired-witho.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-10-fixed-copying-agent-responses-and-transcript-text-from-recor.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-10-mobile-camera-recordings-pause-while-backgrounded.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-10-mp4-downloads-now-show-progress-immediately-after-the-option.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-10-recording-pages-now-open-as-soon-as-you-stop-with-a-share-li.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-10-recordings-now-seek-smoothly-downloads-use-the-correct-file-.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-10-s3-compatible-storage-now-saves-hosted-recordings-without-re.md +6 -0
- package/corpus/templates/clips/desktop/README.md +22 -6
- package/corpus/templates/clips/desktop/package.json +1 -1
- package/corpus/templates/clips/desktop/src/app.tsx +32 -19
- package/corpus/templates/clips/desktop/src/components/ReadinessPanel.tsx +15 -9
- package/corpus/templates/clips/desktop/src/lib/finalization-guard.ts +22 -0
- package/corpus/templates/clips/desktop/src/lib/permissions.ts +3 -1
- package/corpus/templates/clips/desktop/src/lib/recorder.ts +97 -120
- package/corpus/templates/clips/desktop/src/lib/updater.ts +26 -4
- package/corpus/templates/clips/desktop/src/overlays/finalizing.tsx +4 -8
- package/corpus/templates/clips/desktop/src-tauri/Cargo.toml +1 -1
- package/corpus/templates/clips/desktop/src-tauri/src/clips/mod.rs +2 -2
- package/corpus/templates/clips/desktop/src-tauri/src/permission_status.rs +11 -7
- package/corpus/templates/clips/desktop/src-tauri/tauri.linux.conf.json +11 -0
- package/corpus/templates/clips/netlify.toml +3 -0
- package/corpus/templates/clips/server/lib/post-finalize-dispatch.ts +106 -0
- package/corpus/templates/clips/server/lib/public-agent-context.ts +9 -1
- package/corpus/templates/clips/server/lib/resumable-upload-provider.ts +52 -0
- package/corpus/templates/clips/server/lib/s3-upload-provider.ts +433 -85
- package/corpus/templates/clips/server/lib/video-remux.ts +114 -0
- package/corpus/templates/clips/server/routes/api/_agent-native-background/post-finalize-worker.post.ts +109 -0
- package/corpus/templates/clips/server/routes/api/clips-updater.json.get.ts +22 -11
- package/corpus/templates/clips/server/routes/api/public-recording.get.ts +4 -2
- package/corpus/templates/clips/server/routes/api/uploads/[recordingId]/abort.post.ts +47 -5
- package/corpus/templates/clips/server/routes/api/uploads/[recordingId]/chunk.post.ts +10 -2
- package/corpus/templates/clips/shared/share-loader-response.ts +12 -0
- package/corpus/templates/clips/shared/transcript-status.ts +40 -0
- package/corpus/templates/content/.agents/skills/capture-learnings/SKILL.md +22 -9
- package/corpus/templates/content/.agents/skills/content/SKILL.md +57 -5
- package/corpus/templates/content/AGENTS.md +65 -55
- package/corpus/templates/content/actions/_builder-cms-read-client.ts +92 -23
- package/corpus/templates/content/actions/_database-source-utils.ts +207 -41
- package/corpus/templates/content/actions/_property-utils.ts +30 -2
- package/corpus/templates/content/actions/add-content-database-source-field-property.ts +316 -121
- package/corpus/templates/content/actions/attach-content-database-source.ts +41 -17
- package/corpus/templates/content/actions/change-content-database-source-role.ts +46 -8
- package/corpus/templates/content/actions/submit-content-database-form.ts +497 -0
- package/corpus/templates/content/actions/suggest-source-join-key.ts +8 -1
- package/corpus/templates/content/actions/update-content-database-view.ts +8 -1
- package/corpus/templates/content/actions/view-screen.ts +4 -1
- package/corpus/templates/content/agent-native.app-skill.json +1 -1
- package/corpus/templates/content/app/components/editor/database/DatabaseView.tsx +250 -64
- package/corpus/templates/content/app/components/editor/database/FormView.tsx +460 -0
- package/corpus/templates/content/app/components/editor/database/navigation-state.ts +3 -0
- package/corpus/templates/content/app/components/editor/database/settings.tsx +30 -37
- package/corpus/templates/content/app/components/editor/database/shared.tsx +2 -0
- package/corpus/templates/content/app/components/editor/database/view-config.ts +29 -1
- package/corpus/templates/content/app/components/ui/textarea.tsx +1 -0
- package/corpus/templates/content/app/hooks/use-content-database.ts +22 -0
- package/corpus/templates/content/app/i18n/zh-TW.ts +21 -0
- package/corpus/templates/content/app/i18n-data.ts +225 -0
- package/corpus/templates/content/changelog/2026-07-09-builder-source-refreshes-now-keep-mapped-fields-such-as-topi.md +6 -0
- package/corpus/templates/content/changelog/2026-07-10-builder-backed-properties-now-load-current-source-values-as-.md +6 -0
- package/corpus/templates/content/changelog/2026-07-10-builder-database-refreshes-now-stay-explicit-and-accurate.md +6 -0
- package/corpus/templates/content/changelog/2026-07-10-database-form-views-now-collect-ordered-required-answers-and.md +6 -0
- package/corpus/templates/content/changelog/2026-07-10-database-tables-now-use-a-quieter-more-compact-layout-with-c.md +6 -0
- package/corpus/templates/content/changelog/2026-07-10-slack-intake-routes-to-content-database-forms.md +6 -0
- package/corpus/templates/content/parity/matrix.md +1 -0
- package/corpus/templates/content/parity/matrix.ts +18 -0
- package/corpus/templates/content/shared/api.ts +28 -1
- package/corpus/templates/content/shared/database-form.ts +53 -0
- package/corpus/templates/design/.agents/skills/capture-learnings/SKILL.md +22 -9
- package/corpus/templates/design/.agents/skills/design-generation/SKILL.md +26 -0
- package/corpus/templates/design/.agents/skills/design-systems/SKILL.md +85 -12
- package/corpus/templates/design/AGENTS.md +72 -18
- package/corpus/templates/design/DESIGN.md +1 -1
- package/corpus/templates/design/DEVELOPING.md +1 -1
- package/corpus/templates/design/FIGMA_INTEROPERABILITY.md +116 -0
- package/corpus/templates/design/actions/create-design-from-template.ts +220 -0
- package/corpus/templates/design/actions/create-design-system.ts +92 -16
- package/corpus/templates/design/actions/delete-design-template.ts +28 -0
- package/corpus/templates/design/actions/delete-file.ts +7 -0
- package/corpus/templates/design/actions/edit-design.ts +3 -0
- package/corpus/templates/design/actions/export-design-as-figma-svg.ts +137 -5
- package/corpus/templates/design/actions/export-pdf.ts +1 -1
- package/corpus/templates/design/actions/generate-design.ts +3 -0
- package/corpus/templates/design/actions/get-design-snapshot.ts +9 -0
- package/corpus/templates/design/actions/get-figma-connection-status.ts +26 -0
- package/corpus/templates/design/actions/get-figma-design-context.ts +138 -0
- package/corpus/templates/design/actions/get-figma-styles.ts +2 -2
- package/corpus/templates/design/actions/import-figma-clipboard.ts +112 -16
- package/corpus/templates/design/actions/import-figma-frame.ts +15 -4
- package/corpus/templates/design/actions/index-design-system-with-builder.ts +4 -0
- package/corpus/templates/design/actions/list-design-templates.ts +118 -0
- package/corpus/templates/design/actions/navigate.ts +16 -2
- package/corpus/templates/design/actions/provider-api-request.ts +11 -1
- package/corpus/templates/design/actions/save-design-as-template.ts +156 -0
- package/corpus/templates/design/actions/set-active-breakpoint.ts +13 -4
- package/corpus/templates/design/actions/take-design-screenshot.ts +73 -3
- package/corpus/templates/design/actions/update-file.ts +39 -22
- package/corpus/templates/design/actions/view-screen.ts +36 -1
- package/corpus/templates/design/actions/write-local-file.ts +50 -38
- package/corpus/templates/design/app/components/design/AutoLayoutSuggestionDialog.tsx +151 -0
- package/corpus/templates/design/app/components/design/CanvasContextMenu.tsx +20 -0
- package/corpus/templates/design/app/components/design/DesignCanvas.tsx +251 -22
- package/corpus/templates/design/app/components/design/DesignEditorSkeleton.tsx +3 -3
- package/corpus/templates/design/app/components/design/DesignImportPanel.tsx +384 -9
- package/corpus/templates/design/app/components/design/EditPanel.tsx +105 -32
- package/corpus/templates/design/app/components/design/MultiScreenCanvas.tsx +58 -28
- package/corpus/templates/design/app/components/design/TweaksPanel.tsx +6 -0
- package/corpus/templates/design/app/components/design/bridge/editor-chrome.bridge.ts +539 -53
- package/corpus/templates/design/app/components/design/bridge/embedded-wheel.bridge.ts +40 -0
- package/corpus/templates/design/app/components/design/code-workbench/CodeWorkbench.tsx +1 -0
- package/corpus/templates/design/app/components/design/code-workbench/explorer/ExplorerView.tsx +1 -0
- package/corpus/templates/design/app/components/design/code-workbench/explorer/FileTree.tsx +5 -1
- package/corpus/templates/design/app/components/design/code-workbench/workspace/create-providers.ts +2 -0
- package/corpus/templates/design/app/components/design/code-workbench/workspace/localhost-provider.ts +3 -1
- package/corpus/templates/design/app/components/design/code-workbench/workspace/types.ts +2 -0
- package/corpus/templates/design/app/components/design/edit-panel/element-identity.ts +19 -0
- package/corpus/templates/design/app/components/design/edit-panel/frame-presets-panel.tsx +1 -0
- package/corpus/templates/design/app/components/design/edit-panel/interaction-state-helpers.ts +27 -0
- package/corpus/templates/design/app/components/design/inspector/InteractionStatePanel.tsx +137 -81
- package/corpus/templates/design/app/components/design/inspector/frame-size-presets.ts +25 -5
- package/corpus/templates/design/app/components/design/multi-screen/chrome-transitions.ts +1 -1
- package/corpus/templates/design/app/components/design/multi-screen/frame-geometry.ts +220 -3
- package/corpus/templates/design/app/components/design/multi-screen/overview-layout.ts +13 -0
- package/corpus/templates/design/app/components/design/multi-screen/types.ts +22 -1
- package/corpus/templates/design/app/components/design/types.ts +4 -0
- package/corpus/templates/design/app/components/design-system/ProductionDesignSystemShowcase.tsx +208 -0
- package/corpus/templates/design/app/components/editor/FigmaLinkComposerBubble.tsx +321 -0
- package/corpus/templates/design/app/components/editor/PromptDialog.tsx +24 -4
- package/corpus/templates/design/app/components/layout/Layout.tsx +16 -2
- package/corpus/templates/design/app/components/layout/Sidebar.tsx +2 -0
- package/corpus/templates/design/app/components/templates/TemplatePreview.tsx +72 -0
- package/corpus/templates/design/app/global.css +2 -35
- package/corpus/templates/design/app/hooks/use-navigation-state.ts +10 -0
- package/corpus/templates/design/app/i18n/zh-TW.ts +127 -5
- package/corpus/templates/design/app/i18n-breakpoints.ts +209 -0
- package/corpus/templates/design/app/i18n-data.ts +1317 -59
- package/corpus/templates/design/app/i18n-template-feature.ts +458 -0
- package/corpus/templates/design/app/lib/design-clipboard.ts +202 -0
- package/corpus/templates/design/app/lib/design-file-upload.ts +87 -0
- package/corpus/templates/design/app/lib/design-import.ts +168 -11
- package/corpus/templates/design/app/lib/desktop-design-preview.ts +423 -0
- package/corpus/templates/design/app/lib/figma-clipboard.ts +74 -8
- package/corpus/templates/design/app/lib/figma-connection.ts +161 -0
- package/corpus/templates/design/app/lib/figma-svg-copy.ts +814 -22
- package/corpus/templates/design/app/lib/figma-url.ts +77 -0
- package/corpus/templates/design/app/lib/pending-generation.ts +35 -0
- package/corpus/templates/design/app/pages/DesignSystems.tsx +236 -177
- package/corpus/templates/design/app/pages/Index.tsx +38 -0
- package/corpus/templates/design/app/pages/Templates.tsx +498 -0
- package/corpus/templates/design/app/pages/design-editor/auto-layout-suggestion.ts +328 -0
- package/corpus/templates/design/app/pages/design-editor/clone-idrefs.ts +113 -0
- package/corpus/templates/design/app/pages/design-editor/created-screen-navigation.ts +55 -0
- package/corpus/templates/design/app/pages/design-editor/editor-session.ts +32 -0
- package/corpus/templates/design/app/pages/design-editor/editor-state.ts +49 -2
- package/corpus/templates/design/app/pages/design-editor/export-capture.ts +296 -0
- package/corpus/templates/design/app/pages/design-editor/history.ts +101 -2
- package/corpus/templates/design/app/pages/design-editor/layout-operations.ts +28 -1
- package/corpus/templates/design/app/pages/design-editor/overview-camera.ts +34 -0
- package/corpus/templates/design/app/pages/design-editor/pending-edits.ts +202 -6
- package/corpus/templates/design/app/pages/design-editor/pending-structure-verification.ts +92 -0
- package/corpus/templates/design/app/pages/design-editor/save-failure.ts +58 -0
- package/corpus/templates/design/app/routes/templates.tsx +4 -6
- package/corpus/templates/design/changelog/2026-07-10-app-workspaces-now-use-clean-borderless-main-surfaces-throug.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-ask-chat-what-s-in-a-figma-file-or-frame-structure-screensho.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-canvas-edits-now-reject-malformed-html-before-it-can-corrupt.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-complex-designs-now-export-as-valid-secure-svgs-and-crisp-ra.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-complex-figma-masks-arcs-rich-text-transformed-images-and-ad.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-copied-layers-paste-across-designs-and-browser-tabs.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-copy-and-download-editable-figma-svg.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-copying-design-text-now-pastes-readable-text-into-other-apps.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-deleted-screens-can-be-restored-with-undo-and-removed-again-.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-design-changes-now-save-before-switching-apps-and-retry-when.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-design-stays-usable-on-phones-by-keeping-editor-panels-and-f.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-download-all-screens-as-one-multi-page-pdf-from-the-overview.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-duplicated-layers-now-keep-labels-aria-relationships-fragmen.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-fig-import-results-stay-compact.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-figma-imports-now-load-real-fonts-fix-rotated-gradient-dashe.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-figma-links-in-chat-and-the-import-tab-now-offer-secure-one-.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-fixed-cmd-z-not-restoring-content-after-an-agent-driven-desi.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-fixed-download-pdf-being-unreachable-from-the-export-panel-e.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-fixed-dragging-a-layer-out-of-an-auto-layout-row-column-no-l.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-fixed-figma-svg-export-text-wrapping-sizing-and-inner-layer.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-fixed-hiding-or-locking-one-layer-no-longer-hides-or-blocks-.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-fixed-png-screenshots-of-tall-screens-being-cropped-to-one-v.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-fixed-png-svg-exports-capturing-broken-layout-when-webfonts-.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-frame-tool-now-offers-standard-ad-unit-size-presets-medium-r.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-full-view-controls-stay-within-their-frame-instead-of-coveri.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-hover-focus-focus-visible-pressed-and-disabled-states-now-pr.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-layer-drops-now-land-in-the-intended-grid-row-stay-visually-.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-local-code-workspaces-now-keep-unsaved-edits-across-panel-sw.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-local-visual-editing-now-keeps-authenticated-sessions-shared.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-long-running-agent-work-no-longer-shows-a-premature-stuck-wa.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-managed-figma-connections-are-recognized-automatically.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-new-designs-can-open-directly-in-the-editor-without-a-pr.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-new-screens-are-selected-and-revealed-immediately.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-new-text-layers-undo-as-one-safe-creation.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-preview-and-apply-inferred-auto-layout-without-changing-yo.md +5 -0
- package/corpus/templates/design/changelog/2026-07-10-print-pdf-exports-and-paper-size-presets-letter-a4-now-match.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-responsive-frame-editing.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-reusable-design-templates.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-screen-overview-frames-now-use-a-clearer-interact-action-wit.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-start-designs-from-source-linked-material-3-carbon-or-primer.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-tweaks-guidance.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-uploaded-fig-files-can-now-become-editable-design-screens-wi.md +6 -0
- package/corpus/templates/design/e2e/helpers.ts +3 -3
- package/corpus/templates/design/package.json +2 -0
- package/corpus/templates/design/scripts/qa-figma-stress-import.ts +96 -0
- package/corpus/templates/design/server/db/index.ts +10 -0
- package/corpus/templates/design/server/db/schema.ts +44 -0
- package/corpus/templates/design/server/handlers/import-design-file.ts +114 -80
- package/corpus/templates/design/server/handlers/index-design-system-with-builder.ts +19 -6
- package/corpus/templates/design/server/lib/design-export.ts +240 -3
- package/corpus/templates/design/server/lib/design-template-data.ts +89 -0
- package/corpus/templates/design/server/lib/design-to-figma-svg.ts +250 -26
- package/corpus/templates/design/server/lib/fig-file-decoder.ts +839 -0
- package/corpus/templates/design/server/lib/fig-file-import.ts +287 -0
- package/corpus/templates/design/server/lib/fig-file-limits.ts +3 -0
- package/corpus/templates/design/server/lib/fig-file-to-html.ts +2568 -0
- package/corpus/templates/design/server/lib/figma-design-context.ts +359 -0
- package/corpus/templates/design/server/lib/figma-node-import.ts +478 -22
- package/corpus/templates/design/server/lib/figma-node-to-html.ts +554 -29
- package/corpus/templates/design/server/lib/local-figma-qa-upload.ts +112 -0
- package/corpus/templates/design/server/lib/verify-write-grant.ts +16 -2
- package/corpus/templates/design/server/lib/visible-clipboard-html.ts +13 -3
- package/corpus/templates/design/server/plugins/agent-chat.ts +7 -0
- package/corpus/templates/design/server/plugins/db.ts +42 -0
- package/corpus/templates/design/server/plugins/local-figma-qa-upload.ts +7 -0
- package/corpus/templates/design/server/register-secrets.ts +8 -8
- package/corpus/templates/design/server/routes/api/qa-figma-import-assets/[assetId].get.ts +46 -0
- package/corpus/templates/design/server/source-workspace.ts +104 -12
- package/corpus/templates/design/shared/code-layer.ts +105 -28
- package/corpus/templates/design/shared/design-system-templates.ts +301 -0
- package/corpus/templates/design/shared/design-template-presets.ts +195 -0
- package/corpus/templates/design/shared/figma-url.ts +8 -0
- package/corpus/templates/design/shared/html-integrity.ts +306 -0
- package/corpus/templates/design/shared/interaction-states.ts +318 -23
- package/corpus/templates/design/shared/locked-layers.ts +151 -0
- package/corpus/templates/dispatch/.agents/skills/capture-learnings/SKILL.md +22 -9
- package/corpus/templates/dispatch/app/i18n/zh-TW.ts +48 -0
- package/corpus/templates/dispatch/app/i18n-data.ts +536 -1
- package/corpus/templates/dispatch/changelog/2026-07-10-connect-slack-workspaces-with-oauth-and-manage-channel-ident.md +6 -0
- package/corpus/templates/dispatch/changelog/2026-07-10-microsoft-teams-bots-and-discord-slash-commands-can-now-conn.md +6 -0
- package/corpus/templates/dispatch/changelog/2026-07-10-slack-and-telegram-now-route-uptime-monitor-requests-to-anal.md +6 -0
- package/corpus/templates/forms/.agents/skills/capture-learnings/SKILL.md +22 -9
- package/corpus/templates/forms/.agents/skills/form-publishing/SKILL.md +7 -0
- package/corpus/templates/forms/AGENTS.md +4 -0
- package/corpus/templates/forms/actions/create-form.ts +44 -7
- package/corpus/templates/forms/actions/lib/assert-publishable-form.ts +38 -0
- package/corpus/templates/forms/actions/patch-form-fields.ts +4 -0
- package/corpus/templates/forms/actions/update-form.ts +2 -36
- package/corpus/templates/forms/app/i18n/ar-SA.ts +3 -0
- package/corpus/templates/forms/app/i18n/de-DE.ts +3 -0
- package/corpus/templates/forms/app/i18n/en-US.ts +3 -0
- package/corpus/templates/forms/app/i18n/es-ES.ts +3 -0
- package/corpus/templates/forms/app/i18n/fr-FR.ts +3 -0
- package/corpus/templates/forms/app/i18n/hi-IN.ts +3 -0
- package/corpus/templates/forms/app/i18n/ja-JP.ts +3 -0
- package/corpus/templates/forms/app/i18n/ko-KR.ts +3 -0
- package/corpus/templates/forms/app/i18n/pt-BR.ts +3 -0
- package/corpus/templates/forms/app/i18n/zh-CN.ts +2 -0
- package/corpus/templates/forms/app/i18n/zh-TW.ts +3 -0
- package/corpus/templates/forms/app/pages/FormBuilderPage.tsx +17 -0
- package/corpus/templates/forms/changelog/2026-07-10-agent-created-published-forms-now-return-the-anonymous-publi.md +6 -0
- package/corpus/templates/forms/changelog/2026-07-10-published-forms-can-no-longer-be-edited-into-an-unusable-emp.md +6 -0
- package/corpus/templates/forms/server/handlers/submissions.ts +4 -3
- package/corpus/templates/forms/server/plugins/agent-chat.ts +1 -0
- package/corpus/templates/forms/shared/types.ts +5 -0
- package/corpus/templates/mail/.agents/skills/capture-learnings/SKILL.md +22 -9
- package/corpus/templates/mail/app/components/layout/AppLayout.tsx +2 -2
- package/corpus/templates/mail/changelog/2026-07-10-mail-navigation-now-uses-a-clean-borderless-drawer.md +6 -0
- package/corpus/templates/plan/.agents/skills/capture-learnings/SKILL.md +22 -9
- package/corpus/templates/plan/app/lib/plan-local-bridge.ts +4 -1
- package/corpus/templates/plan/changelog/2026-07-10-local-plans-now-keep-valid-content-visible-when-one-generate.md +6 -0
- package/corpus/templates/plan/server/lib/local-plan-files.ts +4 -1
- package/corpus/templates/slides/.agents/skills/capture-learnings/SKILL.md +22 -9
- package/dist/a2a/artifact-response.d.ts.map +1 -1
- package/dist/a2a/artifact-response.js +88 -2
- package/dist/a2a/artifact-response.js.map +1 -1
- package/dist/a2a/client.d.ts +9 -0
- package/dist/a2a/client.d.ts.map +1 -1
- package/dist/a2a/client.js +1 -0
- package/dist/a2a/client.js.map +1 -1
- package/dist/a2a/handlers.d.ts.map +1 -1
- package/dist/a2a/handlers.js +24 -69
- package/dist/a2a/handlers.js.map +1 -1
- package/dist/a2a/types.d.ts +2 -0
- package/dist/a2a/types.d.ts.map +1 -1
- package/dist/a2a/types.js.map +1 -1
- package/dist/agent/durable-background.d.ts +11 -0
- package/dist/agent/durable-background.d.ts.map +1 -1
- package/dist/agent/durable-background.js +17 -0
- package/dist/agent/durable-background.js.map +1 -1
- package/dist/agent/production-agent.d.ts +5 -3
- package/dist/agent/production-agent.d.ts.map +1 -1
- package/dist/agent/production-agent.js +34 -8
- package/dist/agent/production-agent.js.map +1 -1
- package/dist/agent/run-manager.d.ts +44 -2
- package/dist/agent/run-manager.d.ts.map +1 -1
- package/dist/agent/run-manager.js +124 -18
- package/dist/agent/run-manager.js.map +1 -1
- package/dist/agent/run-store.d.ts +109 -0
- package/dist/agent/run-store.d.ts.map +1 -1
- package/dist/agent/run-store.js +274 -37
- package/dist/agent/run-store.js.map +1 -1
- package/dist/agent/types.d.ts +22 -0
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/agent/types.js.map +1 -1
- package/dist/audit/record.d.ts.map +1 -1
- package/dist/audit/record.js +29 -0
- package/dist/audit/record.js.map +1 -1
- package/dist/audit/store.d.ts.map +1 -1
- package/dist/audit/store.js +62 -3
- package/dist/audit/store.js.map +1 -1
- package/dist/audit/types.d.ts +13 -0
- package/dist/audit/types.d.ts.map +1 -1
- package/dist/audit/types.js.map +1 -1
- package/dist/automation/index.d.ts +193 -0
- package/dist/automation/index.d.ts.map +1 -0
- package/dist/automation/index.js +464 -0
- package/dist/automation/index.js.map +1 -0
- package/dist/cli/create.d.ts.map +1 -1
- package/dist/cli/create.js +10 -3
- package/dist/cli/create.js.map +1 -1
- package/dist/cli/design-connect.d.ts.map +1 -1
- package/dist/cli/design-connect.js +492 -35
- package/dist/cli/design-connect.js.map +1 -1
- package/dist/client/AgentPanel.d.ts +7 -1
- package/dist/client/AgentPanel.d.ts.map +1 -1
- package/dist/client/AgentPanel.js +32 -8
- package/dist/client/AgentPanel.js.map +1 -1
- package/dist/client/AssistantChat.d.ts +15 -0
- package/dist/client/AssistantChat.d.ts.map +1 -1
- package/dist/client/AssistantChat.js +115 -47
- package/dist/client/AssistantChat.js.map +1 -1
- package/dist/client/MultiTabAssistantChat.d.ts.map +1 -1
- package/dist/client/MultiTabAssistantChat.js +1 -1
- package/dist/client/MultiTabAssistantChat.js.map +1 -1
- package/dist/client/RunStuckBanner.d.ts +14 -1
- package/dist/client/RunStuckBanner.d.ts.map +1 -1
- package/dist/client/RunStuckBanner.js +35 -7
- package/dist/client/RunStuckBanner.js.map +1 -1
- package/dist/client/agent-chat-adapter.d.ts +4 -1
- package/dist/client/agent-chat-adapter.d.ts.map +1 -1
- package/dist/client/agent-chat-adapter.js +97 -16
- package/dist/client/agent-chat-adapter.js.map +1 -1
- package/dist/client/automation.d.ts +14 -0
- package/dist/client/automation.d.ts.map +1 -0
- package/dist/client/automation.js +9 -0
- package/dist/client/automation.js.map +1 -0
- package/dist/client/chat/run-recovery.d.ts +4 -0
- package/dist/client/chat/run-recovery.d.ts.map +1 -1
- package/dist/client/chat/run-recovery.js +12 -10
- package/dist/client/chat/run-recovery.js.map +1 -1
- package/dist/client/composer/TiptapComposer.d.ts.map +1 -1
- package/dist/client/composer/TiptapComposer.js +8 -0
- package/dist/client/composer/TiptapComposer.js.map +1 -1
- package/dist/client/index.d.ts +2 -0
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +2 -0
- package/dist/client/index.js.map +1 -1
- package/dist/client/integrations/api.d.ts +115 -0
- package/dist/client/integrations/api.d.ts.map +1 -0
- package/dist/client/integrations/api.js +123 -0
- package/dist/client/integrations/api.js.map +1 -0
- package/dist/client/integrations/index.d.ts +1 -0
- package/dist/client/integrations/index.d.ts.map +1 -1
- package/dist/client/integrations/index.js +1 -0
- package/dist/client/integrations/index.js.map +1 -1
- package/dist/client/transcription/use-live-transcription.d.ts.map +1 -1
- package/dist/client/transcription/use-live-transcription.js +59 -5
- package/dist/client/transcription/use-live-transcription.js.map +1 -1
- package/dist/client/use-run-stuck-detection.d.ts +16 -1
- package/dist/client/use-run-stuck-detection.d.ts.map +1 -1
- package/dist/client/use-run-stuck-detection.js +23 -4
- package/dist/client/use-run-stuck-detection.js.map +1 -1
- package/dist/collab/awareness.d.ts +2 -2
- package/dist/collab/awareness.d.ts.map +1 -1
- package/dist/deploy/build.d.ts.map +1 -1
- package/dist/deploy/build.js +49 -4
- package/dist/deploy/build.js.map +1 -1
- package/dist/deploy/workspace-deploy.d.ts.map +1 -1
- package/dist/deploy/workspace-deploy.js +31 -2
- package/dist/deploy/workspace-deploy.js.map +1 -1
- package/dist/file-upload/types.d.ts +2 -0
- package/dist/file-upload/types.d.ts.map +1 -1
- package/dist/file-upload/types.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/integrations/a2a-continuations-store.d.ts.map +1 -1
- package/dist/integrations/a2a-continuations-store.js +6 -4
- package/dist/integrations/a2a-continuations-store.js.map +1 -1
- package/dist/integrations/adapters/discord.d.ts +3 -0
- package/dist/integrations/adapters/discord.d.ts.map +1 -0
- package/dist/integrations/adapters/discord.js +261 -0
- package/dist/integrations/adapters/discord.js.map +1 -0
- package/dist/integrations/adapters/index.d.ts +4 -0
- package/dist/integrations/adapters/index.d.ts.map +1 -0
- package/dist/integrations/adapters/index.js +26 -0
- package/dist/integrations/adapters/index.js.map +1 -0
- package/dist/integrations/adapters/microsoft-teams.d.ts +5 -0
- package/dist/integrations/adapters/microsoft-teams.d.ts.map +1 -0
- package/dist/integrations/adapters/microsoft-teams.js +295 -0
- package/dist/integrations/adapters/microsoft-teams.js.map +1 -0
- package/dist/integrations/adapters/slack.d.ts +8 -2
- package/dist/integrations/adapters/slack.d.ts.map +1 -1
- package/dist/integrations/adapters/slack.js +736 -27
- package/dist/integrations/adapters/slack.js.map +1 -1
- package/dist/integrations/adapters/telegram.d.ts +0 -2
- package/dist/integrations/adapters/telegram.d.ts.map +1 -1
- package/dist/integrations/adapters/telegram.js +49 -15
- package/dist/integrations/adapters/telegram.js.map +1 -1
- package/dist/integrations/adapters/whatsapp.d.ts +0 -2
- package/dist/integrations/adapters/whatsapp.d.ts.map +1 -1
- package/dist/integrations/adapters/whatsapp.js +40 -17
- package/dist/integrations/adapters/whatsapp.js.map +1 -1
- package/dist/integrations/catalog.d.ts +75 -0
- package/dist/integrations/catalog.d.ts.map +1 -0
- package/dist/integrations/catalog.js +451 -0
- package/dist/integrations/catalog.js.map +1 -0
- package/dist/integrations/controls-store.d.ts +44 -0
- package/dist/integrations/controls-store.d.ts.map +1 -0
- package/dist/integrations/controls-store.js +129 -0
- package/dist/integrations/controls-store.js.map +1 -0
- package/dist/integrations/index.d.ts +13 -1
- package/dist/integrations/index.d.ts.map +1 -1
- package/dist/integrations/index.js +9 -0
- package/dist/integrations/index.js.map +1 -1
- package/dist/integrations/installations-store.d.ts +112 -0
- package/dist/integrations/installations-store.d.ts.map +1 -0
- package/dist/integrations/installations-store.js +493 -0
- package/dist/integrations/installations-store.js.map +1 -0
- package/dist/integrations/integration-memory.d.ts +24 -0
- package/dist/integrations/integration-memory.d.ts.map +1 -0
- package/dist/integrations/integration-memory.js +136 -0
- package/dist/integrations/integration-memory.js.map +1 -0
- package/dist/integrations/pending-tasks-retry-job.d.ts.map +1 -1
- package/dist/integrations/pending-tasks-retry-job.js +6 -5
- package/dist/integrations/pending-tasks-retry-job.js.map +1 -1
- package/dist/integrations/pending-tasks-store.d.ts +17 -0
- package/dist/integrations/pending-tasks-store.d.ts.map +1 -1
- package/dist/integrations/pending-tasks-store.js +71 -5
- package/dist/integrations/pending-tasks-store.js.map +1 -1
- package/dist/integrations/plugin.d.ts.map +1 -1
- package/dist/integrations/plugin.js +520 -35
- package/dist/integrations/plugin.js.map +1 -1
- package/dist/integrations/scope-store.d.ts +65 -0
- package/dist/integrations/scope-store.d.ts.map +1 -0
- package/dist/integrations/scope-store.js +361 -0
- package/dist/integrations/scope-store.js.map +1 -0
- package/dist/integrations/slack-manifest.d.ts +66 -0
- package/dist/integrations/slack-manifest.d.ts.map +1 -0
- package/dist/integrations/slack-manifest.js +70 -0
- package/dist/integrations/slack-manifest.js.map +1 -0
- package/dist/integrations/slack-oauth.d.ts +99 -0
- package/dist/integrations/slack-oauth.d.ts.map +1 -0
- package/dist/integrations/slack-oauth.js +226 -0
- package/dist/integrations/slack-oauth.js.map +1 -0
- package/dist/integrations/types.d.ts +144 -0
- package/dist/integrations/types.d.ts.map +1 -1
- package/dist/integrations/types.js +16 -1
- package/dist/integrations/types.js.map +1 -1
- package/dist/integrations/usage-budget-store.d.ts +84 -0
- package/dist/integrations/usage-budget-store.d.ts.map +1 -0
- package/dist/integrations/usage-budget-store.js +650 -0
- package/dist/integrations/usage-budget-store.js.map +1 -0
- package/dist/integrations/webhook-handler.d.ts +4 -0
- package/dist/integrations/webhook-handler.d.ts.map +1 -1
- package/dist/integrations/webhook-handler.js +415 -47
- package/dist/integrations/webhook-handler.js.map +1 -1
- package/dist/jobs/scheduler.d.ts +6 -0
- package/dist/jobs/scheduler.d.ts.map +1 -1
- package/dist/jobs/scheduler.js +83 -4
- package/dist/jobs/scheduler.js.map +1 -1
- package/dist/jobs/tools.d.ts.map +1 -1
- package/dist/jobs/tools.js +43 -11
- package/dist/jobs/tools.js.map +1 -1
- package/dist/provider-api/index.d.ts +4 -4
- package/dist/provider-api/index.d.ts.map +1 -1
- package/dist/provider-api/index.js +72 -1
- package/dist/provider-api/index.js.map +1 -1
- package/dist/resources/handlers.d.ts.map +1 -1
- package/dist/resources/handlers.js +57 -15
- package/dist/resources/handlers.js.map +1 -1
- package/dist/resources/script-helpers.d.ts.map +1 -1
- package/dist/resources/script-helpers.js +34 -8
- package/dist/resources/script-helpers.js.map +1 -1
- package/dist/resources/store.d.ts +10 -0
- package/dist/resources/store.d.ts.map +1 -1
- package/dist/resources/store.js +54 -47
- package/dist/resources/store.js.map +1 -1
- package/dist/scripts/call-agent.d.ts.map +1 -1
- package/dist/scripts/call-agent.js +106 -1
- package/dist/scripts/call-agent.js.map +1 -1
- package/dist/server/agent-chat-plugin.d.ts +15 -4
- package/dist/server/agent-chat-plugin.d.ts.map +1 -1
- package/dist/server/agent-chat-plugin.js +248 -113
- package/dist/server/agent-chat-plugin.js.map +1 -1
- package/dist/server/auth.d.ts.map +1 -1
- package/dist/server/auth.js +10 -14
- package/dist/server/auth.js.map +1 -1
- package/dist/server/builder-design-systems.d.ts +3 -1
- package/dist/server/builder-design-systems.d.ts.map +1 -1
- package/dist/server/builder-design-systems.js +9 -2
- package/dist/server/builder-design-systems.js.map +1 -1
- package/dist/server/edge.d.ts +1 -1
- package/dist/server/edge.d.ts.map +1 -1
- package/dist/server/edge.js +1 -1
- package/dist/server/edge.js.map +1 -1
- package/dist/server/index.d.ts +2 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +2 -1
- package/dist/server/index.js.map +1 -1
- package/dist/server/request-context.d.ts +18 -0
- package/dist/server/request-context.d.ts.map +1 -1
- package/dist/server/request-context.js.map +1 -1
- package/dist/server/social-og-image.d.ts.map +1 -1
- package/dist/server/social-og-image.js +3 -2
- package/dist/server/social-og-image.js.map +1 -1
- package/dist/server/transcribe-voice.d.ts +1 -1
- package/dist/styles/agent-native.css +62 -44
- package/dist/templates/default/.agents/skills/capture-learnings/SKILL.md +22 -9
- package/dist/templates/default/AGENTS.md +7 -3
- package/dist/templates/workspace-core/.agents/skills/authentication/SKILL.md +1 -1
- package/dist/templates/workspace-core/.agents/skills/capture-learnings/SKILL.md +22 -9
- package/dist/templates/workspace-core/.agents/skills/extension-points/SKILL.md +6 -3
- package/dist/templates/workspace-core/.agents/skills/extensions/SKILL.md +25 -0
- package/dist/templates/workspace-core/.agents/skills/integration-webhooks/SKILL.md +15 -0
- package/dist/templates/workspace-core/AGENTS.md +3 -2
- package/dist/usage/store.d.ts +7 -0
- package/dist/usage/store.d.ts.map +1 -1
- package/dist/usage/store.js +24 -3
- package/dist/usage/store.js.map +1 -1
- package/docs/content/automation-connectors.mdx +80 -0
- package/docs/content/extensions.mdx +8 -0
- package/docs/content/locales/ar-SA/extensions.mdx +8 -0
- package/docs/content/locales/ar-SA/messaging.mdx +84 -15
- package/docs/content/locales/ar-SA/template-clips.mdx +1 -0
- package/docs/content/locales/ar-SA/template-design.mdx +1 -0
- package/docs/content/locales/de-DE/extensions.mdx +10 -0
- package/docs/content/locales/de-DE/messaging.mdx +92 -15
- package/docs/content/locales/de-DE/template-clips.mdx +1 -0
- package/docs/content/locales/de-DE/template-design.mdx +1 -0
- package/docs/content/locales/es-ES/extensions.mdx +10 -0
- package/docs/content/locales/es-ES/messaging.mdx +91 -15
- package/docs/content/locales/es-ES/template-clips.mdx +1 -0
- package/docs/content/locales/es-ES/template-design.mdx +1 -0
- package/docs/content/locales/fr-FR/extensions.mdx +10 -0
- package/docs/content/locales/fr-FR/messaging.mdx +91 -15
- package/docs/content/locales/fr-FR/template-clips.mdx +1 -0
- package/docs/content/locales/fr-FR/template-design.mdx +1 -0
- package/docs/content/locales/hi-IN/extensions.mdx +8 -0
- package/docs/content/locales/hi-IN/messaging.mdx +81 -15
- package/docs/content/locales/hi-IN/template-clips.mdx +1 -0
- package/docs/content/locales/hi-IN/template-design.mdx +1 -0
- package/docs/content/locales/ja-JP/extensions.mdx +9 -0
- package/docs/content/locales/ja-JP/messaging.mdx +81 -15
- package/docs/content/locales/ja-JP/template-clips.mdx +1 -0
- package/docs/content/locales/ja-JP/template-design.mdx +1 -0
- package/docs/content/locales/ko-KR/extensions.mdx +8 -0
- package/docs/content/locales/ko-KR/messaging.mdx +80 -15
- package/docs/content/locales/ko-KR/template-clips.mdx +1 -0
- package/docs/content/locales/ko-KR/template-design.mdx +1 -0
- package/docs/content/locales/pt-BR/extensions.mdx +9 -0
- package/docs/content/locales/pt-BR/messaging.mdx +88 -15
- package/docs/content/locales/pt-BR/template-clips.mdx +1 -0
- package/docs/content/locales/pt-BR/template-design.mdx +1 -0
- package/docs/content/locales/zh-CN/extensions.mdx +6 -0
- package/docs/content/locales/zh-CN/messaging.mdx +78 -15
- package/docs/content/locales/zh-CN/template-clips.mdx +1 -0
- package/docs/content/locales/zh-CN/template-design.mdx +1 -0
- package/docs/content/locales/zh-TW/extensions.mdx +6 -0
- package/docs/content/locales/zh-TW/messaging.mdx +78 -15
- package/docs/content/locales/zh-TW/template-clips.mdx +1 -0
- package/docs/content/locales/zh-TW/template-design.mdx +1 -0
- package/docs/content/messaging.mdx +227 -45
- package/docs/content/template-clips.mdx +3 -0
- package/docs/content/template-design.mdx +4 -0
- package/package.json +5 -1
- package/src/templates/default/.agents/skills/capture-learnings/SKILL.md +22 -9
- package/src/templates/default/AGENTS.md +7 -3
- package/src/templates/workspace-core/.agents/skills/authentication/SKILL.md +1 -1
- package/src/templates/workspace-core/.agents/skills/capture-learnings/SKILL.md +22 -9
- package/src/templates/workspace-core/.agents/skills/extension-points/SKILL.md +6 -3
- package/src/templates/workspace-core/.agents/skills/extensions/SKILL.md +25 -0
- package/src/templates/workspace-core/.agents/skills/integration-webhooks/SKILL.md +15 -0
- package/src/templates/workspace-core/AGENTS.md +3 -2
|
@@ -39,6 +39,19 @@ export interface RunStuckBannerProps {
|
|
|
39
39
|
* itself only handles aborting the prior run.
|
|
40
40
|
*/
|
|
41
41
|
onRetry?: (runId: string) => void;
|
|
42
|
+
/**
|
|
43
|
+
* Returns true when the run has a tool call or sub-agent (A2A) call that
|
|
44
|
+
* hasn't returned a result yet — typically backed by
|
|
45
|
+
* `chatHandle.hasInFlightWork()`. "No progress" for a stretch of time does
|
|
46
|
+
* not mean the run is dead: a long provider query or a cross-app `call
|
|
47
|
+
* agent` can legitimately emit nothing for minutes. When this returns
|
|
48
|
+
* true, Retry (which aborts the run) is hidden — aborting would destroy
|
|
49
|
+
* real in-flight work and re-execute the same long call from scratch.
|
|
50
|
+
* Only Cancel, an explicit destructive choice, remains available. Checked
|
|
51
|
+
* fresh on every render; omit to keep the unconditional Retry/Cancel
|
|
52
|
+
* behavior.
|
|
53
|
+
*/
|
|
54
|
+
hasInFlightWork?: () => boolean;
|
|
42
55
|
/**
|
|
43
56
|
* Called whenever the stuck state transitions. Useful for surfacing
|
|
44
57
|
* observability events (Sentry, PostHog) at the call site.
|
|
@@ -158,6 +171,7 @@ export function RunStuckBanner({
|
|
|
158
171
|
onStuckStateChange,
|
|
159
172
|
autoRetry = false,
|
|
160
173
|
autoRetryOwnerId,
|
|
174
|
+
hasInFlightWork,
|
|
161
175
|
className,
|
|
162
176
|
}: RunStuckBannerProps) {
|
|
163
177
|
const state = useRunStuckDetection({
|
|
@@ -175,6 +189,23 @@ export function RunStuckBanner({
|
|
|
175
189
|
}
|
|
176
190
|
const ownerId = autoRetryOwnerId ?? generatedOwnerIdRef.current;
|
|
177
191
|
const backgroundWorkerStillAlive = isFreshBackgroundWorker(state);
|
|
192
|
+
// A live tool call or sub-agent (A2A) call means "no progress" is not the
|
|
193
|
+
// same as "dead" — the process is genuinely still doing the user's work.
|
|
194
|
+
// Retry aborts the run, so it must not be offered as the (implicitly
|
|
195
|
+
// safe-looking) primary action while real work is in flight; see the
|
|
196
|
+
// `hasInFlightWork` prop doc comment. Re-checked on every render (the
|
|
197
|
+
// underlying source mutates in place as tool/agent-call events stream in),
|
|
198
|
+
// which is why this is a function prop rather than a plain boolean.
|
|
199
|
+
//
|
|
200
|
+
// Two sources, combined disjunctively (either knowing = in flight): the
|
|
201
|
+
// SERVER-authoritative `state.hasInFlightWork` from /runs/active (the
|
|
202
|
+
// `in_flight_since` marker, correct even when the client's message list is
|
|
203
|
+
// stale after a reconnect/reader-mode replay) and the client-side proxy
|
|
204
|
+
// prop (unresolved tool-call parts in the local messages). Destroying live
|
|
205
|
+
// work is the failure we guard against, so we err toward "in flight" if
|
|
206
|
+
// either signal says so.
|
|
207
|
+
const inFlightWork =
|
|
208
|
+
state.hasInFlightWork === true || (hasInFlightWork?.() ?? false);
|
|
178
209
|
// Server-continued runs are recovered by the SERVER (chained continuation
|
|
179
210
|
// chunks + lost-handoff sweep); an automatic client abort would kill a live
|
|
180
211
|
// server-chained run. Auto-retry is therefore disabled unconditionally for
|
|
@@ -229,6 +260,9 @@ export function RunStuckBanner({
|
|
|
229
260
|
// comment on isServerContinuedDispatch above).
|
|
230
261
|
isServerContinuedDispatch ||
|
|
231
262
|
backgroundWorkerStillAlive ||
|
|
263
|
+
// A live tool/A2A call in flight — never auto-abort real work (see
|
|
264
|
+
// `inFlightWork` comment above).
|
|
265
|
+
inFlightWork ||
|
|
232
266
|
!state.isStuck ||
|
|
233
267
|
!state.runId ||
|
|
234
268
|
busy.type !== "none" ||
|
|
@@ -264,6 +298,7 @@ export function RunStuckBanner({
|
|
|
264
298
|
autoRetry,
|
|
265
299
|
backgroundWorkerStillAlive,
|
|
266
300
|
busy,
|
|
301
|
+
inFlightWork,
|
|
267
302
|
isServerContinuedDispatch,
|
|
268
303
|
onRetry,
|
|
269
304
|
ownerId,
|
|
@@ -288,7 +323,10 @@ export function RunStuckBanner({
|
|
|
288
323
|
};
|
|
289
324
|
|
|
290
325
|
const handleRetry = async () => {
|
|
291
|
-
|
|
326
|
+
// Defense in depth: the button is hidden while `inFlightWork` is true
|
|
327
|
+
// (see render below), but guard the handler itself too so an abort can
|
|
328
|
+
// never be triggered against live work through this path.
|
|
329
|
+
if (!state.runId || busy.type !== "none" || inFlightWork) return;
|
|
292
330
|
const runId = state.runId;
|
|
293
331
|
setBusy({ type: "retry", runId });
|
|
294
332
|
trackEvent("agent_chat_stuck_retry", {
|
|
@@ -305,6 +343,8 @@ export function RunStuckBanner({
|
|
|
305
343
|
const stuckSeconds =
|
|
306
344
|
state.stuckSinceMs != null ? Math.floor(state.stuckSinceMs / 1000) : null;
|
|
307
345
|
|
|
346
|
+
const stillWorking = backgroundWorkerStillAlive || inFlightWork;
|
|
347
|
+
|
|
308
348
|
return (
|
|
309
349
|
<div
|
|
310
350
|
role="status"
|
|
@@ -322,41 +362,50 @@ export function RunStuckBanner({
|
|
|
322
362
|
<div className="flex min-w-0 flex-1 flex-col gap-1.5">
|
|
323
363
|
<div className="leading-snug">
|
|
324
364
|
<span className="font-medium">
|
|
325
|
-
{
|
|
365
|
+
{stillWorking
|
|
326
366
|
? "The agent is still working."
|
|
327
367
|
: "This chat looks stuck."}
|
|
328
368
|
</span>{" "}
|
|
329
369
|
<span className="text-muted-foreground">
|
|
330
370
|
No progress
|
|
331
371
|
{stuckSeconds != null ? ` for ${stuckSeconds}s` : ""}.{" "}
|
|
332
|
-
{
|
|
333
|
-
? "
|
|
334
|
-
:
|
|
372
|
+
{inFlightWork
|
|
373
|
+
? "It's waiting on a call to another app or a long tool — canceling will stop that work."
|
|
374
|
+
: backgroundWorkerStillAlive
|
|
375
|
+
? "The background worker is still alive; large updates can take a few minutes."
|
|
376
|
+
: "The agent may have hit a server timeout or lost its connection."}
|
|
335
377
|
{autoRetry && busyType === "retry"
|
|
336
378
|
? " Retrying automatically now."
|
|
337
379
|
: ""}
|
|
338
380
|
</span>
|
|
339
381
|
</div>
|
|
340
382
|
<div className="flex flex-wrap items-center gap-2">
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
383
|
+
{inFlightWork ? null : (
|
|
384
|
+
<button
|
|
385
|
+
type="button"
|
|
386
|
+
onClick={handleRetry}
|
|
387
|
+
disabled={busyType !== "none"}
|
|
388
|
+
className="inline-flex h-7 cursor-pointer items-center gap-1.5 rounded-md bg-foreground px-2.5 text-[11px] font-medium text-background transition-colors hover:bg-foreground/90 disabled:cursor-not-allowed disabled:opacity-60"
|
|
389
|
+
>
|
|
390
|
+
{busyType === "retry" ? (
|
|
391
|
+
<IconLoader2
|
|
392
|
+
size={12}
|
|
393
|
+
className="animate-spin"
|
|
394
|
+
aria-hidden="true"
|
|
395
|
+
/>
|
|
396
|
+
) : null}
|
|
397
|
+
Retry
|
|
398
|
+
</button>
|
|
399
|
+
)}
|
|
356
400
|
<button
|
|
357
401
|
type="button"
|
|
358
402
|
onClick={handleCancel}
|
|
359
403
|
disabled={busyType !== "none"}
|
|
404
|
+
title={
|
|
405
|
+
inFlightWork
|
|
406
|
+
? "Stop the in-progress run. Work that hasn't finished will be lost."
|
|
407
|
+
: undefined
|
|
408
|
+
}
|
|
360
409
|
className="inline-flex h-7 cursor-pointer items-center gap-1.5 rounded-md border border-border bg-background px-2.5 text-[11px] font-medium text-foreground transition-colors hover:bg-accent disabled:cursor-not-allowed disabled:opacity-60"
|
|
361
410
|
>
|
|
362
411
|
{busyType === "cancel" ? (
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import type { ChatModelAdapter, ChatModelRunResult } from "@assistant-ui/react";
|
|
2
2
|
|
|
3
3
|
import { actionPreparationContinuationNote } from "../agent/action-continuation-guidance.js";
|
|
4
|
+
import {
|
|
5
|
+
LLM_MISSING_CREDENTIALS_ERROR_CODE,
|
|
6
|
+
LLM_MISSING_CREDENTIALS_MESSAGE,
|
|
7
|
+
} from "../agent/engine/credential-errors.js";
|
|
4
8
|
import type {
|
|
5
9
|
AgentChatStructuredContentPart,
|
|
6
10
|
AgentChatStructuredMessage,
|
|
@@ -34,7 +38,9 @@ export type AgentChatSurfaceKind =
|
|
|
34
38
|
*/
|
|
35
39
|
| "app"
|
|
36
40
|
/** Chat rendered by the outer local dev frame, outside the app iframe. */
|
|
37
|
-
| "dev-frame"
|
|
41
|
+
| "dev-frame"
|
|
42
|
+
/** Chat hosted by Desktop for a local app with explicit code access. */
|
|
43
|
+
| "desktop";
|
|
38
44
|
|
|
39
45
|
type AdapterHistoryMessage = {
|
|
40
46
|
role: "user" | "assistant";
|
|
@@ -150,14 +156,36 @@ const BACKGROUND_FOLLOW_POLL_INTERVAL_MS = 1_000;
|
|
|
150
156
|
// the 25s grace plus sweep/DB latency. This stays below the background
|
|
151
157
|
// reconnect stuck threshold, but gives the server-owned recovery brain time to
|
|
152
158
|
// surface the successor or terminal errored run before the client reports idle.
|
|
153
|
-
|
|
159
|
+
//
|
|
160
|
+
// THREE-SITE INVARIANT (keep in lockstep with run-store.ts and
|
|
161
|
+
// agent-chat-plugin.ts — see `UNCLAIMED_BACKGROUND_RUN_FAST_SWEEP_MS`'s doc
|
|
162
|
+
// comment in run-store.ts for the full derivation): a `chainServerDrivenContinuation`
|
|
163
|
+
// deferral (server/production-agent.ts) leaves a successor row `running` with
|
|
164
|
+
// no live worker until a sweep redispatches it. The budget is a derived
|
|
165
|
+
// chain, each bound comfortably inside the next:
|
|
166
|
+
// UNCLAIMED_BACKGROUND_RUN_GRACE_MS (25s)
|
|
167
|
+
// + UNCLAIMED_BACKGROUND_RUN_FAST_SWEEP_MS (20s)
|
|
168
|
+
// = ~45-65s worst-case time-to-first-redispatch-attempt
|
|
169
|
+
// < BACKGROUND_FOLLOW_IDLE_TIMEOUT_MS (150s, this constant)
|
|
170
|
+
// < UNCLAIMED_BACKGROUND_RUN_REDISPATCH_BOUND_MS (300s, run-store.ts)
|
|
171
|
+
// On top of that margin, the follow loop below never counts a tick against
|
|
172
|
+
// this timeout at all while `/runs/active` reports `awaitingRedispatch:
|
|
173
|
+
// true` — a server-authoritative "known deferred, recovery in progress"
|
|
174
|
+
// signal, not a guess — so this timeout is a backstop for a genuinely lost
|
|
175
|
+
// run, not the primary mechanism racing the sweep. Do NOT raise this value to
|
|
176
|
+
// paper over a slow sweep; fix the sweep timing (run-store.ts /
|
|
177
|
+
// agent-chat-plugin.ts) instead, and keep this comment's inequality chain
|
|
178
|
+
// accurate if any of the four numbers change.
|
|
179
|
+
export const BACKGROUND_FOLLOW_IDLE_TIMEOUT_MS = 150_000;
|
|
154
180
|
|
|
155
181
|
/**
|
|
156
182
|
* User-facing copy for the server's background terminal reasons
|
|
157
183
|
* (`agent_runs.terminal_reason`, surfaced by /runs/active). These runs died in
|
|
158
184
|
* server-side handoff machinery where no richer error event may exist, so the
|
|
159
185
|
* client owns the message. Keys are matched after stripping an optional
|
|
160
|
-
* `error:` prefix (`terminalReasonForEvent` records `error:<code>`).
|
|
186
|
+
* `error:` prefix (`terminalReasonForEvent` records `error:<code>`). Keep this
|
|
187
|
+
* map scoped to terminal failures, including reasons that must override a
|
|
188
|
+
* mistakenly completed row.
|
|
161
189
|
*/
|
|
162
190
|
const BACKGROUND_TERMINAL_REASON_MESSAGES: Record<string, string> = {
|
|
163
191
|
background_worker_never_started:
|
|
@@ -166,6 +194,8 @@ const BACKGROUND_TERMINAL_REASON_MESSAGES: Record<string, string> = {
|
|
|
166
194
|
"The agent's background worker could not hand off the next step of this run. Retry to continue from the preserved context.",
|
|
167
195
|
dispatch_payload_missing:
|
|
168
196
|
"The agent's background run lost its saved request data and could not continue. Retry to start a fresh run.",
|
|
197
|
+
missing_api_key: LLM_MISSING_CREDENTIALS_MESSAGE,
|
|
198
|
+
missing_credentials: LLM_MISSING_CREDENTIALS_MESSAGE,
|
|
169
199
|
turn_continuation_budget_exhausted:
|
|
170
200
|
"This request needed more automatic continuations than allowed and was stopped. Try breaking it into smaller steps.",
|
|
171
201
|
};
|
|
@@ -1761,6 +1791,11 @@ export function createAgentChatAdapter(
|
|
|
1761
1791
|
nextRunId: string,
|
|
1762
1792
|
previousRunId: string | null,
|
|
1763
1793
|
) => {
|
|
1794
|
+
if (previousRunId !== nextRunId) {
|
|
1795
|
+
lastAutoContinueReason = null;
|
|
1796
|
+
lastRecoverableRunError = null;
|
|
1797
|
+
lastActivityTrail = [];
|
|
1798
|
+
}
|
|
1764
1799
|
const rememberedSeq = seenRunSeqs.get(nextRunId);
|
|
1765
1800
|
if (rememberedSeq !== undefined) {
|
|
1766
1801
|
lastSeq = rememberedSeq;
|
|
@@ -2132,6 +2167,9 @@ export function createAgentChatAdapter(
|
|
|
2132
2167
|
...(runId ? { runId } : {}),
|
|
2133
2168
|
};
|
|
2134
2169
|
if (typeof window !== "undefined") {
|
|
2170
|
+
if (args.errorCode === LLM_MISSING_CREDENTIALS_ERROR_CODE) {
|
|
2171
|
+
dispatchMissingApiKey();
|
|
2172
|
+
}
|
|
2135
2173
|
window.dispatchEvent(
|
|
2136
2174
|
new CustomEvent("agent-chat:run-error", {
|
|
2137
2175
|
detail: { ...runError, tabId },
|
|
@@ -2169,7 +2207,46 @@ export function createAgentChatAdapter(
|
|
|
2169
2207
|
: "";
|
|
2170
2208
|
// terminal_reason is either a bare reason ("dispatch_payload_missing")
|
|
2171
2209
|
// or "error:<errorCode>" when derived from a terminal error event.
|
|
2210
|
+
const hasErrorTerminalReason = rawTerminalReason.startsWith("error:");
|
|
2172
2211
|
const terminalReason = rawTerminalReason.replace(/^error:/, "");
|
|
2212
|
+
const mappedMessage = terminalReason
|
|
2213
|
+
? BACKGROUND_TERMINAL_REASON_MESSAGES[terminalReason]
|
|
2214
|
+
: undefined;
|
|
2215
|
+
const mappedErrorCode =
|
|
2216
|
+
terminalReason === "missing_api_key" ||
|
|
2217
|
+
terminalReason === LLM_MISSING_CREDENTIALS_ERROR_CODE
|
|
2218
|
+
? LLM_MISSING_CREDENTIALS_ERROR_CODE
|
|
2219
|
+
: terminalReason;
|
|
2220
|
+
|
|
2221
|
+
if (mappedMessage) {
|
|
2222
|
+
yield* emitBackgroundTerminalError({
|
|
2223
|
+
message: mappedMessage,
|
|
2224
|
+
errorCode: mappedErrorCode,
|
|
2225
|
+
details: `terminal_reason: ${rawTerminalReason}`,
|
|
2226
|
+
});
|
|
2227
|
+
return;
|
|
2228
|
+
}
|
|
2229
|
+
|
|
2230
|
+
if (hasErrorTerminalReason) {
|
|
2231
|
+
if (lastRecoverableRunError) {
|
|
2232
|
+
yield* emitBackgroundTerminalError({
|
|
2233
|
+
message: lastRecoverableRunError.message,
|
|
2234
|
+
errorCode:
|
|
2235
|
+
lastRecoverableRunError.errorCode ||
|
|
2236
|
+
mappedErrorCode ||
|
|
2237
|
+
"background_run_failed",
|
|
2238
|
+
details: lastRecoverableRunError.details,
|
|
2239
|
+
});
|
|
2240
|
+
return;
|
|
2241
|
+
}
|
|
2242
|
+
yield* emitBackgroundTerminalError({
|
|
2243
|
+
message:
|
|
2244
|
+
"The agent's background run failed before its final response could be recovered. You can retry from the preserved chat context.",
|
|
2245
|
+
errorCode: mappedErrorCode || "background_run_failed",
|
|
2246
|
+
details: `terminal_reason: ${rawTerminalReason}`,
|
|
2247
|
+
});
|
|
2248
|
+
return;
|
|
2249
|
+
}
|
|
2173
2250
|
|
|
2174
2251
|
if (status === "completed") {
|
|
2175
2252
|
// The turn finished server-side; the events we managed to fold are
|
|
@@ -2186,17 +2263,6 @@ export function createAgentChatAdapter(
|
|
|
2186
2263
|
return;
|
|
2187
2264
|
}
|
|
2188
2265
|
|
|
2189
|
-
const mappedMessage = terminalReason
|
|
2190
|
-
? BACKGROUND_TERMINAL_REASON_MESSAGES[terminalReason]
|
|
2191
|
-
: undefined;
|
|
2192
|
-
if (mappedMessage) {
|
|
2193
|
-
yield* emitBackgroundTerminalError({
|
|
2194
|
-
message: mappedMessage,
|
|
2195
|
-
errorCode: terminalReason,
|
|
2196
|
-
details: `terminal_reason: ${rawTerminalReason}`,
|
|
2197
|
-
});
|
|
2198
|
-
return;
|
|
2199
|
-
}
|
|
2200
2266
|
if (lastRecoverableRunError) {
|
|
2201
2267
|
// A replayed terminal error event already carried the real
|
|
2202
2268
|
// message (recoverable errors replay as auto-continue signals
|
|
@@ -2411,10 +2477,24 @@ export function createAgentChatAdapter(
|
|
|
2411
2477
|
if (isTerminal) {
|
|
2412
2478
|
replayedTerminalRunIds.add(activeRunId);
|
|
2413
2479
|
}
|
|
2414
|
-
|
|
2480
|
+
// Server-authoritative "silently deferred, recovery in
|
|
2481
|
+
// progress" signal (see `awaitingRedispatch` on
|
|
2482
|
+
// `getActiveRunForThreadAsync`, run-manager.ts): a
|
|
2483
|
+
// `chainServerDrivenContinuation` successor still inside
|
|
2484
|
+
// `UNCLAIMED_BACKGROUND_RUN_REDISPATCH_BOUND_MS`, being
|
|
2485
|
+
// redispatched by the server's fast/slow sweeps. This is known
|
|
2486
|
+
// to demonstrably exist — same as a "detached" attach — so
|
|
2487
|
+
// treat it identically and never accumulate idle time against
|
|
2488
|
+
// it. Once the server's own bound is exceeded (or the row is
|
|
2489
|
+
// claimed/terminal) this flips false and normal idle accounting
|
|
2490
|
+
// resumes, so a truly stuck deferral still fails loud via the
|
|
2491
|
+
// existing timeout below.
|
|
2492
|
+
const awaitingRedispatch = active?.awaitingRedispatch === true;
|
|
2493
|
+
if (attach === "detached" || awaitingRedispatch) {
|
|
2415
2494
|
// We really attached to a live stream (chunk boundary or
|
|
2416
|
-
// transport blip)
|
|
2417
|
-
//
|
|
2495
|
+
// transport blip), or the server told us recovery is
|
|
2496
|
+
// in-flight — the run demonstrably exists; keep following
|
|
2497
|
+
// with a fresh idle window.
|
|
2418
2498
|
idleSince = null;
|
|
2419
2499
|
} else {
|
|
2420
2500
|
// "gone": /runs/active reported the run but its event stream
|
|
@@ -2859,7 +2939,20 @@ export function createAgentChatAdapter(
|
|
|
2859
2939
|
recoverable: true,
|
|
2860
2940
|
runId: activeRunId,
|
|
2861
2941
|
};
|
|
2942
|
+
// This is a terminal outcome for the attempted turn. Settle
|
|
2943
|
+
// both real in-flight calls and activity-only placeholders
|
|
2944
|
+
// before yielding the error; otherwise a prior "Preparing
|
|
2945
|
+
// run-code" event remains an unresolved tool card and the UI
|
|
2946
|
+
// keeps showing a spinner beside an already-terminal error.
|
|
2947
|
+
settleInterruptedToolCalls(content, undefined, {
|
|
2948
|
+
includeActivity: true,
|
|
2949
|
+
});
|
|
2862
2950
|
if (typeof window !== "undefined") {
|
|
2951
|
+
window.dispatchEvent(
|
|
2952
|
+
new CustomEvent("agent-chat:activity-clear", {
|
|
2953
|
+
detail: { tabId },
|
|
2954
|
+
}),
|
|
2955
|
+
);
|
|
2863
2956
|
window.dispatchEvent(
|
|
2864
2957
|
new CustomEvent("agent-chat:run-error", {
|
|
2865
2958
|
detail: { ...runError, tabId },
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { AutomationInvocationResult } from "../automation/index.js";
|
|
2
|
+
import { callAction } from "./use-action.js";
|
|
3
|
+
|
|
4
|
+
export interface InvokeConfiguredAutomationWorkflowInput {
|
|
5
|
+
readonly workflowId: string;
|
|
6
|
+
readonly input: Record<string, unknown>;
|
|
7
|
+
readonly idempotencyKey?: string;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Invoke an app-registered automation action without hand-writing a browser
|
|
12
|
+
* request. Apps may choose a custom action name when registering the runtime.
|
|
13
|
+
*/
|
|
14
|
+
export async function invokeConfiguredAutomationWorkflow(
|
|
15
|
+
input: InvokeConfiguredAutomationWorkflowInput,
|
|
16
|
+
options: { readonly actionName?: string } = {},
|
|
17
|
+
): Promise<AutomationInvocationResult> {
|
|
18
|
+
return callAction<AutomationInvocationResult>(
|
|
19
|
+
options.actionName ?? "invoke-automation-workflow",
|
|
20
|
+
input,
|
|
21
|
+
);
|
|
22
|
+
}
|
|
@@ -10,7 +10,6 @@ import {
|
|
|
10
10
|
IconX,
|
|
11
11
|
IconChevronDown,
|
|
12
12
|
IconExternalLink,
|
|
13
|
-
IconKey,
|
|
14
13
|
IconGitFork,
|
|
15
14
|
IconGauge,
|
|
16
15
|
IconSettings,
|
|
@@ -318,8 +317,7 @@ export function ApiKeyConnect({ onConnected }: { onConnected?: () => void }) {
|
|
|
318
317
|
|
|
319
318
|
return (
|
|
320
319
|
<div className="rounded-md border border-border bg-background/60 p-3">
|
|
321
|
-
<div className="mb-2
|
|
322
|
-
<IconKey size={12} strokeWidth={1.9} />
|
|
320
|
+
<div className="mb-2 text-[11px] font-medium text-foreground">
|
|
323
321
|
Use your own API key
|
|
324
322
|
</div>
|
|
325
323
|
<p className="mb-2.5 text-[11px] leading-relaxed text-muted-foreground">
|
|
@@ -400,6 +398,71 @@ export function ApiKeyConnect({ onConnected }: { onConnected?: () => void }) {
|
|
|
400
398
|
|
|
401
399
|
export type BuilderSetupCardLayout = "default" | "sidebar";
|
|
402
400
|
|
|
401
|
+
export function BuilderSetupContent({
|
|
402
|
+
onConnected,
|
|
403
|
+
layout = "default",
|
|
404
|
+
}: {
|
|
405
|
+
onConnected?: () => void;
|
|
406
|
+
layout?: BuilderSetupCardLayout;
|
|
407
|
+
}) {
|
|
408
|
+
const [keyOpen, setKeyOpen] = useState(false);
|
|
409
|
+
const sidebarLayout = layout === "sidebar";
|
|
410
|
+
|
|
411
|
+
return (
|
|
412
|
+
<div
|
|
413
|
+
className={cn(
|
|
414
|
+
"agent-builder-setup-content",
|
|
415
|
+
sidebarLayout && "agent-builder-setup-card--sidebar",
|
|
416
|
+
)}
|
|
417
|
+
>
|
|
418
|
+
<div
|
|
419
|
+
className={cn(
|
|
420
|
+
"agent-builder-setup-card__content flex flex-col sm:flex-row sm:items-center sm:justify-between",
|
|
421
|
+
sidebarLayout ? "gap-2" : "gap-3",
|
|
422
|
+
)}
|
|
423
|
+
>
|
|
424
|
+
<div className="agent-builder-setup-card__copy min-w-0">
|
|
425
|
+
<h3 className="text-[13px] font-medium text-foreground">
|
|
426
|
+
Connect AI
|
|
427
|
+
</h3>
|
|
428
|
+
<p className="mt-0.5 text-[11px] leading-relaxed text-muted-foreground">
|
|
429
|
+
Use Builder.io (free credits), or add an Anthropic/OpenAI key.
|
|
430
|
+
</p>
|
|
431
|
+
</div>
|
|
432
|
+
<div
|
|
433
|
+
className={cn(
|
|
434
|
+
"agent-builder-setup-card__actions flex shrink-0",
|
|
435
|
+
sidebarLayout
|
|
436
|
+
? "flex-col items-start gap-1 sm:items-center"
|
|
437
|
+
: "flex-nowrap items-center gap-2",
|
|
438
|
+
)}
|
|
439
|
+
>
|
|
440
|
+
<BuilderConnectCta variant="compact" onConnected={onConnected} />
|
|
441
|
+
<button
|
|
442
|
+
type="button"
|
|
443
|
+
onClick={() => setKeyOpen((open) => !open)}
|
|
444
|
+
className={cn(
|
|
445
|
+
"agent-builder-setup-card__key-button inline-flex shrink-0 items-center whitespace-nowrap rounded-md text-[11px] font-medium",
|
|
446
|
+
sidebarLayout
|
|
447
|
+
? "h-7 border-0 bg-transparent px-0 text-muted-foreground hover:bg-transparent hover:text-foreground"
|
|
448
|
+
: "h-8 border border-border bg-background px-3 text-foreground hover:bg-accent",
|
|
449
|
+
)}
|
|
450
|
+
aria-expanded={keyOpen}
|
|
451
|
+
>
|
|
452
|
+
Use API key
|
|
453
|
+
</button>
|
|
454
|
+
</div>
|
|
455
|
+
</div>
|
|
456
|
+
|
|
457
|
+
{keyOpen ? (
|
|
458
|
+
<div className="mt-3">
|
|
459
|
+
<ApiKeyConnect onConnected={onConnected} />
|
|
460
|
+
</div>
|
|
461
|
+
) : null}
|
|
462
|
+
</div>
|
|
463
|
+
);
|
|
464
|
+
}
|
|
465
|
+
|
|
403
466
|
export function BuilderSetupCard({
|
|
404
467
|
onConnected,
|
|
405
468
|
bouncePulse,
|
|
@@ -411,9 +474,6 @@ export function BuilderSetupCard({
|
|
|
411
474
|
fullWidth?: boolean;
|
|
412
475
|
layout?: BuilderSetupCardLayout;
|
|
413
476
|
}) {
|
|
414
|
-
// Progressive disclosure: the card leads with one-click Builder connect while
|
|
415
|
-
// keeping the bring-your-own-key path close by.
|
|
416
|
-
const [keyOpen, setKeyOpen] = useState(false);
|
|
417
477
|
const sidebarLayout = layout === "sidebar";
|
|
418
478
|
|
|
419
479
|
const cardRef = useRef<HTMLDivElement>(null);
|
|
@@ -448,50 +508,7 @@ export function BuilderSetupCard({
|
|
|
448
508
|
sidebarLayout ? "p-2.5" : "p-3",
|
|
449
509
|
)}
|
|
450
510
|
>
|
|
451
|
-
<
|
|
452
|
-
className={cn(
|
|
453
|
-
"agent-builder-setup-card__content flex flex-col sm:flex-row sm:items-center sm:justify-between",
|
|
454
|
-
sidebarLayout ? "gap-2" : "gap-3",
|
|
455
|
-
)}
|
|
456
|
-
>
|
|
457
|
-
<div className="agent-builder-setup-card__copy min-w-0">
|
|
458
|
-
<h3 className="text-[13px] font-medium text-foreground">
|
|
459
|
-
Connect AI
|
|
460
|
-
</h3>
|
|
461
|
-
<p className="mt-0.5 text-[11px] leading-relaxed text-muted-foreground">
|
|
462
|
-
Use Builder.io (free credits), or add an Anthropic/OpenAI key.
|
|
463
|
-
</p>
|
|
464
|
-
</div>
|
|
465
|
-
<div
|
|
466
|
-
className={cn(
|
|
467
|
-
"agent-builder-setup-card__actions flex shrink-0",
|
|
468
|
-
sidebarLayout
|
|
469
|
-
? "flex-col items-start gap-1 sm:items-center"
|
|
470
|
-
: "flex-nowrap items-center gap-2",
|
|
471
|
-
)}
|
|
472
|
-
>
|
|
473
|
-
<BuilderConnectCta variant="compact" onConnected={onConnected} />
|
|
474
|
-
<button
|
|
475
|
-
type="button"
|
|
476
|
-
onClick={() => setKeyOpen((open) => !open)}
|
|
477
|
-
className={cn(
|
|
478
|
-
"agent-builder-setup-card__key-button inline-flex shrink-0 items-center whitespace-nowrap rounded-md text-[11px] font-medium",
|
|
479
|
-
sidebarLayout
|
|
480
|
-
? "h-7 border-0 bg-transparent px-0 text-muted-foreground hover:bg-transparent hover:text-foreground"
|
|
481
|
-
: "h-8 border border-border bg-background px-3 text-foreground hover:bg-accent",
|
|
482
|
-
)}
|
|
483
|
-
aria-expanded={keyOpen}
|
|
484
|
-
>
|
|
485
|
-
Use API key
|
|
486
|
-
</button>
|
|
487
|
-
</div>
|
|
488
|
-
</div>
|
|
489
|
-
|
|
490
|
-
{keyOpen ? (
|
|
491
|
-
<div className="mt-3">
|
|
492
|
-
<ApiKeyConnect onConnected={onConnected} />
|
|
493
|
-
</div>
|
|
494
|
-
) : null}
|
|
511
|
+
<BuilderSetupContent onConnected={onConnected} layout={layout} />
|
|
495
512
|
</div>
|
|
496
513
|
</div>
|
|
497
514
|
);
|
|
@@ -1677,6 +1677,14 @@ export function TiptapComposer({
|
|
|
1677
1677
|
},
|
|
1678
1678
|
});
|
|
1679
1679
|
|
|
1680
|
+
// A tab can stay mounted while becoming the active composer later. Publish
|
|
1681
|
+
// its existing draft when the host starts observing it so contextual UI is
|
|
1682
|
+
// correct immediately after a tab switch, not only after the next keystroke.
|
|
1683
|
+
useEffect(() => {
|
|
1684
|
+
if (!editor || !onTextChange) return;
|
|
1685
|
+
onTextChange(editor.state.doc.textContent.trim());
|
|
1686
|
+
}, [editor, onTextChange]);
|
|
1687
|
+
|
|
1680
1688
|
const insertReference = useCallback(
|
|
1681
1689
|
(ref: AgentComposerReference) => {
|
|
1682
1690
|
const normalized = normalizeAgentComposerReference(ref);
|
|
@@ -895,6 +895,36 @@ export {
|
|
|
895
895
|
type ProviderReadinessBadgeProps,
|
|
896
896
|
type SetupConnectionsPageProps,
|
|
897
897
|
} from "./setup-connections/index.js";
|
|
898
|
+
export {
|
|
899
|
+
listIntegrationEnvStatuses,
|
|
900
|
+
listIntegrationStatuses,
|
|
901
|
+
saveIntegrationEnvVars,
|
|
902
|
+
setIntegrationEnabled,
|
|
903
|
+
setupIntegration,
|
|
904
|
+
disconnectManagedIntegrationInstallation,
|
|
905
|
+
listManagedIntegrationInstallations,
|
|
906
|
+
managedIntegrationOAuthUrl,
|
|
907
|
+
managedSlackAgentManifestUrl,
|
|
908
|
+
listManagedIntegrationScopes,
|
|
909
|
+
saveManagedIntegrationScope,
|
|
910
|
+
listManagedIntegrationBudgets,
|
|
911
|
+
listManagedIntegrationMemory,
|
|
912
|
+
forgetManagedIntegrationMemory,
|
|
913
|
+
saveManagedIntegrationBudget,
|
|
914
|
+
testManagedIntegrationInstallation,
|
|
915
|
+
IntegrationClientError,
|
|
916
|
+
type ClientIntegrationInstallation,
|
|
917
|
+
type ClientIntegrationScope,
|
|
918
|
+
type ClientIntegrationUsageBudget,
|
|
919
|
+
type ClientIntegrationMemory,
|
|
920
|
+
type ClientIntegrationStatus,
|
|
921
|
+
type IntegrationEnvStatus,
|
|
922
|
+
type SavedEnvVarsResult,
|
|
923
|
+
} from "./integrations/index.js";
|
|
924
|
+
export {
|
|
925
|
+
invokeConfiguredAutomationWorkflow,
|
|
926
|
+
type InvokeConfiguredAutomationWorkflowInput,
|
|
927
|
+
} from "./automation.js";
|
|
898
928
|
export {
|
|
899
929
|
ChangelogDialog,
|
|
900
930
|
ChangelogSettingsCard,
|