@agent-native/core 0.132.1 → 0.133.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 +198 -0
- package/corpus/core/package.json +1 -1
- package/corpus/core/src/a2a/correlation.ts +11 -1
- package/corpus/core/src/a2a/types.ts +11 -3
- package/corpus/core/src/agent/engine/ai-sdk-engine.ts +33 -46
- package/corpus/core/src/agent/engine/builder-engine.ts +22 -10
- package/corpus/core/src/agent/engine/error-detail.ts +184 -3
- package/corpus/core/src/agent/engine/failure-taxonomy.ts +123 -0
- package/corpus/core/src/agent/engine/index.ts +8 -0
- package/corpus/core/src/agent/engine/registry.ts +92 -8
- package/corpus/core/src/agent/engine/translate-ai-sdk.ts +17 -2
- package/corpus/core/src/agent/production-agent.ts +13 -33
- package/corpus/core/src/agent/run-loop-with-resume.ts +1 -1
- package/corpus/core/src/agent/run-manager.ts +43 -14
- package/corpus/core/src/agent/run-store.ts +30 -3
- package/corpus/core/src/agent/thread-data-builder.ts +36 -4
- package/corpus/core/src/chat-threads/store.ts +42 -0
- package/corpus/core/src/cli/templates-meta.ts +13 -0
- package/corpus/core/src/cli/workspace-dev.ts +1 -0
- package/corpus/core/src/client/error-format.ts +12 -0
- package/corpus/core/src/client/use-chat-threads.ts +76 -16
- package/corpus/core/src/credentials/index.ts +51 -12
- package/corpus/core/src/extensions/url-safety.ts +46 -12
- package/corpus/core/src/integrations/adapters/slack.ts +32 -10
- package/corpus/core/src/integrations/google-docs-poller.ts +12 -1
- package/corpus/core/src/integrations/installations-store.ts +30 -0
- package/corpus/core/src/integrations/plugin.ts +5 -5
- package/corpus/core/src/integrations/types.ts +7 -0
- package/corpus/core/src/integrations/webhook-handler.ts +24 -1
- package/corpus/core/src/jobs/background-automation-runner.ts +38 -1
- package/corpus/core/src/provider-api/index.ts +8 -2
- package/corpus/core/src/scripts/call-agent.ts +6 -0
- package/corpus/core/src/server/agent-chat-plugin.ts +46 -10
- package/corpus/core/src/server/agent-discovery.ts +2 -0
- package/corpus/core/src/server/builder-design-systems.ts +21 -0
- package/corpus/core/src/server/credential-provider.ts +51 -12
- package/corpus/core/src/server/index.ts +1 -0
- package/corpus/core/src/server/onboarding-html.ts +37 -2
- package/corpus/core/src/shared/reasoning-effort.ts +1 -1
- package/corpus/core/src/templates/workspace-core/.agents/skills/a2a-protocol/SKILL.md +11 -0
- package/corpus/templates/analytics/app/components/layout/Sidebar.tsx +6 -2
- package/corpus/templates/assets/app/components/layout/Sidebar.tsx +39 -19
- package/corpus/templates/assets/changelog/2026-07-31-the-agent-native-logo-stays-visible-when-the-sidebar-is-coll.md +6 -0
- package/corpus/templates/brain/app/components/layout/Sidebar.tsx +30 -3
- package/corpus/templates/brain/changelog/2026-07-31-clicking-the-agent-native-logo-now-toggles-the-app-sidebar.md +6 -0
- package/corpus/templates/calendar/app/components/layout/AppLayout.tsx +1 -1
- package/corpus/templates/calendar/app/components/layout/Sidebar.tsx +54 -25
- package/corpus/templates/calendar/changelog/2026-07-31-the-agent-native-logo-stays-visible-when-the-sidebar-is-coll.md +6 -0
- package/corpus/templates/chat/app/components/layout/Sidebar.tsx +30 -3
- package/corpus/templates/chat/changelog/2026-07-31-clicking-the-agent-native-logo-now-toggles-the-app-sidebar.md +6 -0
- package/corpus/templates/clips/app/components/library/library-layout.tsx +37 -21
- package/corpus/templates/clips/changelog/2026-07-30-meeting-microphone-transcription-works-reliably-from-the-fir.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-31-the-agent-native-logo-stays-visible-when-the-sidebar-is-coll.md +6 -0
- package/corpus/templates/clips/desktop/src/hooks/useMediaDevices.ts +1 -1
- package/corpus/templates/clips/desktop/src/lib/media-capture-constraints.ts +1 -1
- package/corpus/templates/clips/desktop/src-tauri/src/native_screen/custom_capture.rs +13 -0
- package/corpus/templates/clips/desktop/src-tauri/src/native_screen.rs +2 -0
- package/corpus/templates/clips/desktop/src-tauri/src/system_audio.rs +25 -132
- package/corpus/templates/content/app/components/sidebar/DocumentSidebar.tsx +34 -17
- package/corpus/templates/content/changelog/2026-07-31-the-agent-native-logo-stays-visible-when-the-sidebar-is-coll.md +6 -0
- package/corpus/templates/design/.agents/skills/design-systems/SKILL.md +6 -2
- package/corpus/templates/design/.generated/bridge/editor-chrome.generated.ts +5 -0
- package/corpus/templates/design/actions/create-design-system.ts +1 -0
- package/corpus/templates/design/actions/set-default-design-system.ts +34 -26
- package/corpus/templates/design/app/components/design/KeyboardShortcutsPanel.tsx +5 -3
- package/corpus/templates/design/app/components/design/bridge/editor-chrome.bridge.ts +23 -0
- package/corpus/templates/design/app/components/design/keyboard-shortcuts.ts +3 -0
- package/corpus/templates/design/app/components/layout/Sidebar.tsx +21 -4
- package/corpus/templates/design/app/hooks/useDesignHotkeys.ts +11 -7
- package/corpus/templates/design/app/i18n-data.ts +39 -0
- package/corpus/templates/design/app/pages/DesignSystemSetup.tsx +229 -12
- package/corpus/templates/design/app/pages/DesignSystems.tsx +10 -4
- package/corpus/templates/design/changelog/2026-07-30-fixed-the-keyboard-shortcuts-panel-not-opening-with-ctrl-shi.md +6 -0
- package/corpus/templates/design/changelog/2026-07-31-clicking-the-agent-native-logo-now-toggles-the-app-sidebar.md +6 -0
- package/corpus/templates/design/changelog/2026-07-31-design-system-indexing-keeps-your-chosen-name-when-you-uploa.md +6 -0
- package/corpus/templates/design/server/lib/builder-design-system-proxy.ts +19 -4
- package/corpus/templates/dispatch/AGENTS.md +4 -0
- package/corpus/templates/factory/.agents/skills/actions/SKILL.md +562 -0
- package/corpus/templates/factory/.agents/skills/adding-a-feature/SKILL.md +198 -0
- package/corpus/templates/factory/.agents/skills/agent-native-docs/SKILL.md +115 -0
- package/corpus/templates/factory/.agents/skills/agent-native-toolkit/SKILL.md +182 -0
- package/corpus/templates/factory/.agents/skills/capture-learnings/SKILL.md +89 -0
- package/corpus/templates/factory/.agents/skills/create-skill/SKILL.md +221 -0
- package/corpus/templates/factory/.agents/skills/customizing-agent-native/SKILL.md +220 -0
- package/corpus/templates/factory/.agents/skills/delegate-to-agent/SKILL.md +263 -0
- package/corpus/templates/factory/.agents/skills/factory-graphs/SKILL.md +52 -0
- package/corpus/templates/factory/.agents/skills/feature-flags/SKILL.md +169 -0
- package/corpus/templates/factory/.agents/skills/frontend-design/SKILL.md +174 -0
- package/corpus/templates/factory/.agents/skills/real-time-sync/SKILL.md +232 -0
- package/corpus/templates/factory/.agents/skills/security/SKILL.md +324 -0
- package/corpus/templates/factory/.agents/skills/self-modifying-code/SKILL.md +119 -0
- package/corpus/templates/factory/.agents/skills/shadcn-ui/SKILL.md +123 -0
- package/corpus/templates/factory/.agents/skills/sharing/SKILL.md +232 -0
- package/corpus/templates/factory/.agents/skills/storing-data/SKILL.md +178 -0
- package/corpus/templates/factory/.agents/skills/upgrade-agent-native/SKILL.md +122 -0
- package/corpus/templates/factory/.env.example +24 -0
- package/corpus/templates/factory/.ignore +0 -0
- package/corpus/templates/factory/.oxfmtrc.json +8 -0
- package/corpus/templates/factory/AGENTS.md +90 -0
- package/corpus/templates/factory/CHANGELOG.md +10 -0
- package/corpus/templates/factory/DEVELOPING.md +185 -0
- package/corpus/templates/factory/README.md +64 -0
- package/corpus/templates/factory/_gitignore +42 -0
- package/corpus/templates/factory/actions/add-factory-comment.ts +55 -0
- package/corpus/templates/factory/actions/approve-factory-item.ts +214 -0
- package/corpus/templates/factory/actions/babysit-pull-request.ts +126 -0
- package/corpus/templates/factory/actions/evaluate-triage-item.ts +172 -0
- package/corpus/templates/factory/actions/get-factory-graph.ts +62 -0
- package/corpus/templates/factory/actions/get-triage-config.ts +42 -0
- package/corpus/templates/factory/actions/get-triage-item.ts +74 -0
- package/corpus/templates/factory/actions/hello.ts +13 -0
- package/corpus/templates/factory/actions/ingest-github-observation.ts +100 -0
- package/corpus/templates/factory/actions/list-factories.ts +40 -0
- package/corpus/templates/factory/actions/list-factory-comments.ts +40 -0
- package/corpus/templates/factory/actions/list-triage-items.ts +85 -0
- package/corpus/templates/factory/actions/list-triage-rules.ts +44 -0
- package/corpus/templates/factory/actions/navigate.ts +41 -0
- package/corpus/templates/factory/actions/poll-slack-channel.ts +118 -0
- package/corpus/templates/factory/actions/reconcile-triage-run.ts +179 -0
- package/corpus/templates/factory/actions/record-triage-feedback.ts +58 -0
- package/corpus/templates/factory/actions/run.ts +2 -0
- package/corpus/templates/factory/actions/save-factory-graph.ts +129 -0
- package/corpus/templates/factory/actions/save-triage-config.ts +67 -0
- package/corpus/templates/factory/actions/save-triage-rule.ts +89 -0
- package/corpus/templates/factory/actions/suggest-factory-rules.ts +70 -0
- package/corpus/templates/factory/actions/view-screen.ts +73 -0
- package/corpus/templates/factory/app/components/factory/FactoryCanvas.tsx +441 -0
- package/corpus/templates/factory/app/components/factory/FactoryInspector.tsx +388 -0
- package/corpus/templates/factory/app/components/layout/Header.tsx +60 -0
- package/corpus/templates/factory/app/components/layout/Layout.tsx +190 -0
- package/corpus/templates/factory/app/components/layout/Sidebar.tsx +538 -0
- package/corpus/templates/factory/app/components/triage/triage-status-pill.tsx +28 -0
- package/corpus/templates/factory/app/components/ui/button.tsx +1 -0
- package/corpus/templates/factory/app/components/ui/card.tsx +1 -0
- package/corpus/templates/factory/app/components/ui/dropdown-menu.tsx +1 -0
- package/corpus/templates/factory/app/components/ui/input.tsx +1 -0
- package/corpus/templates/factory/app/components/ui/label.tsx +1 -0
- package/corpus/templates/factory/app/components/ui/sheet.tsx +1 -0
- package/corpus/templates/factory/app/components/ui/textarea.tsx +1 -0
- package/corpus/templates/factory/app/components/ui/toolkit-provider.tsx +17 -0
- package/corpus/templates/factory/app/components/ui/tooltip.tsx +1 -0
- package/corpus/templates/factory/app/design-system.ts +3 -0
- package/corpus/templates/factory/app/entry.client.tsx +22 -0
- package/corpus/templates/factory/app/entry.server.tsx +10 -0
- package/corpus/templates/factory/app/global.css +93 -0
- package/corpus/templates/factory/app/hooks/use-navigation-state.ts +113 -0
- package/corpus/templates/factory/app/i18n/en-US.ts +211 -0
- package/corpus/templates/factory/app/i18n/index.ts +34 -0
- package/corpus/templates/factory/app/i18n-data.ts +556 -0
- package/corpus/templates/factory/app/lib/agent-page.tsx +49 -0
- package/corpus/templates/factory/app/lib/app-config.ts +11 -0
- package/corpus/templates/factory/app/lib/tab-id.ts +1 -0
- package/corpus/templates/factory/app/lib/utils.ts +1 -0
- package/corpus/templates/factory/app/root.tsx +175 -0
- package/corpus/templates/factory/app/routes/_index.tsx +94 -0
- package/corpus/templates/factory/app/routes/agent.tsx +24 -0
- package/corpus/templates/factory/app/routes/chat.$threadId.tsx +1 -0
- package/corpus/templates/factory/app/routes/database.tsx +17 -0
- package/corpus/templates/factory/app/routes/extensions.$id.$slug.tsx +2 -0
- package/corpus/templates/factory/app/routes/extensions.$id.tsx +11 -0
- package/corpus/templates/factory/app/routes/extensions._index.tsx +11 -0
- package/corpus/templates/factory/app/routes/extensions.tsx +5 -0
- package/corpus/templates/factory/app/routes/factory.tsx +1003 -0
- package/corpus/templates/factory/app/routes/observability.tsx +19 -0
- package/corpus/templates/factory/app/routes/settings.tsx +89 -0
- package/corpus/templates/factory/app/routes/team.tsx +11 -0
- package/corpus/templates/factory/app/routes.ts +4 -0
- package/corpus/templates/factory/app/vite-env.d.ts +6 -0
- package/corpus/templates/factory/changelog/2026-06-24-a-new-settings-page-gives-quick-access-to-language-workspace.md +6 -0
- package/corpus/templates/factory/changelog/2026-06-24-added-a-language-picker-and-localized-app-chrome-for-support.md +6 -0
- package/corpus/templates/factory/changelog/2026-06-27-traditional-chinese-copy-uses-taiwan-terminology.md +6 -0
- package/corpus/templates/factory/changelog/2026-06-28-left-sidebar-collapse-motion-and-footer-chrome-are-quieter.md +6 -0
- package/corpus/templates/factory/changelog/2026-06-29-chat-layouts-adapt-when-the-agent-sidebar-is-open.md +6 -0
- package/corpus/templates/factory/changelog/2026-07-08-settings-are-cleaner-and-searchable.md +5 -0
- package/corpus/templates/factory/changelog/2026-07-10-chat-now-makes-ai-connection-setup-clear-without-shifting-th.md +6 -0
- package/corpus/templates/factory/changelog/2026-07-13-a-full-agent-page-now-brings-context-files-connections-jobs-.md +6 -0
- package/corpus/templates/factory/changelog/2026-07-14-chat-opens-reliably-on-hosted-deployments-instead-of-failing.md +6 -0
- package/corpus/templates/factory/changelog/2026-07-14-fixed-chat-template-startup-with-older-core-versions.md +6 -0
- package/corpus/templates/factory/changelog/2026-07-15-chat-navigation-focuses-on-chat-and-agent.md +6 -0
- package/corpus/templates/factory/changelog/2026-07-17-the-agent-chat-sidebar-stays-closed-until-you-open-it-or-sta.md +6 -0
- package/corpus/templates/factory/changelog/2026-07-22-compact-sidebar-footer.md +6 -0
- package/corpus/templates/factory/changelog/2026-07-22-full-page-chat-keeps-the-active-conversation-when-moving-to-.md +6 -0
- package/corpus/templates/factory/changelog/2026-07-22-manage-agent-navigation-now-uses-the-connected-nodes-icon.md +6 -0
- package/corpus/templates/factory/changelog/2026-07-22-recent-chats-are-easier-to-scan-and-expand.md +6 -0
- package/corpus/templates/factory/changelog/2026-07-23-full-page-chat-is-better-centered-with-quieter-chat-history-.md +6 -0
- package/corpus/templates/factory/changelog/2026-07-24-borderless-secondary-surfaces.md +6 -0
- package/corpus/templates/factory/changelog/2026-07-24-sidebar-footer-controls-follow-a-consistent-order.md +6 -0
- package/corpus/templates/factory/changelog/2026-07-25-settings-navigation-now-keeps-manage-agent-as-a-dedicated-li.md +6 -0
- package/corpus/templates/factory/changelog/2026-07-29-sidebar-footers-now-keep-feedback-search-and-collapse-togeth.md +6 -0
- package/corpus/templates/factory/changelog/2026-07-31-added-an-inspectable-observe-only-factory-queue-for-slack-.md +6 -0
- package/corpus/templates/factory/changelog/2026-07-31-clicking-the-agent-native-logo-now-toggles-the-app-sidebar.md +6 -0
- package/corpus/templates/factory/components.json +20 -0
- package/corpus/templates/factory/data/sync-config.json +1 -0
- package/corpus/templates/factory/learnings.defaults.md +5 -0
- package/corpus/templates/factory/netlify.toml +10 -0
- package/corpus/templates/factory/package.json +105 -0
- package/corpus/templates/factory/public/agent-native-icon-dark.svg +10 -0
- package/corpus/templates/factory/public/agent-native-icon-light.svg +10 -0
- package/corpus/templates/factory/public/agent-native-logo-dark.svg +21 -0
- package/corpus/templates/factory/public/agent-native-logo-light.svg +21 -0
- package/corpus/templates/factory/public/favicon.svg +1 -0
- package/corpus/templates/factory/public/icon-180.svg +1 -0
- package/corpus/templates/factory/public/icon-192.svg +1 -0
- package/corpus/templates/factory/public/icon-512.svg +1 -0
- package/corpus/templates/factory/public/manifest.json +21 -0
- package/corpus/templates/factory/react-router.config.ts +7 -0
- package/corpus/templates/factory/server/connectors/credentials.ts +129 -0
- package/corpus/templates/factory/server/connectors/slack.ts +129 -0
- package/corpus/templates/factory/server/db/index.ts +6 -0
- package/corpus/templates/factory/server/db/schema.ts +193 -0
- package/corpus/templates/factory/server/factory-graph/contracts.ts +212 -0
- package/corpus/templates/factory/server/factory-graph/store.ts +121 -0
- package/corpus/templates/factory/server/lib/require-workspace-member.ts +55 -0
- package/corpus/templates/factory/server/middleware/auth.ts +15 -0
- package/corpus/templates/factory/server/plugins/agent-chat.ts +58 -0
- package/corpus/templates/factory/server/plugins/auth.ts +14 -0
- package/corpus/templates/factory/server/plugins/factory-migrations.ts +247 -0
- package/corpus/templates/factory/server/plugins/factory-scheduler-job.ts +116 -0
- package/corpus/templates/factory/server/plugins/integrations.ts +46 -0
- package/corpus/templates/factory/server/routes/[...page].get.ts +5 -0
- package/corpus/templates/factory/server/routes/_agent-native/factory/builder-callback.post.ts +116 -0
- package/corpus/templates/factory/server/triage/ai-services-git.ts +197 -0
- package/corpus/templates/factory/server/triage/builder-executor.ts +118 -0
- package/corpus/templates/factory/server/triage/contracts.ts +164 -0
- package/corpus/templates/factory/server/triage/github-ingestion.ts +35 -0
- package/corpus/templates/factory/server/triage/guards.ts +121 -0
- package/corpus/templates/factory/server/triage/ids.ts +27 -0
- package/corpus/templates/factory/server/triage/pr-babysit.ts +100 -0
- package/corpus/templates/factory/server/triage/pr-monitor.ts +220 -0
- package/corpus/templates/factory/server/triage/slack-client.ts +55 -0
- package/corpus/templates/factory/server/triage/slack-poller.ts +152 -0
- package/corpus/templates/factory/ssr-entry.ts +15 -0
- package/corpus/templates/factory/tsconfig.json +21 -0
- package/corpus/templates/factory/vite.config.ts +19 -0
- package/corpus/templates/forms/app/components/layout/Sidebar.tsx +55 -5
- package/corpus/templates/forms/changelog/2026-07-31-the-agent-native-logo-stays-visible-when-the-sidebar-is-coll.md +6 -0
- package/corpus/templates/macros/app/components/layout/AppLayout.tsx +6 -2
- package/corpus/templates/plan/app/components/layout/Sidebar.tsx +21 -6
- package/corpus/templates/plan/changelog/2026-07-31-clicking-the-agent-native-logo-now-toggles-the-app-sidebar.md +6 -0
- package/corpus/templates/slides/.agents/skills/create-deck/SKILL.md +12 -0
- package/corpus/templates/slides/.agents/skills/design-systems/SKILL.md +9 -0
- package/corpus/templates/slides/.agents/skills/slide-editing/SKILL.md +11 -0
- package/corpus/templates/slides/AGENTS.md +5 -6
- package/corpus/templates/slides/actions/_await-fit-check.ts +20 -10
- package/corpus/templates/slides/actions/add-slide.ts +17 -4
- package/corpus/templates/slides/actions/create-design-system.ts +16 -4
- package/corpus/templates/slides/actions/delete-design-system.ts +18 -2
- package/corpus/templates/slides/actions/get-layout-overflows.ts +88 -0
- package/corpus/templates/slides/actions/import-file.ts +1 -0
- package/corpus/templates/slides/actions/index-design-system-with-builder.ts +8 -0
- package/corpus/templates/slides/actions/patch-deck.ts +48 -16
- package/corpus/templates/slides/actions/set-default-design-system.ts +49 -19
- package/corpus/templates/slides/actions/update-slide.ts +13 -3
- package/corpus/templates/slides/actions/view-screen.ts +87 -10
- package/corpus/templates/slides/app/components/deck/SlideRenderer.tsx +155 -28
- package/corpus/templates/slides/app/components/design-system/DesignSystemCard.tsx +21 -17
- package/corpus/templates/slides/app/components/design-system/DesignSystemSetup.tsx +849 -341
- package/corpus/templates/slides/app/components/editor/EditorSidebar.tsx +102 -2
- package/corpus/templates/slides/app/components/editor/PromptDialog.tsx +13 -16
- package/corpus/templates/slides/app/components/editor/SlideEditor.tsx +60 -12
- package/corpus/templates/slides/app/components/editor/SlideOverflowWarning.tsx +11 -1
- package/corpus/templates/slides/app/components/layout/Sidebar.tsx +66 -19
- package/corpus/templates/slides/app/i18n/en-US.ts +23 -0
- package/corpus/templates/slides/app/lib/normalize-slide-padding.ts +8 -15
- package/corpus/templates/slides/app/pages/DeckEditor.tsx +4 -3
- package/corpus/templates/slides/app/pages/DesignSystems.tsx +4 -3
- package/corpus/templates/slides/app/pages/Index.tsx +1 -1
- package/corpus/templates/slides/changelog/2026-07-31-design-system-details-now-show-their-source-and-indexing-sta.md +6 -0
- package/corpus/templates/slides/changelog/2026-07-31-design-system-indexing-keeps-your-chosen-name-when-you-uploa.md +6 -0
- package/corpus/templates/slides/changelog/2026-07-31-design-system-setup-keeps-focus-rings-visible-and-uses-a-sim.md +6 -0
- package/corpus/templates/slides/changelog/2026-07-31-skip-prompt-is-now-available-in-the-new-deck-prompt-header.md +6 -0
- package/corpus/templates/slides/changelog/2026-07-31-slides-now-detect-real-text-and-box-overflow-across-the-deck.md +6 -0
- package/corpus/templates/slides/changelog/2026-07-31-the-agent-native-logo-stays-visible-when-the-sidebar-is-coll.md +6 -0
- package/corpus/templates/slides/server/handlers/design-systems.ts +1 -0
- package/corpus/templates/slides/server/handlers/index-design-system-sources.ts +1 -0
- package/corpus/templates/slides/server/lib/builder-design-system-proxy.ts +23 -4
- package/corpus/templates/slides/server/plugins/agent-chat.ts +5 -0
- package/corpus/templates/slides/server/plugins/creative-context.ts +16 -3
- package/corpus/templates/slides/server/workspace-defaults.ts +5 -1
- package/corpus/templates/slides/shared/slide-fit.ts +26 -0
- package/corpus/templates/tasks/app/components/layout/Sidebar.tsx +30 -3
- package/corpus/templates/tasks/changelog/2026-07-31-clicking-the-agent-native-logo-now-toggles-the-app-sidebar.md +6 -0
- package/dist/a2a/correlation.d.ts +4 -1
- package/dist/a2a/correlation.d.ts.map +1 -1
- package/dist/a2a/correlation.js +8 -1
- package/dist/a2a/correlation.js.map +1 -1
- package/dist/a2a/types.d.ts +11 -3
- package/dist/a2a/types.d.ts.map +1 -1
- package/dist/a2a/types.js.map +1 -1
- package/dist/agent/engine/ai-sdk-engine.d.ts.map +1 -1
- package/dist/agent/engine/ai-sdk-engine.js +27 -41
- package/dist/agent/engine/ai-sdk-engine.js.map +1 -1
- package/dist/agent/engine/builder-engine.d.ts.map +1 -1
- package/dist/agent/engine/builder-engine.js +18 -8
- package/dist/agent/engine/builder-engine.js.map +1 -1
- package/dist/agent/engine/error-detail.d.ts +61 -0
- package/dist/agent/engine/error-detail.d.ts.map +1 -1
- package/dist/agent/engine/error-detail.js +145 -3
- package/dist/agent/engine/error-detail.js.map +1 -1
- package/dist/agent/engine/failure-taxonomy.d.ts +24 -0
- package/dist/agent/engine/failure-taxonomy.d.ts.map +1 -0
- package/dist/agent/engine/failure-taxonomy.js +88 -0
- package/dist/agent/engine/failure-taxonomy.js.map +1 -0
- package/dist/agent/engine/index.d.ts +2 -1
- package/dist/agent/engine/index.d.ts.map +1 -1
- package/dist/agent/engine/index.js +2 -1
- package/dist/agent/engine/index.js.map +1 -1
- package/dist/agent/engine/registry.d.ts +16 -0
- package/dist/agent/engine/registry.d.ts.map +1 -1
- package/dist/agent/engine/registry.js +71 -6
- package/dist/agent/engine/registry.js.map +1 -1
- package/dist/agent/engine/translate-ai-sdk.d.ts.map +1 -1
- package/dist/agent/engine/translate-ai-sdk.js +14 -2
- package/dist/agent/engine/translate-ai-sdk.js.map +1 -1
- package/dist/agent/production-agent.d.ts.map +1 -1
- package/dist/agent/production-agent.js +13 -24
- package/dist/agent/production-agent.js.map +1 -1
- package/dist/agent/run-loop-with-resume.js +1 -1
- package/dist/agent/run-loop-with-resume.js.map +1 -1
- package/dist/agent/run-manager.d.ts.map +1 -1
- package/dist/agent/run-manager.js +39 -10
- package/dist/agent/run-manager.js.map +1 -1
- package/dist/agent/run-store.d.ts +10 -0
- package/dist/agent/run-store.d.ts.map +1 -1
- package/dist/agent/run-store.js +20 -3
- package/dist/agent/run-store.js.map +1 -1
- package/dist/agent/thread-data-builder.d.ts.map +1 -1
- package/dist/agent/thread-data-builder.js +28 -4
- package/dist/agent/thread-data-builder.js.map +1 -1
- package/dist/chat-threads/store.d.ts +13 -0
- package/dist/chat-threads/store.d.ts.map +1 -1
- package/dist/chat-threads/store.js +35 -0
- package/dist/chat-threads/store.js.map +1 -1
- package/dist/cli/templates-meta.d.ts.map +1 -1
- package/dist/cli/templates-meta.js +13 -0
- package/dist/cli/templates-meta.js.map +1 -1
- package/dist/cli/workspace-dev.d.ts.map +1 -1
- package/dist/cli/workspace-dev.js +1 -0
- package/dist/cli/workspace-dev.js.map +1 -1
- package/dist/client/error-format.d.ts.map +1 -1
- package/dist/client/error-format.js +10 -0
- package/dist/client/error-format.js.map +1 -1
- package/dist/client/use-chat-threads.d.ts.map +1 -1
- package/dist/client/use-chat-threads.js +66 -16
- package/dist/client/use-chat-threads.js.map +1 -1
- package/dist/collab/awareness.d.ts +2 -2
- package/dist/collab/awareness.d.ts.map +1 -1
- package/dist/collab/struct-routes.d.ts +1 -1
- package/dist/credentials/index.d.ts +9 -2
- package/dist/credentials/index.d.ts.map +1 -1
- package/dist/credentials/index.js +50 -8
- package/dist/credentials/index.js.map +1 -1
- package/dist/extensions/url-safety.d.ts.map +1 -1
- package/dist/extensions/url-safety.js +38 -12
- package/dist/extensions/url-safety.js.map +1 -1
- package/dist/integrations/adapters/slack.d.ts.map +1 -1
- package/dist/integrations/adapters/slack.js +25 -8
- package/dist/integrations/adapters/slack.js.map +1 -1
- package/dist/integrations/google-docs-poller.d.ts.map +1 -1
- package/dist/integrations/google-docs-poller.js +13 -1
- package/dist/integrations/google-docs-poller.js.map +1 -1
- package/dist/integrations/installations-store.d.ts +10 -0
- package/dist/integrations/installations-store.d.ts.map +1 -1
- package/dist/integrations/installations-store.js +24 -0
- package/dist/integrations/installations-store.js.map +1 -1
- package/dist/integrations/plugin.d.ts.map +1 -1
- package/dist/integrations/plugin.js +6 -5
- package/dist/integrations/plugin.js.map +1 -1
- package/dist/integrations/types.d.ts +7 -0
- package/dist/integrations/types.d.ts.map +1 -1
- package/dist/integrations/types.js.map +1 -1
- package/dist/integrations/webhook-handler.d.ts.map +1 -1
- package/dist/integrations/webhook-handler.js +16 -1
- package/dist/integrations/webhook-handler.js.map +1 -1
- package/dist/jobs/background-automation-runner.d.ts.map +1 -1
- package/dist/jobs/background-automation-runner.js +35 -2
- package/dist/jobs/background-automation-runner.js.map +1 -1
- package/dist/notifications/routes.d.ts +6 -6
- package/dist/observability/routes.d.ts +3 -3
- package/dist/provider-api/actions/custom-provider-registration.d.ts +14 -14
- package/dist/provider-api/actions/provider-api.d.ts +8 -8
- package/dist/provider-api/index.js +7 -3
- package/dist/provider-api/index.js.map +1 -1
- package/dist/scripts/call-agent.d.ts.map +1 -1
- package/dist/scripts/call-agent.js +6 -1
- package/dist/scripts/call-agent.js.map +1 -1
- package/dist/server/agent-chat-plugin.d.ts.map +1 -1
- package/dist/server/agent-chat-plugin.js +38 -9
- package/dist/server/agent-chat-plugin.js.map +1 -1
- package/dist/server/agent-discovery.d.ts +2 -0
- package/dist/server/agent-discovery.d.ts.map +1 -1
- package/dist/server/agent-discovery.js.map +1 -1
- package/dist/server/builder-design-systems.d.ts +4 -1
- package/dist/server/builder-design-systems.d.ts.map +1 -1
- package/dist/server/builder-design-systems.js +11 -1
- package/dist/server/builder-design-systems.js.map +1 -1
- package/dist/server/credential-provider.d.ts.map +1 -1
- package/dist/server/credential-provider.js +49 -12
- package/dist/server/credential-provider.js.map +1 -1
- package/dist/server/index.d.ts +1 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js.map +1 -1
- package/dist/server/onboarding-html.d.ts.map +1 -1
- package/dist/server/onboarding-html.js +37 -2
- package/dist/server/onboarding-html.js.map +1 -1
- package/dist/server/transcribe-voice.d.ts +1 -1
- package/dist/shared/reasoning-effort.d.ts +1 -0
- package/dist/shared/reasoning-effort.d.ts.map +1 -1
- package/dist/shared/reasoning-effort.js +1 -1
- package/dist/shared/reasoning-effort.js.map +1 -1
- package/dist/templates/chat/app/components/layout/Sidebar.tsx +30 -3
- package/dist/templates/chat/changelog/2026-07-31-clicking-the-agent-native-logo-now-toggles-the-app-sidebar.md +6 -0
- package/dist/templates/workspace-core/.agents/skills/a2a-protocol/SKILL.md +11 -0
- package/package.json +1 -1
- package/src/a2a/correlation.ts +11 -1
- package/src/a2a/types.ts +11 -3
- package/src/agent/engine/ai-sdk-engine.ts +33 -46
- package/src/agent/engine/builder-engine.ts +22 -10
- package/src/agent/engine/error-detail.ts +184 -3
- package/src/agent/engine/failure-taxonomy.ts +123 -0
- package/src/agent/engine/index.ts +8 -0
- package/src/agent/engine/registry.ts +92 -8
- package/src/agent/engine/translate-ai-sdk.ts +17 -2
- package/src/agent/production-agent.ts +13 -33
- package/src/agent/run-loop-with-resume.ts +1 -1
- package/src/agent/run-manager.ts +43 -14
- package/src/agent/run-store.ts +30 -3
- package/src/agent/thread-data-builder.ts +36 -4
- package/src/chat-threads/store.ts +42 -0
- package/src/cli/templates-meta.ts +13 -0
- package/src/cli/workspace-dev.ts +1 -0
- package/src/client/error-format.ts +12 -0
- package/src/client/use-chat-threads.ts +76 -16
- package/src/credentials/index.ts +51 -12
- package/src/extensions/url-safety.ts +46 -12
- package/src/integrations/adapters/slack.ts +32 -10
- package/src/integrations/google-docs-poller.ts +12 -1
- package/src/integrations/installations-store.ts +30 -0
- package/src/integrations/plugin.ts +5 -5
- package/src/integrations/types.ts +7 -0
- package/src/integrations/webhook-handler.ts +24 -1
- package/src/jobs/background-automation-runner.ts +38 -1
- package/src/provider-api/index.ts +8 -2
- package/src/scripts/call-agent.ts +6 -0
- package/src/server/agent-chat-plugin.ts +46 -10
- package/src/server/agent-discovery.ts +2 -0
- package/src/server/builder-design-systems.ts +21 -0
- package/src/server/credential-provider.ts +51 -12
- package/src/server/index.ts +1 -0
- package/src/server/onboarding-html.ts +37 -2
- package/src/shared/reasoning-effort.ts +1 -1
- package/src/templates/chat/app/components/layout/Sidebar.tsx +30 -3
- package/src/templates/chat/changelog/2026-07-31-clicking-the-agent-native-logo-now-toggles-the-app-sidebar.md +6 -0
- package/src/templates/workspace-core/.agents/skills/a2a-protocol/SKILL.md +11 -0
- package/corpus/templates/clips/desktop/src/lib/media-device-selection.ts +0 -157
|
@@ -280,8 +280,23 @@ interface BuilderResolvedCredentials {
|
|
|
280
280
|
source: Exclude<BuilderCredentialSource, "env">;
|
|
281
281
|
}
|
|
282
282
|
|
|
283
|
-
|
|
284
|
-
|
|
283
|
+
/**
|
|
284
|
+
* A complete key pair is not necessarily a usable one: the gateway may have
|
|
285
|
+
* already rejected this exact private+public pair (see
|
|
286
|
+
* `recordBuilderCredentialAuthFailure`). Treating a marked-bad pair as
|
|
287
|
+
* "complete" is how a rejected credential got resent on every subsequent
|
|
288
|
+
* turn forever — this is the read side of that write, symmetric with
|
|
289
|
+
* `resolveUsableProviderSecret` for every non-Builder provider.
|
|
290
|
+
*/
|
|
291
|
+
async function isCompleteBuilderConnection(
|
|
292
|
+
creds: BuilderResolvedCredentials,
|
|
293
|
+
): Promise<boolean> {
|
|
294
|
+
if (!creds.privateKey || !creds.publicKey) return false;
|
|
295
|
+
const failure = await getBuilderCredentialAuthFailure({
|
|
296
|
+
privateKey: creds.privateKey,
|
|
297
|
+
publicKey: creds.publicKey,
|
|
298
|
+
});
|
|
299
|
+
return !failure;
|
|
285
300
|
}
|
|
286
301
|
|
|
287
302
|
function readOptionalBuilderBoolean(
|
|
@@ -524,14 +539,14 @@ async function resolveScopedBuilderCredentials(): Promise<ScopedBuilderCredentia
|
|
|
524
539
|
let orgLookupCause: unknown;
|
|
525
540
|
try {
|
|
526
541
|
const { readAppSecrets } = await import("../secrets/storage.js");
|
|
527
|
-
const traceScope = (
|
|
542
|
+
const traceScope = async (
|
|
528
543
|
creds: BuilderResolvedCredentials,
|
|
529
544
|
scopeId: string,
|
|
530
545
|
extra = "",
|
|
531
546
|
) => {
|
|
532
547
|
if (!traceLookup) return;
|
|
533
548
|
console.log(
|
|
534
|
-
`[builder-credential] scope=${creds.source} scopeId=${scopeId} email=${email}${extra} complete=${isCompleteBuilderConnection(creds)} private=${Boolean(creds.privateKey)} public=${Boolean(creds.publicKey)}`,
|
|
549
|
+
`[builder-credential] scope=${creds.source} scopeId=${scopeId} email=${email}${extra} complete=${await isCompleteBuilderConnection(creds)} private=${Boolean(creds.privateKey)} public=${Boolean(creds.publicKey)}`,
|
|
535
550
|
);
|
|
536
551
|
};
|
|
537
552
|
|
|
@@ -540,8 +555,8 @@ async function resolveScopedBuilderCredentials(): Promise<ScopedBuilderCredentia
|
|
|
540
555
|
"user",
|
|
541
556
|
email,
|
|
542
557
|
);
|
|
543
|
-
traceScope(userCreds, email);
|
|
544
|
-
if (isCompleteBuilderConnection(userCreds)) {
|
|
558
|
+
await traceScope(userCreds, email);
|
|
559
|
+
if (await isCompleteBuilderConnection(userCreds)) {
|
|
545
560
|
return { creds: userCreds, lookupFailed: false };
|
|
546
561
|
}
|
|
547
562
|
|
|
@@ -563,8 +578,8 @@ async function resolveScopedBuilderCredentials(): Promise<ScopedBuilderCredentia
|
|
|
563
578
|
"org",
|
|
564
579
|
orgId,
|
|
565
580
|
);
|
|
566
|
-
traceScope(orgCreds, orgId, ` orgSource=${orgSource}`);
|
|
567
|
-
if (isCompleteBuilderConnection(orgCreds)) {
|
|
581
|
+
await traceScope(orgCreds, orgId, ` orgSource=${orgSource}`);
|
|
582
|
+
if (await isCompleteBuilderConnection(orgCreds)) {
|
|
568
583
|
return { creds: orgCreds, lookupFailed: false };
|
|
569
584
|
}
|
|
570
585
|
|
|
@@ -574,8 +589,8 @@ async function resolveScopedBuilderCredentials(): Promise<ScopedBuilderCredentia
|
|
|
574
589
|
"workspace",
|
|
575
590
|
orgId,
|
|
576
591
|
);
|
|
577
|
-
traceScope(workspaceCreds, orgId, ` orgSource=${orgSource}`);
|
|
578
|
-
if (isCompleteBuilderConnection(workspaceCreds)) {
|
|
592
|
+
await traceScope(workspaceCreds, orgId, ` orgSource=${orgSource}`);
|
|
593
|
+
if (await isCompleteBuilderConnection(workspaceCreds)) {
|
|
579
594
|
return { creds: workspaceCreds, lookupFailed: false };
|
|
580
595
|
}
|
|
581
596
|
}
|
|
@@ -594,12 +609,12 @@ async function resolveScopedBuilderCredentials(): Promise<ScopedBuilderCredentia
|
|
|
594
609
|
"workspace",
|
|
595
610
|
soloScopeId,
|
|
596
611
|
);
|
|
597
|
-
traceScope(
|
|
612
|
+
await traceScope(
|
|
598
613
|
soloCreds,
|
|
599
614
|
soloScopeId,
|
|
600
615
|
` orgId=${orgId ?? "(none)"} orgSource=${orgSource}`,
|
|
601
616
|
);
|
|
602
|
-
if (isCompleteBuilderConnection(soloCreds)) {
|
|
617
|
+
if (await isCompleteBuilderConnection(soloCreds)) {
|
|
603
618
|
return { creds: soloCreds, lookupFailed: false };
|
|
604
619
|
}
|
|
605
620
|
} catch (err) {
|
|
@@ -791,6 +806,30 @@ export async function resolveBuilderCredentialsDetailed(): Promise<BuilderCreden
|
|
|
791
806
|
readDeployCredentialEnv("BUILDER_IS_FREE_ACCOUNT"),
|
|
792
807
|
)
|
|
793
808
|
: null;
|
|
809
|
+
// The deploy-level fallback is a candidate scope like any other: a pair the
|
|
810
|
+
// gateway already rejected must not be handed back as the "configured"
|
|
811
|
+
// credential just because no per-user/org row exists to shadow it.
|
|
812
|
+
const envFailure =
|
|
813
|
+
privateKey && publicKey
|
|
814
|
+
? await getBuilderCredentialAuthFailure({ privateKey, publicKey })
|
|
815
|
+
: null;
|
|
816
|
+
if (envFailure) {
|
|
817
|
+
return {
|
|
818
|
+
privateKey: null,
|
|
819
|
+
publicKey: null,
|
|
820
|
+
userId: null,
|
|
821
|
+
orgName: null,
|
|
822
|
+
orgKind: null,
|
|
823
|
+
subscription: null,
|
|
824
|
+
subscriptionLevel: null,
|
|
825
|
+
subscriptionName: null,
|
|
826
|
+
isEnterprise: null,
|
|
827
|
+
isFreeAccount: null,
|
|
828
|
+
source: null,
|
|
829
|
+
lookupFailed,
|
|
830
|
+
cause,
|
|
831
|
+
};
|
|
832
|
+
}
|
|
794
833
|
return {
|
|
795
834
|
privateKey,
|
|
796
835
|
publicKey,
|
|
@@ -514,6 +514,7 @@ export {
|
|
|
514
514
|
type BuilderDesignSystemProxyFields,
|
|
515
515
|
type BuilderDesignSystemProxyFieldsOptions,
|
|
516
516
|
type BuilderDesignSystemProxyReference,
|
|
517
|
+
type BuilderDesignSystemSourceKind,
|
|
517
518
|
} from "./builder-design-systems.js";
|
|
518
519
|
export {
|
|
519
520
|
getBuilderBranchProjectId,
|
|
@@ -3264,6 +3264,32 @@ ${
|
|
|
3264
3264
|
var RESEND_VERIFICATION_COOLDOWN_SECONDS = 60;
|
|
3265
3265
|
var resendVerificationCooldownUntil = 0;
|
|
3266
3266
|
var resendVerificationCooldownTimer = null;
|
|
3267
|
+
var PENDING_SIGNUP_EMAIL_STORAGE_KEY = 'an.onboarding.pendingSignupEmail';
|
|
3268
|
+
// The verification link can open in a new tab, so in-memory pending state
|
|
3269
|
+
// cannot be the only source of the account email. Keep only the address,
|
|
3270
|
+
// never the password, for the manual-login fallback.
|
|
3271
|
+
function pendingSignupEmailStorageKey() {
|
|
3272
|
+
return PENDING_SIGNUP_EMAIL_STORAGE_KEY + ':' + (__anBasePath() || '/');
|
|
3273
|
+
}
|
|
3274
|
+
function rememberPendingSignupEmail(email) {
|
|
3275
|
+
try {
|
|
3276
|
+
if (email) localStorage.setItem(pendingSignupEmailStorageKey(), email);
|
|
3277
|
+
else localStorage.removeItem(pendingSignupEmailStorageKey());
|
|
3278
|
+
// coercion-ok: localStorage is optional; the in-memory and form fallbacks remain available.
|
|
3279
|
+
} catch (e) {}
|
|
3280
|
+
}
|
|
3281
|
+
function readRememberedPendingSignupEmail() {
|
|
3282
|
+
try {
|
|
3283
|
+
var email = localStorage.getItem(pendingSignupEmailStorageKey()) || '';
|
|
3284
|
+
return __anIsValidAuthEmail(email) ? __anNormalizeAuthEmail(email) : '';
|
|
3285
|
+
// coercion-ok: localStorage is optional; callers fall back to the in-memory or form value.
|
|
3286
|
+
} catch (e) {
|
|
3287
|
+
return '';
|
|
3288
|
+
}
|
|
3289
|
+
}
|
|
3290
|
+
function clearRememberedPendingSignupEmail() {
|
|
3291
|
+
rememberPendingSignupEmail('');
|
|
3292
|
+
}
|
|
3267
3293
|
function setActiveTab(name, opts) {
|
|
3268
3294
|
if (name !== 'signup' && name !== 'login') return;
|
|
3269
3295
|
var form = document.getElementById(name + '-form');
|
|
@@ -3283,6 +3309,7 @@ ${
|
|
|
3283
3309
|
function showVerificationStep(email, password) {
|
|
3284
3310
|
pendingSignupEmail = email || '';
|
|
3285
3311
|
pendingSignupPassword = password || '';
|
|
3312
|
+
rememberPendingSignupEmail(pendingSignupEmail);
|
|
3286
3313
|
tabs.forEach(function(x) { x.classList.remove('active'); });
|
|
3287
3314
|
forms.forEach(function(x) { x.classList.remove('active'); });
|
|
3288
3315
|
var card = document.querySelector('.card');
|
|
@@ -3313,7 +3340,7 @@ ${
|
|
|
3313
3340
|
function getPendingSignupEmail() {
|
|
3314
3341
|
var signupEmail = document.getElementById('s-email');
|
|
3315
3342
|
var loginEmail = document.getElementById('l-email');
|
|
3316
|
-
return (pendingSignupEmail || (signupEmail && signupEmail.value) || (loginEmail && loginEmail.value) || '').trim();
|
|
3343
|
+
return (pendingSignupEmail || readRememberedPendingSignupEmail() || (signupEmail && signupEmail.value) || (loginEmail && loginEmail.value) || '').trim();
|
|
3317
3344
|
}
|
|
3318
3345
|
function getPendingSignupPassword() {
|
|
3319
3346
|
var signupPassword = document.getElementById('s-pass');
|
|
@@ -3366,6 +3393,7 @@ ${
|
|
|
3366
3393
|
body: JSON.stringify({ email: email, password: password }),
|
|
3367
3394
|
});
|
|
3368
3395
|
if (res.ok) {
|
|
3396
|
+
clearRememberedPendingSignupEmail();
|
|
3369
3397
|
__anRedirectToSignedInApp();
|
|
3370
3398
|
return { ok: true };
|
|
3371
3399
|
}
|
|
@@ -3398,6 +3426,7 @@ ${
|
|
|
3398
3426
|
});
|
|
3399
3427
|
var data = await res.json().catch(function() { return {}; });
|
|
3400
3428
|
if (res.ok && data && data.email && !data.error) {
|
|
3429
|
+
clearRememberedPendingSignupEmail();
|
|
3401
3430
|
__anRedirectToSignedInApp();
|
|
3402
3431
|
return;
|
|
3403
3432
|
}
|
|
@@ -3464,7 +3493,7 @@ ${
|
|
|
3464
3493
|
async function resendVerificationEmail() {
|
|
3465
3494
|
var btn = document.getElementById('resend-verification');
|
|
3466
3495
|
var msg = document.getElementById('verify-msg');
|
|
3467
|
-
var email =
|
|
3496
|
+
var email = getPendingSignupEmail();
|
|
3468
3497
|
if (!email) return;
|
|
3469
3498
|
if (resendVerificationCooldownUntil > Date.now()) {
|
|
3470
3499
|
updateResendVerificationCooldown();
|
|
@@ -3533,6 +3562,9 @@ ${
|
|
|
3533
3562
|
setActiveTab(initial, { persist: false });
|
|
3534
3563
|
try {
|
|
3535
3564
|
if (__anIsVerifiedRedirectSuccess()) {
|
|
3565
|
+
var rememberedEmail = readRememberedPendingSignupEmail();
|
|
3566
|
+
var loginEmail = document.getElementById('l-email');
|
|
3567
|
+
if (loginEmail && rememberedEmail) loginEmail.value = rememberedEmail;
|
|
3536
3568
|
var msg = document.getElementById('l-msg');
|
|
3537
3569
|
if (msg) {
|
|
3538
3570
|
msg.textContent = __anT('emailVerifiedFinishing');
|
|
@@ -3591,6 +3623,7 @@ ${
|
|
|
3591
3623
|
body: JSON.stringify({ email: email, password: pass }),
|
|
3592
3624
|
});
|
|
3593
3625
|
if (loginRes.ok) {
|
|
3626
|
+
clearRememberedPendingSignupEmail();
|
|
3594
3627
|
msg.textContent = __anT('accountCreatedSigningIn');
|
|
3595
3628
|
msg.classList.add('show', 'success');
|
|
3596
3629
|
__anRedirectToSignedInApp();
|
|
@@ -3630,6 +3663,7 @@ ${
|
|
|
3630
3663
|
var backToSignup = document.getElementById('back-to-signup');
|
|
3631
3664
|
if (backToSignup) backToSignup.addEventListener('click', function(e) {
|
|
3632
3665
|
e.preventDefault();
|
|
3666
|
+
clearRememberedPendingSignupEmail();
|
|
3633
3667
|
setActiveTab('signup', { persist: true });
|
|
3634
3668
|
var email = document.getElementById('s-email');
|
|
3635
3669
|
setTimeout(function() { if (email) email.focus(); }, 0);
|
|
@@ -3724,6 +3758,7 @@ ${
|
|
|
3724
3758
|
}),
|
|
3725
3759
|
});
|
|
3726
3760
|
if (res.ok) {
|
|
3761
|
+
clearRememberedPendingSignupEmail();
|
|
3727
3762
|
__anRedirectToSignedInApp();
|
|
3728
3763
|
return;
|
|
3729
3764
|
}
|
|
@@ -156,7 +156,7 @@ export function stepDownReasoningEffort(
|
|
|
156
156
|
return REASONING_EFFORT_STEP_DOWN[effort] ?? effort;
|
|
157
157
|
}
|
|
158
158
|
|
|
159
|
-
function isGPTReasoningModel(model: string) {
|
|
159
|
+
export function isGPTReasoningModel(model: string) {
|
|
160
160
|
const id = model.toLowerCase().replace(/^openai\//, "");
|
|
161
161
|
return /^gpt-5/.test(id) || /^o\d/.test(id);
|
|
162
162
|
}
|
|
@@ -17,6 +17,17 @@ Agents call other agents over A2A, a JSON-RPC protocol for discovery and
|
|
|
17
17
|
delegation. Use it when work belongs to a different agent entirely — not the
|
|
18
18
|
local agent chat.
|
|
19
19
|
|
|
20
|
+
**No workarounds when A2A feels flaky.** The strong default is `ask_app` (or
|
|
21
|
+
`call-agent`) working reliably, full stop — not apps reaching around it. Do
|
|
22
|
+
not have app A generate and execute raw SQL against app B's database, and do
|
|
23
|
+
not expose B's internal tools directly to A as a substitute for delegation.
|
|
24
|
+
The receiving agent has context, skills, and guardrails the caller doesn't;
|
|
25
|
+
bypassing it to work around a flaky A2A call reintroduces exactly the bugs A2A
|
|
26
|
+
exists to prevent, and makes the real reliability problem invisible instead of
|
|
27
|
+
fixing it. If A2A delegation is unreliable, fix A2A — file it as a bug in the
|
|
28
|
+
delegation path (timeout handling, retries, typed terminal states), don't
|
|
29
|
+
route around it app by app.
|
|
30
|
+
|
|
20
31
|
Connecting app A to app B is two independent things, and both must be true:
|
|
21
32
|
|
|
22
33
|
1. **B is registered on A** as a `remote-agents/<id>.json` resource.
|
|
@@ -2229,13 +2229,17 @@ export function Sidebar({ mobile }: { mobile?: boolean } = {}) {
|
|
|
2229
2229
|
src={appPath("/agent-native-icon-light.svg")}
|
|
2230
2230
|
alt=""
|
|
2231
2231
|
aria-hidden="true"
|
|
2232
|
-
|
|
2232
|
+
width={35}
|
|
2233
|
+
height={20}
|
|
2234
|
+
className="block h-5 w-[35px] shrink-0 object-contain object-center dark:hidden"
|
|
2233
2235
|
/>
|
|
2234
2236
|
<img
|
|
2235
2237
|
src={appPath("/agent-native-icon-dark.svg")}
|
|
2236
2238
|
alt=""
|
|
2237
2239
|
aria-hidden="true"
|
|
2238
|
-
|
|
2240
|
+
width={35}
|
|
2241
|
+
height={20}
|
|
2242
|
+
className="hidden h-5 w-[35px] shrink-0 object-contain object-center dark:block"
|
|
2239
2243
|
/>
|
|
2240
2244
|
<span className="text-lg font-bold tracking-tight">
|
|
2241
2245
|
{t("navigation.brand")}
|
|
@@ -377,6 +377,44 @@ export function Sidebar() {
|
|
|
377
377
|
className={collapsed ? "h-8 w-8" : "min-w-0"}
|
|
378
378
|
/>
|
|
379
379
|
);
|
|
380
|
+
const brandControl = (
|
|
381
|
+
<button
|
|
382
|
+
type="button"
|
|
383
|
+
onClick={() => setCollapsed((value) => !value)}
|
|
384
|
+
aria-label={
|
|
385
|
+
collapsed
|
|
386
|
+
? t("navigation.expandSidebar")
|
|
387
|
+
: t("navigation.collapseSidebar")
|
|
388
|
+
}
|
|
389
|
+
className={cn(
|
|
390
|
+
"flex items-center gap-2 rounded outline-none transition-colors hover:bg-sidebar-accent/50 focus-visible:ring-2 focus-visible:ring-ring",
|
|
391
|
+
collapsed ? "size-8 justify-center" : "text-start",
|
|
392
|
+
)}
|
|
393
|
+
data-sidebar-brand-toggle
|
|
394
|
+
>
|
|
395
|
+
<img
|
|
396
|
+
src={appPath("/agent-native-icon-light.svg")}
|
|
397
|
+
alt=""
|
|
398
|
+
aria-hidden="true"
|
|
399
|
+
width={28}
|
|
400
|
+
height={16}
|
|
401
|
+
className="block h-4 w-7 shrink-0 object-contain object-center dark:hidden"
|
|
402
|
+
/>
|
|
403
|
+
<img
|
|
404
|
+
src={appPath("/agent-native-icon-dark.svg")}
|
|
405
|
+
alt=""
|
|
406
|
+
aria-hidden="true"
|
|
407
|
+
width={28}
|
|
408
|
+
height={16}
|
|
409
|
+
className="hidden h-4 w-7 shrink-0 object-contain object-center dark:block"
|
|
410
|
+
/>
|
|
411
|
+
{!collapsed && (
|
|
412
|
+
<span className="text-sm font-semibold tracking-tight">
|
|
413
|
+
{t("navigation.brand")}
|
|
414
|
+
</span>
|
|
415
|
+
)}
|
|
416
|
+
</button>
|
|
417
|
+
);
|
|
380
418
|
|
|
381
419
|
return (
|
|
382
420
|
<aside
|
|
@@ -391,25 +429,7 @@ export function Sidebar() {
|
|
|
391
429
|
collapsed ? "justify-center px-2" : "justify-between px-4",
|
|
392
430
|
)}
|
|
393
431
|
>
|
|
394
|
-
{
|
|
395
|
-
<div className="flex items-center gap-2">
|
|
396
|
-
<img
|
|
397
|
-
src={appPath("/agent-native-icon-light.svg")}
|
|
398
|
-
alt=""
|
|
399
|
-
aria-hidden="true"
|
|
400
|
-
className="block h-4 w-auto dark:hidden"
|
|
401
|
-
/>
|
|
402
|
-
<img
|
|
403
|
-
src={appPath("/agent-native-icon-dark.svg")}
|
|
404
|
-
alt=""
|
|
405
|
-
aria-hidden="true"
|
|
406
|
-
className="hidden h-4 w-auto dark:block"
|
|
407
|
-
/>
|
|
408
|
-
<span className="text-sm font-semibold tracking-tight">
|
|
409
|
-
{t("navigation.brand")}
|
|
410
|
-
</span>
|
|
411
|
-
</div>
|
|
412
|
-
)}
|
|
432
|
+
{brandControl}
|
|
413
433
|
</div>
|
|
414
434
|
|
|
415
435
|
<div className="flex min-h-0 flex-1 flex-col overflow-y-auto">
|
|
@@ -310,23 +310,50 @@ export function Sidebar({
|
|
|
310
310
|
>
|
|
311
311
|
<Link
|
|
312
312
|
to="/"
|
|
313
|
+
onClick={(event) => {
|
|
314
|
+
if (
|
|
315
|
+
!collapsible ||
|
|
316
|
+
!onCollapsedChange ||
|
|
317
|
+
event.metaKey ||
|
|
318
|
+
event.ctrlKey ||
|
|
319
|
+
event.shiftKey ||
|
|
320
|
+
event.altKey ||
|
|
321
|
+
event.button !== 0
|
|
322
|
+
) {
|
|
323
|
+
return;
|
|
324
|
+
}
|
|
325
|
+
event.preventDefault();
|
|
326
|
+
onCollapsedChange(!collapsed);
|
|
327
|
+
}}
|
|
313
328
|
className={cn(
|
|
314
329
|
"flex min-w-0 items-center rounded outline-none focus-visible:ring-2 focus-visible:ring-ring",
|
|
315
330
|
collapsed ? "size-8 justify-center" : "flex-1 gap-3",
|
|
316
331
|
)}
|
|
317
|
-
aria-label={
|
|
332
|
+
aria-label={
|
|
333
|
+
collapsible && onCollapsedChange
|
|
334
|
+
? collapsed
|
|
335
|
+
? t("navigation.expandSidebar")
|
|
336
|
+
: t("navigation.collapseSidebar")
|
|
337
|
+
: collapsed
|
|
338
|
+
? t("navigation.brand")
|
|
339
|
+
: undefined
|
|
340
|
+
}
|
|
318
341
|
>
|
|
319
342
|
<img
|
|
320
343
|
src={appPath("/agent-native-icon-light.svg")}
|
|
321
344
|
alt=""
|
|
322
345
|
aria-hidden="true"
|
|
323
|
-
|
|
346
|
+
width={28}
|
|
347
|
+
height={16}
|
|
348
|
+
className="block h-4 w-7 shrink-0 object-contain object-center dark:hidden"
|
|
324
349
|
/>
|
|
325
350
|
<img
|
|
326
351
|
src={appPath("/agent-native-icon-dark.svg")}
|
|
327
352
|
alt=""
|
|
328
353
|
aria-hidden="true"
|
|
329
|
-
|
|
354
|
+
width={28}
|
|
355
|
+
height={16}
|
|
356
|
+
className="hidden h-4 w-7 shrink-0 object-contain object-center dark:block"
|
|
330
357
|
/>
|
|
331
358
|
<div className={cn("min-w-0", collapsed && "sr-only")}>
|
|
332
359
|
<p className="truncate text-sm font-semibold text-sidebar-accent-foreground">
|
|
@@ -386,7 +386,7 @@ export function AppLayout({ children }: AppLayoutProps) {
|
|
|
386
386
|
open={sidebarOpen}
|
|
387
387
|
onClose={() => setSidebarOpen(false)}
|
|
388
388
|
collapsed={!isMobile && sidebarCollapsed}
|
|
389
|
-
onCollapsedChange={setSidebarCollapsed}
|
|
389
|
+
onCollapsedChange={isMobile ? undefined : setSidebarCollapsed}
|
|
390
390
|
/>
|
|
391
391
|
<AgentSidebar
|
|
392
392
|
position="right"
|
|
@@ -775,31 +775,60 @@ export function Sidebar({
|
|
|
775
775
|
collapsed ? "px-1" : "px-4",
|
|
776
776
|
)}
|
|
777
777
|
>
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
778
|
+
<Link
|
|
779
|
+
to="/"
|
|
780
|
+
onClick={(event) => {
|
|
781
|
+
onClose();
|
|
782
|
+
if (
|
|
783
|
+
!onCollapsedChange ||
|
|
784
|
+
event.metaKey ||
|
|
785
|
+
event.ctrlKey ||
|
|
786
|
+
event.shiftKey ||
|
|
787
|
+
event.altKey ||
|
|
788
|
+
event.button !== 0
|
|
789
|
+
) {
|
|
790
|
+
return;
|
|
791
|
+
}
|
|
792
|
+
event.preventDefault();
|
|
793
|
+
onCollapsedChange(!collapsed);
|
|
794
|
+
}}
|
|
795
|
+
className={cn(
|
|
796
|
+
"flex items-center gap-2 rounded outline-none focus-visible:ring-2 focus-visible:ring-ring",
|
|
797
|
+
collapsed ? "size-8 justify-center" : "flex-1",
|
|
798
|
+
)}
|
|
799
|
+
aria-label={
|
|
800
|
+
onCollapsedChange
|
|
801
|
+
? collapsed
|
|
802
|
+
? t("sidebar.expandSidebar")
|
|
803
|
+
: t("sidebar.collapseSidebar")
|
|
804
|
+
: collapsed
|
|
805
|
+
? t("navigation.brand")
|
|
806
|
+
: undefined
|
|
807
|
+
}
|
|
808
|
+
data-sidebar-brand-toggle
|
|
809
|
+
>
|
|
810
|
+
<img
|
|
811
|
+
src={appPath("/agent-native-icon-light.svg")}
|
|
812
|
+
alt=""
|
|
813
|
+
aria-hidden="true"
|
|
814
|
+
width={28}
|
|
815
|
+
height={16}
|
|
816
|
+
className="block h-4 w-7 shrink-0 object-contain object-center dark:hidden"
|
|
817
|
+
/>
|
|
818
|
+
<img
|
|
819
|
+
src={appPath("/agent-native-icon-dark.svg")}
|
|
820
|
+
alt=""
|
|
821
|
+
aria-hidden="true"
|
|
822
|
+
width={28}
|
|
823
|
+
height={16}
|
|
824
|
+
className="hidden h-4 w-7 shrink-0 object-contain object-center dark:block"
|
|
825
|
+
/>
|
|
826
|
+
{!collapsed && (
|
|
827
|
+
<span className="text-base font-semibold tracking-tight">
|
|
828
|
+
{t("navigation.brand")}
|
|
829
|
+
</span>
|
|
830
|
+
)}
|
|
831
|
+
</Link>
|
|
803
832
|
</div>
|
|
804
833
|
|
|
805
834
|
<div className="min-h-0 flex-1 overflow-y-auto">
|
|
@@ -358,23 +358,50 @@ export function Sidebar({
|
|
|
358
358
|
>
|
|
359
359
|
<Link
|
|
360
360
|
to="/"
|
|
361
|
+
onClick={(event) => {
|
|
362
|
+
if (
|
|
363
|
+
!collapsible ||
|
|
364
|
+
!onCollapsedChange ||
|
|
365
|
+
event.metaKey ||
|
|
366
|
+
event.ctrlKey ||
|
|
367
|
+
event.shiftKey ||
|
|
368
|
+
event.altKey ||
|
|
369
|
+
event.button !== 0
|
|
370
|
+
) {
|
|
371
|
+
return;
|
|
372
|
+
}
|
|
373
|
+
event.preventDefault();
|
|
374
|
+
onCollapsedChange(!collapsed);
|
|
375
|
+
}}
|
|
361
376
|
className={cn(
|
|
362
377
|
"flex min-w-0 items-center rounded outline-none focus-visible:ring-2 focus-visible:ring-ring",
|
|
363
378
|
collapsed ? "size-7 justify-center" : "flex-1 gap-3",
|
|
364
379
|
)}
|
|
365
|
-
aria-label={
|
|
380
|
+
aria-label={
|
|
381
|
+
collapsible && onCollapsedChange
|
|
382
|
+
? collapsed
|
|
383
|
+
? t("navigation.expandSidebar")
|
|
384
|
+
: t("navigation.collapseSidebar")
|
|
385
|
+
: collapsed
|
|
386
|
+
? APP_TITLE
|
|
387
|
+
: undefined
|
|
388
|
+
}
|
|
366
389
|
>
|
|
367
390
|
<img
|
|
368
391
|
src={appPath("/agent-native-icon-light.svg")}
|
|
369
392
|
alt=""
|
|
370
393
|
aria-hidden="true"
|
|
371
|
-
|
|
394
|
+
width={28}
|
|
395
|
+
height={16}
|
|
396
|
+
className="block h-4 w-7 shrink-0 object-contain object-center dark:hidden"
|
|
372
397
|
/>
|
|
373
398
|
<img
|
|
374
399
|
src={appPath("/agent-native-icon-dark.svg")}
|
|
375
400
|
alt=""
|
|
376
401
|
aria-hidden="true"
|
|
377
|
-
|
|
402
|
+
width={28}
|
|
403
|
+
height={16}
|
|
404
|
+
className="hidden h-4 w-7 shrink-0 object-contain object-center dark:block"
|
|
378
405
|
/>
|
|
379
406
|
<div className={cn("min-w-0", collapsed && "sr-only")}>
|
|
380
407
|
<p className="truncate text-sm font-semibold text-sidebar-accent-foreground">
|
|
@@ -336,32 +336,48 @@ export function LibraryLayout({ children }: LibraryLayoutProps) {
|
|
|
336
336
|
showCollapsedSidebar ? "justify-center px-2" : "px-4",
|
|
337
337
|
)}
|
|
338
338
|
>
|
|
339
|
-
<
|
|
339
|
+
<button
|
|
340
|
+
type="button"
|
|
341
|
+
onClick={() => {
|
|
342
|
+
if (!isMobile) setSidebarCollapsed((value) => !value);
|
|
343
|
+
}}
|
|
344
|
+
aria-label={
|
|
345
|
+
isMobile
|
|
346
|
+
? t("navigation.brand")
|
|
347
|
+
: showCollapsedSidebar
|
|
348
|
+
? t("navigation.expandSidebar")
|
|
349
|
+
: t("navigation.collapseSidebar")
|
|
350
|
+
}
|
|
340
351
|
className={cn(
|
|
341
|
-
"flex min-w-0 items-center gap-2",
|
|
342
|
-
|
|
352
|
+
"flex min-w-0 items-center gap-2 rounded outline-none focus-visible:ring-2 focus-visible:ring-ring",
|
|
353
|
+
showCollapsedSidebar
|
|
354
|
+
? "size-8 justify-center"
|
|
355
|
+
: "flex-1 text-start",
|
|
343
356
|
)}
|
|
357
|
+
data-sidebar-brand-toggle
|
|
344
358
|
>
|
|
359
|
+
<img
|
|
360
|
+
src={appPath("/agent-native-icon-light.svg")}
|
|
361
|
+
alt=""
|
|
362
|
+
aria-hidden="true"
|
|
363
|
+
width={28}
|
|
364
|
+
height={16}
|
|
365
|
+
className="block h-4 w-7 shrink-0 object-contain object-center dark:hidden"
|
|
366
|
+
/>
|
|
367
|
+
<img
|
|
368
|
+
src={appPath("/agent-native-icon-dark.svg")}
|
|
369
|
+
alt=""
|
|
370
|
+
aria-hidden="true"
|
|
371
|
+
width={28}
|
|
372
|
+
height={16}
|
|
373
|
+
className="hidden h-4 w-7 shrink-0 object-contain object-center dark:block"
|
|
374
|
+
/>
|
|
345
375
|
{!showCollapsedSidebar && (
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
alt=""
|
|
350
|
-
aria-hidden="true"
|
|
351
|
-
className="block h-4 w-auto shrink-0 dark:hidden"
|
|
352
|
-
/>
|
|
353
|
-
<img
|
|
354
|
-
src={appPath("/agent-native-icon-dark.svg")}
|
|
355
|
-
alt=""
|
|
356
|
-
aria-hidden="true"
|
|
357
|
-
className="hidden h-4 w-auto shrink-0 dark:block"
|
|
358
|
-
/>
|
|
359
|
-
<span className="truncate text-sm font-semibold text-foreground">
|
|
360
|
-
{t("navigation.brand")}
|
|
361
|
-
</span>
|
|
362
|
-
</>
|
|
376
|
+
<span className="truncate text-sm font-semibold text-foreground">
|
|
377
|
+
{t("navigation.brand")}
|
|
378
|
+
</span>
|
|
363
379
|
)}
|
|
364
|
-
</
|
|
380
|
+
</button>
|
|
365
381
|
</div>
|
|
366
382
|
<div className="min-h-0 flex-1 overflow-y-auto">
|
|
367
383
|
{showCollapsedSidebar ? (
|