@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.
Files changed (508) hide show
  1. package/README.md +2 -2
  2. package/corpus/README.md +1 -1
  3. package/corpus/core/CHANGELOG.md +34 -0
  4. package/corpus/core/README.md +2 -2
  5. package/corpus/core/docs/content/cloneable-saas.mdx +2 -2
  6. package/corpus/core/docs/content/evals.mdx +34 -12
  7. package/corpus/core/docs/content/faq.mdx +1 -1
  8. package/corpus/core/docs/content/locales/ar-SA/cloneable-saas.mdx +2 -2
  9. package/corpus/core/docs/content/locales/ar-SA/evals.mdx +7 -0
  10. package/corpus/core/docs/content/locales/ar-SA/faq.mdx +1 -1
  11. package/corpus/core/docs/content/locales/ar-SA/template-chat.mdx +1 -1
  12. package/corpus/core/docs/content/locales/de-DE/cloneable-saas.mdx +2 -2
  13. package/corpus/core/docs/content/locales/de-DE/evals.mdx +8 -0
  14. package/corpus/core/docs/content/locales/de-DE/faq.mdx +1 -1
  15. package/corpus/core/docs/content/locales/de-DE/template-chat.mdx +1 -1
  16. package/corpus/core/docs/content/locales/es-ES/cloneable-saas.mdx +2 -2
  17. package/corpus/core/docs/content/locales/es-ES/evals.mdx +8 -0
  18. package/corpus/core/docs/content/locales/es-ES/faq.mdx +1 -1
  19. package/corpus/core/docs/content/locales/es-ES/template-chat.mdx +1 -1
  20. package/corpus/core/docs/content/locales/fr-FR/cloneable-saas.mdx +2 -2
  21. package/corpus/core/docs/content/locales/fr-FR/evals.mdx +8 -0
  22. package/corpus/core/docs/content/locales/fr-FR/faq.mdx +1 -1
  23. package/corpus/core/docs/content/locales/fr-FR/template-chat.mdx +1 -1
  24. package/corpus/core/docs/content/locales/hi-IN/cloneable-saas.mdx +2 -2
  25. package/corpus/core/docs/content/locales/hi-IN/evals.mdx +8 -0
  26. package/corpus/core/docs/content/locales/hi-IN/faq.mdx +1 -1
  27. package/corpus/core/docs/content/locales/hi-IN/template-chat.mdx +1 -1
  28. package/corpus/core/docs/content/locales/ja-JP/cloneable-saas.mdx +2 -2
  29. package/corpus/core/docs/content/locales/ja-JP/evals.mdx +7 -0
  30. package/corpus/core/docs/content/locales/ja-JP/faq.mdx +1 -1
  31. package/corpus/core/docs/content/locales/ja-JP/template-chat.mdx +1 -1
  32. package/corpus/core/docs/content/locales/ko-KR/cloneable-saas.mdx +2 -2
  33. package/corpus/core/docs/content/locales/ko-KR/evals.mdx +7 -0
  34. package/corpus/core/docs/content/locales/ko-KR/faq.mdx +1 -1
  35. package/corpus/core/docs/content/locales/ko-KR/template-chat.mdx +1 -1
  36. package/corpus/core/docs/content/locales/pt-BR/cloneable-saas.mdx +2 -2
  37. package/corpus/core/docs/content/locales/pt-BR/evals.mdx +8 -0
  38. package/corpus/core/docs/content/locales/pt-BR/faq.mdx +1 -1
  39. package/corpus/core/docs/content/locales/pt-BR/template-chat.mdx +1 -1
  40. package/corpus/core/docs/content/locales/zh-CN/cloneable-saas.mdx +2 -2
  41. package/corpus/core/docs/content/locales/zh-CN/evals.mdx +7 -0
  42. package/corpus/core/docs/content/locales/zh-CN/faq.mdx +1 -1
  43. package/corpus/core/docs/content/locales/zh-CN/template-chat.mdx +1 -1
  44. package/corpus/core/docs/content/locales/zh-TW/cloneable-saas.mdx +2 -2
  45. package/corpus/core/docs/content/locales/zh-TW/evals.mdx +7 -0
  46. package/corpus/core/docs/content/locales/zh-TW/faq.mdx +1 -1
  47. package/corpus/core/docs/content/locales/zh-TW/template-chat.mdx +1 -1
  48. package/corpus/core/docs/content/template-chat.mdx +1 -1
  49. package/corpus/core/package.json +1 -1
  50. package/corpus/core/src/agent/engine/builtin.ts +1 -1
  51. package/corpus/core/src/agent/engine/output-tokens.ts +1 -1
  52. package/corpus/core/src/agent/harness/acp-adapter.ts +28 -4
  53. package/corpus/core/src/agent/harness/ai-sdk-adapter.ts +3 -0
  54. package/corpus/core/src/agent/harness/translate.ts +3 -0
  55. package/corpus/core/src/agent/harness/types.ts +1 -0
  56. package/corpus/core/src/agent/model-config.ts +34 -13
  57. package/corpus/core/src/agent/production-agent.ts +87 -10
  58. package/corpus/core/src/agent/thread-data-builder.ts +29 -4
  59. package/corpus/core/src/agent/tool-call-journal.ts +109 -48
  60. package/corpus/core/src/agent/types.ts +6 -1
  61. package/corpus/core/src/cli/design-connect.ts +106 -0
  62. package/corpus/core/src/cli/gateway-helpers.ts +17 -0
  63. package/corpus/core/src/cli/recap.ts +0 -2
  64. package/corpus/core/src/cli/skills.ts +54 -16
  65. package/corpus/core/src/cli/workspace-dev.ts +29 -5
  66. package/corpus/core/src/client/AssistantChat.tsx +89 -42
  67. package/corpus/core/src/client/DefaultSpinner.tsx +8 -1
  68. package/corpus/core/src/client/chat/message-components.tsx +49 -1
  69. package/corpus/core/src/client/chat/repo-helpers.ts +71 -0
  70. package/corpus/core/src/client/chat/run-recovery.tsx +15 -5
  71. package/corpus/core/src/client/components/ApiKeySettings.tsx +8 -8
  72. package/corpus/core/src/client/components/CodeRequiredDialog.tsx +26 -15
  73. package/corpus/core/src/client/components/MissingKeyCard.tsx +13 -6
  74. package/corpus/core/src/client/composer/TiptapComposer.tsx +4 -3
  75. package/corpus/core/src/client/extensions/ExtensionsSidebarSection.tsx +0 -1
  76. package/corpus/core/src/client/guided-questions.tsx +21 -27
  77. package/corpus/core/src/client/integrations/IntegrationCard.tsx +1 -1
  78. package/corpus/core/src/client/integrations/IntegrationsPanel.tsx +1 -1
  79. package/corpus/core/src/client/onboarding/OnboardingBanner.tsx +2 -2
  80. package/corpus/core/src/client/onboarding/OnboardingPanel.tsx +23 -19
  81. package/corpus/core/src/client/resources/ResourceEditor.tsx +18 -10
  82. package/corpus/core/src/client/resources/ResourcesPanel.tsx +5 -1
  83. package/corpus/core/src/client/settings/SettingsPanel.tsx +8 -3
  84. package/corpus/core/src/client/settings/useBuilderStatus.ts +8 -41
  85. package/corpus/core/src/client/useProductionAgent.ts +6 -2
  86. package/corpus/core/src/deploy/build.ts +1 -1
  87. package/corpus/core/src/eval/define-eval.ts +4 -1
  88. package/corpus/core/src/eval/report.ts +23 -8
  89. package/corpus/core/src/eval/runner.ts +41 -6
  90. package/corpus/core/src/eval/types.ts +11 -0
  91. package/corpus/core/src/observability/traces.ts +3 -3
  92. package/corpus/core/src/onboarding/default-steps.ts +1 -1
  93. package/corpus/core/src/scripts/agent-engines/manage-agent-engine.ts +1 -1
  94. package/corpus/core/src/scripts/agent-engines/set-agent-engine.ts +1 -1
  95. package/corpus/core/src/server/agent-chat-plugin.ts +177 -81
  96. package/corpus/core/src/server/core-routes-plugin.ts +7 -1
  97. package/corpus/core/src/server/open-route.ts +59 -40
  98. package/corpus/core/src/shared/reasoning-effort.ts +2 -0
  99. package/corpus/core/src/sharing/access.ts +22 -2
  100. package/corpus/core/src/sharing/registry.ts +18 -0
  101. package/corpus/core/src/styles/agent-native.css +104 -20
  102. package/corpus/core/src/styles/rich-markdown-editor.css +11 -10
  103. package/corpus/templates/analytics/app/components/dashboard/CumulativeNetChart.tsx +10 -10
  104. package/corpus/templates/analytics/app/components/dashboard/RevenueChart.tsx +10 -10
  105. package/corpus/templates/analytics/app/components/dashboard/RevenueComparisonChart.tsx +6 -5
  106. package/corpus/templates/analytics/app/components/dashboard/TimeSeriesChart.tsx +9 -9
  107. package/corpus/templates/analytics/app/global.css +4 -0
  108. package/corpus/templates/analytics/app/lib/chart-theme.ts +13 -0
  109. package/corpus/templates/analytics/app/pages/adhoc/_shared/KpiChart.tsx +22 -24
  110. package/corpus/templates/analytics/changelog/2026-06-30-dashboard-charts-now-use-theme-aware-tooltip-and-grid-colors.md +6 -0
  111. package/corpus/templates/analytics/changelog/2026-06-30-fixed-ask-composer-spacing-so-the-chat-field-has-a-comfortab.md +6 -0
  112. package/corpus/templates/calendar/AGENTS.md +4 -0
  113. package/corpus/templates/calendar/actions/connect-google-calendar.ts +80 -0
  114. package/corpus/templates/calendar/changelog/2026-06-30-calendar-now-gives-the-agent-a-safe-google-connection-link-i.md +6 -0
  115. package/corpus/templates/calendar/server/plugins/agent-chat.ts +4 -0
  116. package/corpus/templates/content/AGENTS.md +9 -2
  117. package/corpus/templates/content/actions/_database-row-batch.ts +230 -0
  118. package/corpus/templates/content/actions/_database-utils.ts +17 -9
  119. package/corpus/templates/content/actions/_notion-action-utils.ts +26 -0
  120. package/corpus/templates/content/actions/connect-notion-status.ts +13 -4
  121. package/corpus/templates/content/actions/create-and-link-notion-page.ts +23 -0
  122. package/corpus/templates/content/actions/delete-database-items.ts +55 -0
  123. package/corpus/templates/content/actions/delete-document.ts +4 -4
  124. package/corpus/templates/content/actions/disconnect-notion.ts +16 -0
  125. package/corpus/templates/content/actions/duplicate-database-item.ts +1 -1
  126. package/corpus/templates/content/actions/duplicate-database-items.ts +191 -0
  127. package/corpus/templates/content/actions/link-notion-page.ts +10 -7
  128. package/corpus/templates/content/actions/list-notion-links.ts +3 -4
  129. package/corpus/templates/content/actions/pull-notion-page.ts +7 -9
  130. package/corpus/templates/content/actions/push-notion-page.ts +7 -9
  131. package/corpus/templates/content/actions/refresh-notion-sync-status.ts +24 -0
  132. package/corpus/templates/content/actions/resolve-notion-sync-conflict.ts +23 -0
  133. package/corpus/templates/content/actions/search-notion-pages.ts +67 -0
  134. package/corpus/templates/content/actions/unlink-notion-page.ts +23 -0
  135. package/corpus/templates/content/app/components/editor/BubbleToolbar.tsx +5 -5
  136. package/corpus/templates/content/app/components/editor/DocumentDatabase.tsx +27 -34
  137. package/corpus/templates/content/app/components/editor/DocumentEditor.tsx +16 -13
  138. package/corpus/templates/content/app/components/editor/DocumentToolbar.tsx +10 -10
  139. package/corpus/templates/content/app/components/editor/NotionConflictBanner.tsx +1 -1
  140. package/corpus/templates/content/app/components/editor/NotionSyncBar.tsx +18 -9
  141. package/corpus/templates/content/app/components/editor/database/DatabaseView.tsx +27 -34
  142. package/corpus/templates/content/app/components/editor/database/navigation-state.ts +10 -4
  143. package/corpus/templates/content/app/components/sidebar/NotionButton.tsx +32 -17
  144. package/corpus/templates/content/app/global.css +6 -5
  145. package/corpus/templates/content/app/hooks/use-content-database.ts +35 -0
  146. package/corpus/templates/content/app/hooks/use-notion.ts +108 -99
  147. package/corpus/templates/content/changelog/2026-06-30-editor-floating-toolbars-now-use-theme-aware-colors-in-light.md +6 -0
  148. package/corpus/templates/content/package.json +3 -0
  149. package/corpus/templates/content/parity/README.md +69 -0
  150. package/corpus/templates/content/parity/eval-scenarios.ts +118 -0
  151. package/corpus/templates/content/parity/exceptions.allowlist.ts +17 -0
  152. package/corpus/templates/content/parity/matrix.md +28 -0
  153. package/corpus/templates/content/parity/matrix.ts +606 -0
  154. package/corpus/templates/content/parity/matrix.types.ts +42 -0
  155. package/corpus/templates/content/parity/parity-evals.eval.ts +4 -0
  156. package/corpus/templates/content/parity/render-matrix.ts +90 -0
  157. package/corpus/templates/content/parity/scenario-to-eval.ts +57 -0
  158. package/corpus/templates/content/shared/api.ts +11 -0
  159. package/corpus/templates/design/.agents/skills/visual-edit/SKILL.md +6 -1
  160. package/corpus/templates/design/actions/add-localhost-screens.ts +63 -8
  161. package/corpus/templates/design/actions/apply-motion-edit.ts +12 -46
  162. package/corpus/templates/design/actions/list-design-native-assets.ts +2 -1
  163. package/corpus/templates/design/actions/migrate-board-objects-to-file.ts +49 -1
  164. package/corpus/templates/design/actions/navigate.ts +3 -12
  165. package/corpus/templates/design/actions/open-visual-edit.ts +341 -0
  166. package/corpus/templates/design/actions/view-screen.ts +1 -1
  167. package/corpus/templates/design/app/components/design/CanvasContextMenu.tsx +1 -1
  168. package/corpus/templates/design/app/components/design/DesignCanvas.tsx +345 -14
  169. package/corpus/templates/design/app/components/design/DesignEditorSkeleton.tsx +71 -91
  170. package/corpus/templates/design/app/components/design/DesignExtensionsPanel.tsx +25 -27
  171. package/corpus/templates/design/app/components/design/DeviceFrame.tsx +1 -1
  172. package/corpus/templates/design/app/components/design/DrawOverlay.tsx +2 -2
  173. package/corpus/templates/design/app/components/design/EditPanel.tsx +1111 -570
  174. package/corpus/templates/design/app/components/design/LayersPanel.tsx +162 -32
  175. package/corpus/templates/design/app/components/design/MotionDock.tsx +268 -240
  176. package/corpus/templates/design/app/components/design/MultiScreenCanvas.tsx +1038 -150
  177. package/corpus/templates/design/app/components/design/QuestionFlow.tsx +1 -1
  178. package/corpus/templates/design/app/components/design/ReviewPanel.tsx +81 -102
  179. package/corpus/templates/design/app/components/design/StatesPanel.tsx +6 -6
  180. package/corpus/templates/design/app/components/design/TokensPanel.tsx +11 -11
  181. package/corpus/templates/design/app/components/design/TweaksPanel.tsx +9 -7
  182. package/corpus/templates/design/app/components/design/bridge/editor-chrome.bridge.ts +1129 -155
  183. package/corpus/templates/design/app/components/design/bridge/hit-test.bridge.ts +130 -37
  184. package/corpus/templates/design/app/components/design/canvas-primitive-style.ts +24 -11
  185. package/corpus/templates/design/app/components/design/inspector/AutoLayoutMatrix.tsx +184 -162
  186. package/corpus/templates/design/app/components/design/inspector/ConstraintsWidget.tsx +137 -79
  187. package/corpus/templates/design/app/components/design/inspector/DesignColorPicker.tsx +13 -13
  188. package/corpus/templates/design/app/components/design/inspector/ExportSettingsPanel.tsx +8 -8
  189. package/corpus/templates/design/app/components/design/inspector/GradientEditor.tsx +2 -2
  190. package/corpus/templates/design/app/components/design/inspector/ImageFillControls.tsx +4 -4
  191. package/corpus/templates/design/app/components/design/inspector/InspectorAiActions.tsx +3 -3
  192. package/corpus/templates/design/app/components/design/inspector/ScrubInput.tsx +13 -7
  193. package/corpus/templates/design/app/components/design/inspector/ShaderControls.tsx +14 -11
  194. package/corpus/templates/design/app/components/design/inspector/ShaderFillsPanel.tsx +4 -4
  195. package/corpus/templates/design/app/components/design/inspector/index.ts +2 -0
  196. package/corpus/templates/design/app/components/design/types.ts +19 -0
  197. package/corpus/templates/design/app/components/editor/PromptDialog.tsx +61 -78
  198. package/corpus/templates/design/app/components/layout/Header.tsx +0 -1
  199. package/corpus/templates/design/app/components/layout/Layout.tsx +3 -2
  200. package/corpus/templates/design/app/components/layout/Sidebar.tsx +0 -2
  201. package/corpus/templates/design/app/components/visual-editor/CanvasCommentPins.tsx +5 -4
  202. package/corpus/templates/design/app/components/visual-editor/DrawOverlay.tsx +1 -1
  203. package/corpus/templates/design/app/components/visual-editor/SaveStatusIndicator.tsx +2 -2
  204. package/corpus/templates/design/app/global.css +56 -0
  205. package/corpus/templates/design/app/hooks/use-agent-generating.ts +4 -5
  206. package/corpus/templates/design/app/hooks/use-navigation-state.ts +6 -7
  207. package/corpus/templates/design/app/hooks/use-question-flow.ts +3 -2
  208. package/corpus/templates/design/app/hooks/useAgentEditRequest.ts +6 -4
  209. package/corpus/templates/design/app/i18n/zh-TW.ts +5 -14
  210. package/corpus/templates/design/app/i18n-data.ts +63 -188
  211. package/corpus/templates/design/app/lib/agent-chat.ts +13 -0
  212. package/corpus/templates/design/app/pages/DesignEditor.tsx +1428 -384
  213. package/corpus/templates/design/app/pages/DesignSystemSetup.tsx +9 -5
  214. package/corpus/templates/design/app/pages/DesignSystems.tsx +2 -2
  215. package/corpus/templates/design/app/pages/Index.tsx +49 -26
  216. package/corpus/templates/design/app/pages/NotFound.tsx +25 -8
  217. package/corpus/templates/design/app/pages/VisualEdit.tsx +17 -5
  218. package/corpus/templates/design/app/routes/examples.tsx +1 -7
  219. package/corpus/templates/design/app/routes/templates.tsx +7 -4
  220. package/corpus/templates/design/changelog/2026-06-30-board-shapes-and-auto-layout-controls-are-clearer.md +6 -0
  221. package/corpus/templates/design/changelog/2026-06-30-component-selections-now-use-purple-component-chrome-and-sho.md +6 -0
  222. package/corpus/templates/design/changelog/2026-06-30-constraints-now-stay-tucked-into-a-compact-inspector-preview.md +6 -0
  223. package/corpus/templates/design/changelog/2026-06-30-creating-a-component-now-opens-in-a-compact-inspector-popove.md +6 -0
  224. package/corpus/templates/design/changelog/2026-06-30-design-cards-no-longer-show-legacy-project-type-badges.md +6 -0
  225. package/corpus/templates/design/changelog/2026-06-30-design-chat-now-keeps-new-turns-in-the-visible-design-agent-.md +6 -0
  226. package/corpus/templates/design/changelog/2026-06-30-design-editor-panels-now-keep-their-compact-text-sizing-cons.md +6 -0
  227. package/corpus/templates/design/changelog/2026-06-30-design-no-longer-shows-the-connected-local-code-warning-bann.md +6 -0
  228. package/corpus/templates/design/changelog/2026-06-30-design-now-opens-to-the-files-panel-unless-a-generation-is-a.md +6 -0
  229. package/corpus/templates/design/changelog/2026-06-30-design-opens-with-a-cleaner-empty-canvas-and-loading-preview.md +6 -0
  230. package/corpus/templates/design/changelog/2026-06-30-design-tools-use-simpler-less-decorative-icons.md +6 -0
  231. package/corpus/templates/design/changelog/2026-06-30-dragging-absolute-elements-no-longer-shows-coordinate-labels.md +6 -0
  232. package/corpus/templates/design/changelog/2026-06-30-fixed-all-screens-opening-too-zoomed-in-by-default.md +6 -0
  233. package/corpus/templates/design/changelog/2026-06-30-fixed-the-public-design-assets-sidebar-so-native-components-.md +6 -0
  234. package/corpus/templates/design/changelog/2026-06-30-fixed-the-screen-overview-board-so-empty-board-space-no-long.md +6 -0
  235. package/corpus/templates/design/changelog/2026-06-30-full-view-screens-can-now-scroll-while-remaining-editable.md +6 -0
  236. package/corpus/templates/design/changelog/2026-06-30-inspector-element-headers-show-the-selected-html-tag-and-the.md +6 -0
  237. package/corpus/templates/design/changelog/2026-06-30-inspector-inputs-stay-compact-across-desktop-breakpoints.md +6 -0
  238. package/corpus/templates/design/changelog/2026-06-30-layers-can-be-multi-selected-from-the-canvas-and-edited-toge.md +6 -0
  239. package/corpus/templates/design/changelog/2026-06-30-local-visual-edit-links-can-edit-localhost-frames-without-si.md +6 -0
  240. package/corpus/templates/design/changelog/2026-06-30-localhost-visual-edit-frames-can-now-be-selected-and-edited.md +6 -0
  241. package/corpus/templates/design/changelog/2026-06-30-marquee-selection-now-works-inside-screens-multi-selected-la.md +6 -0
  242. package/corpus/templates/design/changelog/2026-06-30-motion-is-now-available-from-the-persistent-left-rail-and-th.md +6 -0
  243. package/corpus/templates/design/changelog/2026-06-30-motion-timeline-collapse-and-reopen-animations-feel-smoother.md +6 -0
  244. package/corpus/templates/design/changelog/2026-06-30-multi-select-outlines-now-stay-consistent-across-all-screens.md +6 -0
  245. package/corpus/templates/design/changelog/2026-06-30-new-board-shapes-now-start-with-neutral-gray-styling.md +6 -0
  246. package/corpus/templates/design/changelog/2026-06-30-new-designs-open-into-a-steadier-loading-state-before-the-ed.md +6 -0
  247. package/corpus/templates/design/changelog/2026-06-30-new-designs-show-a-loading-state-during-handoff-and-keep-edi.md +6 -0
  248. package/corpus/templates/design/changelog/2026-06-30-public-visual-edit-design-links-now-open-directly-instead-of.md +6 -0
  249. package/corpus/templates/design/changelog/2026-06-30-removed-the-confusing-states-section-from-the-design-editor-.md +6 -0
  250. package/corpus/templates/design/changelog/2026-06-30-removed-the-templates-gallery-from-design-navigation.md +6 -0
  251. package/corpus/templates/design/changelog/2026-06-30-share-stays-visible-as-soon-as-editable-designs-load.md +6 -0
  252. package/corpus/templates/design/changelog/2026-06-30-signed-out-save-and-share-controls-use-simpler-labels-and-op.md +6 -0
  253. package/corpus/templates/design/changelog/2026-06-30-text-added-on-the-canvas-now-focuses-cleanly-with-the-right-.md +6 -0
  254. package/corpus/templates/design/changelog/2026-06-30-the-design-editor-loading-skeleton-is-simpler-and-its-bottom.md +6 -0
  255. package/corpus/templates/design/changelog/2026-06-30-the-design-editor-loading-skeleton-now-follows-the-current-t.md +6 -0
  256. package/corpus/templates/design/changelog/2026-06-30-the-design-inspector-no-longer-shows-child-layout-controls-o.md +6 -0
  257. package/corpus/templates/design/changelog/2026-06-30-the-design-inspector-no-longer-shows-the-ask-ai-section-abov.md +6 -0
  258. package/corpus/templates/design/changelog/2026-06-30-the-design-review-panel-no-longer-shows-a-separate-inline-au.md +6 -0
  259. package/corpus/templates/design/changelog/2026-06-30-the-empty-designs-page-now-focuses-on-a-single-primary-new-d.md +6 -0
  260. package/corpus/templates/design/changelog/2026-06-30-the-layers-panel-header-stays-as-layers-while-multiple-items.md +6 -0
  261. package/corpus/templates/design/changelog/2026-06-30-the-missing-design-screen-now-uses-a-neutral-back-button.md +6 -0
  262. package/corpus/templates/design/changelog/2026-06-30-the-motion-timeline-now-closes-without-squeezing-the-canvas-.md +6 -0
  263. package/corpus/templates/design/changelog/2026-06-30-the-new-design-connect-ai-setup-now-lines-up-with-the-compos.md +6 -0
  264. package/corpus/templates/design/changelog/2026-06-30-the-screen-overview-board-now-blends-into-the-canvas-and-new.md +6 -0
  265. package/corpus/templates/design/changelog/2026-06-30-top-level-canvas-drops-now-show-screen-guides.md +6 -0
  266. package/corpus/templates/design/changelog/2026-06-30-top-level-canvas-layers-now-keep-a-transparent-backdrop-and-.md +6 -0
  267. package/corpus/templates/design/changelog/2026-06-30-top-level-canvas-layers-now-select-reliably-from-all-screens.md +6 -0
  268. package/corpus/templates/design/changelog/2026-06-30-visual-edit-can-open-and-refresh-localhost-screens-in-one-au.md +6 -0
  269. package/corpus/templates/design/e2e/helpers.ts +15 -4
  270. package/corpus/templates/design/server/db/index.ts +52 -0
  271. package/corpus/templates/design/server/plugins/agent-chat.ts +5 -0
  272. package/corpus/templates/design/server/plugins/auth.ts +1 -0
  273. package/corpus/templates/design/server/plugins/core-routes.ts +4 -0
  274. package/corpus/templates/design/shared/board-file.ts +380 -5
  275. package/corpus/templates/design/shared/board-objects.ts +2 -2
  276. package/corpus/templates/design/shared/code-layer.ts +50 -6
  277. package/corpus/templates/design/shared/motion-compiler.ts +27 -0
  278. package/corpus/templates/macros/app/components/DailyProgress.tsx +41 -37
  279. package/corpus/templates/macros/app/components/ExerciseCard.tsx +2 -2
  280. package/corpus/templates/macros/app/components/MealCard.tsx +2 -2
  281. package/corpus/templates/macros/app/components/VoiceDictation.tsx +1 -1
  282. package/corpus/templates/macros/app/components/WeeklyCaloriesChart.tsx +1 -1
  283. package/corpus/templates/macros/app/components/WeightCard.tsx +2 -2
  284. package/corpus/templates/macros/app/components/WeightTracker.tsx +1 -1
  285. package/corpus/templates/macros/app/components/layout/AppLayout.tsx +1 -1
  286. package/corpus/templates/macros/app/routes/_index.tsx +5 -5
  287. package/corpus/templates/macros/app/routes/analytics.tsx +1 -1
  288. package/corpus/templates/macros/changelog/2026-06-30-dashboard-loading-and-chart-surfaces-now-use-theme-aware-col.md +6 -0
  289. package/corpus/templates/mail/app/components/email/ComposeBubbleToolbar.tsx +14 -11
  290. package/corpus/templates/mail/app/global.css +3 -2
  291. package/corpus/templates/mail/changelog/2026-06-30-compose-floating-toolbars-now-use-theme-aware-colors-in-ligh.md +6 -0
  292. package/corpus/templates/plan/app/pages/PlansPage.tsx +2 -2
  293. package/corpus/templates/slides/app/components/deck/DeckCard.tsx +3 -3
  294. package/corpus/templates/slides/app/global.css +10 -0
  295. package/corpus/templates/slides/app/pages/Index.tsx +55 -51
  296. package/corpus/templates/slides/changelog/2026-06-30-deck-thumbnails-collapse-cleanly-to-one-column-when-the-chat.md +6 -0
  297. package/dist/agent/engine/anthropic-engine.d.ts +2 -2
  298. package/dist/agent/engine/anthropic-engine.d.ts.map +1 -1
  299. package/dist/agent/engine/builder-engine.d.ts +2 -2
  300. package/dist/agent/engine/builder-engine.d.ts.map +1 -1
  301. package/dist/agent/engine/builtin.js +1 -1
  302. package/dist/agent/engine/builtin.js.map +1 -1
  303. package/dist/agent/engine/output-tokens.js +1 -1
  304. package/dist/agent/engine/output-tokens.js.map +1 -1
  305. package/dist/agent/harness/acp-adapter.d.ts +4 -1
  306. package/dist/agent/harness/acp-adapter.d.ts.map +1 -1
  307. package/dist/agent/harness/acp-adapter.js +19 -2
  308. package/dist/agent/harness/acp-adapter.js.map +1 -1
  309. package/dist/agent/harness/ai-sdk-adapter.d.ts.map +1 -1
  310. package/dist/agent/harness/ai-sdk-adapter.js +3 -0
  311. package/dist/agent/harness/ai-sdk-adapter.js.map +1 -1
  312. package/dist/agent/harness/translate.d.ts.map +1 -1
  313. package/dist/agent/harness/translate.js +3 -0
  314. package/dist/agent/harness/translate.js.map +1 -1
  315. package/dist/agent/harness/types.d.ts +1 -0
  316. package/dist/agent/harness/types.d.ts.map +1 -1
  317. package/dist/agent/harness/types.js.map +1 -1
  318. package/dist/agent/model-config.d.ts +21 -20
  319. package/dist/agent/model-config.d.ts.map +1 -1
  320. package/dist/agent/model-config.js +31 -13
  321. package/dist/agent/model-config.js.map +1 -1
  322. package/dist/agent/production-agent.d.ts.map +1 -1
  323. package/dist/agent/production-agent.js +85 -10
  324. package/dist/agent/production-agent.js.map +1 -1
  325. package/dist/agent/thread-data-builder.d.ts.map +1 -1
  326. package/dist/agent/thread-data-builder.js +27 -6
  327. package/dist/agent/thread-data-builder.js.map +1 -1
  328. package/dist/agent/tool-call-journal.d.ts +11 -9
  329. package/dist/agent/tool-call-journal.d.ts.map +1 -1
  330. package/dist/agent/tool-call-journal.js +92 -40
  331. package/dist/agent/tool-call-journal.js.map +1 -1
  332. package/dist/agent/types.d.ts +5 -1
  333. package/dist/agent/types.d.ts.map +1 -1
  334. package/dist/agent/types.js.map +1 -1
  335. package/dist/cli/design-connect.d.ts.map +1 -1
  336. package/dist/cli/design-connect.js +84 -0
  337. package/dist/cli/design-connect.js.map +1 -1
  338. package/dist/cli/gateway-helpers.d.ts +4 -0
  339. package/dist/cli/gateway-helpers.d.ts.map +1 -1
  340. package/dist/cli/gateway-helpers.js +9 -0
  341. package/dist/cli/gateway-helpers.js.map +1 -1
  342. package/dist/cli/recap.d.ts.map +1 -1
  343. package/dist/cli/recap.js +0 -2
  344. package/dist/cli/recap.js.map +1 -1
  345. package/dist/cli/skills.d.ts.map +1 -1
  346. package/dist/cli/skills.js +54 -16
  347. package/dist/cli/skills.js.map +1 -1
  348. package/dist/cli/workspace-dev.d.ts.map +1 -1
  349. package/dist/cli/workspace-dev.js +33 -6
  350. package/dist/cli/workspace-dev.js.map +1 -1
  351. package/dist/client/AssistantChat.d.ts.map +1 -1
  352. package/dist/client/AssistantChat.js +72 -26
  353. package/dist/client/AssistantChat.js.map +1 -1
  354. package/dist/client/DefaultSpinner.d.ts.map +1 -1
  355. package/dist/client/DefaultSpinner.js +8 -1
  356. package/dist/client/DefaultSpinner.js.map +1 -1
  357. package/dist/client/chat/message-components.d.ts +7 -1
  358. package/dist/client/chat/message-components.d.ts.map +1 -1
  359. package/dist/client/chat/message-components.js +37 -1
  360. package/dist/client/chat/message-components.js.map +1 -1
  361. package/dist/client/chat/repo-helpers.d.ts +1 -0
  362. package/dist/client/chat/repo-helpers.d.ts.map +1 -1
  363. package/dist/client/chat/repo-helpers.js +59 -0
  364. package/dist/client/chat/repo-helpers.js.map +1 -1
  365. package/dist/client/chat/run-recovery.d.ts.map +1 -1
  366. package/dist/client/chat/run-recovery.js +4 -4
  367. package/dist/client/chat/run-recovery.js.map +1 -1
  368. package/dist/client/components/ApiKeySettings.js +8 -8
  369. package/dist/client/components/ApiKeySettings.js.map +1 -1
  370. package/dist/client/components/CodeRequiredDialog.d.ts.map +1 -1
  371. package/dist/client/components/CodeRequiredDialog.js +24 -15
  372. package/dist/client/components/CodeRequiredDialog.js.map +1 -1
  373. package/dist/client/components/MissingKeyCard.d.ts.map +1 -1
  374. package/dist/client/components/MissingKeyCard.js +11 -6
  375. package/dist/client/components/MissingKeyCard.js.map +1 -1
  376. package/dist/client/composer/TiptapComposer.d.ts.map +1 -1
  377. package/dist/client/composer/TiptapComposer.js +4 -3
  378. package/dist/client/composer/TiptapComposer.js.map +1 -1
  379. package/dist/client/extensions/ExtensionsSidebarSection.d.ts.map +1 -1
  380. package/dist/client/extensions/ExtensionsSidebarSection.js +1 -1
  381. package/dist/client/extensions/ExtensionsSidebarSection.js.map +1 -1
  382. package/dist/client/guided-questions.d.ts.map +1 -1
  383. package/dist/client/guided-questions.js +6 -6
  384. package/dist/client/guided-questions.js.map +1 -1
  385. package/dist/client/integrations/IntegrationCard.js +1 -1
  386. package/dist/client/integrations/IntegrationCard.js.map +1 -1
  387. package/dist/client/integrations/IntegrationsPanel.js +1 -1
  388. package/dist/client/integrations/IntegrationsPanel.js.map +1 -1
  389. package/dist/client/onboarding/OnboardingBanner.js +2 -2
  390. package/dist/client/onboarding/OnboardingBanner.js.map +1 -1
  391. package/dist/client/onboarding/OnboardingPanel.js +23 -19
  392. package/dist/client/onboarding/OnboardingPanel.js.map +1 -1
  393. package/dist/client/resources/ResourceEditor.d.ts.map +1 -1
  394. package/dist/client/resources/ResourceEditor.js +13 -10
  395. package/dist/client/resources/ResourceEditor.js.map +1 -1
  396. package/dist/client/resources/ResourcesPanel.d.ts.map +1 -1
  397. package/dist/client/resources/ResourcesPanel.js +2 -1
  398. package/dist/client/resources/ResourcesPanel.js.map +1 -1
  399. package/dist/client/settings/SettingsPanel.d.ts.map +1 -1
  400. package/dist/client/settings/SettingsPanel.js +8 -3
  401. package/dist/client/settings/SettingsPanel.js.map +1 -1
  402. package/dist/client/settings/useBuilderStatus.d.ts.map +1 -1
  403. package/dist/client/settings/useBuilderStatus.js +6 -38
  404. package/dist/client/settings/useBuilderStatus.js.map +1 -1
  405. package/dist/client/useProductionAgent.d.ts +2 -1
  406. package/dist/client/useProductionAgent.d.ts.map +1 -1
  407. package/dist/client/useProductionAgent.js.map +1 -1
  408. package/dist/collab/awareness.d.ts +2 -2
  409. package/dist/collab/awareness.d.ts.map +1 -1
  410. package/dist/collab/routes.d.ts +1 -1
  411. package/dist/deploy/build.js +1 -1
  412. package/dist/deploy/build.js.map +1 -1
  413. package/dist/eval/define-eval.d.ts.map +1 -1
  414. package/dist/eval/define-eval.js +2 -1
  415. package/dist/eval/define-eval.js.map +1 -1
  416. package/dist/eval/report.d.ts.map +1 -1
  417. package/dist/eval/report.js +19 -4
  418. package/dist/eval/report.js.map +1 -1
  419. package/dist/eval/runner.d.ts.map +1 -1
  420. package/dist/eval/runner.js +38 -6
  421. package/dist/eval/runner.js.map +1 -1
  422. package/dist/eval/types.d.ts +11 -0
  423. package/dist/eval/types.d.ts.map +1 -1
  424. package/dist/eval/types.js.map +1 -1
  425. package/dist/file-upload/actions/upload-image.d.ts +2 -2
  426. package/dist/notifications/routes.d.ts +3 -3
  427. package/dist/observability/routes.d.ts +5 -5
  428. package/dist/observability/traces.d.ts.map +1 -1
  429. package/dist/observability/traces.js.map +1 -1
  430. package/dist/onboarding/default-steps.js +1 -1
  431. package/dist/onboarding/default-steps.js.map +1 -1
  432. package/dist/progress/routes.d.ts +1 -1
  433. package/dist/resources/handlers.d.ts +1 -1
  434. package/dist/scripts/agent-engines/manage-agent-engine.js +1 -1
  435. package/dist/scripts/agent-engines/manage-agent-engine.js.map +1 -1
  436. package/dist/scripts/agent-engines/set-agent-engine.js +1 -1
  437. package/dist/scripts/agent-engines/set-agent-engine.js.map +1 -1
  438. package/dist/server/agent-chat-plugin.d.ts +3 -0
  439. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  440. package/dist/server/agent-chat-plugin.js +134 -72
  441. package/dist/server/agent-chat-plugin.js.map +1 -1
  442. package/dist/server/core-routes-plugin.d.ts +3 -0
  443. package/dist/server/core-routes-plugin.d.ts.map +1 -1
  444. package/dist/server/core-routes-plugin.js +4 -1
  445. package/dist/server/core-routes-plugin.js.map +1 -1
  446. package/dist/server/open-route.d.ts +9 -0
  447. package/dist/server/open-route.d.ts.map +1 -1
  448. package/dist/server/open-route.js +48 -38
  449. package/dist/server/open-route.js.map +1 -1
  450. package/dist/shared/reasoning-effort.js +3 -0
  451. package/dist/shared/reasoning-effort.js.map +1 -1
  452. package/dist/sharing/access.d.ts.map +1 -1
  453. package/dist/sharing/access.js +18 -2
  454. package/dist/sharing/access.js.map +1 -1
  455. package/dist/sharing/registry.d.ts +10 -0
  456. package/dist/sharing/registry.d.ts.map +1 -1
  457. package/dist/sharing/registry.js.map +1 -1
  458. package/dist/styles/agent-native.css +104 -20
  459. package/dist/styles/rich-markdown-editor.css +11 -10
  460. package/docs/content/cloneable-saas.mdx +2 -2
  461. package/docs/content/evals.mdx +34 -12
  462. package/docs/content/faq.mdx +1 -1
  463. package/docs/content/locales/ar-SA/cloneable-saas.mdx +2 -2
  464. package/docs/content/locales/ar-SA/evals.mdx +7 -0
  465. package/docs/content/locales/ar-SA/faq.mdx +1 -1
  466. package/docs/content/locales/ar-SA/template-chat.mdx +1 -1
  467. package/docs/content/locales/de-DE/cloneable-saas.mdx +2 -2
  468. package/docs/content/locales/de-DE/evals.mdx +8 -0
  469. package/docs/content/locales/de-DE/faq.mdx +1 -1
  470. package/docs/content/locales/de-DE/template-chat.mdx +1 -1
  471. package/docs/content/locales/es-ES/cloneable-saas.mdx +2 -2
  472. package/docs/content/locales/es-ES/evals.mdx +8 -0
  473. package/docs/content/locales/es-ES/faq.mdx +1 -1
  474. package/docs/content/locales/es-ES/template-chat.mdx +1 -1
  475. package/docs/content/locales/fr-FR/cloneable-saas.mdx +2 -2
  476. package/docs/content/locales/fr-FR/evals.mdx +8 -0
  477. package/docs/content/locales/fr-FR/faq.mdx +1 -1
  478. package/docs/content/locales/fr-FR/template-chat.mdx +1 -1
  479. package/docs/content/locales/hi-IN/cloneable-saas.mdx +2 -2
  480. package/docs/content/locales/hi-IN/evals.mdx +8 -0
  481. package/docs/content/locales/hi-IN/faq.mdx +1 -1
  482. package/docs/content/locales/hi-IN/template-chat.mdx +1 -1
  483. package/docs/content/locales/ja-JP/cloneable-saas.mdx +2 -2
  484. package/docs/content/locales/ja-JP/evals.mdx +7 -0
  485. package/docs/content/locales/ja-JP/faq.mdx +1 -1
  486. package/docs/content/locales/ja-JP/template-chat.mdx +1 -1
  487. package/docs/content/locales/ko-KR/cloneable-saas.mdx +2 -2
  488. package/docs/content/locales/ko-KR/evals.mdx +7 -0
  489. package/docs/content/locales/ko-KR/faq.mdx +1 -1
  490. package/docs/content/locales/ko-KR/template-chat.mdx +1 -1
  491. package/docs/content/locales/pt-BR/cloneable-saas.mdx +2 -2
  492. package/docs/content/locales/pt-BR/evals.mdx +8 -0
  493. package/docs/content/locales/pt-BR/faq.mdx +1 -1
  494. package/docs/content/locales/pt-BR/template-chat.mdx +1 -1
  495. package/docs/content/locales/zh-CN/cloneable-saas.mdx +2 -2
  496. package/docs/content/locales/zh-CN/evals.mdx +7 -0
  497. package/docs/content/locales/zh-CN/faq.mdx +1 -1
  498. package/docs/content/locales/zh-CN/template-chat.mdx +1 -1
  499. package/docs/content/locales/zh-TW/cloneable-saas.mdx +2 -2
  500. package/docs/content/locales/zh-TW/evals.mdx +7 -0
  501. package/docs/content/locales/zh-TW/faq.mdx +1 -1
  502. package/docs/content/locales/zh-TW/template-chat.mdx +1 -1
  503. package/docs/content/template-chat.mdx +1 -1
  504. package/package.json +1 -1
  505. package/corpus/templates/content/server/routes/api/notion/disconnect.post.ts +0 -12
  506. package/corpus/templates/design/app/components/design/LocalSourceEditBanner.tsx +0 -157
  507. package/corpus/templates/design/app/lib/design-templates.ts +0 -1305
  508. 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 modelo 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 a agir primeiro com [Pure-Agent Apps](/docs/pure-agent-apps).
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 [Templates](/templates) 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.
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 modelo 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.
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 4.6 · Auto</span><span class='wf-pill'>Act</span><button class='primary'>↑</button></div></div><div style='height:34px'></div></div></div>"
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
- 不需要域模板?当您想要一个用户可以立即交谈的基本应用程序时,请使用 [Chat](/docs/template-chat),或者使用 [Pure-Agent Apps](/docs/pure-agent-apps) 首先开始操作。
33
+ 不需要域应用?当您想要一个用户可以立即交谈的基本应用程序时,请使用 [Chat](/docs/template-chat),或者从 [Pure-Agent Apps](/docs/pure-agent-apps) 中的一个操作开始。
34
34
 
35
- 查看 [Templates](/templates) 下的完整目录,或直接跳到其中一个 - 例如,如果您想要一款工作区风格的应用,[Dispatch](/docs/template-dispatch) 是一个很好的起点。
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 4.6 · Auto</span><span class='wf-pill'>Act</span><button class='primary'>↑</button></div></div><div style='height:34px'></div></div></div>"
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
- 不需要域範本?當您想要一個使用者可以立即交談的基本應用程式時,請使用 [Chat](/docs/template-chat),或者使用 [Pure-Agent Apps](/docs/pure-agent-apps) 首先開始操作。
33
+ 不需要域應用程式?當您想要一個使用者可以立即交談的基本應用程式時,請使用 [Chat](/docs/template-chat),或者從 [Pure-Agent Apps](/docs/pure-agent-apps) 中的一個操作開始。
34
34
 
35
- 檢視 [Templates](/templates) 下的完整目錄,或直接跳到其中一個 - 例如,如果您想要一款工作區風格的應用,[Dispatch](/docs/template-dispatch) 是一個很好的起點。
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 4.6 · Auto</span><span class='wf-pill'>Act</span><button class='primary'>↑</button></div></div><div style='height:34px'></div></div></div>"
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 4.6 · Auto</span><span class='wf-pill'>Act</span><button class='primary'>↑</button></div></div><div style='height:34px'></div></div></div>"
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>
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-native/core",
3
- "version": "0.83.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, Meta, and more routed through a single endpoint. Use model IDs like 'anthropic/claude-sonnet-4.6' or 'openai/gpt-5.5'. Requires OPENROUTER_API_KEY.",
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-4-6
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, (id) =>
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
- titleFor?: (toolCallId: string) => string | undefined,
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
  },
@@ -100,6 +100,7 @@ export type AgentHarnessEvent =
100
100
  type: "tool-done";
101
101
  id?: string;
102
102
  name: string;
103
+ input?: unknown;
103
104
  result?: unknown;
104
105
  mcpApp?: AgentMcpAppPayload;
105
106
  }
@@ -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
- * FRAMEWORK_DEFAULT_OPENAI_MODEL. Builder gateway and OpenRouter IDs are
6
- * derived from that provider-native OpenAI ID so the usual default bump stays
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 === "claude-sonnet-4-6" ||
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 ANTHROPIC_DEFAULT_MODEL_ID = "claude-sonnet-4-6";
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-7",
142
- FRAMEWORK_DEFAULT_BUILDER_MODEL,
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
- ANTHROPIC_DEFAULT_MODEL_ID,
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
- ANTHROPIC_DEFAULT_MODEL_ID,
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
- "anthropic/claude-sonnet-4.6",
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({ type: "tool_done", tool: toolCall.name, result });
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({ type: "tool_done", tool: toolCall.name, result });
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({ type: "tool_done", tool: toolCall.name, result });
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({ type: "tool_done", tool: toolCall.name, result });
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({ type: "tool_done", tool: toolCall.name, result });
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({ type: "tool_done", tool: toolCall.name, result });
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({ type: "tool_done", tool: toolCall.name, result });
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({ type: "tool_done", tool: toolCall.name, result });
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({ type: "tool_done", tool: toolCall.name, result });
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({ type: "tool_done", tool: toolCall.name, result });
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
  });