@agent-native/core 0.84.34 → 0.84.36

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 (230) hide show
  1. package/README.md +15 -51
  2. package/corpus/README.md +1 -1
  3. package/corpus/core/CHANGELOG.md +20 -0
  4. package/corpus/core/docs/content/actions.mdx +17 -24
  5. package/corpus/core/docs/content/agent-surfaces.mdx +59 -56
  6. package/corpus/core/docs/content/cloneable-saas.mdx +3 -3
  7. package/corpus/core/docs/content/faq.mdx +4 -4
  8. package/corpus/core/docs/content/getting-started.mdx +246 -204
  9. package/corpus/core/docs/content/key-concepts.mdx +9 -9
  10. package/corpus/core/docs/content/locales/ar-SA/cloneable-saas.mdx +3 -3
  11. package/corpus/core/docs/content/locales/ar-SA/faq.mdx +4 -4
  12. package/corpus/core/docs/content/locales/ar-SA/getting-started.mdx +148 -214
  13. package/corpus/core/docs/content/locales/ar-SA/pure-agent-apps.mdx +4 -9
  14. package/corpus/core/docs/content/locales/ar-SA/template-chat.mdx +2 -2
  15. package/corpus/core/docs/content/locales/ar-SA/using-your-agent.mdx +2 -2
  16. package/corpus/core/docs/content/locales/de-DE/cloneable-saas.mdx +3 -3
  17. package/corpus/core/docs/content/locales/de-DE/faq.mdx +4 -4
  18. package/corpus/core/docs/content/locales/de-DE/getting-started.mdx +145 -211
  19. package/corpus/core/docs/content/locales/de-DE/pure-agent-apps.mdx +4 -9
  20. package/corpus/core/docs/content/locales/de-DE/template-chat.mdx +2 -2
  21. package/corpus/core/docs/content/locales/de-DE/using-your-agent.mdx +2 -2
  22. package/corpus/core/docs/content/locales/es-ES/cloneable-saas.mdx +3 -3
  23. package/corpus/core/docs/content/locales/es-ES/faq.mdx +4 -4
  24. package/corpus/core/docs/content/locales/es-ES/getting-started.mdx +148 -214
  25. package/corpus/core/docs/content/locales/es-ES/pure-agent-apps.mdx +4 -9
  26. package/corpus/core/docs/content/locales/es-ES/template-chat.mdx +2 -2
  27. package/corpus/core/docs/content/locales/es-ES/using-your-agent.mdx +2 -2
  28. package/corpus/core/docs/content/locales/fr-FR/cloneable-saas.mdx +2 -2
  29. package/corpus/core/docs/content/locales/fr-FR/faq.mdx +4 -4
  30. package/corpus/core/docs/content/locales/fr-FR/getting-started.mdx +146 -212
  31. package/corpus/core/docs/content/locales/fr-FR/pure-agent-apps.mdx +4 -9
  32. package/corpus/core/docs/content/locales/fr-FR/template-chat.mdx +2 -2
  33. package/corpus/core/docs/content/locales/fr-FR/using-your-agent.mdx +2 -2
  34. package/corpus/core/docs/content/locales/hi-IN/cloneable-saas.mdx +3 -3
  35. package/corpus/core/docs/content/locales/hi-IN/faq.mdx +4 -4
  36. package/corpus/core/docs/content/locales/hi-IN/getting-started.mdx +149 -215
  37. package/corpus/core/docs/content/locales/hi-IN/pure-agent-apps.mdx +8 -13
  38. package/corpus/core/docs/content/locales/hi-IN/template-chat.mdx +2 -2
  39. package/corpus/core/docs/content/locales/hi-IN/using-your-agent.mdx +2 -2
  40. package/corpus/core/docs/content/locales/ja-JP/cloneable-saas.mdx +2 -2
  41. package/corpus/core/docs/content/locales/ja-JP/faq.mdx +4 -4
  42. package/corpus/core/docs/content/locales/ja-JP/getting-started.mdx +144 -210
  43. package/corpus/core/docs/content/locales/ja-JP/pure-agent-apps.mdx +8 -13
  44. package/corpus/core/docs/content/locales/ja-JP/template-chat.mdx +2 -2
  45. package/corpus/core/docs/content/locales/ja-JP/using-your-agent.mdx +2 -2
  46. package/corpus/core/docs/content/locales/ko-KR/cloneable-saas.mdx +3 -3
  47. package/corpus/core/docs/content/locales/ko-KR/faq.mdx +4 -4
  48. package/corpus/core/docs/content/locales/ko-KR/getting-started.mdx +146 -212
  49. package/corpus/core/docs/content/locales/ko-KR/pure-agent-apps.mdx +8 -13
  50. package/corpus/core/docs/content/locales/ko-KR/template-chat.mdx +2 -2
  51. package/corpus/core/docs/content/locales/ko-KR/using-your-agent.mdx +2 -2
  52. package/corpus/core/docs/content/locales/pt-BR/cloneable-saas.mdx +3 -3
  53. package/corpus/core/docs/content/locales/pt-BR/faq.mdx +4 -4
  54. package/corpus/core/docs/content/locales/pt-BR/getting-started.mdx +145 -211
  55. package/corpus/core/docs/content/locales/pt-BR/pure-agent-apps.mdx +4 -9
  56. package/corpus/core/docs/content/locales/pt-BR/template-chat.mdx +2 -2
  57. package/corpus/core/docs/content/locales/pt-BR/using-your-agent.mdx +2 -2
  58. package/corpus/core/docs/content/locales/zh-CN/cloneable-saas.mdx +3 -3
  59. package/corpus/core/docs/content/locales/zh-CN/faq.mdx +4 -4
  60. package/corpus/core/docs/content/locales/zh-CN/getting-started.mdx +158 -209
  61. package/corpus/core/docs/content/locales/zh-CN/pure-agent-apps.mdx +4 -9
  62. package/corpus/core/docs/content/locales/zh-CN/template-chat.mdx +2 -2
  63. package/corpus/core/docs/content/locales/zh-CN/using-your-agent.mdx +2 -2
  64. package/corpus/core/docs/content/locales/zh-TW/cloneable-saas.mdx +3 -3
  65. package/corpus/core/docs/content/locales/zh-TW/faq.mdx +4 -4
  66. package/corpus/core/docs/content/locales/zh-TW/getting-started.mdx +158 -212
  67. package/corpus/core/docs/content/locales/zh-TW/pure-agent-apps.mdx +4 -9
  68. package/corpus/core/docs/content/locales/zh-TW/template-chat.mdx +2 -2
  69. package/corpus/core/docs/content/locales/zh-TW/using-your-agent.mdx +2 -2
  70. package/corpus/core/docs/content/native-chat-ui.mdx +17 -32
  71. package/corpus/core/docs/content/pure-agent-apps.mdx +46 -26
  72. package/corpus/core/docs/content/template-chat.mdx +8 -8
  73. package/corpus/core/docs/content/using-your-agent.mdx +2 -2
  74. package/corpus/core/docs/content/what-is-agent-native.mdx +6 -6
  75. package/corpus/core/package.json +1 -1
  76. package/corpus/core/src/a2a/response-text.ts +10 -1
  77. package/corpus/core/src/agent/production-agent.ts +23 -20
  78. package/corpus/core/src/agent/run-manager.ts +46 -1
  79. package/corpus/core/src/agent/thread-data-builder.ts +15 -2
  80. package/corpus/core/src/cli/skills.ts +7 -9
  81. package/corpus/core/src/client/MultiTabAssistantChat.tsx +2 -0
  82. package/corpus/core/src/client/RunStuckBanner.tsx +172 -18
  83. package/corpus/core/src/client/blocks/library/wireframe-kit.tsx +57 -9
  84. package/corpus/core/src/client/blocks/library/wireframe.tsx +3 -18
  85. package/corpus/core/src/client/chat/widgets/builtin-tool-renderers.tsx +28 -32
  86. package/corpus/core/src/client/code-agent-chat-adapter.ts +8 -1
  87. package/corpus/core/src/client/sse-event-processor.ts +21 -3
  88. package/corpus/core/src/code-agents/transcript-normalizer.ts +31 -0
  89. package/corpus/core/src/db/schema.ts +5 -0
  90. package/corpus/core/src/server/agent-chat-plugin.ts +8 -2
  91. package/corpus/core/src/server/agent-teams.ts +24 -2
  92. package/corpus/core/src/styles/blocks.css +27 -6
  93. package/corpus/templates/analytics/app/components/layout/Sidebar.tsx +1 -4
  94. package/corpus/templates/analytics/changelog/2026-07-01-smoother-chat-streaming.md +6 -0
  95. package/corpus/templates/content/actions/list-trashed-content-databases.ts +1 -1
  96. package/corpus/templates/plan/.agents/skills/visual-plan/references/wireframe.md +7 -9
  97. package/corpus/templates/plan/.agents/skills/visual-recap/references/wireframe.md +7 -9
  98. package/dist/a2a/response-text.d.ts +1 -0
  99. package/dist/a2a/response-text.d.ts.map +1 -1
  100. package/dist/a2a/response-text.js +8 -2
  101. package/dist/a2a/response-text.js.map +1 -1
  102. package/dist/agent/production-agent.d.ts.map +1 -1
  103. package/dist/agent/production-agent.js +31 -27
  104. package/dist/agent/production-agent.js.map +1 -1
  105. package/dist/agent/run-manager.d.ts +12 -0
  106. package/dist/agent/run-manager.d.ts.map +1 -1
  107. package/dist/agent/run-manager.js +32 -1
  108. package/dist/agent/run-manager.js.map +1 -1
  109. package/dist/agent/thread-data-builder.d.ts.map +1 -1
  110. package/dist/agent/thread-data-builder.js +15 -2
  111. package/dist/agent/thread-data-builder.js.map +1 -1
  112. package/dist/cli/skills.d.ts +1 -1
  113. package/dist/cli/skills.d.ts.map +1 -1
  114. package/dist/cli/skills.js +7 -9
  115. package/dist/cli/skills.js.map +1 -1
  116. package/dist/client/MultiTabAssistantChat.d.ts.map +1 -1
  117. package/dist/client/MultiTabAssistantChat.js +1 -1
  118. package/dist/client/MultiTabAssistantChat.js.map +1 -1
  119. package/dist/client/RunStuckBanner.d.ts +13 -1
  120. package/dist/client/RunStuckBanner.d.ts.map +1 -1
  121. package/dist/client/RunStuckBanner.js +123 -16
  122. package/dist/client/RunStuckBanner.js.map +1 -1
  123. package/dist/client/blocks/library/wireframe-kit.d.ts +6 -6
  124. package/dist/client/blocks/library/wireframe-kit.d.ts.map +1 -1
  125. package/dist/client/blocks/library/wireframe-kit.js +52 -5
  126. package/dist/client/blocks/library/wireframe-kit.js.map +1 -1
  127. package/dist/client/blocks/library/wireframe.d.ts.map +1 -1
  128. package/dist/client/blocks/library/wireframe.js +1 -11
  129. package/dist/client/blocks/library/wireframe.js.map +1 -1
  130. package/dist/client/chat/widgets/builtin-tool-renderers.d.ts.map +1 -1
  131. package/dist/client/chat/widgets/builtin-tool-renderers.js +27 -31
  132. package/dist/client/chat/widgets/builtin-tool-renderers.js.map +1 -1
  133. package/dist/client/code-agent-chat-adapter.d.ts.map +1 -1
  134. package/dist/client/code-agent-chat-adapter.js +5 -1
  135. package/dist/client/code-agent-chat-adapter.js.map +1 -1
  136. package/dist/client/sse-event-processor.d.ts.map +1 -1
  137. package/dist/client/sse-event-processor.js +21 -3
  138. package/dist/client/sse-event-processor.js.map +1 -1
  139. package/dist/code-agents/transcript-normalizer.d.ts.map +1 -1
  140. package/dist/code-agents/transcript-normalizer.js +24 -0
  141. package/dist/code-agents/transcript-normalizer.js.map +1 -1
  142. package/dist/collab/awareness.d.ts +2 -2
  143. package/dist/collab/awareness.d.ts.map +1 -1
  144. package/dist/collab/routes.d.ts +2 -2
  145. package/dist/db/schema.d.ts +2 -1
  146. package/dist/db/schema.d.ts.map +1 -1
  147. package/dist/db/schema.js +3 -2
  148. package/dist/db/schema.js.map +1 -1
  149. package/dist/notifications/routes.d.ts +3 -3
  150. package/dist/resources/handlers.d.ts +3 -3
  151. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  152. package/dist/server/agent-chat-plugin.js +2 -3
  153. package/dist/server/agent-chat-plugin.js.map +1 -1
  154. package/dist/server/agent-teams.d.ts.map +1 -1
  155. package/dist/server/agent-teams.js +17 -2
  156. package/dist/server/agent-teams.js.map +1 -1
  157. package/dist/server/transcribe-voice.d.ts +1 -1
  158. package/dist/styles/blocks.css +27 -6
  159. package/docs/content/actions.mdx +17 -24
  160. package/docs/content/agent-surfaces.mdx +59 -56
  161. package/docs/content/cloneable-saas.mdx +3 -3
  162. package/docs/content/faq.mdx +4 -4
  163. package/docs/content/getting-started.mdx +246 -204
  164. package/docs/content/key-concepts.mdx +9 -9
  165. package/docs/content/locales/ar-SA/cloneable-saas.mdx +3 -3
  166. package/docs/content/locales/ar-SA/faq.mdx +4 -4
  167. package/docs/content/locales/ar-SA/getting-started.mdx +148 -214
  168. package/docs/content/locales/ar-SA/pure-agent-apps.mdx +4 -9
  169. package/docs/content/locales/ar-SA/template-chat.mdx +2 -2
  170. package/docs/content/locales/ar-SA/using-your-agent.mdx +2 -2
  171. package/docs/content/locales/de-DE/cloneable-saas.mdx +3 -3
  172. package/docs/content/locales/de-DE/faq.mdx +4 -4
  173. package/docs/content/locales/de-DE/getting-started.mdx +145 -211
  174. package/docs/content/locales/de-DE/pure-agent-apps.mdx +4 -9
  175. package/docs/content/locales/de-DE/template-chat.mdx +2 -2
  176. package/docs/content/locales/de-DE/using-your-agent.mdx +2 -2
  177. package/docs/content/locales/es-ES/cloneable-saas.mdx +3 -3
  178. package/docs/content/locales/es-ES/faq.mdx +4 -4
  179. package/docs/content/locales/es-ES/getting-started.mdx +148 -214
  180. package/docs/content/locales/es-ES/pure-agent-apps.mdx +4 -9
  181. package/docs/content/locales/es-ES/template-chat.mdx +2 -2
  182. package/docs/content/locales/es-ES/using-your-agent.mdx +2 -2
  183. package/docs/content/locales/fr-FR/cloneable-saas.mdx +2 -2
  184. package/docs/content/locales/fr-FR/faq.mdx +4 -4
  185. package/docs/content/locales/fr-FR/getting-started.mdx +146 -212
  186. package/docs/content/locales/fr-FR/pure-agent-apps.mdx +4 -9
  187. package/docs/content/locales/fr-FR/template-chat.mdx +2 -2
  188. package/docs/content/locales/fr-FR/using-your-agent.mdx +2 -2
  189. package/docs/content/locales/hi-IN/cloneable-saas.mdx +3 -3
  190. package/docs/content/locales/hi-IN/faq.mdx +4 -4
  191. package/docs/content/locales/hi-IN/getting-started.mdx +149 -215
  192. package/docs/content/locales/hi-IN/pure-agent-apps.mdx +8 -13
  193. package/docs/content/locales/hi-IN/template-chat.mdx +2 -2
  194. package/docs/content/locales/hi-IN/using-your-agent.mdx +2 -2
  195. package/docs/content/locales/ja-JP/cloneable-saas.mdx +2 -2
  196. package/docs/content/locales/ja-JP/faq.mdx +4 -4
  197. package/docs/content/locales/ja-JP/getting-started.mdx +144 -210
  198. package/docs/content/locales/ja-JP/pure-agent-apps.mdx +8 -13
  199. package/docs/content/locales/ja-JP/template-chat.mdx +2 -2
  200. package/docs/content/locales/ja-JP/using-your-agent.mdx +2 -2
  201. package/docs/content/locales/ko-KR/cloneable-saas.mdx +3 -3
  202. package/docs/content/locales/ko-KR/faq.mdx +4 -4
  203. package/docs/content/locales/ko-KR/getting-started.mdx +146 -212
  204. package/docs/content/locales/ko-KR/pure-agent-apps.mdx +8 -13
  205. package/docs/content/locales/ko-KR/template-chat.mdx +2 -2
  206. package/docs/content/locales/ko-KR/using-your-agent.mdx +2 -2
  207. package/docs/content/locales/pt-BR/cloneable-saas.mdx +3 -3
  208. package/docs/content/locales/pt-BR/faq.mdx +4 -4
  209. package/docs/content/locales/pt-BR/getting-started.mdx +145 -211
  210. package/docs/content/locales/pt-BR/pure-agent-apps.mdx +4 -9
  211. package/docs/content/locales/pt-BR/template-chat.mdx +2 -2
  212. package/docs/content/locales/pt-BR/using-your-agent.mdx +2 -2
  213. package/docs/content/locales/zh-CN/cloneable-saas.mdx +3 -3
  214. package/docs/content/locales/zh-CN/faq.mdx +4 -4
  215. package/docs/content/locales/zh-CN/getting-started.mdx +158 -209
  216. package/docs/content/locales/zh-CN/pure-agent-apps.mdx +4 -9
  217. package/docs/content/locales/zh-CN/template-chat.mdx +2 -2
  218. package/docs/content/locales/zh-CN/using-your-agent.mdx +2 -2
  219. package/docs/content/locales/zh-TW/cloneable-saas.mdx +3 -3
  220. package/docs/content/locales/zh-TW/faq.mdx +4 -4
  221. package/docs/content/locales/zh-TW/getting-started.mdx +158 -212
  222. package/docs/content/locales/zh-TW/pure-agent-apps.mdx +4 -9
  223. package/docs/content/locales/zh-TW/template-chat.mdx +2 -2
  224. package/docs/content/locales/zh-TW/using-your-agent.mdx +2 -2
  225. package/docs/content/native-chat-ui.mdx +17 -32
  226. package/docs/content/pure-agent-apps.mdx +46 -26
  227. package/docs/content/template-chat.mdx +8 -8
  228. package/docs/content/using-your-agent.mdx +2 -2
  229. package/docs/content/what-is-agent-native.mdx +6 -6
  230. package/package.json +1 -1
@@ -1,259 +1,193 @@
1
1
  ---
2
2
  title: "Primeiros passos"
3
- description: "Crie um aplicativo de agente, entenda as instruções skills e actions e observe o agente chamar sua primeira ação."
3
+ description: "Crie uma app agentic começando pelo chat, adicione uma action, renderize resultados estruturados inline e evolua para uma página persistente que o agent pode abrir."
4
4
  ---
5
5
 
6
6
  # Primeiros passos
7
7
 
8
- Os aplicativos Agent-Native fornecem a um agente de IA e ao seu UI os mesmos actions, dados e
9
- estado. Um agente básico é feito de instruções que o orientam, skills que ensinam
10
- comportamento repetível e actions que permite que ele faça um trabalho real.
11
-
12
- **Quer um aplicativo completo para começar?** Clone um de nossos modelos avançados —
13
- [Chat](/docs/template-chat), [Mail](/docs/template-mail),
14
- [Calendar](/docs/template-calendar), [Content](/docs/template-content),
15
- [Analytics](/docs/template-analytics) e [many more](/docs/cloneable-saas) —
16
- cada um deles é um aplicativo completo que você personaliza.
17
-
18
- Construir do zero? A única escolha inicial é se você deseja um UI —
19
- tudo depois (escrever instruções, adicionar skills, definir actions, executar
20
- o agente) é o mesmo de qualquer maneira.
21
-
22
- <FileTree
23
- id="doc-block-z4fwh6"
24
- title={"Um agente Agent-Native básico"}
25
- entries={[
26
- {
27
- path: "AGENTS.md",
28
- note: "Instruções sempre ativas: propósito, regras, tom e mapa do que o agente pode fazer",
29
- },
30
- {
31
- path: ".agents/skills/customer-research/SKILL.md",
32
- note: "Um playbook reutilizável que o agente carrega quando a tarefa combina",
33
- },
34
- {
35
- path: "actions/summarize-week.ts",
36
- note: "Código tipado que o agente, UI, CLI, HTTP, MCP, A2A, jobs e webhooks podem executar",
37
- },
38
- ]}
39
- />
40
-
41
- Isso é verdade quer você comece com um bate-papo UI, um agente sem cabeça ou um aplicativo completo.
42
- O UI muda a superfície; instruções, skills e actions dão ao agente seu
43
- orientação e comportamento.
44
-
45
- ## 1. Crie seu aplicativo
46
-
47
- Você precisará de [Node.js 22+](https://nodejs.org) e [pnpm](https://pnpm.io).
48
-
49
- Execute `create` sem sinalizadores e ele perguntará como você deseja iniciar (um modelo completo,
50
- Chat ou Headless) antes de mais nada:
8
+ Agent-Native é para criar agentic applications: o AI agent e a UI compartilham as mesmas [actions](/docs/actions), dados SQL e application state. O caminho principal começa pelo Chat para que usuários possam falar com o agent imediatamente, e depois adiciona as superfícies de app que o fluxo merece.
51
9
 
52
- ```bash
53
- npx @agent-native/core@latest create my-app
54
- ```
10
+ O fluxo útil:
55
11
 
56
- Ou passe um sinalizador para ignorar o prompt:
12
+ 1. Criar uma Chat app.
13
+ 2. Adicionar uma action.
14
+ 3. Renderizar o resultado da action inline no chat.
15
+ 4. Persistir dados em SQL.
16
+ 5. Adicionar uma página que o agent pode abrir quando a inspeção visual fizer mais sentido.
57
17
 
58
- **Quer um UI?** Comece pelo modelo de bate-papo. Você recebe um agente ativo mais um
59
- bate-papo personalizável UI, e cada ação que você adiciona aparece nele automaticamente:
18
+ ## 1. Crie uma Chat app {#create-your-app}
19
+
20
+ Você precisa de [Node.js 22+](https://nodejs.org) e [pnpm](https://pnpm.io).
60
21
 
61
22
  ```bash
62
23
  npx @agent-native/core@latest create my-app --template chat
24
+ cd my-app
25
+ pnpm install
26
+ pnpm dev
63
27
  ```
64
28
 
65
- **Apenas o primitivo sem cabeça?** Comece sem cabeça o mesmo actions e agente
66
- loop, sem shell UI:
67
-
68
- ```bash
69
- npx @agent-native/core@latest create my-agent --headless
29
+ O template inclui durable chat threads, auth, live sync, diretório `actions/`, actions padrão `view-screen` e `navigate`, e uma app React pronta para estender.
30
+
31
+ ## 2. Adicione uma action {#add-an-action}
32
+
33
+ Uma action é uma operação tipada que o agent e a UI chamam juntos. Para este fluxo, crie `actions/analyze-responses.ts`: ela analisa respostas de formulários e retorna um formato validado para um gráfico de chat customizado.
34
+
35
+ {/* prettier-ignore */}
36
+ ```ts
37
+ // actions/analyze-responses.ts
38
+ import { defineAction } from "@agent-native/core/action";
39
+ import { z } from "zod";
40
+
41
+ const responseChartResultSchema = z.object({
42
+ title: z.string(),
43
+ points: z.array(z.object({ day: z.string(), responses: z.number() })),
44
+ });
45
+
46
+ export default defineAction({
47
+ description: "Analyze recent form responses and render a custom chart.",
48
+ schema: z.object({
49
+ formId: z.string().default("demo")
50
+ }),
51
+ outputSchema: responseChartResultSchema,
52
+ chatUI: {
53
+ renderer: "responses.response-chart",
54
+ title: "Gráfico de respostas"
55
+ },
56
+ readOnly: true,
57
+ run: async ({ formId }) => ({
58
+ title: `Responses for ${formId}`,
59
+ points: [{ day: "Mon", responses: 12 }, { day: "Tue", responses: 18 }, { day: "Wed", responses: 24 }, { day: "Thu", responses: 21 }],
60
+ }),
61
+ });
70
62
  ```
71
63
 
72
- Em seguida, instale a partir da pasta que você criou:
64
+ Execute diretamente:
73
65
 
74
66
  ```bash
75
- cd my-agent # ou my-app se você escolheu o modelo Chat
76
- pnpm install
67
+ pnpm action analyze-responses --formId demo
77
68
  ```
78
69
 
79
- De agora em diante, os dois são idênticos.
80
-
81
- ## 2. Adicione uma ação
82
-
83
- Uma ação é uma operação que seu agente — e seu UI — podem chamar. Ambos os andaimes
84
- envie com este exemplo:
85
-
86
- <AnnotatedCode
87
- id="doc-block-r8sat6"
88
- title="Sua primeira action"
89
- filename="actions/hello.ts"
90
- language="ts"
91
- code={
92
- 'import { defineAction } from "@agent-native/core/action";\nimport { z } from "zod";\n\nexport default defineAction({\n description: "Diga olá a partir do agente local.",\n schema: z.object({\n name: z.string().default("world"),\n }),\n http: { method: "GET" },\n readOnly: true,\n run: async ({ name }) => {\n return { message: `Hello, ${name}!` };\n },\n});'
93
- }
94
- annotations={[
95
- {
96
- lines: "5",
97
- label: "Descrição da ferramenta",
98
- note: "O agente lê `description` para decidir quando chamar isto como ferramenta.",
99
- },
100
- {
101
- lines: "6-8",
102
- label: "Contrato tipado",
103
- note: "Um `schema` zod valida entradas de todas as superfícies: agente, UI, HTTP, MCP e A2A.",
104
- },
105
- {
106
- lines: "9",
107
- label: "Verbo HTTP",
108
- note: "Exponha esta ação em um endpoint HTTP montado automaticamente.",
109
- },
110
- {
111
- lines: "10",
112
- label: "Somente leitura",
113
- note: "`readOnly` marca a ação como segura para chamar sem aprovação e cacheável para consultas.",
114
- },
115
- {
116
- lines: "11-13",
117
- label: "Uma implementação",
118
- note: "O corpo de `run` é a única fonte da verdade que todas as superfícies executam.",
119
- },
120
- ]}
121
- />
122
-
123
- Substitua `hello` pela primeira operação real em seu domínio. Você define uma vez;
124
- todas as superfícies captam isso.
125
-
126
- Use `AGENTS.md` para orientação que deve ser aplicada a cada turno. Use uma habilidade quando o
127
- o agente precisa de um fluxo de trabalho ou procedimento de domínio reutilizável. Use uma ação quando o
128
- o agente precisa de uma maneira digitada e testável para ler dados, gravar dados, chamar um API ou
129
- realizar uma aprovação.
130
-
131
- ## 3. Execute-o
132
-
133
- Chame a ação diretamente:
70
+ Ou peça ao agent no navegador:
134
71
 
135
- ```bash
136
- pnpm action hello --name Steve
137
- ```
72
+ > Analise as respostas recentes do formulário de demonstração.
138
73
 
139
- Ou peça ao agente para ligar para você:
74
+ ## 3. Renderize o resultado no chat {#render-inline}
140
75
 
141
- ```bash
142
- pnpm agent "Call the hello action for Steve and explain what happened."
143
- ```
76
+ Como a action declara `outputSchema` e uma `chatUI.renderer` específica do produto, o transcript não transforma dados estruturados em texto corrido. Registre um componente React para esse id exato no startup da app, por exemplo importando `app/chat-renderers.tsx` uma vez a partir de `app/root.tsx`:
144
77
 
145
- Se você começou a partir do modelo Chat, execute o aplicativo e use o mesmo agente no
146
- navegador — ele já pode chamar todas as ações que você definir:
78
+ {/* prettier-ignore */}
79
+ ```tsx
80
+ import { registerActionChatRenderer, type ToolRendererProps,} from "@agent-native/core/client/chat";
81
+
82
+ type ResponseChartResult = {
83
+ title: string;
84
+ points: Array<{ day: string; responses: number }>;
85
+ };
86
+
87
+ function ResponseChart({ context }: ToolRendererProps) {
88
+ const result = context.resultJson as ResponseChartResult;
89
+ const max = Math.max(...result.points.map((point) => point.responses), 1);
90
+ return (
91
+ <section className="rounded-lg border bg-card p-4">
92
+ <h3 className="text-sm font-medium">{result.title}</h3>
93
+ <div className="mt-4 flex h-32 items-end gap-2">
94
+ {result.points.map((point) => (
95
+ <div key={point.day} className="flex flex-1 flex-col items-center gap-2">
96
+ <div className="w-full rounded-t bg-primary" style={{ height: `${(point.responses / max) * 100}%` }} />
97
+ <span className="text-xs text-muted-foreground">{point.day}</span>
98
+ </div>
99
+ ))}
100
+ </div>
101
+ </section>
102
+ );
103
+ }
147
104
 
148
- ```bash
149
- pnpm dev
105
+ registerActionChatRenderer({
106
+ id: "responses.response-chart",
107
+ renderer: "responses.response-chart",
108
+ Component: ResponseChart,
109
+ });
150
110
  ```
151
111
 
152
- Essa ação agora pode ser acessada no chat UI, CLI, HTTP, MCP, A2A,
153
- trabalhos agendados e webhooks. Defina uma vez, ligue de qualquer lugar.
154
-
155
- <Diagram id="doc-block-12nw2be" title={"Uma ação, cada superfície"} summary={"Um único arquivo defineAction é distribuído para todos os consumidores sem fiação extra."}>
156
-
157
- ```html
158
- <div class="diagram-fan">
159
- <div class="diagram-box" data-rough>defineAction</div>
160
- <div class="diagram-arrow diagram-muted" aria-hidden="true">&rarr;</div>
161
- <div class="diagram-surfaces">
162
- <span class="diagram-pill">Interface de chat</span
163
- ><span class="diagram-pill">CLI</span><span class="diagram-pill">HTTP</span
164
- ><span class="diagram-pill">MCP</span><span class="diagram-pill">A2A</span
165
- ><span class="diagram-pill">Jobs agendados</span
166
- ><span class="diagram-pill">Webhooks</span>
167
- </div>
168
- </div>
169
- ```
112
+ Para saídas genéricas reutilizáveis, o framework também oferece renderers integrados `data-chart` e `data-table`, além de `data-insights` para cards combinados de resumo/gráfico/tabela. Veja [Native Chat UI](/docs/native-chat-ui).
170
113
 
171
- ```css
172
- .diagram-fan {
173
- display: flex;
174
- align-items: center;
175
- gap: 14px;
176
- flex-wrap: wrap;
177
- }
178
- .diagram-fan .diagram-surfaces {
179
- display: flex;
180
- flex-wrap: wrap;
181
- gap: 8px;
182
- max-width: 420px;
183
- }
184
- .diagram-fan .diagram-arrow {
185
- font-size: 22px;
186
- line-height: 1;
187
- }
188
- ```
114
+ <WireframeBlock id="doc-block-inline-result-wireframe-pt">
115
+ <Screen
116
+ surface="desktop"
117
+ html={
118
+ "<div style='min-height:340px;box-sizing:border-box;padding:24px;display:flex;justify-content:center;align-items:center;background:var(--wf-bg)'><div style='width:min(530px,100%);display:flex;flex-direction:column;gap:14px'><div class='wf-card' data-rough style='align-self:flex-end;max-width:70%;padding:12px 14px'><strong>User</strong><p style='margin:6px 0 0'>Analise respostas de demo.</p></div><div class='wf-card' data-rough style='align-self:flex-start;width:min(370px,100%);padding:14px'><strong>Agent</strong><p class='wf-muted' style='margin:6px 0 12px'>Renderizado com responses.response-chart.</p><section class='wf-card' data-rough style='padding:14px'><h3 style='margin:0 0 12px;font-size:14px'>Gráfico de respostas</h3><div data-rough='line:bottom' style='height:104px;display:flex;align-items:end;gap:8px;border-bottom:1.4px solid var(--wf-line);padding-bottom:4px'><div style='flex:1;display:flex;flex-direction:column;align-items:center;gap:6px'><div data-rough style='height:38px;width:100%;background:color-mix(in srgb, var(--wf-accent) 24%, transparent);border:1.4px solid var(--wf-accent);border-radius:8px 8px 3px 3px'></div><span class='wf-muted'>Seg</span></div><div style='flex:1;display:flex;flex-direction:column;align-items:center;gap:6px'><div data-rough style='height:62px;width:100%;background:color-mix(in srgb, var(--wf-accent) 30%, transparent);border:1.4px solid var(--wf-accent);border-radius:8px 8px 3px 3px'></div><span class='wf-muted'>Ter</span></div><div style='flex:1;display:flex;flex-direction:column;align-items:center;gap:6px'><div data-rough style='height:86px;width:100%;background:color-mix(in srgb, var(--wf-accent) 36%, transparent);border:1.4px solid var(--wf-accent);border-radius:8px 8px 3px 3px'></div><span class='wf-muted'>Qua</span></div><div style='flex:1;display:flex;flex-direction:column;align-items:center;gap:6px'><div data-rough style='height:54px;width:100%;background:color-mix(in srgb, var(--wf-accent) 42%, transparent);border:1.4px solid var(--wf-accent);border-radius:8px 8px 3px 3px'></div><span class='wf-muted'>Qui</span></div></div></section></div></div></div>"
119
+ }
120
+ />
121
+ </WireframeBlock>
189
122
 
190
- </Diagram>
123
+ ## 4. Persista dados em SQL {#persist-data}
191
124
 
192
- ## O estado está integrado
125
+ Quando o resultado precisa ser revisitado, comparado ou atualizado, salve em SQL e mantenha leitura/escrita atrás de actions:
193
126
 
194
- Sem cabeça não significa sem estado. Actions, sessões, estado do aplicativo, threads,
195
- histórico de execução e credenciais residem em SQL. Localmente é SQLite em
196
- `data/app.db`; na produção você define `DATABASE_URL`. Veja
197
- [Deployment](/docs/deployment).
127
+ Defina a tabela com os helpers portáveis do framework, não com imports de `drizzle-orm/sqlite-core` ou `drizzle-orm/pg-core`:
198
128
 
199
- <Callout id="doc-block-bg3mt6" tone="info">
129
+ ```ts
130
+ // server/db/schema.ts
131
+ import { integer, now, table, text } from "@agent-native/core/db/schema";
200
132
 
201
- **Headless ainda é um aplicativo real.** O loop do agente de aplicativo persiste sessões, threads, execuções, configurações e credenciais em SQL — não é um prompt sem estado. Você pode adicionar um UI posteriormente sem alterar suas ações ou estado.
133
+ export const responseInsights = table("response_insights", {
134
+ id: text("id").primaryKey(),
135
+ formId: text("form_id").notNull(),
136
+ title: text("title").notNull(),
137
+ summary: text("summary").notNull(),
138
+ responseCount: integer("response_count").notNull(),
139
+ createdAt: text("created_at").notNull().default(now()),
140
+ updatedAt: text("updated_at").notNull().default(now()),
141
+ });
142
+ ```
202
143
 
203
- </Callout>
144
+ Esses helpers escolhem o backend SQL configurado, então o mesmo schema pode rodar com SQLite local e em produção com Postgres, Turso/libSQL, D1 ou outro provider SQL suportado.
204
145
 
205
- ## Personalizar o UI
146
+ - `create-response-insight` escreve um novo insight.
147
+ - `list-response-insights` lê dados para a página.
148
+ - `update-response-insight` atualiza um registro.
149
+ - `analyze-responses` continua retornando o widget nativo do chat.
206
150
 
207
- Se você começou a partir do modelo Chat, o UI é seu para editar. O bate-papo em si
208
- é uma pequena rota construída no componente `<AgentChatSurface>`:
151
+ Não crie uma REST route duplicada para o navegador; UI e agent devem compartilhar actions.
209
152
 
210
- ```tsx
211
- // app/routes/_index.tsx
212
- import { AgentChatSurface } from "@agent-native/core/client";
153
+ ## 5. Adicione uma página que o agent pode abrir {#add-a-page}
213
154
 
214
- export default function ChatRoute() {
215
- return <AgentChatSurface mode="page" className="h-full" />;
216
- }
217
- ```
155
+ Adicione a route `/response-insights` com `useActionQuery("list-response-insights")` e `useActionMutation("create-response-insight")`. A página é uma projeção do SQL state; os dados continuam sendo escritos pelas mesmas actions.
218
156
 
219
- - **`app/routes/_index.tsx`** — a página de bate-papo. Altere as sugestões, vazio
220
- estado e layout.
221
- - **`app/root.tsx`** — o shell do aplicativo. Adicione suas próprias rotas e telas ao redor
222
- agente.
223
- - Coloque o agente em qualquer tela com `<AgentSidebar>`, trabalhe manualmente nele a partir de um
224
- botão com `sendToAgentChat()` ou execute uma ação diretamente com
225
- `useActionMutation()`.
157
+ <WireframeBlock id="doc-block-response-insights-page-wireframe-pt">
158
+ <Screen
159
+ surface="desktop"
160
+ html={
161
+ "<main style='min-height:440px;box-sizing:border-box;padding:28px;background:var(--wf-bg)'><section style='max-width:960px;margin:0 auto;display:grid;grid-template-columns:minmax(0,1fr) 260px;gap:16px;align-items:stretch'><section class='wf-card' data-rough style='display:flex;flex-direction:column;gap:16px'><header><h2 style='margin:0 0 4px;font-size:28px'>Insights de respostas</h2><p class='wf-muted' style='margin:0'>Insights que o agente criou a partir das respostas do formulário.</p></header><button class='primary' data-rough style='align-self:flex-start'>Analisar formulário demo</button><section style='display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px'><article class='wf-box' data-rough style='padding:12px'><strong>Tema de preços</strong><p class='wf-muted' style='margin:8px 0 0'>Usuários pedem um plano de equipe.</p></article><article class='wf-box' data-rough style='padding:12px'><strong>Queda no onboarding</strong><p class='wf-muted' style='margin:8px 0 0'>Três etapas precisam de texto mais claro.</p></article></section><section class='wf-card' data-rough style='display:flex;flex-direction:column;gap:10px'><div class='wf-row wf-box' data-rough style='padding:10px 12px;gap:12px;justify-content:space-between'><strong>Formulário de demonstração</strong><span class='wf-muted'>42 respostas analisadas</span></div><div class='wf-row wf-box' data-rough style='padding:10px 12px;gap:12px;justify-content:space-between'><strong>Próximo passo</strong><span class='wf-muted'>Revisar dois rascunhos de insights</span></div></section></section><aside class='wf-card' data-rough style='height:100%;box-sizing:border-box;display:flex;flex-direction:column;gap:12px'><strong>Chat</strong><div class='wf-box' data-rough style='align-self:flex-end;max-width:210px;padding:10px 12px'><span class='wf-muted'>Você</span><p style='margin:4px 0 0'>Abra insights de respostas.</p></div><div class='wf-box' data-rough style='align-self:flex-start;max-width:210px;padding:10px 12px'><span class='wf-muted'>Agent</span><p style='margin:4px 0 0'>Insights de respostas abertos.</p></div></aside></section></main>"
162
+ }
163
+ />
164
+ </WireframeBlock>
226
165
 
227
- Veja [Drop-in Agent](/docs/drop-in-agent) para o conjunto completo de componentes e
228
- [Native Interface de chat](/docs/native-chat-ui) para renderizar resultados de ações como tabelas,
229
- gráficos e cartões digitados em vez de texto simples.
166
+ Estenda `view-screen` e `navigate` para que o agent saiba a route atual e possa abrir `/response-insights`. Resultados também podem incluir `href: "/response-insights"` para mostrar um botão "Abrir insights de respostas".
230
167
 
231
- **Começou sem cabeça e quer um UI mais tarde?** O modelo de bate-papo _é_ a rampa de acesso do UI —
232
- sua camada `app/` (Roteador React + Vite) é exatamente o que o andaime sem cabeça
233
- deixa de fora. A atitude mais limpa é iniciar (ou reformular) a partir do bate-papo
234
- modelo; seu estado `actions/`, agente e SQL permanecem inalterados. Veja
235
- [Agent Surfaces](/docs/agent-surfaces) para cada superfície intermediária.
168
+ Quando o chat em página inteira abrir uma página da app, use `AgentChatSurface`, `AgentSidebar`, `useAgentChatHomeHandoff`, `useAgentChatHomeHandoffLinks` e `chatViewTransition` de [Agent Surfaces](/docs/agent-surfaces#rich-chat) para mover o chat para a lateral sem perder o thread.
236
169
 
237
- ## Estrutura do projeto
170
+ ## Estrutura do projeto {#project-structure}
238
171
 
239
172
  ```text
240
173
  my-app/
241
- actions/ # Ações que o agente pode chamar
242
- app/ # Frontend React (apenas templates UI; omitido em headless)
243
- server/ # Servidor API Nitro (rotas, plugins)
244
- AGENTS.md # Instruções permanentes do agente
245
- .agents/ # Skills que o agente pode carregar quando relevantes
174
+ actions/ # Operações acionáveis pelo agente e pela interface
175
+ app/ # Rotas, páginas e superfícies de chat em React
176
+ server/ # Servidor Nitro e esquema SQL
177
+ AGENTS.md # Instruções sempre ativas para o agente do app
178
+ .agents/ # Skills que o agente carrega quando relevante
246
179
  data/app.db # Estado SQLite local quando DATABASE_URL não está definido
247
180
  ```
248
181
 
249
- ## Para onde ir a seguir
250
-
251
- - **[Key Concepts](/docs/key-concepts)** a arquitetura principal: SQL, actions,
252
- sincronização e reconhecimento de contexto.
253
- - **[Actions](/docs/actions)** a ação completa API: esquemas, HTTP, autenticação e
254
- aprovação.
255
- - **[Agent Surfaces](/docs/agent-surfaces)** — headless, chat, sidecar incorporado,
256
- e aplicativo completo.
257
- - **[Drop-in Agent](/docs/drop-in-agent)** — adicione o bate-papo do agente a qualquer aplicativo React.
258
- - **[Deployment](/docs/deployment)** — coloque seu aplicativo em seu próprio domínio.
259
- - **[FAQ](/docs/faq)** — dúvidas sobre configuração e produto.
182
+ ## Quer um ponto de partida completo para analytics? {#analytics-starting-point}
183
+
184
+ O exemplo de Insights de respostas acima é pequeno de propósito para mostrar as peças do framework. Se você estiver criando um produto real de analytics, comece com [Analytics](/docs/template-analytics). É o ponto de partida robusto: conecte seus providers, use os dashboards e agent actions existentes e personalize a partir daí.
185
+
186
+ ## Próximos passos {#next}
187
+
188
+ - **[Actions](/docs/actions)** — schemas, auth, approvals, hooks e transport.
189
+ - **[Native Chat UI](/docs/native-chat-ui)** — tabelas, gráficos e typed cards para resultados de actions.
190
+ - **[Chat Template](/docs/template-chat)** — a app mínima chat-first.
191
+ - **[Analytics Template](/docs/template-analytics)** — uma base robusta para analytics; conecte providers e personalize a partir daí.
192
+ - **[Context Awareness](/docs/context-awareness)** — `view-screen`, `navigate`, route state e objetos selecionados.
193
+ - **[Agent Surfaces](/docs/agent-surfaces)** — chat, inline UI, app pages, embedded sidecars, automation e agents externos.
@@ -1,16 +1,11 @@
1
1
  ---
2
- title: "Aplicativos de agente puro"
3
- description: "Aplicativos em que o agente é o produto completo: o loop app-agent é a porta de entrada e UI é adicionado apenas quando humanos precisam dele."
2
+ title: "Automation-First Apps"
3
+ description: "Apps Agent-Native sem navegador para scheduled jobs, filas, scripts, integration workers e agents externos."
4
4
  ---
5
5
 
6
- # Aplicativos de agente puro
6
+ # Automation-First Apps
7
7
 
8
- Um aplicativo de agente puro é o fim mínimo do agente nativo: o loop app-agent é o
9
- produto, não um painel. Você envia uma solicitação do terminal, Slack, email, um
10
- trabalho agendado, outro agente ou bate-papo — "resumir meus e-mails não lidos", "postar o
11
- métricas diárias para Slack" — e o agente atua e retorna o resultado onde quer que esteja
12
- pertence. Ainda é um aplicativo real: actions, sessões, estado do aplicativo, histórico,
13
- configurações, credenciais e registros de compartilhamento, todos ativos em SQL.
8
+ Uma automation-first app é uma app Agent-Native sem navegador para scheduled jobs, filas, scripts, integration workers e agents externos. Não é o caminho padrão de Getting Started, mas é útil quando o workflow ainda não precisa de uma página. Ainda é uma app real: actions, sessions, application state, run history, settings, credentials e registros de compartilhamento vivem em SQL.
14
9
 
15
10
  <Diagram id="doc-block-8brd1i" title={"O loop app-agent é a porta de entrada"} summary={"Muitos pontos de entrada alcançam um loop de agente sobre ações e estados SQL-backed; os resultados retornam para o local de origem da solicitação. A IU é adicionada apenas quando humanos precisam supervisionar."}>
16
11
 
@@ -7,7 +7,7 @@ description: "Um aplicativo nativo de agente com foco mínimo no chat: threads d
7
7
 
8
8
  O Chat é o ponto de partida básico do aplicativo nativo do agente. Ele oferece um shell limpo no estilo ChatGPT com bate-papo no centro, uma lista de tópicos à esquerda, navegação padrão do aplicativo, autenticação, sincronização ao vivo, actions e um exemplo de ação. Comece aqui quando quiser um aplicativo de navegador real no qual você possa desenvolver sem se comprometer com um modelo de domínio.
9
9
 
10
- Se você deseja o menor tempo de execução somente de ação sem navegador UI, comece com [Pure-Agent Apps](/docs/pure-agent-apps). Se você quiser um formato de produto de domínio finalizado, comece com [Calendar](/docs/template-calendar), [Mail](/docs/template-mail), [Content](/docs/template-content), [Forms](/docs/template-forms), [Analytics](/docs/template-analytics) ou outro modelo de domínio.
10
+ Se você deseja um runtime automation-first sem navegador UI, comece com [Automation-First Apps](/docs/pure-agent-apps). Se você quiser um formato de produto de domínio finalizado, comece com [Calendar](/docs/template-calendar), [Mail](/docs/template-mail), [Content](/docs/template-content), [Forms](/docs/template-forms), [Analytics](/docs/template-analytics) ou outro modelo de domínio.
11
11
 
12
12
  <WireframeBlock id="doc-block-a4b2bv">
13
13
  <Screen
@@ -200,4 +200,4 @@ O agente deve adicionar um esquema Drizzle, actions, rota, navegação e instru
200
200
  - [**Agent Surfaces**](/docs/agent-surfaces) — padrões headless, chat, incorporados e de aplicativo completo
201
201
  - [**Actions**](/docs/actions) — o bate-papo do sistema de ação e UI chamam
202
202
  - [**Native Interface de chat**](/docs/native-chat-ui) — primitivas da superfície de bate-papo e opções de tempo de execução
203
- - [**Pure-Agent Apps**](/docs/pure-agent-apps): aplicativos somente de ação que podem se transformar no Chat mais tarde
203
+ - [**Automation-First Apps**](/docs/pure-agent-apps): automações, filas, scripts e workflows de agents externos sem UI de navegador
@@ -99,7 +99,7 @@ O agente não é um aplicativo separado que você acessa. Ele é fornecido como
99
99
 
100
100
  Nem todo aplicativo precisa de um painel completo. Quando o agente _é_ o produto, você pode pular a maior parte do UI personalizado: abra o aplicativo, peça o que deseja e deixe o agente fazer o resto. O agente ainda tem sua superfície de gerenciamento (histórico, espaço de trabalho, configurações), mas a interação principal é a conversa, e não os cliques.
101
101
 
102
- → [**Pure-Agent Apps**](/docs/pure-agent-apps) — aplicativos onde o agente é o produto completo.
102
+ → [**Automation-First Apps**](/docs/pure-agent-apps) — apps sem navegador para jobs, filas, scripts e agents externos.
103
103
 
104
104
  ## Você coedita com ele {#you-co-edit}
105
105
 
@@ -113,5 +113,5 @@ Quando você e o agente estão trabalhando no mesmo documento, vocês não se re
113
113
  - [**Agent Mentions**](/docs/agent-mentions) — direcione-o com menções a `@`
114
114
  - [**Voice Input**](/docs/voice-input) — direcione falando
115
115
  - [**Drop-in Agent**](/docs/drop-in-agent) — incorpore-o em qualquer aplicativo React
116
- - [**Pure-Agent Apps**](/docs/pure-agent-apps) — para UI leve quando o agente for o produto
116
+ - [**Automation-First Apps**](/docs/pure-agent-apps) — apps sem navegador para jobs, filas, scripts e agents externos
117
117
  - [**Real-Time Collaboration**](/docs/real-time-collaboration) — coeditam o mesmo documento juntos
@@ -30,7 +30,7 @@ description: "分叉一个可用的 SaaS 产品并使其成为您的产品 - 包
30
30
  | [**Plan**](/docs/template-plan) | 带有图表、线框图和注释的视觉计划和公关概述。 |
31
31
  | [**Dispatch**](/docs/template-dispatch) | 工作区控制平面:共享秘密、可重用集成、Slack/Telegram、计划作业。 |
32
32
 
33
- 不需要域应用?当您想要一个用户可以立即交谈的基本应用程序时,请使用 [Chat](/docs/template-chat),或者从 [Pure-Agent Apps](/docs/pure-agent-apps) 中的一个操作开始。
33
+ 不需要域应用?当您想要一个用户可以立即交谈,并可继续扩展 actions、原生结果和页面的基本应用时,请使用 [Chat](/docs/template-chat)。只有在暂时不需要浏览器 UI 的自动化工作流中,才使用 [Automation-First Apps](/docs/pure-agent-apps)
34
34
 
35
35
  查看 [Apps](/apps) 下的完整目录,或直接跳到其中一个 - 例如,如果您想要一款工作区风格的应用,[Dispatch](/docs/template-dispatch) 是一个很好的起点。
36
36
 
@@ -166,7 +166,7 @@ description: "分叉一个可用的 SaaS 产品并使其成为您的产品 - 包
166
166
 
167
167
  ## 在此基础上构建
168
168
 
169
- - [**Getting Started**](/docs/getting-started) - 创建一个最小的聊天应用程序或无头代理
169
+ - [**Getting Started**](/docs/getting-started) - 创建聊天优先应用,添加 action,渲染结构化结果,并扩展为页面
170
170
  - [**Messaging the agent**](/docs/messaging) - 用户(和您)如何与每个模板附带的代理对话
171
171
  - [**Multi-App Workspace**](/docs/multi-app-workspace) — 将多个模板捆绑到一个共享身份验证、品牌和代理的工作区
172
172
  - [**Dispatch**](/docs/template-dispatch) — 工作区控制平面模板
@@ -180,7 +180,7 @@ description: "分叉一个可用的 SaaS 产品并使其成为您的产品 - 包
180
180
  npx @agent-native/core@latest create my-platform
181
181
  ```
182
182
 
183
- 您将获得一个多选选择器。选择一个应用程序(独立)或多个应用程序(工作区 - 应用程序共享身份验证、品牌、代理配置和数据库)。每个挑选的模板都与您需要的每个文件一起构建到 `apps/<name>/` 中。对于仅限操作的应用程序而不是模板 UI,请使用 `npx @agent-native/core@latest create my-agent --headless`。
183
+ 您将获得一个多选选择器。选择一个应用程序(独立)或多个应用程序(工作区 - 应用程序共享身份验证、品牌、代理配置和数据库)。每个挑选的模板都与您需要的每个文件一起构建到 `apps/<name>/` 中。对于没有浏览器 UI 的自动化应用,而不是模板 UI,请使用 `npx @agent-native/core@latest create my-agent --headless`。
184
184
 
185
185
  填写`.env`(主要是`ANTHROPIC_API_KEY`和`DATABASE_URL`)、`pnpm install`、`pnpm dev`,就可以了。没有“TODO:实现登录”,没有占位符路由。
186
186
 
@@ -11,15 +11,15 @@ description: "有关原生代理的常见问题 - 它是什么、它的用途、
11
11
 
12
12
  ### 什么是代理原生? {#what-is-agent-native}
13
13
 
14
- Agent-native 是一个用于构建应用程序的框架,其中 AI 代理及其周围的产品表面是平等的合作伙伴。该界面可以从一个无头代理开始,通过一个自定义操作,发展成为丰富的聊天,或者成为一个完整的 UI。不变的是智能体和人类共享相同的 actions、数据库和状态。完整解释请参见 [What Is Agent-Native?](/docs/what-is-agent-native)。
14
+ Agent-native 是一个用于构建应用程序的框架,其中 AI 代理及其周围的产品界面是平等的合作伙伴。通常的路径是从聊天开始,添加 typed actions,在聊天中渲染结构化结果,然后围绕同一份 SQL state 扩展成持久页面。不变的是智能体和人类共享相同的 actions、数据库和状态。完整解释请参见 [What Is Agent-Native?](/docs/what-is-agent-native)。
15
15
 
16
16
  ### 这是给谁的? {#who-is-this-for}
17
17
 
18
18
  Agent-native 适合那些想要真正的应用程序和 AI 代理使用相同数据和 actions 工作的人。常见的路径是:
19
19
 
20
20
  - **如果您需要邮件、日历、表单、计划或其他无需设置的成品模板,请使用托管应用程序** - 从 [template gallery](/templates) 开始。
21
- - **从聊天开始**如果您想要一个用户可以立即交谈的基本应用程序,然后使用 actions 和屏幕进行扩展 - 从 [Getting Started](/docs/getting-started) 或 [Chat](/docs/template-chat) 开始。
22
- - **如果您想要在提交到 UI 之前执行一个操作和一个无头应用程序代理循环,请先启动原语优先** — 从 [Getting Started](/docs/getting-started) 开始。
21
+ - **从聊天开始**如果您想要默认的从零构建路径:用户可以立即与 agent 对话,然后您用 actions、原生结果和屏幕扩展它 - 从 [Getting Started](/docs/getting-started) 或 [Chat](/docs/template-chat) 开始。
22
+ - **从 automation-first 开始**如果您正在构建定时任务、队列、脚本、integration worker 或暂时没有浏览器 UI 的外部 agent 工作流 — 从 [Automation-First Apps](/docs/pure-agent-apps) 开始。
23
23
  - **分叉并自定义模板**如果您想要自己的 SaaS 产品,并且已连接身份验证、数据库、UI 和代理 actions — 请参阅 [Templates](/docs/cloneable-saas)。
24
24
  - **从头开始构建**如果您想要新的代理驱动产品的框架原语 - 从 [Getting Started](/docs/getting-started) 开始。
25
25
  - **如果您希望 Claude、ChatGPT、Codex、Cursor 或 GitHub Copilot / VS Code 使用代理本机应用程序,请连接另一个代理或代码工具** - 请参阅 [External Agents](/docs/external-agents) 和 [Skills Guide](/docs/skills-guide)。
@@ -128,7 +128,7 @@ Anthropic Claude、OpenAI(GPT-5 系列)、Google Gemini 以及使用 OpenAI
128
128
 
129
129
  ### 我可以构建模板未涵盖的内容吗? {#build-from-scratch}
130
130
 
131
- 是的。如果你想要一个基本的聊天应用程序,请运行`npx @agent-native/core@latest create my-chat-app --template chat`;您可以获得持久的聊天线程、actions、身份验证、SQL 支持的运行时状态以及添加您自己的屏幕的空间。如果您想要没有 UI 的最小操作优先应用程序,请运行 `npx @agent-native/core@latest create my-agent --headless`。请参阅 [Getting Started](/docs/getting-started)、[Pure-Agent Apps](/docs/pure-agent-apps) 和 [Chat](/docs/template-chat)。
131
+ 是的。如果你想要一个基本的 agentic app,请运行 `npx @agent-native/core@latest create my-chat-app --template chat`;您可以获得持久的聊天线程、actions、身份验证、SQL 支持的运行时状态、原生内联结果渲染,以及添加自己屏幕的空间。如果您正在构建 no-browser automation,请运行 `npx @agent-native/core@latest create my-agent --headless`。请参阅 [Getting Started](/docs/getting-started)、[Automation-First Apps](/docs/pure-agent-apps) 和 [Chat](/docs/template-chat)。
132
132
 
133
133
  ### 我可以在不分叉模板的情况下尝试它吗? {#try-with-a-skill}
134
134