@agent-native/core 0.79.2 → 0.79.6

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 (268) hide show
  1. package/corpus/README.md +2 -2
  2. package/corpus/core/CHANGELOG.md +30 -0
  3. package/corpus/core/docs/content/locales/zh-TW/a2a-protocol.md +392 -0
  4. package/corpus/core/docs/content/locales/zh-TW/actions.md +583 -0
  5. package/corpus/core/docs/content/locales/zh-TW/agent-mentions.md +164 -0
  6. package/corpus/core/docs/content/locales/zh-TW/agent-surfaces.md +397 -0
  7. package/corpus/core/docs/content/locales/zh-TW/agent-teams.md +171 -0
  8. package/corpus/core/docs/content/locales/zh-TW/agent-web-surfaces.md +161 -0
  9. package/corpus/core/docs/content/locales/zh-TW/audit-log.md +111 -0
  10. package/corpus/core/docs/content/locales/zh-TW/authentication.md +332 -0
  11. package/corpus/core/docs/content/locales/zh-TW/automations.md +268 -0
  12. package/corpus/core/docs/content/locales/zh-TW/blueprint-installer.md +83 -0
  13. package/corpus/core/docs/content/locales/zh-TW/cli-adapters.md +129 -0
  14. package/corpus/core/docs/content/locales/zh-TW/client.md +398 -0
  15. package/corpus/core/docs/content/locales/zh-TW/cloneable-saas.md +114 -0
  16. package/corpus/core/docs/content/locales/zh-TW/code-agents-ui.md +436 -0
  17. package/corpus/core/docs/content/locales/zh-TW/components.md +368 -0
  18. package/corpus/core/docs/content/locales/zh-TW/context-awareness.md +373 -0
  19. package/corpus/core/docs/content/locales/zh-TW/creating-templates.md +411 -0
  20. package/corpus/core/docs/content/locales/zh-TW/cross-app-sso.md +188 -0
  21. package/corpus/core/docs/content/locales/zh-TW/database.md +183 -0
  22. package/corpus/core/docs/content/locales/zh-TW/deployment.md +348 -0
  23. package/corpus/core/docs/content/locales/zh-TW/dispatch.md +146 -0
  24. package/corpus/core/docs/content/locales/zh-TW/drop-in-agent.md +260 -0
  25. package/corpus/core/docs/content/locales/zh-TW/durable-resume.md +65 -0
  26. package/corpus/core/docs/content/locales/zh-TW/embedding-sdk.md +597 -0
  27. package/corpus/core/docs/content/locales/zh-TW/evals.md +155 -0
  28. package/corpus/core/docs/content/locales/zh-TW/extensions.md +360 -0
  29. package/corpus/core/docs/content/locales/zh-TW/external-agents.md +619 -0
  30. package/corpus/core/docs/content/locales/zh-TW/faq.md +142 -0
  31. package/corpus/core/docs/content/locales/zh-TW/file-uploads.md +122 -0
  32. package/corpus/core/docs/content/locales/zh-TW/frames.md +153 -0
  33. package/corpus/core/docs/content/locales/zh-TW/getting-started.md +199 -0
  34. package/corpus/core/docs/content/locales/zh-TW/harness-agents.md +349 -0
  35. package/corpus/core/docs/content/locales/zh-TW/human-approval.md +86 -0
  36. package/corpus/core/docs/content/locales/zh-TW/internationalization.md +147 -0
  37. package/corpus/core/docs/content/locales/zh-TW/key-concepts.md +312 -0
  38. package/corpus/core/docs/content/locales/zh-TW/local-file-mode.md +433 -0
  39. package/corpus/core/docs/content/locales/zh-TW/mcp-apps.md +147 -0
  40. package/corpus/core/docs/content/locales/zh-TW/mcp-clients.md +330 -0
  41. package/corpus/core/docs/content/locales/zh-TW/mcp-protocol.md +279 -0
  42. package/corpus/core/docs/content/locales/zh-TW/messaging.md +461 -0
  43. package/corpus/core/docs/content/locales/zh-TW/migration-workbench.md +33 -0
  44. package/corpus/core/docs/content/locales/zh-TW/multi-app-workspace.md +312 -0
  45. package/corpus/core/docs/content/locales/zh-TW/multi-tenancy.md +52 -0
  46. package/corpus/core/docs/content/locales/zh-TW/native-chat-ui.md +321 -0
  47. package/corpus/core/docs/content/locales/zh-TW/notifications.md +231 -0
  48. package/corpus/core/docs/content/locales/zh-TW/observability.md +294 -0
  49. package/corpus/core/docs/content/locales/zh-TW/observational-memory.md +77 -0
  50. package/corpus/core/docs/content/locales/zh-TW/onboarding.md +216 -0
  51. package/corpus/core/docs/content/locales/zh-TW/plan-plugin.md +200 -0
  52. package/corpus/core/docs/content/locales/zh-TW/pr-visual-recap.md +384 -0
  53. package/corpus/core/docs/content/locales/zh-TW/processors.md +106 -0
  54. package/corpus/core/docs/content/locales/zh-TW/progress.md +199 -0
  55. package/corpus/core/docs/content/locales/zh-TW/pure-agent-apps.md +39 -0
  56. package/corpus/core/docs/content/locales/zh-TW/real-time-collaboration.md +680 -0
  57. package/corpus/core/docs/content/locales/zh-TW/recurring-jobs.md +142 -0
  58. package/corpus/core/docs/content/locales/zh-TW/routing.md +79 -0
  59. package/corpus/core/docs/content/locales/zh-TW/sandbox-adapters.md +227 -0
  60. package/corpus/core/docs/content/locales/zh-TW/security.md +330 -0
  61. package/corpus/core/docs/content/locales/zh-TW/server.md +265 -0
  62. package/corpus/core/docs/content/locales/zh-TW/sharing.md +219 -0
  63. package/corpus/core/docs/content/locales/zh-TW/skills-guide.md +281 -0
  64. package/corpus/core/docs/content/locales/zh-TW/template-analytics.md +259 -0
  65. package/corpus/core/docs/content/locales/zh-TW/template-assets.md +303 -0
  66. package/corpus/core/docs/content/locales/zh-TW/template-brain.md +324 -0
  67. package/corpus/core/docs/content/locales/zh-TW/template-calendar.md +194 -0
  68. package/corpus/core/docs/content/locales/zh-TW/template-chat.md +129 -0
  69. package/corpus/core/docs/content/locales/zh-TW/template-clips.md +368 -0
  70. package/corpus/core/docs/content/locales/zh-TW/template-content.md +402 -0
  71. package/corpus/core/docs/content/locales/zh-TW/template-design.md +173 -0
  72. package/corpus/core/docs/content/locales/zh-TW/template-dispatch.md +220 -0
  73. package/corpus/core/docs/content/locales/zh-TW/template-forms.md +178 -0
  74. package/corpus/core/docs/content/locales/zh-TW/template-mail.md +239 -0
  75. package/corpus/core/docs/content/locales/zh-TW/template-plan.md +814 -0
  76. package/corpus/core/docs/content/locales/zh-TW/template-slides.md +293 -0
  77. package/corpus/core/docs/content/locales/zh-TW/template-videos.md +222 -0
  78. package/corpus/core/docs/content/locales/zh-TW/tracking.md +236 -0
  79. package/corpus/core/docs/content/locales/zh-TW/using-your-agent.md +71 -0
  80. package/corpus/core/docs/content/locales/zh-TW/voice-input.md +81 -0
  81. package/corpus/core/docs/content/locales/zh-TW/what-is-agent-native.md +202 -0
  82. package/corpus/core/docs/content/locales/zh-TW/workspace-connections.md +321 -0
  83. package/corpus/core/docs/content/locales/zh-TW/workspace-management.md +175 -0
  84. package/corpus/core/docs/content/locales/zh-TW/workspace.md +323 -0
  85. package/corpus/core/docs/content/locales/zh-TW/writing-agent-instructions.md +173 -0
  86. package/corpus/core/package.json +2 -2
  87. package/corpus/core/scripts/check-dist-imports.mjs +35 -0
  88. package/corpus/core/src/client/ErrorBoundary.tsx +10 -0
  89. package/corpus/core/src/client/FeedbackButton.tsx +12 -0
  90. package/corpus/core/src/client/blocks/library/block-copy.ts +32 -0
  91. package/corpus/core/src/client/extensions/ExtensionsSidebarSection.tsx +33 -0
  92. package/corpus/core/src/client/i18n.tsx +6 -1
  93. package/corpus/core/src/localization/actions/set-localization-preference.ts +2 -1
  94. package/corpus/core/src/localization/default-messages.ts +492 -0
  95. package/corpus/core/src/localization/shared.ts +45 -0
  96. package/corpus/core/src/server/agent-chat-plugin.ts +38 -0
  97. package/corpus/core/src/server/onboarding-html.ts +99 -0
  98. package/corpus/core/src/templates/default/app/i18n/index.ts +2 -0
  99. package/corpus/core/src/templates/default/app/i18n/zh-TW.ts +466 -0
  100. package/corpus/core/src/templates/default/app/root.tsx +8 -0
  101. package/corpus/templates/analytics/app/i18n/index.ts +2 -0
  102. package/corpus/templates/analytics/app/i18n/zh-TW.ts +818 -0
  103. package/corpus/templates/analytics/app/i18n-data.ts +9 -0
  104. package/corpus/templates/assets/app/i18n/index.ts +2 -0
  105. package/corpus/templates/assets/app/i18n/zh-TW.ts +860 -0
  106. package/corpus/templates/assets/app/i18n-data.ts +3 -0
  107. package/corpus/templates/brain/app/i18n/index.ts +2 -0
  108. package/corpus/templates/brain/app/i18n/zh-TW.ts +709 -0
  109. package/corpus/templates/brain/app/i18n-data.ts +3 -0
  110. package/corpus/templates/calendar/app/i18n/zh-TW.ts +836 -0
  111. package/corpus/templates/calendar/app/i18n-data.ts +4 -0
  112. package/corpus/templates/chat/app/i18n/index.ts +2 -0
  113. package/corpus/templates/chat/app/i18n/zh-TW.ts +67 -0
  114. package/corpus/templates/chat/app/i18n-data.ts +3 -0
  115. package/corpus/templates/clips/app/i18n/index.ts +2 -0
  116. package/corpus/templates/clips/app/i18n/zh-TW.ts +1280 -0
  117. package/corpus/templates/content/app/i18n/index.ts +2 -0
  118. package/corpus/templates/content/app/i18n/zh-TW.ts +906 -0
  119. package/corpus/templates/content/app/i18n-data.ts +4 -0
  120. package/corpus/templates/design/app/i18n/index.ts +2 -0
  121. package/corpus/templates/design/app/i18n/zh-TW.ts +517 -0
  122. package/corpus/templates/design/app/i18n-data.ts +6 -0
  123. package/corpus/templates/dispatch/app/i18n/index.ts +2 -0
  124. package/corpus/templates/dispatch/app/i18n/zh-TW.ts +195 -0
  125. package/corpus/templates/dispatch/app/i18n-data.ts +3 -0
  126. package/corpus/templates/forms/app/i18n/index.ts +2 -0
  127. package/corpus/templates/forms/app/i18n/zh-TW.ts +349 -0
  128. package/corpus/templates/macros/app/i18n/index.ts +2 -0
  129. package/corpus/templates/macros/app/i18n/zh-TW.ts +224 -0
  130. package/corpus/templates/mail/app/i18n/index.ts +2 -0
  131. package/corpus/templates/mail/app/i18n/zh-TW.ts +562 -0
  132. package/corpus/templates/mail/app/root.tsx +6 -0
  133. package/corpus/templates/plan/app/i18n/index.ts +2 -0
  134. package/corpus/templates/plan/app/i18n/zh-TW.ts +712 -0
  135. package/corpus/templates/slides/app/i18n/index.ts +2 -0
  136. package/corpus/templates/slides/app/i18n/zh-TW.ts +531 -0
  137. package/corpus/templates/videos/app/i18n/index.ts +2 -0
  138. package/corpus/templates/videos/app/i18n/zh-TW.ts +435 -0
  139. package/dist/client/ErrorBoundary.d.ts.map +1 -1
  140. package/dist/client/ErrorBoundary.js +10 -0
  141. package/dist/client/ErrorBoundary.js.map +1 -1
  142. package/dist/client/FeedbackButton.d.ts.map +1 -1
  143. package/dist/client/FeedbackButton.js +12 -0
  144. package/dist/client/FeedbackButton.js.map +1 -1
  145. package/dist/client/blocks/library/block-copy.d.ts.map +1 -1
  146. package/dist/client/blocks/library/block-copy.js +32 -0
  147. package/dist/client/blocks/library/block-copy.js.map +1 -1
  148. package/dist/client/extensions/ExtensionsSidebarSection.d.ts.map +1 -1
  149. package/dist/client/extensions/ExtensionsSidebarSection.js +32 -0
  150. package/dist/client/extensions/ExtensionsSidebarSection.js.map +1 -1
  151. package/dist/client/i18n.d.ts.map +1 -1
  152. package/dist/client/i18n.js +6 -1
  153. package/dist/client/i18n.js.map +1 -1
  154. package/dist/collab/routes.d.ts +2 -2
  155. package/dist/file-upload/actions/upload-image.d.ts +2 -2
  156. package/dist/localization/actions/set-localization-preference.d.ts.map +1 -1
  157. package/dist/localization/actions/set-localization-preference.js +2 -2
  158. package/dist/localization/actions/set-localization-preference.js.map +1 -1
  159. package/dist/localization/default-messages.d.ts +443 -0
  160. package/dist/localization/default-messages.d.ts.map +1 -0
  161. package/dist/localization/default-messages.js +448 -0
  162. package/dist/localization/default-messages.js.map +1 -0
  163. package/dist/localization/shared.d.ts +1 -1
  164. package/dist/localization/shared.d.ts.map +1 -1
  165. package/dist/localization/shared.js +43 -0
  166. package/dist/localization/shared.js.map +1 -1
  167. package/dist/notifications/routes.d.ts +2 -2
  168. package/dist/observability/routes.d.ts +7 -7
  169. package/dist/progress/routes.d.ts +1 -1
  170. package/dist/resources/handlers.d.ts +3 -3
  171. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  172. package/dist/server/agent-chat-plugin.js +39 -0
  173. package/dist/server/agent-chat-plugin.js.map +1 -1
  174. package/dist/server/agent-engine-api-key-route.d.ts +1 -1
  175. package/dist/server/onboarding-html.d.ts.map +1 -1
  176. package/dist/server/onboarding-html.js +96 -0
  177. package/dist/server/onboarding-html.js.map +1 -1
  178. package/dist/server/transcribe-voice.d.ts +1 -1
  179. package/dist/templates/default/app/i18n/index.ts +2 -0
  180. package/dist/templates/default/app/i18n/zh-TW.ts +466 -0
  181. package/dist/templates/default/app/root.tsx +8 -0
  182. package/docs/content/locales/zh-TW/a2a-protocol.md +392 -0
  183. package/docs/content/locales/zh-TW/actions.md +583 -0
  184. package/docs/content/locales/zh-TW/agent-mentions.md +164 -0
  185. package/docs/content/locales/zh-TW/agent-surfaces.md +397 -0
  186. package/docs/content/locales/zh-TW/agent-teams.md +171 -0
  187. package/docs/content/locales/zh-TW/agent-web-surfaces.md +161 -0
  188. package/docs/content/locales/zh-TW/audit-log.md +111 -0
  189. package/docs/content/locales/zh-TW/authentication.md +332 -0
  190. package/docs/content/locales/zh-TW/automations.md +268 -0
  191. package/docs/content/locales/zh-TW/blueprint-installer.md +83 -0
  192. package/docs/content/locales/zh-TW/cli-adapters.md +129 -0
  193. package/docs/content/locales/zh-TW/client.md +398 -0
  194. package/docs/content/locales/zh-TW/cloneable-saas.md +114 -0
  195. package/docs/content/locales/zh-TW/code-agents-ui.md +436 -0
  196. package/docs/content/locales/zh-TW/components.md +368 -0
  197. package/docs/content/locales/zh-TW/context-awareness.md +373 -0
  198. package/docs/content/locales/zh-TW/creating-templates.md +411 -0
  199. package/docs/content/locales/zh-TW/cross-app-sso.md +188 -0
  200. package/docs/content/locales/zh-TW/database.md +183 -0
  201. package/docs/content/locales/zh-TW/deployment.md +348 -0
  202. package/docs/content/locales/zh-TW/dispatch.md +146 -0
  203. package/docs/content/locales/zh-TW/drop-in-agent.md +260 -0
  204. package/docs/content/locales/zh-TW/durable-resume.md +65 -0
  205. package/docs/content/locales/zh-TW/embedding-sdk.md +597 -0
  206. package/docs/content/locales/zh-TW/evals.md +155 -0
  207. package/docs/content/locales/zh-TW/extensions.md +360 -0
  208. package/docs/content/locales/zh-TW/external-agents.md +619 -0
  209. package/docs/content/locales/zh-TW/faq.md +142 -0
  210. package/docs/content/locales/zh-TW/file-uploads.md +122 -0
  211. package/docs/content/locales/zh-TW/frames.md +153 -0
  212. package/docs/content/locales/zh-TW/getting-started.md +199 -0
  213. package/docs/content/locales/zh-TW/harness-agents.md +349 -0
  214. package/docs/content/locales/zh-TW/human-approval.md +86 -0
  215. package/docs/content/locales/zh-TW/internationalization.md +147 -0
  216. package/docs/content/locales/zh-TW/key-concepts.md +312 -0
  217. package/docs/content/locales/zh-TW/local-file-mode.md +433 -0
  218. package/docs/content/locales/zh-TW/mcp-apps.md +147 -0
  219. package/docs/content/locales/zh-TW/mcp-clients.md +330 -0
  220. package/docs/content/locales/zh-TW/mcp-protocol.md +279 -0
  221. package/docs/content/locales/zh-TW/messaging.md +461 -0
  222. package/docs/content/locales/zh-TW/migration-workbench.md +33 -0
  223. package/docs/content/locales/zh-TW/multi-app-workspace.md +312 -0
  224. package/docs/content/locales/zh-TW/multi-tenancy.md +52 -0
  225. package/docs/content/locales/zh-TW/native-chat-ui.md +321 -0
  226. package/docs/content/locales/zh-TW/notifications.md +231 -0
  227. package/docs/content/locales/zh-TW/observability.md +294 -0
  228. package/docs/content/locales/zh-TW/observational-memory.md +77 -0
  229. package/docs/content/locales/zh-TW/onboarding.md +216 -0
  230. package/docs/content/locales/zh-TW/plan-plugin.md +200 -0
  231. package/docs/content/locales/zh-TW/pr-visual-recap.md +384 -0
  232. package/docs/content/locales/zh-TW/processors.md +106 -0
  233. package/docs/content/locales/zh-TW/progress.md +199 -0
  234. package/docs/content/locales/zh-TW/pure-agent-apps.md +39 -0
  235. package/docs/content/locales/zh-TW/real-time-collaboration.md +680 -0
  236. package/docs/content/locales/zh-TW/recurring-jobs.md +142 -0
  237. package/docs/content/locales/zh-TW/routing.md +79 -0
  238. package/docs/content/locales/zh-TW/sandbox-adapters.md +227 -0
  239. package/docs/content/locales/zh-TW/security.md +330 -0
  240. package/docs/content/locales/zh-TW/server.md +265 -0
  241. package/docs/content/locales/zh-TW/sharing.md +219 -0
  242. package/docs/content/locales/zh-TW/skills-guide.md +281 -0
  243. package/docs/content/locales/zh-TW/template-analytics.md +259 -0
  244. package/docs/content/locales/zh-TW/template-assets.md +303 -0
  245. package/docs/content/locales/zh-TW/template-brain.md +324 -0
  246. package/docs/content/locales/zh-TW/template-calendar.md +194 -0
  247. package/docs/content/locales/zh-TW/template-chat.md +129 -0
  248. package/docs/content/locales/zh-TW/template-clips.md +368 -0
  249. package/docs/content/locales/zh-TW/template-content.md +402 -0
  250. package/docs/content/locales/zh-TW/template-design.md +173 -0
  251. package/docs/content/locales/zh-TW/template-dispatch.md +220 -0
  252. package/docs/content/locales/zh-TW/template-forms.md +178 -0
  253. package/docs/content/locales/zh-TW/template-mail.md +239 -0
  254. package/docs/content/locales/zh-TW/template-plan.md +814 -0
  255. package/docs/content/locales/zh-TW/template-slides.md +293 -0
  256. package/docs/content/locales/zh-TW/template-videos.md +222 -0
  257. package/docs/content/locales/zh-TW/tracking.md +236 -0
  258. package/docs/content/locales/zh-TW/using-your-agent.md +71 -0
  259. package/docs/content/locales/zh-TW/voice-input.md +81 -0
  260. package/docs/content/locales/zh-TW/what-is-agent-native.md +202 -0
  261. package/docs/content/locales/zh-TW/workspace-connections.md +321 -0
  262. package/docs/content/locales/zh-TW/workspace-management.md +175 -0
  263. package/docs/content/locales/zh-TW/workspace.md +323 -0
  264. package/docs/content/locales/zh-TW/writing-agent-instructions.md +173 -0
  265. package/package.json +2 -2
  266. package/src/templates/default/app/i18n/index.ts +2 -0
  267. package/src/templates/default/app/i18n/zh-TW.ts +466 -0
  268. package/src/templates/default/app/root.tsx +8 -0
@@ -0,0 +1,106 @@
1
+ ---
2
+ title: "環內處理器"
3
+ description: "循環內部觀察者/護欄掛鉤,用於監視模型的流輸出和工具在執行中調用並可以中止它 - 實時護欄和完成證明門的接縫。"
4
+ ---
5
+
6
+ # 循環處理器
7
+
8
+ `Processor` 是代理執行的循環內部**觀察者/護欄**。它監視模型的流式輸出,工具在執行過程中調用它的請求,保持其自己的臨時狀態,並且可以在聲明“完成”之前**中止**執行。這是實時護欄(阻止中流不允許的輸出)和完成證明/覆蓋門(檢查模型將要做什么並停止它)的結構先決條件。
9
+
10
+ ```an-diagram title="三個鉤子在奔跑中開火的地方" summary="processOutputStream 監視每個塊,processOutputStep 控制每個回應的工具調用,processOutputResult 在最後紀錄判決。任何鉤子都可以通過 TripWire 中止。"
11
+ {
12
+ "html": "<div class=\"diagram-proc\"><div class=\"diagram-node\" data-rough>stream chunks<br><small class=\"diagram-muted\">processOutputStream</small></div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">&rarr;</div><div class=\"diagram-node\" data-rough>per model response<br><small class=\"diagram-muted\">processOutputStep — 攔截工具調用</small></div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">&rarr;</div><div class=\"diagram-node\" data-rough>run end<br><small class=\"diagram-muted\">processOutputResult — 判定</small></div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">&darr;</div><div class=\"diagram-pill warn\">abort() &rarr; TripWire &rarr; tripwire event</div></div>",
13
+ "css": ".diagram-proc{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.diagram-proc .diagram-arrow{font-size:22px;line-height:1}.diagram-proc .diagram-pill{flex-basis:100%}"
14
+ }
15
+ ```
16
+
17
+ > [!WARNING]
18
+ > 處理器是**設定**,不是工具,不是操作,也不是創作 DSL。處理器僅觀察、改變它們自己的流範圍狀態和 `abort()`。它們從不定義應用程式行為、替換 actions 或出現在模型中。應用程式操作屬於[actions](/docs/actions)。
19
+
20
+ ## 掛鉤 {#hooks}
21
+
22
+ 處理器實現三個可選生命週期掛鉤的任何子集(形狀借用自 Mastra 的輸出處理器):
23
+
24
+ | 鉤子 | 著火了…… | 用它來…… |
25
+ | --------------------- | ------------------------------------- | -------------------------------------- |
26
+ | `processOutputStream` | 模型生成時的每個流塊(文本/思維增量) | 在整輪落地之前對輸出做出反應 |
27
+ | `processOutputStep` | 每個模型回應一次,圍繞工具執行 | 檢查模型即將執行的工具調用;給他們設門 |
28
+ | `processOutputResult` | 在執行結束時,帶有最終的輔助文本 | 紀錄對已完成答案的判決/完成證明 |
29
+
30
+ 每個處理器都有自己的可變的、執行範圍的 `state` 物件,該物件在單次執行中的每個鉤子調用中持續存在,並且與其他處理器的狀態**隔離**。
31
+
32
+ ```ts
33
+ import type { Processor } from "@agent-native/core";
34
+
35
+ const noSecretsInOutput: Processor = {
36
+ name: "no-secrets",
37
+ processOutputStream({ part, abort }) {
38
+ if (part.type === "text" && /sk-live_/.test(part.text)) {
39
+ abort("Model attempted to emit a live secret token.", {
40
+ kind: "secret-leak",
41
+ });
42
+ }
43
+ },
44
+ };
45
+
46
+ const coverageGate: Processor = {
47
+ name: "proof-of-done",
48
+ processOutputStep({ toolCalls, state }) {
49
+ // Track what the model has actually done this run...
50
+ for (const call of toolCalls) {
51
+ (state.ran ??= new Set<string>()).add(call.name);
52
+ }
53
+ },
54
+ processOutputResult({ text, state }) {
55
+ // ...and record a verdict over the final answer.
56
+ const ran = state.ran as Set<string> | undefined;
57
+ state.verdict = ran?.has("run-tests") ? "verified" : "unverified";
58
+ },
59
+ };
60
+ ```
61
+
62
+ ## 使用 `TripWire` 中止 {#tripwire}
63
+
64
+ 掛鉤通過調用 `abort(reason, meta?)` 來停止執行,這會拋出 **`TripWire`**。循環捕獲它,發出單個 **`tripwire` 事件**,幹淨地停止,並將原因顯示為最終的輔助訊息。
65
+
66
+ ```ts
67
+ import { TripWire } from "@agent-native/core";
68
+ ```
69
+
70
+ `tripwire` 事件攜帶:
71
+
72
+ | 欄位 | 型別 | 注釋 |
73
+ | ----------- | -------- | ---------------------------------- |
74
+ | `reason` | `string` | 人類可讀的原因傳遞給 `abort`。 |
75
+ | `processor` | `string` | 聲明 `name` 時中止的處理器的名稱。 |
76
+
77
+ `TripWire` 還帶有可選的結構化 `meta` 和原始 `processor` 名稱,供 `instanceof` 檢查的程序化消費者使用。由於暫停是正常的,`processOutputResult` 仍然會在(暫停的)最終文本上觸發,因此即使執行被中止,完成證明處理器也可以紀錄其結論。
78
+
79
+ ## 連線處理器 {#wiring}
80
+
81
+ 處理器通過 `runAgentLoop` 上的 `processors` 陣列在程式碼中進行設定:
82
+
83
+ ```ts
84
+ await runAgentLoop({
85
+ engine,
86
+ model,
87
+ systemPrompt,
88
+ tools,
89
+ messages,
90
+ actions,
91
+ send,
92
+ signal,
93
+ processors: [noSecretsInOutput, coverageGate],
94
+ });
95
+ ```
96
+
97
+ **未使用時零開銷。**僅當提供至少一個處理器時,循環才會建置處理器鏈;當 `processors` 被省略或為空時,沒有任何接縫程式碼執行,並且循環逐字節不變。掛鉤按註冊順序執行,可以是同步的,也可以是非同步的。
98
+
99
+ > [!NOTE]
100
+ > 循環級接縫是今天的可交付成果,可由子代理、A2A、MCP 和測試直接調用。通過 HTTP 聊天處理程序線程化 `processors`(因此每個請求解析器可以在不直接調用 `runAgentLoop` 的情況下設定它們)是尚未連線的便利管道 - 現在在 `runAgentLoop` 調用站點設定處理器。
101
+
102
+ ## 相關
103
+
104
+ - [**Durable Resume**](/docs/durable-resume) — 循環如何在中斷中幸存下來而不重新執行已完成的副作用。
105
+ - [**Custom Agents & Teams**](/docs/agent-teams) - 子代理執行相同的循環並可以攜帶自己的處理器。
106
+ - [**Observability**](/docs/observability) — 紀錄處理器判決以及執行跟蹤。
@@ -0,0 +1,199 @@
1
+ ---
2
+ title: "進度"
3
+ description: "長時間執行的代理工作的實時進度信號 - 啟動、更新、完成"
4
+ ---
5
+
6
+ # 進度
7
+
8
+ 長時間的代理工作不應隱藏在旋轉器後面。 `progress_runs` 為代理提供了一種方式來宣布 _“我正在處理此問題,已完成 45%,這是目前步驟”_ — UI 將其呈現為帶有百分比欄的浮動執行托盤。
9
+
10
+ ```ts
11
+ import {
12
+ startRun,
13
+ updateRunProgress,
14
+ completeRun,
15
+ } from "@agent-native/core/progress";
16
+
17
+ const run = await startRun({
18
+ owner: "steve@builder.io",
19
+ title: "Triage 128 unread emails",
20
+ step: "Fetching inbox",
21
+ });
22
+
23
+ for (let i = 1; i <= total; i++) {
24
+ await updateRunProgress(run.id, run.owner, {
25
+ percent: Math.round((i / total) * 100),
26
+ step: `Classifying ${i}/${total}`,
27
+ });
28
+ }
29
+
30
+ await completeRun(run.id, run.owner, "succeeded");
31
+ ```
32
+
33
+ 與 [notifications](/docs/notifications) 不同的關注點:通知觸發一次(_“X 發生了”_),進度是連續狀態(_“X 已完成 45%”_)。這兩個組合 - `completeRun` 後跟 `notify(..., severity: "info")` 告訴使用者工作何時完成,即使他們沒有看托盤。
34
+
35
+ ## 生命週期 {#lifecycle}
36
+
37
+ | 狀態 | 過渡 |
38
+ | ----------- | ------------------------- |
39
+ | `running` | 初始 — 由 `startRun` 設定 |
40
+ | `succeeded` | 快樂路徑終端 |
41
+ | `failed` | 錯誤終端 |
42
+ | `cancelled` | 使用者中斷 |
43
+
44
+ ```an-diagram title="執行生命週期" summary="startRun 開啟一個執行行; updateRunProgress 修補它; completeRun 將其移至一種終端狀態並標記 completed_at。"
45
+ {
46
+ "html": "<div class=\"diagram-run\"><div class=\"diagram-box\" data-rough>startRun()</div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">&rarr;</div><div class=\"diagram-panel running\" data-rough><span class=\"diagram-pill accent\">running</span><small class=\"diagram-muted\">updateRunProgress() &#8635; percent + step</small></div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">&rarr;</div><div class=\"diagram-col terminal\"><span class=\"diagram-pill ok\">succeeded</span><span class=\"diagram-pill warn\">failed</span><span class=\"diagram-pill\">cancelled</span><small class=\"diagram-muted\">completeRun() &rarr; sets completed_at</small></div></div>",
47
+ "css": ".diagram-run{display:flex;align-items:center;gap:14px;flex-wrap:wrap}.diagram-run .diagram-panel{display:flex;flex-direction:column;gap:6px;padding:12px 16px}.diagram-run .terminal{display:flex;flex-direction:column;gap:6px;align-items:flex-start}.diagram-run .diagram-arrow{font-size:22px;line-height:1}"
48
+ }
49
+ ```
50
+
51
+ 終端狀態設定為 `completed_at`。 UI 托盤僅顯示 `running` 行;完成的行保留在資料庫中以供 `action=list` 查詢。
52
+
53
+ ## API {#api}
54
+
55
+ ### `startRun(input)` {#start}
56
+
57
+ 建立一個執行。返回帶有生成 ID 的完整 `AgentRun`。
58
+
59
+ ```ts
60
+ const run = await startRun({
61
+ owner: "steve@builder.io",
62
+ title: "Ingest 1M rows",
63
+ step: "Opening CSV",
64
+ metadata: { jobId: "abc123", artifactPath: "s3://..." },
65
+ });
66
+ ```
67
+
68
+ 在事件總線上發出 `run.progress.started`。
69
+
70
+ ### `updateRunProgress(id, owner, input)` {#update}
71
+
72
+ 修補正在執行的任何欄位。任何省略的欄位保持不變。
73
+
74
+ ```ts
75
+ await updateRunProgress(run.id, run.owner, {
76
+ percent: 75,
77
+ step: "Writing to target DB",
78
+ });
79
+ ```
80
+
81
+ 在事件總線上發出 `run.progress.updated`。返回更新的 `AgentRun`,如果執行不存在或不屬於調用者,則返回 `null`。
82
+
83
+ ### `completeRun(id, owner, status, extras?)` {#complete}
84
+
85
+ 轉換到終端狀態。 `succeeded` 隱式設定 `percent=100`。
86
+
87
+ ```ts
88
+ await completeRun(run.id, run.owner, "succeeded", {
89
+ step: "All 1M rows ingested",
90
+ metadata: { totalDurationMs: 98_123 },
91
+ });
92
+ ```
93
+
94
+ 還發出帶有終端狀態的 `run.progress.updated`。
95
+
96
+ ### 列表 {#list}
97
+
98
+ ```ts
99
+ import { listRuns, getRun, deleteRun } from "@agent-native/core/progress";
100
+
101
+ const active = await listRuns("steve@builder.io", { activeOnly: true });
102
+ const run = await getRun("run-id", "steve@builder.io");
103
+ await deleteRun("run-id", "steve@builder.io");
104
+ ```
105
+
106
+ ## HTTP API {#http}
107
+
108
+ 通過 core-routes 外掛安裝在 `/_agent-native/runs/*`。 **在 HTTP 上唯讀** — 寫入通過代理工具進行,因為代理是規範寫入者。所有路由都是所有者範圍內的。
109
+
110
+ | 方法 | 路徑 |
111
+ | -------- | --------------------------------- |
112
+ | `GET` | `/_agent-native/runs?active=true` |
113
+ | `GET` | `/_agent-native/runs/:id` |
114
+ | `DELETE` | `/_agent-native/runs/:id` |
115
+
116
+ ```an-api title="列出活動執行" method="GET" path="/_agent-native/runs"
117
+ {
118
+ "method": "GET",
119
+ "path": "/_agent-native/runs",
120
+ "summary": "List the caller's runs. The RunsTray polls this with active=true.",
121
+ "description": "Read-only and owner-scoped — every row has an `owner` column and every query filters on it, so callers only ever see their own runs. Writes (start/update/complete) go through the agent's `manage-progress` tool, not HTTP.",
122
+ "auth": "Session cookie (owner-scoped)",
123
+ "params": [
124
+ { "name": "active", "in": "query", "type": "boolean", "required": false, "description": "When true, returns only `running` rows." }
125
+ ],
126
+ "responses": [
127
+ { "status": "200", "description": "Array of AgentRun rows owned by the caller." }
128
+ ]
129
+ }
130
+ ```
131
+
132
+ ## UI元件 {#ui}
133
+
134
+ ```tsx
135
+ import { RunsTray } from "@agent-native/core/client/progress";
136
+
137
+ export function HeaderBar() {
138
+ return (
139
+ <header className="flex items-center gap-2">
140
+ {/* … */}
141
+ <RunsTray />
142
+ </header>
143
+ );
144
+ }
145
+ ```
146
+
147
+ 內聯標題小部件 - 將其安裝在通知鈴旁邊。當跑步處於活動狀態時,顯示旋轉圖標 + 計數徽章;點選將開啟一個下拉選單,每次執行都會顯示一個實時百分比欄。當沒有活動執行時完全隱藏觸發器。每 `pollMs` 輪詢一次 `/_agent-native/runs?active=true`(預設 3 秒)。使用shadcn語義標記,適應淺色和深色主題。
148
+
149
+ ## 代理工具 {#agent-tool}
150
+
151
+ 每個範本中都會註冊一個 `manage-progress` 工具。 `action`參數選取操作:
152
+
153
+ | 行動 | 目的 |
154
+ | ---------- | ------------------------------------------------ |
155
+ | `start` | 在長工作的頂部調用。返回一個 runId。 |
156
+ | `update` | 在工作期間定期調用 `percent` 和/或 `step`。 |
157
+ | `complete` | 終端 — `succeeded`、`failed`、`cancelled` 之一。 |
158
+ | `list` | 檢查最近的執行(按 `active=true` 過濾)。 |
159
+
160
+ ### 何時開始跑步 {#when-to-start}
161
+
162
+ - 用於任何>~5秒的事情。沒有上下文的旋轉器感覺凍結。
163
+ - 在自然檢查點更新,而不是每次迭代。每 5-10% 就足夠了。
164
+ - **始終**使用 `action=complete` 調用 `manage-progress`,包括在錯誤路徑中。孤立的 `running` 行比沒有行更糟糕。
165
+ - 完成後與 `notify` 配對,以便使用者在沒有主動觀看托盤時也能看到結果。
166
+
167
+ ## 事件總線 {#event-bus}
168
+
169
+ [event bus](/docs/automations#event-bus) 上發出兩個事件:
170
+
171
+ | 活動 | 有效負載 |
172
+ | ---------------------- | ---------------------------------- |
173
+ | `run.progress.started` | `{ runId, title, step? }` |
174
+ | `run.progress.updated` | `{ runId, percent, step, status }` |
175
+
176
+ [Automations](/docs/automations) 可以訂閱這些內容 - 例如,_“如果跑步時間超過 5 分鐘,請通知我”_:
177
+
178
+ ```yaml
179
+ ---
180
+ triggerType: event
181
+ event: run.progress.updated
182
+ condition: "status is failed"
183
+ mode: agentic
184
+ ---
185
+ 通知 me that run {{runId}} has failed.
186
+ ```
187
+
188
+ ## 它是如何工作的 {#internals}
189
+
190
+ - **所有者範圍** — 每行都有一個 `owner` 列;每個查詢都會對其進行過濾。使用者只能看到自己的跑步。
191
+ - **輪詢整合** - 每個突變都會調用 `recordChange()`,因此使用 [`useDbSync`](/docs/client) 的範本會自動失效,無需任何額外的接線。
192
+ - **表名稱** — 該框架還有一個 `agent_runs` 表,用於內部代理聊天回合生命週期跟蹤。進度原語使用 `progress_runs` 將兩個關注點分開。
193
+ - **百分比限制** — 值被限制為 `[0, 100]` 並在寫入時四舍五入為整數。
194
+
195
+ ## 下一步是什么
196
+
197
+ - [**Notifications**](/docs/notifications) — 與 `manage-progress` (`action=complete`) 配對,告訴使用者工作何時完成
198
+ - [**Automations**](/docs/automations) — 看門狗通過 `run.progress.updated` 緩慢執行
199
+ - [**Client**](/docs/client) — `useDbSync` 用於實時快取失效
@@ -0,0 +1,39 @@
1
+ ---
2
+ title: "純代理應用"
3
+ description: "代理是整個產品的應用程式:應用程式代理循環是前門,僅在人們需要時才新增 UI。"
4
+ ---
5
+
6
+ # 純代理應用
7
+
8
+ 純代理應用程式是代理本機的最小端:應用程式代理循環是
9
+ 產品,而不是儀表板。您從終端、Slack、電子郵件、
10
+ 預定的工作、另一個代理或聊天 - “總結我未讀的電子郵件”、“發布
11
+ 每日指標為 Slack” - 代理會在任何地方執行操作並返回結果
12
+ 屬於。它仍然是一個真實的應用程式:actions、工作階段、應用程式狀態、歷史紀錄,
13
+ 設定、憑證和共用紀錄均位於 SQL 中。
14
+
15
+ ```an-diagram title="應用程式代理循環是前門" summary="許多入口點通過 SQL-backed 操作和狀態到達一個代理循環;結果返回到請求來自的地方。僅當需要人類監督時才新增 UI。"
16
+ {
17
+ "html": "<div class=\"diagram-pure\"><div class=\"diagram-col\"><div class=\"diagram-pill\">Terminal</div><div class=\"diagram-pill\">Slack · 郵件</div><div class=\"diagram-pill\">定時工作</div><div class=\"diagram-pill\">Another agent (A2A)</div><div class=\"diagram-pill\">Chat</div></div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">&rarr;</div><div class=\"diagram-panel center\" data-rough><span class=\"diagram-pill accent\">應用代理循環</span><small class=\"diagram-muted\">操作 · 工作階段 · SQL 中的應用狀態</small></div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">&rarr;</div><div class=\"diagram-box\" data-rough>結果返回<br><small class=\"diagram-muted\">to where it belongs</small></div></div>",
18
+ "css": ".diagram-pure{display:flex;align-items:center;gap:14px;flex-wrap:wrap}.diagram-pure .diagram-col{display:flex;flex-direction:column;gap:8px}.diagram-pure .diagram-arrow{font-size:22px;line-height:1}.diagram-pure .center{display:flex;flex-direction:column;align-items:center;gap:4px}"
19
+ }
20
+ ```
21
+
22
+ 當工作在後台執行時,達到此形狀,輸出離開
23
+ 應用程式,域是一次性的,或者您正在制作原型。代理仍然需要 UI —
24
+ 不是儀表板,而是人類監督、設定和引導它的地方 -
25
+ 這就是為什么即使是純代理應用程式通常也會安裝內置的 Chat shell。
26
+
27
+ 這是**無頭**產品形狀。完整的決策指南,包含哪些內容
28
+ 盒子、腳手架、儲存庫存取和執行共用現在位於一個地方:
29
+
30
+ → [**Agent Surfaces — Headless agent**](/docs/agent-surfaces#headless)
31
+
32
+ ## 下一步是什么
33
+
34
+ - [**Agent Surfaces — Headless**](/docs/agent-surfaces#headless) — 完整的無頭決策指南和 API
35
+ - [**Getting Started**](/docs/getting-started) - 首先建立聊天應用程式或無頭代理
36
+ - [**Dispatch**](/docs/template-dispatch) — 工作區範本是一個很好的純代理起點
37
+ - [**Messaging the agent**](/docs/messaging) — 使用者如何通過網路、Slack、電報、電子郵件與代理交談
38
+ - [**Recurring Jobs**](/docs/recurring-jobs) — 代理自行執行的預定提示
39
+ - [**Actions**](/docs/actions) - 您的純代理將調用的工具