@agent-native/core 0.95.1 → 0.97.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (655) hide show
  1. package/README.md +6 -0
  2. package/corpus/README.md +2 -2
  3. package/corpus/core/CHANGELOG.md +64 -0
  4. package/corpus/core/docs/content/audit-log.mdx +2 -1
  5. package/corpus/core/docs/content/automations.mdx +7 -7
  6. package/corpus/core/docs/content/creating-templates.mdx +1 -1
  7. package/corpus/core/docs/content/internationalization.mdx +2 -1
  8. package/corpus/core/docs/content/locales/ar-SA/audit-log.mdx +2 -1
  9. package/corpus/core/docs/content/locales/ar-SA/automations.mdx +7 -7
  10. package/corpus/core/docs/content/locales/ar-SA/getting-started.mdx +7 -1
  11. package/corpus/core/docs/content/locales/ar-SA/internationalization.mdx +1 -1
  12. package/corpus/core/docs/content/locales/ar-SA/package-lifecycle.mdx +19 -0
  13. package/corpus/core/docs/content/locales/ar-SA/sandbox-adapters.mdx +18 -7
  14. package/corpus/core/docs/content/locales/ar-SA/security.mdx +8 -0
  15. package/corpus/core/docs/content/locales/de-DE/audit-log.mdx +2 -1
  16. package/corpus/core/docs/content/locales/de-DE/automations.mdx +7 -7
  17. package/corpus/core/docs/content/locales/de-DE/getting-started.mdx +7 -1
  18. package/corpus/core/docs/content/locales/de-DE/internationalization.mdx +1 -1
  19. package/corpus/core/docs/content/locales/de-DE/package-lifecycle.mdx +22 -0
  20. package/corpus/core/docs/content/locales/de-DE/sandbox-adapters.mdx +18 -7
  21. package/corpus/core/docs/content/locales/de-DE/security.mdx +8 -0
  22. package/corpus/core/docs/content/locales/es-ES/audit-log.mdx +2 -1
  23. package/corpus/core/docs/content/locales/es-ES/automations.mdx +7 -7
  24. package/corpus/core/docs/content/locales/es-ES/getting-started.mdx +7 -1
  25. package/corpus/core/docs/content/locales/es-ES/internationalization.mdx +1 -1
  26. package/corpus/core/docs/content/locales/es-ES/package-lifecycle.mdx +22 -0
  27. package/corpus/core/docs/content/locales/es-ES/sandbox-adapters.mdx +18 -7
  28. package/corpus/core/docs/content/locales/es-ES/security.mdx +8 -0
  29. package/corpus/core/docs/content/locales/fr-FR/audit-log.mdx +2 -1
  30. package/corpus/core/docs/content/locales/fr-FR/automations.mdx +7 -7
  31. package/corpus/core/docs/content/locales/fr-FR/getting-started.mdx +7 -1
  32. package/corpus/core/docs/content/locales/fr-FR/internationalization.mdx +1 -1
  33. package/corpus/core/docs/content/locales/fr-FR/package-lifecycle.mdx +21 -0
  34. package/corpus/core/docs/content/locales/fr-FR/sandbox-adapters.mdx +19 -8
  35. package/corpus/core/docs/content/locales/fr-FR/security.mdx +8 -0
  36. package/corpus/core/docs/content/locales/hi-IN/audit-log.mdx +2 -1
  37. package/corpus/core/docs/content/locales/hi-IN/automations.mdx +7 -7
  38. package/corpus/core/docs/content/locales/hi-IN/getting-started.mdx +7 -1
  39. package/corpus/core/docs/content/locales/hi-IN/internationalization.mdx +1 -1
  40. package/corpus/core/docs/content/locales/hi-IN/package-lifecycle.mdx +20 -0
  41. package/corpus/core/docs/content/locales/hi-IN/sandbox-adapters.mdx +18 -7
  42. package/corpus/core/docs/content/locales/hi-IN/security.mdx +8 -0
  43. package/corpus/core/docs/content/locales/ja-JP/audit-log.mdx +2 -1
  44. package/corpus/core/docs/content/locales/ja-JP/automations.mdx +7 -7
  45. package/corpus/core/docs/content/locales/ja-JP/getting-started.mdx +7 -1
  46. package/corpus/core/docs/content/locales/ja-JP/internationalization.mdx +1 -1
  47. package/corpus/core/docs/content/locales/ja-JP/package-lifecycle.mdx +21 -0
  48. package/corpus/core/docs/content/locales/ja-JP/sandbox-adapters.mdx +17 -6
  49. package/corpus/core/docs/content/locales/ja-JP/security.mdx +8 -0
  50. package/corpus/core/docs/content/locales/ko-KR/audit-log.mdx +2 -1
  51. package/corpus/core/docs/content/locales/ko-KR/automations.mdx +7 -7
  52. package/corpus/core/docs/content/locales/ko-KR/getting-started.mdx +7 -1
  53. package/corpus/core/docs/content/locales/ko-KR/internationalization.mdx +1 -1
  54. package/corpus/core/docs/content/locales/ko-KR/package-lifecycle.mdx +20 -0
  55. package/corpus/core/docs/content/locales/ko-KR/sandbox-adapters.mdx +17 -6
  56. package/corpus/core/docs/content/locales/ko-KR/security.mdx +8 -0
  57. package/corpus/core/docs/content/locales/pt-BR/audit-log.mdx +2 -1
  58. package/corpus/core/docs/content/locales/pt-BR/automations.mdx +7 -7
  59. package/corpus/core/docs/content/locales/pt-BR/getting-started.mdx +7 -1
  60. package/corpus/core/docs/content/locales/pt-BR/internationalization.mdx +1 -1
  61. package/corpus/core/docs/content/locales/pt-BR/package-lifecycle.mdx +21 -0
  62. package/corpus/core/docs/content/locales/pt-BR/sandbox-adapters.mdx +18 -7
  63. package/corpus/core/docs/content/locales/pt-BR/security.mdx +8 -0
  64. package/corpus/core/docs/content/locales/zh-CN/audit-log.mdx +2 -1
  65. package/corpus/core/docs/content/locales/zh-CN/automations.mdx +7 -7
  66. package/corpus/core/docs/content/locales/zh-CN/getting-started.mdx +6 -4
  67. package/corpus/core/docs/content/locales/zh-CN/internationalization.mdx +1 -1
  68. package/corpus/core/docs/content/locales/zh-CN/package-lifecycle.mdx +19 -0
  69. package/corpus/core/docs/content/locales/zh-CN/sandbox-adapters.mdx +17 -6
  70. package/corpus/core/docs/content/locales/zh-CN/security.mdx +8 -0
  71. package/corpus/core/docs/content/locales/zh-TW/audit-log.mdx +2 -1
  72. package/corpus/core/docs/content/locales/zh-TW/automations.mdx +7 -7
  73. package/corpus/core/docs/content/locales/zh-TW/getting-started.mdx +6 -4
  74. package/corpus/core/docs/content/locales/zh-TW/internationalization.mdx +1 -1
  75. package/corpus/core/docs/content/locales/zh-TW/package-lifecycle.mdx +19 -0
  76. package/corpus/core/docs/content/locales/zh-TW/sandbox-adapters.mdx +18 -7
  77. package/corpus/core/docs/content/locales/zh-TW/security.mdx +8 -0
  78. package/corpus/core/docs/content/package-lifecycle.mdx +51 -0
  79. package/corpus/core/docs/content/sandbox-adapters.mdx +16 -5
  80. package/corpus/core/package.json +11 -2
  81. package/corpus/core/src/a2a/auth-policy.ts +33 -0
  82. package/corpus/core/src/a2a/client.ts +11 -1
  83. package/corpus/core/src/agent/durable-background.ts +15 -7
  84. package/corpus/core/src/agent/production-agent.ts +87 -27
  85. package/corpus/core/src/agent/run-store.ts +13 -4
  86. package/corpus/core/src/agent/thread-data-builder.ts +7 -5
  87. package/corpus/core/src/audit/actions/export-audit-events.ts +162 -0
  88. package/corpus/core/src/audit/store.ts +8 -3
  89. package/corpus/core/src/audit/types.ts +3 -0
  90. package/corpus/core/src/chat-threads/store.ts +20 -1
  91. package/corpus/core/src/cli/code-agent-executor.ts +1 -0
  92. package/corpus/core/src/cli/code-agent-runs.ts +14 -0
  93. package/corpus/core/src/cli/doctor.ts +396 -0
  94. package/corpus/core/src/cli/index.ts +56 -0
  95. package/corpus/core/src/cli/info.ts +3 -3
  96. package/corpus/core/src/cli/package-lifecycle.ts +821 -0
  97. package/corpus/core/src/client/AgentPanel.tsx +32 -25
  98. package/corpus/core/src/client/AssistantChat.tsx +36 -20
  99. package/corpus/core/src/client/MultiTabAssistantChat.tsx +141 -90
  100. package/corpus/core/src/client/agent-chat-adapter.ts +9 -9
  101. package/corpus/core/src/client/chat/ChatHistoryList.tsx +404 -0
  102. package/corpus/core/src/client/chat/index.ts +6 -0
  103. package/corpus/core/src/client/chat/tool-call-display.tsx +37 -3
  104. package/corpus/core/src/client/code-agent-chat-adapter.ts +72 -4
  105. package/corpus/core/src/client/composer/RealtimeVoiceMode.tsx +52 -11
  106. package/corpus/core/src/client/composer/TiptapComposer.tsx +157 -20
  107. package/corpus/core/src/client/composer/VoiceButton.tsx +28 -0
  108. package/corpus/core/src/client/composer/useRealtimeVoiceMode.tsx +5 -0
  109. package/corpus/core/src/client/conversation/code-agent-transcript.ts +4 -5
  110. package/corpus/core/src/client/guided-questions.tsx +2 -1
  111. package/corpus/core/src/client/index.ts +11 -0
  112. package/corpus/core/src/client/use-chat-threads.ts +10 -1
  113. package/corpus/core/src/client/voice-provider-status.ts +44 -0
  114. package/corpus/core/src/code-agents/transcript-normalizer.ts +76 -0
  115. package/corpus/core/src/deploy/build.ts +12 -11
  116. package/corpus/core/src/guards/db-tool-scoping.ts +129 -0
  117. package/corpus/core/src/guards/index.ts +23 -0
  118. package/corpus/core/src/guards/no-drizzle-push.ts +116 -0
  119. package/corpus/core/src/guards/no-env-credentials.ts +229 -0
  120. package/corpus/core/src/guards/no-env-mutation.ts +114 -0
  121. package/corpus/core/src/guards/no-localhost-fallback.ts +124 -0
  122. package/corpus/core/src/guards/no-unscoped-credentials.ts +227 -0
  123. package/corpus/core/src/guards/no-unscoped-queries.ts +834 -0
  124. package/corpus/core/src/guards/scan-utils.ts +105 -0
  125. package/corpus/core/src/guards/types.ts +30 -0
  126. package/corpus/core/src/integrations/a2a-continuation-processor.ts +35 -5
  127. package/corpus/core/src/integrations/adapters/slack.ts +74 -21
  128. package/corpus/core/src/integrations/webhook-handler.ts +14 -0
  129. package/corpus/core/src/localization/default-messages.ts +6 -0
  130. package/corpus/core/src/observability/hosted-model-experiment.ts +118 -0
  131. package/corpus/core/src/observability/routes.ts +17 -0
  132. package/corpus/core/src/observability/store.ts +4 -1
  133. package/corpus/core/src/observability/traces.ts +41 -2
  134. package/corpus/core/src/org/accept-pending.ts +9 -1
  135. package/corpus/core/src/org/migrations.ts +41 -0
  136. package/corpus/core/src/package-lifecycle/index.ts +1 -0
  137. package/corpus/core/src/package-lifecycle/manifest.ts +120 -0
  138. package/corpus/core/src/provider-api/custom-registry.ts +56 -0
  139. package/corpus/core/src/provider-api/index.ts +2 -0
  140. package/corpus/core/src/scripts/agent-engines/list-agent-engines.ts +19 -1
  141. package/corpus/core/src/scripts/call-agent.ts +53 -3
  142. package/corpus/core/src/scripts/chat/search-chats.ts +11 -8
  143. package/corpus/core/src/secrets/register-framework-secrets.ts +1 -1
  144. package/corpus/core/src/secrets/storage.ts +47 -27
  145. package/corpus/core/src/server/action-discovery.ts +4 -0
  146. package/corpus/core/src/server/agent-chat-plugin.ts +95 -18
  147. package/corpus/core/src/server/core-routes-plugin.ts +45 -14
  148. package/corpus/core/src/server/csrf.ts +24 -5
  149. package/corpus/core/src/server/framework-request-handler.ts +34 -0
  150. package/corpus/core/src/server/google-realtime-session.ts +1 -36
  151. package/corpus/core/src/server/poll.ts +24 -2
  152. package/corpus/core/src/server/realtime-voice.ts +80 -24
  153. package/corpus/core/src/server/request-origin.ts +63 -0
  154. package/corpus/core/src/server/transcribe-voice.ts +1 -50
  155. package/corpus/core/src/server/voice-providers-status.ts +4 -3
  156. package/corpus/core/src/shared/cache-control.ts +2 -8
  157. package/corpus/core/src/styles/agent-native.css +1 -0
  158. package/corpus/core/src/styles/chat-history-list.css +313 -0
  159. package/corpus/core/src/templates/default/package.json +2 -2
  160. package/corpus/core/src/templates/headless/package.json +0 -1
  161. package/corpus/core/src/templates/workspace-core/.agents/skills/audit-log/SKILL.md +3 -0
  162. package/corpus/core/src/templates/workspace-core/.agents/skills/automations/SKILL.md +1 -1
  163. package/corpus/core/src/templates/workspace-core/.agents/skills/observability/SKILL.md +20 -0
  164. package/corpus/core/src/templates/workspace-core/.agents/skills/voice-transcription/SKILL.md +8 -4
  165. package/corpus/core/src/templates/workspace-core/package.json +0 -1
  166. package/corpus/core/src/templates/workspace-root/package.json +0 -1
  167. package/corpus/core/src/triggers/actions.ts +11 -3
  168. package/corpus/core/src/triggers/types.ts +7 -1
  169. package/corpus/core/src/vite/client.ts +1 -0
  170. package/corpus/templates/analytics/AGENTS.md +7 -0
  171. package/corpus/templates/analytics/actions/bigquery.ts +26 -2
  172. package/corpus/templates/analytics/actions/compose-dashboard.ts +65 -37
  173. package/corpus/templates/analytics/actions/data-source-status.ts +18 -0
  174. package/corpus/templates/analytics/actions/mutate-dashboard.ts +73 -24
  175. package/corpus/templates/analytics/actions/reorder-dashboard-panels.ts +16 -13
  176. package/corpus/templates/analytics/actions/update-dashboard.ts +53 -42
  177. package/corpus/templates/analytics/app/components/layout/Sidebar.tsx +5 -4
  178. package/corpus/templates/analytics/app/global.css +10 -0
  179. package/corpus/templates/analytics/app/pages/Ask.tsx +25 -2
  180. package/corpus/templates/analytics/changelog/2026-07-10-analytics-answers-simple-time-bounded-metrics-without-unnece.md +6 -0
  181. package/corpus/templates/analytics/changelog/2026-07-10-analytics-chat-reliably-uses-connected-data-sources-across-s.md +6 -0
  182. package/corpus/templates/analytics/changelog/2026-07-10-chat-threads-now-stay-clear-of-top-actions-and-fade-smoothly.md +6 -0
  183. package/corpus/templates/analytics/changelog/2026-07-10-context-chips-can-now-be-selected-and-removed-one-at-a-time-.md +6 -0
  184. package/corpus/templates/analytics/changelog/2026-07-10-dashboard-edits-from-the-agent-and-the-ui-at-the-same-time-n.md +6 -0
  185. package/corpus/templates/analytics/changelog/2026-07-10-the-ask-composer-no-longer-carries-dashboard-or-panel-contex.md +6 -0
  186. package/corpus/templates/analytics/changelog/2026-07-10-the-ask-section-stays-highlighted-while-its-chat-history-is-.md +6 -0
  187. package/corpus/templates/analytics/changelog/2026-07-10-timed-out-bigquery-jobs-are-now-cancelled-so-they-stop-consu.md +6 -0
  188. package/corpus/templates/analytics/package.json +1 -2
  189. package/corpus/templates/analytics/server/lib/bigquery.ts +91 -14
  190. package/corpus/templates/analytics/server/lib/dashboards-store.ts +154 -11
  191. package/corpus/templates/analytics/server/plugins/agent-chat.ts +82 -7
  192. package/corpus/templates/assets/package.json +1 -2
  193. package/corpus/templates/brain/package.json +1 -2
  194. package/corpus/templates/calendar/package.json +1 -2
  195. package/corpus/templates/chat/package.json +1 -2
  196. package/corpus/templates/clips/changelog/2026-07-10-atomic-view-tracking.md +6 -0
  197. package/corpus/templates/clips/chrome-extension/package.json +3 -2
  198. package/corpus/templates/clips/desktop/package.json +6 -4
  199. package/corpus/templates/clips/desktop/src/lib/recorder.ts +26 -13
  200. package/corpus/templates/clips/desktop/src/lib/voice-dictation.ts +4 -1
  201. package/corpus/templates/clips/package.json +1 -2
  202. package/corpus/templates/clips/server/db/schema.ts +29 -17
  203. package/corpus/templates/clips/server/plugins/db.ts +8 -0
  204. package/corpus/templates/clips/server/routes/api/view-event.post.ts +260 -105
  205. package/corpus/templates/content/.agents/skills/notion-integration/SKILL.md +16 -0
  206. package/corpus/templates/content/AGENTS.md +72 -62
  207. package/corpus/templates/content/actions/_content-database-source-adapters.ts +84 -0
  208. package/corpus/templates/content/actions/_database-source-utils.ts +206 -96
  209. package/corpus/templates/content/actions/_notion-database-source-adapter.ts +216 -0
  210. package/corpus/templates/content/actions/_position-utils.ts +76 -0
  211. package/corpus/templates/content/actions/_property-utils.ts +31 -20
  212. package/corpus/templates/content/actions/add-database-item.ts +52 -39
  213. package/corpus/templates/content/actions/attach-content-database-source.ts +95 -11
  214. package/corpus/templates/content/actions/change-content-database-source-role.ts +24 -1
  215. package/corpus/templates/content/actions/configure-document-property.ts +36 -27
  216. package/corpus/templates/content/actions/create-content-database.ts +40 -30
  217. package/corpus/templates/content/actions/create-document.ts +39 -32
  218. package/corpus/templates/content/actions/duplicate-document-property.ts +37 -28
  219. package/corpus/templates/content/actions/list-notion-database-sources.ts +80 -0
  220. package/corpus/templates/content/actions/move-document.ts +64 -48
  221. package/corpus/templates/content/actions/refresh-content-database-source.ts +42 -3
  222. package/corpus/templates/content/actions/share-local-file-document.ts +36 -27
  223. package/corpus/templates/content/actions/suggest-source-join-key.ts +39 -16
  224. package/corpus/templates/content/app/components/editor/database/DatabaseView.tsx +89 -23
  225. package/corpus/templates/content/app/components/editor/database/settings.tsx +1 -1
  226. package/corpus/templates/content/app/hooks/use-content-database.ts +18 -1
  227. package/corpus/templates/content/app/i18n/zh-TW.ts +4 -0
  228. package/corpus/templates/content/app/i18n-data.ts +40 -0
  229. package/corpus/templates/content/changelog/2026-07-10-failed-row-creation-and-source-attach-now-show-an-error-inst.md +6 -0
  230. package/corpus/templates/content/changelog/2026-07-10-items-added-at-the-same-time-no-longer-end-up-with-identical.md +6 -0
  231. package/corpus/templates/content/changelog/2026-07-10-notion-databases-can-add-read-only-details-to-content-tables.md +6 -0
  232. package/corpus/templates/content/package.json +1 -2
  233. package/corpus/templates/content/parity/matrix.md +25 -25
  234. package/corpus/templates/content/parity/matrix.ts +1 -0
  235. package/corpus/templates/content/server/routes/api/documents/[id]/move.patch.ts +43 -26
  236. package/corpus/templates/content/shared/api.ts +16 -1
  237. package/corpus/templates/design/.agents/skills/visual-edit/SKILL.md +8 -4
  238. package/corpus/templates/design/AGENTS.md +12 -2
  239. package/corpus/templates/design/DEVELOPING.md +10 -6
  240. package/corpus/templates/design/actions/apply-visual-edit.ts +191 -6
  241. package/corpus/templates/design/actions/duplicate-design.ts +31 -25
  242. package/corpus/templates/design/app/pages/design-editor/pending-edits.ts +5 -1
  243. package/corpus/templates/design/changelog/2026-07-10-duplicating-a-design-can-no-longer-produce-a-copy-with-missi.md +6 -0
  244. package/corpus/templates/design/changelog/2026-07-10-local-visual-edits-can-now-save-safe-leaf-text-class-and.md +6 -0
  245. package/corpus/templates/design/package.json +1 -1
  246. package/corpus/templates/design/shared/local-jsx-visual-edit.ts +388 -0
  247. package/corpus/templates/dispatch/package.json +1 -2
  248. package/corpus/templates/forms/actions/patch-form-fields.ts +82 -44
  249. package/corpus/templates/forms/changelog/2026-07-10-simultaneous-edits-to-different-form-fields-no-longer-overwr.md +6 -0
  250. package/corpus/templates/forms/package.json +1 -2
  251. package/corpus/templates/macros/package.json +1 -2
  252. package/corpus/templates/mail/app/components/email/EmailThread.tsx +3 -1
  253. package/corpus/templates/mail/changelog/2026-07-10-fixed-calendar-rsvp-buttons-in-emails-firing-duplicate-respo.md +6 -0
  254. package/corpus/templates/mail/package.json +1 -2
  255. package/corpus/templates/plan/actions/restore-plan-version.ts +126 -96
  256. package/corpus/templates/plan/changelog/2026-07-10-restoring-a-plan-version-can-no-longer-leave-a-plan-half-res.md +6 -0
  257. package/corpus/templates/plan/package.json +1 -2
  258. package/corpus/templates/plan/server/plans.ts +9 -2
  259. package/corpus/templates/slides/actions/list-decks.ts +28 -0
  260. package/corpus/templates/slides/app/components/deck/MermaidRenderer.tsx +41 -26
  261. package/corpus/templates/slides/app/components/design-system/DesignSystemSetup.tsx +4 -8
  262. package/corpus/templates/slides/app/components/editor/EditorSidebar.tsx +2 -4
  263. package/corpus/templates/slides/app/components/editor/EditorToolbar.tsx +4 -8
  264. package/corpus/templates/slides/app/components/editor/ExportMenu.tsx +5 -12
  265. package/corpus/templates/slides/app/components/editor/HistoryPanel.tsx +3 -6
  266. package/corpus/templates/slides/app/components/editor/ImageDropPromptPopover.tsx +3 -6
  267. package/corpus/templates/slides/app/components/editor/PromptDialog.tsx +2 -5
  268. package/corpus/templates/slides/app/context/DeckContext.tsx +47 -4
  269. package/corpus/templates/slides/app/pages/DeckEditor.tsx +11 -30
  270. package/corpus/templates/slides/app/pages/Index.tsx +2 -3
  271. package/corpus/templates/slides/app/root.tsx +0 -5
  272. package/corpus/templates/slides/changelog/2026-07-10-deck-lists-load-much-faster-and-no-longer-re-download-slide-.md +6 -0
  273. package/corpus/templates/slides/package.json +1 -2
  274. package/dist/a2a/auth-policy.d.ts +19 -0
  275. package/dist/a2a/auth-policy.d.ts.map +1 -1
  276. package/dist/a2a/auth-policy.js +32 -0
  277. package/dist/a2a/auth-policy.js.map +1 -1
  278. package/dist/a2a/client.d.ts +7 -0
  279. package/dist/a2a/client.d.ts.map +1 -1
  280. package/dist/a2a/client.js +2 -1
  281. package/dist/a2a/client.js.map +1 -1
  282. package/dist/agent/durable-background.d.ts +8 -5
  283. package/dist/agent/durable-background.d.ts.map +1 -1
  284. package/dist/agent/durable-background.js +15 -8
  285. package/dist/agent/durable-background.js.map +1 -1
  286. package/dist/agent/production-agent.d.ts +6 -0
  287. package/dist/agent/production-agent.d.ts.map +1 -1
  288. package/dist/agent/production-agent.js +63 -26
  289. package/dist/agent/production-agent.js.map +1 -1
  290. package/dist/agent/run-store.d.ts.map +1 -1
  291. package/dist/agent/run-store.js +9 -4
  292. package/dist/agent/run-store.js.map +1 -1
  293. package/dist/agent/thread-data-builder.d.ts +1 -0
  294. package/dist/agent/thread-data-builder.d.ts.map +1 -1
  295. package/dist/agent/thread-data-builder.js +6 -5
  296. package/dist/agent/thread-data-builder.js.map +1 -1
  297. package/dist/audit/actions/export-audit-events.d.ts +27 -0
  298. package/dist/audit/actions/export-audit-events.d.ts.map +1 -0
  299. package/dist/audit/actions/export-audit-events.js +144 -0
  300. package/dist/audit/actions/export-audit-events.js.map +1 -0
  301. package/dist/audit/store.d.ts +1 -0
  302. package/dist/audit/store.d.ts.map +1 -1
  303. package/dist/audit/store.js +8 -3
  304. package/dist/audit/store.js.map +1 -1
  305. package/dist/audit/types.d.ts +3 -0
  306. package/dist/audit/types.d.ts.map +1 -1
  307. package/dist/audit/types.js.map +1 -1
  308. package/dist/chat-threads/store.d.ts +10 -0
  309. package/dist/chat-threads/store.d.ts.map +1 -1
  310. package/dist/chat-threads/store.js +6 -0
  311. package/dist/chat-threads/store.js.map +1 -1
  312. package/dist/cli/code-agent-executor.d.ts.map +1 -1
  313. package/dist/cli/code-agent-executor.js +1 -0
  314. package/dist/cli/code-agent-executor.js.map +1 -1
  315. package/dist/cli/code-agent-runs.d.ts +12 -0
  316. package/dist/cli/code-agent-runs.d.ts.map +1 -1
  317. package/dist/cli/code-agent-runs.js +1 -0
  318. package/dist/cli/code-agent-runs.js.map +1 -1
  319. package/dist/cli/doctor.d.ts +83 -0
  320. package/dist/cli/doctor.d.ts.map +1 -0
  321. package/dist/cli/doctor.js +277 -0
  322. package/dist/cli/doctor.js.map +1 -0
  323. package/dist/cli/index.js +50 -0
  324. package/dist/cli/index.js.map +1 -1
  325. package/dist/cli/info.js +3 -3
  326. package/dist/cli/info.js.map +1 -1
  327. package/dist/cli/package-lifecycle.d.ts +50 -0
  328. package/dist/cli/package-lifecycle.d.ts.map +1 -0
  329. package/dist/cli/package-lifecycle.js +560 -0
  330. package/dist/cli/package-lifecycle.js.map +1 -0
  331. package/dist/client/AgentPanel.d.ts.map +1 -1
  332. package/dist/client/AgentPanel.js +3 -3
  333. package/dist/client/AgentPanel.js.map +1 -1
  334. package/dist/client/AssistantChat.d.ts +11 -0
  335. package/dist/client/AssistantChat.d.ts.map +1 -1
  336. package/dist/client/AssistantChat.js +7 -4
  337. package/dist/client/AssistantChat.js.map +1 -1
  338. package/dist/client/MultiTabAssistantChat.d.ts.map +1 -1
  339. package/dist/client/MultiTabAssistantChat.js +83 -10
  340. package/dist/client/MultiTabAssistantChat.js.map +1 -1
  341. package/dist/client/agent-chat-adapter.js +7 -3
  342. package/dist/client/agent-chat-adapter.js.map +1 -1
  343. package/dist/client/chat/ChatHistoryList.d.ts +88 -0
  344. package/dist/client/chat/ChatHistoryList.d.ts.map +1 -0
  345. package/dist/client/chat/ChatHistoryList.js +83 -0
  346. package/dist/client/chat/ChatHistoryList.js.map +1 -0
  347. package/dist/client/chat/index.d.ts +1 -0
  348. package/dist/client/chat/index.d.ts.map +1 -1
  349. package/dist/client/chat/index.js +1 -0
  350. package/dist/client/chat/index.js.map +1 -1
  351. package/dist/client/chat/tool-call-display.d.ts +13 -1
  352. package/dist/client/chat/tool-call-display.d.ts.map +1 -1
  353. package/dist/client/chat/tool-call-display.js +10 -2
  354. package/dist/client/chat/tool-call-display.js.map +1 -1
  355. package/dist/client/code-agent-chat-adapter.d.ts +17 -1
  356. package/dist/client/code-agent-chat-adapter.d.ts.map +1 -1
  357. package/dist/client/code-agent-chat-adapter.js +47 -3
  358. package/dist/client/code-agent-chat-adapter.js.map +1 -1
  359. package/dist/client/composer/RealtimeVoiceMode.d.ts +11 -1
  360. package/dist/client/composer/RealtimeVoiceMode.d.ts.map +1 -1
  361. package/dist/client/composer/RealtimeVoiceMode.js +5 -3
  362. package/dist/client/composer/RealtimeVoiceMode.js.map +1 -1
  363. package/dist/client/composer/TiptapComposer.d.ts +25 -2
  364. package/dist/client/composer/TiptapComposer.d.ts.map +1 -1
  365. package/dist/client/composer/TiptapComposer.js +96 -5
  366. package/dist/client/composer/TiptapComposer.js.map +1 -1
  367. package/dist/client/composer/VoiceButton.d.ts.map +1 -1
  368. package/dist/client/composer/VoiceButton.js +21 -1
  369. package/dist/client/composer/VoiceButton.js.map +1 -1
  370. package/dist/client/composer/useRealtimeVoiceMode.d.ts.map +1 -1
  371. package/dist/client/composer/useRealtimeVoiceMode.js +5 -0
  372. package/dist/client/composer/useRealtimeVoiceMode.js.map +1 -1
  373. package/dist/client/conversation/code-agent-transcript.d.ts +2 -0
  374. package/dist/client/conversation/code-agent-transcript.d.ts.map +1 -1
  375. package/dist/client/conversation/code-agent-transcript.js +3 -5
  376. package/dist/client/conversation/code-agent-transcript.js.map +1 -1
  377. package/dist/client/guided-questions.d.ts.map +1 -1
  378. package/dist/client/guided-questions.js +2 -1
  379. package/dist/client/guided-questions.js.map +1 -1
  380. package/dist/client/index.d.ts +3 -1
  381. package/dist/client/index.d.ts.map +1 -1
  382. package/dist/client/index.js +3 -1
  383. package/dist/client/index.js.map +1 -1
  384. package/dist/client/use-chat-threads.d.ts.map +1 -1
  385. package/dist/client/use-chat-threads.js +9 -1
  386. package/dist/client/use-chat-threads.js.map +1 -1
  387. package/dist/client/voice-provider-status.d.ts +10 -0
  388. package/dist/client/voice-provider-status.d.ts.map +1 -0
  389. package/dist/client/voice-provider-status.js +32 -0
  390. package/dist/client/voice-provider-status.js.map +1 -0
  391. package/dist/code-agents/transcript-normalizer.d.ts +29 -0
  392. package/dist/code-agents/transcript-normalizer.d.ts.map +1 -1
  393. package/dist/code-agents/transcript-normalizer.js +55 -0
  394. package/dist/code-agents/transcript-normalizer.js.map +1 -1
  395. package/dist/collab/routes.d.ts +1 -1
  396. package/dist/deploy/build.d.ts.map +1 -1
  397. package/dist/deploy/build.js +13 -11
  398. package/dist/deploy/build.js.map +1 -1
  399. package/dist/guards/db-tool-scoping.d.ts +38 -0
  400. package/dist/guards/db-tool-scoping.d.ts.map +1 -0
  401. package/dist/guards/db-tool-scoping.js +114 -0
  402. package/dist/guards/db-tool-scoping.js.map +1 -0
  403. package/dist/guards/index.d.ts +23 -0
  404. package/dist/guards/index.d.ts.map +1 -0
  405. package/dist/guards/index.js +19 -0
  406. package/dist/guards/index.js.map +1 -0
  407. package/dist/guards/no-drizzle-push.d.ts +14 -0
  408. package/dist/guards/no-drizzle-push.d.ts.map +1 -0
  409. package/dist/guards/no-drizzle-push.js +97 -0
  410. package/dist/guards/no-drizzle-push.js.map +1 -0
  411. package/dist/guards/no-env-credentials.d.ts +36 -0
  412. package/dist/guards/no-env-credentials.d.ts.map +1 -0
  413. package/dist/guards/no-env-credentials.js +204 -0
  414. package/dist/guards/no-env-credentials.js.map +1 -0
  415. package/dist/guards/no-env-mutation.d.ts +23 -0
  416. package/dist/guards/no-env-mutation.d.ts.map +1 -0
  417. package/dist/guards/no-env-mutation.js +90 -0
  418. package/dist/guards/no-env-mutation.js.map +1 -0
  419. package/dist/guards/no-localhost-fallback.d.ts +30 -0
  420. package/dist/guards/no-localhost-fallback.d.ts.map +1 -0
  421. package/dist/guards/no-localhost-fallback.js +105 -0
  422. package/dist/guards/no-localhost-fallback.js.map +1 -0
  423. package/dist/guards/no-unscoped-credentials.d.ts +28 -0
  424. package/dist/guards/no-unscoped-credentials.d.ts.map +1 -0
  425. package/dist/guards/no-unscoped-credentials.js +199 -0
  426. package/dist/guards/no-unscoped-credentials.js.map +1 -0
  427. package/dist/guards/no-unscoped-queries.d.ts +32 -0
  428. package/dist/guards/no-unscoped-queries.d.ts.map +1 -0
  429. package/dist/guards/no-unscoped-queries.js +720 -0
  430. package/dist/guards/no-unscoped-queries.js.map +1 -0
  431. package/dist/guards/scan-utils.d.ts +28 -0
  432. package/dist/guards/scan-utils.d.ts.map +1 -0
  433. package/dist/guards/scan-utils.js +92 -0
  434. package/dist/guards/scan-utils.js.map +1 -0
  435. package/dist/guards/types.d.ts +28 -0
  436. package/dist/guards/types.d.ts.map +1 -0
  437. package/dist/guards/types.js +11 -0
  438. package/dist/guards/types.js.map +1 -0
  439. package/dist/integrations/a2a-continuation-processor.d.ts.map +1 -1
  440. package/dist/integrations/a2a-continuation-processor.js +25 -5
  441. package/dist/integrations/a2a-continuation-processor.js.map +1 -1
  442. package/dist/integrations/adapters/slack.d.ts.map +1 -1
  443. package/dist/integrations/adapters/slack.js +55 -21
  444. package/dist/integrations/adapters/slack.js.map +1 -1
  445. package/dist/integrations/webhook-handler.d.ts.map +1 -1
  446. package/dist/integrations/webhook-handler.js +11 -0
  447. package/dist/integrations/webhook-handler.js.map +1 -1
  448. package/dist/localization/default-messages.d.ts +5 -0
  449. package/dist/localization/default-messages.d.ts.map +1 -1
  450. package/dist/localization/default-messages.js +5 -0
  451. package/dist/localization/default-messages.js.map +1 -1
  452. package/dist/notifications/routes.d.ts +2 -2
  453. package/dist/observability/hosted-model-experiment.d.ts +39 -0
  454. package/dist/observability/hosted-model-experiment.d.ts.map +1 -0
  455. package/dist/observability/hosted-model-experiment.js +90 -0
  456. package/dist/observability/hosted-model-experiment.js.map +1 -0
  457. package/dist/observability/routes.d.ts +1 -1
  458. package/dist/observability/routes.d.ts.map +1 -1
  459. package/dist/observability/routes.js +16 -0
  460. package/dist/observability/routes.js.map +1 -1
  461. package/dist/observability/store.d.ts.map +1 -1
  462. package/dist/observability/store.js +4 -1
  463. package/dist/observability/store.js.map +1 -1
  464. package/dist/observability/traces.d.ts +6 -0
  465. package/dist/observability/traces.d.ts.map +1 -1
  466. package/dist/observability/traces.js +28 -2
  467. package/dist/observability/traces.js.map +1 -1
  468. package/dist/org/accept-pending.d.ts.map +1 -1
  469. package/dist/org/accept-pending.js +9 -1
  470. package/dist/org/accept-pending.js.map +1 -1
  471. package/dist/org/migrations.d.ts +7 -2
  472. package/dist/org/migrations.d.ts.map +1 -1
  473. package/dist/org/migrations.js +41 -0
  474. package/dist/org/migrations.js.map +1 -1
  475. package/dist/package-lifecycle/index.d.ts +2 -0
  476. package/dist/package-lifecycle/index.d.ts.map +1 -0
  477. package/dist/package-lifecycle/index.js +2 -0
  478. package/dist/package-lifecycle/index.js.map +1 -0
  479. package/dist/package-lifecycle/manifest.d.ts +24 -0
  480. package/dist/package-lifecycle/manifest.d.ts.map +1 -0
  481. package/dist/package-lifecycle/manifest.js +81 -0
  482. package/dist/package-lifecycle/manifest.js.map +1 -0
  483. package/dist/progress/routes.d.ts +1 -1
  484. package/dist/provider-api/custom-registry.d.ts +32 -1
  485. package/dist/provider-api/custom-registry.d.ts.map +1 -1
  486. package/dist/provider-api/custom-registry.js +41 -1
  487. package/dist/provider-api/custom-registry.js.map +1 -1
  488. package/dist/provider-api/index.d.ts +1 -1
  489. package/dist/provider-api/index.d.ts.map +1 -1
  490. package/dist/provider-api/index.js +1 -1
  491. package/dist/provider-api/index.js.map +1 -1
  492. package/dist/resources/handlers.d.ts +1 -1
  493. package/dist/scripts/agent-engines/list-agent-engines.d.ts.map +1 -1
  494. package/dist/scripts/agent-engines/list-agent-engines.js +19 -1
  495. package/dist/scripts/agent-engines/list-agent-engines.js.map +1 -1
  496. package/dist/scripts/call-agent.d.ts.map +1 -1
  497. package/dist/scripts/call-agent.js +43 -3
  498. package/dist/scripts/call-agent.js.map +1 -1
  499. package/dist/scripts/chat/search-chats.d.ts +1 -1
  500. package/dist/scripts/chat/search-chats.d.ts.map +1 -1
  501. package/dist/scripts/chat/search-chats.js +11 -8
  502. package/dist/scripts/chat/search-chats.js.map +1 -1
  503. package/dist/secrets/register-framework-secrets.js +1 -1
  504. package/dist/secrets/register-framework-secrets.js.map +1 -1
  505. package/dist/secrets/storage.d.ts.map +1 -1
  506. package/dist/secrets/storage.js +45 -27
  507. package/dist/secrets/storage.js.map +1 -1
  508. package/dist/server/action-discovery.d.ts.map +1 -1
  509. package/dist/server/action-discovery.js +4 -0
  510. package/dist/server/action-discovery.js.map +1 -1
  511. package/dist/server/agent-chat-plugin.d.ts +11 -0
  512. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  513. package/dist/server/agent-chat-plugin.js +74 -19
  514. package/dist/server/agent-chat-plugin.js.map +1 -1
  515. package/dist/server/agent-engine-api-key-route.d.ts +1 -1
  516. package/dist/server/core-routes-plugin.d.ts +3 -0
  517. package/dist/server/core-routes-plugin.d.ts.map +1 -1
  518. package/dist/server/core-routes-plugin.js +36 -12
  519. package/dist/server/core-routes-plugin.js.map +1 -1
  520. package/dist/server/csrf.d.ts.map +1 -1
  521. package/dist/server/csrf.js +18 -5
  522. package/dist/server/csrf.js.map +1 -1
  523. package/dist/server/framework-request-handler.d.ts.map +1 -1
  524. package/dist/server/framework-request-handler.js +34 -0
  525. package/dist/server/framework-request-handler.js.map +1 -1
  526. package/dist/server/google-realtime-session.d.ts.map +1 -1
  527. package/dist/server/google-realtime-session.js +2 -34
  528. package/dist/server/google-realtime-session.js.map +1 -1
  529. package/dist/server/poll.d.ts.map +1 -1
  530. package/dist/server/poll.js +24 -2
  531. package/dist/server/poll.js.map +1 -1
  532. package/dist/server/realtime-voice.d.ts.map +1 -1
  533. package/dist/server/realtime-voice.js +64 -21
  534. package/dist/server/realtime-voice.js.map +1 -1
  535. package/dist/server/request-origin.d.ts +10 -0
  536. package/dist/server/request-origin.d.ts.map +1 -0
  537. package/dist/server/request-origin.js +60 -0
  538. package/dist/server/request-origin.js.map +1 -0
  539. package/dist/server/transcribe-voice.d.ts.map +1 -1
  540. package/dist/server/transcribe-voice.js +2 -48
  541. package/dist/server/transcribe-voice.js.map +1 -1
  542. package/dist/server/voice-providers-status.d.ts.map +1 -1
  543. package/dist/server/voice-providers-status.js +2 -3
  544. package/dist/server/voice-providers-status.js.map +1 -1
  545. package/dist/shared/cache-control.d.ts +4 -6
  546. package/dist/shared/cache-control.d.ts.map +1 -1
  547. package/dist/shared/cache-control.js +2 -7
  548. package/dist/shared/cache-control.js.map +1 -1
  549. package/dist/styles/agent-native.css +1 -0
  550. package/dist/styles/chat-history-list.css +313 -0
  551. package/dist/templates/default/package.json +2 -2
  552. package/dist/templates/headless/package.json +0 -1
  553. package/dist/templates/workspace-core/.agents/skills/audit-log/SKILL.md +3 -0
  554. package/dist/templates/workspace-core/.agents/skills/automations/SKILL.md +1 -1
  555. package/dist/templates/workspace-core/.agents/skills/observability/SKILL.md +20 -0
  556. package/dist/templates/workspace-core/.agents/skills/voice-transcription/SKILL.md +8 -4
  557. package/dist/templates/workspace-core/package.json +0 -1
  558. package/dist/templates/workspace-root/package.json +0 -1
  559. package/dist/triggers/actions.d.ts.map +1 -1
  560. package/dist/triggers/actions.js +8 -3
  561. package/dist/triggers/actions.js.map +1 -1
  562. package/dist/triggers/types.d.ts +7 -1
  563. package/dist/triggers/types.d.ts.map +1 -1
  564. package/dist/triggers/types.js.map +1 -1
  565. package/dist/vite/client.d.ts.map +1 -1
  566. package/dist/vite/client.js +1 -0
  567. package/dist/vite/client.js.map +1 -1
  568. package/docs/content/audit-log.mdx +2 -1
  569. package/docs/content/automations.mdx +7 -7
  570. package/docs/content/creating-templates.mdx +1 -1
  571. package/docs/content/internationalization.mdx +2 -1
  572. package/docs/content/locales/ar-SA/audit-log.mdx +2 -1
  573. package/docs/content/locales/ar-SA/automations.mdx +7 -7
  574. package/docs/content/locales/ar-SA/getting-started.mdx +7 -1
  575. package/docs/content/locales/ar-SA/internationalization.mdx +1 -1
  576. package/docs/content/locales/ar-SA/package-lifecycle.mdx +19 -0
  577. package/docs/content/locales/ar-SA/sandbox-adapters.mdx +18 -7
  578. package/docs/content/locales/ar-SA/security.mdx +8 -0
  579. package/docs/content/locales/de-DE/audit-log.mdx +2 -1
  580. package/docs/content/locales/de-DE/automations.mdx +7 -7
  581. package/docs/content/locales/de-DE/getting-started.mdx +7 -1
  582. package/docs/content/locales/de-DE/internationalization.mdx +1 -1
  583. package/docs/content/locales/de-DE/package-lifecycle.mdx +22 -0
  584. package/docs/content/locales/de-DE/sandbox-adapters.mdx +18 -7
  585. package/docs/content/locales/de-DE/security.mdx +8 -0
  586. package/docs/content/locales/es-ES/audit-log.mdx +2 -1
  587. package/docs/content/locales/es-ES/automations.mdx +7 -7
  588. package/docs/content/locales/es-ES/getting-started.mdx +7 -1
  589. package/docs/content/locales/es-ES/internationalization.mdx +1 -1
  590. package/docs/content/locales/es-ES/package-lifecycle.mdx +22 -0
  591. package/docs/content/locales/es-ES/sandbox-adapters.mdx +18 -7
  592. package/docs/content/locales/es-ES/security.mdx +8 -0
  593. package/docs/content/locales/fr-FR/audit-log.mdx +2 -1
  594. package/docs/content/locales/fr-FR/automations.mdx +7 -7
  595. package/docs/content/locales/fr-FR/getting-started.mdx +7 -1
  596. package/docs/content/locales/fr-FR/internationalization.mdx +1 -1
  597. package/docs/content/locales/fr-FR/package-lifecycle.mdx +21 -0
  598. package/docs/content/locales/fr-FR/sandbox-adapters.mdx +19 -8
  599. package/docs/content/locales/fr-FR/security.mdx +8 -0
  600. package/docs/content/locales/hi-IN/audit-log.mdx +2 -1
  601. package/docs/content/locales/hi-IN/automations.mdx +7 -7
  602. package/docs/content/locales/hi-IN/getting-started.mdx +7 -1
  603. package/docs/content/locales/hi-IN/internationalization.mdx +1 -1
  604. package/docs/content/locales/hi-IN/package-lifecycle.mdx +20 -0
  605. package/docs/content/locales/hi-IN/sandbox-adapters.mdx +18 -7
  606. package/docs/content/locales/hi-IN/security.mdx +8 -0
  607. package/docs/content/locales/ja-JP/audit-log.mdx +2 -1
  608. package/docs/content/locales/ja-JP/automations.mdx +7 -7
  609. package/docs/content/locales/ja-JP/getting-started.mdx +7 -1
  610. package/docs/content/locales/ja-JP/internationalization.mdx +1 -1
  611. package/docs/content/locales/ja-JP/package-lifecycle.mdx +21 -0
  612. package/docs/content/locales/ja-JP/sandbox-adapters.mdx +17 -6
  613. package/docs/content/locales/ja-JP/security.mdx +8 -0
  614. package/docs/content/locales/ko-KR/audit-log.mdx +2 -1
  615. package/docs/content/locales/ko-KR/automations.mdx +7 -7
  616. package/docs/content/locales/ko-KR/getting-started.mdx +7 -1
  617. package/docs/content/locales/ko-KR/internationalization.mdx +1 -1
  618. package/docs/content/locales/ko-KR/package-lifecycle.mdx +20 -0
  619. package/docs/content/locales/ko-KR/sandbox-adapters.mdx +17 -6
  620. package/docs/content/locales/ko-KR/security.mdx +8 -0
  621. package/docs/content/locales/pt-BR/audit-log.mdx +2 -1
  622. package/docs/content/locales/pt-BR/automations.mdx +7 -7
  623. package/docs/content/locales/pt-BR/getting-started.mdx +7 -1
  624. package/docs/content/locales/pt-BR/internationalization.mdx +1 -1
  625. package/docs/content/locales/pt-BR/package-lifecycle.mdx +21 -0
  626. package/docs/content/locales/pt-BR/sandbox-adapters.mdx +18 -7
  627. package/docs/content/locales/pt-BR/security.mdx +8 -0
  628. package/docs/content/locales/zh-CN/audit-log.mdx +2 -1
  629. package/docs/content/locales/zh-CN/automations.mdx +7 -7
  630. package/docs/content/locales/zh-CN/getting-started.mdx +6 -4
  631. package/docs/content/locales/zh-CN/internationalization.mdx +1 -1
  632. package/docs/content/locales/zh-CN/package-lifecycle.mdx +19 -0
  633. package/docs/content/locales/zh-CN/sandbox-adapters.mdx +17 -6
  634. package/docs/content/locales/zh-CN/security.mdx +8 -0
  635. package/docs/content/locales/zh-TW/audit-log.mdx +2 -1
  636. package/docs/content/locales/zh-TW/automations.mdx +7 -7
  637. package/docs/content/locales/zh-TW/getting-started.mdx +6 -4
  638. package/docs/content/locales/zh-TW/internationalization.mdx +1 -1
  639. package/docs/content/locales/zh-TW/package-lifecycle.mdx +19 -0
  640. package/docs/content/locales/zh-TW/sandbox-adapters.mdx +18 -7
  641. package/docs/content/locales/zh-TW/security.mdx +8 -0
  642. package/docs/content/package-lifecycle.mdx +51 -0
  643. package/docs/content/sandbox-adapters.mdx +16 -5
  644. package/package.json +12 -3
  645. package/src/templates/default/package.json +2 -2
  646. package/src/templates/headless/package.json +0 -1
  647. package/src/templates/workspace-core/.agents/skills/audit-log/SKILL.md +3 -0
  648. package/src/templates/workspace-core/.agents/skills/automations/SKILL.md +1 -1
  649. package/src/templates/workspace-core/.agents/skills/observability/SKILL.md +20 -0
  650. package/src/templates/workspace-core/.agents/skills/voice-transcription/SKILL.md +8 -4
  651. package/src/templates/workspace-core/package.json +0 -1
  652. package/src/templates/workspace-root/package.json +0 -1
  653. package/corpus/templates/slides/app/components/ui/toast.tsx +0 -1
  654. package/corpus/templates/slides/app/components/ui/toaster.tsx +0 -1
  655. package/corpus/templates/slides/app/hooks/use-toast.ts +0 -1
@@ -415,3 +415,11 @@ AGENT_NATIVE_KEYS_WORKSPACE_FALLBACK=1
415
415
  ```
416
416
 
417
417
  無論此標誌如何,工作空間範圍的秘密寫入仍然需要組織所有者/管理員角色。
418
+
419
+ ## 下一步
420
+
421
+ - [**Authentication**](/docs/authentication) — 本頁所依賴的驗證模式、cookie realm 和工作階段細節
422
+ - [**Multi-Tenancy**](/docs/multi-tenancy) — `org_id` 範圍界定背後的組織成員模型
423
+ - [**Sharing**](/docs/sharing) — 應用於可共用資源的 `ownableColumns()` 和存取守衛模式
424
+ - [**Messaging**](/docs/messaging#env-vars) — 上方清單中提到的每個整合的 webhook 簽名金鑰
425
+ - [**Deployment**](/docs/deployment) — 此清單假定已設定的正式環境變數
@@ -0,0 +1,51 @@
1
+ ---
2
+ title: Package Lifecycle
3
+ description: Inspect, add, and eject manifest-driven Agent Native packages safely.
4
+ ---
5
+
6
+ # Package lifecycle
7
+
8
+ Reusable Agent Native packages can publish a versioned static
9
+ `agent-native.package.json`. The CLI reads that JSON without executing package
10
+ code and reports the package's actions, schema entry point, skills, secret key
11
+ names, and peer providers.
12
+
13
+ ```bash
14
+ agent-native package inspect @agent-native/scheduling
15
+ agent-native package inspect @agent-native/scheduling --json
16
+ agent-native package add @agent-native/scheduling
17
+ agent-native package add @agent-native/scheduling --apply
18
+ agent-native package eject @agent-native/scheduling --apply
19
+ ```
20
+
21
+ `add` and `eject` are dry-run by default. `--apply` is required before the CLI
22
+ writes files or runs the detected package manager. Use `--root` for a different
23
+ project root; at a workspace root, pass `--app <name>` to select the target app.
24
+
25
+ ## Safety and idempotency
26
+
27
+ Before writing, the CLI resolves every contribution and refuses missing or
28
+ ambiguous layouts, existing files with different content, escaping manifest
29
+ paths, and eject targets that already exist. It stages the complete write set,
30
+ uses atomic renames, snapshots package and lock files, and rolls back if the
31
+ package-manager install fails. A provenance record under
32
+ `.agent-native/packages/` makes a repeated add a no-op when generated files are
33
+ unchanged.
34
+
35
+ Inspection and registry staging use static package metadata only. The CLI never
36
+ imports a package's JavaScript manifest and passes `--ignore-scripts` while
37
+ downloading an uninstalled package archive. Reports show credential key names,
38
+ never credential values.
39
+
40
+ ## Scheduling pilot
41
+
42
+ `@agent-native/scheduling` is the first package with the generic manifest. Add
43
+ creates action re-export stubs, adds the schema export, copies its agent skills,
44
+ records the dependency, and reports required secret names and providers.
45
+ Eject copies the published Scheduling source to `packages/scheduling`, switches
46
+ the dependency to `workspace:*`, and preserves canonical
47
+ `@agent-native/scheduling` imports so workspace resolution selects the local
48
+ copy.
49
+
50
+ Ejecting other packages, including Pinpoint, is intentionally refused until the
51
+ Scheduling pilot has proven the contract.
@@ -106,6 +106,10 @@ The seam lives in core at `packages/core/src/coding-tools/sandbox/` — `adapter
106
106
  path: "index.ts",
107
107
  note: "selection: getSandboxAdapter() / registerSandboxAdapter()",
108
108
  },
109
+ {
110
+ path: "background.ts",
111
+ note: "durable queue marker and background execution lifecycle",
112
+ },
109
113
  {
110
114
  path: "local-child-process-adapter.ts",
111
115
  note: "the default backend — locked-down Node child process",
@@ -189,12 +193,17 @@ registerSandboxAdapter(adapter) → AGENT_NATIVE_SANDBOX → local default
189
193
 
190
194
  #### `AGENT_NATIVE_SANDBOX` env var {#env}
191
195
 
192
- Selects a built-in adapter by id. Currently only `local` (the default) is wired; unknown values fall back to local rather than failing the run.
196
+ Selects a built-in adapter by id. Both `local` (the default) and `background` are wired; unknown values fall back to local rather than failing the run.
193
197
 
194
198
  ```bash
195
- AGENT_NATIVE_SANDBOX=local # the default — explicit
199
+ AGENT_NATIVE_SANDBOX=local # the default — explicit
200
+ AGENT_NATIVE_SANDBOX=background # enqueue every run-code call durably
196
201
  ```
197
202
 
203
+ `background` stores the raw code in `sandbox_executions` and returns an `executionId` with `status: "queued"` immediately. A signed self-dispatch starts a fresh serverless invocation; long-lived Node starts detached in-process work; status polling and the periodic sweep redrive lost dispatches or expired leases. Poll the execution later for its persisted result.
204
+
205
+ `BackgroundQueueAdapter` is a durable queue marker, not the executor. Queued work uses a registered non-queued execution adapter when one is available; otherwise it falls back to the local child process. Selecting `background` alone does not provide remote or container isolation, and it does not make an edge runtime compatible with `node:child_process`.
206
+
198
207
  #### `registerSandboxAdapter()` {#register}
199
208
 
200
209
  A host process overrides the backend for all subsequent `run-code` invocations through the seam's `index.ts` — for example, to run every call in a remote container:
@@ -219,13 +228,15 @@ registerSandboxAdapter(new RemoteSandboxAdapter());
219
228
 
220
229
  ### The seam for a durable runner {#durable}
221
230
 
222
- This interface is deliberately the seam for a future remote/durable sandbox. A remote or durable adapter (Docker, a Vercel-Sandbox-style runner, or a queued background worker) would:
231
+ The built-in `background` adapter already provides durable queuing and a fresh execution budget, while actual execution still uses a non-queued adapter or the local child-process fallback. A separately registered remote or isolated adapter (Docker or a Vercel-Sandbox-style runner) can provide a different execution boundary and can also execute per-call background work.
232
+
233
+ Such an adapter would:
223
234
 
224
235
  1. Implement `SandboxAdapter.run` against an out-of-process runtime.
225
236
  2. Tunnel the loopback bridge (or proxy bridge calls back to the parent).
226
- 3. Let large data jobs run to completion independently of the request lifecycle exceeding the hosted ~40s code-exec ceiling that bounds the local child-process adapter.
237
+ 3. Supply remote or container isolation independently of the shipped durable queue lifecycle.
227
238
 
228
- Register it under a new `AGENT_NATIVE_SANDBOX` value (e.g. `remote`) and/or via `registerSandboxAdapter()`. The agent loop and `run-code.ts` never change.
239
+ Register it programmatically via `registerSandboxAdapter()`. The agent loop and `run-code.ts` do not need to change.
229
240
 
230
241
  <Callout id="doc-block-adap1tip" tone="info">
231
242
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-native/core",
3
- "version": "0.95.1",
3
+ "version": "0.97.0",
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": {
@@ -101,6 +101,10 @@
101
101
  "./shared": "./dist/shared/index.js",
102
102
  "./voice": "./dist/voice/index.js",
103
103
  "./scripts": "./dist/scripts/index.js",
104
+ "./guards": {
105
+ "types": "./dist/guards/index.d.ts",
106
+ "default": "./dist/guards/index.js"
107
+ },
104
108
  "./application-state": "./dist/application-state/index.js",
105
109
  "./settings": "./dist/settings/index.js",
106
110
  "./localization": "./dist/localization/index.js",
@@ -207,6 +211,10 @@
207
211
  "default": "./dist/local-artifacts/index.js"
208
212
  },
209
213
  "./workspace-files": "./dist/workspace-files/index.js",
214
+ "./package-lifecycle": {
215
+ "types": "./dist/package-lifecycle/index.d.ts",
216
+ "default": "./dist/package-lifecycle/index.js"
217
+ },
210
218
  "./code-agents": "./dist/code-agents/index.js",
211
219
  "./code-agents/transcript-normalizer": "./dist/code-agents/transcript-normalizer.js",
212
220
  "./workspace-connections": "./dist/workspace-connections/index.js",
@@ -219,6 +227,8 @@
219
227
  "./terminal/server": "./dist/terminal/index.js",
220
228
  "./tailwind": "./dist/tailwind.preset.js",
221
229
  "./styles/agent-native.css": "./dist/styles/agent-native.css",
230
+ "./styles/agent-conversation.css": "./dist/styles/agent-conversation.css",
231
+ "./styles/chat-history-list.css": "./dist/styles/chat-history-list.css",
222
232
  "./agent/engine": "./dist/agent/engine/index.js",
223
233
  "./agent/harness": "./dist/agent/harness/index.js",
224
234
  "./eval": "./dist/eval/index.js",
@@ -371,7 +381,6 @@
371
381
  "react-dom": "^19.2.7",
372
382
  "react-router": "^8.1.0",
373
383
  "tailwindcss": "catalog:",
374
- "typescript": "catalog:",
375
384
  "typescript-7": "catalog:",
376
385
  "vite": "catalog:",
377
386
  "vitest": "^4.1.5",
@@ -31,3 +31,36 @@ export function hasConfiguredA2ASecret(): boolean {
31
31
  export function shouldAdvertiseJwtA2AAuth(): boolean {
32
32
  return hasConfiguredA2ASecret() || isA2AProductionRuntime();
33
33
  }
34
+
35
+ /**
36
+ * True only when unsigned internal self-dispatch is acceptable: no A2A_SECRET
37
+ * is configured AND we can positively identify a local/dev runtime. Everything
38
+ * else — production, or any UNRECOGNIZED deployed/networked host — must fail
39
+ * closed and require A2A_SECRET. `loopback` should be whether the inbound
40
+ * request arrived over the loopback interface (127.0.0.1/::1); callers that
41
+ * cannot determine the peer address pass `false`.
42
+ *
43
+ * NODE_ENV alone is deliberately NOT a trust grant: a self-hosted deployment
44
+ * that doesn't set NODE_ENV=production and isn't recognized by
45
+ * `isA2AProductionRuntime()` (a bare Docker/VPS/K8s pod) must still fail
46
+ * closed unless the request actually came from loopback or the explicit
47
+ * opt-in flag is set.
48
+ */
49
+ export function isTrustedLocalRuntime(opts: { loopback: boolean }): boolean {
50
+ if (isA2AProductionRuntime()) return false;
51
+ if (process.env.A2A_ALLOW_UNSIGNED_INTERNAL === "1") return true;
52
+ return opts.loopback === true;
53
+ }
54
+
55
+ /** True if a socket peer address is a loopback/local address. */
56
+ export function isLoopbackAddress(addr: string | undefined | null): boolean {
57
+ if (!addr) return false;
58
+ const a = addr.trim();
59
+ return (
60
+ a === "127.0.0.1" ||
61
+ a === "::1" ||
62
+ a === "::ffff:127.0.0.1" ||
63
+ a.startsWith("127.") ||
64
+ a === "localhost"
65
+ );
66
+ }
@@ -550,6 +550,13 @@ export async function callAgent(
550
550
  timeoutMs?: number;
551
551
  /** Poll interval for async calls. Primarily useful for tests/retries. */
552
552
  pollIntervalMs?: number;
553
+ /**
554
+ * Return receiver-verified artifact text from the last polled task when
555
+ * the call times out. Defaults to true for backwards compatibility.
556
+ * Callers that can continue polling the remote task separately should set
557
+ * this to false so the A2ATaskTimeoutError (and its taskId) is preserved.
558
+ */
559
+ returnRecoverableArtifactsOnTimeout?: boolean;
553
560
  /**
554
561
  * Called with each successfully polled task while an async call is still
555
562
  * in flight (see `A2AClient.sendAndWait`). Fires once per real poll
@@ -614,7 +621,10 @@ export async function callAgent(
614
621
 
615
622
  return "";
616
623
  } catch (err) {
617
- if (err instanceof A2ATaskTimeoutError) {
624
+ if (
625
+ opts?.returnRecoverableArtifactsOnTimeout !== false &&
626
+ err instanceof A2ATaskTimeoutError
627
+ ) {
618
628
  const recoverableText = extractRecoverableArtifactText(err.lastTask);
619
629
  if (recoverableText) return recoverableText;
620
630
  }
@@ -39,7 +39,7 @@
39
39
  */
40
40
  import {
41
41
  hasConfiguredA2ASecret,
42
- isA2AProductionRuntime,
42
+ isTrustedLocalRuntime,
43
43
  } from "../a2a/auth-policy.js";
44
44
  import {
45
45
  extractBearerToken,
@@ -469,10 +469,13 @@ export function extractProcessRunId(body: unknown): string | null {
469
469
  *
470
470
  * Auth policy mirrors the agent-teams processor exactly:
471
471
  * - `A2A_SECRET` set → require a valid `verifyInternalToken(runId, token)`.
472
- * - no secret but a production runtime refuse (503) never run unsigned in
473
- * prod.
474
- * - no secret + non-prod (local dev) allow unsigned; the SQL atomic claim
475
- * in the worker still prevents double-processing.
472
+ * - no secret → require `isTrustedLocalRuntime({ loopback })` (see
473
+ * auth-policy.ts): refuse (503) unless `A2A_ALLOW_UNSIGNED_INTERNAL=1` is
474
+ * set. This function has no h3 `event` of its own, so callers that CAN
475
+ * see the inbound socket peer (the route handler, which has the event)
476
+ * should compute `loopback` from it and pass it through; callers that
477
+ * can't determine the peer address should omit it (defaults to `false`
478
+ * — never trust unsigned dispatch without an explicit opt-in).
476
479
  *
477
480
  * Extracted from the route handler so the auth + marker-prep decision is unit
478
481
  * testable without booting the whole Nitro plugin. The route only adds body
@@ -481,6 +484,7 @@ export function extractProcessRunId(body: unknown): string | null {
481
484
  export function prepareProcessRunRequest(
482
485
  body: unknown,
483
486
  authHeader: string | undefined,
487
+ loopback: boolean = false,
484
488
  ): ProcessRunPreparation {
485
489
  if (!body || typeof body !== "object") {
486
490
  return {
@@ -514,12 +518,16 @@ export function prepareProcessRunRequest(
514
518
  runId,
515
519
  };
516
520
  }
517
- } else if (isA2AProductionRuntime()) {
521
+ } else if (!isTrustedLocalRuntime({ loopback })) {
522
+ // Callers that can see the h3 `event` (the route handler) pass the real
523
+ // loopback signal; callers without one default to non-loopback. Unsigned
524
+ // dispatch is still allowed via A2A_ALLOW_UNSIGNED_INTERNAL=1 for trusted
525
+ // local/dev setups; see auth-policy.ts `isTrustedLocalRuntime`.
518
526
  return {
519
527
  ok: false,
520
528
  status: 503,
521
529
  error:
522
- "Agent chat background processor not configured — set A2A_SECRET on this deployment.",
530
+ "Agent chat background processor not configured — set A2A_SECRET on this deployment (or A2A_ALLOW_UNSIGNED_INTERNAL=1 for trusted local dev).",
523
531
  runId,
524
532
  };
525
533
  }
@@ -1762,6 +1762,12 @@ export type AgentLoopFinalResponseGuardResult =
1762
1762
  | {
1763
1763
  retryMessage: string;
1764
1764
  fallbackMessage?: string;
1765
+ /**
1766
+ * Number of rejected text-only answers the model may correct before the
1767
+ * fallback is emitted. Defaults to one and is capped to keep a broken
1768
+ * guard/model combination from looping indefinitely.
1769
+ */
1770
+ maxRetries?: number;
1765
1771
  };
1766
1772
 
1767
1773
  export type AgentLoopFinalResponseGuard = (
@@ -3641,7 +3647,11 @@ export async function runAgentLoop(opts: {
3641
3647
  typeof guard === "string" ? guard : guard.retryMessage;
3642
3648
  const fallbackMessage =
3643
3649
  typeof guard === "string" ? guard : guard.fallbackMessage;
3644
- if (finalGuardRetries < 1) {
3650
+ const maxGuardRetries =
3651
+ typeof guard === "string"
3652
+ ? 1
3653
+ : Math.max(0, Math.min(3, Math.trunc(guard.maxRetries ?? 1)));
3654
+ if (finalGuardRetries < maxGuardRetries) {
3645
3655
  finalGuardRetries += 1;
3646
3656
  send({ type: "clear" });
3647
3657
  messages.push({
@@ -6160,21 +6170,82 @@ export function createProductionAgentHandler(
6160
6170
  // DIAGNOSTIC-ONLY: bracket stored-model resolution (getStoredModelForEngine
6161
6171
  // settings read).
6162
6172
  workerStep("model_start");
6173
+ const storedModel =
6174
+ requestModel == null && configuredModel == null
6175
+ ? await getStoredModelForEngine(engine, { appId: options.appId })
6176
+ : undefined;
6163
6177
  const modelCandidate =
6164
- requestModel ??
6165
- configuredModel ??
6166
- (await getStoredModelForEngine(engine, { appId: options.appId })) ??
6167
- engine.defaultModel;
6178
+ requestModel ?? configuredModel ?? storedModel ?? engine.defaultModel;
6168
6179
  // DIAGNOSTIC-ONLY: stored-model resolution finished.
6169
6180
  workerStep("model_done");
6170
6181
  const model = normalizeModelForEngine(engine, modelCandidate);
6182
+ let effectiveModel = model;
6183
+ let modelSelectionSource:
6184
+ | "request"
6185
+ | "configured"
6186
+ | "stored"
6187
+ | "default"
6188
+ | "experiment" =
6189
+ requestModel != null
6190
+ ? "request"
6191
+ : configuredModel != null
6192
+ ? "configured"
6193
+ : storedModel != null
6194
+ ? "stored"
6195
+ : "default";
6196
+ let experimentAssignments: Array<{
6197
+ experimentId: string;
6198
+ variantId: string;
6199
+ }> = [];
6200
+
6201
+ // Database-backed experiments remain available to app operators. A
6202
+ // platform-wide hosted rollout is layered in only when no explicit or
6203
+ // persisted model selection exists, and only on the cross-provider Builder
6204
+ // engine. This preserves the model picker's user intent.
6205
+ try {
6206
+ if (ownerEmail) {
6207
+ const { resolveActiveExperimentConfig } =
6208
+ await import("../observability/experiments.js");
6209
+ const expConfig = await resolveActiveExperimentConfig(ownerEmail);
6210
+ if (expConfig) {
6211
+ experimentAssignments = [...expConfig.assignments];
6212
+ if (typeof expConfig.configs.model === "string") {
6213
+ effectiveModel = normalizeModelForEngine(
6214
+ engine,
6215
+ expConfig.configs.model,
6216
+ );
6217
+ modelSelectionSource = "experiment";
6218
+ }
6219
+ }
6220
+
6221
+ if (modelSelectionSource === "default") {
6222
+ const { resolveHostedDefaultModelExperiment } =
6223
+ await import("../observability/hosted-model-experiment.js");
6224
+ const hostedExperiment = resolveHostedDefaultModelExperiment({
6225
+ userId: ownerEmail,
6226
+ engineName: engine.name,
6227
+ isDefaultModelSelection: true,
6228
+ supportedModels: engine.supportedModels,
6229
+ });
6230
+ if (hostedExperiment) {
6231
+ effectiveModel = hostedExperiment.model;
6232
+ experimentAssignments.push(hostedExperiment.assignment);
6233
+ modelSelectionSource = "experiment";
6234
+ }
6235
+ }
6236
+ }
6237
+ } catch {
6238
+ // Experiments are best-effort. Model resolution must keep working if the
6239
+ // observability tables are unavailable during startup or migration.
6240
+ }
6241
+
6171
6242
  const reasoningEffort = resolveAgentRequestReasoningEffort({
6172
- model,
6243
+ model: effectiveModel,
6173
6244
  requestEffort,
6174
6245
  configuredEffort: options.reasoningEffort,
6175
6246
  });
6176
6247
 
6177
- options.onEngineResolved?.(engine, model);
6248
+ options.onEngineResolved?.(engine, effectiveModel);
6178
6249
 
6179
6250
  // One-line per-turn resolution log so it's obvious in dev which engine
6180
6251
  // is actually handling the request. `requestEngine` is what the client
@@ -6182,7 +6253,7 @@ export function createProductionAgentHandler(
6182
6253
  // Divergence between them is the usual cause of "status says builder but
6183
6254
  // no [builder-engine] log lines appear" confusion.
6184
6255
  console.log(
6185
- `[agent-chat] resolved engine=${engine.name} model=${model} requestEngine=${requestEngine ?? "(none)"}`,
6256
+ `[agent-chat] resolved engine=${engine.name} model=${effectiveModel} requestEngine=${requestEngine ?? "(none)"} modelSource=${modelSelectionSource}`,
6186
6257
  );
6187
6258
 
6188
6259
  if (
@@ -7487,25 +7558,6 @@ export function createProductionAgentHandler(
7487
7558
  }
7488
7559
  }
7489
7560
 
7490
- // Apply experiment variant overrides (A/B testing)
7491
- let effectiveModel = model;
7492
- try {
7493
- const { resolveActiveExperimentConfig } =
7494
- await import("../observability/experiments.js");
7495
- if (!ownerEmail) {
7496
- // Without an authenticated owner we can't resolve user-scoped experiments.
7497
- throw new Error("no authenticated user");
7498
- }
7499
- const expConfig = await resolveActiveExperimentConfig(ownerEmail);
7500
- if (expConfig) {
7501
- if (typeof expConfig.configs.model === "string") {
7502
- effectiveModel = expConfig.configs.model;
7503
- }
7504
- }
7505
- } catch {
7506
- // Experiments module unavailable — use default model
7507
- }
7508
-
7509
7561
  // TODO(processor-seam): thread `processors` from ProductionAgentOptions
7510
7562
  // through to runAgentLoop here once the handler exposes a way to
7511
7563
  // configure them (e.g. a `processors` field on ProductionAgentOptions
@@ -7592,6 +7644,14 @@ export function createProductionAgentHandler(
7592
7644
  threadId: threadId ?? null,
7593
7645
  userId: ownerEmail,
7594
7646
  config: obsConfig,
7647
+ metadata: {
7648
+ modelSelectionSource,
7649
+ ...(experimentAssignments.length > 0
7650
+ ? { experimentAssignments }
7651
+ : {}),
7652
+ },
7653
+ experimentAssignments,
7654
+ modelSelectionSource,
7595
7655
  classifyError: () => {
7596
7656
  if (
7597
7657
  agentLoopOpts.signal.aborted &&
@@ -1759,7 +1759,7 @@ export async function listRunsForThread(
1759
1759
  LIMIT ?`,
1760
1760
  args: [threadId, limit],
1761
1761
  });
1762
- let repairedTerminalRow = false;
1762
+ const reconcileCandidateIds: string[] = [];
1763
1763
  for (const r of rows) {
1764
1764
  const row = r as {
1765
1765
  id?: string;
@@ -1773,10 +1773,19 @@ export async function listRunsForThread(
1773
1773
  (row.status === "errored" &&
1774
1774
  row.error_code === STALE_RUN_ERROR_EVENT.errorCode);
1775
1775
  if (!canReconcileFromEvents) continue;
1776
- repairedTerminalRow =
1777
- (await reconcileTerminalRunFromEvents(runId).catch(() => false)) ||
1778
- repairedTerminalRow;
1776
+ reconcileCandidateIds.push(runId);
1779
1777
  }
1778
+ // Each candidate's reconciliation is independently fenced by the UPDATE's
1779
+ // WHERE clause (status = 'running' OR errored-with-stale-code) inside
1780
+ // reconcileTerminalRunFromEvents, keyed on that run's own id — reconciling
1781
+ // several stale runs in parallel is safe and avoids N sequential
1782
+ // SELECT+UPDATE round-trip pairs on a shared-thread page load.
1783
+ const reconcileResults = await Promise.all(
1784
+ reconcileCandidateIds.map((runId) =>
1785
+ reconcileTerminalRunFromEvents(runId).catch(() => false),
1786
+ ),
1787
+ );
1788
+ const repairedTerminalRow = reconcileResults.some(Boolean);
1780
1789
  if (repairedTerminalRow) {
1781
1790
  const refreshed = await client.execute({
1782
1791
  sql: `SELECT id, thread_id, turn_id, status, started_at, heartbeat_at, completed_at, last_progress_at, error_code, abort_reason, dispatch_mode, terminal_reason, diag_stage
@@ -1,5 +1,6 @@
1
1
  import type { ActionChatUIConfig } from "../action-ui.js";
2
2
  import {
3
+ isCredentialGapCodeAgentEvent,
3
4
  normalizeCodeAgentTranscript,
4
5
  type CodeAgentTranscriptEvent as CoreCodeAgentTranscriptEvent,
5
6
  type NormalizedCodeAgentStatusEvent,
@@ -664,6 +665,7 @@ export interface CodeAgentThreadTranscriptEvent {
664
665
  metadata?: Record<string, unknown>;
665
666
  artifactPath?: string;
666
667
  artifactUrl?: string;
668
+ signal?: CoreCodeAgentTranscriptEvent["signal"];
667
669
  }
668
670
 
669
671
  export interface BuildRepositoryFromCodeAgentTranscriptOptions {
@@ -1094,6 +1096,7 @@ function toCoreCodeAgentTranscriptEvent(
1094
1096
  ...(event.artifactPath ? { artifactPath: event.artifactPath } : {}),
1095
1097
  ...(event.artifactUrl ? { artifactUrl: event.artifactUrl } : {}),
1096
1098
  },
1099
+ ...(event.signal ? { signal: event.signal } : {}),
1097
1100
  };
1098
1101
  }
1099
1102
 
@@ -1137,6 +1140,9 @@ function toolContentPartForCodeAgentTranscriptItem(
1137
1140
  ? { result: previewCodeAgentTranscriptValue(item.result) ?? "" }
1138
1141
  : {}),
1139
1142
  ...(item.structuredMeta ? { structuredMeta: item.structuredMeta } : {}),
1143
+ ...(item.pendingApprovalKey
1144
+ ? { approval: { approvalKey: item.pendingApprovalKey } }
1145
+ : {}),
1140
1146
  };
1141
1147
  }
1142
1148
 
@@ -1144,7 +1150,7 @@ function statusTextForCodeAgentTranscriptItem(
1144
1150
  item: NormalizedCodeAgentStatusEvent,
1145
1151
  options: BuildRepositoryFromCodeAgentTranscriptOptions,
1146
1152
  ): string | null {
1147
- if (options.hideCredentialMessages && isCredentialCodeAgentText(item.text)) {
1153
+ if (options.hideCredentialMessages && isCredentialGapCodeAgentEvent(item)) {
1148
1154
  return null;
1149
1155
  }
1150
1156
  if (item.statusKind === "artifact") {
@@ -1219,10 +1225,6 @@ function stringRecordValue(
1219
1225
  return typeof value === "string" && value.trim() ? value.trim() : undefined;
1220
1226
  }
1221
1227
 
1222
- function isCredentialCodeAgentText(value: string): boolean {
1223
- return /No LLM provider key was found|Missing credentials/i.test(value);
1224
- }
1225
-
1226
1228
  export function upsertUserMessage(repo: any, userMsg: UserMessage): any {
1227
1229
  const nextRepo = normalizeThreadRepository(repo);
1228
1230