@agent-native/core 0.61.0 → 0.62.1

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 (74) hide show
  1. package/dist/agent/engine/translate-anthropic.d.ts.map +1 -1
  2. package/dist/agent/engine/translate-anthropic.js +47 -1
  3. package/dist/agent/engine/translate-anthropic.js.map +1 -1
  4. package/dist/agent-native/index.d.ts +40 -0
  5. package/dist/agent-native/index.d.ts.map +1 -0
  6. package/dist/agent-native/index.js +100 -0
  7. package/dist/agent-native/index.js.map +1 -0
  8. package/dist/cli/templates-meta.d.ts.map +1 -1
  9. package/dist/cli/templates-meta.js +1 -0
  10. package/dist/cli/templates-meta.js.map +1 -1
  11. package/dist/client/analytics.d.ts.map +1 -1
  12. package/dist/client/analytics.js +30 -0
  13. package/dist/client/analytics.js.map +1 -1
  14. package/dist/client/blocks/SchemaBlockEditor.d.ts.map +1 -1
  15. package/dist/client/blocks/SchemaBlockEditor.js +2 -1
  16. package/dist/client/blocks/SchemaBlockEditor.js.map +1 -1
  17. package/dist/client/blocks/code-block-direction.d.ts +21 -0
  18. package/dist/client/blocks/code-block-direction.d.ts.map +1 -0
  19. package/dist/client/blocks/code-block-direction.js +20 -0
  20. package/dist/client/blocks/code-block-direction.js.map +1 -0
  21. package/dist/client/blocks/library/AnnotatedCodeBlock.d.ts.map +1 -1
  22. package/dist/client/blocks/library/AnnotatedCodeBlock.js +2 -1
  23. package/dist/client/blocks/library/AnnotatedCodeBlock.js.map +1 -1
  24. package/dist/client/blocks/library/ApiEndpointBlock.d.ts.map +1 -1
  25. package/dist/client/blocks/library/ApiEndpointBlock.js +2 -1
  26. package/dist/client/blocks/library/ApiEndpointBlock.js.map +1 -1
  27. package/dist/client/blocks/library/DataModelBlock.d.ts.map +1 -1
  28. package/dist/client/blocks/library/DataModelBlock.js +2 -1
  29. package/dist/client/blocks/library/DataModelBlock.js.map +1 -1
  30. package/dist/client/blocks/library/DiffBlock.d.ts.map +1 -1
  31. package/dist/client/blocks/library/DiffBlock.js +2 -1
  32. package/dist/client/blocks/library/DiffBlock.js.map +1 -1
  33. package/dist/client/blocks/library/FileTreeBlock.d.ts.map +1 -1
  34. package/dist/client/blocks/library/FileTreeBlock.js +2 -1
  35. package/dist/client/blocks/library/FileTreeBlock.js.map +1 -1
  36. package/dist/client/blocks/library/HighlightedCode.d.ts.map +1 -1
  37. package/dist/client/blocks/library/HighlightedCode.js +2 -1
  38. package/dist/client/blocks/library/HighlightedCode.js.map +1 -1
  39. package/dist/client/blocks/library/JsonExplorerBlock.d.ts.map +1 -1
  40. package/dist/client/blocks/library/JsonExplorerBlock.js +2 -1
  41. package/dist/client/blocks/library/JsonExplorerBlock.js.map +1 -1
  42. package/dist/client/blocks/library/MermaidBlock.d.ts.map +1 -1
  43. package/dist/client/blocks/library/MermaidBlock.js +2 -1
  44. package/dist/client/blocks/library/MermaidBlock.js.map +1 -1
  45. package/dist/client/blocks/library/OpenApiSpecBlock.d.ts.map +1 -1
  46. package/dist/client/blocks/library/OpenApiSpecBlock.js +2 -1
  47. package/dist/client/blocks/library/OpenApiSpecBlock.js.map +1 -1
  48. package/dist/client/blocks/library/annotation-rail.d.ts.map +1 -1
  49. package/dist/client/blocks/library/annotation-rail.js +2 -1
  50. package/dist/client/blocks/library/annotation-rail.js.map +1 -1
  51. package/dist/client/blocks/library/code-tabs.d.ts.map +1 -1
  52. package/dist/client/blocks/library/code-tabs.js +2 -1
  53. package/dist/client/blocks/library/code-tabs.js.map +1 -1
  54. package/dist/client/blocks/library/code.d.ts.map +1 -1
  55. package/dist/client/blocks/library/code.js +3 -2
  56. package/dist/client/blocks/library/code.js.map +1 -1
  57. package/dist/client/blocks/library/diagram.d.ts.map +1 -1
  58. package/dist/client/blocks/library/diagram.js +2 -1
  59. package/dist/client/blocks/library/diagram.js.map +1 -1
  60. package/dist/client/blocks/library/wireframe.d.ts.map +1 -1
  61. package/dist/client/blocks/library/wireframe.js +2 -1
  62. package/dist/client/blocks/library/wireframe.js.map +1 -1
  63. package/dist/db/client.d.ts +3 -3
  64. package/dist/db/client.d.ts.map +1 -1
  65. package/dist/db/client.js +8 -4
  66. package/dist/db/client.js.map +1 -1
  67. package/dist/templates/workspace-core/.agents/skills/composable-mini-apps/SKILL.md +26 -0
  68. package/docs/content/a2a-protocol.md +28 -0
  69. package/docs/content/agent-surfaces.md +12 -4
  70. package/docs/content/getting-started.md +136 -37
  71. package/docs/content/pure-agent-apps.md +25 -9
  72. package/docs/content/template-dispatch.md +4 -0
  73. package/package.json +5 -1
  74. package/src/templates/workspace-core/.agents/skills/composable-mini-apps/SKILL.md +26 -0
@@ -1,30 +1,42 @@
1
1
  ---
2
2
  title: "Getting Started"
3
- description: "Create a chat-first agent-native app, or start headless with one action and add UI later."
3
+ description: "Start with one headless action, or start with Chat when the conversation UI is the product."
4
4
  ---
5
5
 
6
6
  # Getting Started
7
7
 
8
- Agent-Native is for apps where an AI agent and any UI around it share the same actions, data, and state. The default starting point is the [Chat template](/docs/template-chat): a minimal chat app with durable threads, a left sidebar, auth, live sync, and actions ready to extend.
8
+ Agent-Native is for apps where an AI agent and any UI around it share the same
9
+ actions, data, and state. The smallest useful app can be just one action. The
10
+ first useful UI can be Chat. Both paths use the same runtime, so you can move
11
+ between them without rewriting the operation the agent calls.
9
12
 
10
- Start with Chat when you want a browser app users can talk to immediately. Start headless when you only want actions and the local app-agent loop for now.
13
+ Choose the first path that matches what you want to prove:
11
14
 
12
- If you already know you want a finished domain app, go to [Templates](/docs/cloneable-saas). If you are choosing between headless, chat, embedded, or full app, go to [Agent Surfaces](/docs/agent-surfaces). Otherwise, keep going.
15
+ | Path | Pick it when | Creates |
16
+ | ------------------- | --------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------- |
17
+ | **Headless action** | You want the primitive first: one local action, the app-agent loop, CLI/HTTP/MCP/A2A, and no custom screen yet. | `actions/`, `.agents/`, runtime config, local SQLite state |
18
+ | **Chat app** | You want a browser app users can talk to immediately, with durable threads and tool-call UI. | Everything above, plus the Chat route, sidebar, auth, and live sync |
13
19
 
14
- ## Create a chat app {#create-your-agent}
20
+ If you already know you want a finished domain app, go to
21
+ [Templates](/docs/cloneable-saas). If you are choosing between headless, chat,
22
+ embedded, or full app surfaces, go to [Agent Surfaces](/docs/agent-surfaces).
15
23
 
16
- You'll need [Node.js 22 or newer](https://nodejs.org) and [pnpm](https://pnpm.io) installed. Then run:
24
+ ## Path 1: One headless action {#headless-action}
25
+
26
+ You'll need [Node.js 22 or newer](https://nodejs.org) and
27
+ [pnpm](https://pnpm.io) installed. Then run:
17
28
 
18
29
  ```bash
19
- npx @agent-native/core@latest create my-chat-app --template chat
20
- cd my-chat-app
30
+ npx @agent-native/core@latest create my-agent --headless
31
+ cd my-agent
21
32
  pnpm install
22
- pnpm dev
33
+ pnpm action hello --name Steve
34
+ pnpm agent "Call the hello action for Steve and explain what happened."
23
35
  ```
24
36
 
25
- This creates the minimal Chat app: a full-page chat route, durable chat threads, the standard left sidebar, an `actions/` folder, the framework runtime, and a SQLite database at `data/app.db` unless you set `DATABASE_URL`.
26
-
27
- Open the local URL, then ask the chat what actions are available. The scaffold includes one example action:
37
+ That is the primitive-first on-ramp: one action, no app screen, and the same
38
+ production app-agent loop used by chat, jobs, webhooks, and hosted runtimes.
39
+ The scaffold includes one example action:
28
40
 
29
41
  ```ts
30
42
  // actions/hello.ts
@@ -44,7 +56,33 @@ export default defineAction({
44
56
  });
45
57
  ```
46
58
 
47
- Run that action directly:
59
+ Replace `hello` with the smallest real operation in your domain. That one
60
+ operation is then callable through the CLI, HTTP, MCP, A2A, scheduled jobs,
61
+ integration webhooks, and any future UI.
62
+
63
+ Headless does not mean stateless. Actions, auth/session data, application
64
+ state, threads, run history, credentials, and share records use SQL. Locally
65
+ that defaults to SQLite at `data/app.db`; in production you will usually set
66
+ `DATABASE_URL`. See [Deployment](/docs/deployment).
67
+
68
+ ## Path 2: Chat app {#chat-app}
69
+
70
+ Use Chat when the first thing users need is a conversation UI with durable
71
+ threads and visible tool calls:
72
+
73
+ ```bash
74
+ npx @agent-native/core@latest create my-chat-app --template chat
75
+ cd my-chat-app
76
+ pnpm install
77
+ pnpm dev
78
+ ```
79
+
80
+ Open the local URL, then ask the chat what actions are available. The Chat
81
+ template includes the same `actions/hello.ts` shape as the headless scaffold,
82
+ plus a full-page chat route, the standard left sidebar, auth, live sync, and a
83
+ SQLite database at `data/app.db` unless you set `DATABASE_URL`.
84
+
85
+ Run the example action directly:
48
86
 
49
87
  ```bash
50
88
  pnpm action hello --name Steve
@@ -56,35 +94,83 @@ Then run the same app-agent loop from the terminal:
56
94
  pnpm agent "Call the hello action for Steve and explain what happened."
57
95
  ```
58
96
 
59
- That is the local app-agent loop. The chat UI, CLI, HTTP, MCP, A2A, jobs, and future screens can all call the same action surface.
97
+ The chat UI, CLI, HTTP, MCP, A2A, jobs, and future screens all call the same
98
+ action surface.
99
+
100
+ ## Move between paths {#move-between-paths}
101
+
102
+ Headless and Chat are not separate products. Start headless when you want the
103
+ operation first. Add Chat when a durable conversation UI helps users inspect,
104
+ approve, or continue the work. Start with Chat when the conversation itself is
105
+ the main workflow, then add screens only where structured UI clarifies the job.
106
+
107
+ For a deeper comparison, see [Agent Surfaces](/docs/agent-surfaces). For the
108
+ Chat template reference, see [Chat template](/docs/template-chat).
109
+
110
+ ## Run against a connected repo {#connected-repo}
60
111
 
61
- ## Start headless instead {#headless}
112
+ For a cloud headless app that works on repository files, connect GitHub through
113
+ the connector/token model rather than cloning a long-lived sandbox checkout.
114
+ The agent can list, search, read, create, update, and delete repository files
115
+ through provider-scoped credentials.
62
116
 
63
- Use headless mode when you want no browser app yet:
117
+ In local development, use the same shape with explicit environment variables:
64
118
 
65
119
  ```bash
66
- npx @agent-native/core@latest create my-agent --headless
67
- cd my-agent
68
- pnpm install
69
- pnpm action hello --name Steve
70
- pnpm agent "Call the hello action for Steve and explain what happened."
120
+ GITHUB_REPOSITORY=owner/repo pnpm agent "Read README.md and suggest the next action."
71
121
  ```
72
122
 
73
- This creates the smallest local Agent-Native runtime: an `actions/` folder, instructions, the framework runtime, and SQL state. Later, add chat by starting from the [Chat template](/docs/template-chat) and moving your actions in, or by copying the Chat template's route/sidebar pattern into the headless app.
123
+ The repo becomes context for the app-agent loop and `agent-native invoke`
124
+ calls. This path is for repository CRUD over the GitHub API. Use a sandbox or
125
+ Fusion-style code runtime only when you need true isolated code execution.
126
+
127
+ ## Compose mini-apps {#compose-mini-apps}
128
+
129
+ Workspaces often become easier to reason about as several focused apps instead
130
+ of one giant app. A `hubspot-pipeline` app can own CRM access, a
131
+ `gong-evidence` app can own transcripts, and a `deal-brief` app can call both
132
+ through A2A.
133
+
134
+ From the CLI:
135
+
136
+ ```bash
137
+ pnpm agent-native agents list
138
+ pnpm agent-native invoke gong-evidence "Find transcript evidence for deal_123."
139
+ ```
140
+
141
+ From TypeScript:
142
+
143
+ ```ts
144
+ import { agentNative } from "@agent-native/core/agent-native";
145
+
146
+ const agents = await agentNative.listAgents();
147
+ const result = await agentNative.invoke(
148
+ "gong-evidence",
149
+ "Find transcript evidence for deal_123.",
150
+ { userEmail: "steve@example.com" },
151
+ );
152
+ ```
74
153
 
75
- ### Agent credentials {#agent-credentials}
154
+ For production agent-native apps, set `A2A_SECRET` in each app environment and
155
+ pass the caller identity (`userEmail`) so outbound calls are signed. Use
156
+ `apiKeyEnv` only for legacy external peers that expect a static bearer token.
76
157
 
77
- In local development the agent command reads provider credentials from your environment, such as `ANTHROPIC_API_KEY` in a `.env` file in the project root. Browser chat surfaces can also use configured agent credentials. The full loop is not stateless: actions, auth/session data, application state, threads, and run history use SQL. Locally that defaults to SQLite; in production you will usually point `DATABASE_URL` at Postgres or another persistent SQL database. See [Deployment](/docs/deployment).
158
+ See [A2A Protocol](/docs/a2a-protocol) and
159
+ [Pure Agent Apps](/docs/pure-agent-apps) for the full pattern.
78
160
 
79
161
  ## What just happened? {#what-just-happened}
80
162
 
81
163
  You now have a real app-agent loop:
82
164
 
83
- - `hello` is one action definition, available to the agent, CLI, HTTP, MCP, A2A, and any future UI.
84
- - `pnpm agent` calls the same production app-agent loop used by chat, jobs, webhooks, and hosted runtimes.
85
- - Changes and history stay in sync because the local runtime uses SQL-backed state, even when you have no custom UI yet.
165
+ - `hello` is one action definition, available to the agent, CLI, HTTP, MCP,
166
+ A2A, and any future UI.
167
+ - `pnpm agent` calls the production app-agent loop, not an external coding
168
+ harness.
169
+ - Changes and history stay in sync because the runtime uses SQL-backed state,
170
+ even when you have no custom UI yet.
86
171
 
87
- That parity between agent and UI is the whole point. See [What Is Agent-Native?](/docs/what-is-agent-native) for the bigger picture.
172
+ That parity between agent and UI is the whole point. See
173
+ [What Is Agent-Native?](/docs/what-is-agent-native) for the bigger picture.
88
174
 
89
175
  ## Project structure {#project-structure}
90
176
 
@@ -99,21 +185,34 @@ my-app/
99
185
  data/app.db # Local SQLite runtime state when DATABASE_URL is unset
100
186
  ```
101
187
 
102
- Templates add domain-specific code on top: database schemas in `server/db/`, API routes in `server/routes/api/`, and actions in `actions/`. See [Creating Templates](/docs/creating-templates) when you are ready to build or publish a reusable template.
188
+ Templates add domain-specific code on top: database schemas in `server/db/`,
189
+ API routes in `server/routes/api/`, and actions in `actions/`. See
190
+ [Creating Templates](/docs/creating-templates) when you are ready to build or
191
+ publish a reusable template.
103
192
 
104
193
  ## Common next moves {#next-docs}
105
194
 
106
195
  Once your agent is running, the usual next step is small and concrete:
107
196
 
108
- - **Ask the built-in agent what it can do** open Chat and type "what actions do you have, and what can you do here?" This verifies that the app-agent loop is connected.
109
- - **Add one real action** — replace `hello` with the smallest useful operation in your domain.
110
- - **Add UI only when it clarifies the work** — use [Agent Surfaces](/docs/agent-surfaces) to choose between headless, chat, embedded, and full-app surfaces.
111
- - **Deploy it** — see [Deployment](/docs/deployment) when you're ready to put the app on your own domain.
197
+ - **Add one real action** - replace `hello` with the smallest useful operation
198
+ in your domain.
199
+ - **Open Chat when conversation helps** - ask "what actions do you have, and
200
+ what can you do here?"
201
+ - **Connect a repo** - give the app-agent loop explicit GitHub repository
202
+ context when file CRUD is the job.
203
+ - **Compose siblings** - split provider-heavy workflows into focused mini-apps
204
+ and invoke them over A2A.
205
+ - **Deploy it** - see [Deployment](/docs/deployment) when you're ready to put
206
+ the app on your own domain.
112
207
 
113
208
  Useful follow-up docs:
114
209
 
115
- - [Key Concepts](/docs/key-concepts) for the architecture: SQL, actions, polling sync, and context awareness
116
- - [Agent Surfaces](/docs/agent-surfaces) for choosing headless, rich chat, embedded sidecar, or full app
117
- - [Workspace](/docs/workspace) for instructions, skills, memory, and per-user MCP connections
118
- - [Messaging](/docs/messaging) for Slack, email, Telegram, and other ways to reach the agent
210
+ - [Key Concepts](/docs/key-concepts) for the architecture: SQL, actions,
211
+ polling sync, and context awareness
212
+ - [Agent Surfaces](/docs/agent-surfaces) for choosing headless, rich chat,
213
+ embedded, and full-app surfaces
214
+ - [Workspace](/docs/workspace) for instructions, skills, memory, and per-user
215
+ MCP connections
216
+ - [Messaging](/docs/messaging) for Slack, email, Telegram, and other ways to
217
+ reach the agent
119
218
  - [FAQ](/docs/faq) for setup and product questions
@@ -5,9 +5,19 @@ description: "Apps where the first product surface is the app-agent loop: define
5
5
 
6
6
  # Pure-Agent Apps
7
7
 
8
- This is the minimal end of agent-native: an app whose first user-facing surface is the agent loop, not a dashboard. For the full-UI end, start from a [template](/docs/cloneable-saas). If you are choosing between headless, chat-first, embedded, and full-app shapes, start with [Agent Surfaces](/docs/agent-surfaces).
9
-
10
- Imagine opening an app and seeing just a chat. No dashboard. No sidebar full of menus. No forms. You ask for what you want - "summarize my unread emails," "post the daily metrics to Slack," "find the candidates who replied last week" - and the agent goes off and does it. The output shows up in chat, in Slack, in your inbox, wherever it belongs.
8
+ This is the minimal end of agent-native: an app whose first product surface is
9
+ the agent loop, not a dashboard. That loop can start headlessly from CLI, jobs,
10
+ webhooks, Slack, email, or A2A. Add Chat when a human-facing conversation UI is
11
+ the right way to inspect and steer the work. For the full-UI end, start from a
12
+ [template](/docs/cloneable-saas). If you are choosing between headless, chat,
13
+ embedded, and full-app shapes, start with [Agent Surfaces](/docs/agent-surfaces).
14
+
15
+ Imagine starting with one action and the app-agent loop. No dashboard. No
16
+ sidebar full of menus. No forms. You ask for what you want from the terminal,
17
+ from Slack, from email, from a scheduled job, from another agent, or from Chat -
18
+ "summarize my unread emails," "post the daily metrics to Slack," "find the
19
+ candidates who replied last week" - and the agent goes off and does it. The
20
+ output shows up in the channel that asked, wherever it belongs.
11
21
 
12
22
  That's a pure-agent app. The agent _is_ the product.
13
23
 
@@ -17,7 +27,12 @@ It is still an app, not a stateless prompt. Actions, auth sessions, app state, t
17
27
 
18
28
  Most apps are built around a UI: a database table you browse, a form you fill, a chart you read. The agent is a sidekick.
19
29
 
20
- In a pure-agent app, that's flipped. The chat is the front door. You type a request; the agent takes action; you see the result. Everything else — settings, history, what's currently running — is one click away, but most of the time you don't need it.
30
+ In a pure-agent app, that's flipped. The agent loop is the front door. You type
31
+ or send a request; the agent takes action; you see the result. Chat can be the
32
+ browser front door, but headless apps can also start from CLI, jobs, webhooks,
33
+ or A2A. Everything else - settings, history, what's currently running - is
34
+ available when you need it, but most of the time you do not need a custom
35
+ dashboard.
21
36
 
22
37
  Examples of where this works really well:
23
38
 
@@ -39,9 +54,10 @@ Pick the pure-agent pattern when:
39
54
 
40
55
  If your product is built around persistent objects users browse, pivot, and share - emails, events, documents, charts - pick a [template](/docs/cloneable-saas) instead. Those have full UIs _plus_ the agent.
41
56
 
42
- ## What ships in the box {#minimum-ui}
57
+ ## What ships in the box when you add Chat {#minimum-ui}
43
58
 
44
- Every pure-agent app gets five built-in surfaces, all provided by the framework — you don't build them:
59
+ When you add the built-in Chat shell, a pure-agent app gets five built-in
60
+ surfaces, all provided by the framework - you don't build them:
45
61
 
46
62
  1. **Chat** — the main input. Users talk to the agent, steer it, queue tasks.
47
63
  2. **Workspace** — skills, memory, instructions, custom sub-agents, connected MCP servers, scheduled jobs. Customize the agent's behavior without shipping code.
@@ -96,9 +112,9 @@ Future UI-grafting tooling should use a distinct verb or namespace. `agent-nativ
96
112
  ## Repo access for cloud headless {#repo-access}
97
113
 
98
114
  Local headless apps run against the folder on your machine. For cloud headless
99
- apps that need repository access, the intended model is connector-scoped access:
100
- a GitHub connector and token CRUD that can list repositories, search files, read
101
- files, create or edit files, and delete files with the user's permission.
115
+ apps that need repository access, use connector-scoped access: a GitHub
116
+ connector and token CRUD that can list repositories, search files, read files,
117
+ create or edit files, and delete files with the user's permission.
102
118
 
103
119
  Do not design this as "clone the user's repo into our VM" or "give the agent a long-lived sandbox copy of the repo" as the primary model. Sandboxes are useful for isolated code execution, but repo access should be a provider integration with explicit tokens, scoped permissions, auditability, and revocation.
104
120
 
@@ -25,6 +25,7 @@ If you're running an [multi-app workspace](/docs/multi-app-workspace) with many
25
25
 
26
26
  - **Central inbox.** Slack DMs, Telegram messages, email notifications, A2A requests from other agents — all land in one place. The Dispatch agent triages and either handles them itself or delegates. See [Messaging](/docs/messaging) for how to wire Slack, email, and Telegram into your workspace.
27
27
  - **Orchestrator, not specialist.** Dispatch does _not_ try to be the email app or the analytics app. When someone asks "summarize last week's signups," Dispatch calls the analytics agent over A2A and returns the answer. When someone asks "draft a reply to Alice," Dispatch calls the mail agent.
28
+ - **Control-plane shell.** Chats, projects, runs, workspace apps, agents, and automations live in one operational shell, with status-first lists and drill-downs instead of one-off dashboards.
28
29
  - **Secrets vault.** A central store for API keys, OAuth tokens, and shared credentials. Apps in the workspace resolve secrets from Dispatch instead of duplicating them in every `.env`. Requests + approvals for sensitive access.
29
30
  - **Workspace resources.** Global skills, guardrail instructions, custom agent profiles, reference resources, and HTTP MCP servers can be created once in Dispatch. All-app resources are inherited at runtime by every app with no copy or manual sync step; selected grants are for app-specific exceptions.
30
31
  - **Reusable integrations.** One place to connect provider accounts, track
@@ -63,6 +64,9 @@ Day-to-day, Dispatch is the place admins and ops folks open to keep the workspac
63
64
  Codex, Cursor, or another MCP host, then choose which workspace apps the
64
65
  connector can reach from Dispatch's **Agents** page. Use a direct app URL
65
66
  only when that host should be isolated to one app.
67
+ - **Manage automations.** The Automations view shows enabled state, last run,
68
+ next run, and last error from the underlying `jobs/*.md` schedules, and lets
69
+ you enable or disable a job without editing files by hand.
66
70
  - **Keep company context global.** Put personas, positioning, messaging, company facts, brand guidelines, and guardrails in Dispatch Resources once, then preview the effective workspace -> app/org -> personal stack for any app/user or inspect the stack from an app card's Context view.
67
71
  - **Set up recurring jobs.** "Every Monday at 7am, ask the analytics agent for last week's signups and email me a summary." See [Recurring Jobs](/docs/recurring-jobs).
68
72
  - **Review dream proposals.** Dispatch Dreams inspect prior agent runs and create source-backed proposals for what the workspace should remember, which stale notes should be cleaned up, and which repeated lessons should become skills or jobs.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-native/core",
3
- "version": "0.61.0",
3
+ "version": "0.62.1",
4
4
  "type": "module",
5
5
  "engines": {
6
6
  "node": ">=22"
@@ -46,6 +46,10 @@
46
46
  "types": "./dist/action-ui.d.ts",
47
47
  "default": "./dist/action-ui.js"
48
48
  },
49
+ "./agent-native": {
50
+ "types": "./dist/agent-native/index.d.ts",
51
+ "default": "./dist/agent-native/index.js"
52
+ },
49
53
  "./agent-web": "./dist/agent-web/index.js",
50
54
  "./db": "./dist/db/index.js",
51
55
  "./db/schema": "./dist/db/schema.js",
@@ -45,6 +45,32 @@ The main agent should discover available siblings before assuming capability:
45
45
  Send narrow prompts to siblings: name the exact question, relevant ids, date
46
46
  ranges, and expected output shape. Preserve returned ids and URLs verbatim.
47
47
 
48
+ ## Artifact Handoff
49
+
50
+ Mini-apps should hand off compact artifacts, not giant pasted transcripts or
51
+ provider dumps. When a mini-app creates something another app may use, return
52
+ or store an artifact with:
53
+
54
+ - `artifactType` - what kind of output this is, such as `deal-set`,
55
+ `call-evidence`, `brief`, `dashboard`, or `report`.
56
+ - `artifactId` - the stable app-owned id, file path, or resource id.
57
+ - `createdAt` - an ISO timestamp.
58
+ - `source` - provider/app/source ids used to create it.
59
+ - `summary` - a short human-readable explanation.
60
+ - `items` or `records` - the bounded structured data downstream apps need.
61
+ - `links` - fully qualified URLs for user-visible artifacts.
62
+
63
+ Downstream apps should receive artifact ids, URLs, and narrow follow-up
64
+ questions. If a downstream app needs more detail, it should call back to the
65
+ artifact-owning app instead of asking the orchestrator to paste the whole
66
+ corpus into a prompt.
67
+
68
+ Example: `hubspot-pipeline` returns `{ artifactType: "deal-set",
69
+ artifactId: "hubspot-pipeline:deal-set:2026-06-18" }`. `deal-brief` passes
70
+ that id to `gong-evidence`, which returns a `call-evidence` artifact id and
71
+ URLs. `deal-brief` then synthesizes the final brief from the artifact ids and
72
+ bounded summaries.
73
+
48
74
  ## Provider APIs
49
75
 
50
76
  Provider-specific actions are shortcuts, not limits. When the upstream API can