@agent-native/core 0.84.35 → 0.84.37
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.
- package/README.md +15 -51
- package/corpus/core/CHANGELOG.md +18 -0
- package/corpus/core/docs/content/actions.mdx +17 -24
- package/corpus/core/docs/content/agent-surfaces.mdx +59 -56
- package/corpus/core/docs/content/cloneable-saas.mdx +3 -3
- package/corpus/core/docs/content/faq.mdx +4 -4
- package/corpus/core/docs/content/getting-started.mdx +246 -204
- package/corpus/core/docs/content/key-concepts.mdx +9 -9
- package/corpus/core/docs/content/locales/ar-SA/cloneable-saas.mdx +3 -3
- package/corpus/core/docs/content/locales/ar-SA/faq.mdx +4 -4
- package/corpus/core/docs/content/locales/ar-SA/getting-started.mdx +148 -214
- package/corpus/core/docs/content/locales/ar-SA/pure-agent-apps.mdx +4 -9
- package/corpus/core/docs/content/locales/ar-SA/template-chat.mdx +2 -2
- package/corpus/core/docs/content/locales/ar-SA/using-your-agent.mdx +2 -2
- package/corpus/core/docs/content/locales/de-DE/cloneable-saas.mdx +3 -3
- package/corpus/core/docs/content/locales/de-DE/faq.mdx +4 -4
- package/corpus/core/docs/content/locales/de-DE/getting-started.mdx +145 -211
- package/corpus/core/docs/content/locales/de-DE/pure-agent-apps.mdx +4 -9
- package/corpus/core/docs/content/locales/de-DE/template-chat.mdx +2 -2
- package/corpus/core/docs/content/locales/de-DE/using-your-agent.mdx +2 -2
- package/corpus/core/docs/content/locales/es-ES/cloneable-saas.mdx +3 -3
- package/corpus/core/docs/content/locales/es-ES/faq.mdx +4 -4
- package/corpus/core/docs/content/locales/es-ES/getting-started.mdx +148 -214
- package/corpus/core/docs/content/locales/es-ES/pure-agent-apps.mdx +4 -9
- package/corpus/core/docs/content/locales/es-ES/template-chat.mdx +2 -2
- package/corpus/core/docs/content/locales/es-ES/using-your-agent.mdx +2 -2
- package/corpus/core/docs/content/locales/fr-FR/cloneable-saas.mdx +2 -2
- package/corpus/core/docs/content/locales/fr-FR/faq.mdx +4 -4
- package/corpus/core/docs/content/locales/fr-FR/getting-started.mdx +146 -212
- package/corpus/core/docs/content/locales/fr-FR/pure-agent-apps.mdx +4 -9
- package/corpus/core/docs/content/locales/fr-FR/template-chat.mdx +2 -2
- package/corpus/core/docs/content/locales/fr-FR/using-your-agent.mdx +2 -2
- package/corpus/core/docs/content/locales/hi-IN/cloneable-saas.mdx +3 -3
- package/corpus/core/docs/content/locales/hi-IN/faq.mdx +4 -4
- package/corpus/core/docs/content/locales/hi-IN/getting-started.mdx +149 -215
- package/corpus/core/docs/content/locales/hi-IN/pure-agent-apps.mdx +8 -13
- package/corpus/core/docs/content/locales/hi-IN/template-chat.mdx +2 -2
- package/corpus/core/docs/content/locales/hi-IN/using-your-agent.mdx +2 -2
- package/corpus/core/docs/content/locales/ja-JP/cloneable-saas.mdx +2 -2
- package/corpus/core/docs/content/locales/ja-JP/faq.mdx +4 -4
- package/corpus/core/docs/content/locales/ja-JP/getting-started.mdx +144 -210
- package/corpus/core/docs/content/locales/ja-JP/pure-agent-apps.mdx +8 -13
- package/corpus/core/docs/content/locales/ja-JP/template-chat.mdx +2 -2
- package/corpus/core/docs/content/locales/ja-JP/using-your-agent.mdx +2 -2
- package/corpus/core/docs/content/locales/ko-KR/cloneable-saas.mdx +3 -3
- package/corpus/core/docs/content/locales/ko-KR/faq.mdx +4 -4
- package/corpus/core/docs/content/locales/ko-KR/getting-started.mdx +146 -212
- package/corpus/core/docs/content/locales/ko-KR/pure-agent-apps.mdx +8 -13
- package/corpus/core/docs/content/locales/ko-KR/template-chat.mdx +2 -2
- package/corpus/core/docs/content/locales/ko-KR/using-your-agent.mdx +2 -2
- package/corpus/core/docs/content/locales/pt-BR/cloneable-saas.mdx +3 -3
- package/corpus/core/docs/content/locales/pt-BR/faq.mdx +4 -4
- package/corpus/core/docs/content/locales/pt-BR/getting-started.mdx +145 -211
- package/corpus/core/docs/content/locales/pt-BR/pure-agent-apps.mdx +4 -9
- package/corpus/core/docs/content/locales/pt-BR/template-chat.mdx +2 -2
- package/corpus/core/docs/content/locales/pt-BR/using-your-agent.mdx +2 -2
- package/corpus/core/docs/content/locales/zh-CN/cloneable-saas.mdx +3 -3
- package/corpus/core/docs/content/locales/zh-CN/faq.mdx +4 -4
- package/corpus/core/docs/content/locales/zh-CN/getting-started.mdx +158 -209
- package/corpus/core/docs/content/locales/zh-CN/pure-agent-apps.mdx +4 -9
- package/corpus/core/docs/content/locales/zh-CN/template-chat.mdx +2 -2
- package/corpus/core/docs/content/locales/zh-CN/using-your-agent.mdx +2 -2
- package/corpus/core/docs/content/locales/zh-TW/cloneable-saas.mdx +3 -3
- package/corpus/core/docs/content/locales/zh-TW/faq.mdx +4 -4
- package/corpus/core/docs/content/locales/zh-TW/getting-started.mdx +158 -212
- package/corpus/core/docs/content/locales/zh-TW/pure-agent-apps.mdx +4 -9
- package/corpus/core/docs/content/locales/zh-TW/template-chat.mdx +2 -2
- package/corpus/core/docs/content/locales/zh-TW/using-your-agent.mdx +2 -2
- package/corpus/core/docs/content/native-chat-ui.mdx +17 -32
- package/corpus/core/docs/content/pure-agent-apps.mdx +46 -26
- package/corpus/core/docs/content/template-chat.mdx +8 -8
- package/corpus/core/docs/content/using-your-agent.mdx +2 -2
- package/corpus/core/docs/content/what-is-agent-native.mdx +6 -6
- package/corpus/core/package.json +1 -1
- package/corpus/core/src/cli/skills.ts +7 -9
- package/corpus/core/src/client/AssistantChat.tsx +27 -13
- package/corpus/core/src/client/MultiTabAssistantChat.tsx +2 -0
- package/corpus/core/src/client/RunStuckBanner.tsx +195 -21
- package/corpus/core/src/client/blocks/library/wireframe-kit.tsx +57 -9
- package/corpus/core/src/client/blocks/library/wireframe.tsx +3 -18
- package/corpus/core/src/client/chat/widgets/builtin-tool-renderers.tsx +28 -32
- package/corpus/core/src/client/use-run-stuck-detection.ts +14 -1
- package/corpus/core/src/db/schema.ts +5 -0
- package/corpus/core/src/server/agent-chat-plugin.ts +5 -2
- package/corpus/core/src/styles/blocks.css +27 -6
- package/corpus/templates/analytics/app/components/layout/Sidebar.tsx +1 -4
- package/corpus/templates/content/actions/list-trashed-content-databases.ts +1 -1
- package/corpus/templates/plan/.agents/skills/visual-plan/references/wireframe.md +7 -9
- package/corpus/templates/plan/.agents/skills/visual-recap/references/wireframe.md +7 -9
- package/dist/cli/skills.d.ts +1 -1
- package/dist/cli/skills.d.ts.map +1 -1
- package/dist/cli/skills.js +7 -9
- package/dist/cli/skills.js.map +1 -1
- package/dist/client/AssistantChat.d.ts +6 -0
- package/dist/client/AssistantChat.d.ts.map +1 -1
- package/dist/client/AssistantChat.js +19 -13
- package/dist/client/AssistantChat.js.map +1 -1
- package/dist/client/MultiTabAssistantChat.d.ts.map +1 -1
- package/dist/client/MultiTabAssistantChat.js +1 -1
- package/dist/client/MultiTabAssistantChat.js.map +1 -1
- package/dist/client/RunStuckBanner.d.ts +13 -1
- package/dist/client/RunStuckBanner.d.ts.map +1 -1
- package/dist/client/RunStuckBanner.js +138 -16
- package/dist/client/RunStuckBanner.js.map +1 -1
- package/dist/client/blocks/library/wireframe-kit.d.ts +6 -6
- package/dist/client/blocks/library/wireframe-kit.d.ts.map +1 -1
- package/dist/client/blocks/library/wireframe-kit.js +52 -5
- package/dist/client/blocks/library/wireframe-kit.js.map +1 -1
- package/dist/client/blocks/library/wireframe.d.ts.map +1 -1
- package/dist/client/blocks/library/wireframe.js +1 -11
- package/dist/client/blocks/library/wireframe.js.map +1 -1
- package/dist/client/chat/widgets/builtin-tool-renderers.d.ts.map +1 -1
- package/dist/client/chat/widgets/builtin-tool-renderers.js +27 -31
- package/dist/client/chat/widgets/builtin-tool-renderers.js.map +1 -1
- package/dist/client/use-run-stuck-detection.d.ts +4 -0
- package/dist/client/use-run-stuck-detection.d.ts.map +1 -1
- package/dist/client/use-run-stuck-detection.js +7 -1
- package/dist/client/use-run-stuck-detection.js.map +1 -1
- package/dist/collab/awareness.d.ts +2 -2
- package/dist/collab/awareness.d.ts.map +1 -1
- package/dist/collab/routes.d.ts +1 -1
- package/dist/db/schema.d.ts +2 -1
- package/dist/db/schema.d.ts.map +1 -1
- package/dist/db/schema.js +3 -2
- package/dist/db/schema.js.map +1 -1
- package/dist/notifications/routes.d.ts +3 -3
- package/dist/progress/routes.d.ts +1 -1
- package/dist/resources/handlers.d.ts +3 -3
- package/dist/server/agent-chat-plugin.d.ts.map +1 -1
- package/dist/server/agent-chat-plugin.js +3 -2
- package/dist/server/agent-chat-plugin.js.map +1 -1
- package/dist/server/transcribe-voice.d.ts +1 -1
- package/dist/styles/blocks.css +27 -6
- package/docs/content/actions.mdx +17 -24
- package/docs/content/agent-surfaces.mdx +59 -56
- package/docs/content/cloneable-saas.mdx +3 -3
- package/docs/content/faq.mdx +4 -4
- package/docs/content/getting-started.mdx +246 -204
- package/docs/content/key-concepts.mdx +9 -9
- package/docs/content/locales/ar-SA/cloneable-saas.mdx +3 -3
- package/docs/content/locales/ar-SA/faq.mdx +4 -4
- package/docs/content/locales/ar-SA/getting-started.mdx +148 -214
- package/docs/content/locales/ar-SA/pure-agent-apps.mdx +4 -9
- package/docs/content/locales/ar-SA/template-chat.mdx +2 -2
- package/docs/content/locales/ar-SA/using-your-agent.mdx +2 -2
- package/docs/content/locales/de-DE/cloneable-saas.mdx +3 -3
- package/docs/content/locales/de-DE/faq.mdx +4 -4
- package/docs/content/locales/de-DE/getting-started.mdx +145 -211
- package/docs/content/locales/de-DE/pure-agent-apps.mdx +4 -9
- package/docs/content/locales/de-DE/template-chat.mdx +2 -2
- package/docs/content/locales/de-DE/using-your-agent.mdx +2 -2
- package/docs/content/locales/es-ES/cloneable-saas.mdx +3 -3
- package/docs/content/locales/es-ES/faq.mdx +4 -4
- package/docs/content/locales/es-ES/getting-started.mdx +148 -214
- package/docs/content/locales/es-ES/pure-agent-apps.mdx +4 -9
- package/docs/content/locales/es-ES/template-chat.mdx +2 -2
- package/docs/content/locales/es-ES/using-your-agent.mdx +2 -2
- package/docs/content/locales/fr-FR/cloneable-saas.mdx +2 -2
- package/docs/content/locales/fr-FR/faq.mdx +4 -4
- package/docs/content/locales/fr-FR/getting-started.mdx +146 -212
- package/docs/content/locales/fr-FR/pure-agent-apps.mdx +4 -9
- package/docs/content/locales/fr-FR/template-chat.mdx +2 -2
- package/docs/content/locales/fr-FR/using-your-agent.mdx +2 -2
- package/docs/content/locales/hi-IN/cloneable-saas.mdx +3 -3
- package/docs/content/locales/hi-IN/faq.mdx +4 -4
- package/docs/content/locales/hi-IN/getting-started.mdx +149 -215
- package/docs/content/locales/hi-IN/pure-agent-apps.mdx +8 -13
- package/docs/content/locales/hi-IN/template-chat.mdx +2 -2
- package/docs/content/locales/hi-IN/using-your-agent.mdx +2 -2
- package/docs/content/locales/ja-JP/cloneable-saas.mdx +2 -2
- package/docs/content/locales/ja-JP/faq.mdx +4 -4
- package/docs/content/locales/ja-JP/getting-started.mdx +144 -210
- package/docs/content/locales/ja-JP/pure-agent-apps.mdx +8 -13
- package/docs/content/locales/ja-JP/template-chat.mdx +2 -2
- package/docs/content/locales/ja-JP/using-your-agent.mdx +2 -2
- package/docs/content/locales/ko-KR/cloneable-saas.mdx +3 -3
- package/docs/content/locales/ko-KR/faq.mdx +4 -4
- package/docs/content/locales/ko-KR/getting-started.mdx +146 -212
- package/docs/content/locales/ko-KR/pure-agent-apps.mdx +8 -13
- package/docs/content/locales/ko-KR/template-chat.mdx +2 -2
- package/docs/content/locales/ko-KR/using-your-agent.mdx +2 -2
- package/docs/content/locales/pt-BR/cloneable-saas.mdx +3 -3
- package/docs/content/locales/pt-BR/faq.mdx +4 -4
- package/docs/content/locales/pt-BR/getting-started.mdx +145 -211
- package/docs/content/locales/pt-BR/pure-agent-apps.mdx +4 -9
- package/docs/content/locales/pt-BR/template-chat.mdx +2 -2
- package/docs/content/locales/pt-BR/using-your-agent.mdx +2 -2
- package/docs/content/locales/zh-CN/cloneable-saas.mdx +3 -3
- package/docs/content/locales/zh-CN/faq.mdx +4 -4
- package/docs/content/locales/zh-CN/getting-started.mdx +158 -209
- package/docs/content/locales/zh-CN/pure-agent-apps.mdx +4 -9
- package/docs/content/locales/zh-CN/template-chat.mdx +2 -2
- package/docs/content/locales/zh-CN/using-your-agent.mdx +2 -2
- package/docs/content/locales/zh-TW/cloneable-saas.mdx +3 -3
- package/docs/content/locales/zh-TW/faq.mdx +4 -4
- package/docs/content/locales/zh-TW/getting-started.mdx +158 -212
- package/docs/content/locales/zh-TW/pure-agent-apps.mdx +4 -9
- package/docs/content/locales/zh-TW/template-chat.mdx +2 -2
- package/docs/content/locales/zh-TW/using-your-agent.mdx +2 -2
- package/docs/content/native-chat-ui.mdx +17 -32
- package/docs/content/pure-agent-apps.mdx +46 -26
- package/docs/content/template-chat.mdx +8 -8
- package/docs/content/using-your-agent.mdx +2 -2
- package/docs/content/what-is-agent-native.mdx +6 -6
- package/package.json +1 -1
|
@@ -1,259 +1,193 @@
|
|
|
1
1
|
---
|
|
2
|
-
title: "
|
|
3
|
-
description: "
|
|
2
|
+
title: "Primeros pasos"
|
|
3
|
+
description: "Crea una app agentic empezando por chat, añade una action, renderiza resultados estructurados en línea y crece hacia una página persistente que el agent puede abrir."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
#
|
|
7
|
-
|
|
8
|
-
Las aplicaciones Agent-Native brindan a un agente de IA y a su UI el mismo actions, datos y
|
|
9
|
-
estado. Un agente básico se hace a partir de instrucciones que lo guían, skills que enseñan
|
|
10
|
-
comportamiento repetible y actions que le permiten hacer un trabajo real.
|
|
11
|
-
|
|
12
|
-
**¿Quieres una aplicación completa para empezar?** Clona una de nuestras plantillas enriquecidas:
|
|
13
|
-
[Chat](/docs/template-chat), [Mail](/docs/template-mail),
|
|
14
|
-
[Calendar](/docs/template-calendar), [Content](/docs/template-content),
|
|
15
|
-
[Analytics](/docs/template-analytics) y [many more](/docs/cloneable-saas) —
|
|
16
|
-
cada una de ellas es una aplicación con todas las funciones que puedes personalizar.
|
|
17
|
-
|
|
18
|
-
¿Construir desde cero? La única opción desde el principio es si quieres un UI —
|
|
19
|
-
todo lo posterior (escribir instrucciones, agregar skills, definir actions, ejecutar
|
|
20
|
-
el agente) es el mismo en ambos sentidos.
|
|
21
|
-
|
|
22
|
-
<FileTree
|
|
23
|
-
id="doc-block-1525m3a"
|
|
24
|
-
title={"Un agente Agent-Native básico"}
|
|
25
|
-
entries={[
|
|
26
|
-
{
|
|
27
|
-
path: "AGENTS.md",
|
|
28
|
-
note: "Instrucciones siempre activas: propósito, reglas, tono y mapa de lo que el agente puede hacer",
|
|
29
|
-
},
|
|
30
|
-
{
|
|
31
|
-
path: ".agents/skills/customer-research/SKILL.md",
|
|
32
|
-
note: "Un playbook reutilizable que el agente carga cuando la tarea coincide",
|
|
33
|
-
},
|
|
34
|
-
{
|
|
35
|
-
path: "actions/summarize-week.ts",
|
|
36
|
-
note: "Código tipado que el agente, la UI, CLI, HTTP, MCP, A2A, jobs y webhooks pueden ejecutar",
|
|
37
|
-
},
|
|
38
|
-
]}
|
|
39
|
-
/>
|
|
40
|
-
|
|
41
|
-
Esto es cierto ya sea que comiences con un chat UI, un agente sin cabeza o una aplicación completa.
|
|
42
|
-
El UI cambia la superficie; instrucciones, skills y actions le dan al agente su
|
|
43
|
-
orientación y comportamiento.
|
|
44
|
-
|
|
45
|
-
## 1. Crea tu aplicación
|
|
46
|
-
|
|
47
|
-
Necesitarás [Node.js 22+](https://nodejs.org) y [pnpm](https://pnpm.io).
|
|
48
|
-
|
|
49
|
-
Ejecute `create` sin indicadores y le preguntará cómo desea comenzar (una plantilla completa,
|
|
50
|
-
Chat o Headless) antes que nada:
|
|
6
|
+
# Primeros pasos
|
|
51
7
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
8
|
+
Agent-Native sirve para crear agentic applications: el AI agent y la UI comparten las mismas [actions](/docs/actions), datos SQL y application state. El camino principal empieza con Chat para que los usuarios puedan hablar con el agent de inmediato, y después añade las superficies de producto que el flujo necesita.
|
|
9
|
+
|
|
10
|
+
El recorrido útil es:
|
|
11
|
+
|
|
12
|
+
1. Crear una Chat app.
|
|
13
|
+
2. Añadir una action.
|
|
14
|
+
3. Renderizar el resultado de la action dentro del chat.
|
|
15
|
+
4. Persistir datos en SQL.
|
|
16
|
+
5. Añadir una página que el agent pueda abrir cuando conviene inspeccionar el resultado visualmente.
|
|
55
17
|
|
|
56
|
-
|
|
18
|
+
## 1. Crea una Chat app {#create-your-app}
|
|
57
19
|
|
|
58
|
-
|
|
59
|
-
Chat personalizable UI, y cada acción que agregas se muestra automáticamente en él:
|
|
20
|
+
Necesitas [Node.js 22+](https://nodejs.org) y [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
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
29
|
+
El template incluye durable chat threads, auth, live sync, un directorio `actions/`, las actions estándar `view-screen` y `navigate`, y una app React lista para extender.
|
|
30
|
+
|
|
31
|
+
## 2. Añade una action {#add-an-action}
|
|
32
|
+
|
|
33
|
+
Una action es una operación tipada que comparten el agent y la UI. Para este flujo, crea `actions/analyze-responses.ts`: analiza respuestas de formularios y devuelve una forma validada para un gráfico de chat propio.
|
|
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 respuestas"
|
|
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
|
-
|
|
64
|
+
Pruébala directamente:
|
|
73
65
|
|
|
74
66
|
```bash
|
|
75
|
-
|
|
76
|
-
pnpm install
|
|
67
|
+
pnpm action analyze-responses --formId demo
|
|
77
68
|
```
|
|
78
69
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
## 2. Añadir una acción
|
|
82
|
-
|
|
83
|
-
Una acción es una operación que su agente (y su UI) pueden realizar. Ambos andamios
|
|
84
|
-
envío con este ejemplo:
|
|
85
|
-
|
|
86
|
-
<AnnotatedCode
|
|
87
|
-
id="doc-block-h1yk8m"
|
|
88
|
-
title="Tu primera 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: "Saluda desde el 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: "Descripción de herramienta",
|
|
98
|
-
note: "El agente lee `description` para decidir cuándo llamarla como herramienta.",
|
|
99
|
-
},
|
|
100
|
-
{
|
|
101
|
-
lines: "6-8",
|
|
102
|
-
label: "Contrato tipado",
|
|
103
|
-
note: "Un `schema` de zod valida entradas desde cada superficie: agente, UI, HTTP, MCP y A2A.",
|
|
104
|
-
},
|
|
105
|
-
{
|
|
106
|
-
lines: "9",
|
|
107
|
-
label: "Verbo HTTP",
|
|
108
|
-
note: "Expón esta acción como un endpoint HTTP montado automáticamente.",
|
|
109
|
-
},
|
|
110
|
-
{
|
|
111
|
-
lines: "10",
|
|
112
|
-
label: "Solo lectura",
|
|
113
|
-
note: "`readOnly` marca la acción como segura para llamar sin aprobación y cacheable para consultas.",
|
|
114
|
-
},
|
|
115
|
-
{
|
|
116
|
-
lines: "11-13",
|
|
117
|
-
label: "Una implementación",
|
|
118
|
-
note: "El cuerpo de `run` es la única fuente de verdad que ejecutan todas las superficies.",
|
|
119
|
-
},
|
|
120
|
-
]}
|
|
121
|
-
/>
|
|
122
|
-
|
|
123
|
-
Reemplace `hello` con la primera operación real en su dominio. Lo defines una vez;
|
|
124
|
-
todas las superficies lo recogen.
|
|
125
|
-
|
|
126
|
-
Utilice `AGENTS.md` como guía que debe aplicarse en cada giro. Usa una habilidad cuando
|
|
127
|
-
el agente necesita un flujo de trabajo o un procedimiento de dominio reutilizable. Utilice una acción cuando
|
|
128
|
-
el agente necesita una forma escrita y comprobable de leer datos, escribir datos, llamar a un API o
|
|
129
|
-
realizar una aprobación.
|
|
130
|
-
|
|
131
|
-
## 3. Ejecútelo
|
|
132
|
-
|
|
133
|
-
Llame a la acción directamente:
|
|
70
|
+
O pídeselo al agent en el navegador:
|
|
134
71
|
|
|
135
|
-
|
|
136
|
-
pnpm action hello --name Steve
|
|
137
|
-
```
|
|
72
|
+
> Analiza las respuestas recientes del formulario de demo.
|
|
138
73
|
|
|
139
|
-
|
|
74
|
+
## 3. Renderiza el resultado en chat {#render-inline}
|
|
140
75
|
|
|
141
|
-
|
|
142
|
-
pnpm agent "Call the hello action for Steve and explain what happened."
|
|
143
|
-
```
|
|
76
|
+
Como la action declara `outputSchema` y una `chatUI.renderer` específica del producto, el transcript no convierte los datos en texto plano. Registra un componente React para ese id exacto desde el arranque de la app, por ejemplo importando `app/chat-renderers.tsx` una vez desde `app/root.tsx`:
|
|
144
77
|
|
|
145
|
-
|
|
146
|
-
|
|
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
|
-
|
|
149
|
-
|
|
105
|
+
registerActionChatRenderer({
|
|
106
|
+
id: "responses.response-chart",
|
|
107
|
+
renderer: "responses.response-chart",
|
|
108
|
+
Component: ResponseChart,
|
|
109
|
+
});
|
|
150
110
|
```
|
|
151
111
|
|
|
152
|
-
|
|
153
|
-
trabajos programados y webhooks. Defina una vez y llame desde cualquier lugar.
|
|
154
|
-
|
|
155
|
-
<Diagram id="doc-block-xk8dna" title={"Una acción, cada superficie"} summary={"Un único archivo defineAction se distribuye a cada consumidor sin cableado adicional."}>
|
|
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">→</div>
|
|
161
|
-
<div class="diagram-surfaces">
|
|
162
|
-
<span class="diagram-pill">Interfaz 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">Trabajos programados</span
|
|
166
|
-
><span class="diagram-pill">Webhooks</span>
|
|
167
|
-
</div>
|
|
168
|
-
</div>
|
|
169
|
-
```
|
|
112
|
+
Para salidas genéricas reutilizables, el framework también incluye renderers integrados `data-chart` y `data-table`, además de `data-insights` para tarjetas combinadas de resumen/gráfico/tabla. Consulta [Native Chat UI](/docs/native-chat-ui).
|
|
170
113
|
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
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-es">
|
|
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'>Analiza respuestas 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 con 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 respuestas</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'>Lun</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'>Mar</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'>Mié</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'>Jue</span></div></div></section></div></div></div>"
|
|
119
|
+
}
|
|
120
|
+
/>
|
|
121
|
+
</WireframeBlock>
|
|
189
122
|
|
|
190
|
-
|
|
123
|
+
## 4. Persiste datos en SQL {#persist-data}
|
|
191
124
|
|
|
192
|
-
|
|
125
|
+
Cuando el resultado debe revisarse, compararse o actualizarse, guárdalo en SQL y mantén las lecturas/escrituras detrás de actions:
|
|
193
126
|
|
|
194
|
-
|
|
195
|
-
el historial de ejecución y las credenciales se encuentran en SQL. A nivel local es SQLite en
|
|
196
|
-
`data/app.db`; en producción se configura `DATABASE_URL`. Ver
|
|
197
|
-
[Deployment](/docs/deployment).
|
|
127
|
+
Define la tabla con los helpers portables del framework, no con imports de `drizzle-orm/sqlite-core` o `drizzle-orm/pg-core`:
|
|
198
128
|
|
|
199
|
-
|
|
129
|
+
```ts
|
|
130
|
+
// server/db/schema.ts
|
|
131
|
+
import { integer, now, table, text } from "@agent-native/core/db/schema";
|
|
200
132
|
|
|
201
|
-
|
|
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
|
-
|
|
144
|
+
Estos helpers eligen el backend SQL configurado, así que el mismo schema puede correr en SQLite local y en producción con Postgres, Turso/libSQL, D1 u otro provider SQL soportado.
|
|
204
145
|
|
|
205
|
-
|
|
146
|
+
- `create-response-insight` escribe un insight nuevo.
|
|
147
|
+
- `list-response-insights` lee los datos para la página.
|
|
148
|
+
- `update-response-insight` actualiza un registro.
|
|
149
|
+
- `analyze-responses` sigue devolviendo el widget nativo del chat.
|
|
206
150
|
|
|
207
|
-
|
|
208
|
-
es una pequeña ruta construida sobre el componente `<AgentChatSurface>`:
|
|
151
|
+
No crees una REST route duplicada solo para el navegador; la UI y el agent deben compartir actions.
|
|
209
152
|
|
|
210
|
-
|
|
211
|
-
// app/routes/_index.tsx
|
|
212
|
-
import { AgentChatSurface } from "@agent-native/core/client";
|
|
153
|
+
## 5. Añade una página que el agent pueda abrir {#add-a-page}
|
|
213
154
|
|
|
214
|
-
|
|
215
|
-
return <AgentChatSurface mode="page" className="h-full" />;
|
|
216
|
-
}
|
|
217
|
-
```
|
|
155
|
+
Añade una route `/response-insights` con `useActionQuery("list-response-insights")` y `useActionMutation("create-response-insight")`. La página es una proyección del SQL state; los datos siguen escribiéndose por las mismas actions.
|
|
218
156
|
|
|
219
|
-
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
-
|
|
224
|
-
|
|
225
|
-
|
|
157
|
+
<WireframeBlock id="doc-block-response-insights-page-wireframe-es">
|
|
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 respuestas</h2><p class='wf-muted' style='margin:0'>Insights que el agente creó a partir de respuestas del formulario.</p></header><button class='primary' data-rough style='align-self:flex-start'>Analizar formulario 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 precios</strong><p class='wf-muted' style='margin:8px 0 0'>Los usuarios piden un plan de equipo.</p></article><article class='wf-box' data-rough style='padding:12px'><strong>Abandono en onboarding</strong><p class='wf-muted' style='margin:8px 0 0'>Tres pasos necesitan textos más claros.</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>Formulario de demo</strong><span class='wf-muted'>42 respuestas analizadas</span></div><div class='wf-row wf-box' data-rough style='padding:10px 12px;gap:12px;justify-content:space-between'><strong>Siguiente paso</strong><span class='wf-muted'>Revisar dos borradores 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'>Tú</span><p style='margin:4px 0 0'>Abre insights de respuestas.</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 respuestas abiertos.</p></div></aside></section></main>"
|
|
162
|
+
}
|
|
163
|
+
/>
|
|
164
|
+
</WireframeBlock>
|
|
226
165
|
|
|
227
|
-
|
|
228
|
-
[Native Interfaz de chat](/docs/native-chat-ui) para representar los resultados de la acción como tablas,
|
|
229
|
-
gráficos y tarjetas mecanografiadas en lugar de texto sin formato.
|
|
166
|
+
Extiende `view-screen` y `navigate` para que el agent conozca la route actual y pueda abrir `/response-insights`. Los resultados también pueden incluir `href: "/response-insights"` para mostrar un botón "Abrir insights de respuestas".
|
|
230
167
|
|
|
231
|
-
|
|
232
|
-
su capa `app/` (React Router + Vite) es exactamente lo que el andamio sin cabeza
|
|
233
|
-
se va. El movimiento más limpio es comenzar (o reestructurar) desde el Chat
|
|
234
|
-
plantilla; su estado `actions/`, agente y SQL se mantienen sin cambios. Ver
|
|
235
|
-
[Agent Surfaces](/docs/agent-surfaces) para cada superficie intermedia.
|
|
168
|
+
Cuando el chat de página completa abra una página de app, usa `AgentChatSurface`, `AgentSidebar`, `useAgentChatHomeHandoff`, `useAgentChatHomeHandoffLinks` y `chatViewTransition` desde [Agent Surfaces](/docs/agent-surfaces#rich-chat) para deslizar el chat al panel lateral sin perder el thread.
|
|
236
169
|
|
|
237
|
-
## Estructura del proyecto
|
|
170
|
+
## Estructura del proyecto {#project-structure}
|
|
238
171
|
|
|
239
172
|
```text
|
|
240
173
|
my-app/
|
|
241
|
-
actions/ #
|
|
242
|
-
app/ #
|
|
243
|
-
server/ # Servidor
|
|
244
|
-
AGENTS.md # Instrucciones
|
|
245
|
-
.agents/ # Skills que el agente
|
|
174
|
+
actions/ # Operaciones invocables por el agente y la interfaz
|
|
175
|
+
app/ # Rutas, páginas y superficies de chat de React
|
|
176
|
+
server/ # Servidor Nitro y esquema SQL
|
|
177
|
+
AGENTS.md # Instrucciones siempre activas para el agente de la app
|
|
178
|
+
.agents/ # Skills que el agente carga cuando corresponde
|
|
246
179
|
data/app.db # Estado SQLite local cuando DATABASE_URL no está definido
|
|
247
180
|
```
|
|
248
181
|
|
|
249
|
-
##
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
- **[
|
|
256
|
-
|
|
257
|
-
- **[
|
|
258
|
-
- **[
|
|
259
|
-
- **[
|
|
182
|
+
## ¿Quieres un punto de partida completo para analytics? {#analytics-starting-point}
|
|
183
|
+
|
|
184
|
+
El ejemplo de Insights de respuestas anterior es pequeño a propósito para mostrar las piezas del framework. Si vas a crear un producto real de analytics, empieza con [Analytics](/docs/template-analytics). Es el punto de partida robusto: conecta tus providers, usa los dashboards y agent actions existentes, y personaliza desde ahí.
|
|
185
|
+
|
|
186
|
+
## Siguientes pasos {#next}
|
|
187
|
+
|
|
188
|
+
- **[Actions](/docs/actions)** — schemas, auth, approvals, hooks y transport.
|
|
189
|
+
- **[Native Chat UI](/docs/native-chat-ui)** — tablas, gráficos y typed cards para resultados de actions.
|
|
190
|
+
- **[Chat Template](/docs/template-chat)** — la app mínima chat-first.
|
|
191
|
+
- **[Analytics Template](/docs/template-analytics)** — una base robusta para analytics; conecta providers y personaliza desde ahí.
|
|
192
|
+
- **[Context Awareness](/docs/context-awareness)** — `view-screen`, `navigate`, route state y objetos seleccionados.
|
|
193
|
+
- **[Agent Surfaces](/docs/agent-surfaces)** — chat, inline UI, app pages, embedded sidecars, automation y agents externos.
|
|
@@ -1,16 +1,11 @@
|
|
|
1
1
|
---
|
|
2
|
-
title: "
|
|
3
|
-
description: "
|
|
2
|
+
title: "Automation-First Apps"
|
|
3
|
+
description: "Apps Agent-Native sin navegador para scheduled jobs, colas, scripts, integration workers y agents externos."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
#
|
|
6
|
+
# Automation-First Apps
|
|
7
7
|
|
|
8
|
-
Una
|
|
9
|
-
producto, no un tablero. Envías una solicitud desde la terminal, Slack, correo electrónico, a
|
|
10
|
-
trabajo programado, otro agente o Chat: "resumir mis correos electrónicos no leídos", "publicar el
|
|
11
|
-
métricas diarias a Slack" — y el agente actúa y devuelve el resultado dondequiera que esté
|
|
12
|
-
pertenece. Sigue siendo una aplicación real: actions, sesiones, estado de la aplicación, historial,
|
|
13
|
-
La configuración, las credenciales y los registros compartidos se encuentran todos en SQL.
|
|
8
|
+
Una automation-first app es una app Agent-Native sin navegador para scheduled jobs, colas, scripts, integration workers y agents externos. No es el camino predeterminado de Getting Started, pero es útil cuando el workflow todavía no necesita una página. Sigue siendo una app real: actions, sessions, application state, run history, settings, credentials y registros compartidos viven en SQL.
|
|
14
9
|
|
|
15
10
|
<Diagram id="doc-block-16rgm92" title={"El bucle aplicación-agente es la puerta de entrada"} summary={"Muchos puntos de entrada llegan a un bucle de agente sobre SQL-backed acciones y estado; los resultados regresan al lugar de donde vino la solicitud. La interfaz de usuario se agrega solo cuando los humanos necesitan supervisar."}>
|
|
16
11
|
|
|
@@ -7,7 +7,7 @@ description: "Una aplicación nativa de agente mínima que prioriza el chat: hil
|
|
|
7
7
|
|
|
8
8
|
El chat es el punto de partida básico de la aplicación nativa del agente. Le brinda un shell limpio estilo ChatGPT con chat en el centro, una lista de hilos a la izquierda, navegación de aplicaciones estándar, autenticación, sincronización en vivo, actions y una acción de ejemplo. Comience aquí cuando desee una aplicación de navegador real que pueda desarrollar sin comprometerse con una plantilla de dominio.
|
|
9
9
|
|
|
10
|
-
Si desea
|
|
10
|
+
Si desea un runtime automation-first sin navegador UI, comience con [Automation-First Apps](/docs/pure-agent-apps). Si desea una forma de producto de dominio terminada, comience con [Calendar](/docs/template-calendar), [Mail](/docs/template-mail), [Content](/docs/template-content), [Forms](/docs/template-forms), [Analytics](/docs/template-analytics) u otra plantilla de dominio.
|
|
11
11
|
|
|
12
12
|
<WireframeBlock id="doc-block-1yw4lnu">
|
|
13
13
|
<Screen
|
|
@@ -200,4 +200,4 @@ El agente debe agregar un esquema Drizzle, actions, ruta, navegación e instrucc
|
|
|
200
200
|
- [**Agent Surfaces**](/docs/agent-surfaces): patrones headless, chat, integrados y de aplicación completa
|
|
201
201
|
- [**Actions**](/docs/actions): el chat del sistema de acción y UI llaman
|
|
202
202
|
- [**Native Interfaz de chat**](/docs/native-chat-ui): primitivas de la superficie de chat y opciones de tiempo de ejecución
|
|
203
|
-
- [**
|
|
203
|
+
- [**Automation-First Apps**](/docs/pure-agent-apps): automatizaciones, colas, scripts y workflows de agents externos sin UI de navegador
|
|
@@ -99,7 +99,7 @@ El agente no es una aplicación independiente a la que puedes acceder. Se envía
|
|
|
99
99
|
|
|
100
100
|
No todas las aplicaciones necesitan un panel completo. Cuando el agente _es_ el producto, puede omitir la mayor parte del UI personalizado: abra la aplicación, solicite lo que desee y deje que el agente haga el resto. El agente todavía tiene su superficie de administración (historial, espacio de trabajo, configuración), pero la interacción principal es la conversación en lugar de los clics.
|
|
101
101
|
|
|
102
|
-
→ [**
|
|
102
|
+
→ [**Automation-First Apps**](/docs/pure-agent-apps): apps sin navegador para jobs, colas, scripts y agents externos.
|
|
103
103
|
|
|
104
104
|
## Coeditas con él {#you-co-edit}
|
|
105
105
|
|
|
@@ -113,5 +113,5 @@ Cuando usted y el agente trabajan en el mismo documento, no se turnan. Con la co
|
|
|
113
113
|
- [**Agent Mentions**](/docs/agent-mentions): dirígelo con menciones `@`
|
|
114
114
|
- [**Voice Input**](/docs/voice-input): dirígelo hablando
|
|
115
115
|
- [**Drop-in Agent**](/docs/drop-in-agent): incrustarlo en cualquier aplicación React
|
|
116
|
-
- [**
|
|
116
|
+
- [**Automation-First Apps**](/docs/pure-agent-apps): apps sin navegador para jobs, colas, scripts y agents externos
|
|
117
117
|
- [**Real-Time Collaboration**](/docs/real-time-collaboration): coeditar el mismo documento juntos
|
|
@@ -30,7 +30,7 @@ Chacune est une véritable application que vous pouvez utiliser aujourd'hui, et
|
|
|
30
30
|
| [**Plan**](/docs/template-plan) | Plans visuels et récapitulatifs des relations publiques avec diagrammes, wireframes et annotations. |
|
|
31
31
|
| [**Dispatch**](/docs/template-dispatch) | Le plan de contrôle de l'espace de travail : secrets partagés, intégrations réutilisables, Slack/Telegram, tâches planifiées. |
|
|
32
32
|
|
|
33
|
-
Vous ne voulez pas d'application de domaine ? Utilisez [Chat](/docs/template-chat) lorsque vous souhaitez une application de base avec laquelle les utilisateurs peuvent parler immédiatement,
|
|
33
|
+
Vous ne voulez pas d'application de domaine ? Utilisez [Chat](/docs/template-chat) lorsque vous souhaitez une application de base avec laquelle les utilisateurs peuvent parler immédiatement et que vous pouvez étendre avec des actions, des résultats natifs et des écrans. Utilisez [Automation-First Apps](/docs/pure-agent-apps) seulement lorsque le workflow n'a pas encore besoin d'UI navigateur.
|
|
34
34
|
|
|
35
35
|
Consultez le catalogue complet sous [Apps](/apps) ou passez directement à l'un d'entre eux. Par exemple, [Dispatch](/docs/template-dispatch) est un excellent point de départ si vous souhaitez une application de style espace de travail.
|
|
36
36
|
|
|
@@ -182,7 +182,7 @@ Si vous créez un échafaudage maintenant, la commande CLI est :
|
|
|
182
182
|
npx @agent-native/core@latest create my-platform
|
|
183
183
|
```
|
|
184
184
|
|
|
185
|
-
Vous obtiendrez un sélecteur à sélection multiple. Choisissez une application (autonome) ou plusieurs (espace de travail : les applications partagent l'authentification, la marque, la configuration de l'agent et la base de données). Chaque modèle sélectionné est intégré dans `apps/<name>/` avec chaque fichier dont vous avez besoin. Pour une
|
|
185
|
+
Vous obtiendrez un sélecteur à sélection multiple. Choisissez une application (autonome) ou plusieurs (espace de travail : les applications partagent l'authentification, la marque, la configuration de l'agent et la base de données). Chaque modèle sélectionné est intégré dans `apps/<name>/` avec chaque fichier dont vous avez besoin. Pour une automation sans UI navigateur au lieu d'un modèle UI, utilisez `npx @agent-native/core@latest create my-agent --headless`.
|
|
186
186
|
|
|
187
187
|
Remplissez `.env` (principalement `ANTHROPIC_API_KEY` et `DATABASE_URL`), `pnpm install`, `pnpm dev`, et cela fonctionne. Pas de "TODO : implémenter la connexion", pas de routes d'espace réservé.
|
|
188
188
|
|
|
@@ -11,15 +11,15 @@ Questions courantes sur les agents natifs, organisées de "Je cherche juste" à
|
|
|
11
11
|
|
|
12
12
|
### Qu'est-ce que l'agent natif ? {#what-is-agent-native}
|
|
13
13
|
|
|
14
|
-
Agent-native est un cadre permettant de créer des applications dans lesquelles l'agent IA et le produit qui l'entoure sont des partenaires égaux.
|
|
14
|
+
Agent-native est un cadre permettant de créer des applications dans lesquelles l'agent IA et le produit qui l'entoure sont des partenaires égaux. Le chemin courant commence par le chat, ajoute des actions typées, rend des résultats structurés en ligne, puis grandit vers des pages durables autour du même état SQL. L'invariant est que les agents et les humains partagent le même actions, la même base de données et le même état. Voir [What Is Agent-Native?](/docs/what-is-agent-native) pour l'explication complète.
|
|
15
15
|
|
|
16
16
|
### À qui est-ce destiné ? {#who-is-this-for}
|
|
17
17
|
|
|
18
18
|
Agent-native est destiné aux personnes qui souhaitent qu'une véritable application et un agent IA fonctionnent à partir des mêmes données et actions. Les chemins courants sont :
|
|
19
19
|
|
|
20
20
|
- **Utilisez une application hébergée** si vous souhaitez recevoir un courrier, un calendrier, des formulaires, un plan ou un autre modèle fini sans configuration – commencez par le [template gallery](/templates).
|
|
21
|
-
- **Commencez avec Chat** si vous souhaitez
|
|
22
|
-
- **
|
|
21
|
+
- **Commencez avec Chat** si vous souhaitez le chemin par défaut depuis zéro : les utilisateurs parlent immédiatement à l'agent, puis vous étendez avec actions, résultats natifs et écrans – commencez par [Getting Started](/docs/getting-started) ou [Chat](/docs/template-chat).
|
|
22
|
+
- **Commencez automation-first** si vous créez des tâches planifiées, files, scripts, integration workers ou workflows d'agents externes sans UI navigateur pour le moment — commencez par [Automation-First Apps](/docs/pure-agent-apps).
|
|
23
23
|
- ** Créez et personnalisez un modèle ** si vous souhaitez créer votre propre produit SaaS avec authentification, base de données, UI et agent actions déjà câblés – voir [Templates](/docs/cloneable-saas).
|
|
24
24
|
- **Construisez à partir de zéro** si vous souhaitez les primitives de structure pour un nouveau produit piloté par agent : commencez par [Getting Started](/docs/getting-started).
|
|
25
25
|
- **Connectez un autre agent ou un autre outil de code** si vous souhaitez que Claude, ChatGPT, Codex, Cursor ou GitHub Copilot / VS Code utilisent une application native d'agent – voir [External Agents](/docs/external-agents) et [Skills Guide](/docs/skills-guide).
|
|
@@ -130,7 +130,7 @@ C'est là tout l'intérêt. Créez un modèle et personnalisez-le en le demandan
|
|
|
130
130
|
|
|
131
131
|
### Puis-je créer quelque chose que les modèles ne couvrent pas ? {#build-from-scratch}
|
|
132
132
|
|
|
133
|
-
Oui. Si vous souhaitez une
|
|
133
|
+
Oui. Si vous souhaitez une app agentic de base, exécutez `npx @agent-native/core@latest create my-chat-app --template chat` ; vous bénéficiez de fils de discussion durables, de actions, d'une authentification, d'un état d'exécution soutenu par SQL, d'un rendu natif en ligne et d'un espace pour ajouter vos propres écrans. Si vous créez une automation sans navigateur, exécutez `npx @agent-native/core@latest create my-agent --headless`. Voir [Getting Started](/docs/getting-started), [Automation-First Apps](/docs/pure-agent-apps) et [Chat](/docs/template-chat).
|
|
134
134
|
|
|
135
135
|
### Puis-je l'essayer sans créer de modèle ? {#try-with-a-skill}
|
|
136
136
|
|