@agent-native/core 0.37.3 → 0.39.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 (476) hide show
  1. package/README.md +19 -6
  2. package/dist/action.d.ts +60 -2
  3. package/dist/action.d.ts.map +1 -1
  4. package/dist/action.js +6 -2
  5. package/dist/action.js.map +1 -1
  6. package/dist/agent/production-agent.d.ts +12 -6
  7. package/dist/agent/production-agent.d.ts.map +1 -1
  8. package/dist/agent/production-agent.js +161 -11
  9. package/dist/agent/production-agent.js.map +1 -1
  10. package/dist/agent/types.d.ts +2 -0
  11. package/dist/agent/types.d.ts.map +1 -1
  12. package/dist/agent/types.js.map +1 -1
  13. package/dist/catalog.json +2 -2
  14. package/dist/cli/connect.d.ts.map +1 -1
  15. package/dist/cli/connect.js +15 -0
  16. package/dist/cli/connect.js.map +1 -1
  17. package/dist/cli/create.d.ts.map +1 -1
  18. package/dist/cli/create.js +8 -1
  19. package/dist/cli/create.js.map +1 -1
  20. package/dist/cli/index.js +10 -6
  21. package/dist/cli/index.js.map +1 -1
  22. package/dist/cli/plan-publish-store.d.ts +52 -0
  23. package/dist/cli/plan-publish-store.d.ts.map +1 -0
  24. package/dist/cli/plan-publish-store.js +103 -0
  25. package/dist/cli/plan-publish-store.js.map +1 -0
  26. package/dist/cli/skills.d.ts +30 -4
  27. package/dist/cli/skills.d.ts.map +1 -1
  28. package/dist/cli/skills.js +1240 -339
  29. package/dist/cli/skills.js.map +1 -1
  30. package/dist/cli/templates-meta.js +12 -12
  31. package/dist/cli/templates-meta.js.map +1 -1
  32. package/dist/client/AssistantChat.d.ts +3 -1
  33. package/dist/client/AssistantChat.d.ts.map +1 -1
  34. package/dist/client/AssistantChat.js +65 -15
  35. package/dist/client/AssistantChat.js.map +1 -1
  36. package/dist/client/MultiTabAssistantChat.d.ts.map +1 -1
  37. package/dist/client/MultiTabAssistantChat.js +20 -2
  38. package/dist/client/MultiTabAssistantChat.js.map +1 -1
  39. package/dist/client/agent-chat-adapter.d.ts.map +1 -1
  40. package/dist/client/agent-chat-adapter.js +12 -0
  41. package/dist/client/agent-chat-adapter.js.map +1 -1
  42. package/dist/client/agent-engine-key.d.ts +24 -0
  43. package/dist/client/agent-engine-key.d.ts.map +1 -0
  44. package/dist/client/agent-engine-key.js +49 -0
  45. package/dist/client/agent-engine-key.js.map +1 -0
  46. package/dist/client/analytics.d.ts.map +1 -1
  47. package/dist/client/analytics.js +34 -0
  48. package/dist/client/analytics.js.map +1 -1
  49. package/dist/client/blocks/BlockView.d.ts +35 -0
  50. package/dist/client/blocks/BlockView.d.ts.map +1 -0
  51. package/dist/client/blocks/BlockView.js +45 -0
  52. package/dist/client/blocks/BlockView.js.map +1 -0
  53. package/dist/client/blocks/SchemaBlockEditor.d.ts +25 -0
  54. package/dist/client/blocks/SchemaBlockEditor.d.ts.map +1 -0
  55. package/dist/client/blocks/SchemaBlockEditor.js +165 -0
  56. package/dist/client/blocks/SchemaBlockEditor.js.map +1 -0
  57. package/dist/client/blocks/agent.d.ts +30 -0
  58. package/dist/client/blocks/agent.d.ts.map +1 -0
  59. package/dist/client/blocks/agent.js +61 -0
  60. package/dist/client/blocks/agent.js.map +1 -0
  61. package/dist/client/blocks/index.d.ts +51 -0
  62. package/dist/client/blocks/index.d.ts.map +1 -0
  63. package/dist/client/blocks/index.js +67 -0
  64. package/dist/client/blocks/index.js.map +1 -0
  65. package/dist/client/blocks/library/AnnotatedCodeBlock.d.ts +6 -0
  66. package/dist/client/blocks/library/AnnotatedCodeBlock.d.ts.map +1 -0
  67. package/dist/client/blocks/library/AnnotatedCodeBlock.js +135 -0
  68. package/dist/client/blocks/library/AnnotatedCodeBlock.js.map +1 -0
  69. package/dist/client/blocks/library/ApiEndpointBlock.d.ts +20 -0
  70. package/dist/client/blocks/library/ApiEndpointBlock.d.ts.map +1 -0
  71. package/dist/client/blocks/library/ApiEndpointBlock.js +131 -0
  72. package/dist/client/blocks/library/ApiEndpointBlock.js.map +1 -0
  73. package/dist/client/blocks/library/DataModelBlock.d.ts +28 -0
  74. package/dist/client/blocks/library/DataModelBlock.d.ts.map +1 -0
  75. package/dist/client/blocks/library/DataModelBlock.js +222 -0
  76. package/dist/client/blocks/library/DataModelBlock.js.map +1 -0
  77. package/dist/client/blocks/library/DiffBlock.d.ts +6 -0
  78. package/dist/client/blocks/library/DiffBlock.d.ts.map +1 -0
  79. package/dist/client/blocks/library/DiffBlock.js +293 -0
  80. package/dist/client/blocks/library/DiffBlock.js.map +1 -0
  81. package/dist/client/blocks/library/FileTreeBlock.d.ts +23 -0
  82. package/dist/client/blocks/library/FileTreeBlock.d.ts.map +1 -0
  83. package/dist/client/blocks/library/FileTreeBlock.js +225 -0
  84. package/dist/client/blocks/library/FileTreeBlock.js.map +1 -0
  85. package/dist/client/blocks/library/JsonExplorerBlock.d.ts +19 -0
  86. package/dist/client/blocks/library/JsonExplorerBlock.d.ts.map +1 -0
  87. package/dist/client/blocks/library/JsonExplorerBlock.js +171 -0
  88. package/dist/client/blocks/library/JsonExplorerBlock.js.map +1 -0
  89. package/dist/client/blocks/library/MermaidBlock.d.ts +17 -0
  90. package/dist/client/blocks/library/MermaidBlock.d.ts.map +1 -0
  91. package/dist/client/blocks/library/MermaidBlock.js +131 -0
  92. package/dist/client/blocks/library/MermaidBlock.js.map +1 -0
  93. package/dist/client/blocks/library/OpenApiSpecBlock.d.ts +19 -0
  94. package/dist/client/blocks/library/OpenApiSpecBlock.d.ts.map +1 -0
  95. package/dist/client/blocks/library/OpenApiSpecBlock.js +494 -0
  96. package/dist/client/blocks/library/OpenApiSpecBlock.js.map +1 -0
  97. package/dist/client/blocks/library/annotated-code.config.d.ts +58 -0
  98. package/dist/client/blocks/library/annotated-code.config.d.ts.map +1 -0
  99. package/dist/client/blocks/library/annotated-code.config.js +53 -0
  100. package/dist/client/blocks/library/annotated-code.config.js.map +1 -0
  101. package/dist/client/blocks/library/api-endpoint.config.d.ts +71 -0
  102. package/dist/client/blocks/library/api-endpoint.config.d.ts.map +1 -0
  103. package/dist/client/blocks/library/api-endpoint.config.js +91 -0
  104. package/dist/client/blocks/library/api-endpoint.config.js.map +1 -0
  105. package/dist/client/blocks/library/checklist.config.d.ts +36 -0
  106. package/dist/client/blocks/library/checklist.config.d.ts.map +1 -0
  107. package/dist/client/blocks/library/checklist.config.js +25 -0
  108. package/dist/client/blocks/library/checklist.config.js.map +1 -0
  109. package/dist/client/blocks/library/checklist.d.ts +26 -0
  110. package/dist/client/blocks/library/checklist.d.ts.map +1 -0
  111. package/dist/client/blocks/library/checklist.js +78 -0
  112. package/dist/client/blocks/library/checklist.js.map +1 -0
  113. package/dist/client/blocks/library/code-tabs.config.d.ts +36 -0
  114. package/dist/client/blocks/library/code-tabs.config.d.ts.map +1 -0
  115. package/dist/client/blocks/library/code-tabs.config.js +30 -0
  116. package/dist/client/blocks/library/code-tabs.config.js.map +1 -0
  117. package/dist/client/blocks/library/code-tabs.d.ts +3 -0
  118. package/dist/client/blocks/library/code-tabs.d.ts.map +1 -0
  119. package/dist/client/blocks/library/code-tabs.js +165 -0
  120. package/dist/client/blocks/library/code-tabs.js.map +1 -0
  121. package/dist/client/blocks/library/data-model.config.d.ts +72 -0
  122. package/dist/client/blocks/library/data-model.config.d.ts.map +1 -0
  123. package/dist/client/blocks/library/data-model.config.js +59 -0
  124. package/dist/client/blocks/library/data-model.config.js.map +1 -0
  125. package/dist/client/blocks/library/dev-doc-ui.d.ts +49 -0
  126. package/dist/client/blocks/library/dev-doc-ui.d.ts.map +1 -0
  127. package/dist/client/blocks/library/dev-doc-ui.js +50 -0
  128. package/dist/client/blocks/library/dev-doc-ui.js.map +1 -0
  129. package/dist/client/blocks/library/diff.config.d.ts +41 -0
  130. package/dist/client/blocks/library/diff.config.d.ts.map +1 -0
  131. package/dist/client/blocks/library/diff.config.js +34 -0
  132. package/dist/client/blocks/library/diff.config.js.map +1 -0
  133. package/dist/client/blocks/library/file-tree.config.d.ts +59 -0
  134. package/dist/client/blocks/library/file-tree.config.d.ts.map +1 -0
  135. package/dist/client/blocks/library/file-tree.config.js +45 -0
  136. package/dist/client/blocks/library/file-tree.config.js.map +1 -0
  137. package/dist/client/blocks/library/html.config.d.ts +37 -0
  138. package/dist/client/blocks/library/html.config.d.ts.map +1 -0
  139. package/dist/client/blocks/library/html.config.js +46 -0
  140. package/dist/client/blocks/library/html.config.js.map +1 -0
  141. package/dist/client/blocks/library/html.d.ts +21 -0
  142. package/dist/client/blocks/library/html.d.ts.map +1 -0
  143. package/dist/client/blocks/library/html.js +72 -0
  144. package/dist/client/blocks/library/html.js.map +1 -0
  145. package/dist/client/blocks/library/json-explorer.config.d.ts +46 -0
  146. package/dist/client/blocks/library/json-explorer.config.d.ts.map +1 -0
  147. package/dist/client/blocks/library/json-explorer.config.js +28 -0
  148. package/dist/client/blocks/library/json-explorer.config.js.map +1 -0
  149. package/dist/client/blocks/library/mermaid.config.d.ts +32 -0
  150. package/dist/client/blocks/library/mermaid.config.d.ts.map +1 -0
  151. package/dist/client/blocks/library/mermaid.config.js +24 -0
  152. package/dist/client/blocks/library/mermaid.config.js.map +1 -0
  153. package/dist/client/blocks/library/openapi-spec.config.d.ts +49 -0
  154. package/dist/client/blocks/library/openapi-spec.config.d.ts.map +1 -0
  155. package/dist/client/blocks/library/openapi-spec.config.js +24 -0
  156. package/dist/client/blocks/library/openapi-spec.config.js.map +1 -0
  157. package/dist/client/blocks/library/server-specs.d.ts +35 -0
  158. package/dist/client/blocks/library/server-specs.d.ts.map +1 -0
  159. package/dist/client/blocks/library/server-specs.js +171 -0
  160. package/dist/client/blocks/library/server-specs.js.map +1 -0
  161. package/dist/client/blocks/library/specs.d.ts +29 -0
  162. package/dist/client/blocks/library/specs.d.ts.map +1 -0
  163. package/dist/client/blocks/library/specs.js +229 -0
  164. package/dist/client/blocks/library/specs.js.map +1 -0
  165. package/dist/client/blocks/library/table.config.d.ts +30 -0
  166. package/dist/client/blocks/library/table.config.d.ts.map +1 -0
  167. package/dist/client/blocks/library/table.config.js +22 -0
  168. package/dist/client/blocks/library/table.config.js.map +1 -0
  169. package/dist/client/blocks/library/table.d.ts +8 -0
  170. package/dist/client/blocks/library/table.d.ts.map +1 -0
  171. package/dist/client/blocks/library/table.js +109 -0
  172. package/dist/client/blocks/library/table.js.map +1 -0
  173. package/dist/client/blocks/library/tabs.config.d.ts +56 -0
  174. package/dist/client/blocks/library/tabs.config.d.ts.map +1 -0
  175. package/dist/client/blocks/library/tabs.config.js +36 -0
  176. package/dist/client/blocks/library/tabs.config.js.map +1 -0
  177. package/dist/client/blocks/library/tabs.d.ts +20 -0
  178. package/dist/client/blocks/library/tabs.d.ts.map +1 -0
  179. package/dist/client/blocks/library/tabs.js +123 -0
  180. package/dist/client/blocks/library/tabs.js.map +1 -0
  181. package/dist/client/blocks/mdx.d.ts +74 -0
  182. package/dist/client/blocks/mdx.d.ts.map +1 -0
  183. package/dist/client/blocks/mdx.js +205 -0
  184. package/dist/client/blocks/mdx.js.map +1 -0
  185. package/dist/client/blocks/provider.d.ts +25 -0
  186. package/dist/client/blocks/provider.d.ts.map +1 -0
  187. package/dist/client/blocks/provider.js +19 -0
  188. package/dist/client/blocks/provider.js.map +1 -0
  189. package/dist/client/blocks/registry.d.ts +32 -0
  190. package/dist/client/blocks/registry.d.ts.map +1 -0
  191. package/dist/client/blocks/registry.js +65 -0
  192. package/dist/client/blocks/registry.js.map +1 -0
  193. package/dist/client/blocks/schema-form/introspect.d.ts +31 -0
  194. package/dist/client/blocks/schema-form/introspect.d.ts.map +1 -0
  195. package/dist/client/blocks/schema-form/introspect.js +164 -0
  196. package/dist/client/blocks/schema-form/introspect.js.map +1 -0
  197. package/dist/client/blocks/server.d.ts +31 -0
  198. package/dist/client/blocks/server.d.ts.map +1 -0
  199. package/dist/client/blocks/server.js +41 -0
  200. package/dist/client/blocks/server.js.map +1 -0
  201. package/dist/client/blocks/types.d.ts +252 -0
  202. package/dist/client/blocks/types.d.ts.map +1 -0
  203. package/dist/client/blocks/types.js +5 -0
  204. package/dist/client/blocks/types.js.map +1 -0
  205. package/dist/client/composer/ComposerPlusMenu.js +10 -1
  206. package/dist/client/composer/ComposerPlusMenu.js.map +1 -1
  207. package/dist/client/guided-questions.d.ts +68 -0
  208. package/dist/client/guided-questions.d.ts.map +1 -1
  209. package/dist/client/guided-questions.js +158 -3
  210. package/dist/client/guided-questions.js.map +1 -1
  211. package/dist/client/index.d.ts +6 -1
  212. package/dist/client/index.d.ts.map +1 -1
  213. package/dist/client/index.js +24 -1
  214. package/dist/client/index.js.map +1 -1
  215. package/dist/client/rich-markdown-editor/BubbleToolbar.d.ts +37 -0
  216. package/dist/client/rich-markdown-editor/BubbleToolbar.d.ts.map +1 -0
  217. package/dist/client/rich-markdown-editor/BubbleToolbar.js +161 -0
  218. package/dist/client/rich-markdown-editor/BubbleToolbar.js.map +1 -0
  219. package/dist/client/rich-markdown-editor/DragHandle.d.ts +52 -0
  220. package/dist/client/rich-markdown-editor/DragHandle.d.ts.map +1 -0
  221. package/dist/client/rich-markdown-editor/DragHandle.js +403 -0
  222. package/dist/client/rich-markdown-editor/DragHandle.js.map +1 -0
  223. package/dist/client/rich-markdown-editor/ImageExtension.d.ts +63 -0
  224. package/dist/client/rich-markdown-editor/ImageExtension.d.ts.map +1 -0
  225. package/dist/client/rich-markdown-editor/ImageExtension.js +242 -0
  226. package/dist/client/rich-markdown-editor/ImageExtension.js.map +1 -0
  227. package/dist/client/rich-markdown-editor/RegistryBlockNode.d.ts +97 -0
  228. package/dist/client/rich-markdown-editor/RegistryBlockNode.d.ts.map +1 -0
  229. package/dist/client/rich-markdown-editor/RegistryBlockNode.js +214 -0
  230. package/dist/client/rich-markdown-editor/RegistryBlockNode.js.map +1 -0
  231. package/dist/client/rich-markdown-editor/RichMarkdownEditor.d.ts +51 -0
  232. package/dist/client/rich-markdown-editor/RichMarkdownEditor.d.ts.map +1 -0
  233. package/dist/client/rich-markdown-editor/RichMarkdownEditor.js +37 -0
  234. package/dist/client/rich-markdown-editor/RichMarkdownEditor.js.map +1 -0
  235. package/dist/client/rich-markdown-editor/RunId.d.ts +28 -0
  236. package/dist/client/rich-markdown-editor/RunId.d.ts.map +1 -0
  237. package/dist/client/rich-markdown-editor/RunId.js +60 -0
  238. package/dist/client/rich-markdown-editor/RunId.js.map +1 -0
  239. package/dist/client/rich-markdown-editor/SharedRichEditor.d.ts +85 -0
  240. package/dist/client/rich-markdown-editor/SharedRichEditor.d.ts.map +1 -0
  241. package/dist/client/rich-markdown-editor/SharedRichEditor.js +130 -0
  242. package/dist/client/rich-markdown-editor/SharedRichEditor.js.map +1 -0
  243. package/dist/client/rich-markdown-editor/SlashCommandMenu.d.ts +36 -0
  244. package/dist/client/rich-markdown-editor/SlashCommandMenu.d.ts.map +1 -0
  245. package/dist/client/rich-markdown-editor/SlashCommandMenu.js +193 -0
  246. package/dist/client/rich-markdown-editor/SlashCommandMenu.js.map +1 -0
  247. package/dist/client/rich-markdown-editor/extensions.d.ts +166 -0
  248. package/dist/client/rich-markdown-editor/extensions.d.ts.map +1 -0
  249. package/dist/client/rich-markdown-editor/extensions.js +222 -0
  250. package/dist/client/rich-markdown-editor/extensions.js.map +1 -0
  251. package/dist/client/rich-markdown-editor/gfmDoc.d.ts +24 -0
  252. package/dist/client/rich-markdown-editor/gfmDoc.d.ts.map +1 -0
  253. package/dist/client/rich-markdown-editor/gfmDoc.js +83 -0
  254. package/dist/client/rich-markdown-editor/gfmDoc.js.map +1 -0
  255. package/dist/client/rich-markdown-editor/index.d.ts +14 -0
  256. package/dist/client/rich-markdown-editor/index.d.ts.map +1 -0
  257. package/dist/client/rich-markdown-editor/index.js +14 -0
  258. package/dist/client/rich-markdown-editor/index.js.map +1 -0
  259. package/dist/client/rich-markdown-editor/registrySlashCommands.d.ts +46 -0
  260. package/dist/client/rich-markdown-editor/registrySlashCommands.d.ts.map +1 -0
  261. package/dist/client/rich-markdown-editor/registrySlashCommands.js +13 -0
  262. package/dist/client/rich-markdown-editor/registrySlashCommands.js.map +1 -0
  263. package/dist/client/rich-markdown-editor/uploadEditorImage.d.ts +18 -0
  264. package/dist/client/rich-markdown-editor/uploadEditorImage.d.ts.map +1 -0
  265. package/dist/client/rich-markdown-editor/uploadEditorImage.js +57 -0
  266. package/dist/client/rich-markdown-editor/uploadEditorImage.js.map +1 -0
  267. package/dist/client/rich-markdown-editor/useCollabReconcile.d.ts +91 -0
  268. package/dist/client/rich-markdown-editor/useCollabReconcile.d.ts.map +1 -0
  269. package/dist/client/rich-markdown-editor/useCollabReconcile.js +375 -0
  270. package/dist/client/rich-markdown-editor/useCollabReconcile.js.map +1 -0
  271. package/dist/client/track.d.ts +25 -0
  272. package/dist/client/track.d.ts.map +1 -0
  273. package/dist/client/track.js +53 -0
  274. package/dist/client/track.js.map +1 -0
  275. package/dist/client/use-action.d.ts.map +1 -1
  276. package/dist/client/use-action.js +6 -0
  277. package/dist/client/use-action.js.map +1 -1
  278. package/dist/client/use-session.d.ts +3 -2
  279. package/dist/client/use-session.d.ts.map +1 -1
  280. package/dist/client/use-session.js +3 -2
  281. package/dist/client/use-session.js.map +1 -1
  282. package/dist/deploy/build.d.ts +5 -0
  283. package/dist/deploy/build.d.ts.map +1 -1
  284. package/dist/deploy/build.js +67 -1
  285. package/dist/deploy/build.js.map +1 -1
  286. package/dist/extensions/schema.d.ts +1 -1
  287. package/dist/mcp/build-server.d.ts.map +1 -1
  288. package/dist/mcp/build-server.js +9 -2
  289. package/dist/mcp/build-server.js.map +1 -1
  290. package/dist/mcp/server.d.ts +1 -1
  291. package/dist/mcp/server.d.ts.map +1 -1
  292. package/dist/mcp/server.js +35 -2
  293. package/dist/mcp/server.js.map +1 -1
  294. package/dist/provider-api/index.d.ts +1 -1
  295. package/dist/provider-api/index.d.ts.map +1 -1
  296. package/dist/scripts/docs/search.d.ts.map +1 -1
  297. package/dist/scripts/docs/search.js +5 -2
  298. package/dist/scripts/docs/search.js.map +1 -1
  299. package/dist/scripts/runner.d.ts.map +1 -1
  300. package/dist/scripts/runner.js +16 -3
  301. package/dist/scripts/runner.js.map +1 -1
  302. package/dist/server/action-discovery.d.ts.map +1 -1
  303. package/dist/server/action-discovery.js +2 -0
  304. package/dist/server/action-discovery.js.map +1 -1
  305. package/dist/server/action-routes.d.ts.map +1 -1
  306. package/dist/server/action-routes.js +30 -4
  307. package/dist/server/action-routes.js.map +1 -1
  308. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  309. package/dist/server/agent-chat-plugin.js +65 -19
  310. package/dist/server/agent-chat-plugin.js.map +1 -1
  311. package/dist/server/agent-teams.d.ts.map +1 -1
  312. package/dist/server/agent-teams.js +8 -1
  313. package/dist/server/agent-teams.js.map +1 -1
  314. package/dist/server/agents-bundle.d.ts +27 -1
  315. package/dist/server/agents-bundle.d.ts.map +1 -1
  316. package/dist/server/agents-bundle.js +41 -3
  317. package/dist/server/agents-bundle.js.map +1 -1
  318. package/dist/server/auth.d.ts.map +1 -1
  319. package/dist/server/auth.js +76 -3
  320. package/dist/server/auth.js.map +1 -1
  321. package/dist/server/core-routes-plugin.d.ts.map +1 -1
  322. package/dist/server/core-routes-plugin.js +60 -0
  323. package/dist/server/core-routes-plugin.js.map +1 -1
  324. package/dist/server/onboarding-html.d.ts.map +1 -1
  325. package/dist/server/onboarding-html.js +160 -22
  326. package/dist/server/onboarding-html.js.map +1 -1
  327. package/dist/server/sentry.d.ts.map +1 -1
  328. package/dist/server/sentry.js +6 -0
  329. package/dist/server/sentry.js.map +1 -1
  330. package/dist/server/social-og-image.d.ts +2 -1
  331. package/dist/server/social-og-image.d.ts.map +1 -1
  332. package/dist/server/social-og-image.js +24 -4
  333. package/dist/server/social-og-image.js.map +1 -1
  334. package/dist/sharing/schema.d.ts +1 -1
  335. package/dist/styles/agent-native.css +1 -0
  336. package/dist/styles/rich-markdown-editor.css +439 -0
  337. package/dist/templates/default/.agents/skills/actions/SKILL.md +4 -1
  338. package/dist/templates/default/.agents/skills/security/SKILL.md +13 -4
  339. package/dist/templates/default/.agents/skills/storing-data/SKILL.md +15 -3
  340. package/dist/templates/default/AGENTS.md +1 -0
  341. package/dist/templates/default/DEVELOPING.md +2 -0
  342. package/dist/templates/workspace-core/.agents/skills/a2a-protocol/SKILL.md +10 -3
  343. package/dist/templates/workspace-core/.agents/skills/actions/SKILL.md +98 -10
  344. package/dist/templates/workspace-core/.agents/skills/adding-a-feature/SKILL.md +45 -3
  345. package/dist/templates/workspace-core/.agents/skills/address-feedback/SKILL.md +2 -0
  346. package/dist/templates/workspace-core/.agents/skills/authentication/SKILL.md +37 -4
  347. package/dist/templates/workspace-core/.agents/skills/automations/SKILL.md +9 -4
  348. package/dist/templates/workspace-core/.agents/skills/capture-learnings/SKILL.md +2 -0
  349. package/dist/templates/workspace-core/.agents/skills/client-methods/SKILL.md +106 -0
  350. package/dist/templates/workspace-core/.agents/skills/client-methods/references/legacy-client-fetch-audit-2026-06-03.md +53 -0
  351. package/dist/templates/workspace-core/.agents/skills/client-side-routing/SKILL.md +2 -0
  352. package/dist/templates/workspace-core/.agents/skills/context-awareness/SKILL.md +62 -61
  353. package/dist/templates/workspace-core/.agents/skills/context-xray/SKILL.md +47 -0
  354. package/dist/templates/workspace-core/.agents/skills/create-skill/SKILL.md +28 -0
  355. package/dist/templates/workspace-core/.agents/skills/delegate-to-agent/SKILL.md +52 -1
  356. package/dist/templates/workspace-core/.agents/skills/extension-points/SKILL.md +2 -0
  357. package/dist/templates/workspace-core/.agents/skills/extensions/SKILL.md +95 -433
  358. package/dist/templates/workspace-core/.agents/skills/extensions/references/api.md +285 -0
  359. package/dist/templates/workspace-core/.agents/skills/extensions/references/examples.md +259 -0
  360. package/dist/templates/workspace-core/.agents/skills/external-agents/SKILL.md +398 -0
  361. package/dist/templates/workspace-core/.agents/skills/external-agents/references/mcp-apps-embedding.md +157 -0
  362. package/dist/templates/workspace-core/.agents/skills/frontend-design/SKILL.md +17 -0
  363. package/dist/templates/workspace-core/.agents/skills/integration-webhooks/SKILL.md +13 -2
  364. package/dist/templates/workspace-core/.agents/skills/mvp-followup/SKILL.md +51 -0
  365. package/dist/templates/workspace-core/.agents/skills/observability/SKILL.md +14 -4
  366. package/dist/templates/workspace-core/.agents/skills/onboarding/SKILL.md +13 -1
  367. package/dist/templates/workspace-core/.agents/skills/portability/SKILL.md +27 -5
  368. package/dist/templates/workspace-core/.agents/skills/qa/SKILL.md +24 -8
  369. package/dist/templates/workspace-core/.agents/skills/real-time-collab/SKILL.md +53 -7
  370. package/dist/templates/workspace-core/.agents/skills/real-time-sync/SKILL.md +43 -10
  371. package/dist/templates/workspace-core/.agents/skills/recurring-jobs/SKILL.md +2 -0
  372. package/dist/templates/workspace-core/.agents/skills/secrets/SKILL.md +43 -14
  373. package/dist/templates/workspace-core/.agents/skills/security/SKILL.md +50 -1
  374. package/dist/templates/workspace-core/.agents/skills/self-modifying-code/SKILL.md +4 -2
  375. package/dist/templates/workspace-core/.agents/skills/server-plugins/SKILL.md +11 -1
  376. package/dist/templates/workspace-core/.agents/skills/shadcn-ui/SKILL.md +15 -0
  377. package/dist/templates/workspace-core/.agents/skills/sharing/SKILL.md +5 -1
  378. package/dist/templates/workspace-core/.agents/skills/storing-data/SKILL.md +48 -19
  379. package/dist/templates/workspace-core/.agents/skills/tracking/SKILL.md +7 -3
  380. package/dist/templates/workspace-core/.agents/skills/voice-transcription/SKILL.md +13 -6
  381. package/dist/templates/workspace-core/.agents/skills/writing-agent-instructions/SKILL.md +236 -0
  382. package/dist/templates/workspace-core/AGENTS.md +5 -1
  383. package/dist/templates/workspace-root/AGENTS.md +5 -2
  384. package/dist/tracking/route.d.ts +43 -0
  385. package/dist/tracking/route.d.ts.map +1 -0
  386. package/dist/tracking/route.js +85 -0
  387. package/dist/tracking/route.js.map +1 -0
  388. package/dist/vite/client.d.ts.map +1 -1
  389. package/dist/vite/client.js +15 -0
  390. package/dist/vite/client.js.map +1 -1
  391. package/docs/content/a2a-protocol.md +18 -4
  392. package/docs/content/actions.md +87 -0
  393. package/docs/content/agent-mentions.md +2 -1
  394. package/docs/content/authentication.md +2 -1
  395. package/docs/content/client.md +64 -13
  396. package/docs/content/cloneable-saas.md +1 -1
  397. package/docs/content/code-agents-ui.md +17 -11
  398. package/docs/content/context-awareness.md +23 -28
  399. package/docs/content/creating-templates.md +1 -1
  400. package/docs/content/drop-in-agent.md +2 -0
  401. package/docs/content/getting-started.md +2 -2
  402. package/docs/content/key-concepts.md +2 -2
  403. package/docs/content/messaging.md +57 -15
  404. package/docs/content/migration-workbench.md +1 -1
  405. package/docs/content/multi-app-workspace.md +1 -1
  406. package/docs/content/multi-tenancy.md +17 -15
  407. package/docs/content/real-time-collaboration.md +1 -1
  408. package/docs/content/recurring-jobs.md +1 -1
  409. package/docs/content/security.md +2 -2
  410. package/docs/content/server.md +4 -4
  411. package/docs/content/skills-guide.md +30 -0
  412. package/docs/content/template-analytics.md +2 -2
  413. package/docs/content/template-assets.md +17 -1
  414. package/docs/content/template-brain.md +2 -2
  415. package/docs/content/template-calendar.md +1 -1
  416. package/docs/content/template-clips.md +3 -3
  417. package/docs/content/template-content.md +2 -2
  418. package/docs/content/template-design.md +2 -2
  419. package/docs/content/template-dispatch.md +3 -3
  420. package/docs/content/template-forms.md +14 -2
  421. package/docs/content/template-mail.md +1 -3
  422. package/docs/content/template-plan.md +133 -0
  423. package/docs/content/template-slides.md +5 -4
  424. package/docs/content/template-starter.md +4 -4
  425. package/docs/content/template-videos.md +6 -11
  426. package/docs/content/tracking.md +21 -1
  427. package/docs/content/visual-plans.md +74 -0
  428. package/docs/content/workspace.md +9 -9
  429. package/package.json +26 -11
  430. package/src/templates/default/.agents/skills/actions/SKILL.md +4 -1
  431. package/src/templates/default/.agents/skills/security/SKILL.md +13 -4
  432. package/src/templates/default/.agents/skills/storing-data/SKILL.md +15 -3
  433. package/src/templates/default/AGENTS.md +1 -0
  434. package/src/templates/default/DEVELOPING.md +2 -0
  435. package/src/templates/workspace-core/.agents/skills/a2a-protocol/SKILL.md +10 -3
  436. package/src/templates/workspace-core/.agents/skills/actions/SKILL.md +98 -10
  437. package/src/templates/workspace-core/.agents/skills/adding-a-feature/SKILL.md +45 -3
  438. package/src/templates/workspace-core/.agents/skills/address-feedback/SKILL.md +2 -0
  439. package/src/templates/workspace-core/.agents/skills/authentication/SKILL.md +37 -4
  440. package/src/templates/workspace-core/.agents/skills/automations/SKILL.md +9 -4
  441. package/src/templates/workspace-core/.agents/skills/capture-learnings/SKILL.md +2 -0
  442. package/src/templates/workspace-core/.agents/skills/client-methods/SKILL.md +106 -0
  443. package/src/templates/workspace-core/.agents/skills/client-methods/references/legacy-client-fetch-audit-2026-06-03.md +53 -0
  444. package/src/templates/workspace-core/.agents/skills/client-side-routing/SKILL.md +2 -0
  445. package/src/templates/workspace-core/.agents/skills/context-awareness/SKILL.md +62 -61
  446. package/src/templates/workspace-core/.agents/skills/context-xray/SKILL.md +47 -0
  447. package/src/templates/workspace-core/.agents/skills/create-skill/SKILL.md +28 -0
  448. package/src/templates/workspace-core/.agents/skills/delegate-to-agent/SKILL.md +52 -1
  449. package/src/templates/workspace-core/.agents/skills/extension-points/SKILL.md +2 -0
  450. package/src/templates/workspace-core/.agents/skills/extensions/SKILL.md +95 -433
  451. package/src/templates/workspace-core/.agents/skills/extensions/references/api.md +285 -0
  452. package/src/templates/workspace-core/.agents/skills/extensions/references/examples.md +259 -0
  453. package/src/templates/workspace-core/.agents/skills/external-agents/SKILL.md +398 -0
  454. package/src/templates/workspace-core/.agents/skills/external-agents/references/mcp-apps-embedding.md +157 -0
  455. package/src/templates/workspace-core/.agents/skills/frontend-design/SKILL.md +17 -0
  456. package/src/templates/workspace-core/.agents/skills/integration-webhooks/SKILL.md +13 -2
  457. package/src/templates/workspace-core/.agents/skills/mvp-followup/SKILL.md +51 -0
  458. package/src/templates/workspace-core/.agents/skills/observability/SKILL.md +14 -4
  459. package/src/templates/workspace-core/.agents/skills/onboarding/SKILL.md +13 -1
  460. package/src/templates/workspace-core/.agents/skills/portability/SKILL.md +27 -5
  461. package/src/templates/workspace-core/.agents/skills/qa/SKILL.md +24 -8
  462. package/src/templates/workspace-core/.agents/skills/real-time-collab/SKILL.md +53 -7
  463. package/src/templates/workspace-core/.agents/skills/real-time-sync/SKILL.md +43 -10
  464. package/src/templates/workspace-core/.agents/skills/recurring-jobs/SKILL.md +2 -0
  465. package/src/templates/workspace-core/.agents/skills/secrets/SKILL.md +43 -14
  466. package/src/templates/workspace-core/.agents/skills/security/SKILL.md +50 -1
  467. package/src/templates/workspace-core/.agents/skills/self-modifying-code/SKILL.md +4 -2
  468. package/src/templates/workspace-core/.agents/skills/server-plugins/SKILL.md +11 -1
  469. package/src/templates/workspace-core/.agents/skills/shadcn-ui/SKILL.md +15 -0
  470. package/src/templates/workspace-core/.agents/skills/sharing/SKILL.md +5 -1
  471. package/src/templates/workspace-core/.agents/skills/storing-data/SKILL.md +48 -19
  472. package/src/templates/workspace-core/.agents/skills/tracking/SKILL.md +7 -3
  473. package/src/templates/workspace-core/.agents/skills/voice-transcription/SKILL.md +13 -6
  474. package/src/templates/workspace-core/.agents/skills/writing-agent-instructions/SKILL.md +236 -0
  475. package/src/templates/workspace-core/AGENTS.md +5 -1
  476. package/src/templates/workspace-root/AGENTS.md +5 -2
@@ -0,0 +1,236 @@
1
+ ---
2
+ name: writing-agent-instructions
3
+ description: >-
4
+ How to write great agent instructions for an agent-native app or template:
5
+ AGENTS.md, skills, and tool/action descriptions. Use when authoring or
6
+ reviewing AGENTS.md, writing a SKILL.md, wording action descriptions, or
7
+ deciding what belongs in instructions vs skills vs memory.
8
+ metadata:
9
+ internal: true
10
+ ---
11
+
12
+ # Writing Agent Instructions & Skills
13
+
14
+ This is a creator-facing guide. When you build an agent-native app or template,
15
+ the agent's behavior is only as good as the instructions you give it. Three
16
+ surfaces carry that guidance: `AGENTS.md` (the map), skills (the deep dives),
17
+ and action/tool descriptions (how the agent picks the right tool). Write each
18
+ one for fast retrieval, not for prose.
19
+
20
+ ## Keep AGENTS.md small and skimmable
21
+
22
+ `AGENTS.md` is loaded as orientation. It should be the smallest thing that lets
23
+ the agent act correctly, with everything deep pushed into skills. Aim for these
24
+ sections and little else:
25
+
26
+ - **Purpose line** — one sentence on what the app is and the primary workflow.
27
+ - **Core rules** — the handful of invariants that must always hold (data in SQL,
28
+ operations go through actions, AI goes through the agent chat, schema changes
29
+ are additive). Short, imperative bullets.
30
+ - **Application-state keys** — the `navigation`/selection/focus keys the agent
31
+ reads to know what the user is looking at, with their shape.
32
+ - **Action table** — a compact table of action name -> purpose (see below).
33
+ - **Skills index** — a list of the skills that exist and when to read each one.
34
+
35
+ If a section is growing past a screen, it belongs in a skill. `AGENTS.md`
36
+ answers "what is this app and what can I do," not "how exactly do I do the hard
37
+ thing."
38
+
39
+ ```markdown
40
+ # Projects App
41
+
42
+ One workspace for projects, tasks, and notes. Agent and UI share the same SQL
43
+ data and the same actions.
44
+
45
+ ## Core Rules
46
+
47
+ - Data lives in SQL via Drizzle. Use actions for all writes.
48
+ - All AI work goes through the agent chat; never call an LLM inline.
49
+ - Schema changes are additive only.
50
+
51
+ ## Application State
52
+
53
+ - `navigation.view`: `home` | `project`
54
+ - `navigation.projectId`: selected project on a project page
55
+
56
+ ## Actions
57
+
58
+ | Action | Purpose |
59
+ | ---------------- | --------------------------- |
60
+ | `list-projects` | List accessible projects |
61
+ | `create-project` | Create a project |
62
+ | `update-project` | Rename or archive a project |
63
+
64
+ ## Skills
65
+
66
+ - `project-imports` — read before importing legacy CSV exports.
67
+ - `sharing` — read before exposing a project to other users.
68
+ ```
69
+
70
+ ## Single-source AGENTS.md (CLAUDE.md is a symlink)
71
+
72
+ Keep one canonical instructions file: `AGENTS.md`. If a client expects
73
+ `CLAUDE.md`, make it a symlink to `AGENTS.md` rather than a second copy. Two
74
+ hand-maintained files drift, and the agent ends up with contradictory rules.
75
+ One source of truth, linked where needed.
76
+
77
+ ## SKILL.md frontmatter must say what AND when
78
+
79
+ The `description` is the only thing the agent sees when deciding whether to read
80
+ a skill. It must answer two questions: what the skill covers, and when to
81
+ trigger it. A description that only describes the topic will not fire.
82
+
83
+ ```markdown
84
+ ---
85
+ name: project-imports
86
+ description: >-
87
+ How to import projects from the legacy CSV export. Use when the user uploads
88
+ a project CSV or asks to migrate projects from the old system.
89
+ ---
90
+ ```
91
+
92
+ - Lead with the capability, then add an explicit **"Use when…"** clause.
93
+ - Be slightly pushy — over-triggering beats a skill that never loads.
94
+ - Keep it under ~40 words; it is loaded into context on every conversation.
95
+
96
+ ### Scope a skill to runtime vs dev
97
+
98
+ An optional `scope` field decides which agent loads the skill:
99
+
100
+ - `both` (default when omitted) and `runtime` — loaded by the in-app runtime
101
+ agent.
102
+ - `dev` — for the human's coding agent (e.g. Claude Code) only. A `scope: dev`
103
+ skill is invisible to the runtime agent everywhere (system-prompt skills block
104
+ and `docs-search`).
105
+
106
+ ```markdown
107
+ ---
108
+ name: release-checklist
109
+ description: >-
110
+ Steps for cutting a release. Use when preparing or publishing a new version.
111
+ scope: dev
112
+ ---
113
+ ```
114
+
115
+ Omit `scope` for normal skills (the default `both` keeps them loading at
116
+ runtime — fully backward compatible). For a dev-only skill, mark it `scope: dev`
117
+ and optionally mirror it under `.claude/skills/<name>/SKILL.md` so Claude Code
118
+ picks it up while the runtime agent skips it.
119
+
120
+ ## Progressive disclosure: lean SKILL.md, depth in references/
121
+
122
+ Write the SKILL.md as the lean, must-know layer: the rule, how to do it, the
123
+ do/don't list, and pointers. Push long examples, exhaustive field references,
124
+ API quirks, and edge-case tables into `references/` files the agent reads only
125
+ when it needs them.
126
+
127
+ ```
128
+ .agents/skills/project-imports/
129
+ ├── SKILL.md # rule + happy path + do/don't
130
+ └── references/
131
+ └── csv-format.md # full column spec, encodings, edge cases
132
+ ```
133
+
134
+ This keeps the always-loaded surface small and lets depth scale without bloating
135
+ context. See the **create-skill** skill for the full skill format.
136
+
137
+ ## Write action-oriented tables
138
+
139
+ The agent scans tables faster than prose. Prefer a table of name -> purpose over
140
+ paragraphs describing each operation. The same applies to state keys, field
141
+ types, and any enumerable set. Tables are skimmable, diffable, and easy to keep
142
+ in sync when you add an action.
143
+
144
+ ## Write clear tool/action descriptions
145
+
146
+ Action descriptions are tool descriptions — they drive tool selection. Make each
147
+ one a precise, single-purpose sentence:
148
+
149
+ - Say what it does and what it returns, not how it's implemented.
150
+ - Describe each parameter in its `.describe()` so the agent fills it correctly.
151
+ - One responsibility per action. If a description needs "and also…", split it.
152
+ - Mark read-only actions (`readOnly: true` / `http: { method: "GET" }`) so the
153
+ agent knows they're safe to call freely.
154
+ - For provider-backed shortcuts, make clear they are convenience paths, not
155
+ capability ceilings. If arbitrary provider endpoints/filters may matter,
156
+ point instructions to `provider-api-catalog`, `provider-api-docs`, and
157
+ `provider-api-request` instead of implying the shortcut is all the agent can
158
+ do.
159
+
160
+ ```ts
161
+ defineAction({
162
+ description: "Create a project. Returns the new project id and title.",
163
+ schema: z.object({
164
+ title: z.string().min(1).describe("Project title shown in the sidebar"),
165
+ }),
166
+ // ...
167
+ });
168
+ ```
169
+
170
+ ## Bake in anti-fabrication and verify-before-done
171
+
172
+ App instructions should make honesty and verification the default behavior:
173
+
174
+ - **Never fabricate.** If data isn't found or an action fails, say so and recover
175
+ — don't invent results or claim success. Read the real value via an action or
176
+ query before reporting it.
177
+ - **Verify before declaring done.** After a change, confirm it with a read-back
178
+ (re-query the row, re-read the screen via `view-screen`) instead of assuming
179
+ the write worked.
180
+ - **Recover, don't give up.** On a recoverable error (a failed query, a transient
181
+ fetch), retry or fix the input rather than abandoning the task. Keep this
182
+ separate from the anti-fabrication rule — don't conflate "don't make things up"
183
+ with "stop at the first error."
184
+
185
+ Put these as core rules in `AGENTS.md` so they apply to every turn.
186
+
187
+ ## Bake in secrets hygiene
188
+
189
+ Instruction authors must make credential handling explicit anywhere an app,
190
+ skill, action, webhook, integration, or extension touches external services.
191
+ Write the rule in terms of values, not just files: never hardcode real API keys,
192
+ tokens, webhook URLs, signing secrets, OAuth refresh tokens, private
193
+ Builder/internal data, or customer data in source, docs, tests, fixtures,
194
+ prompts, screenshots, or generated content.
195
+
196
+ Examples may name credential keys such as `OPENAI_API_KEY` or `SLACK_WEBHOOK`,
197
+ but values must be placeholders (`<OPENAI_API_KEY>`, `${keys.SLACK_WEBHOOK}`) or
198
+ clearly fake test data. Tell agents which approved channel to use instead:
199
+ deployment env vars for deploy-level secrets, `app_secrets` /
200
+ `saveCredential` / `resolveCredential` for scoped API keys, `oauth_tokens` for
201
+ OAuth, and `${keys.NAME}` substitution for extension/automation outbound HTTP.
202
+
203
+ ## What goes where
204
+
205
+ - **AGENTS.md** — applies to the whole app, every turn: purpose, core rules,
206
+ state keys, action index, skills index.
207
+ - **Skills** — reusable how-to for a specific pattern, loaded on demand. Applies
208
+ to everyone working in the app.
209
+ - **Memory (`memory/MEMORY.md`)** — per-user preferences and corrections, not
210
+ authored guidance. See **capture-learnings**.
211
+
212
+ ## Do
213
+
214
+ - Keep `AGENTS.md` to roughly one screen of orientation; link out for depth.
215
+ - Update the action table and skills index whenever you add an action or skill.
216
+ - Write every SKILL.md description with an explicit "Use when…".
217
+ - Use tables for any enumerable set (actions, state keys, field types).
218
+
219
+ ## Don't
220
+
221
+ - Don't duplicate skill content inside `AGENTS.md` — point to the skill.
222
+ - Don't maintain two instruction files; symlink `CLAUDE.md` to `AGENTS.md`.
223
+ - Don't write vague descriptions ("helps with projects") — they won't trigger.
224
+ - Don't document niche/buried UI behaviors in instructions; let code and UI
225
+ carry those.
226
+ - Don't paste real credentials, credential-looking dummy strings, private
227
+ Builder/internal data, or customer data into examples. Use placeholders.
228
+
229
+ ## Related Skills
230
+
231
+ - **create-skill** — The skill format and templates this guide refers to.
232
+ - **adding-a-feature** — The four-area model (UI, actions, skills/instructions,
233
+ application state) every feature must satisfy.
234
+ - **actions** — How action descriptions become agent tools.
235
+ - **context-awareness** — Application-state keys and the `view-screen` pattern.
236
+ - **capture-learnings** — Where per-user learnings go instead of AGENTS.md.
@@ -23,7 +23,11 @@ agent should know.
23
23
  - Put shared code in `packages/shared` only when multiple apps need it.
24
24
  - Keep app-specific screens, actions, state, and skills inside `apps/<app>`.
25
25
  - Store shared runtime configuration in the workspace root `.env`; use
26
- `apps/<app>/.env` only for app-specific overrides.
26
+ `apps/<app>/.env` only for app-specific overrides. Never hardcode API keys,
27
+ tokens, webhook URLs, signing secrets, private Builder/internal data, customer
28
+ data, or credential-looking literals in source, docs, prompts, fixtures,
29
+ application state, action responses, or generated app content. Use
30
+ secrets/OAuth/runtime configuration and obvious placeholders in examples.
27
31
  - Prefer framework defaults until the workspace has a real custom rule,
28
32
  component, plugin, action, or skill to share.
29
33
  - Keep the Workspace files view for user-authored or user-requested resources.
@@ -43,8 +43,11 @@ coding agents can discover the same workspace-wide guidance from the root.
43
43
  - Keep application routes, actions, server plugins, and app state inside the
44
44
  relevant `apps/<app>` directory unless multiple apps need the same behavior.
45
45
  - Put reusable code in `packages/shared` only after at least two apps need it.
46
- - Never copy live credentials, personal email addresses, customer data, or
47
- company-specific placeholder values into source files.
46
+ - Never copy live credentials, API keys, tokens, webhook URLs, signing secrets,
47
+ personal email addresses, customer data, private Builder/internal data, or
48
+ company-specific placeholder values into source files, docs, prompts,
49
+ fixtures, application state, action responses, or generated app content. Use
50
+ secrets/OAuth/runtime configuration and obvious placeholders in examples.
48
51
 
49
52
  ## New Workspace Apps
50
53
 
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Server route handler for client-originated tracking events.
3
+ *
4
+ * The browser-side `track()` helper (see `client/track.ts`) POSTs
5
+ * `{ name, properties }` to `/_agent-native/track`. This handler validates the
6
+ * payload, resolves the caller's identity, and forwards the event to the same
7
+ * server-side provider registry that server code reaches through `track()`.
8
+ *
9
+ * It is deliberately best-effort: a malformed body is rejected with a 400, but
10
+ * provider delivery never throws back to the browser (the server `track()`
11
+ * already swallows provider errors). On success it returns 204 with no body.
12
+ *
13
+ * Security: this is an authenticated, first-party-only endpoint. It is mounted
14
+ * behind the framework CSRF middleware (which requires the
15
+ * `X-Agent-Native-CSRF` header / JSON content type / same-origin marker that
16
+ * the client helper always sends) and it requires a resolved session so it
17
+ * cannot be used as an open analytics relay. Events are attributed to the
18
+ * resolved `userId` (and `orgId` when the request has an active org), never to
19
+ * a client-supplied identity.
20
+ */
21
+ /** Max length of an event name. Mirrors typical provider limits. */
22
+ export declare const MAX_TRACK_EVENT_NAME_LENGTH = 200;
23
+ /** Max serialized size of the `properties` object, in bytes. */
24
+ export declare const MAX_TRACK_PROPERTIES_BYTES: number;
25
+ export interface TrackRouteValidationResult {
26
+ ok: boolean;
27
+ /** Present when `ok` is true. */
28
+ name?: string;
29
+ properties?: Record<string, unknown>;
30
+ /** Present when `ok` is false — a short, client-safe reason. */
31
+ error?: string;
32
+ }
33
+ /**
34
+ * Validate a client tracking payload. Pure and synchronous so it can be unit
35
+ * tested without standing up an h3 event.
36
+ *
37
+ * - `name` must be a non-empty string no longer than
38
+ * `MAX_TRACK_EVENT_NAME_LENGTH` characters.
39
+ * - `properties`, when present, must be a plain JSON object whose serialized
40
+ * size is at most `MAX_TRACK_PROPERTIES_BYTES` bytes.
41
+ */
42
+ export declare function validateTrackPayload(body: unknown): TrackRouteValidationResult;
43
+ //# sourceMappingURL=route.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../src/tracking/route.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,oEAAoE;AACpE,eAAO,MAAM,2BAA2B,MAAM,CAAC;AAE/C,gEAAgE;AAChE,eAAO,MAAM,0BAA0B,QAAY,CAAC;AAEpD,MAAM,WAAW,0BAA0B;IACzC,EAAE,EAAE,OAAO,CAAC;IACZ,iCAAiC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,gEAAgE;IAChE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAUD;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,OAAO,GACZ,0BAA0B,CAoD5B"}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * Server route handler for client-originated tracking events.
3
+ *
4
+ * The browser-side `track()` helper (see `client/track.ts`) POSTs
5
+ * `{ name, properties }` to `/_agent-native/track`. This handler validates the
6
+ * payload, resolves the caller's identity, and forwards the event to the same
7
+ * server-side provider registry that server code reaches through `track()`.
8
+ *
9
+ * It is deliberately best-effort: a malformed body is rejected with a 400, but
10
+ * provider delivery never throws back to the browser (the server `track()`
11
+ * already swallows provider errors). On success it returns 204 with no body.
12
+ *
13
+ * Security: this is an authenticated, first-party-only endpoint. It is mounted
14
+ * behind the framework CSRF middleware (which requires the
15
+ * `X-Agent-Native-CSRF` header / JSON content type / same-origin marker that
16
+ * the client helper always sends) and it requires a resolved session so it
17
+ * cannot be used as an open analytics relay. Events are attributed to the
18
+ * resolved `userId` (and `orgId` when the request has an active org), never to
19
+ * a client-supplied identity.
20
+ */
21
+ /** Max length of an event name. Mirrors typical provider limits. */
22
+ export const MAX_TRACK_EVENT_NAME_LENGTH = 200;
23
+ /** Max serialized size of the `properties` object, in bytes. */
24
+ export const MAX_TRACK_PROPERTIES_BYTES = 16 * 1024;
25
+ function isPlainObject(value) {
26
+ if (value === null || typeof value !== "object" || Array.isArray(value)) {
27
+ return false;
28
+ }
29
+ const proto = Object.getPrototypeOf(value);
30
+ return proto === Object.prototype || proto === null;
31
+ }
32
+ /**
33
+ * Validate a client tracking payload. Pure and synchronous so it can be unit
34
+ * tested without standing up an h3 event.
35
+ *
36
+ * - `name` must be a non-empty string no longer than
37
+ * `MAX_TRACK_EVENT_NAME_LENGTH` characters.
38
+ * - `properties`, when present, must be a plain JSON object whose serialized
39
+ * size is at most `MAX_TRACK_PROPERTIES_BYTES` bytes.
40
+ */
41
+ export function validateTrackPayload(body) {
42
+ if (!isPlainObject(body)) {
43
+ return { ok: false, error: "Request body must be a JSON object." };
44
+ }
45
+ const { name, properties } = body;
46
+ if (typeof name !== "string") {
47
+ return { ok: false, error: "`name` must be a string." };
48
+ }
49
+ const trimmed = name.trim();
50
+ if (!trimmed) {
51
+ return { ok: false, error: "`name` must be a non-empty string." };
52
+ }
53
+ if (trimmed.length > MAX_TRACK_EVENT_NAME_LENGTH) {
54
+ return {
55
+ ok: false,
56
+ error: `\`name\` must be at most ${MAX_TRACK_EVENT_NAME_LENGTH} characters.`,
57
+ };
58
+ }
59
+ if (properties !== undefined && !isPlainObject(properties)) {
60
+ return { ok: false, error: "`properties` must be a plain JSON object." };
61
+ }
62
+ let serializedProperties;
63
+ if (properties !== undefined) {
64
+ try {
65
+ serializedProperties = JSON.stringify(properties);
66
+ }
67
+ catch {
68
+ return { ok: false, error: "`properties` must be JSON-serializable." };
69
+ }
70
+ if (serializedProperties !== undefined &&
71
+ Buffer.byteLength(serializedProperties, "utf8") >
72
+ MAX_TRACK_PROPERTIES_BYTES) {
73
+ return {
74
+ ok: false,
75
+ error: `\`properties\` must serialize to at most ${MAX_TRACK_PROPERTIES_BYTES} bytes.`,
76
+ };
77
+ }
78
+ }
79
+ return {
80
+ ok: true,
81
+ name: trimmed,
82
+ properties: properties,
83
+ };
84
+ }
85
+ //# sourceMappingURL=route.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route.js","sourceRoot":"","sources":["../../src/tracking/route.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,oEAAoE;AACpE,MAAM,CAAC,MAAM,2BAA2B,GAAG,GAAG,CAAC;AAE/C,gEAAgE;AAChE,MAAM,CAAC,MAAM,0BAA0B,GAAG,EAAE,GAAG,IAAI,CAAC;AAWpD,SAAS,aAAa,CAAC,KAAc;IACnC,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACxE,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IAC3C,OAAO,KAAK,KAAK,MAAM,CAAC,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC;AACtD,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,oBAAoB,CAClC,IAAa;IAEb,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,qCAAqC,EAAE,CAAC;IACrE,CAAC;IAED,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,IAG5B,CAAC;IAEF,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,0BAA0B,EAAE,CAAC;IAC1D,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,oCAAoC,EAAE,CAAC;IACpE,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,GAAG,2BAA2B,EAAE,CAAC;QACjD,OAAO;YACL,EAAE,EAAE,KAAK;YACT,KAAK,EAAE,4BAA4B,2BAA2B,cAAc;SAC7E,CAAC;IACJ,CAAC;IAED,IAAI,UAAU,KAAK,SAAS,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3D,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,2CAA2C,EAAE,CAAC;IAC3E,CAAC;IAED,IAAI,oBAAwC,CAAC;IAC7C,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH,oBAAoB,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACpD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,yCAAyC,EAAE,CAAC;QACzE,CAAC;QACD,IACE,oBAAoB,KAAK,SAAS;YAClC,MAAM,CAAC,UAAU,CAAC,oBAAoB,EAAE,MAAM,CAAC;gBAC7C,0BAA0B,EAC5B,CAAC;YACD,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,KAAK,EAAE,4CAA4C,0BAA0B,SAAS;aACvF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO;QACL,EAAE,EAAE,IAAI;QACR,IAAI,EAAE,OAAO;QACb,UAAU,EAAE,UAAiD;KAC9D,CAAC;AACJ,CAAC","sourcesContent":["/**\n * Server route handler for client-originated tracking events.\n *\n * The browser-side `track()` helper (see `client/track.ts`) POSTs\n * `{ name, properties }` to `/_agent-native/track`. This handler validates the\n * payload, resolves the caller's identity, and forwards the event to the same\n * server-side provider registry that server code reaches through `track()`.\n *\n * It is deliberately best-effort: a malformed body is rejected with a 400, but\n * provider delivery never throws back to the browser (the server `track()`\n * already swallows provider errors). On success it returns 204 with no body.\n *\n * Security: this is an authenticated, first-party-only endpoint. It is mounted\n * behind the framework CSRF middleware (which requires the\n * `X-Agent-Native-CSRF` header / JSON content type / same-origin marker that\n * the client helper always sends) and it requires a resolved session so it\n * cannot be used as an open analytics relay. Events are attributed to the\n * resolved `userId` (and `orgId` when the request has an active org), never to\n * a client-supplied identity.\n */\n\n/** Max length of an event name. Mirrors typical provider limits. */\nexport const MAX_TRACK_EVENT_NAME_LENGTH = 200;\n\n/** Max serialized size of the `properties` object, in bytes. */\nexport const MAX_TRACK_PROPERTIES_BYTES = 16 * 1024;\n\nexport interface TrackRouteValidationResult {\n ok: boolean;\n /** Present when `ok` is true. */\n name?: string;\n properties?: Record<string, unknown>;\n /** Present when `ok` is false — a short, client-safe reason. */\n error?: string;\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n if (value === null || typeof value !== \"object\" || Array.isArray(value)) {\n return false;\n }\n const proto = Object.getPrototypeOf(value);\n return proto === Object.prototype || proto === null;\n}\n\n/**\n * Validate a client tracking payload. Pure and synchronous so it can be unit\n * tested without standing up an h3 event.\n *\n * - `name` must be a non-empty string no longer than\n * `MAX_TRACK_EVENT_NAME_LENGTH` characters.\n * - `properties`, when present, must be a plain JSON object whose serialized\n * size is at most `MAX_TRACK_PROPERTIES_BYTES` bytes.\n */\nexport function validateTrackPayload(\n body: unknown,\n): TrackRouteValidationResult {\n if (!isPlainObject(body)) {\n return { ok: false, error: \"Request body must be a JSON object.\" };\n }\n\n const { name, properties } = body as {\n name?: unknown;\n properties?: unknown;\n };\n\n if (typeof name !== \"string\") {\n return { ok: false, error: \"`name` must be a string.\" };\n }\n const trimmed = name.trim();\n if (!trimmed) {\n return { ok: false, error: \"`name` must be a non-empty string.\" };\n }\n if (trimmed.length > MAX_TRACK_EVENT_NAME_LENGTH) {\n return {\n ok: false,\n error: `\\`name\\` must be at most ${MAX_TRACK_EVENT_NAME_LENGTH} characters.`,\n };\n }\n\n if (properties !== undefined && !isPlainObject(properties)) {\n return { ok: false, error: \"`properties` must be a plain JSON object.\" };\n }\n\n let serializedProperties: string | undefined;\n if (properties !== undefined) {\n try {\n serializedProperties = JSON.stringify(properties);\n } catch {\n return { ok: false, error: \"`properties` must be JSON-serializable.\" };\n }\n if (\n serializedProperties !== undefined &&\n Buffer.byteLength(serializedProperties, \"utf8\") >\n MAX_TRACK_PROPERTIES_BYTES\n ) {\n return {\n ok: false,\n error: `\\`properties\\` must serialize to at most ${MAX_TRACK_PROPERTIES_BYTES} bytes.`,\n };\n }\n }\n\n return {\n ok: true,\n name: trimmed,\n properties: properties as Record<string, unknown> | undefined,\n };\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/vite/client.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAU,UAAU,EAAE,MAAM,MAAM,CAAC;AAmB/C,OAAO,EAEL,KAAK,iCAAiC,EACvC,MAAM,kCAAkC,CAAC;AA2Z1C,MAAM,WAAW,YAAY;IAC3B,sGAAsG;IACtG,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,6DAA6D;IAC7D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oEAAoE;IACpE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4CAA4C;IAC5C,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,yCAAyC;IACzC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6DAA6D;IAC7D,YAAY,CAAC,EAAE,WAAW,CAAC,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;IAC9E,oGAAoG;IACpG,QAAQ,CAAC,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC;IAClC,8BAA8B;IAC9B,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC;IAChB,iDAAiD;IACjD,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,+BAA+B;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,iDAAiD;IACjD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gCAAgC;IAChC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,kCAAkC;IAClC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,iDAAiD;IACjD,YAAY,CAAC,EAAE,WAAW,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC;IACvD,wCAAwC;IACxC,MAAM,CAAC,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC9B;;;;;;;;OAQG;IACH,WAAW,CAAC,EAAE,iCAAiC,CAAC;IAChD;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;;;;;;;;;;;OAcG;IACH,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB;;;;;;;;OAQG;IACH,WAAW,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjD;AA+dD,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,IAAI,EAAE,MAAM,GAAG,SAAS,GACvB,MAAM,GAAG,SAAS,CAMpB;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GAAG,SAAS,GACvB,OAAO,CAWT;AAoMD;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,OAAO,GAAE,mBAAwB,GAAG,UAAU,CA4Q1E"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/vite/client.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAU,UAAU,EAAE,MAAM,MAAM,CAAC;AAmB/C,OAAO,EAEL,KAAK,iCAAiC,EACvC,MAAM,kCAAkC,CAAC;AAka1C,MAAM,WAAW,YAAY;IAC3B,sGAAsG;IACtG,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,6DAA6D;IAC7D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oEAAoE;IACpE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4CAA4C;IAC5C,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,yCAAyC;IACzC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6DAA6D;IAC7D,YAAY,CAAC,EAAE,WAAW,CAAC,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;IAC9E,oGAAoG;IACpG,QAAQ,CAAC,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC;IAClC,8BAA8B;IAC9B,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC;IAChB,iDAAiD;IACjD,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,+BAA+B;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,iDAAiD;IACjD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gCAAgC;IAChC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,kCAAkC;IAClC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,iDAAiD;IACjD,YAAY,CAAC,EAAE,WAAW,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC;IACvD,wCAAwC;IACxC,MAAM,CAAC,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC9B;;;;;;;;OAQG;IACH,WAAW,CAAC,EAAE,iCAAiC,CAAC;IAChD;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;;;;;;;;;;;OAcG;IACH,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB;;;;;;;;OAQG;IACH,WAAW,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjD;AA+dD,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,IAAI,EAAE,MAAM,GAAG,SAAS,GACvB,MAAM,GAAG,SAAS,CAMpB;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GAAG,SAAS,GACvB,OAAO,CAWT;AAoMD;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,OAAO,GAAE,mBAAwB,GAAG,UAAU,CAuR1E"}
@@ -191,6 +191,8 @@ function findCoreSrcDir(cwd) {
191
191
  const CORE_CLIENT_SUBPATHS = [
192
192
  "@agent-native/core",
193
193
  "@agent-native/core/client",
194
+ "@agent-native/core/blocks",
195
+ "@agent-native/core/blocks/server",
194
196
  "@agent-native/core/client/extensions",
195
197
  "@agent-native/core/client/tools", // legacy alias
196
198
  "@agent-native/core/client/org",
@@ -295,6 +297,8 @@ function getCoreSourceAliases(cwd) {
295
297
  "@agent-native/core": path.join(coreSrc, "index.browser.ts"),
296
298
  "@agent-native/core/server": path.join(coreSrc, "server/index.ts"),
297
299
  "@agent-native/core/client": path.join(coreSrc, "client/index.ts"),
300
+ "@agent-native/core/blocks": path.join(coreSrc, "client/blocks/index.ts"),
301
+ "@agent-native/core/blocks/server": path.join(coreSrc, "client/blocks/server.ts"),
298
302
  "@agent-native/core/client/extensions": path.join(coreSrc, "client/extensions/index.ts"),
299
303
  // Legacy alias — see exports map note above.
300
304
  "@agent-native/core/client/tools": path.join(coreSrc, "client/extensions/index.ts"),
@@ -1175,6 +1179,17 @@ export function defineConfig(options = {}) {
1175
1179
  nitroVitePlugin({
1176
1180
  serverDir: "./server",
1177
1181
  ...(options.nitro ?? {}),
1182
+ // Never auto-load test files as server handlers/plugins/middleware.
1183
+ // Nitro scans server/{plugins,middleware,routes,api}/*; a co-located
1184
+ // *.spec.ts would otherwise be loaded at runtime and crash the server
1185
+ // (its top-level vitest calls throw). Keep tests next to their source safely.
1186
+ ignore: [
1187
+ ...(options.nitro?.ignore ?? []),
1188
+ "**/*.spec.ts",
1189
+ "**/*.spec.tsx",
1190
+ "**/*.test.ts",
1191
+ "**/*.test.tsx",
1192
+ ],
1178
1193
  routeRules: {
1179
1194
  ...mcpEmbedStaticAssetRouteRules(appBasePath),
1180
1195
  ...(options.nitro