@agent-native/core 0.59.0 → 0.60.0

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 (220) hide show
  1. package/dist/a2a/index.d.ts +2 -0
  2. package/dist/a2a/index.d.ts.map +1 -1
  3. package/dist/a2a/index.js +1 -0
  4. package/dist/a2a/index.js.map +1 -1
  5. package/dist/a2a/invoke.d.ts +63 -0
  6. package/dist/a2a/invoke.d.ts.map +1 -0
  7. package/dist/a2a/invoke.js +157 -0
  8. package/dist/a2a/invoke.js.map +1 -0
  9. package/dist/agent/run-store.d.ts +15 -0
  10. package/dist/agent/run-store.d.ts.map +1 -1
  11. package/dist/agent/run-store.js +28 -0
  12. package/dist/agent/run-store.js.map +1 -1
  13. package/dist/chat-threads/store.d.ts +21 -0
  14. package/dist/chat-threads/store.d.ts.map +1 -1
  15. package/dist/chat-threads/store.js +128 -0
  16. package/dist/chat-threads/store.js.map +1 -1
  17. package/dist/cli/agent.d.ts +23 -0
  18. package/dist/cli/agent.d.ts.map +1 -0
  19. package/dist/cli/agent.js +300 -0
  20. package/dist/cli/agent.js.map +1 -0
  21. package/dist/cli/agents.d.ts +14 -0
  22. package/dist/cli/agents.d.ts.map +1 -0
  23. package/dist/cli/agents.js +95 -0
  24. package/dist/cli/agents.js.map +1 -0
  25. package/dist/cli/code-agent-executor.d.ts.map +1 -1
  26. package/dist/cli/code-agent-executor.js +264 -2
  27. package/dist/cli/code-agent-executor.js.map +1 -1
  28. package/dist/cli/create.d.ts +3 -2
  29. package/dist/cli/create.d.ts.map +1 -1
  30. package/dist/cli/create.js +154 -83
  31. package/dist/cli/create.js.map +1 -1
  32. package/dist/cli/index.js +50 -2
  33. package/dist/cli/index.js.map +1 -1
  34. package/dist/cli/invoke.d.ts +26 -0
  35. package/dist/cli/invoke.d.ts.map +1 -0
  36. package/dist/cli/invoke.js +227 -0
  37. package/dist/cli/invoke.js.map +1 -0
  38. package/dist/cli/templates-meta.d.ts +1 -1
  39. package/dist/cli/templates-meta.d.ts.map +1 -1
  40. package/dist/cli/templates-meta.js +9 -8
  41. package/dist/cli/templates-meta.js.map +1 -1
  42. package/dist/cli/workspacify.d.ts +1 -1
  43. package/dist/cli/workspacify.d.ts.map +1 -1
  44. package/dist/cli/workspacify.js +6 -6
  45. package/dist/cli/workspacify.js.map +1 -1
  46. package/dist/client/AgentPanel.js +1 -1
  47. package/dist/client/AgentPanel.js.map +1 -1
  48. package/dist/client/AssistantChat.d.ts.map +1 -1
  49. package/dist/client/AssistantChat.js +8 -2
  50. package/dist/client/AssistantChat.js.map +1 -1
  51. package/dist/client/NewWorkspaceAppFlow.d.ts.map +1 -1
  52. package/dist/client/NewWorkspaceAppFlow.js +5 -4
  53. package/dist/client/NewWorkspaceAppFlow.js.map +1 -1
  54. package/dist/client/agent-chat-adapter.d.ts.map +1 -1
  55. package/dist/client/agent-chat-adapter.js +65 -12
  56. package/dist/client/agent-chat-adapter.js.map +1 -1
  57. package/dist/client/blocks/library/diagram.d.ts.map +1 -1
  58. package/dist/client/blocks/library/diagram.js +23 -17
  59. package/dist/client/blocks/library/diagram.js.map +1 -1
  60. package/dist/client/blocks/types.d.ts +2 -0
  61. package/dist/client/blocks/types.d.ts.map +1 -1
  62. package/dist/client/blocks/types.js.map +1 -1
  63. package/dist/client/chat/index.d.ts +1 -1
  64. package/dist/client/chat/index.d.ts.map +1 -1
  65. package/dist/client/chat/index.js.map +1 -1
  66. package/dist/client/extensions/ExtensionViewer.js +1 -1
  67. package/dist/client/extensions/ExtensionViewer.js.map +1 -1
  68. package/dist/client/index.d.ts +1 -1
  69. package/dist/client/index.d.ts.map +1 -1
  70. package/dist/client/index.js.map +1 -1
  71. package/dist/client/notifications/NotificationsBell.d.ts +3 -1
  72. package/dist/client/notifications/NotificationsBell.d.ts.map +1 -1
  73. package/dist/client/notifications/NotificationsBell.js +7 -3
  74. package/dist/client/notifications/NotificationsBell.js.map +1 -1
  75. package/dist/client/use-chat-threads.d.ts +13 -0
  76. package/dist/client/use-chat-threads.d.ts.map +1 -1
  77. package/dist/client/use-chat-threads.js +41 -0
  78. package/dist/client/use-chat-threads.js.map +1 -1
  79. package/dist/integrations/plugin.d.ts.map +1 -1
  80. package/dist/integrations/plugin.js +2 -2
  81. package/dist/integrations/plugin.js.map +1 -1
  82. package/dist/onboarding/default-steps.d.ts.map +1 -1
  83. package/dist/onboarding/default-steps.js +102 -0
  84. package/dist/onboarding/default-steps.js.map +1 -1
  85. package/dist/org/auto-join-domain.d.ts +11 -3
  86. package/dist/org/auto-join-domain.d.ts.map +1 -1
  87. package/dist/org/auto-join-domain.js +7 -6
  88. package/dist/org/auto-join-domain.js.map +1 -1
  89. package/dist/org/context.d.ts.map +1 -1
  90. package/dist/org/context.js +68 -32
  91. package/dist/org/context.js.map +1 -1
  92. package/dist/org/migrations.d.ts.map +1 -1
  93. package/dist/org/migrations.js +6 -0
  94. package/dist/org/migrations.js.map +1 -1
  95. package/dist/provider-api/actions/github-repo-files.d.ts +84 -0
  96. package/dist/provider-api/actions/github-repo-files.d.ts.map +1 -0
  97. package/dist/provider-api/actions/github-repo-files.js +213 -0
  98. package/dist/provider-api/actions/github-repo-files.js.map +1 -0
  99. package/dist/provider-api/github-repo.d.ts +11 -0
  100. package/dist/provider-api/github-repo.d.ts.map +1 -0
  101. package/dist/provider-api/github-repo.js +553 -0
  102. package/dist/provider-api/github-repo.js.map +1 -0
  103. package/dist/provider-api/index.d.ts +184 -11
  104. package/dist/provider-api/index.d.ts.map +1 -1
  105. package/dist/provider-api/index.js +519 -0
  106. package/dist/provider-api/index.js.map +1 -1
  107. package/dist/scripts/docs/search.d.ts.map +1 -1
  108. package/dist/scripts/docs/search.js +38 -13
  109. package/dist/scripts/docs/search.js.map +1 -1
  110. package/dist/secrets/register-framework-secrets.d.ts.map +1 -1
  111. package/dist/secrets/register-framework-secrets.js +11 -0
  112. package/dist/secrets/register-framework-secrets.js.map +1 -1
  113. package/dist/server/agent-chat-plugin.d.ts +32 -0
  114. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  115. package/dist/server/agent-chat-plugin.js +297 -2
  116. package/dist/server/agent-chat-plugin.js.map +1 -1
  117. package/dist/server/auth-marketing.d.ts.map +1 -1
  118. package/dist/server/auth-marketing.js +17 -7
  119. package/dist/server/auth-marketing.js.map +1 -1
  120. package/dist/server/auth.d.ts.map +1 -1
  121. package/dist/server/auth.js +6 -0
  122. package/dist/server/auth.js.map +1 -1
  123. package/dist/server/core-routes-plugin.d.ts.map +1 -1
  124. package/dist/server/core-routes-plugin.js +18 -98
  125. package/dist/server/core-routes-plugin.js.map +1 -1
  126. package/dist/styles/blocks.css +30 -8
  127. package/dist/styles/rich-markdown-editor.css +10 -4
  128. package/dist/templates/{starter-shell-sync.spec.ts → chat-shell-sync.spec.ts} +21 -21
  129. package/dist/templates/default/.agents/skills/actions/SKILL.md +5 -5
  130. package/dist/templates/default/.agents/skills/agent-native-docs/SKILL.md +63 -0
  131. package/dist/templates/default/AGENTS.md +22 -1
  132. package/dist/templates/default/actions/hello.ts +1 -1
  133. package/dist/templates/default/actions/navigate.ts +1 -1
  134. package/dist/templates/default/actions/view-screen.ts +1 -1
  135. package/dist/templates/headless/.agents/skills/agent-native-docs/SKILL.md +63 -0
  136. package/dist/templates/headless/.env.example +4 -0
  137. package/dist/templates/headless/.prettierrc +5 -0
  138. package/dist/templates/headless/AGENTS.md +58 -0
  139. package/dist/templates/headless/DEVELOPING.md +22 -0
  140. package/dist/templates/headless/_gitignore +36 -0
  141. package/dist/templates/headless/actions/hello.ts +14 -0
  142. package/dist/templates/headless/actions/run.ts +3 -0
  143. package/dist/templates/headless/package.json +22 -0
  144. package/dist/templates/headless/tsconfig.json +7 -0
  145. package/dist/templates/ui-primitives-sync.spec.ts +2 -2
  146. package/dist/templates/workspace-core/.agents/skills/actions/SKILL.md +5 -5
  147. package/dist/templates/workspace-core/.agents/skills/agent-native-docs/SKILL.md +63 -0
  148. package/dist/templates/workspace-core/.agents/skills/client-side-routing/SKILL.md +9 -0
  149. package/dist/templates/workspace-core/.agents/skills/composable-mini-apps/SKILL.md +93 -0
  150. package/dist/templates/workspace-core/.agents/skills/context-awareness/SKILL.md +11 -1
  151. package/dist/templates/workspace-core/.agents/skills/secrets/SKILL.md +1 -1
  152. package/dist/templates/workspace-core/AGENTS.md +20 -3
  153. package/dist/templates/workspace-core/src/server/index.ts +1 -1
  154. package/dist/templates/workspace-root/AGENTS.md +25 -5
  155. package/dist/templates/workspace-root/README.md +7 -7
  156. package/dist/triggers/dispatcher.d.ts +2 -3
  157. package/dist/triggers/dispatcher.d.ts.map +1 -1
  158. package/dist/triggers/dispatcher.js +2 -3
  159. package/dist/triggers/dispatcher.js.map +1 -1
  160. package/dist/triggers/routes.d.ts +38 -0
  161. package/dist/triggers/routes.d.ts.map +1 -0
  162. package/dist/triggers/routes.js +202 -0
  163. package/dist/triggers/routes.js.map +1 -0
  164. package/dist/vite/client.d.ts +2 -1
  165. package/dist/vite/client.d.ts.map +1 -1
  166. package/dist/vite/client.js +121 -2
  167. package/dist/vite/client.js.map +1 -1
  168. package/docs/AGENTS.md +57 -0
  169. package/docs/SKILL.md +40 -0
  170. package/docs/content/a2a-protocol.md +1 -1
  171. package/docs/content/actions.md +48 -8
  172. package/docs/content/agent-surfaces.md +76 -14
  173. package/docs/content/cli-adapters.md +1 -1
  174. package/docs/content/cloneable-saas.md +5 -4
  175. package/docs/content/code-agents-ui.md +1 -1
  176. package/docs/content/components.md +1 -1
  177. package/docs/content/context-awareness.md +15 -3
  178. package/docs/content/creating-templates.md +15 -7
  179. package/docs/content/drop-in-agent.md +1 -1
  180. package/docs/content/faq.md +6 -4
  181. package/docs/content/getting-started.md +63 -73
  182. package/docs/content/key-concepts.md +24 -24
  183. package/docs/content/native-chat-ui.md +4 -4
  184. package/docs/content/pure-agent-apps.md +34 -10
  185. package/docs/content/security.md +1 -1
  186. package/docs/content/server.md +1 -1
  187. package/docs/content/template-chat.md +85 -0
  188. package/docs/content/template-dispatch.md +1 -1
  189. package/docs/content/tracking.md +1 -1
  190. package/docs/content/what-is-agent-native.md +7 -6
  191. package/package.json +10 -1
  192. package/src/templates/{starter-shell-sync.spec.ts → chat-shell-sync.spec.ts} +21 -21
  193. package/src/templates/default/.agents/skills/actions/SKILL.md +5 -5
  194. package/src/templates/default/.agents/skills/agent-native-docs/SKILL.md +63 -0
  195. package/src/templates/default/AGENTS.md +22 -1
  196. package/src/templates/default/actions/hello.ts +1 -1
  197. package/src/templates/default/actions/navigate.ts +1 -1
  198. package/src/templates/default/actions/view-screen.ts +1 -1
  199. package/src/templates/headless/.agents/skills/agent-native-docs/SKILL.md +63 -0
  200. package/src/templates/headless/.env.example +4 -0
  201. package/src/templates/headless/.prettierrc +5 -0
  202. package/src/templates/headless/AGENTS.md +58 -0
  203. package/src/templates/headless/DEVELOPING.md +22 -0
  204. package/src/templates/headless/_gitignore +36 -0
  205. package/src/templates/headless/actions/hello.ts +14 -0
  206. package/src/templates/headless/actions/run.ts +3 -0
  207. package/src/templates/headless/package.json +22 -0
  208. package/src/templates/headless/tsconfig.json +7 -0
  209. package/src/templates/ui-primitives-sync.spec.ts +2 -2
  210. package/src/templates/workspace-core/.agents/skills/actions/SKILL.md +5 -5
  211. package/src/templates/workspace-core/.agents/skills/agent-native-docs/SKILL.md +63 -0
  212. package/src/templates/workspace-core/.agents/skills/client-side-routing/SKILL.md +9 -0
  213. package/src/templates/workspace-core/.agents/skills/composable-mini-apps/SKILL.md +93 -0
  214. package/src/templates/workspace-core/.agents/skills/context-awareness/SKILL.md +11 -1
  215. package/src/templates/workspace-core/.agents/skills/secrets/SKILL.md +1 -1
  216. package/src/templates/workspace-core/AGENTS.md +20 -3
  217. package/src/templates/workspace-core/src/server/index.ts +1 -1
  218. package/src/templates/workspace-root/AGENTS.md +25 -5
  219. package/src/templates/workspace-root/README.md +7 -7
  220. package/docs/content/template-starter.md +0 -78
@@ -162,13 +162,16 @@
162
162
  line-height: 1.3;
163
163
  }
164
164
 
165
- /* Callout: a self-contained tinted box with a left accent bar and a tone. */
165
+ /* Callout: a self-contained tinted box with an inline-start accent bar and a tone. */
166
166
  .an-callout {
167
167
  max-width: 860px;
168
- border-left: 3px solid hsl(var(--border));
169
- border-radius: 0 8px 8px 0;
168
+ border-inline-start: 3px solid hsl(var(--border));
169
+ border-start-start-radius: 0;
170
+ border-end-start-radius: 0;
171
+ border-start-end-radius: 8px;
172
+ border-end-end-radius: 8px;
170
173
  padding-block: 0.9rem;
171
- padding-left: 1.25rem;
174
+ padding-inline-start: 1.25rem;
172
175
  }
173
176
 
174
177
  /* The body editor/reader may carry a leading margin; the box padding owns the
@@ -194,7 +197,7 @@
194
197
  }
195
198
 
196
199
  .an-callout[data-tone] {
197
- border-left-color: hsl(var(--an-callout-accent));
200
+ border-inline-start-color: hsl(var(--an-callout-accent));
198
201
  background-image: linear-gradient(
199
202
  90deg,
200
203
  hsl(var(--an-callout-accent) / 0.08),
@@ -203,6 +206,16 @@
203
206
  );
204
207
  }
205
208
 
209
+ [dir="rtl"] .an-callout[data-tone],
210
+ .an-callout[dir="rtl"][data-tone] {
211
+ background-image: linear-gradient(
212
+ 270deg,
213
+ hsl(var(--an-callout-accent) / 0.08),
214
+ hsl(var(--an-callout-accent) / 0.02) 38%,
215
+ transparent 72%
216
+ );
217
+ }
218
+
206
219
  .an-callout[data-tone] .an-block-label {
207
220
  color: hsl(var(--an-callout-accent));
208
221
  }
@@ -313,6 +326,7 @@
313
326
  color: hsl(var(--foreground));
314
327
  font-size: 1.0625rem;
315
328
  line-height: 1.75;
329
+ text-align: start;
316
330
  }
317
331
 
318
332
  .plan-rich-markdown-editor .an-rich-md-prose > :first-child {
@@ -410,9 +424,14 @@
410
424
  .plan-rich-markdown-editor .an-rich-md-prose ol,
411
425
  .plan-rich-markdown-editor .an-rich-md-task-list {
412
426
  margin: 0.85rem 0;
427
+ padding-inline-start: 1.45em;
413
428
  color: hsl(var(--muted-foreground));
414
429
  }
415
430
 
431
+ .plan-rich-markdown-editor .an-rich-md-task-list {
432
+ padding-inline-start: 0;
433
+ }
434
+
416
435
  .plan-rich-markdown-editor .an-rich-md-prose li {
417
436
  margin: 0.35rem 0;
418
437
  }
@@ -432,7 +451,7 @@
432
451
 
433
452
  .plan-rich-markdown-editor .an-rich-md-prose blockquote {
434
453
  margin: 1.1rem 0;
435
- border-left-color: hsl(var(--border));
454
+ border-inline-start-color: hsl(var(--border));
436
455
  color: hsl(var(--muted-foreground));
437
456
  }
438
457
 
@@ -444,6 +463,8 @@
444
463
  .plan-rich-markdown-editor .an-rich-md-prose :not(pre) > code {
445
464
  background: hsl(var(--muted));
446
465
  color: hsl(var(--foreground));
466
+ direction: ltr;
467
+ unicode-bidi: isolate;
447
468
  }
448
469
 
449
470
  /* Block code surface fallback for any stray bare <pre>. */
@@ -527,7 +548,7 @@
527
548
  color: hsl(var(--muted-foreground));
528
549
  font-size: 0.75rem;
529
550
  font-weight: 500;
530
- text-align: left;
551
+ text-align: start;
531
552
  cursor: pointer;
532
553
  transition:
533
554
  color 0.15s,
@@ -1224,7 +1245,7 @@
1224
1245
  --wf-font: var(--wf-font-clean);
1225
1246
 
1226
1247
  position: relative;
1227
- overflow: hidden;
1248
+ overflow: auto;
1228
1249
  width: 100%;
1229
1250
  border: 0;
1230
1251
  border-radius: 10px;
@@ -1250,6 +1271,7 @@
1250
1271
  .plan-diagram-frame-content {
1251
1272
  width: 100%;
1252
1273
  padding: 8px 0;
1274
+ direction: inherit;
1253
1275
  }
1254
1276
 
1255
1277
  .plan-diagram-frame-content
@@ -18,6 +18,7 @@
18
18
  line-height: 1.65;
19
19
  font-size: 0.95rem;
20
20
  min-height: 1.65em;
21
+ text-align: start;
21
22
  }
22
23
 
23
24
  .an-rich-md-prose > *:first-child {
@@ -59,7 +60,7 @@
59
60
 
60
61
  .an-rich-md-prose ul:not(.an-rich-md-task-list),
61
62
  .an-rich-md-prose ol {
62
- padding-left: 1.45em;
63
+ padding-inline-start: 1.45em;
63
64
  margin: 0.35em 0;
64
65
  }
65
66
 
@@ -82,7 +83,7 @@
82
83
  .an-rich-md-task-list {
83
84
  list-style: none;
84
85
  margin: 0.35em 0;
85
- padding-left: 0;
86
+ padding-inline-start: 0;
86
87
  }
87
88
 
88
89
  .an-rich-md-task-list li {
@@ -109,13 +110,14 @@
109
110
  }
110
111
 
111
112
  .an-rich-md-prose blockquote {
112
- border-left: 2px solid hsl(var(--border));
113
- padding-left: 0.9em;
113
+ border-inline-start: 2px solid hsl(var(--border));
114
+ padding-inline-start: 0.9em;
114
115
  margin: 0.45em 0;
115
116
  color: hsl(var(--muted-foreground));
116
117
  }
117
118
 
118
119
  .an-rich-md-prose code {
120
+ unicode-bidi: isolate;
119
121
  font-family:
120
122
  ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;
121
123
  font-size: 0.88em;
@@ -124,6 +126,10 @@
124
126
  border-radius: 4px;
125
127
  }
126
128
 
129
+ .an-rich-md-prose :not(pre) > code {
130
+ direction: ltr;
131
+ }
132
+
127
133
  .an-rich-md-prose pre {
128
134
  font-family:
129
135
  ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;
@@ -1,23 +1,23 @@
1
1
  /**
2
2
  * Guard: the scaffold template (packages/core/src/templates/default) and
3
- * templates/starter must ship byte-identical shell files so that scaffolded
4
- * apps start from exactly the same code as the reference starter template.
3
+ * templates/chat must ship byte-identical shell files so that scaffolded apps
4
+ * start from exactly the same code as the reference chat template.
5
5
  *
6
6
  * When you update entry.server.tsx or entry.client.tsx in either location,
7
7
  * update the other copy to match (copy in either direction — the content is
8
8
  * canonical, not the direction).
9
9
  *
10
10
  * Sync commands:
11
- * # scaffold → starter
11
+ * # scaffold → chat
12
12
  * cp packages/core/src/templates/default/app/entry.server.tsx \
13
- * templates/starter/app/entry.server.tsx
13
+ * templates/chat/app/entry.server.tsx
14
14
  * cp packages/core/src/templates/default/app/entry.client.tsx \
15
- * templates/starter/app/entry.client.tsx
15
+ * templates/chat/app/entry.client.tsx
16
16
  *
17
- * # starter → scaffold
18
- * cp templates/starter/app/entry.server.tsx \
17
+ * # chat → scaffold
18
+ * cp templates/chat/app/entry.server.tsx \
19
19
  * packages/core/src/templates/default/app/entry.server.tsx
20
- * cp templates/starter/app/entry.client.tsx \
20
+ * cp templates/chat/app/entry.client.tsx \
21
21
  * packages/core/src/templates/default/app/entry.client.tsx
22
22
  */
23
23
 
@@ -40,7 +40,7 @@ function workspaceRoot(): string {
40
40
  const ROOT = workspaceRoot();
41
41
 
42
42
  const SCAFFOLD_DIR = path.join(ROOT, "packages/core/src/templates/default/app");
43
- const STARTER_DIR = path.join(ROOT, "templates/starter/app");
43
+ const CHAT_TEMPLATE_DIR = path.join(ROOT, "templates/chat/app");
44
44
 
45
45
  function md5(content: string): string {
46
46
  return crypto.createHash("md5").update(content).digest("hex");
@@ -51,7 +51,7 @@ function readFile(dir: string, filename: string): string {
51
51
  }
52
52
 
53
53
  /**
54
- * Shell files that must be byte-identical between scaffold and starter.
54
+ * Shell files that must be byte-identical between scaffold and chat template.
55
55
  * Each entry is [filename, reason]:
56
56
  * entry.server.tsx — both import the app-local React Router ServerRouter
57
57
  * and pass it into the shared core handler; any future change to the
@@ -70,20 +70,20 @@ const SHELL_FILES: Array<[string, string]> = [
70
70
  ],
71
71
  ];
72
72
 
73
- describe("starter-shell sync guard", () => {
74
- it("keeps scaffold and starter shell files byte-identical", () => {
73
+ describe("chat-shell sync guard", () => {
74
+ it("keeps scaffold and chat shell files byte-identical", () => {
75
75
  const violations: string[] = [];
76
76
 
77
77
  for (const [filename] of SHELL_FILES) {
78
78
  const scaffoldContent = readFile(SCAFFOLD_DIR, filename);
79
- const starterContent = readFile(STARTER_DIR, filename);
79
+ const chatContent = readFile(CHAT_TEMPLATE_DIR, filename);
80
80
 
81
81
  const scaffoldHash = md5(scaffoldContent);
82
- const starterHash = md5(starterContent);
82
+ const chatHash = md5(chatContent);
83
83
 
84
- if (scaffoldHash !== starterHash) {
84
+ if (scaffoldHash !== chatHash) {
85
85
  violations.push(
86
- `${filename}: scaffold (packages/core/src/templates/default/app) and starter (templates/starter/app) differ.\n` +
86
+ `${filename}: scaffold (packages/core/src/templates/default/app) and chat (templates/chat/app) differ.\n` +
87
87
  ` Update both to match or copy one to the other.`,
88
88
  );
89
89
  }
@@ -92,7 +92,7 @@ describe("starter-shell sync guard", () => {
92
92
  expect(
93
93
  violations,
94
94
  [
95
- "Scaffold/starter shell files have drifted.",
95
+ "Scaffold/chat shell files have drifted.",
96
96
  "Copy the updated file to the other location to fix.",
97
97
  "",
98
98
  ...violations,
@@ -100,10 +100,10 @@ describe("starter-shell sync guard", () => {
100
100
  ).toEqual([]);
101
101
  });
102
102
 
103
- it("every listed shell file exists in both scaffold and starter", () => {
103
+ it("every listed shell file exists in both scaffold and chat template", () => {
104
104
  for (const [filename, reason] of SHELL_FILES) {
105
105
  const scaffoldPath = path.join(SCAFFOLD_DIR, filename);
106
- const starterPath = path.join(STARTER_DIR, filename);
106
+ const chatPath = path.join(CHAT_TEMPLATE_DIR, filename);
107
107
 
108
108
  expect(
109
109
  fs.existsSync(scaffoldPath),
@@ -111,8 +111,8 @@ describe("starter-shell sync guard", () => {
111
111
  ).toBe(true);
112
112
 
113
113
  expect(
114
- fs.existsSync(starterPath),
115
- `${filename} missing from starter (${reason})`,
114
+ fs.existsSync(chatPath),
115
+ `${filename} missing from chat template (${reason})`,
116
116
  ).toBe(true);
117
117
  }
118
118
  });
@@ -49,7 +49,7 @@ Use `defineAction` with a Zod schema (required for new actions):
49
49
  ```ts
50
50
  // actions/list-meals.ts
51
51
  import { z } from "zod";
52
- import { defineAction } from "@agent-native/core";
52
+ import { defineAction } from "@agent-native/core/action";
53
53
  import { getDb } from "../server/db/index.js";
54
54
  import { meals } from "../server/db/schema.js";
55
55
 
@@ -352,7 +352,7 @@ This still works but is not auto-exposed as HTTP. Prefer `defineAction` for all
352
352
  credentials belong in the encrypted secrets/credential/OAuth stores, never as
353
353
  hardcoded literals or shared env fallbacks.
354
354
  - **Use `fail()`** for user-friendly error messages (exits with message, no stack trace).
355
- - **Import from `@agent-native/core`** Don't redefine `parseArgs()` or other utilities locally.
355
+ - **Import action primitives from `@agent-native/core/action`** and CLI helpers such as `parseArgs()` from `@agent-native/core` — do not redefine framework utilities locally.
356
356
  - **Do not re-export actions as REST.** The mounted `/_agent-native/actions/:name` endpoint is the REST surface; duplicating it under `/api/*` creates drift and hides the operation from agents.
357
357
 
358
358
  ## Common Patterns
@@ -361,7 +361,7 @@ This still works but is not auto-exposed as HTTP. Prefer `defineAction` for all
361
361
 
362
362
  ```ts
363
363
  import { z } from "zod";
364
- import { defineAction } from "@agent-native/core";
364
+ import { defineAction } from "@agent-native/core/action";
365
365
 
366
366
  export default defineAction({
367
367
  description: "List calendar events",
@@ -380,7 +380,7 @@ export default defineAction({
380
380
 
381
381
  ```ts
382
382
  import { z } from "zod";
383
- import { defineAction } from "@agent-native/core";
383
+ import { defineAction } from "@agent-native/core/action";
384
384
 
385
385
  export default defineAction({
386
386
  description: "Log a meal",
@@ -400,7 +400,7 @@ export default defineAction({
400
400
 
401
401
  ```ts
402
402
  import { z } from "zod";
403
- import { defineAction } from "@agent-native/core";
403
+ import { defineAction } from "@agent-native/core/action";
404
404
 
405
405
  export default defineAction({
406
406
  description: "Navigate the UI to a view",
@@ -0,0 +1,63 @@
1
+ ---
2
+ name: agent-native-docs
3
+ description: >-
4
+ How to find version-matched Agent Native framework docs bundled in
5
+ node_modules. Use before implementing or answering questions about
6
+ @agent-native/core APIs, generated apps, workspaces, or advanced features.
7
+ metadata:
8
+ internal: true
9
+ ---
10
+
11
+ # Agent Native Docs Lookup
12
+
13
+ ## Rule
14
+
15
+ Before implementing or explaining non-trivial Agent Native behavior, read the
16
+ version-matched docs installed with `@agent-native/core`.
17
+
18
+ ## Why
19
+
20
+ Generated apps and workspaces may be on a different framework version than the
21
+ public docs or model memory. The installed package is the source that matches
22
+ the app in front of you.
23
+
24
+ ## How
25
+
26
+ From a generated app directory:
27
+
28
+ ```bash
29
+ pnpm action docs-search --query "<feature>"
30
+ pnpm action docs-search --slug <slug>
31
+ pnpm action docs-search --list
32
+ ```
33
+
34
+ The headless `pnpm agent` loop and built-in app agent also expose a read-only
35
+ `docs-search` tool with the same `query`, `slug`, and `list` options.
36
+
37
+ If the action runner is unavailable, search the package docs directly:
38
+
39
+ ```bash
40
+ rg -n "actions|automations|a2a|sharing" node_modules/@agent-native/core/docs
41
+ ```
42
+
43
+ Then read `node_modules/@agent-native/core/docs/AGENTS.md` or the matching file
44
+ under `node_modules/@agent-native/core/docs/content/`.
45
+
46
+ ## Useful Slugs
47
+
48
+ | Need | Slugs |
49
+ | --- | --- |
50
+ | Actions and typed client calls | `actions`, `client` |
51
+ | SQL, auth, access, sharing | `database`, `authentication`, `security`, `sharing` |
52
+ | UI state visible to the agent | `context-awareness` |
53
+ | Headless and chat-first apps | `pure-agent-apps`, `agent-surfaces`, `using-your-agent` |
54
+ | Automations and schedules | `automations`, `recurring-jobs` |
55
+ | Cross-app and external agents | `a2a-protocol`, `external-agents`, `mcp-protocol`, `mcp-apps` |
56
+ | Skills and instructions | `skills-guide`, `writing-agent-instructions` |
57
+
58
+ ## Don't
59
+
60
+ - Do not rely on memory for framework APIs when package docs are present.
61
+ - Do not add custom REST wrappers for app data before reading `actions`.
62
+ - Do not add inline LLM calls before reading `using-your-agent` and
63
+ `agent-surfaces`.
@@ -1,6 +1,6 @@
1
1
  # {{APP_NAME}} — Agent Guide
2
2
 
3
- This app follows the agent-native core philosophy: the agent and UI are equal partners. Everything the UI can do, the agent can do via actions. The agent always knows what you're looking at via application state. See the root AGENTS.md for full framework documentation.
3
+ This app follows the agent-native core philosophy: the agent and UI are equal partners. Everything the UI can do, the agent can do via actions. The agent always knows what you're looking at via application state. Use the framework docs lookup below for version-matched Agent Native documentation.
4
4
 
5
5
  This is an **@agent-native/core** application -- the AI agent and UI share state through a SQL database, with SSE for in-process live sync and polling as the cross-process/serverless fallback.
6
6
 
@@ -13,6 +13,26 @@ This is an **@agent-native/core** application -- the AI agent and UI share state
13
13
  5. **Agent can update code** -- The agent can modify this app's source code directly.
14
14
  6. **No hardcoded secrets or private data** -- Never put API keys, tokens, webhook URLs, signing secrets, private Builder/internal data, customer data, or credential-looking literals in source, docs, tests, fixtures, prompts, screenshots, application state, action responses, or generated content. Use secrets/OAuth/runtime configuration and obvious placeholders in examples.
15
15
 
16
+ ## Framework Docs Lookup
17
+
18
+ Version-matched Agent Native docs ship with `@agent-native/core` in
19
+ `node_modules/@agent-native/core/docs`.
20
+
21
+ - Use `pnpm action docs-search --query "<topic>"` to search framework docs,
22
+ bundled `AGENTS.md`, and codebase skills.
23
+ - Use `pnpm action docs-search --slug <slug>` to read a full page. Start with
24
+ `actions`, `database`, `context-awareness`, `client`, `automations`,
25
+ `recurring-jobs`, `a2a-protocol`, `external-agents`, `mcp-protocol`,
26
+ `sharing`, `security`, `pure-agent-apps`, or `agent-surfaces`.
27
+ - Use `pnpm action docs-search --list` to see everything available.
28
+ - If the action runner is unavailable, read
29
+ `node_modules/@agent-native/core/docs/AGENTS.md` and search
30
+ `node_modules/@agent-native/core/docs/content/` directly with `rg`.
31
+
32
+ Read these local package docs before implementing advanced Agent Native
33
+ features. Prefer this app's own `AGENTS.md` and `.agents/skills/` for
34
+ app-specific rules.
35
+
16
36
  ### Database Code
17
37
 
18
38
  - Define tables with `@agent-native/core/db/schema` helpers (`table`, `text`, `integer`, `real`, `now`, sharing helpers), never `drizzle-orm/sqlite-core` or `drizzle-orm/pg-core`.
@@ -115,6 +135,7 @@ Skills in `.agents/skills/` provide detailed guidance for each architectural rul
115
135
 
116
136
  | Skill | When to read |
117
137
  | --------------------- | --------------------------------------------------------------------------------- |
138
+ | `agent-native-docs` | Before using advanced Agent Native framework APIs or generated-app features |
118
139
  | `adding-a-feature` | **Read first when adding ANY new feature** — the four-area parity checklist |
119
140
  | `real-time-sync` | Before wiring data fetching for anything the agent can mutate (must auto-refresh) |
120
141
  | `storing-data` | Before storing or reading any app state |
@@ -1,4 +1,4 @@
1
- import { defineAction } from "@agent-native/core";
1
+ import { defineAction } from "@agent-native/core/action";
2
2
  import { z } from "zod";
3
3
 
4
4
  export default defineAction({
@@ -1,4 +1,4 @@
1
- import { defineAction } from "@agent-native/core";
1
+ import { defineAction } from "@agent-native/core/action";
2
2
  import { writeAppState } from "@agent-native/core/application-state";
3
3
  import { z } from "zod";
4
4
 
@@ -1,4 +1,4 @@
1
- import { defineAction } from "@agent-native/core";
1
+ import { defineAction } from "@agent-native/core/action";
2
2
  import { readAppState } from "@agent-native/core/application-state";
3
3
  import { z } from "zod";
4
4
 
@@ -0,0 +1,63 @@
1
+ ---
2
+ name: agent-native-docs
3
+ description: >-
4
+ How to find version-matched Agent Native framework docs bundled in
5
+ node_modules. Use before implementing or answering questions about
6
+ @agent-native/core APIs, generated apps, workspaces, or advanced features.
7
+ metadata:
8
+ internal: true
9
+ ---
10
+
11
+ # Agent Native Docs Lookup
12
+
13
+ ## Rule
14
+
15
+ Before implementing or explaining non-trivial Agent Native behavior, read the
16
+ version-matched docs installed with `@agent-native/core`.
17
+
18
+ ## Why
19
+
20
+ Generated apps and workspaces may be on a different framework version than the
21
+ public docs or model memory. The installed package is the source that matches
22
+ the app in front of you.
23
+
24
+ ## How
25
+
26
+ From a generated app directory:
27
+
28
+ ```bash
29
+ pnpm action docs-search --query "<feature>"
30
+ pnpm action docs-search --slug <slug>
31
+ pnpm action docs-search --list
32
+ ```
33
+
34
+ The headless `pnpm agent` loop and built-in app agent also expose a read-only
35
+ `docs-search` tool with the same `query`, `slug`, and `list` options.
36
+
37
+ If the action runner is unavailable, search the package docs directly:
38
+
39
+ ```bash
40
+ rg -n "actions|automations|a2a|sharing" node_modules/@agent-native/core/docs
41
+ ```
42
+
43
+ Then read `node_modules/@agent-native/core/docs/AGENTS.md` or the matching file
44
+ under `node_modules/@agent-native/core/docs/content/`.
45
+
46
+ ## Useful Slugs
47
+
48
+ | Need | Slugs |
49
+ | --- | --- |
50
+ | Actions and typed client calls | `actions`, `client` |
51
+ | SQL, auth, access, sharing | `database`, `authentication`, `security`, `sharing` |
52
+ | UI state visible to the agent | `context-awareness` |
53
+ | Headless and chat-first apps | `pure-agent-apps`, `agent-surfaces`, `using-your-agent` |
54
+ | Automations and schedules | `automations`, `recurring-jobs` |
55
+ | Cross-app and external agents | `a2a-protocol`, `external-agents`, `mcp-protocol`, `mcp-apps` |
56
+ | Skills and instructions | `skills-guide`, `writing-agent-instructions` |
57
+
58
+ ## Don't
59
+
60
+ - Do not rely on memory for framework APIs when package docs are present.
61
+ - Do not add custom REST wrappers for app data before reading `actions`.
62
+ - Do not add inline LLM calls before reading `using-your-agent` and
63
+ `agent-surfaces`.
@@ -0,0 +1,4 @@
1
+ # Local development can use the SQLite fallback at data/app.db.
2
+ # Set DATABASE_URL for a persistent hosted database.
3
+ # DATABASE_URL=postgres://user:password@host:5432/database
4
+
@@ -0,0 +1,5 @@
1
+ {
2
+ "tabWidth": 2,
3
+ "useTabs": false,
4
+ "trailingComma": "all"
5
+ }
@@ -0,0 +1,58 @@
1
+ # {{APP_NAME}} - Agent Guide
2
+
3
+ This is a headless Agent Native app. It starts with actions instead of a browser UI, so the first useful primitive is callable from the agent, CLI, and action runtime.
4
+
5
+ This app is not stateless. The Agent Native runtime uses SQL-backed stores for app state, settings, auth/session data, resources, and other framework capabilities when those surfaces are used. Local development can use SQLite at `data/app.db`; hosted or long-lived deployments should set `DATABASE_URL` to a persistent database.
6
+
7
+ ## Working In This App
8
+
9
+ - Prefer actions in `actions/` for every app operation. Do not create REST wrappers around actions.
10
+ - Keep action inputs validated with Zod and return structured data, not JSON strings.
11
+ - Do not hardcode API keys, tokens, webhook URLs, private data, or credential-looking literals.
12
+ - There is intentionally no `app/` UI shell in this scaffold. When you need a browser UI, use the Chat template as the UI on-ramp and keep `agent-native add` for integration blueprints.
13
+
14
+ ## Framework Docs Lookup
15
+
16
+ Version-matched Agent Native docs ship with `@agent-native/core` in
17
+ `node_modules/@agent-native/core/docs`.
18
+
19
+ - Use `pnpm action docs-search --query "<topic>"` to search framework docs,
20
+ bundled `AGENTS.md`, and codebase skills.
21
+ - Use `pnpm action docs-search --slug <slug>` to read a full page. Start with
22
+ `actions`, `pure-agent-apps`, `automations`, `recurring-jobs`,
23
+ `a2a-protocol`, `external-agents`, `mcp-protocol`, `database`, `sharing`,
24
+ and `security` for advanced headless workflows.
25
+ - Use `pnpm action docs-search --list` to see everything available.
26
+ - If the action runner is unavailable, read
27
+ `node_modules/@agent-native/core/docs/AGENTS.md` and search
28
+ `node_modules/@agent-native/core/docs/content/` directly with `rg`.
29
+
30
+ Read these local package docs before implementing advanced Agent Native
31
+ features. Prefer this app's own `AGENTS.md` for app-specific rules.
32
+
33
+ ## Actions
34
+
35
+ | Action | Args | Purpose |
36
+ | ----------- | ----------------- | ----------------------- |
37
+ | `hello` | `[--name <name>]` | Return a greeting |
38
+ | `db-schema` | | Show SQL schema |
39
+ | `db-query` | `--sql "SELECT"` | Run a scoped SELECT |
40
+ | `db-exec` | `--sql "UPDATE"` | Last-resort maintenance |
41
+
42
+ Run actions from this app root:
43
+
44
+ ```bash
45
+ pnpm action hello --name Builder
46
+ ```
47
+
48
+ Run the app-agent loop against those actions:
49
+
50
+ ```bash
51
+ pnpm agent "Call the hello action for Builder and explain the result"
52
+ ```
53
+
54
+ ## Skills
55
+
56
+ Skills in `.agents/skills/` provide detailed guidance. Read
57
+ `.agents/skills/agent-native-docs/SKILL.md` before using advanced Agent Native
58
+ framework APIs, generated-app features, automations, A2A, sharing, or MCP.
@@ -0,0 +1,22 @@
1
+ # Developing {{APP_NAME}}
2
+
3
+ Install dependencies, then run the hello action:
4
+
5
+ ```bash
6
+ pnpm install
7
+ pnpm action hello --name Builder
8
+ ```
9
+
10
+ Then run the production app-agent loop against this folder:
11
+
12
+ ```bash
13
+ pnpm agent "Call hello for Builder"
14
+ ```
15
+
16
+ Useful checks:
17
+
18
+ ```bash
19
+ pnpm typecheck
20
+ ```
21
+
22
+ This scaffold intentionally has no `app/` directory, React Router config, Vite config, or dev server. Add those only when you are ready for a UI surface; the Chat template is the UI-first scaffold.
@@ -0,0 +1,36 @@
1
+ .agent-native/
2
+
3
+ # Logs
4
+ logs
5
+ *.log
6
+ npm-debug.log*
7
+ pnpm-debug.log*
8
+
9
+ node_modules
10
+ dist
11
+ *.local
12
+
13
+ # Editor directories and files
14
+ .vscode/*
15
+ !.vscode/extensions.json
16
+ .idea
17
+ .DS_Store
18
+ *.suo
19
+ *.ntvs*
20
+ *.njsproj
21
+ *.sln
22
+ *.sw?
23
+
24
+ # Environment
25
+ .env
26
+ .env.*
27
+ !.env.example
28
+
29
+ # Runtime data
30
+ data/*.db
31
+ data/*.db-shm
32
+ data/*.db-wal
33
+ data/uploads/
34
+ data/settings.json
35
+ data/.sessions.json
36
+
@@ -0,0 +1,14 @@
1
+ import { defineAction } from "@agent-native/core/action";
2
+ import { z } from "zod";
3
+
4
+ export default defineAction({
5
+ description: "Return a friendly greeting.",
6
+ schema: z.object({
7
+ name: z.string().default("world").describe("Name to greet"),
8
+ }),
9
+ http: { method: "GET" },
10
+ readOnly: true,
11
+ run: async ({ name }) => {
12
+ return { message: `Hello, ${name}!` };
13
+ },
14
+ });
@@ -0,0 +1,3 @@
1
+ import { runScript } from "@agent-native/core/scripts";
2
+
3
+ runScript();