@agent-native/core 0.83.0 → 0.84.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/corpus/README.md +1 -1
- package/corpus/core/CHANGELOG.md +34 -0
- package/corpus/core/README.md +2 -2
- package/corpus/core/docs/content/cloneable-saas.mdx +2 -2
- package/corpus/core/docs/content/evals.mdx +34 -12
- package/corpus/core/docs/content/faq.mdx +1 -1
- package/corpus/core/docs/content/locales/ar-SA/cloneable-saas.mdx +2 -2
- package/corpus/core/docs/content/locales/ar-SA/evals.mdx +7 -0
- package/corpus/core/docs/content/locales/ar-SA/faq.mdx +1 -1
- package/corpus/core/docs/content/locales/ar-SA/template-chat.mdx +1 -1
- package/corpus/core/docs/content/locales/de-DE/cloneable-saas.mdx +2 -2
- package/corpus/core/docs/content/locales/de-DE/evals.mdx +8 -0
- package/corpus/core/docs/content/locales/de-DE/faq.mdx +1 -1
- package/corpus/core/docs/content/locales/de-DE/template-chat.mdx +1 -1
- package/corpus/core/docs/content/locales/es-ES/cloneable-saas.mdx +2 -2
- package/corpus/core/docs/content/locales/es-ES/evals.mdx +8 -0
- package/corpus/core/docs/content/locales/es-ES/faq.mdx +1 -1
- package/corpus/core/docs/content/locales/es-ES/template-chat.mdx +1 -1
- package/corpus/core/docs/content/locales/fr-FR/cloneable-saas.mdx +2 -2
- package/corpus/core/docs/content/locales/fr-FR/evals.mdx +8 -0
- package/corpus/core/docs/content/locales/fr-FR/faq.mdx +1 -1
- package/corpus/core/docs/content/locales/fr-FR/template-chat.mdx +1 -1
- package/corpus/core/docs/content/locales/hi-IN/cloneable-saas.mdx +2 -2
- package/corpus/core/docs/content/locales/hi-IN/evals.mdx +8 -0
- package/corpus/core/docs/content/locales/hi-IN/faq.mdx +1 -1
- package/corpus/core/docs/content/locales/hi-IN/template-chat.mdx +1 -1
- package/corpus/core/docs/content/locales/ja-JP/cloneable-saas.mdx +2 -2
- package/corpus/core/docs/content/locales/ja-JP/evals.mdx +7 -0
- package/corpus/core/docs/content/locales/ja-JP/faq.mdx +1 -1
- package/corpus/core/docs/content/locales/ja-JP/template-chat.mdx +1 -1
- package/corpus/core/docs/content/locales/ko-KR/cloneable-saas.mdx +2 -2
- package/corpus/core/docs/content/locales/ko-KR/evals.mdx +7 -0
- package/corpus/core/docs/content/locales/ko-KR/faq.mdx +1 -1
- package/corpus/core/docs/content/locales/ko-KR/template-chat.mdx +1 -1
- package/corpus/core/docs/content/locales/pt-BR/cloneable-saas.mdx +2 -2
- package/corpus/core/docs/content/locales/pt-BR/evals.mdx +8 -0
- package/corpus/core/docs/content/locales/pt-BR/faq.mdx +1 -1
- package/corpus/core/docs/content/locales/pt-BR/template-chat.mdx +1 -1
- package/corpus/core/docs/content/locales/zh-CN/cloneable-saas.mdx +2 -2
- package/corpus/core/docs/content/locales/zh-CN/evals.mdx +7 -0
- package/corpus/core/docs/content/locales/zh-CN/faq.mdx +1 -1
- package/corpus/core/docs/content/locales/zh-CN/template-chat.mdx +1 -1
- package/corpus/core/docs/content/locales/zh-TW/cloneable-saas.mdx +2 -2
- package/corpus/core/docs/content/locales/zh-TW/evals.mdx +7 -0
- package/corpus/core/docs/content/locales/zh-TW/faq.mdx +1 -1
- package/corpus/core/docs/content/locales/zh-TW/template-chat.mdx +1 -1
- package/corpus/core/docs/content/template-chat.mdx +1 -1
- package/corpus/core/package.json +1 -1
- package/corpus/core/src/agent/engine/builtin.ts +1 -1
- package/corpus/core/src/agent/engine/output-tokens.ts +1 -1
- package/corpus/core/src/agent/harness/acp-adapter.ts +28 -4
- package/corpus/core/src/agent/harness/ai-sdk-adapter.ts +3 -0
- package/corpus/core/src/agent/harness/translate.ts +3 -0
- package/corpus/core/src/agent/harness/types.ts +1 -0
- package/corpus/core/src/agent/model-config.ts +34 -13
- package/corpus/core/src/agent/production-agent.ts +87 -10
- package/corpus/core/src/agent/thread-data-builder.ts +29 -4
- package/corpus/core/src/agent/tool-call-journal.ts +109 -48
- package/corpus/core/src/agent/types.ts +6 -1
- package/corpus/core/src/cli/design-connect.ts +106 -0
- package/corpus/core/src/cli/gateway-helpers.ts +17 -0
- package/corpus/core/src/cli/recap.ts +0 -2
- package/corpus/core/src/cli/skills.ts +54 -16
- package/corpus/core/src/cli/workspace-dev.ts +29 -5
- package/corpus/core/src/client/AssistantChat.tsx +89 -42
- package/corpus/core/src/client/DefaultSpinner.tsx +8 -1
- package/corpus/core/src/client/chat/message-components.tsx +49 -1
- package/corpus/core/src/client/chat/repo-helpers.ts +71 -0
- package/corpus/core/src/client/chat/run-recovery.tsx +15 -5
- package/corpus/core/src/client/components/ApiKeySettings.tsx +8 -8
- package/corpus/core/src/client/components/CodeRequiredDialog.tsx +26 -15
- package/corpus/core/src/client/components/MissingKeyCard.tsx +13 -6
- package/corpus/core/src/client/composer/TiptapComposer.tsx +4 -3
- package/corpus/core/src/client/extensions/ExtensionsSidebarSection.tsx +0 -1
- package/corpus/core/src/client/guided-questions.tsx +21 -27
- package/corpus/core/src/client/integrations/IntegrationCard.tsx +1 -1
- package/corpus/core/src/client/integrations/IntegrationsPanel.tsx +1 -1
- package/corpus/core/src/client/onboarding/OnboardingBanner.tsx +2 -2
- package/corpus/core/src/client/onboarding/OnboardingPanel.tsx +23 -19
- package/corpus/core/src/client/resources/ResourceEditor.tsx +18 -10
- package/corpus/core/src/client/resources/ResourcesPanel.tsx +5 -1
- package/corpus/core/src/client/settings/SettingsPanel.tsx +8 -3
- package/corpus/core/src/client/settings/useBuilderStatus.ts +8 -41
- package/corpus/core/src/client/useProductionAgent.ts +6 -2
- package/corpus/core/src/deploy/build.ts +1 -1
- package/corpus/core/src/eval/define-eval.ts +4 -1
- package/corpus/core/src/eval/report.ts +23 -8
- package/corpus/core/src/eval/runner.ts +41 -6
- package/corpus/core/src/eval/types.ts +11 -0
- package/corpus/core/src/observability/traces.ts +3 -3
- package/corpus/core/src/onboarding/default-steps.ts +1 -1
- package/corpus/core/src/scripts/agent-engines/manage-agent-engine.ts +1 -1
- package/corpus/core/src/scripts/agent-engines/set-agent-engine.ts +1 -1
- package/corpus/core/src/server/agent-chat-plugin.ts +177 -81
- package/corpus/core/src/server/core-routes-plugin.ts +7 -1
- package/corpus/core/src/server/open-route.ts +59 -40
- package/corpus/core/src/shared/reasoning-effort.ts +2 -0
- package/corpus/core/src/sharing/access.ts +22 -2
- package/corpus/core/src/sharing/registry.ts +18 -0
- package/corpus/core/src/styles/agent-native.css +104 -20
- package/corpus/core/src/styles/rich-markdown-editor.css +11 -10
- package/corpus/templates/analytics/app/components/dashboard/CumulativeNetChart.tsx +10 -10
- package/corpus/templates/analytics/app/components/dashboard/RevenueChart.tsx +10 -10
- package/corpus/templates/analytics/app/components/dashboard/RevenueComparisonChart.tsx +6 -5
- package/corpus/templates/analytics/app/components/dashboard/TimeSeriesChart.tsx +9 -9
- package/corpus/templates/analytics/app/global.css +4 -0
- package/corpus/templates/analytics/app/lib/chart-theme.ts +13 -0
- package/corpus/templates/analytics/app/pages/adhoc/_shared/KpiChart.tsx +22 -24
- package/corpus/templates/analytics/changelog/2026-06-30-dashboard-charts-now-use-theme-aware-tooltip-and-grid-colors.md +6 -0
- package/corpus/templates/analytics/changelog/2026-06-30-fixed-ask-composer-spacing-so-the-chat-field-has-a-comfortab.md +6 -0
- package/corpus/templates/calendar/AGENTS.md +4 -0
- package/corpus/templates/calendar/actions/connect-google-calendar.ts +80 -0
- package/corpus/templates/calendar/changelog/2026-06-30-calendar-now-gives-the-agent-a-safe-google-connection-link-i.md +6 -0
- package/corpus/templates/calendar/server/plugins/agent-chat.ts +4 -0
- package/corpus/templates/content/AGENTS.md +9 -2
- package/corpus/templates/content/actions/_database-row-batch.ts +230 -0
- package/corpus/templates/content/actions/_database-utils.ts +17 -9
- package/corpus/templates/content/actions/_notion-action-utils.ts +26 -0
- package/corpus/templates/content/actions/connect-notion-status.ts +13 -4
- package/corpus/templates/content/actions/create-and-link-notion-page.ts +23 -0
- package/corpus/templates/content/actions/delete-database-items.ts +55 -0
- package/corpus/templates/content/actions/delete-document.ts +4 -4
- package/corpus/templates/content/actions/disconnect-notion.ts +16 -0
- package/corpus/templates/content/actions/duplicate-database-item.ts +1 -1
- package/corpus/templates/content/actions/duplicate-database-items.ts +191 -0
- package/corpus/templates/content/actions/link-notion-page.ts +10 -7
- package/corpus/templates/content/actions/list-notion-links.ts +3 -4
- package/corpus/templates/content/actions/pull-notion-page.ts +7 -9
- package/corpus/templates/content/actions/push-notion-page.ts +7 -9
- package/corpus/templates/content/actions/refresh-notion-sync-status.ts +24 -0
- package/corpus/templates/content/actions/resolve-notion-sync-conflict.ts +23 -0
- package/corpus/templates/content/actions/search-notion-pages.ts +67 -0
- package/corpus/templates/content/actions/unlink-notion-page.ts +23 -0
- package/corpus/templates/content/app/components/editor/BubbleToolbar.tsx +5 -5
- package/corpus/templates/content/app/components/editor/DocumentDatabase.tsx +27 -34
- package/corpus/templates/content/app/components/editor/DocumentEditor.tsx +16 -13
- package/corpus/templates/content/app/components/editor/DocumentToolbar.tsx +10 -10
- package/corpus/templates/content/app/components/editor/NotionConflictBanner.tsx +1 -1
- package/corpus/templates/content/app/components/editor/NotionSyncBar.tsx +18 -9
- package/corpus/templates/content/app/components/editor/database/DatabaseView.tsx +27 -34
- package/corpus/templates/content/app/components/editor/database/navigation-state.ts +10 -4
- package/corpus/templates/content/app/components/sidebar/NotionButton.tsx +32 -17
- package/corpus/templates/content/app/global.css +6 -5
- package/corpus/templates/content/app/hooks/use-content-database.ts +35 -0
- package/corpus/templates/content/app/hooks/use-notion.ts +108 -99
- package/corpus/templates/content/changelog/2026-06-30-editor-floating-toolbars-now-use-theme-aware-colors-in-light.md +6 -0
- package/corpus/templates/content/package.json +3 -0
- package/corpus/templates/content/parity/README.md +69 -0
- package/corpus/templates/content/parity/eval-scenarios.ts +118 -0
- package/corpus/templates/content/parity/exceptions.allowlist.ts +17 -0
- package/corpus/templates/content/parity/matrix.md +28 -0
- package/corpus/templates/content/parity/matrix.ts +606 -0
- package/corpus/templates/content/parity/matrix.types.ts +42 -0
- package/corpus/templates/content/parity/parity-evals.eval.ts +4 -0
- package/corpus/templates/content/parity/render-matrix.ts +90 -0
- package/corpus/templates/content/parity/scenario-to-eval.ts +57 -0
- package/corpus/templates/content/shared/api.ts +11 -0
- package/corpus/templates/design/.agents/skills/visual-edit/SKILL.md +6 -1
- package/corpus/templates/design/actions/add-localhost-screens.ts +63 -8
- package/corpus/templates/design/actions/apply-motion-edit.ts +12 -46
- package/corpus/templates/design/actions/list-design-native-assets.ts +2 -1
- package/corpus/templates/design/actions/migrate-board-objects-to-file.ts +49 -1
- package/corpus/templates/design/actions/navigate.ts +3 -12
- package/corpus/templates/design/actions/open-visual-edit.ts +341 -0
- package/corpus/templates/design/actions/view-screen.ts +1 -1
- package/corpus/templates/design/app/components/design/CanvasContextMenu.tsx +1 -1
- package/corpus/templates/design/app/components/design/DesignCanvas.tsx +345 -14
- package/corpus/templates/design/app/components/design/DesignEditorSkeleton.tsx +71 -91
- package/corpus/templates/design/app/components/design/DesignExtensionsPanel.tsx +25 -27
- package/corpus/templates/design/app/components/design/DeviceFrame.tsx +1 -1
- package/corpus/templates/design/app/components/design/DrawOverlay.tsx +2 -2
- package/corpus/templates/design/app/components/design/EditPanel.tsx +1111 -570
- package/corpus/templates/design/app/components/design/LayersPanel.tsx +162 -32
- package/corpus/templates/design/app/components/design/MotionDock.tsx +268 -240
- package/corpus/templates/design/app/components/design/MultiScreenCanvas.tsx +1038 -150
- package/corpus/templates/design/app/components/design/QuestionFlow.tsx +1 -1
- package/corpus/templates/design/app/components/design/ReviewPanel.tsx +81 -102
- package/corpus/templates/design/app/components/design/StatesPanel.tsx +6 -6
- package/corpus/templates/design/app/components/design/TokensPanel.tsx +11 -11
- package/corpus/templates/design/app/components/design/TweaksPanel.tsx +9 -7
- package/corpus/templates/design/app/components/design/bridge/editor-chrome.bridge.ts +1129 -155
- package/corpus/templates/design/app/components/design/bridge/hit-test.bridge.ts +130 -37
- package/corpus/templates/design/app/components/design/canvas-primitive-style.ts +24 -11
- package/corpus/templates/design/app/components/design/inspector/AutoLayoutMatrix.tsx +184 -162
- package/corpus/templates/design/app/components/design/inspector/ConstraintsWidget.tsx +137 -79
- package/corpus/templates/design/app/components/design/inspector/DesignColorPicker.tsx +13 -13
- package/corpus/templates/design/app/components/design/inspector/ExportSettingsPanel.tsx +8 -8
- package/corpus/templates/design/app/components/design/inspector/GradientEditor.tsx +2 -2
- package/corpus/templates/design/app/components/design/inspector/ImageFillControls.tsx +4 -4
- package/corpus/templates/design/app/components/design/inspector/InspectorAiActions.tsx +3 -3
- package/corpus/templates/design/app/components/design/inspector/ScrubInput.tsx +13 -7
- package/corpus/templates/design/app/components/design/inspector/ShaderControls.tsx +14 -11
- package/corpus/templates/design/app/components/design/inspector/ShaderFillsPanel.tsx +4 -4
- package/corpus/templates/design/app/components/design/inspector/index.ts +2 -0
- package/corpus/templates/design/app/components/design/types.ts +19 -0
- package/corpus/templates/design/app/components/editor/PromptDialog.tsx +61 -78
- package/corpus/templates/design/app/components/layout/Header.tsx +0 -1
- package/corpus/templates/design/app/components/layout/Layout.tsx +3 -2
- package/corpus/templates/design/app/components/layout/Sidebar.tsx +0 -2
- package/corpus/templates/design/app/components/visual-editor/CanvasCommentPins.tsx +5 -4
- package/corpus/templates/design/app/components/visual-editor/DrawOverlay.tsx +1 -1
- package/corpus/templates/design/app/components/visual-editor/SaveStatusIndicator.tsx +2 -2
- package/corpus/templates/design/app/global.css +56 -0
- package/corpus/templates/design/app/hooks/use-agent-generating.ts +4 -5
- package/corpus/templates/design/app/hooks/use-navigation-state.ts +6 -7
- package/corpus/templates/design/app/hooks/use-question-flow.ts +3 -2
- package/corpus/templates/design/app/hooks/useAgentEditRequest.ts +6 -4
- package/corpus/templates/design/app/i18n/zh-TW.ts +5 -14
- package/corpus/templates/design/app/i18n-data.ts +63 -188
- package/corpus/templates/design/app/lib/agent-chat.ts +13 -0
- package/corpus/templates/design/app/pages/DesignEditor.tsx +1428 -384
- package/corpus/templates/design/app/pages/DesignSystemSetup.tsx +9 -5
- package/corpus/templates/design/app/pages/DesignSystems.tsx +2 -2
- package/corpus/templates/design/app/pages/Index.tsx +49 -26
- package/corpus/templates/design/app/pages/NotFound.tsx +25 -8
- package/corpus/templates/design/app/pages/VisualEdit.tsx +17 -5
- package/corpus/templates/design/app/routes/examples.tsx +1 -7
- package/corpus/templates/design/app/routes/templates.tsx +7 -4
- package/corpus/templates/design/changelog/2026-06-30-board-shapes-and-auto-layout-controls-are-clearer.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-component-selections-now-use-purple-component-chrome-and-sho.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-constraints-now-stay-tucked-into-a-compact-inspector-preview.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-creating-a-component-now-opens-in-a-compact-inspector-popove.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-design-cards-no-longer-show-legacy-project-type-badges.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-design-chat-now-keeps-new-turns-in-the-visible-design-agent-.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-design-editor-panels-now-keep-their-compact-text-sizing-cons.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-design-no-longer-shows-the-connected-local-code-warning-bann.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-design-now-opens-to-the-files-panel-unless-a-generation-is-a.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-design-opens-with-a-cleaner-empty-canvas-and-loading-preview.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-design-tools-use-simpler-less-decorative-icons.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-dragging-absolute-elements-no-longer-shows-coordinate-labels.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-fixed-all-screens-opening-too-zoomed-in-by-default.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-fixed-the-public-design-assets-sidebar-so-native-components-.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-fixed-the-screen-overview-board-so-empty-board-space-no-long.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-full-view-screens-can-now-scroll-while-remaining-editable.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-inspector-element-headers-show-the-selected-html-tag-and-the.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-inspector-inputs-stay-compact-across-desktop-breakpoints.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-layers-can-be-multi-selected-from-the-canvas-and-edited-toge.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-local-visual-edit-links-can-edit-localhost-frames-without-si.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-localhost-visual-edit-frames-can-now-be-selected-and-edited.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-marquee-selection-now-works-inside-screens-multi-selected-la.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-motion-is-now-available-from-the-persistent-left-rail-and-th.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-motion-timeline-collapse-and-reopen-animations-feel-smoother.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-multi-select-outlines-now-stay-consistent-across-all-screens.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-new-board-shapes-now-start-with-neutral-gray-styling.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-new-designs-open-into-a-steadier-loading-state-before-the-ed.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-new-designs-show-a-loading-state-during-handoff-and-keep-edi.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-public-visual-edit-design-links-now-open-directly-instead-of.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-removed-the-confusing-states-section-from-the-design-editor-.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-removed-the-templates-gallery-from-design-navigation.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-share-stays-visible-as-soon-as-editable-designs-load.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-signed-out-save-and-share-controls-use-simpler-labels-and-op.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-text-added-on-the-canvas-now-focuses-cleanly-with-the-right-.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-the-design-editor-loading-skeleton-is-simpler-and-its-bottom.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-the-design-editor-loading-skeleton-now-follows-the-current-t.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-the-design-inspector-no-longer-shows-child-layout-controls-o.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-the-design-inspector-no-longer-shows-the-ask-ai-section-abov.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-the-design-review-panel-no-longer-shows-a-separate-inline-au.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-the-empty-designs-page-now-focuses-on-a-single-primary-new-d.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-the-layers-panel-header-stays-as-layers-while-multiple-items.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-the-missing-design-screen-now-uses-a-neutral-back-button.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-the-motion-timeline-now-closes-without-squeezing-the-canvas-.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-the-new-design-connect-ai-setup-now-lines-up-with-the-compos.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-the-screen-overview-board-now-blends-into-the-canvas-and-new.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-top-level-canvas-drops-now-show-screen-guides.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-top-level-canvas-layers-now-keep-a-transparent-backdrop-and-.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-top-level-canvas-layers-now-select-reliably-from-all-screens.md +6 -0
- package/corpus/templates/design/changelog/2026-06-30-visual-edit-can-open-and-refresh-localhost-screens-in-one-au.md +6 -0
- package/corpus/templates/design/e2e/helpers.ts +15 -4
- package/corpus/templates/design/server/db/index.ts +52 -0
- package/corpus/templates/design/server/plugins/agent-chat.ts +5 -0
- package/corpus/templates/design/server/plugins/auth.ts +1 -0
- package/corpus/templates/design/server/plugins/core-routes.ts +4 -0
- package/corpus/templates/design/shared/board-file.ts +380 -5
- package/corpus/templates/design/shared/board-objects.ts +2 -2
- package/corpus/templates/design/shared/code-layer.ts +50 -6
- package/corpus/templates/design/shared/motion-compiler.ts +27 -0
- package/corpus/templates/macros/app/components/DailyProgress.tsx +41 -37
- package/corpus/templates/macros/app/components/ExerciseCard.tsx +2 -2
- package/corpus/templates/macros/app/components/MealCard.tsx +2 -2
- package/corpus/templates/macros/app/components/VoiceDictation.tsx +1 -1
- package/corpus/templates/macros/app/components/WeeklyCaloriesChart.tsx +1 -1
- package/corpus/templates/macros/app/components/WeightCard.tsx +2 -2
- package/corpus/templates/macros/app/components/WeightTracker.tsx +1 -1
- package/corpus/templates/macros/app/components/layout/AppLayout.tsx +1 -1
- package/corpus/templates/macros/app/routes/_index.tsx +5 -5
- package/corpus/templates/macros/app/routes/analytics.tsx +1 -1
- package/corpus/templates/macros/changelog/2026-06-30-dashboard-loading-and-chart-surfaces-now-use-theme-aware-col.md +6 -0
- package/corpus/templates/mail/app/components/email/ComposeBubbleToolbar.tsx +14 -11
- package/corpus/templates/mail/app/global.css +3 -2
- package/corpus/templates/mail/changelog/2026-06-30-compose-floating-toolbars-now-use-theme-aware-colors-in-ligh.md +6 -0
- package/corpus/templates/plan/app/pages/PlansPage.tsx +2 -2
- package/corpus/templates/slides/app/components/deck/DeckCard.tsx +3 -3
- package/corpus/templates/slides/app/global.css +10 -0
- package/corpus/templates/slides/app/pages/Index.tsx +55 -51
- package/corpus/templates/slides/changelog/2026-06-30-deck-thumbnails-collapse-cleanly-to-one-column-when-the-chat.md +6 -0
- package/dist/agent/engine/anthropic-engine.d.ts +2 -2
- package/dist/agent/engine/anthropic-engine.d.ts.map +1 -1
- package/dist/agent/engine/builder-engine.d.ts +2 -2
- package/dist/agent/engine/builder-engine.d.ts.map +1 -1
- package/dist/agent/engine/builtin.js +1 -1
- package/dist/agent/engine/builtin.js.map +1 -1
- package/dist/agent/engine/output-tokens.js +1 -1
- package/dist/agent/engine/output-tokens.js.map +1 -1
- package/dist/agent/harness/acp-adapter.d.ts +4 -1
- package/dist/agent/harness/acp-adapter.d.ts.map +1 -1
- package/dist/agent/harness/acp-adapter.js +19 -2
- package/dist/agent/harness/acp-adapter.js.map +1 -1
- package/dist/agent/harness/ai-sdk-adapter.d.ts.map +1 -1
- package/dist/agent/harness/ai-sdk-adapter.js +3 -0
- package/dist/agent/harness/ai-sdk-adapter.js.map +1 -1
- package/dist/agent/harness/translate.d.ts.map +1 -1
- package/dist/agent/harness/translate.js +3 -0
- package/dist/agent/harness/translate.js.map +1 -1
- package/dist/agent/harness/types.d.ts +1 -0
- package/dist/agent/harness/types.d.ts.map +1 -1
- package/dist/agent/harness/types.js.map +1 -1
- package/dist/agent/model-config.d.ts +21 -20
- package/dist/agent/model-config.d.ts.map +1 -1
- package/dist/agent/model-config.js +31 -13
- package/dist/agent/model-config.js.map +1 -1
- package/dist/agent/production-agent.d.ts.map +1 -1
- package/dist/agent/production-agent.js +85 -10
- package/dist/agent/production-agent.js.map +1 -1
- package/dist/agent/thread-data-builder.d.ts.map +1 -1
- package/dist/agent/thread-data-builder.js +27 -6
- package/dist/agent/thread-data-builder.js.map +1 -1
- package/dist/agent/tool-call-journal.d.ts +11 -9
- package/dist/agent/tool-call-journal.d.ts.map +1 -1
- package/dist/agent/tool-call-journal.js +92 -40
- package/dist/agent/tool-call-journal.js.map +1 -1
- package/dist/agent/types.d.ts +5 -1
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/agent/types.js.map +1 -1
- package/dist/cli/design-connect.d.ts.map +1 -1
- package/dist/cli/design-connect.js +84 -0
- package/dist/cli/design-connect.js.map +1 -1
- package/dist/cli/gateway-helpers.d.ts +4 -0
- package/dist/cli/gateway-helpers.d.ts.map +1 -1
- package/dist/cli/gateway-helpers.js +9 -0
- package/dist/cli/gateway-helpers.js.map +1 -1
- package/dist/cli/recap.d.ts.map +1 -1
- package/dist/cli/recap.js +0 -2
- package/dist/cli/recap.js.map +1 -1
- package/dist/cli/skills.d.ts.map +1 -1
- package/dist/cli/skills.js +54 -16
- package/dist/cli/skills.js.map +1 -1
- package/dist/cli/workspace-dev.d.ts.map +1 -1
- package/dist/cli/workspace-dev.js +33 -6
- package/dist/cli/workspace-dev.js.map +1 -1
- package/dist/client/AssistantChat.d.ts.map +1 -1
- package/dist/client/AssistantChat.js +72 -26
- package/dist/client/AssistantChat.js.map +1 -1
- package/dist/client/DefaultSpinner.d.ts.map +1 -1
- package/dist/client/DefaultSpinner.js +8 -1
- package/dist/client/DefaultSpinner.js.map +1 -1
- package/dist/client/chat/message-components.d.ts +7 -1
- package/dist/client/chat/message-components.d.ts.map +1 -1
- package/dist/client/chat/message-components.js +37 -1
- package/dist/client/chat/message-components.js.map +1 -1
- package/dist/client/chat/repo-helpers.d.ts +1 -0
- package/dist/client/chat/repo-helpers.d.ts.map +1 -1
- package/dist/client/chat/repo-helpers.js +59 -0
- package/dist/client/chat/repo-helpers.js.map +1 -1
- package/dist/client/chat/run-recovery.d.ts.map +1 -1
- package/dist/client/chat/run-recovery.js +4 -4
- package/dist/client/chat/run-recovery.js.map +1 -1
- package/dist/client/components/ApiKeySettings.js +8 -8
- package/dist/client/components/ApiKeySettings.js.map +1 -1
- package/dist/client/components/CodeRequiredDialog.d.ts.map +1 -1
- package/dist/client/components/CodeRequiredDialog.js +24 -15
- package/dist/client/components/CodeRequiredDialog.js.map +1 -1
- package/dist/client/components/MissingKeyCard.d.ts.map +1 -1
- package/dist/client/components/MissingKeyCard.js +11 -6
- package/dist/client/components/MissingKeyCard.js.map +1 -1
- package/dist/client/composer/TiptapComposer.d.ts.map +1 -1
- package/dist/client/composer/TiptapComposer.js +4 -3
- package/dist/client/composer/TiptapComposer.js.map +1 -1
- package/dist/client/extensions/ExtensionsSidebarSection.d.ts.map +1 -1
- package/dist/client/extensions/ExtensionsSidebarSection.js +1 -1
- package/dist/client/extensions/ExtensionsSidebarSection.js.map +1 -1
- package/dist/client/guided-questions.d.ts.map +1 -1
- package/dist/client/guided-questions.js +6 -6
- package/dist/client/guided-questions.js.map +1 -1
- package/dist/client/integrations/IntegrationCard.js +1 -1
- package/dist/client/integrations/IntegrationCard.js.map +1 -1
- package/dist/client/integrations/IntegrationsPanel.js +1 -1
- package/dist/client/integrations/IntegrationsPanel.js.map +1 -1
- package/dist/client/onboarding/OnboardingBanner.js +2 -2
- package/dist/client/onboarding/OnboardingBanner.js.map +1 -1
- package/dist/client/onboarding/OnboardingPanel.js +23 -19
- package/dist/client/onboarding/OnboardingPanel.js.map +1 -1
- package/dist/client/resources/ResourceEditor.d.ts.map +1 -1
- package/dist/client/resources/ResourceEditor.js +13 -10
- package/dist/client/resources/ResourceEditor.js.map +1 -1
- package/dist/client/resources/ResourcesPanel.d.ts.map +1 -1
- package/dist/client/resources/ResourcesPanel.js +2 -1
- package/dist/client/resources/ResourcesPanel.js.map +1 -1
- package/dist/client/settings/SettingsPanel.d.ts.map +1 -1
- package/dist/client/settings/SettingsPanel.js +8 -3
- package/dist/client/settings/SettingsPanel.js.map +1 -1
- package/dist/client/settings/useBuilderStatus.d.ts.map +1 -1
- package/dist/client/settings/useBuilderStatus.js +6 -38
- package/dist/client/settings/useBuilderStatus.js.map +1 -1
- package/dist/client/useProductionAgent.d.ts +2 -1
- package/dist/client/useProductionAgent.d.ts.map +1 -1
- package/dist/client/useProductionAgent.js.map +1 -1
- package/dist/collab/awareness.d.ts +2 -2
- package/dist/collab/awareness.d.ts.map +1 -1
- package/dist/collab/routes.d.ts +1 -1
- package/dist/deploy/build.js +1 -1
- package/dist/deploy/build.js.map +1 -1
- package/dist/eval/define-eval.d.ts.map +1 -1
- package/dist/eval/define-eval.js +2 -1
- package/dist/eval/define-eval.js.map +1 -1
- package/dist/eval/report.d.ts.map +1 -1
- package/dist/eval/report.js +19 -4
- package/dist/eval/report.js.map +1 -1
- package/dist/eval/runner.d.ts.map +1 -1
- package/dist/eval/runner.js +38 -6
- package/dist/eval/runner.js.map +1 -1
- package/dist/eval/types.d.ts +11 -0
- package/dist/eval/types.d.ts.map +1 -1
- package/dist/eval/types.js.map +1 -1
- package/dist/file-upload/actions/upload-image.d.ts +2 -2
- package/dist/notifications/routes.d.ts +3 -3
- package/dist/observability/routes.d.ts +5 -5
- package/dist/observability/traces.d.ts.map +1 -1
- package/dist/observability/traces.js.map +1 -1
- package/dist/onboarding/default-steps.js +1 -1
- package/dist/onboarding/default-steps.js.map +1 -1
- package/dist/progress/routes.d.ts +1 -1
- package/dist/resources/handlers.d.ts +1 -1
- package/dist/scripts/agent-engines/manage-agent-engine.js +1 -1
- package/dist/scripts/agent-engines/manage-agent-engine.js.map +1 -1
- package/dist/scripts/agent-engines/set-agent-engine.js +1 -1
- package/dist/scripts/agent-engines/set-agent-engine.js.map +1 -1
- package/dist/server/agent-chat-plugin.d.ts +3 -0
- package/dist/server/agent-chat-plugin.d.ts.map +1 -1
- package/dist/server/agent-chat-plugin.js +134 -72
- package/dist/server/agent-chat-plugin.js.map +1 -1
- package/dist/server/core-routes-plugin.d.ts +3 -0
- package/dist/server/core-routes-plugin.d.ts.map +1 -1
- package/dist/server/core-routes-plugin.js +4 -1
- package/dist/server/core-routes-plugin.js.map +1 -1
- package/dist/server/open-route.d.ts +9 -0
- package/dist/server/open-route.d.ts.map +1 -1
- package/dist/server/open-route.js +48 -38
- package/dist/server/open-route.js.map +1 -1
- package/dist/shared/reasoning-effort.js +3 -0
- package/dist/shared/reasoning-effort.js.map +1 -1
- package/dist/sharing/access.d.ts.map +1 -1
- package/dist/sharing/access.js +18 -2
- package/dist/sharing/access.js.map +1 -1
- package/dist/sharing/registry.d.ts +10 -0
- package/dist/sharing/registry.d.ts.map +1 -1
- package/dist/sharing/registry.js.map +1 -1
- package/dist/styles/agent-native.css +104 -20
- package/dist/styles/rich-markdown-editor.css +11 -10
- package/docs/content/cloneable-saas.mdx +2 -2
- package/docs/content/evals.mdx +34 -12
- package/docs/content/faq.mdx +1 -1
- package/docs/content/locales/ar-SA/cloneable-saas.mdx +2 -2
- package/docs/content/locales/ar-SA/evals.mdx +7 -0
- package/docs/content/locales/ar-SA/faq.mdx +1 -1
- package/docs/content/locales/ar-SA/template-chat.mdx +1 -1
- package/docs/content/locales/de-DE/cloneable-saas.mdx +2 -2
- package/docs/content/locales/de-DE/evals.mdx +8 -0
- package/docs/content/locales/de-DE/faq.mdx +1 -1
- package/docs/content/locales/de-DE/template-chat.mdx +1 -1
- package/docs/content/locales/es-ES/cloneable-saas.mdx +2 -2
- package/docs/content/locales/es-ES/evals.mdx +8 -0
- package/docs/content/locales/es-ES/faq.mdx +1 -1
- package/docs/content/locales/es-ES/template-chat.mdx +1 -1
- package/docs/content/locales/fr-FR/cloneable-saas.mdx +2 -2
- package/docs/content/locales/fr-FR/evals.mdx +8 -0
- package/docs/content/locales/fr-FR/faq.mdx +1 -1
- package/docs/content/locales/fr-FR/template-chat.mdx +1 -1
- package/docs/content/locales/hi-IN/cloneable-saas.mdx +2 -2
- package/docs/content/locales/hi-IN/evals.mdx +8 -0
- package/docs/content/locales/hi-IN/faq.mdx +1 -1
- package/docs/content/locales/hi-IN/template-chat.mdx +1 -1
- package/docs/content/locales/ja-JP/cloneable-saas.mdx +2 -2
- package/docs/content/locales/ja-JP/evals.mdx +7 -0
- package/docs/content/locales/ja-JP/faq.mdx +1 -1
- package/docs/content/locales/ja-JP/template-chat.mdx +1 -1
- package/docs/content/locales/ko-KR/cloneable-saas.mdx +2 -2
- package/docs/content/locales/ko-KR/evals.mdx +7 -0
- package/docs/content/locales/ko-KR/faq.mdx +1 -1
- package/docs/content/locales/ko-KR/template-chat.mdx +1 -1
- package/docs/content/locales/pt-BR/cloneable-saas.mdx +2 -2
- package/docs/content/locales/pt-BR/evals.mdx +8 -0
- package/docs/content/locales/pt-BR/faq.mdx +1 -1
- package/docs/content/locales/pt-BR/template-chat.mdx +1 -1
- package/docs/content/locales/zh-CN/cloneable-saas.mdx +2 -2
- package/docs/content/locales/zh-CN/evals.mdx +7 -0
- package/docs/content/locales/zh-CN/faq.mdx +1 -1
- package/docs/content/locales/zh-CN/template-chat.mdx +1 -1
- package/docs/content/locales/zh-TW/cloneable-saas.mdx +2 -2
- package/docs/content/locales/zh-TW/evals.mdx +7 -0
- package/docs/content/locales/zh-TW/faq.mdx +1 -1
- package/docs/content/locales/zh-TW/template-chat.mdx +1 -1
- package/docs/content/template-chat.mdx +1 -1
- package/package.json +1 -1
- package/corpus/templates/content/server/routes/api/notion/disconnect.post.ts +0 -12
- package/corpus/templates/design/app/components/design/LocalSourceEditBanner.tsx +0 -157
- package/corpus/templates/design/app/lib/design-templates.ts +0 -1305
- package/corpus/templates/design/app/pages/Templates.tsx +0 -279
|
@@ -30,9 +30,9 @@ Cada um é um aplicativo real que você pode usar hoje e a plataforma de lançam
|
|
|
30
30
|
| [**Plan**](/docs/template-plan) | Planos visuais e recapitulações de relações públicas com diagramas, wireframes e anotações. |
|
|
31
31
|
| [**Dispatch**](/docs/template-dispatch) | O plano de controle do espaço de trabalho: segredos compartilhados, integrações reutilizáveis, Slack/Telegram, trabalhos agendados. |
|
|
32
32
|
|
|
33
|
-
Não quer um
|
|
33
|
+
Não quer um app de domínio? Use [Chat](/docs/template-chat) quando quiser um aplicativo básico com o qual os usuários possam conversar imediatamente, ou comece com uma ação em [Pure-Agent Apps](/docs/pure-agent-apps).
|
|
34
34
|
|
|
35
|
-
Veja o catálogo completo em [
|
|
35
|
+
Veja o catálogo completo em [Apps](/apps) ou vá direto para um. Por exemplo, [Dispatch](/docs/template-dispatch) é um ótimo lugar para começar se você quiser um aplicativo estilo espaço de trabalho.
|
|
36
36
|
|
|
37
37
|
## O que você ganha imediatamente {#what-you-get}
|
|
38
38
|
|
|
@@ -231,6 +231,14 @@ Códigos de saída:
|
|
|
231
231
|
| `1` | Pelo menos uma avaliação com pontuação abaixo do limite ou o conjunto apresentou erro. |
|
|
232
232
|
| `2` | Argumentos incorretos (por exemplo, `--threshold` fora de `[0, 1]`). |
|
|
233
233
|
|
|
234
|
+
### Ignorar evals gated {#skipping}
|
|
235
|
+
|
|
236
|
+
Use `skipReason` quando uma suíte de evals for intencionalmente reservada para
|
|
237
|
+
execução manual, noturna ou dependente de secrets. Evals ignorados não executam
|
|
238
|
+
o agente nem os scorers, não fazem a suíte falhar e aparecem no JSON com
|
|
239
|
+
`status: "skipped"` e `skipReason`. Mantenha cobertura determinística barata no
|
|
240
|
+
CI normal de PR.
|
|
241
|
+
|
|
234
242
|
### Como porta de implantação de CI {#ci}
|
|
235
243
|
|
|
236
244
|
Adicione-o ao pipeline executado antes da implantação:
|
|
@@ -116,7 +116,7 @@ Não. Você não treina modelos, não ajusta ou lida com incorporações. Você
|
|
|
116
116
|
|
|
117
117
|
### Posso migrar um aplicativo existente para agente nativo? {#can-i-use-existing-code}
|
|
118
118
|
|
|
119
|
-
Você pode, mas o agente nativo funciona melhor quando construído do zero. A arquitetura – banco de dados compartilhado, sincronização de polling, actions, estado do aplicativo – precisa ser totalmente integrada. Começar a partir de um
|
|
119
|
+
Você pode, mas o agente nativo funciona melhor quando construído do zero. A arquitetura – banco de dados compartilhado, sincronização de polling, actions, estado do aplicativo – precisa ser totalmente integrada. Começar a partir de um app e personalizá-lo é o caminho recomendado. Pense nisso como a mudança do desktop para o mobile: você _pode_ fazer o retrofit, mas construir nativo é melhor.
|
|
120
120
|
|
|
121
121
|
## Modelos e o que você pode construir {#templates}
|
|
122
122
|
|
|
@@ -13,7 +13,7 @@ Se você deseja o menor tempo de execução somente de ação sem navegador UI,
|
|
|
13
13
|
<Screen
|
|
14
14
|
surface="desktop"
|
|
15
15
|
html={
|
|
16
|
-
"<div style='min-height:560px;box-sizing:border-box;display:flex;align-items:center;justify-content:center;padding:56px 40px'><div style='display:flex;flex-direction:column;align-items:center;justify-content:center;gap:28px;width:min(700px,92%);min-height:430px'><div style='height:34px'></div><div style='text-align:center'><h1 style='margin:0'>Como posso ajudar?</h1><p class='wf-muted' style='margin:10px 0 0'>Converse sobre qualquer coisa. Adicione ações, componentes, páginas, jobs ou seu próprio backend.</p></div><div class='wf-card' style='width:100%;min-height:150px;display:flex;flex-direction:column;gap:18px'><span class='wf-muted'>Envie mensagem ao agente...</span><div style='flex:1'></div><div style='display:flex;align-items:center;gap:10px'><span data-icon='plus' aria-label='Attach'></span><div style='flex:1'></div><span class='wf-pill'>Sonnet
|
|
16
|
+
"<div style='min-height:560px;box-sizing:border-box;display:flex;align-items:center;justify-content:center;padding:56px 40px'><div style='display:flex;flex-direction:column;align-items:center;justify-content:center;gap:28px;width:min(700px,92%);min-height:430px'><div style='height:34px'></div><div style='text-align:center'><h1 style='margin:0'>Como posso ajudar?</h1><p class='wf-muted' style='margin:10px 0 0'>Converse sobre qualquer coisa. Adicione ações, componentes, páginas, jobs ou seu próprio backend.</p></div><div class='wf-card' style='width:100%;min-height:150px;display:flex;flex-direction:column;gap:18px'><span class='wf-muted'>Envie mensagem ao agente...</span><div style='flex:1'></div><div style='display:flex;align-items:center;gap:10px'><span data-icon='plus' aria-label='Attach'></span><div style='flex:1'></div><span class='wf-pill'>Sonnet 5 · Padrão</span><span class='wf-pill'>Act</span><button class='primary'>↑</button></div></div><div style='height:34px'></div></div></div>"
|
|
17
17
|
}
|
|
18
18
|
/>
|
|
19
19
|
</WireframeBlock>
|
|
@@ -30,9 +30,9 @@ description: "分叉一个可用的 SaaS 产品并使其成为您的产品 - 包
|
|
|
30
30
|
| [**Plan**](/docs/template-plan) | 带有图表、线框图和注释的视觉计划和公关概述。 |
|
|
31
31
|
| [**Dispatch**](/docs/template-dispatch) | 工作区控制平面:共享秘密、可重用集成、Slack/Telegram、计划作业。 |
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
不需要域应用?当您想要一个用户可以立即交谈的基本应用程序时,请使用 [Chat](/docs/template-chat),或者从 [Pure-Agent Apps](/docs/pure-agent-apps) 中的一个操作开始。
|
|
34
34
|
|
|
35
|
-
查看 [
|
|
35
|
+
查看 [Apps](/apps) 下的完整目录,或直接跳到其中一个 - 例如,如果您想要一款工作区风格的应用,[Dispatch](/docs/template-dispatch) 是一个很好的起点。
|
|
36
36
|
|
|
37
37
|
## 开箱即用的东西 {#what-you-get}
|
|
38
38
|
|
|
@@ -229,6 +229,13 @@ agent-native eval --threshold 0.8 # override every eval's pass threshold (0..
|
|
|
229
229
|
| `1` | 至少有一项评估得分低于阈值,或者套件出错。 |
|
|
230
230
|
| `2` | 错误的参数(例如 `--threshold` 位于 `[0, 1]` 之外)。 |
|
|
231
231
|
|
|
232
|
+
### 跳过受控评估 {#skipping}
|
|
233
|
+
|
|
234
|
+
当某个评估套件只应在手动、夜间或具备密钥的环境中运行时,请使用
|
|
235
|
+
`skipReason`。被跳过的评估不会运行代理或 scorer,不会让套件失败,并会
|
|
236
|
+
在 JSON 输出中显示 `status: "skipped"` 和 `skipReason`。廉价的确定性覆
|
|
237
|
+
盖应保留在普通 PR CI 中。
|
|
238
|
+
|
|
232
239
|
### 作为 CI 部署门 {#ci}
|
|
233
240
|
|
|
234
241
|
将其添加到部署之前运行的管道:
|
|
@@ -114,7 +114,7 @@ Anthropic Claude、OpenAI(GPT-5 系列)、Google Gemini 以及使用 OpenAI
|
|
|
114
114
|
|
|
115
115
|
### 我可以将现有应用迁移到代理原生吗? {#can-i-use-existing-code}
|
|
116
116
|
|
|
117
|
-
可以,但是从头开始构建原生代理效果最好。架构——共享数据库、轮询同步、actions
|
|
117
|
+
可以,但是从头开始构建原生代理效果最好。架构——共享数据库、轮询同步、actions、应用程序状态——需要始终集成。从应用开始并自定义它是推荐的路径。可以把它想象成从桌面优先到移动优先的转变:你*可以*改造,但构建原生更好。
|
|
118
118
|
|
|
119
119
|
## 模板以及您可以构建的内容 {#templates}
|
|
120
120
|
|
|
@@ -13,7 +13,7 @@ description: "一个最小的聊天优先代理本机应用程序:持久的聊
|
|
|
13
13
|
<Screen
|
|
14
14
|
surface="desktop"
|
|
15
15
|
html={
|
|
16
|
-
"<div style='min-height:560px;box-sizing:border-box;display:flex;align-items:center;justify-content:center;padding:56px 40px'><div style='display:flex;flex-direction:column;align-items:center;justify-content:center;gap:28px;width:min(700px,92%);min-height:430px'><div style='height:34px'></div><div style='text-align:center'><h1 style='margin:0'>我能帮什么?</h1><p class='wf-muted' style='margin:10px 0 0'>聊任何事情。添加 actions、组件、页面、任务或你自己的后端。</p></div><div class='wf-card' style='width:100%;min-height:150px;display:flex;flex-direction:column;gap:18px'><span class='wf-muted'>给代理发消息...</span><div style='flex:1'></div><div style='display:flex;align-items:center;gap:10px'><span data-icon='plus' aria-label='Attach'></span><div style='flex:1'></div><span class='wf-pill'>Sonnet
|
|
16
|
+
"<div style='min-height:560px;box-sizing:border-box;display:flex;align-items:center;justify-content:center;padding:56px 40px'><div style='display:flex;flex-direction:column;align-items:center;justify-content:center;gap:28px;width:min(700px,92%);min-height:430px'><div style='height:34px'></div><div style='text-align:center'><h1 style='margin:0'>我能帮什么?</h1><p class='wf-muted' style='margin:10px 0 0'>聊任何事情。添加 actions、组件、页面、任务或你自己的后端。</p></div><div class='wf-card' style='width:100%;min-height:150px;display:flex;flex-direction:column;gap:18px'><span class='wf-muted'>给代理发消息...</span><div style='flex:1'></div><div style='display:flex;align-items:center;gap:10px'><span data-icon='plus' aria-label='Attach'></span><div style='flex:1'></div><span class='wf-pill'>Sonnet 5 · 自动</span><span class='wf-pill'>Act</span><button class='primary'>↑</button></div></div><div style='height:34px'></div></div></div>"
|
|
17
17
|
}
|
|
18
18
|
/>
|
|
19
19
|
</WireframeBlock>
|
|
@@ -30,9 +30,9 @@ description: "分叉一個可用的 SaaS 產品並使其成為您的產品 - 包
|
|
|
30
30
|
| [**Plan**](/docs/template-plan) | 帶有圖表、線框圖和註解的視覺計畫和 PR 概述。 |
|
|
31
31
|
| [**Dispatch**](/docs/template-dispatch) | 工作區控制平面:共用秘密、可重用整合、Slack/Telegram、計畫作業。 |
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
不需要域應用程式?當您想要一個使用者可以立即交談的基本應用程式時,請使用 [Chat](/docs/template-chat),或者從 [Pure-Agent Apps](/docs/pure-agent-apps) 中的一個操作開始。
|
|
34
34
|
|
|
35
|
-
檢視 [
|
|
35
|
+
檢視 [Apps](/apps) 下的完整目錄,或直接跳到其中一個 - 例如,如果您想要一款工作區風格的應用,[Dispatch](/docs/template-dispatch) 是一個很好的起點。
|
|
36
36
|
|
|
37
37
|
## 開箱即用的東西 {#what-you-get}
|
|
38
38
|
|
|
@@ -229,6 +229,13 @@ agent-native eval --threshold 0.8 # override every eval's pass threshold (0..
|
|
|
229
229
|
| `1` | 至少有一項評估得分低於閾值,或者套件出錯。 |
|
|
230
230
|
| `2` | 錯誤的參數(例如 `--threshold` 位於 `[0, 1]` 之外)。 |
|
|
231
231
|
|
|
232
|
+
### 跳過受控評估 {#skipping}
|
|
233
|
+
|
|
234
|
+
當某個評估套件只應在手動、夜間或具備密鑰的環境中執行時,請使用
|
|
235
|
+
`skipReason`。被跳過的評估不會執行代理或 scorer,不會讓套件失敗,並會
|
|
236
|
+
在 JSON 輸出中顯示 `status: "skipped"` 和 `skipReason`。廉價的確定性覆
|
|
237
|
+
蓋應保留在普通 PR CI 中。
|
|
238
|
+
|
|
232
239
|
### 作為 CI 部署門 {#ci}
|
|
233
240
|
|
|
234
241
|
將其新增到部署之前執行的管道:
|
|
@@ -114,7 +114,7 @@ Anthropic Claude、OpenAI(GPT-5 系列)、Google Gemini 以及使用 OpenAI
|
|
|
114
114
|
|
|
115
115
|
### 我可以將現有應用遷移到 Agent-Native 嗎? {#can-i-use-existing-code}
|
|
116
116
|
|
|
117
|
-
可以,但是從頭開始建置原生代理效果最好。架構——共用資料庫、輪詢同步、actions
|
|
117
|
+
可以,但是從頭開始建置原生代理效果最好。架構——共用資料庫、輪詢同步、actions、應用程式狀態——需要始終整合。從應用程式開始並自訂它是推薦的路徑。可以把它想象成從桌面優先到行動優先的轉變:你*可以*改造,但建置原生更好。
|
|
118
118
|
|
|
119
119
|
## 範本以及您可以建置的內容 {#templates}
|
|
120
120
|
|
|
@@ -13,7 +13,7 @@ description: "一個最小的聊天優先 Agent-Native 應用程式:持久的
|
|
|
13
13
|
<Screen
|
|
14
14
|
surface="desktop"
|
|
15
15
|
html={
|
|
16
|
-
"<div style='min-height:560px;box-sizing:border-box;display:flex;align-items:center;justify-content:center;padding:56px 40px'><div style='display:flex;flex-direction:column;align-items:center;justify-content:center;gap:28px;width:min(700px,92%);min-height:430px'><div style='height:34px'></div><div style='text-align:center'><h1 style='margin:0'>我能幫什麼?</h1><p class='wf-muted' style='margin:10px 0 0'>聊任何事情。新增 actions、元件、頁面、工作或你自己的後端。</p></div><div class='wf-card' style='width:100%;min-height:150px;display:flex;flex-direction:column;gap:18px'><span class='wf-muted'>給代理發訊息...</span><div style='flex:1'></div><div style='display:flex;align-items:center;gap:10px'><span data-icon='plus' aria-label='Attach'></span><div style='flex:1'></div><span class='wf-pill'>Sonnet
|
|
16
|
+
"<div style='min-height:560px;box-sizing:border-box;display:flex;align-items:center;justify-content:center;padding:56px 40px'><div style='display:flex;flex-direction:column;align-items:center;justify-content:center;gap:28px;width:min(700px,92%);min-height:430px'><div style='height:34px'></div><div style='text-align:center'><h1 style='margin:0'>我能幫什麼?</h1><p class='wf-muted' style='margin:10px 0 0'>聊任何事情。新增 actions、元件、頁面、工作或你自己的後端。</p></div><div class='wf-card' style='width:100%;min-height:150px;display:flex;flex-direction:column;gap:18px'><span class='wf-muted'>給代理發訊息...</span><div style='flex:1'></div><div style='display:flex;align-items:center;gap:10px'><span data-icon='plus' aria-label='Attach'></span><div style='flex:1'></div><span class='wf-pill'>Sonnet 5 · 自動</span><span class='wf-pill'>Act</span><button class='primary'>↑</button></div></div><div style='height:34px'></div></div></div>"
|
|
17
17
|
}
|
|
18
18
|
/>
|
|
19
19
|
</WireframeBlock>
|
|
@@ -13,7 +13,7 @@ If you want the smallest action-only runtime with no browser UI, start with [Pur
|
|
|
13
13
|
<Screen
|
|
14
14
|
surface="desktop"
|
|
15
15
|
html={
|
|
16
|
-
"<div style='min-height:560px;box-sizing:border-box;display:flex;align-items:center;justify-content:center;padding:56px 40px'><div style='display:flex;flex-direction:column;align-items:center;justify-content:center;gap:28px;width:min(700px,92%);min-height:430px'><div style='height:34px'></div><div style='text-align:center'><h1 style='margin:0'>How can I help?</h1><p class='wf-muted' style='margin:10px 0 0'>Chat about anything. Add actions, components, pages, jobs, or your own backend.</p></div><div class='wf-card' style='width:100%;min-height:150px;display:flex;flex-direction:column;gap:18px'><span class='wf-muted'>Message the agent...</span><div style='flex:1'></div><div style='display:flex;align-items:center;gap:10px'><span data-icon='plus' aria-label='Attach'></span><div style='flex:1'></div><span class='wf-pill'>Sonnet
|
|
16
|
+
"<div style='min-height:560px;box-sizing:border-box;display:flex;align-items:center;justify-content:center;padding:56px 40px'><div style='display:flex;flex-direction:column;align-items:center;justify-content:center;gap:28px;width:min(700px,92%);min-height:430px'><div style='height:34px'></div><div style='text-align:center'><h1 style='margin:0'>How can I help?</h1><p class='wf-muted' style='margin:10px 0 0'>Chat about anything. Add actions, components, pages, jobs, or your own backend.</p></div><div class='wf-card' style='width:100%;min-height:150px;display:flex;flex-direction:column;gap:18px'><span class='wf-muted'>Message the agent...</span><div style='flex:1'></div><div style='display:flex;align-items:center;gap:10px'><span data-icon='plus' aria-label='Attach'></span><div style='flex:1'></div><span class='wf-pill'>Sonnet 5 · Auto</span><span class='wf-pill'>Act</span><button class='primary'>↑</button></div></div><div style='height:34px'></div></div></div>"
|
|
17
17
|
}
|
|
18
18
|
/>
|
|
19
19
|
</WireframeBlock>
|
package/corpus/core/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agent-native/core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.84.1",
|
|
4
4
|
"description": "Framework for agent-native application development — where AI agents and UI share SQL state, actions, and context",
|
|
5
5
|
"homepage": "https://github.com/BuilderIO/agent-native#readme",
|
|
6
6
|
"bugs": {
|
|
@@ -96,7 +96,7 @@ export function registerBuiltinEngines(): void {
|
|
|
96
96
|
"Claude models through the Vercel AI SDK. Supports thinking and caching via AI SDK providerOptions.",
|
|
97
97
|
openai: "OpenAI GPT models via the Vercel AI SDK. Requires OPENAI_API_KEY.",
|
|
98
98
|
openrouter:
|
|
99
|
-
"300+ models from Anthropic, OpenAI, Google,
|
|
99
|
+
"300+ models from Anthropic, OpenAI, Google, Z.ai, and more routed through a single endpoint. Use model IDs like 'anthropic/claude-sonnet-5', 'openai/gpt-5.5', or 'z-ai/glm-5.2'. Requires OPENROUTER_API_KEY.",
|
|
100
100
|
google:
|
|
101
101
|
"Google Gemini models via the Vercel AI SDK. Requires GOOGLE_GENERATIVE_AI_API_KEY.",
|
|
102
102
|
groq: "Groq LPU inference via the Vercel AI SDK. Requires GROQ_API_KEY.",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const MIN_MAX_OUTPUT_TOKENS = 256;
|
|
2
|
-
// Raise the global clamp to 64K to support models like claude-sonnet-
|
|
2
|
+
// Raise the global clamp to 64K to support models like claude-sonnet-5
|
|
3
3
|
// (64K) and GPT-5.x (up to 128K). Callers can still set higher explicit
|
|
4
4
|
// per-call values; this clamp only applies when no explicit value is given.
|
|
5
5
|
const MAX_MAX_OUTPUT_TOKENS = 64_000;
|
|
@@ -171,6 +171,7 @@ class AcpHarnessSession implements AgentHarnessSession {
|
|
|
171
171
|
private queue: AsyncEventQueue<AgentHarnessEvent> | null = null;
|
|
172
172
|
private readonly pendingPermissions = new Map<string, PendingPermission>();
|
|
173
173
|
private readonly toolTitles = new Map<string, string>();
|
|
174
|
+
private readonly toolInputs = new Map<string, Record<string, unknown>>();
|
|
174
175
|
private approvalCounter = 0;
|
|
175
176
|
private stderrTail = "";
|
|
176
177
|
private childExited = false;
|
|
@@ -358,12 +359,20 @@ class AcpHarnessSession implements AgentHarnessSession {
|
|
|
358
359
|
if (update?.sessionUpdate === "tool_call" && update.title) {
|
|
359
360
|
this.toolTitles.set(update.toolCallId, update.title);
|
|
360
361
|
}
|
|
362
|
+
if (
|
|
363
|
+
(update?.sessionUpdate === "tool_call" ||
|
|
364
|
+
update?.sessionUpdate === "tool_call_update") &&
|
|
365
|
+
update.rawInput
|
|
366
|
+
) {
|
|
367
|
+
this.toolInputs.set(update.toolCallId, update.rawInput);
|
|
368
|
+
}
|
|
361
369
|
// Updates that arrive without an active turn are history replay from
|
|
362
370
|
// loadSession; the transcript already contains them, so drop them.
|
|
363
371
|
if (!this.queue) return;
|
|
364
|
-
for (const event of acpUpdateToHarnessEvents(update,
|
|
365
|
-
this.toolTitles.get(id),
|
|
366
|
-
|
|
372
|
+
for (const event of acpUpdateToHarnessEvents(update, {
|
|
373
|
+
titleFor: (id) => this.toolTitles.get(id),
|
|
374
|
+
inputFor: (id) => this.toolInputs.get(id),
|
|
375
|
+
})) {
|
|
367
376
|
this.queue.push(event);
|
|
368
377
|
}
|
|
369
378
|
}
|
|
@@ -488,8 +497,17 @@ function messageToText(content: string | unknown[]): string {
|
|
|
488
497
|
*/
|
|
489
498
|
export function acpUpdateToHarnessEvents(
|
|
490
499
|
update: AcpSessionUpdate,
|
|
491
|
-
|
|
500
|
+
resolvers?:
|
|
501
|
+
| ((toolCallId: string) => string | undefined)
|
|
502
|
+
| {
|
|
503
|
+
titleFor?: (toolCallId: string) => string | undefined;
|
|
504
|
+
inputFor?: (toolCallId: string) => Record<string, unknown> | undefined;
|
|
505
|
+
},
|
|
492
506
|
): AgentHarnessEvent[] {
|
|
507
|
+
const titleFor =
|
|
508
|
+
typeof resolvers === "function" ? resolvers : resolvers?.titleFor;
|
|
509
|
+
const inputFor =
|
|
510
|
+
typeof resolvers === "function" ? undefined : resolvers?.inputFor;
|
|
493
511
|
switch (update.sessionUpdate) {
|
|
494
512
|
case "agent_message_chunk": {
|
|
495
513
|
const text = acpContentBlockToText(update.content);
|
|
@@ -517,6 +535,9 @@ export function acpUpdateToHarnessEvents(
|
|
|
517
535
|
type: "tool-done",
|
|
518
536
|
id: update.toolCallId,
|
|
519
537
|
name: update.title || titleFor?.(update.toolCallId) || "tool",
|
|
538
|
+
...((update.rawInput ?? inputFor?.(update.toolCallId))
|
|
539
|
+
? { input: update.rawInput ?? inputFor?.(update.toolCallId) }
|
|
540
|
+
: {}),
|
|
520
541
|
result: update.rawOutput ?? acpToolContentText(update.content),
|
|
521
542
|
});
|
|
522
543
|
}
|
|
@@ -531,6 +552,9 @@ export function acpUpdateToHarnessEvents(
|
|
|
531
552
|
type: "tool-done",
|
|
532
553
|
id: update.toolCallId,
|
|
533
554
|
name: update.title || titleFor?.(update.toolCallId) || "tool",
|
|
555
|
+
...((update.rawInput ?? inputFor?.(update.toolCallId))
|
|
556
|
+
? { input: update.rawInput ?? inputFor?.(update.toolCallId) }
|
|
557
|
+
: {}),
|
|
534
558
|
result: update.rawOutput ?? acpToolContentText(content),
|
|
535
559
|
});
|
|
536
560
|
}
|
|
@@ -448,6 +448,9 @@ export function aiSdkHarnessPartToEvents(part: any): AgentHarnessEvent[] {
|
|
|
448
448
|
type: "tool-done",
|
|
449
449
|
id: part.toolCallId ?? part.id,
|
|
450
450
|
name: part.toolName ?? part.name ?? "tool",
|
|
451
|
+
...(part.input !== undefined || part.args !== undefined
|
|
452
|
+
? { input: part.input ?? part.args }
|
|
453
|
+
: {}),
|
|
451
454
|
result: part.output ?? part.result,
|
|
452
455
|
});
|
|
453
456
|
break;
|
|
@@ -32,6 +32,9 @@ export function agentHarnessEventToAgentChatEvents(
|
|
|
32
32
|
{
|
|
33
33
|
type: "tool_done",
|
|
34
34
|
tool: event.name,
|
|
35
|
+
...(event.input !== undefined
|
|
36
|
+
? { input: normalizeToolInput(event.input) }
|
|
37
|
+
: {}),
|
|
35
38
|
result: stringifyResult(event.result),
|
|
36
39
|
...(event.mcpApp ? { mcpApp: event.mcpApp } : {}),
|
|
37
40
|
},
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Central model catalog for built-in agent engines.
|
|
3
3
|
*
|
|
4
|
-
* To bump the framework's managed default, update
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* in this one file.
|
|
4
|
+
* To bump the framework's managed default, update the Anthropic/OpenAI
|
|
5
|
+
* constants below. Builder gateway and OpenRouter IDs are derived here so the
|
|
6
|
+
* usual default bump stays in one file.
|
|
8
7
|
*/
|
|
9
8
|
|
|
10
9
|
// ---------------------------------------------------------------------------
|
|
@@ -15,6 +14,7 @@
|
|
|
15
14
|
// OpenAI https://developers.openai.com/api/docs/models/gpt-5.5
|
|
16
15
|
// https://developers.openai.com/api/docs/models/gpt-5.4
|
|
17
16
|
// Google https://ai.google.dev/gemini-api/docs/models
|
|
17
|
+
// OpenRouter https://openrouter.ai/api/v1/models
|
|
18
18
|
//
|
|
19
19
|
// Family defaults (used when a model id isn't listed explicitly):
|
|
20
20
|
// claude-* → 200_000 (Haiku 4.5 and earlier models)
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
// gemini-2* / gemini-3* → 1_048_576
|
|
23
23
|
// everything else → 128_000 (safe conservative floor)
|
|
24
24
|
//
|
|
25
|
-
// Note: Fable 5, Sonnet 4.6, and Opus 4.6/4.7/4.8 support 1M via the API
|
|
25
|
+
// Note: Fable 5, Sonnet 5, Sonnet 4.6, and Opus 4.6/4.7/4.8 support 1M via the API
|
|
26
26
|
// at standard prices.
|
|
27
27
|
// ---------------------------------------------------------------------------
|
|
28
28
|
|
|
@@ -31,6 +31,7 @@ const MODEL_CONTEXT_WINDOWS: Record<string, number> = {
|
|
|
31
31
|
"claude-fable-5": 1_000_000,
|
|
32
32
|
"claude-opus-4-8": 1_000_000,
|
|
33
33
|
"claude-opus-4-7": 1_000_000,
|
|
34
|
+
"claude-sonnet-5": 1_000_000,
|
|
34
35
|
"claude-sonnet-4-6": 1_000_000,
|
|
35
36
|
"claude-haiku-4-5": 200_000,
|
|
36
37
|
"claude-haiku-4-5-20251001": 200_000,
|
|
@@ -49,10 +50,12 @@ const MODEL_CONTEXT_WINDOWS: Record<string, number> = {
|
|
|
49
50
|
"anthropic/claude-fable-5": 1_000_000,
|
|
50
51
|
"anthropic/claude-opus-4.8": 1_000_000,
|
|
51
52
|
"anthropic/claude-opus-4.7": 1_000_000,
|
|
53
|
+
"anthropic/claude-sonnet-5": 1_000_000,
|
|
52
54
|
"anthropic/claude-sonnet-4.6": 1_000_000,
|
|
53
55
|
"openai/gpt-5.5": 1_050_000,
|
|
54
56
|
"openai/gpt-5.4": 1_050_000,
|
|
55
57
|
"google/gemini-2.5-flash": 1_048_576,
|
|
58
|
+
"z-ai/glm-5.2": 1_048_576,
|
|
56
59
|
|
|
57
60
|
// ── AI-SDK native OpenAI IDs ──────────────────────────────────────────────
|
|
58
61
|
"gpt-5.5": 1_050_000,
|
|
@@ -85,12 +88,13 @@ export function getContextWindowForModel(modelId: string): number {
|
|
|
85
88
|
// Family heuristics for unlisted model IDs
|
|
86
89
|
const id = modelId.toLowerCase();
|
|
87
90
|
|
|
88
|
-
// Anthropic Fable 5, Opus 4.x, and Sonnet 4.6 = 1M
|
|
91
|
+
// Anthropic Fable 5, Opus 4.x, Sonnet 5, and Sonnet 4.6 = 1M
|
|
89
92
|
if (
|
|
90
93
|
id === "claude-fable-5" ||
|
|
91
94
|
id.includes("claude-fable-5") ||
|
|
92
95
|
id.startsWith("claude-opus-4") ||
|
|
93
|
-
id
|
|
96
|
+
id.includes("claude-sonnet-5") ||
|
|
97
|
+
id.includes("claude-sonnet-4-6") ||
|
|
94
98
|
id.includes("claude-sonnet-4.6")
|
|
95
99
|
)
|
|
96
100
|
return 1_000_000;
|
|
@@ -110,10 +114,26 @@ export function getContextWindowForModel(modelId: string): number {
|
|
|
110
114
|
)
|
|
111
115
|
return 1_048_576;
|
|
112
116
|
|
|
117
|
+
// Z.ai GLM 5.x on OpenRouter — 1M context.
|
|
118
|
+
if (id.startsWith("glm-5") || id.includes("/glm-5")) return 1_048_576;
|
|
119
|
+
|
|
113
120
|
return DEFAULT_CONTEXT_WINDOW;
|
|
114
121
|
}
|
|
115
122
|
|
|
116
|
-
const
|
|
123
|
+
const ENABLE_CLAUDE_SONNET_5 = false;
|
|
124
|
+
|
|
125
|
+
export const CLAUDE_SONNET_MODEL_ID = ENABLE_CLAUDE_SONNET_5
|
|
126
|
+
? "claude-sonnet-5"
|
|
127
|
+
: "claude-sonnet-4-6";
|
|
128
|
+
export const CLAUDE_SONNET_MODEL_LABEL = ENABLE_CLAUDE_SONNET_5
|
|
129
|
+
? "Claude Sonnet 5"
|
|
130
|
+
: "Claude Sonnet 4.6";
|
|
131
|
+
|
|
132
|
+
const OPENROUTER_CLAUDE_SONNET_MODEL_ID = ENABLE_CLAUDE_SONNET_5
|
|
133
|
+
? "anthropic/claude-sonnet-5"
|
|
134
|
+
: "anthropic/claude-sonnet-4.6";
|
|
135
|
+
|
|
136
|
+
const ANTHROPIC_DEFAULT_MODEL_ID = CLAUDE_SONNET_MODEL_ID;
|
|
117
137
|
|
|
118
138
|
function builderGatewayModelId(model: string): string {
|
|
119
139
|
return model.replace(/\./g, "-");
|
|
@@ -138,8 +158,8 @@ export const AGENT_MODEL_CONFIG = {
|
|
|
138
158
|
defaultModel: FRAMEWORK_DEFAULT_BUILDER_MODEL,
|
|
139
159
|
supportedModels: [
|
|
140
160
|
"auto",
|
|
141
|
-
"claude-opus-4-
|
|
142
|
-
|
|
161
|
+
"claude-opus-4-8",
|
|
162
|
+
CLAUDE_SONNET_MODEL_ID,
|
|
143
163
|
"claude-haiku-4-5",
|
|
144
164
|
FRAMEWORK_DEFAULT_BUILDER_OPENAI_MODEL,
|
|
145
165
|
"gpt-5-4",
|
|
@@ -156,7 +176,7 @@ export const AGENT_MODEL_CONFIG = {
|
|
|
156
176
|
supportedModels: [
|
|
157
177
|
"claude-fable-5",
|
|
158
178
|
"claude-opus-4-8",
|
|
159
|
-
|
|
179
|
+
CLAUDE_SONNET_MODEL_ID,
|
|
160
180
|
"claude-haiku-4-5-20251001",
|
|
161
181
|
],
|
|
162
182
|
},
|
|
@@ -166,7 +186,7 @@ export const AGENT_MODEL_CONFIG = {
|
|
|
166
186
|
supportedModels: [
|
|
167
187
|
"claude-fable-5",
|
|
168
188
|
"claude-opus-4-8",
|
|
169
|
-
|
|
189
|
+
CLAUDE_SONNET_MODEL_ID,
|
|
170
190
|
"claude-haiku-4-5-20251001",
|
|
171
191
|
],
|
|
172
192
|
},
|
|
@@ -183,11 +203,12 @@ export const AGENT_MODEL_CONFIG = {
|
|
|
183
203
|
supportedModels: [
|
|
184
204
|
"anthropic/claude-fable-5",
|
|
185
205
|
"anthropic/claude-opus-4.8",
|
|
186
|
-
|
|
206
|
+
OPENROUTER_CLAUDE_SONNET_MODEL_ID,
|
|
187
207
|
FRAMEWORK_DEFAULT_OPENROUTER_MODEL,
|
|
188
208
|
"openai/gpt-5.4",
|
|
189
209
|
// Current stable Gemini on OpenRouter (2.5 Flash is GA)
|
|
190
210
|
"google/gemini-2.5-flash",
|
|
211
|
+
"z-ai/glm-5.2",
|
|
191
212
|
],
|
|
192
213
|
},
|
|
193
214
|
google: {
|
|
@@ -3134,7 +3134,13 @@ export async function runAgentLoop(opts: {
|
|
|
3134
3134
|
tool: toolCall.name,
|
|
3135
3135
|
input: toolCall.input as Record<string, string>,
|
|
3136
3136
|
});
|
|
3137
|
-
send({
|
|
3137
|
+
send({
|
|
3138
|
+
type: "tool_done",
|
|
3139
|
+
tool: toolCall.name,
|
|
3140
|
+
input: toolCall.input as Record<string, unknown>,
|
|
3141
|
+
result,
|
|
3142
|
+
completedSideEffect: false,
|
|
3143
|
+
});
|
|
3138
3144
|
recordToolResult(result, false);
|
|
3139
3145
|
return {
|
|
3140
3146
|
type: "tool-result" as const,
|
|
@@ -3152,7 +3158,13 @@ export async function runAgentLoop(opts: {
|
|
|
3152
3158
|
tool: toolCall.name,
|
|
3153
3159
|
input: toolCall.input as Record<string, string>,
|
|
3154
3160
|
});
|
|
3155
|
-
send({
|
|
3161
|
+
send({
|
|
3162
|
+
type: "tool_done",
|
|
3163
|
+
tool: toolCall.name,
|
|
3164
|
+
input: toolCall.input as Record<string, unknown>,
|
|
3165
|
+
result,
|
|
3166
|
+
completedSideEffect: false,
|
|
3167
|
+
});
|
|
3156
3168
|
recordToolResult(result, false);
|
|
3157
3169
|
return {
|
|
3158
3170
|
type: "tool-result" as const,
|
|
@@ -3172,7 +3184,14 @@ export async function runAgentLoop(opts: {
|
|
|
3172
3184
|
tool: toolCall.name,
|
|
3173
3185
|
input: toolCall.input as Record<string, string>,
|
|
3174
3186
|
});
|
|
3175
|
-
send({
|
|
3187
|
+
send({
|
|
3188
|
+
type: "tool_done",
|
|
3189
|
+
tool: toolCall.name,
|
|
3190
|
+
input: toolCall.input as Record<string, unknown>,
|
|
3191
|
+
result,
|
|
3192
|
+
isError: true,
|
|
3193
|
+
completedSideEffect: false,
|
|
3194
|
+
});
|
|
3176
3195
|
recordToolResult(result, true);
|
|
3177
3196
|
return {
|
|
3178
3197
|
type: "tool-result" as const,
|
|
@@ -3247,7 +3266,13 @@ export async function runAgentLoop(opts: {
|
|
|
3247
3266
|
`Awaiting human approval to run "${toolCall.name}". This action did ` +
|
|
3248
3267
|
`NOT execute — a human must approve this specific call before it ` +
|
|
3249
3268
|
`can run. The turn is paused; do not retry.`;
|
|
3250
|
-
send({
|
|
3269
|
+
send({
|
|
3270
|
+
type: "tool_done",
|
|
3271
|
+
tool: toolCall.name,
|
|
3272
|
+
input: toolCall.input as Record<string, unknown>,
|
|
3273
|
+
result,
|
|
3274
|
+
completedSideEffect: false,
|
|
3275
|
+
});
|
|
3251
3276
|
recordToolResult(result, false);
|
|
3252
3277
|
requestedActionStop ??= {
|
|
3253
3278
|
message: `Waiting for your approval to run ${toolCall.name}.`,
|
|
@@ -3280,7 +3305,13 @@ export async function runAgentLoop(opts: {
|
|
|
3280
3305
|
tool: toolCall.name,
|
|
3281
3306
|
input: toolCall.input as Record<string, string>,
|
|
3282
3307
|
});
|
|
3283
|
-
send({
|
|
3308
|
+
send({
|
|
3309
|
+
type: "tool_done",
|
|
3310
|
+
tool: toolCall.name,
|
|
3311
|
+
input: toolCall.input as Record<string, unknown>,
|
|
3312
|
+
result,
|
|
3313
|
+
completedSideEffect: false,
|
|
3314
|
+
});
|
|
3284
3315
|
recordToolResult(result, false);
|
|
3285
3316
|
if (repeats >= 3) {
|
|
3286
3317
|
requestedActionStop ??= {
|
|
@@ -3338,7 +3369,13 @@ export async function runAgentLoop(opts: {
|
|
|
3338
3369
|
tool: toolCall.name,
|
|
3339
3370
|
input: toolCall.input as Record<string, string>,
|
|
3340
3371
|
});
|
|
3341
|
-
send({
|
|
3372
|
+
send({
|
|
3373
|
+
type: "tool_done",
|
|
3374
|
+
tool: toolCall.name,
|
|
3375
|
+
input: toolCall.input as Record<string, unknown>,
|
|
3376
|
+
result,
|
|
3377
|
+
completedSideEffect: false,
|
|
3378
|
+
});
|
|
3342
3379
|
recordToolResult(result, false);
|
|
3343
3380
|
return {
|
|
3344
3381
|
type: "tool-result" as const,
|
|
@@ -3389,6 +3426,7 @@ export async function runAgentLoop(opts: {
|
|
|
3389
3426
|
send({
|
|
3390
3427
|
type: "tool_done",
|
|
3391
3428
|
tool: toolCall.name,
|
|
3429
|
+
input: toolCall.input as Record<string, unknown>,
|
|
3392
3430
|
result,
|
|
3393
3431
|
...(actionEntry.chatUI ? { chatUI: actionEntry.chatUI } : {}),
|
|
3394
3432
|
});
|
|
@@ -3413,7 +3451,14 @@ export async function runAgentLoop(opts: {
|
|
|
3413
3451
|
tool: toolCall.name,
|
|
3414
3452
|
input: toolCall.input as Record<string, string>,
|
|
3415
3453
|
});
|
|
3416
|
-
send({
|
|
3454
|
+
send({
|
|
3455
|
+
type: "tool_done",
|
|
3456
|
+
tool: toolCall.name,
|
|
3457
|
+
input: toolCall.input as Record<string, unknown>,
|
|
3458
|
+
result,
|
|
3459
|
+
isError: true,
|
|
3460
|
+
completedSideEffect: false,
|
|
3461
|
+
});
|
|
3417
3462
|
recordToolResult(result, true);
|
|
3418
3463
|
requestedActionStop ??= {
|
|
3419
3464
|
message:
|
|
@@ -3467,7 +3512,14 @@ export async function runAgentLoop(opts: {
|
|
|
3467
3512
|
toolCallSchemaError.error,
|
|
3468
3513
|
),
|
|
3469
3514
|
);
|
|
3470
|
-
send({
|
|
3515
|
+
send({
|
|
3516
|
+
type: "tool_done",
|
|
3517
|
+
tool: toolCall.name,
|
|
3518
|
+
input: toolCall.input as Record<string, unknown>,
|
|
3519
|
+
result,
|
|
3520
|
+
isError: true,
|
|
3521
|
+
completedSideEffect: false,
|
|
3522
|
+
});
|
|
3471
3523
|
recordToolResult(result, true);
|
|
3472
3524
|
return {
|
|
3473
3525
|
type: "tool-result" as const,
|
|
@@ -3491,7 +3543,14 @@ export async function runAgentLoop(opts: {
|
|
|
3491
3543
|
rawToolInputError,
|
|
3492
3544
|
),
|
|
3493
3545
|
);
|
|
3494
|
-
send({
|
|
3546
|
+
send({
|
|
3547
|
+
type: "tool_done",
|
|
3548
|
+
tool: toolCall.name,
|
|
3549
|
+
input: toolCall.input as Record<string, unknown>,
|
|
3550
|
+
result,
|
|
3551
|
+
isError: true,
|
|
3552
|
+
completedSideEffect: false,
|
|
3553
|
+
});
|
|
3495
3554
|
recordToolResult(result, true);
|
|
3496
3555
|
return {
|
|
3497
3556
|
type: "tool-result" as const,
|
|
@@ -3508,7 +3567,14 @@ export async function runAgentLoop(opts: {
|
|
|
3508
3567
|
!isPlanModeToolCallAllowed(toolCall.name, toolCall.input, actionEntry)
|
|
3509
3568
|
) {
|
|
3510
3569
|
const result = planModeBlockedMessage(toolCall.name);
|
|
3511
|
-
send({
|
|
3570
|
+
send({
|
|
3571
|
+
type: "tool_done",
|
|
3572
|
+
tool: toolCall.name,
|
|
3573
|
+
input: toolCall.input as Record<string, unknown>,
|
|
3574
|
+
result,
|
|
3575
|
+
isError: true,
|
|
3576
|
+
completedSideEffect: false,
|
|
3577
|
+
});
|
|
3512
3578
|
recordToolResult(result, true);
|
|
3513
3579
|
return {
|
|
3514
3580
|
type: "tool-result" as const,
|
|
@@ -3586,6 +3652,14 @@ export async function runAgentLoop(opts: {
|
|
|
3586
3652
|
actionPromise
|
|
3587
3653
|
.then((zombieRaw: unknown) => {
|
|
3588
3654
|
const zombieMcp = isMcpActionResult(zombieRaw) ? zombieRaw : null;
|
|
3655
|
+
if (
|
|
3656
|
+
zombieMcp &&
|
|
3657
|
+
zombieMcp.raw &&
|
|
3658
|
+
typeof zombieMcp.raw === "object" &&
|
|
3659
|
+
(zombieMcp.raw as Record<string, unknown>).isError === true
|
|
3660
|
+
) {
|
|
3661
|
+
return;
|
|
3662
|
+
}
|
|
3589
3663
|
const zombieText = zombieMcp ? zombieMcp.text : zombieRaw;
|
|
3590
3664
|
const zombieStr =
|
|
3591
3665
|
typeof zombieText === "string"
|
|
@@ -3721,7 +3795,10 @@ export async function runAgentLoop(opts: {
|
|
|
3721
3795
|
send({
|
|
3722
3796
|
type: "tool_done",
|
|
3723
3797
|
tool: toolCall.name,
|
|
3798
|
+
input: toolCall.input as Record<string, unknown>,
|
|
3724
3799
|
result,
|
|
3800
|
+
...(isError ? { isError: true } : {}),
|
|
3801
|
+
...(isError ? { completedSideEffect: false } : {}),
|
|
3725
3802
|
...(mcpApp ? { mcpApp } : {}),
|
|
3726
3803
|
...(actionEntry.chatUI ? { chatUI: actionEntry.chatUI } : {}),
|
|
3727
3804
|
});
|