@agent-native/core 0.79.12 → 0.79.16

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 (289) hide show
  1. package/corpus/README.md +2 -2
  2. package/corpus/core/CHANGELOG.md +25 -0
  3. package/corpus/core/docs/content/locales/zh-TW/a2a-protocol.md +68 -68
  4. package/corpus/core/docs/content/locales/zh-TW/actions.md +82 -82
  5. package/corpus/core/docs/content/locales/zh-TW/agent-mentions.md +22 -22
  6. package/corpus/core/docs/content/locales/zh-TW/agent-surfaces.md +82 -82
  7. package/corpus/core/docs/content/locales/zh-TW/agent-teams.md +29 -29
  8. package/corpus/core/docs/content/locales/zh-TW/agent-web-surfaces.md +11 -11
  9. package/corpus/core/docs/content/locales/zh-TW/audit-log.md +16 -16
  10. package/corpus/core/docs/content/locales/zh-TW/authentication.md +32 -32
  11. package/corpus/core/docs/content/locales/zh-TW/automations.md +32 -32
  12. package/corpus/core/docs/content/locales/zh-TW/blueprint-installer.md +19 -19
  13. package/corpus/core/docs/content/locales/zh-TW/cli-adapters.md +17 -17
  14. package/corpus/core/docs/content/locales/zh-TW/client.md +62 -62
  15. package/corpus/core/docs/content/locales/zh-TW/cloneable-saas.md +32 -32
  16. package/corpus/core/docs/content/locales/zh-TW/code-agents-ui.md +91 -91
  17. package/corpus/core/docs/content/locales/zh-TW/components.md +51 -51
  18. package/corpus/core/docs/content/locales/zh-TW/context-awareness.md +66 -66
  19. package/corpus/core/docs/content/locales/zh-TW/creating-templates.md +39 -39
  20. package/corpus/core/docs/content/locales/zh-TW/cross-app-sso.md +29 -29
  21. package/corpus/core/docs/content/locales/zh-TW/database.md +21 -21
  22. package/corpus/core/docs/content/locales/zh-TW/deployment.md +37 -37
  23. package/corpus/core/docs/content/locales/zh-TW/dispatch.md +43 -43
  24. package/corpus/core/docs/content/locales/zh-TW/drop-in-agent.md +34 -34
  25. package/corpus/core/docs/content/locales/zh-TW/durable-resume.md +18 -18
  26. package/corpus/core/docs/content/locales/zh-TW/embedding-sdk.md +73 -73
  27. package/corpus/core/docs/content/locales/zh-TW/evals.md +16 -16
  28. package/corpus/core/docs/content/locales/zh-TW/extensions.md +81 -81
  29. package/corpus/core/docs/content/locales/zh-TW/external-agents.md +146 -146
  30. package/corpus/core/docs/content/locales/zh-TW/faq.md +43 -43
  31. package/corpus/core/docs/content/locales/zh-TW/file-uploads.md +11 -11
  32. package/corpus/core/docs/content/locales/zh-TW/frames.md +33 -33
  33. package/corpus/core/docs/content/locales/zh-TW/getting-started.md +28 -28
  34. package/corpus/core/docs/content/locales/zh-TW/harness-agents.md +78 -78
  35. package/corpus/core/docs/content/locales/zh-TW/human-approval.md +27 -27
  36. package/corpus/core/docs/content/locales/zh-TW/internationalization.md +19 -19
  37. package/corpus/core/docs/content/locales/zh-TW/key-concepts.md +68 -68
  38. package/corpus/core/docs/content/locales/zh-TW/local-file-mode.md +50 -50
  39. package/corpus/core/docs/content/locales/zh-TW/mcp-apps.md +38 -38
  40. package/corpus/core/docs/content/locales/zh-TW/mcp-clients.md +67 -67
  41. package/corpus/core/docs/content/locales/zh-TW/mcp-protocol.md +50 -50
  42. package/corpus/core/docs/content/locales/zh-TW/messaging.md +99 -99
  43. package/corpus/core/docs/content/locales/zh-TW/migration-workbench.md +6 -6
  44. package/corpus/core/docs/content/locales/zh-TW/multi-app-workspace.md +39 -39
  45. package/corpus/core/docs/content/locales/zh-TW/multi-tenancy.md +7 -7
  46. package/corpus/core/docs/content/locales/zh-TW/native-chat-ui.md +38 -38
  47. package/corpus/core/docs/content/locales/zh-TW/notifications.md +23 -23
  48. package/corpus/core/docs/content/locales/zh-TW/observability.md +49 -49
  49. package/corpus/core/docs/content/locales/zh-TW/observational-memory.md +23 -23
  50. package/corpus/core/docs/content/locales/zh-TW/onboarding.md +40 -40
  51. package/corpus/core/docs/content/locales/zh-TW/plan-plugin.md +37 -37
  52. package/corpus/core/docs/content/locales/zh-TW/pr-visual-recap.md +72 -72
  53. package/corpus/core/docs/content/locales/zh-TW/processors.md +17 -17
  54. package/corpus/core/docs/content/locales/zh-TW/progress.md +15 -15
  55. package/corpus/core/docs/content/locales/zh-TW/pure-agent-apps.md +10 -10
  56. package/corpus/core/docs/content/locales/zh-TW/real-time-collaboration.md +103 -103
  57. package/corpus/core/docs/content/locales/zh-TW/recurring-jobs.md +19 -19
  58. package/corpus/core/docs/content/locales/zh-TW/routing.md +9 -9
  59. package/corpus/core/docs/content/locales/zh-TW/sandbox-adapters.md +48 -48
  60. package/corpus/core/docs/content/locales/zh-TW/security.md +49 -49
  61. package/corpus/core/docs/content/locales/zh-TW/server.md +47 -47
  62. package/corpus/core/docs/content/locales/zh-TW/sharing.md +22 -22
  63. package/corpus/core/docs/content/locales/zh-TW/skills-guide.md +46 -46
  64. package/corpus/core/docs/content/locales/zh-TW/template-analytics.md +40 -40
  65. package/corpus/core/docs/content/locales/zh-TW/template-assets.md +69 -69
  66. package/corpus/core/docs/content/locales/zh-TW/template-brain.md +81 -81
  67. package/corpus/core/docs/content/locales/zh-TW/template-calendar.md +40 -40
  68. package/corpus/core/docs/content/locales/zh-TW/template-chat.md +27 -27
  69. package/corpus/core/docs/content/locales/zh-TW/template-clips.md +85 -85
  70. package/corpus/core/docs/content/locales/zh-TW/template-content.md +65 -66
  71. package/corpus/core/docs/content/locales/zh-TW/template-design.md +29 -29
  72. package/corpus/core/docs/content/locales/zh-TW/template-dispatch.md +51 -51
  73. package/corpus/core/docs/content/locales/zh-TW/template-forms.md +25 -25
  74. package/corpus/core/docs/content/locales/zh-TW/template-mail.md +71 -71
  75. package/corpus/core/docs/content/locales/zh-TW/template-plan.md +92 -92
  76. package/corpus/core/docs/content/locales/zh-TW/template-slides.md +52 -52
  77. package/corpus/core/docs/content/locales/zh-TW/template-videos.md +30 -30
  78. package/corpus/core/docs/content/locales/zh-TW/tracking.md +29 -29
  79. package/corpus/core/docs/content/locales/zh-TW/using-your-agent.md +18 -18
  80. package/corpus/core/docs/content/locales/zh-TW/voice-input.md +19 -19
  81. package/corpus/core/docs/content/locales/zh-TW/what-is-agent-native.md +61 -61
  82. package/corpus/core/docs/content/locales/zh-TW/workspace-connections.md +41 -41
  83. package/corpus/core/docs/content/locales/zh-TW/workspace-management.md +27 -27
  84. package/corpus/core/docs/content/locales/zh-TW/workspace.md +58 -58
  85. package/corpus/core/docs/content/locales/zh-TW/writing-agent-instructions.md +41 -41
  86. package/corpus/core/docs/content/template-clips.md +48 -2
  87. package/corpus/core/package.json +2 -1
  88. package/corpus/core/src/client/AgentPanel.tsx +29 -6
  89. package/corpus/core/src/deploy/build.ts +432 -42
  90. package/corpus/core/src/deploy/route-discovery.ts +1 -1
  91. package/corpus/core/src/server/edge.ts +50 -0
  92. package/corpus/core/src/styles/agent-native.css +123 -0
  93. package/corpus/core/src/templates/default/app/i18n/zh-TW.ts +44 -44
  94. package/corpus/core/src/vite/client.ts +1 -0
  95. package/corpus/templates/analytics/app/components/layout/Layout.tsx +5 -3
  96. package/corpus/templates/analytics/app/i18n/zh-TW.ts +69 -70
  97. package/corpus/templates/analytics/changelog/2026-06-27-traditional-chinese-copy-uses-taiwan-terminology.md +6 -0
  98. package/corpus/templates/assets/app/components/layout/Layout.tsx +3 -3
  99. package/corpus/templates/assets/app/i18n/zh-TW.ts +82 -82
  100. package/corpus/templates/assets/changelog/2026-06-27-traditional-chinese-copy-uses-taiwan-terminology.md +6 -0
  101. package/corpus/templates/brain/app/components/layout/Layout.tsx +6 -4
  102. package/corpus/templates/brain/app/i18n/zh-TW.ts +90 -90
  103. package/corpus/templates/brain/changelog/2026-06-27-traditional-chinese-copy-uses-taiwan-terminology.md +6 -0
  104. package/corpus/templates/calendar/app/components/layout/AppLayout.tsx +1 -1
  105. package/corpus/templates/calendar/app/components/layout/Sidebar.tsx +1 -1
  106. package/corpus/templates/calendar/app/i18n/zh-TW.ts +57 -57
  107. package/corpus/templates/calendar/changelog/2026-06-27-traditional-chinese-copy-uses-taiwan-terminology.md +6 -0
  108. package/corpus/templates/calendar/server/lib/booking-og-fonts.ts +20 -6
  109. package/corpus/templates/calendar/server/lib/booking-og-image.ts +17 -9
  110. package/corpus/templates/chat/app/components/layout/Layout.tsx +5 -3
  111. package/corpus/templates/chat/app/i18n/zh-TW.ts +3 -3
  112. package/corpus/templates/chat/changelog/2026-06-27-traditional-chinese-copy-uses-taiwan-terminology.md +6 -0
  113. package/corpus/templates/clips/AGENTS.md +6 -0
  114. package/corpus/templates/clips/actions/delete-recording-permanent.ts +7 -1
  115. package/corpus/templates/clips/actions/get-recording-player-data.ts +44 -2
  116. package/corpus/templates/clips/actions/navigate.ts +2 -0
  117. package/corpus/templates/clips/actions/save-bug-report-context.ts +173 -0
  118. package/corpus/templates/clips/actions/view-screen.ts +58 -7
  119. package/corpus/templates/clips/app/components/recorder/storage-setup-card.tsx +9 -3
  120. package/corpus/templates/clips/app/hooks/use-navigation-state.ts +17 -0
  121. package/corpus/templates/clips/app/i18n/ar-SA.ts +31 -0
  122. package/corpus/templates/clips/app/i18n/de-DE.ts +32 -0
  123. package/corpus/templates/clips/app/i18n/en-US.ts +32 -0
  124. package/corpus/templates/clips/app/i18n/es-ES.ts +32 -0
  125. package/corpus/templates/clips/app/i18n/fr-FR.ts +32 -0
  126. package/corpus/templates/clips/app/i18n/hi-IN.ts +32 -0
  127. package/corpus/templates/clips/app/i18n/ja-JP.ts +31 -0
  128. package/corpus/templates/clips/app/i18n/ko-KR.ts +32 -0
  129. package/corpus/templates/clips/app/i18n/pt-BR.ts +32 -0
  130. package/corpus/templates/clips/app/i18n/zh-CN.ts +30 -0
  131. package/corpus/templates/clips/app/i18n/zh-TW.ts +461 -451
  132. package/corpus/templates/clips/app/routes/bug-report.done.tsx +126 -0
  133. package/corpus/templates/clips/app/routes/bug-report.tsx +222 -0
  134. package/corpus/templates/clips/app/routes/record.tsx +104 -12
  135. package/corpus/templates/clips/changelog/2026-06-26-brief-network-blips-no-longer-block-recording-or-wrongly-pro.md +6 -0
  136. package/corpus/templates/clips/changelog/2026-06-26-bug-report-recordings-can-keep-redacted-host-app-context-wit.md +6 -0
  137. package/corpus/templates/clips/changelog/2026-06-26-bug-report-widgets-can-launch-clips-recordings-from-embedded.md +6 -0
  138. package/corpus/templates/clips/changelog/2026-06-26-desktop-recording-keeps-connected-users-out-of-the-storage-s.md +6 -0
  139. package/corpus/templates/clips/changelog/2026-06-26-if-a-recording-can-t-be-uploaded-the-chrome-extension-now-sa.md +6 -0
  140. package/corpus/templates/clips/changelog/2026-06-27-traditional-chinese-copy-uses-taiwan-terminology.md +6 -0
  141. package/corpus/templates/clips/chrome-extension/public/manifest.json +9 -2
  142. package/corpus/templates/clips/chrome-extension/src/background.ts +43 -0
  143. package/corpus/templates/clips/chrome-extension/src/offscreen.ts +111 -6
  144. package/corpus/templates/clips/chrome-extension/src/popup.ts +18 -7
  145. package/corpus/templates/clips/desktop/src/app.tsx +53 -19
  146. package/corpus/templates/clips/server/db/schema.ts +26 -0
  147. package/corpus/templates/clips/server/lib/public-agent-context.ts +51 -0
  148. package/corpus/templates/clips/server/plugins/auth.ts +1 -0
  149. package/corpus/templates/clips/server/plugins/db.ts +28 -0
  150. package/corpus/templates/clips/server/routes/api/agent-context.json.get.ts +4 -1
  151. package/corpus/templates/clips/shared/bug-report.ts +161 -0
  152. package/corpus/templates/content/app/components/layout/Layout.tsx +10 -8
  153. package/corpus/templates/content/app/components/sidebar/DocumentSidebar.tsx +1 -1
  154. package/corpus/templates/content/app/i18n/zh-TW.ts +67 -66
  155. package/corpus/templates/content/changelog/2026-06-27-traditional-chinese-copy-uses-taiwan-terminology.md +6 -0
  156. package/corpus/templates/design/app/components/layout/Layout.tsx +3 -3
  157. package/corpus/templates/design/app/i18n/zh-TW.ts +44 -44
  158. package/corpus/templates/design/changelog/2026-06-27-traditional-chinese-copy-uses-taiwan-terminology.md +6 -0
  159. package/corpus/templates/dispatch/app/i18n/zh-TW.ts +5 -4
  160. package/corpus/templates/dispatch/changelog/2026-06-27-traditional-chinese-copy-uses-taiwan-terminology.md +6 -0
  161. package/corpus/templates/forms/app/components/layout/Layout.tsx +4 -2
  162. package/corpus/templates/forms/app/components/layout/Sidebar.tsx +1 -1
  163. package/corpus/templates/forms/app/i18n/zh-TW.ts +48 -48
  164. package/corpus/templates/forms/changelog/2026-06-27-traditional-chinese-copy-uses-taiwan-terminology.md +6 -0
  165. package/corpus/templates/macros/app/components/layout/AppLayout.tsx +3 -3
  166. package/corpus/templates/macros/app/i18n/zh-TW.ts +5 -5
  167. package/corpus/templates/macros/changelog/2026-06-27-traditional-chinese-copy-uses-taiwan-terminology.md +6 -0
  168. package/corpus/templates/mail/app/i18n/zh-TW.ts +83 -83
  169. package/corpus/templates/mail/changelog/2026-06-27-traditional-chinese-copy-uses-taiwan-terminology.md +6 -0
  170. package/corpus/templates/plan/app/components/layout/Layout.tsx +5 -3
  171. package/corpus/templates/plan/app/i18n/zh-TW.ts +69 -69
  172. package/corpus/templates/plan/changelog/2026-06-27-traditional-chinese-copy-uses-taiwan-terminology.md +6 -0
  173. package/corpus/templates/slides/app/components/layout/Layout.tsx +3 -3
  174. package/corpus/templates/slides/app/i18n/zh-TW.ts +64 -64
  175. package/corpus/templates/slides/changelog/2026-06-27-traditional-chinese-copy-uses-taiwan-terminology.md +6 -0
  176. package/corpus/templates/videos/app/components/layout/Layout.tsx +2 -2
  177. package/corpus/templates/videos/app/i18n/zh-TW.ts +54 -54
  178. package/corpus/templates/videos/changelog/2026-06-27-traditional-chinese-copy-uses-taiwan-terminology.md +6 -0
  179. package/dist/client/AgentPanel.d.ts.map +1 -1
  180. package/dist/client/AgentPanel.js +16 -6
  181. package/dist/client/AgentPanel.js.map +1 -1
  182. package/dist/collab/routes.d.ts +2 -2
  183. package/dist/deploy/build.d.ts +3 -1
  184. package/dist/deploy/build.d.ts.map +1 -1
  185. package/dist/deploy/build.js +372 -37
  186. package/dist/deploy/build.js.map +1 -1
  187. package/dist/deploy/route-discovery.d.ts +1 -1
  188. package/dist/deploy/route-discovery.js +1 -1
  189. package/dist/deploy/route-discovery.js.map +1 -1
  190. package/dist/notifications/routes.d.ts +1 -1
  191. package/dist/observability/routes.d.ts +5 -5
  192. package/dist/resources/handlers.d.ts +3 -3
  193. package/dist/server/agent-engine-api-key-route.d.ts +2 -2
  194. package/dist/server/edge.d.ts +11 -0
  195. package/dist/server/edge.d.ts.map +1 -0
  196. package/dist/server/edge.js +11 -0
  197. package/dist/server/edge.js.map +1 -0
  198. package/dist/server/transcribe-voice.d.ts +1 -1
  199. package/dist/styles/agent-native.css +123 -0
  200. package/dist/templates/default/app/i18n/zh-TW.ts +44 -44
  201. package/dist/vite/client.d.ts.map +1 -1
  202. package/dist/vite/client.js +1 -0
  203. package/dist/vite/client.js.map +1 -1
  204. package/docs/content/locales/zh-TW/a2a-protocol.md +68 -68
  205. package/docs/content/locales/zh-TW/actions.md +82 -82
  206. package/docs/content/locales/zh-TW/agent-mentions.md +22 -22
  207. package/docs/content/locales/zh-TW/agent-surfaces.md +82 -82
  208. package/docs/content/locales/zh-TW/agent-teams.md +29 -29
  209. package/docs/content/locales/zh-TW/agent-web-surfaces.md +11 -11
  210. package/docs/content/locales/zh-TW/audit-log.md +16 -16
  211. package/docs/content/locales/zh-TW/authentication.md +32 -32
  212. package/docs/content/locales/zh-TW/automations.md +32 -32
  213. package/docs/content/locales/zh-TW/blueprint-installer.md +19 -19
  214. package/docs/content/locales/zh-TW/cli-adapters.md +17 -17
  215. package/docs/content/locales/zh-TW/client.md +62 -62
  216. package/docs/content/locales/zh-TW/cloneable-saas.md +32 -32
  217. package/docs/content/locales/zh-TW/code-agents-ui.md +91 -91
  218. package/docs/content/locales/zh-TW/components.md +51 -51
  219. package/docs/content/locales/zh-TW/context-awareness.md +66 -66
  220. package/docs/content/locales/zh-TW/creating-templates.md +39 -39
  221. package/docs/content/locales/zh-TW/cross-app-sso.md +29 -29
  222. package/docs/content/locales/zh-TW/database.md +21 -21
  223. package/docs/content/locales/zh-TW/deployment.md +37 -37
  224. package/docs/content/locales/zh-TW/dispatch.md +43 -43
  225. package/docs/content/locales/zh-TW/drop-in-agent.md +34 -34
  226. package/docs/content/locales/zh-TW/durable-resume.md +18 -18
  227. package/docs/content/locales/zh-TW/embedding-sdk.md +73 -73
  228. package/docs/content/locales/zh-TW/evals.md +16 -16
  229. package/docs/content/locales/zh-TW/extensions.md +81 -81
  230. package/docs/content/locales/zh-TW/external-agents.md +146 -146
  231. package/docs/content/locales/zh-TW/faq.md +43 -43
  232. package/docs/content/locales/zh-TW/file-uploads.md +11 -11
  233. package/docs/content/locales/zh-TW/frames.md +33 -33
  234. package/docs/content/locales/zh-TW/getting-started.md +28 -28
  235. package/docs/content/locales/zh-TW/harness-agents.md +78 -78
  236. package/docs/content/locales/zh-TW/human-approval.md +27 -27
  237. package/docs/content/locales/zh-TW/internationalization.md +19 -19
  238. package/docs/content/locales/zh-TW/key-concepts.md +68 -68
  239. package/docs/content/locales/zh-TW/local-file-mode.md +50 -50
  240. package/docs/content/locales/zh-TW/mcp-apps.md +38 -38
  241. package/docs/content/locales/zh-TW/mcp-clients.md +67 -67
  242. package/docs/content/locales/zh-TW/mcp-protocol.md +50 -50
  243. package/docs/content/locales/zh-TW/messaging.md +99 -99
  244. package/docs/content/locales/zh-TW/migration-workbench.md +6 -6
  245. package/docs/content/locales/zh-TW/multi-app-workspace.md +39 -39
  246. package/docs/content/locales/zh-TW/multi-tenancy.md +7 -7
  247. package/docs/content/locales/zh-TW/native-chat-ui.md +38 -38
  248. package/docs/content/locales/zh-TW/notifications.md +23 -23
  249. package/docs/content/locales/zh-TW/observability.md +49 -49
  250. package/docs/content/locales/zh-TW/observational-memory.md +23 -23
  251. package/docs/content/locales/zh-TW/onboarding.md +40 -40
  252. package/docs/content/locales/zh-TW/plan-plugin.md +37 -37
  253. package/docs/content/locales/zh-TW/pr-visual-recap.md +72 -72
  254. package/docs/content/locales/zh-TW/processors.md +17 -17
  255. package/docs/content/locales/zh-TW/progress.md +15 -15
  256. package/docs/content/locales/zh-TW/pure-agent-apps.md +10 -10
  257. package/docs/content/locales/zh-TW/real-time-collaboration.md +103 -103
  258. package/docs/content/locales/zh-TW/recurring-jobs.md +19 -19
  259. package/docs/content/locales/zh-TW/routing.md +9 -9
  260. package/docs/content/locales/zh-TW/sandbox-adapters.md +48 -48
  261. package/docs/content/locales/zh-TW/security.md +49 -49
  262. package/docs/content/locales/zh-TW/server.md +47 -47
  263. package/docs/content/locales/zh-TW/sharing.md +22 -22
  264. package/docs/content/locales/zh-TW/skills-guide.md +46 -46
  265. package/docs/content/locales/zh-TW/template-analytics.md +40 -40
  266. package/docs/content/locales/zh-TW/template-assets.md +69 -69
  267. package/docs/content/locales/zh-TW/template-brain.md +81 -81
  268. package/docs/content/locales/zh-TW/template-calendar.md +40 -40
  269. package/docs/content/locales/zh-TW/template-chat.md +27 -27
  270. package/docs/content/locales/zh-TW/template-clips.md +85 -85
  271. package/docs/content/locales/zh-TW/template-content.md +65 -66
  272. package/docs/content/locales/zh-TW/template-design.md +29 -29
  273. package/docs/content/locales/zh-TW/template-dispatch.md +51 -51
  274. package/docs/content/locales/zh-TW/template-forms.md +25 -25
  275. package/docs/content/locales/zh-TW/template-mail.md +71 -71
  276. package/docs/content/locales/zh-TW/template-plan.md +92 -92
  277. package/docs/content/locales/zh-TW/template-slides.md +52 -52
  278. package/docs/content/locales/zh-TW/template-videos.md +30 -30
  279. package/docs/content/locales/zh-TW/tracking.md +29 -29
  280. package/docs/content/locales/zh-TW/using-your-agent.md +18 -18
  281. package/docs/content/locales/zh-TW/voice-input.md +19 -19
  282. package/docs/content/locales/zh-TW/what-is-agent-native.md +61 -61
  283. package/docs/content/locales/zh-TW/workspace-connections.md +41 -41
  284. package/docs/content/locales/zh-TW/workspace-management.md +27 -27
  285. package/docs/content/locales/zh-TW/workspace.md +58 -58
  286. package/docs/content/locales/zh-TW/writing-agent-instructions.md +41 -41
  287. package/docs/content/template-clips.md +48 -2
  288. package/package.json +2 -1
  289. package/src/templates/default/app/i18n/zh-TW.ts +44 -44
@@ -1,27 +1,27 @@
1
1
  ---
2
- title: "安全帶特工"
3
- description: "將 Claude Code、Codex、Pi 和其他完整的編碼工具作為 Agent-Native 內的嵌入式代理執行,並具有自己的循環、沙箱、本機工具和可恢復的 SQL 支持的工作階段。"
4
- search: "harness代理AgentHarness ai-sdk HarnessAgent Claude程式碼Codex Pi Cursor Mastra嵌入式編碼代理resolveAgentHarness startAgentHarnessRun可恢復工作階段沙箱主機工具"
2
+ title: "安全帶代理"
3
+ description: "將 Claude Code、Codex、Pi 和其他完整的編碼工具作為 Agent-Native 內的嵌入式代理執行,並具有自己的迴圈、沙箱、本機工具和可恢復的 SQL 支援的工作階段。"
4
+ search: "harness代理AgentHarness ai-sdk HarnessAgent Claude 程式碼Codex Pi Cursor Mastra嵌入式編碼代理resolveAgentHarness startAgentHarnessRun可恢復工作階段沙箱主機工具"
5
5
  ---
6
6
 
7
- # 安全特工
7
+ # 安全代理
8
8
 
9
9
  > **這是給誰的:** 主機作者連線完整的編碼執行時(Claude 程式碼,
10
10
  > Codex, Pi) 轉換為 Agent-Native 作為代理。建置應用程式?從
11
11
  > [Creating Templates](/docs/creating-templates).
12
12
 
13
13
  線束代理是一個完整的代理執行時 - Claude 程式碼、Codex、Pi 等 -
14
- 擁有自己的循環、工作區、本機檔案工具、工作階段狀態、壓縮,
15
- 審批模型和沙箱行為。 Agent-Native 通過
14
+ 擁有自己的迴圈、工作區、本機檔案工具、工作階段狀態、壓縮,
15
+ 核准模型和沙箱行為。 Agent-Native 透過
16
16
  **`AgentHarness`** `@agent-native/core/agent/harness` 中的基質,流式傳輸它們
17
- 將事件放入正常的紀錄中,並保留其本機工作階段,以便成為一個線程
17
+ 將事件放入正常的紀錄中,並保留其本機工作階段,以便成為一個對話串
18
18
  可以暫停和恢復。
19
19
 
20
- 這與內置聊天代理和自帶聊天功能不同
21
- 執行時。內置代理和`AgentEngine`為一個模型往返
20
+ 這與內建聊天代理和自帶聊天功能不同
21
+ 執行時。內建代理和`AgentEngine`為一個模型往返
22
22
  在`runAgentLoop`下面。一個harness不是一個`AgentEngine`提供者——它執行它的
23
- 自己的端對端循環,因此 Agent-Native 將其作為工作階段驅動,而不是單個
24
- 模型調用。
23
+ 自己的端對端迴圈,因此 Agent-Native 將其作為工作階段驅動,而不是單一
24
+ 模型呼叫。
25
25
 
26
26
  ```an-diagram title="安全帶擁有它的環; Agent-Native 驅動工作階段" summary="AgentHarness 底層 creates/resumes 本機工作階段,將其事件流式傳輸到正常轉錄本中,並在輪次之間將恢復狀態保留在 SQL 中。"
27
27
  {
@@ -32,31 +32,31 @@ search: "harness代理AgentHarness ai-sdk HarnessAgent Claude程式碼Codex Pi C
32
32
 
33
33
  ## 我需要哪個編碼檔案? {#which-doc}
34
34
 
35
- | 你想要…… | 使用 |
36
- | -------------------------------------------------------- | -------------------------------------------- |
37
- | 使用自己的循環+工具**作為代理**執行Claude程式碼/Codex/Pi | **安全帶代理**(本頁面) |
38
- | 渲染 Claude-Code/Codex 樣式 **編碼工作區 UI** | [Agent-Native Code UI](/docs/code-agents-ui) |
39
- | 交換執行代理的 **`run-code` 工具**的後端 | [Adapters](/docs/sandbox-adapters) |
40
- | 封裝一個CLI工具(`gh`、`ffmpeg`)供代理調用 | [Adapters](/docs/sandbox-adapters) |
35
+ | 你想要…… | 使用 |
36
+ | ---------------------------------------------------------- | -------------------------------------------- |
37
+ | 使用自己的迴圈+工具**作為代理**執行 Claude 程式碼/Codex/Pi | **安全帶代理**(本頁面) |
38
+ | 渲染 Claude-Code/Codex 樣式 **編碼工作區 UI** | [Agent-Native Code UI](/docs/code-agents-ui) |
39
+ | 交換執行代理的 **`run-code` 工具**的後端 | [Adapters](/docs/sandbox-adapters) |
40
+ | 封裝一個 CLI 工具(`gh`、`ffmpeg`)供代理呼叫 | [Adapters](/docs/sandbox-adapters) |
41
41
 
42
42
  相鄰表面:將您在其他地方建置的代理放在 Agent-Native 的聊天後面
43
43
  UI 與 [`AgentChatRuntime`](/docs/native-chat-ui#byo-agent-runtimes);讓一個
44
- 外部 MCP 主機通過 [External Agents](/docs/external-agents) 調用您的應用;
45
- 生成後台/子代理與 [Custom Agents & Teams](/docs/agent-teams) 一起執行。
44
+ 外部 MCP 主機透過 [External Agents](/docs/external-agents) 呼叫您的應用;
45
+ 生成背景/子代理與 [Custom Agents & Teams](/docs/agent-teams) 一起執行。
46
46
 
47
- ## 內置安全帶 {#built-in}
47
+ ## 內建安全帶 {#built-in}
48
48
 
49
- `registerBuiltinAgentHarnesses()` 註冊由 AI SDK 支持的三個適配器
49
+ `registerBuiltinAgentHarnesses()` 註冊由 AI SDK 支援的三個轉接器
50
50
  `HarnessAgent`:
51
51
 
52
- | 姓名 | 執行時 | 沙盒 | 批準 |
53
- | ---------------------------- | ------------ | ---- | ---- |
54
- | `ai-sdk-harness:claude-code` | Claude程式碼 | 是的 | 是的 |
55
- | `ai-sdk-harness:codex` | Codex | 是的 | 沒有 |
56
- | `ai-sdk-harness:pi` | 圓週率 | 沒有 | 是的 |
52
+ | 姓名 | 執行時 | 沙盒 | 核准 |
53
+ | ---------------------------- | ------------- | ---- | ---- |
54
+ | `ai-sdk-harness:claude-code` | Claude 程式碼 | 是的 | 是的 |
55
+ | `ai-sdk-harness:codex` | Codex | 是的 | 沒有 |
56
+ | `ai-sdk-harness:pi` | 圓週率 | 沒有 | 是的 |
57
57
 
58
58
  它們的執行時包是**可選的對等依賴項**並且延遲載入,因此
59
- 從不使用安全帶的應用程式無需付費。每個適配器都帶有一個
59
+ 從不使用安全帶的應用程式無需付費。每個轉接器都帶有一個
60
60
  `installPackage` 提示(例如`@ai-sdk/harness@canary
61
61
  @ai-sdk/harness-codex@canary`); `resolveAgentHarness`拋出一個明確的安裝
62
62
  如果缺少包,則會出現錯誤,並且 `isAgentHarnessPackageInstalled(entry)`
@@ -67,13 +67,13 @@ UI 與 [`AgentChatRuntime`](/docs/native-chat-ui#byo-agent-runtimes);讓一個
67
67
 
68
68
  ## ACP代理 {#acp}
69
69
 
70
- Agent-Native可以充當[ACP](https://agentclientprotocol.com)(代理用戶端
70
+ Agent-Native 可以充當[ACP](https://agentclientprotocol.com)(代理用戶端
71
71
  協議)**用戶端**並驅動本機編碼代理 - Gemini CLI、Claude 程式碼,
72
- 或任何符合ACP標準的代理——通過相同的基材。代理作為
73
- 本機子進程通過stdio使用換行符分隔的JSON-RPC; ACP的編輯
72
+ 或任何符合ACP標準的代理——透過相同的基材。代理作為
73
+ 本機子行程透過stdio使用換行符分隔的JSON-RPC; ACP的編輯
74
74
  ↔ 代理模型就是這個形狀。
75
75
 
76
- 此適配器的範圍是**本機編碼**。子進程繼承
76
+ 此轉接器的範圍是**本機編碼**。子行程繼承
77
77
  父環境,因此代理重用它已有的任何本機 CLI 登入
78
78
  (例如使用者主目錄中的 `gemini` 或 `claude` 驗證)。這不是一個
79
79
  託管或沙盒傳輸,並且它不是聊天/A2A 傳輸 - 對於這些,
@@ -81,7 +81,7 @@ Agent-Native可以充當[ACP](https://agentclientprotocol.com)(代理用戶端
81
81
 
82
82
  | 姓名 | 預設指令 | 可恢復\* |
83
83
  | ----------------- | ---------------------------------------------- | -------- |
84
- | `acp` | _(通過設定提供`command`/`args`)_ | 是的 |
84
+ | `acp` | _(透過設定提供`command`/`args`)_ | 是的 |
85
85
  | `acp:gemini` | `npx -y @google/gemini-cli --experimental-acp` | 是的 |
86
86
  | `acp:claude-code` | `npx -y @zed-industries/claude-code-acp` | 是的 |
87
87
 
@@ -107,16 +107,16 @@ const custom = resolveAgentHarness("acp", {
107
107
  ```
108
108
 
109
109
  協議傳輸(`@zed-industries/agent-client-protocol`)是可選的
110
- 通過`installPackage`提示延遲載入依賴,就像AI SDK一樣
110
+ 透過`installPackage`提示延遲載入依賴,就像 AI SDK 一樣
111
111
  安全帶。代理二進制檔案本身(`@google/gemini-cli`,
112
112
  `@zed-industries/claude-code-acp`, …) 是一個單獨的外部 CLI;預設
113
- 通過 `npx` 啟動它,並且指令/參數保持可重寫,因為代理 ACP
114
- 入口標志仍在演變。
113
+ 透過 `npx` 啟動它,並且指令/參數保持可重寫,因為代理 ACP
114
+ 入口標誌仍在演變。
115
115
 
116
- `permissionMode` 使用工具調用對應到 ACP `session/request_permission`
116
+ `permissionMode` 使用工具呼叫對應到 ACP `session/request_permission`
117
117
  設定代理報告:讀取始終執行,編輯在 `allow-edits` 下執行,以及
118
- 一切有風險的提示,除非`allow-all`。批準表面正常
119
- `approval-request` 事件。該適配器服務於 `fs/read_text_file` 和
118
+ 一切有風險的提示,除非`allow-all`。核准表面正常
119
+ `approval-request` 事件。該轉接器服務於 `fs/read_text_file` 和
120
120
  `fs/write_text_file` 針對工作階段工作區(拒絕逃逸路徑
121
121
  it) 並寫入發出 `file-change` 事件;終端方法未公布,
122
122
  因此代理使用自己的 shell。
@@ -125,12 +125,12 @@ it) 並寫入發出 `file-change` 事件;終端方法未公布,
125
125
 
126
126
  有兩個 Codex 表面,它們的驗證方式不同:
127
127
 
128
- - **Agent-Native 程式碼/桌面** 在使用者計算機上執行 `codex exec`。如果
129
- 使用者已執行`codex login`,此本機執行重用任何ChatGPT
130
- 通過訂閱或API金鑰驗證已安裝的Codex CLI報告
128
+ - **Agent-Native 程式碼/桌面** 在使用者電腦上執行 `codex exec`。如果
129
+ 使用者已執行`codex login`,此本機執行重用任何 ChatGPT
130
+ 透過訂閱或 API 金鑰驗證已安裝的Codex CLI 報告
131
131
  `codex login status`.
132
132
  - **`ai-sdk-harness:codex`**載入`@ai-sdk/harness-codex`,它驅動Codex
133
- 通過 `@openai/codex-sdk` 進入線束沙箱。它不會默默地
133
+ 透過 `@openai/codex-sdk` 進入線束沙箱。它不會默默地
134
134
  繼承使用者的桌面 `~/.codex` 登入名,因為沙箱可能是遠端的
135
135
  或孤立。對於可信/私人沙箱,請選取使用 `codexCliAuth: true`;
136
136
  Agent-Native 將本機 Codex CLI auth 檔案複製到沙箱中
@@ -150,7 +150,7 @@ const adapter = resolveAgentHarness("ai-sdk-harness:codex", {
150
150
  ```
151
151
 
152
152
  `codexCliAuth: true` 讀取為 `CODEX_HOME/auth.json` 或 `~/.codex/auth.json`。至
153
- 指向不同的本機登入,通過
153
+ 指向不同的本機登入,透過
154
154
  `{ codexCliAuth: { codexHome: "/path/to/.codex" } }` 或
155
155
  `{ codexCliAuth: { authJsonPath: "/path/to/auth.json" } }`.
156
156
 
@@ -167,7 +167,7 @@ const adapter = resolveAgentHarness("ai-sdk-harness:codex");
167
167
  ```
168
168
 
169
169
  `resolveAgentHarness(name, config?)` 返回 `AgentHarnessAdapter`。
170
- 可選的 `config` 被轉發到適配器工廠 - 用於 AI SDK 適配器
170
+ 可選的 `config` 被轉發到轉接器工廠 - 用於 AI SDK 轉接器
171
171
  對應到 `AiSdkHarnessAdapterOptions`(`label`、`description`,
172
172
  僅 `permissionMode`、`harnessOptions`、`agentOptions` 和 Codex
173
173
  `codexCliAuth`)。使用`listAgentHarnesses()`枚舉註冊的內容
@@ -202,18 +202,18 @@ const run = startAgentHarnessRun({
202
202
  ```
203
203
 
204
204
  `startAgentHarnessRun`從執行管理器返回`ActiveRun`,所以輪到
205
- 通過現有的跑步路線、成績單和取消顯示,就像
205
+ 透過現有的執行路由、逐字稿和取消顯示,就像
206
206
  任何其他代理執行。傳遞已經建立的 `session` 而不是 `createSession`
207
- 繼續您在內存中儲存的工作階段。
207
+ 繼續您在記憶中儲存的工作階段。
208
208
 
209
209
  ## 會議和簡歷 {#sessions}
210
210
 
211
211
  線束擁有長期存在的本機工作階段狀態。 Agent-Native 將其保留在 SQL
212
- 因此線程可以在輪流、進程和部署中生存。 `resumeState`
213
- 是**不透明** - Agent-Native 存儲它並將其返還,但從不檢查或
212
+ 因此對話串可以在輪流、行程和部署中生存。 `resumeState`
213
+ 是**不透明** - Agent-Native 儲存它並將其返還,但從不檢查或
214
214
  解釋它。
215
215
 
216
- ```an-diagram title="跨回合、流程和部署恢復" summary="每一輪都會將一個不透明的resumeState分離到SQL中;下一回合將其意見回饋到 createSession 而不是重播聊天紀錄。"
216
+ ```an-diagram title="跨回合、流程和部署恢復" summary="每一輪都會將一個不透明的resumeState分離到 SQL 中;下一回合將其意見回饋到 createSession 而不是重播聊天紀錄。"
217
217
  {
218
218
  "html": "<div class=\"diagram-resume\"><div class=\"diagram-node\" data-rough>第 N 輪<br><small class=\"diagram-muted\">streamTurn</small></div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">&rarr;</div><div class=\"diagram-box\" data-rough>detach &rarr; resumeState<br><small class=\"diagram-muted\">不透明 · SQL harness 工作階段</small></div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">&rarr;</div><div class=\"diagram-node\" data-rough>第 N+1 輪<br><small class=\"diagram-muted\">createSession.resumeState</small></div></div>",
219
219
  "css": ".diagram-resume{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.diagram-resume .diagram-arrow{font-size:22px;line-height:1}"
@@ -233,30 +233,30 @@ const last = await getLatestAgentHarnessSessionForThread(threadId);
233
233
  商店還公開了`saveAgentHarnessSession`、`updateAgentHarnessSession`,
234
234
  `getAgentHarnessSession`, `getAgentHarnessSessionByRunId`,
235
235
  `markAgentHarnessSessionStopped` 和 `ensureAgentHarnessSessionTables`。
236
- `startAgentHarnessRun` 為您調用儲存/更新/停止路徑;伸手去夠他們
236
+ `startAgentHarnessRun` 為您呼叫儲存/更新/停止路徑;伸手去夠他們
237
237
  僅直接在自訂主機中。
238
238
 
239
239
  ## 託管工具和權限 {#host-tools}
240
240
 
241
241
  線束帶有自己的本機工具(讀取、編輯、寫入、shell 等),因此
242
- 您**不**將檔案編輯重新公開為主機工具。僅通過**狹窄,
243
- 當您通過 `createSession.tools` 有意設定** Agent-Native actions
242
+ 您**不**將檔案編輯重新公開為主機工具。僅透過**狹窄,
243
+ 當您透過 `createSession.tools` 有意設定** Agent-Native actions
244
244
  希望該工具能夠實現特定的應用操作 - 並保留 `defineAction`
245
- 驗證、請求上下文、超時、截斷和唯讀元資料完好無損
245
+ 驗證、請求脈絡、超時、截斷和唯讀中繼資料完好無損
246
246
  你知道。
247
247
 
248
- `permissionMode` 控制安全帶在未經批準的情況下可以執行的操作:
248
+ `permissionMode` 控制安全帶在未經核准的情況下可以執行的操作:
249
249
 
250
250
  | 模式 | 含義 |
251
251
  | ------------- | ----------------------------------------- |
252
252
  | `allow-reads` | 預設。讀取執行;編輯和有風險的actions提示 |
253
253
  | `allow-edits` | 讀取和編輯執行;其他有風險actions提示 |
254
- | `allow-all` | 無審批門控 |
254
+ | `allow-all` | 無核准門控 |
255
255
 
256
- 當線束暫停等待批準時,它會發出 `approval-request` 事件,並且
257
- 工作階段標記為 `idle`,並紀錄待批準,因此 UI 可以
256
+ 當線束暫停等待核准時,它會發出 `approval-request` 事件,並且
257
+ 工作階段標記為 `idle`,並紀錄待核准,因此 UI 可以
258
258
  將其浮出水面並根據使用者的決定繼續。請參閱
259
- [Human Approval](/docs/human-approval) 為批準表面。
259
+ [Human Approval](/docs/human-approval) 為核准表面。
260
260
 
261
261
  ## 活動 {#events}
262
262
 
@@ -264,25 +264,25 @@ const last = await getLatestAgentHarnessSessionForThread(threadId);
264
264
  轉換為標準 `AgentChatEvent` 流
265
265
  `agentHarnessEventToAgentChatEvents`。事件聯盟覆蓋`text-delta`,
266
266
  `thinking-delta`、`activity`、`tool-start`、`tool-done`(可攜帶
267
- `mcpApp` 原生小部件的負載)、`approval-request`、`file-change`,
267
+ `mcpApp` 原生小工具的負載)、`approval-request`、`file-change`,
268
268
  `compaction`、`usage`、`error` 和 `done`。因為工具結果流經
269
- 相同的翻譯,動作聲明的本機小部件仍然呈現 - 請參閱
269
+ 相同的翻譯,動作聲明的本機小工具仍然呈現 - 請參閱
270
270
  [Native 聊天介面](/docs/native-chat-ui).
271
271
 
272
- ## 後台執行和UI {#background-runs}
272
+ ## 背景執行和 UI {#background-runs}
273
273
 
274
274
  Harness 將專案執行到共用的 `BackgroundAgentRun` 形狀中
275
- `createAgentHarnessBackgroundAgentController()` 並可通過
276
- 現有執行路線為`goalId=agent-harness`。這意味著長期執行的 Claude
277
- 程式碼或 Codex 工作階段出現在相同的後台執行和轉錄表面中
278
- 作為代理團隊和其他適配器,使用 `listAgentHarnessBackgroundRuns`,
275
+ `createAgentHarnessBackgroundAgentController()` 並可透過
276
+ 現有執行路由為`goalId=agent-harness`。這意味著長期執行的 Claude
277
+ 程式碼或 Codex 工作階段出現在相同的背景執行和轉錄表面中
278
+ 作為代理團隊和其他轉接器,使用 `listAgentHarnessBackgroundRuns`,
279
279
  `listAgentHarnessBackgroundTranscriptEvents`、`getAgentHarnessBackgroundRun` 和
280
280
  `stopAgentHarnessBackgroundRun` 可用於自訂主機。
281
281
 
282
- ## 自訂適配器 {#custom-adapters}
282
+ ## 自訂轉接器 {#custom-adapters}
283
283
 
284
- 要包裝不是內置函數之一的執行時,請實現
285
- `AgentHarnessAdapter` 並註冊它。適配器聲明其功能並且
284
+ 要包裝不是內建函式之一的執行時,請實現
285
+ `AgentHarnessAdapter` 並註冊它。轉接器聲明其功能並且
286
286
  建立工作階段;工作階段公開 `streamTurn` 和可選的 `continueTurn`,
287
287
  `approve`、`detach`、`stop` 和 `destroy`。
288
288
 
@@ -320,21 +320,21 @@ registerAgentHarness({
320
320
  });
321
321
  ```
322
322
 
323
- 通過 `createSession` 中的動態匯入和一個
324
- `installPackage` 提示。對於橋支持的編碼線束,需要真正的
325
- 沙箱/工作區提供程序,而不是在中執行任意編碼代理
326
- 主機進程 - 請參閱 [Sandbox Adapters](/docs/sandbox-adapters)。 AI SDK適配器
327
- (`createAiSdkHarnessAdapter`,由 `@ai-sdk/harness` 的 `HarnessAgent` 支持)是
323
+ 透過 `createSession` 中的動態匯入和一個
324
+ `installPackage` 提示。對於橋支援的編碼線束,需要真正的
325
+ 沙箱/工作區提供者,而不是在中執行任意編碼代理
326
+ 主機行程 - 請參閱 [Sandbox Adapters](/docs/sandbox-adapters)。 AI SDK 轉接器
327
+ (`createAiSdkHarnessAdapter`,由 `@ai-sdk/harness` 的 `HarnessAgent` 支援)是
328
328
  此合約的一個實現,而不是公開抽象。
329
329
 
330
330
  ## 不要 {#donts}
331
331
 
332
- - 請勿將 Claude 程式碼、Codex、光標、Mastra 或 Pi 新增為 `AgentEngine`。他們
333
- 擁有自己的循環;在 `AgentEngine.stream()` 下執行一個雙執行循環
332
+ - 請勿將 Claude 程式碼、Codex、游標、Mastra 或 Pi 新增為 `AgentEngine`。他們
333
+ 擁有自己的迴圈;在 `AgentEngine.stream()` 下執行一個雙執行迴圈
334
334
  並丟失工作階段生命週期語義。
335
335
  - 不要每回合將完整的 Agent-Native 聊天歷史紀錄重播到安全帶中。簡歷
336
336
  使用 `resumeState` 的線束工作階段。
337
- - 不要將`resumeState`存儲在`application_state`中。它屬於安全帶
337
+ - 不要將`resumeState`儲存在`application_state`中。它屬於安全帶
338
338
  工作階段 SQL 表。
339
339
  - 預設情況下,不要將每個應用操作公開給每個線束工作階段。遞給它
340
340
  小型、專用工具集。
@@ -344,6 +344,6 @@ registerAgentHarness({
344
344
  - [Native 聊天介面](/docs/native-chat-ui) — 將您自己的代理置於 UI 與 `AgentChatRuntime` 的聊天後面。
345
345
  - [Agent Surfaces](/docs/agent-surfaces) — 選取無頭、聊天、邊車或完整應用。
346
346
  - [Agent-Native Code UI](/docs/code-agents-ui) — 可重用的編碼工作區表面。
347
- - [Custom Agents & Teams](/docs/agent-teams) — 後台執行和子代理委派。
347
+ - [Custom Agents & Teams](/docs/agent-teams) — 背景執行和子代理委派。
348
348
  - [Sandbox Adapters](/docs/sandbox-adapters) — 用於編碼工具的可插入執行後端。
349
- - [Human Approval](/docs/human-approval) — 批準表面線束執行使用。
349
+ - [Human Approval](/docs/human-approval) — 核准表面線束執行使用。
@@ -1,14 +1,14 @@
1
1
  ---
2
- title: "人在環批準"
3
- description: "在高後果操作執行之前暫停代理 - defineAction 的 needApproval 門會發出一個approval_required 事件,人工批準,然後工具才會執行。"
2
+ title: "人在環核准"
3
+ description: "在高後果操作執行之前暫停代理 - defineAction 的 needApproval 門會發出一個approval_required 事件,人工核准,然後工具才會執行。"
4
4
  ---
5
5
 
6
- # 人在環批準
6
+ # 人在環核准
7
7
 
8
- 大多數 actions 應該直接執行。其中一些操作(發送電子郵件、為卡充值、刪除帳戶)是面向外部且難以撤消的,您不希望代理自主執行這些操作。對於這些,`defineAction` 有一個選取加入的**批準門**:當代理嘗試調用該操作時,循環會暫停,向人類顯示批準/拒絕功能,並*僅*在人類批準該特定調用後才執行該操作。
8
+ 大多數 actions 應該直接執行。其中一些操作(傳送電子郵件、為卡充值、刪除帳戶)是面向外部且難以復原的,您不希望代理自主執行這些操作。對於這些,`defineAction` 有一個選取加入的**核准門**:當代理嘗試呼叫該操作時,迴圈會暫停,向人類顯示核准/拒絕功能,並*僅*在人類核准該特定呼叫後才執行該操作。
9
9
 
10
10
  > [!WARNING]
11
- > 保持很少的批準。每個門控操作都是代理循環中的硬停止——它會中斷執行並需要人工往返。僅將 `needsApproval` 用於真正後果嚴重、難以撤銷、面向外的操作。如果您發現自己對讀取或例行寫入進行門控,那么您就錯了。預設為**關閉**,幾乎每個操作都應將其關閉。
11
+ > 保持很少的核准。每個門控操作都是代理迴圈中的硬停止——它會中斷執行並需要人工往返。僅將 `needsApproval` 用於真正後果嚴重、難以撤銷、面向外的操作。如果您發現自己對讀取或例行寫入進行門控,那麼您就錯了。預設為**關閉**,幾乎每個操作都應將其關閉。
12
12
 
13
13
  ## `needsApproval` 門 {#needs-approval}
14
14
 
@@ -20,67 +20,67 @@ description: "在高後果操作執行之前暫停代理 - defineAction 的 need
20
20
  "language": "ts",
21
21
  "code": "export default defineAction({\n description: \"Send an email via Gmail.\",\n schema: z.object({\n to: z.string(),\n subject: z.string(),\n body: z.string(),\n }),\n // Sending is outward-facing and hard to undo, so the agent can never send\n // without a human approving the specific call. Drafting/queueing is\n // unaffected — only the real send is gated.\n needsApproval: true,\n run: async (args) => {\n /* ...actually send... */\n },\n});",
22
22
  "annotations": [
23
- { "lines": "10", "label": "整個大門", "note": "一面旗帜。當它為真且調用未獲批準時,循環會在 `run` 之前停止 - 模型本身永遠不會達到副作用。" },
24
- { "lines": "11-13", "label": "run() is untouched", "note": "處理程序保持不變。批準是由其週圍的循環強制執行的,而不是由 `run` 內的任何內容強制執行。" }
23
+ { "lines": "10", "label": "整個大門", "note": "一面旗帜。當它為真且呼叫未獲核准時,迴圈會在 `run` 之前停止 - 模型本身永遠不會達到副作用。" },
24
+ { "lines": "11-13", "label": "run() is untouched", "note": "處理常式保持不變。核准是由其週圍的迴圈強制執行的,而不是由 `run` 內的任何內容強制執行。" }
25
25
  ]
26
26
  }
27
27
  ```
28
28
 
29
- - **`needsApproval: true`** — 始終需要批準。
30
- - **`needsApproval: (args, ctx) => boolean | Promise<boolean>`** — 僅當謂詞返回 true 時才需要批準。有條件地選取門,例如僅適用於外部收件人或僅高於美元閾值:
29
+ - **`needsApproval: true`** — 始終需要核准。
30
+ - **`needsApproval: (args, ctx) => boolean | Promise<boolean>`** — 僅當謂詞返回 true 時才需要核准。有條件地選取門,例如僅適用於外部收件人或僅高於美元閾值:
31
31
 
32
32
  ```ts
33
33
  needsApproval: (args) => !args.to.endsWith("@your-company.com"),
34
34
  ```
35
35
 
36
- 保持謂詞純粹且快速。 **關閉失敗**:如果謂詞拋出異常,框架會將其視為“需要批準”,而不是默默地執行後果嚴重的操作。
36
+ 保持謂詞純粹且快速。 **關閉失敗**:如果謂詞拋出異常,框架會將其視為“需要核准”,而不是默默地執行後果嚴重的操作。
37
37
 
38
- 當 `needsApproval` 被省略時,行為是逐字節不變的——公開路徑上沒有額外的成本。
38
+ 當 `needsApproval` 被省略時,行為是逐位元組不變的——公開路徑上沒有額外的成本。
39
39
 
40
- 這對於舊版 `parameters` 樣式的 actions 和基於架構的 actions,以及應用內代理、子代理、A2A 和 MCP 調用者(每個代理通過同一循環進行表面路由)的工作原理相同。
40
+ 這對於舊版 `parameters` 樣式的 actions 和基於架構的 actions,以及應用內代理、子代理、A2A 和 MCP 呼叫者(每個代理透過同一迴圈進行表面路由)的工作原理相同。
41
41
 
42
- ## 循環如何暫停 {#loop}
42
+ ## 迴圈如何暫停 {#loop}
43
43
 
44
- 當代理調用門控操作並且此特定調用尚未獲得批準時,循環不會執行 `run()`。相反,它:
44
+ 當代理呼叫門控操作並且此特定呼叫尚未獲得核准時,迴圈不會執行 `run()`。相反,它:
45
45
 
46
- 1. 解析門。對於謂詞,它調用`needsApproval(input, ctx)`;拋出被視為“必須批準”(失敗關閉)。
46
+ 1. 解析門。對於謂詞,它呼叫`needsApproval(input, ctx)`;拋出被視為“必須核准”(失敗關閉)。
47
47
  2. 發出 `tool_start` 事件(以便 UI 顯示呼叫),然後立即發出 **`approval_required`** 事件,然後停止轉彎。該操作的副作用永遠不會發生。
48
48
 
49
49
  `approval_required` 事件包含用戶端呈現可供性所需的一切:
50
50
 
51
- | 欄位 | 型別 | 注釋 |
51
+ | 欄位 | 型別 | 註解 |
52
52
  | ------------- | -------- | -------------------------------------------- |
53
- | `tool` | `string` | 代理嘗試調用的操作名稱。 |
53
+ | `tool` | `string` | 代理嘗試呼叫的操作名稱。 |
54
54
  | `input` | 物件 | 代理傳遞的參數。 |
55
- | `approvalKey` | `string` | **穩定金鑰**用戶端回顯以批準*此確切的調用*。 |
56
- | `toolCallId` | `string` | 模型端工具調用 ID(如果可用)。 |
55
+ | `approvalKey` | `string` | **穩定金鑰**用戶端回顯以核准*此確切的呼叫*。 |
56
+ | `toolCallId` | `string` | 模型端工具呼叫 ID(如果可用)。 |
57
57
 
58
- `approvalKey` 是根據工具名稱及其輸入確定性派生的,因此相同的邏輯調用始終會生成相同的金鑰。模型永遠不會看到或設定它 - 它純粹是框架和人類的批準功能之間的握手。
58
+ `approvalKey` 是根據工具名稱及其輸入確定性派生的,因此相同的邏輯呼叫始終會生成相同的金鑰。模型永遠不會看到或設定它 - 它純粹是框架和人類的核准功能之間的握手。
59
59
 
60
60
  暫停工具返回一個結果,告訴模型轉動已暫停並且不再重試,因此模型不會旋轉。
61
61
 
62
62
  ## 人類如何認可 {#approve}
63
63
 
64
- 在 `approval_required` 上,聊天 UI 在暫停的工具調用上呈現 **批準/拒絕** 提示。這是在 `AssistantChat` 中自動連線的 - 您無需根據範本建置它。
64
+ 在 `approval_required` 上,聊天 UI 在暫停的工具呼叫上呈現 **核准/拒絕** 提示。這是在 `AssistantChat` 中自動連線的 - 您無需根據範本建置它。
65
65
 
66
- - **批準**重新發出在 `approvedToolCalls: [approvalKey]` 中攜帶呼叫金鑰的輪次(普通的繼續訊息)。在重新發出的回合中,門會看到已批準的集合中的金鑰,並讓特定的調用正常執行。
66
+ - **核准**重新發出在 `approvedToolCalls: [approvalKey]` 中攜帶呼叫金鑰的輪次(普通的繼續訊息)。在重新發出的回合中,門會看到已核准的集合中的金鑰,並讓特定的呼叫正常執行。
67
67
  - **Deny** 在本機消除可供性;沒有重新發出任何內容,因此該操作永遠不會執行。
68
68
 
69
- `approvedToolCalls` 是聊天請求 (`AgentChatRequest.approvedToolCalls`) 上的欄位。其中不存在的金鑰將保持暫停狀態 - 批準一個呼叫永遠不會茫然地批準其他呼叫。因為金鑰是內容尋址的,所以批準授權*使用這些參數進行調用*;如果模型稍後建議不同的發送,那就是新的金鑰和新的批準。
69
+ `approvedToolCalls` 是聊天請求 (`AgentChatRequest.approvedToolCalls`) 上的欄位。其中不存在的金鑰將保持暫停狀態 - 核准一個呼叫永遠不會茫然地核准其他呼叫。因為金鑰是內容尋址的,所以核准授權*使用這些參數進行呼叫*;如果模型稍後建議不同的傳送,那就是新的金鑰和新的核准。
70
70
 
71
71
  ## 端對端 {#flow}
72
72
 
73
- ```an-diagram title="審批中斷" summary="門控調用會在 run() 觸發之前暫停回合。批準重新發出攜帶呼叫金鑰的回合;只有這樣,副作用才會發生。"
73
+ ```an-diagram title="核准中斷" summary="門控呼叫會在 run() 觸發之前暫停回合。核准重新發出攜帶呼叫金鑰的回合;只有這樣,副作用才會發生。"
74
74
  {
75
- "html": "<div class=\"diagram-approve\"><div class=\"diagram-box\" data-rough>代理調用 send-email</div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">&darr;</div><div class=\"diagram-panel warn\" data-rough><strong>Gate 為真,調用尚未批準</strong><small class=\"diagram-muted\">loop emits tool_start + approval_required { tool, input, approvalKey }</small><span class=\"diagram-pill warn\">turn pauses &mdash; run() did NOT execute</span></div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">&darr;</div><div class=\"diagram-box\" data-rough>人在聊天中點擊批準<br><small class=\"diagram-muted\">用戶端用 approvedToolCalls: [approvalKey] 重新發起本輪</small></div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">&darr;</div><div class=\"diagram-panel ok\" data-rough><span class=\"diagram-pill ok\">Gate sees the key &rarr; run() executes &rarr; email sends</span></div></div>",
75
+ "html": "<div class=\"diagram-approve\"><div class=\"diagram-box\" data-rough>代理呼叫 send-email</div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">&darr;</div><div class=\"diagram-panel warn\" data-rough><strong>Gate 為真,呼叫尚未核准</strong><small class=\"diagram-muted\">loop emits tool_start + approval_required { tool, input, approvalKey }</small><span class=\"diagram-pill warn\">turn pauses &mdash; run() did NOT execute</span></div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">&darr;</div><div class=\"diagram-box\" data-rough>人在聊天中點選核准<br><small class=\"diagram-muted\">用戶端用 approvedToolCalls: [approvalKey] 重新發起本輪</small></div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">&darr;</div><div class=\"diagram-panel ok\" data-rough><span class=\"diagram-pill ok\">Gate sees the key &rarr; run() executes &rarr; email sends</span></div></div>",
76
76
  "css": ".diagram-approve{display:flex;flex-direction:column;align-items:center;gap:8px}.diagram-approve .diagram-panel{display:flex;flex-direction:column;gap:6px;align-items:center;padding:12px 16px;text-align:center}.diagram-approve .diagram-arrow{font-size:22px;line-height:1}"
77
77
  }
78
78
  ```
79
79
 
80
- 在框架中此門的典型(並且故意很少)使用是郵件範本的 `send-email` 操作,該操作設定 `needsApproval: true`,以便代理可以自由起草和排隊,但在沒有人工批準特定發送的情況下永遠無法實際發送訊息。
80
+ 在框架中此門的典型(並且故意很少)使用是郵件範本的 `send-email` 操作,該操作設定 `needsApproval: true`,以便代理可以自由起草和排隊,但在沒有人工核准特定傳送的情況下永遠無法實際傳送訊息。
81
81
 
82
82
  ## 相關
83
83
 
84
84
  - [**Actions**](/docs/actions#needs-approval) — 完整的 `defineAction` 表面,包括用於驗證返回值的 `outputSchema`。
85
- - [**Security**](/docs/security) - 何時達到批準門與向模型隱藏操作。
85
+ - [**Security**](/docs/security) - 何時達到核准門與向模型隱藏操作。
86
86
  - [**Mail template**](/docs/template-mail) — `send-email` 是參考範例。
@@ -1,18 +1,18 @@
1
1
  ---
2
2
  title: "國際化"
3
- description: "使用共用區域設定目錄、語言選取器、瀏覽器語言回退和區域設定感知檔案內容本機化 Agent Native 應用。"
3
+ description: "使用共用區域設定目錄、語言選取器、瀏覽器語言回退和區域設定感知檔案內容本機化 Agent-Native 應用。"
4
4
  ---
5
5
 
6
6
  # 國際化
7
7
 
8
- Agent Native應用程式可以通過共用本機化框架和範本UI
9
- `@agent-native/core/client/i18n` 執行時。框架存儲使用者的
8
+ Agent-Native 應用程式可以透過共用本機化框架和範本 UI
9
+ `@agent-native/core/client/i18n` 執行時。框架儲存使用者的
10
10
  SQL 設定中的語言選取,將其公開為 actions,並回退到
11
11
  當應用尚未翻譯字串時為英語。
12
12
 
13
13
  ## 執行時
14
14
 
15
- 通過`AppProviders`使用提供者:
15
+ 透過`AppProviders`使用提供者:
16
16
 
17
17
  ```tsx
18
18
  import { AppProviders, getLocaleInitScript } from "@agent-native/core/client";
@@ -31,9 +31,9 @@ const LOCALE_INIT_SCRIPT = getLocaleInitScript();
31
31
  ```
32
32
 
33
33
  `getLocaleInitScript()` 設定初始 `lang`、`dir` 和
34
- `window.__AGENT_NATIVE_LOCALE__` 在 React 水合之前。公開SSR路線可以
35
- 從`@agent-native/core/server`調用`resolveLocaleFromRequest()`並傳遞
36
- 將區域設定/目錄解析到該腳本中以避免水合不匹配。
34
+ `window.__AGENT_NATIVE_LOCALE__` 在 React 水合之前。公開SSR路由可以
35
+ 從`@agent-native/core/server`呼叫`resolveLocaleFromRequest()`並傳遞
36
+ 將區域設定/目錄解析到該指令碼中以避免水合不匹配。
37
37
 
38
38
  ## 目錄
39
39
 
@@ -66,7 +66,7 @@ export const i18nCatalog = {
66
66
 
67
67
  使用 `useT()` 作為介面字串,並將 `<LanguagePicker />` 放在應用程式的
68
68
  `/settings` 頁面。側邊欄應用程式應在應用程式側邊欄中公開**設定**;
69
- 標題語言圖標只是一個快捷方式。
69
+ 標題語言圖示只是一個快捷方式。
70
70
 
71
71
  ```tsx
72
72
  import {
@@ -92,30 +92,30 @@ function SettingsPage() {
92
92
  }
93
93
  ```
94
94
 
95
- “代理設定”控件應開啟右側代理側邊欄的“設定”分頁
96
- 用於模型、API 按鍵、自動化、語音和其他框架級控件。
95
+ “代理設定”控制項應開啟右側代理側邊欄的“設定”分頁
96
+ 用於模型、API 按鍵、自動化、語音和其他框架級控制項。
97
97
  應用可能會在自己的設定頁面中複製高價值的框架設定
98
98
  當設定是應用程式的核心,但側邊欄設定分頁仍然是
99
99
  事實來源。
100
100
 
101
- 使用 `useFormatters()` 表示日期、數字、相對時間和列表。不要放
101
+ 使用 `useFormatters()` 表示日期、數字、相對時間和清單。不要放
102
102
  翻譯字串中區域設定敏感的日期/數字格式。
103
103
 
104
104
  ## 檔案網站內容 {#docs-site-content}
105
105
 
106
- 公開檔案頁面使用相同的核心提供程序,但具有
106
+ 公開檔案頁面使用相同的核心提供者,但具有
107
107
  `persistPreference={false}` 因此匿名檔案流量使用 localStorage 和
108
108
  瀏覽器語言而不是 SQL 設定 actions。英文來源程式碼保留在
109
- `packages/core/docs/content/*.md`。本機化頁面覆蓋其旁邊的實時頁面
109
+ `packages/core/docs/content/*.md`。本機化頁面覆蓋其旁邊的即時頁面
110
110
  `packages/core/docs/content/locales/<locale>/<slug>.md`.
111
111
 
112
112
  使用與應用程式目錄相同的 BCP-47 區域設定程式碼。保留與
113
113
  英文來源,在翻譯的標題上使用 `{#anchor}` 保留穩定的錨點,
114
- 並留下路由、操作名稱、協議欄位、環境變數和提供程序名稱
114
+ 並留下路由、操作名稱、協議欄位、環境變數和提供者名稱
115
115
  未翻譯。如果某個語言環境沒有為頁面翻譯 Markdown,則檔案站點
116
116
  該頁面恢復為英語,同時仍本機化導覽和 Chrome。
117
117
 
118
- Docs Markdown 可能包含結構化的 `an-*` 可視塊。請在合理時翻譯其中面向使用者的文本欄位,例如 file-tree 標題和 `entries[].note`、callout 內文、tab 標籤以及 annotated-code 的 labels/notes。保持穩定標識符不變:檔案名、路徑、env vars、路由字串、action 名稱、language tags、程式碼片段、JSON keys 和協議名稱。
118
+ Docs Markdown 可能包含結構化的 `an-*` 可視塊。請在合理時翻譯其中面向使用者的文字欄位,例如 file-tree 標題和 `entries[].note`、callout 內文、tab 標籤以及 annotated-code 的 labels/notes。保持穩定識別碼不變:檔名、路徑、env vars、路由字串、action 名稱、language tags、程式碼片段、JSON keys 和協議名稱。
119
119
 
120
120
  ## Actions和堅持
121
121
 
@@ -126,7 +126,7 @@ Docs Markdown 可能包含結構化的 `an-*` 可視塊。請在合理時翻譯
126
126
 
127
127
  持久值存在於 `localization` 下的使用者範圍 SQL 設定中。
128
128
  `localStorage` 僅用於預水合和匿名回退。主動
129
- 區域設定作為環境上下文鏡像到應用程式狀態中,以便代理可以看到
129
+ 區域設定作為環境脈絡鏡像到應用程式狀態中,以便代理可以看到
130
130
  目前介面語言。
131
131
 
132
132
  ## 守衛
@@ -137,11 +137,11 @@ Docs Markdown 可能包含結構化的 `an-*` 可視塊。請在合理時翻譯
137
137
  pnpm guard:i18n-catalogs
138
138
  ```
139
139
 
140
- 守衛驗證支援的區域設定檔案名、金鑰對等、預留位置對等,
140
+ 守衛驗證支援的區域設定檔名、金鑰對等、預留位置對等,
141
141
  過時的金鑰,以及 CLDR 複數類別到 `Intl.PluralRules`。它檢查
142
142
  結構,而不是翻譯品質;高可見度字串仍然需要人類
143
143
  審查。
144
144
 
145
- 不要翻譯穩定的標識符,例如操作名稱、路由、枚舉值,
146
- 應用程式狀態鍵、資料庫值、協議欄位、環境變數名稱或提供程序
145
+ 不要翻譯穩定的識別碼,例如操作名稱、路由、枚舉值,
146
+ 應用程式狀態鍵、資料庫值、協議欄位、環境變數名稱或提供者
147
147
  名字。