@agent-native/core 0.15.12 → 0.16.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 (411) hide show
  1. package/README.md +37 -0
  2. package/dist/agent/app-model-defaults.d.ts +37 -0
  3. package/dist/agent/app-model-defaults.d.ts.map +1 -0
  4. package/dist/agent/app-model-defaults.js +136 -0
  5. package/dist/agent/app-model-defaults.js.map +1 -0
  6. package/dist/agent/engine/registry.d.ts +12 -7
  7. package/dist/agent/engine/registry.d.ts.map +1 -1
  8. package/dist/agent/engine/registry.js +28 -8
  9. package/dist/agent/engine/registry.js.map +1 -1
  10. package/dist/agent/production-agent.d.ts +2 -0
  11. package/dist/agent/production-agent.d.ts.map +1 -1
  12. package/dist/agent/production-agent.js +3 -1
  13. package/dist/agent/production-agent.js.map +1 -1
  14. package/dist/browser-sessions/actions.d.ts +7 -0
  15. package/dist/browser-sessions/actions.d.ts.map +1 -0
  16. package/dist/browser-sessions/actions.js +223 -0
  17. package/dist/browser-sessions/actions.js.map +1 -0
  18. package/dist/browser-sessions/routes.d.ts +7 -0
  19. package/dist/browser-sessions/routes.d.ts.map +1 -0
  20. package/dist/browser-sessions/routes.js +159 -0
  21. package/dist/browser-sessions/routes.js.map +1 -0
  22. package/dist/browser-sessions/store.d.ts +33 -0
  23. package/dist/browser-sessions/store.d.ts.map +1 -0
  24. package/dist/browser-sessions/store.js +506 -0
  25. package/dist/browser-sessions/store.js.map +1 -0
  26. package/dist/browser-sessions/types.d.ts +68 -0
  27. package/dist/browser-sessions/types.d.ts.map +1 -0
  28. package/dist/browser-sessions/types.js +2 -0
  29. package/dist/browser-sessions/types.js.map +1 -0
  30. package/dist/cli/code-agent-commands.d.ts +36 -0
  31. package/dist/cli/code-agent-commands.d.ts.map +1 -0
  32. package/dist/cli/code-agent-commands.js +192 -0
  33. package/dist/cli/code-agent-commands.js.map +1 -0
  34. package/dist/cli/code-agent-connector.d.ts +17 -0
  35. package/dist/cli/code-agent-connector.d.ts.map +1 -0
  36. package/dist/cli/code-agent-connector.js +724 -0
  37. package/dist/cli/code-agent-connector.js.map +1 -0
  38. package/dist/cli/code-agent-executor.d.ts +31 -0
  39. package/dist/cli/code-agent-executor.d.ts.map +1 -0
  40. package/dist/cli/code-agent-executor.js +921 -0
  41. package/dist/cli/code-agent-executor.js.map +1 -0
  42. package/dist/cli/code-agent-runs.d.ts +102 -0
  43. package/dist/cli/code-agent-runs.d.ts.map +1 -0
  44. package/dist/cli/code-agent-runs.js +277 -0
  45. package/dist/cli/code-agent-runs.js.map +1 -0
  46. package/dist/cli/code.d.ts +66 -0
  47. package/dist/cli/code.d.ts.map +1 -0
  48. package/dist/cli/code.js +1306 -0
  49. package/dist/cli/code.js.map +1 -0
  50. package/dist/cli/create.d.ts +2 -1
  51. package/dist/cli/create.d.ts.map +1 -1
  52. package/dist/cli/create.js +11 -1
  53. package/dist/cli/create.js.map +1 -1
  54. package/dist/cli/index.js +26 -1
  55. package/dist/cli/index.js.map +1 -1
  56. package/dist/cli/migrate.d.ts +27 -0
  57. package/dist/cli/migrate.d.ts.map +1 -1
  58. package/dist/cli/migrate.js +1328 -20
  59. package/dist/cli/migrate.js.map +1 -1
  60. package/dist/cli/templates-meta.d.ts.map +1 -1
  61. package/dist/cli/templates-meta.js +27 -3
  62. package/dist/cli/templates-meta.js.map +1 -1
  63. package/dist/cli/workspacify.d.ts +2 -0
  64. package/dist/cli/workspacify.d.ts.map +1 -1
  65. package/dist/cli/workspacify.js +2 -1
  66. package/dist/cli/workspacify.js.map +1 -1
  67. package/dist/client/AgentNative.d.ts +32 -0
  68. package/dist/client/AgentNative.d.ts.map +1 -0
  69. package/dist/client/AgentNative.js +79 -0
  70. package/dist/client/AgentNative.js.map +1 -0
  71. package/dist/client/AgentNativeEmbedded.d.ts +47 -0
  72. package/dist/client/AgentNativeEmbedded.d.ts.map +1 -0
  73. package/dist/client/AgentNativeEmbedded.js +148 -0
  74. package/dist/client/AgentNativeEmbedded.js.map +1 -0
  75. package/dist/client/AgentNativeFrame.d.ts +25 -0
  76. package/dist/client/AgentNativeFrame.d.ts.map +1 -0
  77. package/dist/client/AgentNativeFrame.js +68 -0
  78. package/dist/client/AgentNativeFrame.js.map +1 -0
  79. package/dist/client/AgentPanel.d.ts +19 -2
  80. package/dist/client/AgentPanel.d.ts.map +1 -1
  81. package/dist/client/AgentPanel.js +15 -4
  82. package/dist/client/AgentPanel.js.map +1 -1
  83. package/dist/client/AssistantChat.d.ts +1 -1
  84. package/dist/client/AssistantChat.d.ts.map +1 -1
  85. package/dist/client/AssistantChat.js +79 -48
  86. package/dist/client/AssistantChat.js.map +1 -1
  87. package/dist/client/MultiTabAssistantChat.d.ts.map +1 -1
  88. package/dist/client/MultiTabAssistantChat.js +2 -1
  89. package/dist/client/MultiTabAssistantChat.js.map +1 -1
  90. package/dist/client/NewWorkspaceAppFlow.d.ts.map +1 -1
  91. package/dist/client/NewWorkspaceAppFlow.js +3 -2
  92. package/dist/client/NewWorkspaceAppFlow.js.map +1 -1
  93. package/dist/client/browser-session-bridge.d.ts +44 -0
  94. package/dist/client/browser-session-bridge.d.ts.map +1 -0
  95. package/dist/client/browser-session-bridge.js +339 -0
  96. package/dist/client/browser-session-bridge.js.map +1 -0
  97. package/dist/client/client-action.d.ts +7 -0
  98. package/dist/client/client-action.d.ts.map +1 -0
  99. package/dist/client/client-action.js +4 -0
  100. package/dist/client/client-action.js.map +1 -0
  101. package/dist/client/components/ui/tooltip.d.ts.map +1 -1
  102. package/dist/client/components/ui/tooltip.js +1 -1
  103. package/dist/client/components/ui/tooltip.js.map +1 -1
  104. package/dist/client/composer/AgentComposerFrame.d.ts +17 -0
  105. package/dist/client/composer/AgentComposerFrame.d.ts.map +1 -0
  106. package/dist/client/composer/AgentComposerFrame.js +14 -0
  107. package/dist/client/composer/AgentComposerFrame.js.map +1 -0
  108. package/dist/client/composer/MentionPopover.d.ts.map +1 -1
  109. package/dist/client/composer/MentionPopover.js +2 -2
  110. package/dist/client/composer/MentionPopover.js.map +1 -1
  111. package/dist/client/composer/PromptComposer.d.ts +35 -2
  112. package/dist/client/composer/PromptComposer.d.ts.map +1 -1
  113. package/dist/client/composer/PromptComposer.js +31 -17
  114. package/dist/client/composer/PromptComposer.js.map +1 -1
  115. package/dist/client/composer/TiptapComposer.d.ts +20 -2
  116. package/dist/client/composer/TiptapComposer.d.ts.map +1 -1
  117. package/dist/client/composer/TiptapComposer.js +112 -22
  118. package/dist/client/composer/TiptapComposer.js.map +1 -1
  119. package/dist/client/composer/index.d.ts +3 -2
  120. package/dist/client/composer/index.d.ts.map +1 -1
  121. package/dist/client/composer/index.js +1 -0
  122. package/dist/client/composer/index.js.map +1 -1
  123. package/dist/client/composer/types.d.ts +1 -0
  124. package/dist/client/composer/types.d.ts.map +1 -1
  125. package/dist/client/composer/types.js.map +1 -1
  126. package/dist/client/extensions/AgentNativeExtensionFrame.d.ts +58 -0
  127. package/dist/client/extensions/AgentNativeExtensionFrame.d.ts.map +1 -0
  128. package/dist/client/extensions/AgentNativeExtensionFrame.e2e-host.d.ts +2 -0
  129. package/dist/client/extensions/AgentNativeExtensionFrame.e2e-host.d.ts.map +1 -0
  130. package/dist/client/extensions/AgentNativeExtensionFrame.e2e-host.js +110 -0
  131. package/dist/client/extensions/AgentNativeExtensionFrame.e2e-host.js.map +1 -0
  132. package/dist/client/extensions/AgentNativeExtensionFrame.js +354 -0
  133. package/dist/client/extensions/AgentNativeExtensionFrame.js.map +1 -0
  134. package/dist/client/extensions/AgentNativeExtensionFrame.spec.d.ts +2 -0
  135. package/dist/client/extensions/AgentNativeExtensionFrame.spec.d.ts.map +1 -0
  136. package/dist/client/extensions/AgentNativeExtensionFrame.spec.js +68 -0
  137. package/dist/client/extensions/AgentNativeExtensionFrame.spec.js.map +1 -0
  138. package/dist/client/extensions/agent-native-extension-runtime.d.ts +69 -0
  139. package/dist/client/extensions/agent-native-extension-runtime.d.ts.map +1 -0
  140. package/dist/client/extensions/agent-native-extension-runtime.js +348 -0
  141. package/dist/client/extensions/agent-native-extension-runtime.js.map +1 -0
  142. package/dist/client/extensions/index.d.ts +2 -0
  143. package/dist/client/extensions/index.d.ts.map +1 -1
  144. package/dist/client/extensions/index.js +2 -0
  145. package/dist/client/extensions/index.js.map +1 -1
  146. package/dist/client/extensions/portable-extension.d.ts +86 -0
  147. package/dist/client/extensions/portable-extension.d.ts.map +1 -0
  148. package/dist/client/extensions/portable-extension.js +480 -0
  149. package/dist/client/extensions/portable-extension.js.map +1 -0
  150. package/dist/client/host-bridge.d.ts +266 -0
  151. package/dist/client/host-bridge.d.ts.map +1 -0
  152. package/dist/client/host-bridge.js +745 -0
  153. package/dist/client/host-bridge.js.map +1 -0
  154. package/dist/client/host-tools.d.ts +40 -0
  155. package/dist/client/host-tools.d.ts.map +1 -0
  156. package/dist/client/host-tools.js +94 -0
  157. package/dist/client/host-tools.js.map +1 -0
  158. package/dist/client/index.d.ts +13 -2
  159. package/dist/client/index.d.ts.map +1 -1
  160. package/dist/client/index.js +11 -2
  161. package/dist/client/index.js.map +1 -1
  162. package/dist/client/resources/BuiltinCapabilityDetail.d.ts +10 -0
  163. package/dist/client/resources/BuiltinCapabilityDetail.d.ts.map +1 -0
  164. package/dist/client/resources/BuiltinCapabilityDetail.js +51 -0
  165. package/dist/client/resources/BuiltinCapabilityDetail.js.map +1 -0
  166. package/dist/client/resources/ResourceEditor.d.ts +3 -1
  167. package/dist/client/resources/ResourceEditor.d.ts.map +1 -1
  168. package/dist/client/resources/ResourceEditor.js +40 -17
  169. package/dist/client/resources/ResourceEditor.js.map +1 -1
  170. package/dist/client/resources/ResourceTree.d.ts.map +1 -1
  171. package/dist/client/resources/ResourceTree.js +23 -2
  172. package/dist/client/resources/ResourceTree.js.map +1 -1
  173. package/dist/client/resources/ResourcesPanel.d.ts.map +1 -1
  174. package/dist/client/resources/ResourcesPanel.js +77 -17
  175. package/dist/client/resources/ResourcesPanel.js.map +1 -1
  176. package/dist/client/resources/index.d.ts +1 -0
  177. package/dist/client/resources/index.d.ts.map +1 -1
  178. package/dist/client/resources/index.js +1 -0
  179. package/dist/client/resources/index.js.map +1 -1
  180. package/dist/client/resources/use-builtin-capabilities.d.ts +62 -0
  181. package/dist/client/resources/use-builtin-capabilities.d.ts.map +1 -0
  182. package/dist/client/resources/use-builtin-capabilities.js +54 -0
  183. package/dist/client/resources/use-builtin-capabilities.js.map +1 -0
  184. package/dist/client/resources/use-resources.d.ts +30 -2
  185. package/dist/client/resources/use-resources.d.ts.map +1 -1
  186. package/dist/client/resources/use-resources.js +42 -1
  187. package/dist/client/resources/use-resources.js.map +1 -1
  188. package/dist/client/settings/SettingsPanel.d.ts.map +1 -1
  189. package/dist/client/settings/SettingsPanel.js +151 -2
  190. package/dist/client/settings/SettingsPanel.js.map +1 -1
  191. package/dist/client/use-chat-models.d.ts.map +1 -1
  192. package/dist/client/use-chat-models.js +20 -0
  193. package/dist/client/use-chat-models.js.map +1 -1
  194. package/dist/client/use-chat-threads.d.ts.map +1 -1
  195. package/dist/client/use-chat-threads.js +46 -2
  196. package/dist/client/use-chat-threads.js.map +1 -1
  197. package/dist/client/use-chat-threads.spec.js +77 -0
  198. package/dist/client/use-chat-threads.spec.js.map +1 -1
  199. package/dist/code-agents/index.d.ts +4 -0
  200. package/dist/code-agents/index.d.ts.map +1 -0
  201. package/dist/code-agents/index.js +4 -0
  202. package/dist/code-agents/index.js.map +1 -0
  203. package/dist/connections/catalog.d.ts +134 -0
  204. package/dist/connections/catalog.d.ts.map +1 -0
  205. package/dist/connections/catalog.js +180 -0
  206. package/dist/connections/catalog.js.map +1 -0
  207. package/dist/connections/index.d.ts +2 -0
  208. package/dist/connections/index.d.ts.map +1 -0
  209. package/dist/connections/index.js +2 -0
  210. package/dist/connections/index.js.map +1 -0
  211. package/dist/extensions/change-marker.d.ts +10 -0
  212. package/dist/extensions/change-marker.d.ts.map +1 -0
  213. package/dist/extensions/change-marker.js +42 -0
  214. package/dist/extensions/change-marker.js.map +1 -0
  215. package/dist/extensions/routes.d.ts.map +1 -1
  216. package/dist/extensions/routes.js +1 -7
  217. package/dist/extensions/routes.js.map +1 -1
  218. package/dist/extensions/schema.d.ts +1 -0
  219. package/dist/extensions/schema.d.ts.map +1 -1
  220. package/dist/extensions/schema.js +1 -0
  221. package/dist/extensions/schema.js.map +1 -1
  222. package/dist/extensions/slots/routes.js +1 -1
  223. package/dist/extensions/slots/routes.js.map +1 -1
  224. package/dist/extensions/store.d.ts +3 -0
  225. package/dist/extensions/store.d.ts.map +1 -1
  226. package/dist/extensions/store.js +112 -4
  227. package/dist/extensions/store.js.map +1 -1
  228. package/dist/index.d.ts +4 -1
  229. package/dist/index.d.ts.map +1 -1
  230. package/dist/index.js +6 -1
  231. package/dist/index.js.map +1 -1
  232. package/dist/integrations/adapters/telegram.d.ts.map +1 -1
  233. package/dist/integrations/adapters/telegram.js +1 -0
  234. package/dist/integrations/adapters/telegram.js.map +1 -1
  235. package/dist/integrations/index.d.ts +5 -1
  236. package/dist/integrations/index.d.ts.map +1 -1
  237. package/dist/integrations/index.js +4 -1
  238. package/dist/integrations/index.js.map +1 -1
  239. package/dist/integrations/plugin.d.ts +8 -0
  240. package/dist/integrations/plugin.d.ts.map +1 -1
  241. package/dist/integrations/plugin.js +760 -32
  242. package/dist/integrations/plugin.js.map +1 -1
  243. package/dist/integrations/remote-commands-store.d.ts +36 -0
  244. package/dist/integrations/remote-commands-store.d.ts.map +1 -0
  245. package/dist/integrations/remote-commands-store.js +273 -0
  246. package/dist/integrations/remote-commands-store.js.map +1 -0
  247. package/dist/integrations/remote-devices-store.d.ts +43 -0
  248. package/dist/integrations/remote-devices-store.d.ts.map +1 -0
  249. package/dist/integrations/remote-devices-store.js +315 -0
  250. package/dist/integrations/remote-devices-store.js.map +1 -0
  251. package/dist/integrations/remote-push-store.d.ts +37 -0
  252. package/dist/integrations/remote-push-store.d.ts.map +1 -0
  253. package/dist/integrations/remote-push-store.js +299 -0
  254. package/dist/integrations/remote-push-store.js.map +1 -0
  255. package/dist/integrations/remote-retry-job.d.ts +7 -0
  256. package/dist/integrations/remote-retry-job.d.ts.map +1 -0
  257. package/dist/integrations/remote-retry-job.js +45 -0
  258. package/dist/integrations/remote-retry-job.js.map +1 -0
  259. package/dist/integrations/remote-run-events-store.d.ts +18 -0
  260. package/dist/integrations/remote-run-events-store.d.ts.map +1 -0
  261. package/dist/integrations/remote-run-events-store.js +82 -0
  262. package/dist/integrations/remote-run-events-store.js.map +1 -0
  263. package/dist/integrations/remote-types.d.ts +101 -0
  264. package/dist/integrations/remote-types.d.ts.map +1 -0
  265. package/dist/integrations/remote-types.js +2 -0
  266. package/dist/integrations/remote-types.js.map +1 -0
  267. package/dist/integrations/webhook-handler.d.ts +2 -0
  268. package/dist/integrations/webhook-handler.d.ts.map +1 -1
  269. package/dist/integrations/webhook-handler.js +4 -1
  270. package/dist/integrations/webhook-handler.js.map +1 -1
  271. package/dist/jobs/scheduler.d.ts +4 -2
  272. package/dist/jobs/scheduler.d.ts.map +1 -1
  273. package/dist/jobs/scheduler.js +9 -3
  274. package/dist/jobs/scheduler.js.map +1 -1
  275. package/dist/mcp-client/builtin-capabilities.d.ts +20 -0
  276. package/dist/mcp-client/builtin-capabilities.d.ts.map +1 -0
  277. package/dist/mcp-client/builtin-capabilities.js +75 -0
  278. package/dist/mcp-client/builtin-capabilities.js.map +1 -0
  279. package/dist/mcp-client/builtin-store.d.ts +10 -0
  280. package/dist/mcp-client/builtin-store.d.ts.map +1 -0
  281. package/dist/mcp-client/builtin-store.js +55 -0
  282. package/dist/mcp-client/builtin-store.js.map +1 -0
  283. package/dist/mcp-client/index.d.ts +3 -1
  284. package/dist/mcp-client/index.d.ts.map +1 -1
  285. package/dist/mcp-client/index.js +3 -1
  286. package/dist/mcp-client/index.js.map +1 -1
  287. package/dist/mcp-client/routes.d.ts +28 -0
  288. package/dist/mcp-client/routes.d.ts.map +1 -1
  289. package/dist/mcp-client/routes.js +195 -1
  290. package/dist/mcp-client/routes.js.map +1 -1
  291. package/dist/org/context.d.ts.map +1 -1
  292. package/dist/org/context.js +34 -0
  293. package/dist/org/context.js.map +1 -1
  294. package/dist/resources/handlers.d.ts +4 -0
  295. package/dist/resources/handlers.d.ts.map +1 -1
  296. package/dist/resources/handlers.js +46 -7
  297. package/dist/resources/handlers.js.map +1 -1
  298. package/dist/resources/script-helpers.d.ts +8 -1
  299. package/dist/resources/script-helpers.d.ts.map +1 -1
  300. package/dist/resources/script-helpers.js +18 -8
  301. package/dist/resources/script-helpers.js.map +1 -1
  302. package/dist/resources/store.d.ts +19 -0
  303. package/dist/resources/store.d.ts.map +1 -1
  304. package/dist/resources/store.js +86 -3
  305. package/dist/resources/store.js.map +1 -1
  306. package/dist/scripts/agent-engines/list-agent-engines.d.ts +1 -1
  307. package/dist/scripts/agent-engines/list-agent-engines.d.ts.map +1 -1
  308. package/dist/scripts/agent-engines/list-agent-engines.js +18 -7
  309. package/dist/scripts/agent-engines/list-agent-engines.js.map +1 -1
  310. package/dist/scripts/agent-engines/manage-agent-engine.d.ts.map +1 -1
  311. package/dist/scripts/agent-engines/manage-agent-engine.js +100 -7
  312. package/dist/scripts/agent-engines/manage-agent-engine.js.map +1 -1
  313. package/dist/scripts/resources/delete.d.ts.map +1 -1
  314. package/dist/scripts/resources/delete.js +4 -1
  315. package/dist/scripts/resources/delete.js.map +1 -1
  316. package/dist/scripts/resources/effective.d.ts +11 -0
  317. package/dist/scripts/resources/effective.d.ts.map +1 -0
  318. package/dist/scripts/resources/effective.js +54 -0
  319. package/dist/scripts/resources/effective.js.map +1 -0
  320. package/dist/scripts/resources/index.d.ts.map +1 -1
  321. package/dist/scripts/resources/index.js +1 -0
  322. package/dist/scripts/resources/index.js.map +1 -1
  323. package/dist/scripts/resources/list.d.ts +1 -1
  324. package/dist/scripts/resources/list.d.ts.map +1 -1
  325. package/dist/scripts/resources/list.js +17 -5
  326. package/dist/scripts/resources/list.js.map +1 -1
  327. package/dist/scripts/resources/read.d.ts +1 -1
  328. package/dist/scripts/resources/read.d.ts.map +1 -1
  329. package/dist/scripts/resources/read.js +20 -5
  330. package/dist/scripts/resources/read.js.map +1 -1
  331. package/dist/scripts/resources/write.d.ts.map +1 -1
  332. package/dist/scripts/resources/write.js +4 -1
  333. package/dist/scripts/resources/write.js.map +1 -1
  334. package/dist/scripts/runner.d.ts +11 -1
  335. package/dist/scripts/runner.d.ts.map +1 -1
  336. package/dist/scripts/runner.js +75 -27
  337. package/dist/scripts/runner.js.map +1 -1
  338. package/dist/server/action-discovery.d.ts.map +1 -1
  339. package/dist/server/action-discovery.js +5 -0
  340. package/dist/server/action-discovery.js.map +1 -1
  341. package/dist/server/agent-chat-plugin.d.ts +24 -0
  342. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  343. package/dist/server/agent-chat-plugin.js +608 -54
  344. package/dist/server/agent-chat-plugin.js.map +1 -1
  345. package/dist/server/core-routes-plugin.d.ts.map +1 -1
  346. package/dist/server/core-routes-plugin.js +2 -0
  347. package/dist/server/core-routes-plugin.js.map +1 -1
  348. package/dist/server/embedded.d.ts +72 -0
  349. package/dist/server/embedded.d.ts.map +1 -0
  350. package/dist/server/embedded.js +119 -0
  351. package/dist/server/embedded.js.map +1 -0
  352. package/dist/server/index.d.ts +8 -1
  353. package/dist/server/index.d.ts.map +1 -1
  354. package/dist/server/index.js +7 -1
  355. package/dist/server/index.js.map +1 -1
  356. package/dist/server/poll.d.ts.map +1 -1
  357. package/dist/server/poll.js +184 -13
  358. package/dist/server/poll.js.map +1 -1
  359. package/dist/server/resources-plugin.d.ts.map +1 -1
  360. package/dist/server/resources-plugin.js +11 -2
  361. package/dist/server/resources-plugin.js.map +1 -1
  362. package/dist/sharing/actions/extension-change.d.ts +4 -0
  363. package/dist/sharing/actions/extension-change.d.ts.map +1 -0
  364. package/dist/sharing/actions/extension-change.js +13 -0
  365. package/dist/sharing/actions/extension-change.js.map +1 -0
  366. package/dist/sharing/actions/set-resource-visibility.d.ts.map +1 -1
  367. package/dist/sharing/actions/set-resource-visibility.js +3 -0
  368. package/dist/sharing/actions/set-resource-visibility.js.map +1 -1
  369. package/dist/sharing/actions/share-resource.d.ts.map +1 -1
  370. package/dist/sharing/actions/share-resource.js +4 -0
  371. package/dist/sharing/actions/share-resource.js.map +1 -1
  372. package/dist/sharing/actions/unshare-resource.d.ts.map +1 -1
  373. package/dist/sharing/actions/unshare-resource.js +3 -0
  374. package/dist/sharing/actions/unshare-resource.js.map +1 -1
  375. package/dist/templates/default/AGENTS.md +3 -3
  376. package/dist/templates/workspace-core/AGENTS.md +7 -0
  377. package/dist/templates/workspace-root/AGENTS.md +7 -0
  378. package/dist/templates/workspace-root/README.md +25 -0
  379. package/dist/triggers/dispatcher.d.ts +3 -1
  380. package/dist/triggers/dispatcher.d.ts.map +1 -1
  381. package/dist/triggers/dispatcher.js +9 -3
  382. package/dist/triggers/dispatcher.js.map +1 -1
  383. package/dist/workspace-connections/index.d.ts +2 -0
  384. package/dist/workspace-connections/index.d.ts.map +1 -0
  385. package/dist/workspace-connections/index.js +2 -0
  386. package/dist/workspace-connections/index.js.map +1 -0
  387. package/dist/workspace-connections/store.d.ts +229 -0
  388. package/dist/workspace-connections/store.d.ts.map +1 -0
  389. package/dist/workspace-connections/store.js +938 -0
  390. package/dist/workspace-connections/store.js.map +1 -0
  391. package/docs/content/agent-teams.md +6 -0
  392. package/docs/content/cloneable-saas.md +1 -0
  393. package/docs/content/code-agents-ui.md +261 -0
  394. package/docs/content/dispatch.md +40 -3
  395. package/docs/content/embedding-sdk.md +459 -0
  396. package/docs/content/faq.md +1 -0
  397. package/docs/content/getting-started.md +1 -0
  398. package/docs/content/mcp-clients.md +41 -3
  399. package/docs/content/migration-workbench.md +237 -54
  400. package/docs/content/multi-app-workspace.md +41 -0
  401. package/docs/content/multi-tenancy.md +1 -1
  402. package/docs/content/template-brain.md +418 -0
  403. package/docs/content/template-dispatch.md +30 -0
  404. package/docs/content/workspace-connections.md +509 -0
  405. package/docs/content/workspace-management.md +12 -12
  406. package/docs/content/workspace.md +180 -40
  407. package/package.json +7 -2
  408. package/src/templates/default/AGENTS.md +3 -3
  409. package/src/templates/workspace-core/AGENTS.md +7 -0
  410. package/src/templates/workspace-root/AGENTS.md +7 -0
  411. package/src/templates/workspace-root/README.md +25 -0
@@ -1 +1 @@
1
- {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/cli/migrate.ts"],"names":[],"mappings":"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","sourcesContent":["import fs from \"fs\";\nimport path from \"path\";\nimport { createApp } from \"./create.js\";\n\nexport interface MigrateCliOptions {\n source?: string;\n output?: string;\n appName?: string;\n target?: string;\n planOnly?: boolean;\n}\n\nexport function parseMigrateArgs(argv: string[]): MigrateCliOptions {\n const opts: MigrateCliOptions = {};\n for (let i = 0; i < argv.length; i++) {\n const arg = argv[i];\n if (arg === \"--out\" && argv[i + 1]) {\n opts.output = argv[++i];\n } else if (arg.startsWith(\"--out=\")) {\n opts.output = arg.slice(\"--out=\".length);\n } else if (arg === \"--name\" && argv[i + 1]) {\n opts.appName = argv[++i];\n } else if (arg.startsWith(\"--name=\")) {\n opts.appName = arg.slice(\"--name=\".length);\n } else if (arg === \"--target\" && argv[i + 1]) {\n opts.target = argv[++i];\n } else if (arg.startsWith(\"--target=\")) {\n opts.target = arg.slice(\"--target=\".length);\n } else if (arg === \"--plan-only\") {\n opts.planOnly = true;\n } else if (!arg.startsWith(\"-\") && !opts.source) {\n opts.source = arg;\n }\n }\n return opts;\n}\n\nexport async function runMigrate(argv: string[]): Promise<void> {\n const opts = parseMigrateArgs(argv);\n if (!opts.source) {\n console.error(\n \"Usage: agent-native migrate <source> [--out ../migrated-app] [--name migration]\",\n );\n process.exit(1);\n }\n\n const appName = opts.appName ?? \"migration\";\n const target = opts.target ?? \"agent-native\";\n const sourceRoot = path.resolve(process.cwd(), opts.source);\n const outputRoot = path.resolve(\n process.cwd(),\n opts.output ?? \"../migrated-app\",\n );\n\n await createApp(appName, { template: \"migration\" });\n\n const appDir = resolveScaffoldedAppDir(process.cwd(), appName);\n fs.mkdirSync(path.join(appDir, \"data\"), { recursive: true });\n fs.writeFileSync(\n path.join(appDir, \"data\", \"migration-source.json\"),\n `${JSON.stringify(\n {\n name: `Migration from ${path.basename(sourceRoot)}`,\n sourceRoot,\n outputRoot,\n target,\n planOnly: Boolean(opts.planOnly),\n createdAt: new Date().toISOString(),\n },\n null,\n 2,\n )}\\n`,\n );\n\n console.log(\n [\n \"\",\n \"Migration Workbench is ready.\",\n \"\",\n ` Source: ${sourceRoot}`,\n ` Output: ${outputRoot}`,\n ` App: ${appDir}`,\n \"\",\n \"Next:\",\n ` cd ${path.relative(process.cwd(), appDir) || \".\"}`,\n \" pnpm install\",\n \" pnpm dev\",\n \"\",\n \"The Workbench will prefill the source and output paths. Create the run, assess, plan, approve, run a task, then verify.\",\n ].join(\"\\n\"),\n );\n}\n\nfunction resolveScaffoldedAppDir(cwd: string, appName: string): string {\n const workspaceAppDir = path.join(cwd, \"apps\", appName);\n if (fs.existsSync(workspaceAppDir)) return workspaceAppDir;\n return path.join(cwd, appName);\n}\n"]}
1
+ {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/cli/migrate.ts"],"names":[],"mappings":"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","sourcesContent":["import crypto from \"crypto\";\nimport fs from \"fs\";\nimport path from \"path\";\nimport { fileURLToPath } from \"url\";\nimport {\n appendCodeAgentTranscriptEvent,\n codeAgentRunArtifactsDir,\n createCodeAgentRunRecord,\n getLastCodeAgentRunRecord,\n listCodeAgentRunRecords,\n writeCodeAgentRunRecord,\n type CodeAgentRunRecord,\n} from \"./code-agent-runs.js\";\nimport { createApp } from \"./create.js\";\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = path.dirname(__filename);\n\nconst DEFAULT_APP_NAME = \"migration\";\nconst DEFAULT_OUTPUT = \"../migrated-app\";\nconst DEFAULT_TARGET = \"agent-native\";\nconst DEFAULT_DOSSIER_DIR = \"agent-native-migration-dossier\";\nconst MIGRATION_DEV_PORT = 8101;\nconst MIGRATE_SUBCOMMANDS = new Set([\"resume\", \"status\", \"stop\", \"ui\"]);\nconst MIGRATION_SESSION_COMMAND = \"agent-native code /migrate\";\nconst MODEL_CREDENTIAL_ENV_NAMES = [\n \"ANTHROPIC_API_KEY\",\n \"OPENAI_API_KEY\",\n \"GOOGLE_GENERATIVE_AI_API_KEY\",\n \"GROQ_API_KEY\",\n \"MISTRAL_API_KEY\",\n \"COHERE_API_KEY\",\n \"BUILDER_PRIVATE_KEY\",\n];\n\ntype MigrateSubcommand = \"resume\" | \"status\" | \"stop\" | \"ui\";\ntype SourceKind = \"path\" | \"url\" | \"description\";\n\nexport interface MigrateCliOptions {\n subcommand?: MigrateSubcommand;\n source?: string;\n sourcePath?: string;\n sourceUrl?: string;\n sourceDescription?: string;\n workbench?: string;\n output?: string;\n appName?: string;\n target?: string;\n planOnly?: boolean;\n emit?: boolean;\n emitDir?: string;\n appSurface?: boolean;\n last?: boolean;\n help?: boolean;\n}\n\nexport interface SourceSpec {\n kind: SourceKind;\n value: string;\n sourceRoot?: string;\n description?: string;\n}\n\nexport interface EmitDossierResult {\n dossierRoot: string;\n files: string[];\n source: SourceSpec;\n usedMigrateHelpers: boolean;\n}\n\ninterface ProjectIRLike {\n site: {\n framework: \"nextjs\" | \"react\" | \"aem\" | \"unknown\";\n sourceRoot: string;\n routes: Array<{\n id: string;\n path: string;\n filePath: string;\n router: \"next-pages\" | \"next-app\" | \"unknown\";\n kind: \"marketing\" | \"docs\" | \"landing\" | \"app\" | \"api\" | \"unknown\";\n dynamic: boolean;\n public: boolean;\n notes?: string[];\n }>;\n redirects: Array<Record<string, unknown>>;\n metadata: Record<string, unknown>;\n };\n components: {\n components: Array<{\n id: string;\n name: string;\n filePath: string;\n usedByRoutes: string[];\n notes?: string[];\n }>;\n designTokens: Record<string, unknown>;\n };\n content: {\n models: Array<Record<string, unknown>>;\n assets: Array<{\n id: string;\n path: string;\n type: string;\n metadata?: Record<string, unknown>;\n }>;\n };\n behavior: {\n apiEndpoints: Array<{\n id: string;\n path: string;\n method: string;\n filePath: string;\n recommendedRecipe: string;\n }>;\n dataStores: Array<{\n id: string;\n name: string;\n filePath: string;\n kind: \"database\" | \"api\" | \"local-state\" | \"unknown\";\n }>;\n llmCalls: Array<{ id: string; filePath: string; provider: string }>;\n clientState: Array<{ id: string; filePath: string; reason: string }>;\n auth: Array<{ id: string; filePath: string; provider: string }>;\n jobs: Array<{ id: string; filePath: string; kind: string }>;\n };\n}\n\nexport function parseMigrateArgs(argv: string[]): MigrateCliOptions {\n const opts: MigrateCliOptions = {};\n for (let i = 0; i < argv.length; i++) {\n const arg = argv[i];\n\n if (i === 0 && MIGRATE_SUBCOMMANDS.has(arg)) {\n opts.subcommand = arg as MigrateSubcommand;\n continue;\n }\n\n if (arg === \"--help\" || arg === \"-h\") {\n opts.help = true;\n } else if (arg === \"--out\" && argv[i + 1]) {\n opts.output = argv[++i];\n } else if (arg.startsWith(\"--out=\")) {\n opts.output = arg.slice(\"--out=\".length);\n } else if (arg === \"--name\" && argv[i + 1]) {\n opts.appName = argv[++i];\n } else if (arg.startsWith(\"--name=\")) {\n opts.appName = arg.slice(\"--name=\".length);\n } else if (arg === \"--target\" && argv[i + 1]) {\n opts.target = argv[++i];\n } else if (arg.startsWith(\"--target=\")) {\n opts.target = arg.slice(\"--target=\".length);\n } else if (arg === \"--source\" && argv[i + 1]) {\n setSourceOption(opts, argv[++i]);\n } else if (arg.startsWith(\"--source=\")) {\n setSourceOption(opts, arg.slice(\"--source=\".length));\n } else if (arg === \"--path\" && argv[i + 1]) {\n opts.sourcePath = argv[++i];\n } else if (arg.startsWith(\"--path=\")) {\n opts.sourcePath = arg.slice(\"--path=\".length);\n } else if (arg === \"--url\" && argv[i + 1]) {\n opts.sourceUrl = argv[++i];\n } else if (arg.startsWith(\"--url=\")) {\n opts.sourceUrl = arg.slice(\"--url=\".length);\n } else if (\n (arg === \"--description\" || arg === \"--describe\") &&\n argv[i + 1]\n ) {\n opts.sourceDescription = argv[++i];\n } else if (arg.startsWith(\"--description=\")) {\n opts.sourceDescription = arg.slice(\"--description=\".length);\n } else if (arg.startsWith(\"--describe=\")) {\n opts.sourceDescription = arg.slice(\"--describe=\".length);\n } else if (arg === \"--emit\") {\n opts.emit = true;\n if (argv[i + 1] && !argv[i + 1].startsWith(\"-\")) {\n opts.emitDir = argv[++i];\n }\n } else if (arg.startsWith(\"--emit=\")) {\n opts.emit = true;\n opts.emitDir = arg.slice(\"--emit=\".length);\n } else if (arg === \"--emit-dir\" && argv[i + 1]) {\n opts.emit = true;\n opts.emitDir = argv[++i];\n } else if (arg.startsWith(\"--emit-dir=\")) {\n opts.emit = true;\n opts.emitDir = arg.slice(\"--emit-dir=\".length);\n } else if (arg === \"--app-surface\" || arg === \"--workbench\") {\n opts.appSurface = true;\n } else if (arg === \"--plan-only\") {\n opts.planOnly = true;\n } else if (arg === \"--last\") {\n opts.last = true;\n } else if (!arg.startsWith(\"-\")) {\n if (\n opts.subcommand &&\n [\"status\", \"stop\", \"ui\"].includes(opts.subcommand) &&\n !opts.workbench\n ) {\n opts.workbench = arg;\n } else if (!opts.source) {\n opts.source = arg;\n } else if (!opts.workbench) {\n opts.workbench = arg;\n }\n }\n }\n return opts;\n}\n\nexport async function runMigrate(argv: string[]): Promise<void> {\n const opts = parseMigrateArgs(argv);\n if (opts.help) {\n console.log(migrateUsage());\n return;\n }\n\n if (opts.subcommand === \"status\") {\n printMigrationStatus(opts);\n return;\n }\n if (opts.subcommand === \"stop\") {\n printMigrationStop(opts);\n return;\n }\n if (opts.subcommand === \"ui\") {\n printMigrationUi(opts);\n return;\n }\n if (opts.emit) {\n try {\n const result = await emitOwnAgentDossier(opts);\n console.log(renderEmitResult(result));\n } catch (error) {\n if (isExpectedMigrationCliError(error)) {\n console.error(`\\n${migrationCliErrorMessage(error)}\\n`);\n process.exit(1);\n }\n throw error;\n }\n return;\n }\n if (opts.subcommand === \"resume\" && !hasAnySource(opts)) {\n printMigrationResume(opts);\n return;\n }\n\n if (opts.appSurface) {\n await scaffoldOrResumeWorkbench(opts);\n return;\n }\n\n try {\n await createMigrationCodeAgentSession(opts);\n } catch (error) {\n if (isExpectedMigrationCliError(error)) {\n console.error(`\\n${migrationCliErrorMessage(error)}\\n`);\n process.exit(1);\n }\n throw error;\n }\n}\n\nexport async function emitOwnAgentDossier(\n opts: MigrateCliOptions,\n cwd = process.cwd(),\n): Promise<EmitDossierResult> {\n const source = resolveSourceSpec(opts, cwd);\n if (!source) {\n throw new Error(\n \"Usage: agent-native migrate <source-path-or-url> --emit [dossier-dir]\",\n );\n }\n\n let dossierRoot = resolveDossierRoot(opts, source, cwd);\n const explicitEmitDir = Boolean(opts.emitDir);\n if (source.sourceRoot && isInsideOrSame(source.sourceRoot, dossierRoot)) {\n if (explicitEmitDir) {\n throw new Error(\n `Refusing to emit dossier inside sourceRoot (${source.sourceRoot}). Choose an --emit path outside the source project.`,\n );\n }\n dossierRoot = defaultDossierRoot(source, cwd);\n }\n if (source.sourceRoot) {\n assertOutsideSourceRoot(source.sourceRoot, dossierRoot, \"dossier\");\n }\n\n fs.mkdirSync(dossierRoot, { recursive: true });\n const written = new Set<string>();\n const write = (relativePath: string, content: string) => {\n const filePath = path.join(dossierRoot, relativePath);\n fs.mkdirSync(path.dirname(filePath), { recursive: true });\n fs.writeFileSync(\n filePath,\n content.endsWith(\"\\n\") ? content : `${content}\\n`,\n );\n written.add(relativePath);\n };\n\n const templateDir = findMigrationTemplateDir();\n const templateAgents = readTextIfExists(\n templateDir ? path.join(templateDir, \"AGENTS.md\") : undefined,\n );\n write(\"AGENTS.md\", renderDossierAgentsMd(source, templateAgents));\n\n for (const copied of copyMigrationSkills(templateDir, dossierRoot)) {\n written.add(copied);\n }\n\n const helperResult = await writeAssessmentWithMigrateHelpers({\n source,\n dossierRoot,\n target: opts.target ?? DEFAULT_TARGET,\n write,\n });\n const usedMigrateHelpers = helperResult;\n if (!helperResult) {\n const fallback = buildFallbackAssessment(source);\n write(\"01-assessment.md\", fallback.assessment);\n if (fallback.ir) {\n write(\"ir.json\", `${JSON.stringify(fallback.ir, null, 2)}\\n`);\n }\n }\n\n write(\"MIGRATION_PLAYBOOK.md\", renderMigrationPlaybook(source));\n write(\n \"source.json\",\n `${JSON.stringify(\n {\n source,\n target: opts.target ?? DEFAULT_TARGET,\n createdAt: new Date().toISOString(),\n usedMigrateHelpers,\n },\n null,\n 2,\n )}\\n`,\n );\n\n return {\n dossierRoot,\n files: [...written].sort(),\n source,\n usedMigrateHelpers,\n };\n}\n\nexport function isExpectedMigrationCliError(error: unknown): boolean {\n const message = migrationCliErrorMessage(error);\n return (\n message.startsWith(\"Usage: agent-native migrate\") ||\n message.startsWith(\"Refusing to emit dossier inside sourceRoot\") ||\n message.startsWith(\"Refusing to write \")\n );\n}\n\nfunction migrationCliErrorMessage(error: unknown): string {\n if (error instanceof Error) return error.message;\n return String(error);\n}\n\nasync function scaffoldOrResumeWorkbench(\n opts: MigrateCliOptions,\n): Promise<void> {\n const cwd = process.cwd();\n const source = resolveSourceSpec(opts, cwd);\n if (!source) {\n console.error(migrateUsage());\n process.exit(1);\n }\n\n const appName = opts.appName ?? DEFAULT_APP_NAME;\n const target = opts.target ?? DEFAULT_TARGET;\n const outputRoot = path.resolve(cwd, opts.output ?? DEFAULT_OUTPUT);\n const appDirBefore = resolveScaffoldedAppDir(cwd, appName);\n const existing = fs.existsSync(appDirBefore);\n\n if (!existing) {\n await createApp(appName, { template: \"migration\" });\n }\n\n const appDir = resolveScaffoldedAppDir(cwd, appName);\n fs.mkdirSync(path.join(appDir, \"data\"), { recursive: true });\n fs.writeFileSync(\n path.join(appDir, \"data\", \"migration-source.json\"),\n `${JSON.stringify(\n {\n schemaVersion: 2,\n name: defaultRunName(source),\n source: sourceSeedPayload(source),\n sourceKind: source.kind,\n sourceRoot: source.sourceRoot ?? \"\",\n sourceUrl: source.kind === \"url\" ? source.value : undefined,\n sourceDescription: source.description,\n outputRoot,\n target,\n planOnly: Boolean(opts.planOnly),\n createdAt: new Date().toISOString(),\n },\n null,\n 2,\n )}\\n`,\n );\n\n console.log(renderWorkbenchReady({ appDir, existing, outputRoot, source }));\n}\n\nasync function createMigrationCodeAgentSession(\n opts: MigrateCliOptions,\n): Promise<void> {\n const cwd = process.cwd();\n const source = resolveSourceSpec(opts, cwd);\n if (!source) {\n console.error(migrateUsage());\n process.exit(1);\n }\n\n const outputRoot = path.resolve(cwd, opts.output ?? DEFAULT_OUTPUT);\n if (source.sourceRoot) {\n assertOutsideSourceRoot(source.sourceRoot, outputRoot, \"outputRoot\");\n }\n\n const run = createCodeAgentRunRecord({\n goalId: \"migrate\",\n title: defaultRunName(source),\n subtitle: formatSourceForDisplay(source),\n status: \"needs-approval\",\n phase: \"intake\",\n needsApproval: true,\n progress: {\n label: \"Intake\",\n completed: 0,\n total: 1,\n percent: 0,\n },\n cwd,\n metadata: {\n source,\n sourceRoot: source.sourceRoot,\n outputRoot,\n target: opts.target ?? DEFAULT_TARGET,\n },\n });\n appendCodeAgentTranscriptEvent({\n runId: run.id,\n kind: \"user\",\n message: `Migrate ${formatSourceForDisplay(source)} to ${opts.target ?? DEFAULT_TARGET}.`,\n metadata: {\n source,\n outputRoot,\n target: opts.target ?? DEFAULT_TARGET,\n },\n });\n appendCodeAgentTranscriptEvent({\n runId: run.id,\n kind: \"status\",\n message: \"Preparing migration dossier.\",\n metadata: { status: \"needs-approval\", phase: \"intake\" },\n });\n const artifactRoot = codeAgentRunArtifactsDir(run.id);\n const dossierRoot = path.join(artifactRoot, \"migration-dossier\");\n const dossier = await emitOwnAgentDossier(\n {\n ...opts,\n emit: true,\n emitDir: dossierRoot,\n target: opts.target ?? DEFAULT_TARGET,\n },\n cwd,\n );\n\n const updated: CodeAgentRunRecord = {\n ...run,\n progress: {\n label: \"Dossier ready; waiting for approval\",\n completed: 1,\n total: 2,\n percent: 50,\n },\n artifactRoot,\n details: [\n { label: \"Source\", value: formatSourceForDisplay(source) },\n { label: \"Output\", value: outputRoot },\n { label: \"Dossier\", value: dossierRoot },\n { label: \"Resume\", value: \"agent-native code resume --last\" },\n { label: \"Attach\", value: \"agent-native code attach --last\" },\n ],\n metadata: {\n ...(run.metadata ?? {}),\n dossierRoot,\n dossierFiles: dossier.files,\n artifactFiles: dossier.files.map((file) => path.join(dossierRoot, file)),\n usedMigrateHelpers: dossier.usedMigrateHelpers,\n resumeCommand: \"agent-native code resume --last\",\n attachCommand: \"agent-native code attach --last\",\n statusCommand: \"agent-native code status --last\",\n preferredCommand: MIGRATION_SESSION_COMMAND,\n },\n updatedAt: new Date().toISOString(),\n };\n writeCodeAgentRunRecord(updated);\n appendCodeAgentTranscriptEvent({\n runId: run.id,\n kind: \"artifact\",\n message: \"Migration dossier created.\",\n metadata: {\n path: dossierRoot,\n files: dossier.files,\n usedMigrateHelpers: dossier.usedMigrateHelpers,\n },\n });\n appendCodeAgentTranscriptEvent({\n runId: run.id,\n kind: \"note\",\n message:\n \"Use the dossier with Codex, Claude Code, Cursor, or another coding agent; no migration agent process has been started by the CLI.\",\n metadata: { source: \"migration-dossier\" },\n });\n appendCodeAgentTranscriptEvent({\n runId: run.id,\n kind: \"status\",\n message:\n \"Migration dossier is ready. Resume the /migrate session from Agent-Native Code when you are ready to approve or continue.\",\n metadata: { status: \"needs-approval\", phase: \"intake\" },\n });\n\n console.log(renderCodeAgentMigrationSession(updated, dossier));\n}\n\nfunction printMigrationStatus(opts: MigrateCliOptions): void {\n const last = getLastCodeAgentRunRecord(\"migrate\");\n const runs = listCodeAgentRunRecords(\"migrate\");\n if (last || !opts.appSurface) {\n console.log(renderCodeAgentMigrationStatus(runs));\n return;\n }\n\n const appDir = resolveWorkbenchDir(opts);\n const seedPath = path.join(appDir, \"data\", \"migration-source.json\");\n const seed = readJsonIfExists(seedPath) as {\n sourceKind?: string;\n sourceRoot?: string;\n sourceUrl?: string;\n sourceDescription?: string;\n outputRoot?: string;\n target?: string;\n } | null;\n const artifactRuns = readArtifactRuns(appDir);\n\n if (!fs.existsSync(appDir)) {\n console.error(`No Migration Workbench found at ${appDir}.`);\n console.error(\n `Create one with: npx @agent-native/core@latest code /migrate <source>`,\n );\n console.error(\n `The direct migrate command is a shortcut into that same Agent-Native Code slash command.`,\n );\n process.exit(1);\n }\n\n console.log(\n [\n \"\",\n \"Migration Workbench status\",\n \"\",\n ` App: ${appDir}`,\n ` Seed: ${fs.existsSync(seedPath) ? seedPath : \"not found\"}`,\n ` Source: ${formatSeedSource(seed)}`,\n ` Output: ${seed?.outputRoot ?? \"not set\"}`,\n ` Target: ${seed?.target ?? DEFAULT_TARGET}`,\n ` Artifacts: ${artifactRuns.length} run${artifactRuns.length === 1 ? \"\" : \"s\"}`,\n ...artifactRuns\n .slice(0, 5)\n .map((run) => ` - ${run.id} (${run.phase})`),\n artifactRuns.length > 5 ? ` - ${artifactRuns.length - 5} more...` : \"\",\n \"\",\n ...credentialStatusLines(),\n ]\n .filter(Boolean)\n .join(\"\\n\"),\n );\n}\n\nfunction printMigrationStop(_opts: MigrateCliOptions): void {\n console.log(\n [\n \"\",\n \"Agent-Native Code /migrate stop\",\n \"\",\n \"The migrate CLI creates resumable session records and artifacts; it does not daemonize a background process yet.\",\n \"Stop the terminal, Desktop run, or external coding agent that is actively working on the session.\",\n ].join(\"\\n\"),\n );\n}\n\nfunction printMigrationUi(opts: MigrateCliOptions): void {\n const last = getLastCodeAgentRunRecord(\"migrate\");\n if (last && !opts.appSurface) {\n console.log(renderCodeAgentMigrationUi(last));\n return;\n }\n\n const appDir = resolveWorkbenchDir(opts);\n console.log(\n [\n \"\",\n \"Migration Workbench UI\",\n \"\",\n ` App: ${appDir}`,\n ` URL: http://localhost:${MIGRATION_DEV_PORT}/`,\n \"\",\n \"Start it with:\",\n ` cd ${shellQuote(path.relative(process.cwd(), appDir) || \".\")}`,\n \" pnpm install\",\n \" pnpm dev\",\n \"\",\n \"Deep-link shape:\",\n ` http://localhost:${MIGRATION_DEV_PORT}/`,\n \" Pick a run in the Workbench, or ask the app agent to navigate by run ID.\",\n ].join(\"\\n\"),\n );\n}\n\nfunction printMigrationResume(opts: MigrateCliOptions): void {\n const last = getLastCodeAgentRunRecord(\"migrate\");\n if (last && !opts.appSurface) {\n console.log(renderCodeAgentMigrationResume(last));\n return;\n }\n\n const appDir = resolveWorkbenchDir(opts);\n const seedPath = path.join(appDir, \"data\", \"migration-source.json\");\n const seed = readJsonIfExists(seedPath);\n if (!fs.existsSync(appDir) || !seed) {\n console.error(\n \"No resumable Migration Workbench seed found. Run `npx @agent-native/core@latest code /migrate <source>` first.\",\n );\n process.exit(1);\n }\n console.log(\n [\n \"\",\n \"Migration Workbench resume\",\n \"\",\n ` App: ${appDir}`,\n ` Seed: ${seedPath}`,\n \"\",\n \"Continue with:\",\n ` cd ${shellQuote(path.relative(process.cwd(), appDir) || \".\")}`,\n \" pnpm dev\",\n \"\",\n `Workbench URL: http://localhost:${MIGRATION_DEV_PORT}/`,\n ].join(\"\\n\"),\n );\n}\n\nfunction renderWorkbenchReady(args: {\n appDir: string;\n existing: boolean;\n outputRoot: string;\n source: SourceSpec;\n}): string {\n const rel = path.relative(process.cwd(), args.appDir) || \".\";\n const sourceCommand = formatSourceForCommand(args.source);\n return [\n \"\",\n args.existing\n ? \"Migration Workbench is ready (reused existing app).\"\n : \"Migration Workbench is ready.\",\n \"\",\n ` Source: ${formatSourceForDisplay(args.source)}`,\n ` Output: ${args.outputRoot}`,\n ` App: ${args.appDir}`,\n \"\",\n \"Run it:\",\n ` cd ${shellQuote(rel)}`,\n \" pnpm install\",\n \" pnpm dev\",\n \"\",\n \"npx-friendly commands:\",\n ` npx @agent-native/core@latest code /migrate ${sourceCommand} --out ${shellQuote(path.relative(process.cwd(), args.outputRoot) || \".\")}`,\n ` npx @agent-native/core@latest code /migrate ${sourceCommand} --emit ${shellQuote(defaultDossierDirForDisplay(args.source))}`,\n \"\",\n \"Workbench URL:\",\n ` http://localhost:${MIGRATION_DEV_PORT}/`,\n \" If Vite chooses another port, use the URL printed by `pnpm dev`.\",\n \"\",\n \"Deep-link shape:\",\n ` http://localhost:${MIGRATION_DEV_PORT}/`,\n \" Select the run inside the Workbench, or ask the app agent to open a run by ID.\",\n \"\",\n ...credentialStatusLines(),\n \"\",\n \"The Workbench seed is written to data/migration-source.json. It stores paths and source metadata only, never secret values.\",\n ].join(\"\\n\");\n}\n\nfunction renderCodeAgentMigrationSession(\n run: CodeAgentRunRecord,\n dossier: EmitDossierResult,\n): string {\n return [\n \"\",\n \"Agent-Native Code /migrate session created.\",\n \"\",\n ` Run: ${run.id}`,\n \" Goal: /migrate\",\n ` Source: ${run.subtitle ?? \"not set\"}`,\n ` Output: ${stringMetadata(run, \"outputRoot\") ?? \"not set\"}`,\n ` Dossier: ${stringMetadata(run, \"dossierRoot\") ?? dossier.dossierRoot}`,\n ` Engine: ${dossier.usedMigrateHelpers ? \"@agent-native/migrate helpers\" : \"safe local fallback\"}`,\n \"\",\n \"Artifacts:\",\n ...dossier.files\n .filter((file) =>\n [\n \"AGENTS.md\",\n \"MIGRATION_PLAYBOOK.md\",\n \"01-assessment.md\",\n \"ir.json\",\n \"source.json\",\n ].includes(file),\n )\n .map((file) => ` - ${path.join(dossier.dossierRoot, file)}`),\n \"\",\n \"Continue:\",\n \" agent-native code attach --last\",\n \" agent-native code resume --last\",\n \" agent-native code logs --last\",\n \" agent-native code status --last\",\n \"\",\n \"Desktop:\",\n \" Open Agent-Native Code in the left sidebar. This run appears as a /migrate session.\",\n \"\",\n \"Use another agent:\",\n ` Point Codex, Claude Code, Cursor, or another coding agent at ${shellQuote(dossier.dossierRoot)} and ask it to follow AGENTS.md plus MIGRATION_PLAYBOOK.md.`,\n \"\",\n \"Default surface:\",\n \" Migration stays in Agent-Native Code. No hidden app/template was scaffolded.\",\n \" Use --app-surface only when you explicitly want the legacy migration detail app.\",\n ].join(\"\\n\");\n}\n\nfunction renderCodeAgentMigrationStatus(runs: CodeAgentRunRecord[]): string {\n return [\n \"\",\n \"Agent-Native Code /migrate status\",\n \"\",\n runs.length === 0\n ? \" No /migrate sessions found. Start one with `agent-native code /migrate <source>`.\"\n : ` ${runs.length} session${runs.length === 1 ? \"\" : \"s\"} found.`,\n ...runs.slice(0, 8).map((run) => {\n const output = stringMetadata(run, \"outputRoot\");\n const dossier = stringMetadata(run, \"dossierRoot\");\n const progress = run.progress?.label\n ? ` Progress: ${run.progress.label} (${run.progress.completed}/${run.progress.total})`\n : \"\";\n return [\n ` - ${run.id}`,\n ` Status: ${run.status}${run.phase ? ` (${run.phase})` : \"\"}`,\n progress,\n ` Source: ${run.subtitle ?? \"not set\"}`,\n output ? ` Output: ${output}` : \"\",\n dossier ? ` Dossier: ${dossier}` : \"\",\n ` Resume: agent-native code resume ${run.id}`,\n ]\n .filter(Boolean)\n .join(\"\\n\");\n }),\n runs.length > 8 ? ` - ${runs.length - 8} more...` : \"\",\n \"\",\n \"Shortcuts:\",\n \" agent-native migrate status --last shows the same Agent-Native Code sessions.\",\n \" Add --app-surface only to inspect the legacy hidden migration app.\",\n ]\n .filter(Boolean)\n .join(\"\\n\");\n}\n\nfunction renderCodeAgentMigrationResume(run: CodeAgentRunRecord): string {\n const dossier = stringMetadata(run, \"dossierRoot\");\n return [\n \"\",\n \"Agent-Native Code /migrate resume\",\n \"\",\n ` Run: ${run.id}`,\n ` Status: ${run.status}${run.phase ? ` (${run.phase})` : \"\"}`,\n ` Source: ${run.subtitle ?? \"not set\"}`,\n dossier ? ` Dossier: ${dossier}` : \"\",\n \"\",\n \"Continue in the interactive shell:\",\n \" agent-native code\",\n \"\",\n \"Resume this run directly:\",\n ` agent-native code resume ${run.id}`,\n \" agent-native code attach --last\",\n \"\",\n dossier\n ? `Or hand off to another agent by pointing it at ${shellQuote(dossier)}.`\n : \"No dossier path is recorded on this run.\",\n ]\n .filter(Boolean)\n .join(\"\\n\");\n}\n\nfunction renderCodeAgentMigrationUi(run: CodeAgentRunRecord): string {\n return [\n \"\",\n \"Agent-Native Code /migrate UI\",\n \"\",\n ` Run: ${run.id}`,\n \"\",\n \"Open Agent-Native Desktop and choose Agent-Native Code from the left sidebar.\",\n \"The migration detail app is no longer scaffolded by default; it is only an optional legacy surface.\",\n ].join(\"\\n\");\n}\n\nfunction renderEmitResult(result: EmitDossierResult): string {\n return [\n \"\",\n \"Migration agent dossier emitted.\",\n \"\",\n ` Source: ${formatSourceForDisplay(result.source)}`,\n ` Dossier: ${result.dossierRoot}`,\n ` IR: ${result.files.includes(\"ir.json\") ? \"included\" : \"not available from this input\"}`,\n ` Engine: ${result.usedMigrateHelpers ? \"@agent-native/migrate helpers\" : \"safe local fallback\"}`,\n \"\",\n \"Files:\",\n ...result.files.map((file) => ` - ${file}`),\n \"\",\n \"Use with Agent-Native Code/Desktop:\",\n ` Point the agent at ${shellQuote(result.dossierRoot)} and ask it to follow AGENTS.md plus MIGRATION_PLAYBOOK.md.`,\n \"\",\n \"Safety:\",\n \" The dossier was written outside sourceRoot and contains no secret values.\",\n ].join(\"\\n\");\n}\n\nfunction migrateUsage(): string {\n return [\n \"Usage:\",\n \" agent-native code /migrate <source-path-or-url> [--out ../migrated-app] (preferred)\",\n \" agent-native migrate <source-path-or-url> [--out ../migrated-app] (shortcut)\",\n \" agent-native migrate <source> --emit [dossier-dir]\",\n ' agent-native migrate --describe \"legacy app described in prose\" --emit',\n \" agent-native migrate resume --last\",\n \" agent-native migrate status --last\",\n \" agent-native migrate ui --last\",\n \" agent-native migrate stop --last\",\n \"\",\n \"Examples:\",\n \" npx @agent-native/core@latest code /migrate ./my-next-app --out ../migrated-app\",\n \" npx @agent-native/core@latest migrate ./my-next-app --out ../migrated-app\",\n ' npx @agent-native/core@latest code /migrate https://example.com --describe \"marketing site\" --emit ../migration-dossier',\n ' npx @agent-native/core@latest code /migrate --describe \"A Rails admin app with reporting dashboards\" --emit',\n \"\",\n \"Default:\",\n \" Migration is an Agent-Native Code slash command. The hidden migration app is not scaffolded unless --app-surface is passed.\",\n \"\",\n \"Options:\",\n \" --source, --path <path> Local source path\",\n \" --url <url> Source URL\",\n \" --description, --describe Source description for any-input migrations\",\n \" --emit [dir] Emit an own-agent dossier without recording a session\",\n \" --out <path> Generated output path for the migration session\",\n \" --app-surface, --workbench Scaffold the legacy hidden migration detail app\",\n \" --name <name> Legacy app-surface name (default: migration)\",\n \" --target <name> Migration target (default: agent-native)\",\n \" --plan-only Legacy app-surface plan-only seed\",\n ].join(\"\\n\");\n}\n\nfunction setSourceOption(opts: MigrateCliOptions, value: string): void {\n opts.source = value;\n if (isProbablyUrl(value)) {\n opts.sourceUrl = value;\n } else {\n opts.sourcePath = value;\n }\n}\n\nfunction hasAnySource(opts: MigrateCliOptions): boolean {\n return Boolean(\n opts.source || opts.sourcePath || opts.sourceUrl || opts.sourceDescription,\n );\n}\n\nfunction resolveSourceSpec(\n opts: MigrateCliOptions,\n cwd = process.cwd(),\n): SourceSpec | null {\n if (opts.sourceUrl) {\n return {\n kind: \"url\",\n value: opts.sourceUrl,\n description: opts.sourceDescription,\n };\n }\n if (opts.sourcePath) {\n return {\n kind: \"path\",\n value: opts.sourcePath,\n sourceRoot: path.resolve(cwd, opts.sourcePath),\n description: opts.sourceDescription,\n };\n }\n if (opts.source) {\n if (isProbablyUrl(opts.source)) {\n return {\n kind: \"url\",\n value: opts.source,\n description: opts.sourceDescription,\n };\n }\n return {\n kind: \"path\",\n value: opts.source,\n sourceRoot: path.resolve(cwd, opts.source),\n description: opts.sourceDescription,\n };\n }\n if (opts.sourceDescription) {\n return {\n kind: \"description\",\n value: opts.sourceDescription,\n description: opts.sourceDescription,\n };\n }\n return null;\n}\n\nfunction resolveDossierRoot(\n opts: MigrateCliOptions,\n source: SourceSpec,\n cwd: string,\n): string {\n if (opts.emitDir) return path.resolve(cwd, opts.emitDir);\n return defaultDossierRoot(source, cwd);\n}\n\nfunction defaultDossierRoot(source: SourceSpec, cwd: string): string {\n if (source.sourceRoot) {\n return path.resolve(\n path.dirname(source.sourceRoot),\n `${path.basename(source.sourceRoot)}-migration-dossier`,\n );\n }\n return path.resolve(cwd, DEFAULT_DOSSIER_DIR);\n}\n\nfunction defaultDossierDirForDisplay(source: SourceSpec): string {\n if (source.sourceRoot) {\n return `../${path.basename(source.sourceRoot)}-migration-dossier`;\n }\n return DEFAULT_DOSSIER_DIR;\n}\n\nfunction assertOutsideSourceRoot(\n sourceRoot: string,\n targetPath: string,\n label: string,\n): void {\n if (isInsideOrSame(sourceRoot, targetPath)) {\n throw new Error(\n `Refusing to write ${label} inside sourceRoot (${sourceRoot}). Choose a path outside the source project.`,\n );\n }\n}\n\nfunction isInsideOrSame(root: string, candidate: string): boolean {\n const relative = path.relative(path.resolve(root), path.resolve(candidate));\n return (\n relative === \"\" ||\n (!relative.startsWith(\"..\") && !path.isAbsolute(relative))\n );\n}\n\nasync function writeAssessmentWithMigrateHelpers(args: {\n source: SourceSpec;\n dossierRoot: string;\n target: string;\n write(relativePath: string, content: string): void;\n}): Promise<boolean> {\n try {\n const migratePackage = \"@agent-native/migrate\";\n const migrate = (await import(migratePackage)) as any;\n const adapter = migrate.nextjsSourceAdapter;\n\n if (\n args.source.sourceRoot &&\n fs.existsSync(args.source.sourceRoot) &&\n adapter?.introspect &&\n migrate.createMigrationRun &&\n migrate.discoverMigration &&\n migrate.artifactPaths\n ) {\n if (adapter.detect) {\n const detected = await adapter.detect(args.source.sourceRoot);\n if (!detected) return false;\n }\n\n const artifactRoot = path.join(args.dossierRoot, \".migrate-artifacts\");\n const outputRoot = path.join(args.dossierRoot, \"generated-output\");\n assertOutsideSourceRoot(\n args.source.sourceRoot,\n artifactRoot,\n \"artifacts\",\n );\n assertOutsideSourceRoot(args.source.sourceRoot, outputRoot, \"outputRoot\");\n\n const run = await migrate.createMigrationRun({\n sourceRoot: args.source.sourceRoot,\n outputRoot,\n artifactRoot,\n target: args.target,\n id: \"dossier\",\n });\n const result = await migrate.discoverMigration(run, adapter);\n const artifacts = migrate.artifactPaths(result.run);\n args.write(\n \"01-assessment.md\",\n fs.readFileSync(result.assessmentPath, \"utf-8\"),\n );\n if (fs.existsSync(artifacts.irPath)) {\n args.write(\"ir.json\", fs.readFileSync(artifacts.irPath, \"utf-8\"));\n }\n return true;\n }\n\n if (!args.source.sourceRoot && migrate.createSkeletonProjectIR) {\n const ir = migrate.createSkeletonProjectIR({\n sourceRoot: args.source.value,\n inputKind: args.source.kind,\n inputDescription: args.source.description ?? args.source.value,\n }) as ProjectIRLike;\n args.write(\"01-assessment.md\", renderLocalAssessment(args.source, ir));\n args.write(\"ir.json\", `${JSON.stringify(ir, null, 2)}\\n`);\n return true;\n }\n } catch {\n return false;\n }\n return false;\n}\n\nfunction buildFallbackAssessment(source: SourceSpec): {\n assessment: string;\n ir?: ProjectIRLike;\n} {\n if (source.sourceRoot && fs.existsSync(source.sourceRoot)) {\n const ir = createLocalProjectIr(source.sourceRoot);\n return { assessment: renderLocalAssessment(source, ir), ir };\n }\n return { assessment: renderNonPathAssessment(source) };\n}\n\nfunction createLocalProjectIr(sourceRoot: string): ProjectIRLike {\n const files = walkSourceFiles(sourceRoot);\n const packageJson = readJsonIfExists(\n path.join(sourceRoot, \"package.json\"),\n ) as {\n dependencies?: Record<string, string>;\n devDependencies?: Record<string, string>;\n } | null;\n const deps = {\n ...(packageJson?.dependencies ?? {}),\n ...(packageJson?.devDependencies ?? {}),\n };\n const framework =\n deps.next ||\n hasAnyFile(sourceRoot, [\n \"next.config.js\",\n \"next.config.mjs\",\n \"next.config.ts\",\n ])\n ? \"nextjs\"\n : deps.react\n ? \"react\"\n : \"unknown\";\n const routes = files\n .map((file) => routeFromFile(file))\n .filter((route): route is ProjectIRLike[\"site\"][\"routes\"][number] =>\n Boolean(route),\n )\n .sort((a, b) => a.path.localeCompare(b.path));\n const codeFiles = files.filter((file) => /\\.(ts|tsx|js|jsx)$/.test(file));\n const behavior: ProjectIRLike[\"behavior\"] = {\n apiEndpoints: [],\n dataStores: [],\n llmCalls: [],\n clientState: [],\n auth: [],\n jobs: [],\n };\n\n for (const file of codeFiles) {\n const text = readSmallText(path.join(sourceRoot, file));\n if (!text) continue;\n if (\n file.startsWith(\"pages/api/\") ||\n /(^|\\/)api\\/.*\\/route\\.[tj]sx?$/.test(file)\n ) {\n behavior.apiEndpoints.push({\n id: stableId(file),\n path: apiPathFromFile(file),\n method: inferHttpMethod(text),\n filePath: file,\n recommendedRecipe: \"api-routes-to-actions\",\n });\n }\n if (/\\b(useState|useReducer|localStorage|sessionStorage)\\b/.test(text)) {\n behavior.clientState.push({\n id: stableId(`${file}:state`),\n filePath: file,\n reason:\n \"Review for important UI state that should move into application_state.\",\n });\n }\n if (\n /\\b(openai|anthropic|generateText|streamText|chat\\.completions|messages\\.create)\\b/i.test(\n text,\n )\n ) {\n behavior.llmCalls.push({\n id: stableId(`${file}:llm`),\n filePath: file,\n provider: inferLlmProvider(text),\n });\n }\n if (\n /\\b(drizzle|prisma|postgres|supabase|mysql|sqlite|mongoose)\\b/i.test(text)\n ) {\n behavior.dataStores.push({\n id: stableId(`${file}:data`),\n name: path.basename(file),\n filePath: file,\n kind: \"database\",\n });\n }\n if (/\\b(next-auth|better-auth|auth0|clerk|supabase\\.auth)\\b/i.test(text)) {\n behavior.auth.push({\n id: stableId(`${file}:auth`),\n filePath: file,\n provider: inferAuthProvider(text),\n });\n }\n if (\n /\\b(cron|schedule|queue|inngest|trigger\\.dev|setInterval)\\b/i.test(text)\n ) {\n behavior.jobs.push({\n id: stableId(`${file}:job`),\n filePath: file,\n kind: \"scheduled-or-queued\",\n });\n }\n }\n\n return {\n site: {\n framework,\n sourceRoot,\n routes,\n redirects: [],\n metadata: {\n routeCount: routes.length,\n fileCount: files.length,\n packageManager: detectPackageManager(sourceRoot),\n },\n },\n components: {\n components: files\n .filter(\n (file) =>\n /(^|\\/)(components|ui)\\//.test(file) &&\n /\\.(ts|tsx|js|jsx)$/.test(file),\n )\n .sort()\n .map((file) => ({\n id: stableId(file),\n name: componentName(file),\n filePath: file,\n usedByRoutes: [],\n })),\n designTokens: {},\n },\n content: {\n models: [],\n assets: files\n .filter((file) =>\n /\\.(png|jpe?g|webp|gif|svg|avif|pdf|mp4|webm)$/i.test(file),\n )\n .sort()\n .map((file) => ({\n id: stableId(file),\n path: file,\n type: path.extname(file).slice(1).toLowerCase() || \"unknown\",\n })),\n },\n behavior,\n };\n}\n\nfunction renderLocalAssessment(source: SourceSpec, ir: ProjectIRLike): string {\n return `# Migration Assessment\n\nSource type: \\`${source.kind}\\`\nSource: \\`${formatSourceForDisplay(source)}\\`\n${source.description ? `Description: ${source.description}\\n` : \"\"}\nTarget: \\`${DEFAULT_TARGET}\\`\n\n## Inventory\n\n- Framework: ${ir.site.framework}\n- Routes: ${ir.site.routes.length}\n- Components: ${ir.components.components.length}\n- API endpoints: ${ir.behavior.apiEndpoints.length}\n- Data stores: ${ir.behavior.dataStores.length}\n- LLM calls: ${ir.behavior.llmCalls.length}\n- Client state hotspots: ${ir.behavior.clientState.length}\n- Auth hotspots: ${ir.behavior.auth.length}\n- Jobs: ${ir.behavior.jobs.length}\n- Assets: ${ir.content.assets.length}\n\n## Routes\n\n${ir.site.routes.map((route) => `- \\`${route.path}\\` (${route.kind}) from \\`${route.filePath}\\``).join(\"\\n\") || \"- No routes detected.\"}\n\n## Agent-Native Focus Areas\n\n- Convert API routes and server mutations into actions unless they are uploads, webhooks, OAuth callbacks, or streams.\n- Move app-owned state into SQL with Drizzle and expose reads/writes through actions.\n- Delegate all AI work to the agent chat instead of calling model APIs directly from UI code.\n- Expose important navigation and selection state through application_state.\n- Keep public pages server-rendered and logged-in workflows inside the persistent app shell.\n`;\n}\n\nfunction renderNonPathAssessment(source: SourceSpec): string {\n return `# Migration Assessment\n\nSource type: \\`${source.kind}\\`\nSource: ${source.kind === \"url\" ? source.value : \"provided description\"}\n${source.description && source.kind !== \"description\" ? `Description: ${source.description}\\n` : \"\"}\n${source.kind === \"description\" ? `Description: ${source.value}\\n` : \"\"}\nTarget: \\`${DEFAULT_TARGET}\\`\n\n## Inventory\n\nNo local source path was provided, so this dossier does not include file-level IR. Use the URL or description as the intake brief, then let an Agent-Native Code or Desktop session inspect the real source before writing output.\n\n## Agent-Native Focus Areas\n\n- Identify public pages, logged-in workflows, API endpoints, data ownership, auth, jobs, and direct LLM calls.\n- Convert operations into actions and keep application data in SQL.\n- Generate output outside the original source tree.\n- Verify claims with deterministic checks or explicit human review notes.\n`;\n}\n\nfunction renderDossierAgentsMd(\n source: SourceSpec,\n templateAgents: string | null,\n): string {\n return `# Migration Dossier Agent Instructions\n\nYou are migrating an existing application to agent-native.\n\n## Source\n\n- Type: ${source.kind}\n- Value: ${formatSourceForDisplay(source)}\n${source.description ? `- Description: ${source.description}\\n` : \"\"}\n## Hard Rules\n\n- Never write generated files inside the sourceRoot.\n- Treat source as read-only unless the user explicitly asks for source edits.\n- Put generated output in a separate directory.\n- Keep app-owned data in SQL, expose operations as actions, and route AI work through the agent chat.\n- Use 01-assessment.md and ir.json when present. If they are incomplete, update the assessment before implementation.\n- Record manual gaps and verification evidence. Do not present a migration as complete without checks.\n\n## Files In This Dossier\n\n- \\`MIGRATION_PLAYBOOK.md\\` - ordered workflow for Agent-Native Code/Desktop.\n- \\`01-assessment.md\\` - initial source assessment.\n- \\`ir.json\\` - source inventory when available.\n- \\`.agents/skills/migration*/SKILL.md\\` - extra instruction packs when available from the migration goal surface.\n\n${templateAgents ? `## Migration Goal Surface Instructions\\n\\n${templateAgents.trim()}\\n` : \"\"}\n`;\n}\n\nfunction renderMigrationPlaybook(source: SourceSpec): string {\n return `# Migration Playbook\n\n## 1. Intake Any Input\n\nStart from the available input: a local source path, a URL, or a prose description. If this dossier has \\`ir.json\\`, use it as a first inventory. If not, inspect the real source before planning implementation.\n\nSource: ${formatSourceForDisplay(source)}\n\n## 2. Build The Migration Map\n\nClassify routes, public pages, logged-in app surfaces, API endpoints, data stores, auth, jobs, client state, assets, and direct LLM calls. Update \\`01-assessment.md\\` when you learn more.\n\n## 3. Apply Agent-Native Rules\n\n- Actions are the single source of truth for operations.\n- Data lives in SQL through Drizzle.\n- AI work goes through the agent chat.\n- Important UI state is mirrored through \\`application_state\\`.\n- Public/SEO pages server-render; logged-in workflows use the persistent app shell.\n- Ownable resources use sharing and access helpers.\n\n## 4. Work In Samples\n\nMigrate one representative route or workflow first. Verify it, tune the pattern, then sweep similar surfaces. Keep generated output outside the original source tree.\n\n## 5. Verify\n\nRun typecheck/build plus route, action, and data checks that fit the migrated app. Capture unresolved gaps in a report before handing off.\n\n## 6. Use With Agent-Native Code Or Desktop\n\nPoint Codex, Claude Code, another code agent, or Agent-Native Desktop at this dossier directory. Ask it to follow \\`AGENTS.md\\`, then implement the plan in a separate output project.\n`;\n}\n\nfunction copyMigrationSkills(\n templateDir: string | undefined,\n dossierRoot: string,\n): string[] {\n if (!templateDir) return [];\n const skillsRoot = path.join(templateDir, \".agents\", \"skills\");\n if (!fs.existsSync(skillsRoot)) return [];\n const copied: string[] = [];\n for (const entry of fs.readdirSync(skillsRoot, { withFileTypes: true })) {\n if (!entry.isDirectory() || !entry.name.startsWith(\"migration\")) continue;\n const src = path.join(skillsRoot, entry.name, \"SKILL.md\");\n if (!fs.existsSync(src)) continue;\n const relative = path.join(\".agents\", \"skills\", entry.name, \"SKILL.md\");\n const dest = path.join(dossierRoot, relative);\n fs.mkdirSync(path.dirname(dest), { recursive: true });\n fs.copyFileSync(src, dest);\n copied.push(relative);\n }\n return copied;\n}\n\nfunction findMigrationTemplateDir(): string | undefined {\n const starts = [__dirname, process.cwd()];\n for (const start of starts) {\n let dir = path.resolve(start);\n for (let i = 0; i < 12; i++) {\n for (const candidate of [\n path.join(dir, \"templates\", \"migration\"),\n path.join(dir, \"src\", \"templates\", \"migration\"),\n ]) {\n if (fs.existsSync(path.join(candidate, \"AGENTS.md\"))) {\n return candidate;\n }\n }\n const parent = path.dirname(dir);\n if (parent === dir) break;\n dir = parent;\n }\n }\n return undefined;\n}\n\nfunction resolveWorkbenchDir(opts: MigrateCliOptions): string {\n if (opts.workbench) return path.resolve(process.cwd(), opts.workbench);\n return resolveScaffoldedAppDir(\n process.cwd(),\n opts.appName ?? DEFAULT_APP_NAME,\n );\n}\n\nfunction resolveScaffoldedAppDir(cwd: string, appName: string): string {\n const workspaceAppDir = path.join(cwd, \"apps\", appName);\n if (fs.existsSync(workspaceAppDir)) return workspaceAppDir;\n return path.join(cwd, appName);\n}\n\nfunction sourceSeedPayload(source: SourceSpec): Record<string, string> {\n return {\n kind: source.kind,\n value: source.value,\n ...(source.sourceRoot ? { sourceRoot: source.sourceRoot } : {}),\n ...(source.description ? { description: source.description } : {}),\n };\n}\n\nfunction defaultRunName(source: SourceSpec): string {\n if (source.sourceRoot) {\n return `Migration from ${path.basename(source.sourceRoot)}`;\n }\n if (source.kind === \"url\") {\n return `Migration from ${source.value}`;\n }\n return \"Migration from described source\";\n}\n\nfunction stringMetadata(\n run: CodeAgentRunRecord,\n key: string,\n): string | undefined {\n const value = run.metadata?.[key];\n return typeof value === \"string\" ? value : undefined;\n}\n\nfunction formatSeedSource(\n seed: {\n sourceKind?: string;\n sourceRoot?: string;\n sourceUrl?: string;\n sourceDescription?: string;\n } | null,\n): string {\n if (!seed) return \"not set\";\n if (seed.sourceRoot) return seed.sourceRoot;\n if (seed.sourceUrl) return seed.sourceUrl;\n if (seed.sourceDescription) return seed.sourceDescription;\n return seed.sourceKind ?? \"not set\";\n}\n\nfunction readArtifactRuns(\n appDir: string,\n): Array<{ id: string; phase: string }> {\n const runsRoot = path.join(appDir, \"data\", \"migration-runs\");\n if (!fs.existsSync(runsRoot)) return [];\n return fs\n .readdirSync(runsRoot, { withFileTypes: true })\n .filter((entry) => entry.isDirectory())\n .map((entry) => {\n const run = readJsonIfExists(\n path.join(runsRoot, entry.name, \"run.json\"),\n ) as { id?: string; phase?: string; updatedAt?: string } | null;\n return {\n id: run?.id ?? entry.name,\n phase: run?.phase ?? \"unknown\",\n updatedAt: run?.updatedAt ?? \"\",\n };\n })\n .sort((a, b) => b.updatedAt.localeCompare(a.updatedAt));\n}\n\nfunction credentialStatusLines(): string[] {\n const configured = MODEL_CREDENTIAL_ENV_NAMES.filter((key) =>\n Boolean(process.env[key]),\n );\n if (configured.length > 0) {\n return [\n `Headless credentials: detected ${configured.join(\", \")} in this shell.`,\n \"Secret values were not read or stored.\",\n ];\n }\n return [\n `Headless credentials: none of ${MODEL_CREDENTIAL_ENV_NAMES.join(\", \")} are set in this shell.`,\n \"Set credentials in the Workbench app env or use Desktop/Agent-Native Code credentials; the migrate CLI will not store them.\",\n ];\n}\n\nfunction walkSourceFiles(root: string): string[] {\n const out: string[] = [];\n const ignored = new Set([\n \".git\",\n \".next\",\n \".turbo\",\n \"node_modules\",\n \"dist\",\n \"build\",\n \".output\",\n \"coverage\",\n ]);\n const visit = (dir: string) => {\n if (out.length > 5000) return;\n let entries: fs.Dirent[];\n try {\n entries = fs.readdirSync(dir, { withFileTypes: true });\n } catch {\n return;\n }\n for (const entry of entries) {\n if (ignored.has(entry.name)) continue;\n const absolute = path.join(dir, entry.name);\n if (entry.isDirectory()) {\n visit(absolute);\n } else if (entry.isFile()) {\n out.push(toPosix(path.relative(root, absolute)));\n }\n }\n };\n visit(root);\n return out.sort();\n}\n\nfunction routeFromFile(\n relativePath: string,\n): ProjectIRLike[\"site\"][\"routes\"][number] | null {\n const normalized = toPosix(relativePath);\n const router = normalized.startsWith(\"app/\") ? \"next-app\" : \"next-pages\";\n const isPageRoute =\n normalized.startsWith(\"pages/\") &&\n /\\.(ts|tsx|js|jsx|md|mdx)$/.test(normalized) &&\n !normalized.startsWith(\"pages/_app.\") &&\n !normalized.startsWith(\"pages/_document.\");\n const isAppRoute =\n normalized.startsWith(\"app/\") &&\n /\\/(page|route)\\.(ts|tsx|js|jsx|md|mdx)$/.test(normalized);\n if (!isPageRoute && !isAppRoute) return null;\n\n const isApi =\n normalized.startsWith(\"pages/api/\") ||\n /(^|\\/)api\\/.*\\/route\\.[tj]sx?$/.test(normalized) ||\n normalized.endsWith(\"/route.ts\") ||\n normalized.endsWith(\"/route.tsx\") ||\n normalized.endsWith(\"/route.js\") ||\n normalized.endsWith(\"/route.jsx\");\n\n let routePath = normalized;\n if (router === \"next-app\") {\n routePath = routePath\n .replace(/^app\\//, \"\")\n .replace(/(^|\\/)(page|route)\\.(ts|tsx|js|jsx|md|mdx)$/, \"\");\n } else {\n routePath = routePath\n .replace(/^pages\\//, \"\")\n .replace(/\\.(ts|tsx|js|jsx|md|mdx)$/, \"\");\n }\n\n routePath = routePath\n .replace(/\\/index$/, \"\")\n .replace(/^index$/, \"\")\n .replace(/^\\(.*?\\)\\//, \"\")\n .replace(/\\[(\\.\\.\\.)?([^\\]]+)\\]/g, (_, dots: string, name: string) =>\n dots ? `*${name}` : `:${name}`,\n );\n const publicPath = routePath ? `/${routePath}` : \"/\";\n const pathValue = publicPath === \"/api\" && isApi ? \"/api/*\" : publicPath;\n const kind = isApi\n ? \"api\"\n : pathValue === \"/\"\n ? \"landing\"\n : pathValue.includes(\"docs\")\n ? \"docs\"\n : pathValue.includes(\"pricing\") || pathValue.includes(\"blog\")\n ? \"marketing\"\n : \"app\";\n return {\n id: stableId(normalized),\n path: pathValue,\n filePath: normalized,\n router,\n kind,\n dynamic: pathValue.includes(\":\") || pathValue.includes(\"*\"),\n public: kind !== \"app\" && kind !== \"api\",\n notes: isApi\n ? [\n \"Convert to an action unless it uploads, streams, handles OAuth, or receives webhooks.\",\n ]\n : [],\n };\n}\n\nfunction apiPathFromFile(file: string): string {\n let value = file\n .replace(/^pages\\/api\\//, \"/api/\")\n .replace(/^app\\//, \"/\")\n .replace(/\\/route\\.[tj]sx?$/, \"\")\n .replace(/\\.[tj]sx?$/, \"\");\n value = value\n .replace(/\\/index$/, \"\")\n .replace(/\\[(\\.\\.\\.)?([^\\]]+)\\]/g, (_, dots: string, name: string) =>\n dots ? `*${name}` : `:${name}`,\n );\n return value || \"/api\";\n}\n\nfunction inferHttpMethod(text: string): string {\n const exported = text.match(\n /export\\s+(?:async\\s+)?function\\s+(GET|POST|PUT|PATCH|DELETE)/,\n );\n if (exported) return exported[1];\n const method = text.match(\n /method\\s*[:=]\\s*[\"'](GET|POST|PUT|PATCH|DELETE)[\"']/i,\n );\n return method?.[1]?.toUpperCase() ?? \"GET\";\n}\n\nfunction inferLlmProvider(text: string): string {\n if (/anthropic/i.test(text)) return \"anthropic\";\n if (/openai/i.test(text)) return \"openai\";\n return \"unknown\";\n}\n\nfunction inferAuthProvider(text: string): string {\n if (/better-auth/i.test(text)) return \"better-auth\";\n if (/next-auth/i.test(text)) return \"next-auth\";\n if (/clerk/i.test(text)) return \"clerk\";\n if (/auth0/i.test(text)) return \"auth0\";\n if (/supabase\\.auth/i.test(text)) return \"supabase\";\n return \"unknown\";\n}\n\nfunction componentName(file: string): string {\n const base = path.basename(file).replace(/\\.(ts|tsx|js|jsx)$/, \"\");\n return base\n .split(/[-_]/g)\n .filter(Boolean)\n .map((part) => part[0]?.toUpperCase() + part.slice(1))\n .join(\"\");\n}\n\nfunction detectPackageManager(sourceRoot: string): string {\n if (fs.existsSync(path.join(sourceRoot, \"pnpm-lock.yaml\"))) return \"pnpm\";\n if (fs.existsSync(path.join(sourceRoot, \"yarn.lock\"))) return \"yarn\";\n if (fs.existsSync(path.join(sourceRoot, \"package-lock.json\"))) return \"npm\";\n return \"unknown\";\n}\n\nfunction readSmallText(filePath: string): string | null {\n try {\n const stat = fs.statSync(filePath);\n if (stat.size > 256_000) return null;\n return fs.readFileSync(filePath, \"utf-8\");\n } catch {\n return null;\n }\n}\n\nfunction readJsonIfExists(filePath: string): unknown | null {\n try {\n return JSON.parse(fs.readFileSync(filePath, \"utf-8\"));\n } catch {\n return null;\n }\n}\n\nfunction readTextIfExists(filePath: string | undefined): string | null {\n if (!filePath) return null;\n try {\n return fs.readFileSync(filePath, \"utf-8\");\n } catch {\n return null;\n }\n}\n\nfunction hasAnyFile(root: string, files: string[]): boolean {\n return files.some((file) => fs.existsSync(path.join(root, file)));\n}\n\nfunction stableId(value: string): string {\n return crypto.createHash(\"sha1\").update(value).digest(\"hex\").slice(0, 12);\n}\n\nfunction isProbablyUrl(value: string): boolean {\n return /^[a-z][a-z0-9+.-]*:\\/\\//i.test(value);\n}\n\nfunction formatSourceForDisplay(source: SourceSpec): string {\n if (source.sourceRoot) return source.sourceRoot;\n return source.value;\n}\n\nfunction formatSourceForCommand(source: SourceSpec): string {\n if (source.kind === \"description\") {\n return `--describe ${shellQuote(source.value)}`;\n }\n const base = shellQuote(source.value);\n if (source.description) {\n return `${base} --describe ${shellQuote(source.description)}`;\n }\n return base;\n}\n\nfunction shellQuote(value: string): string {\n if (/^[A-Za-z0-9_./:@%+=,-]+$/.test(value)) return value;\n return JSON.stringify(value);\n}\n\nfunction toPosix(value: string): string {\n return value.split(path.sep).join(\"/\");\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"templates-meta.d.ts","sourceRoot":"","sources":["../../src/cli/templates-meta.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,MAAM,WAAW,YAAY;IAC3B,uDAAuD;IACvD,IAAI,EAAE,MAAM,CAAC;IACb,8BAA8B;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,+CAA+C;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,oCAAoC;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mDAAmD;IACnD,IAAI,EAAE,MAAM,CAAC;IACb,uBAAuB;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,+CAA+C;IAC/C,QAAQ,EAAE,MAAM,CAAC;IACjB,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,2EAA2E;IAC3E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6CAA6C;IAC7C,WAAW,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IAC7B,uEAAuE;IACvE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,8EAA8E;IAC9E,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,mEAAmE;IACnE,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,+EAA+E;IAC/E,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,wEAAwE;IACxE,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,eAAO,MAAM,SAAS,EAAE,YAAY,EAsPnC,CAAC;AAEF,yEAAyE;AACzE,wBAAgB,gBAAgB,IAAI,YAAY,EAAE,CAEjD;AAED,gFAAgF;AAChF,wBAAgB,aAAa,IAAI,YAAY,EAAE,CAE9C;AAED,2DAA2D;AAC3D,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAIlE;AAED,gEAAgE;AAChE,wBAAgB,gBAAgB,IAAI,MAAM,EAAE,CAE3C"}
1
+ {"version":3,"file":"templates-meta.d.ts","sourceRoot":"","sources":["../../src/cli/templates-meta.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,MAAM,WAAW,YAAY;IAC3B,uDAAuD;IACvD,IAAI,EAAE,MAAM,CAAC;IACb,8BAA8B;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,+CAA+C;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,oCAAoC;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mDAAmD;IACnD,IAAI,EAAE,MAAM,CAAC;IACb,uBAAuB;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,+CAA+C;IAC/C,QAAQ,EAAE,MAAM,CAAC;IACjB,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,2EAA2E;IAC3E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6CAA6C;IAC7C,WAAW,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IAC7B,uEAAuE;IACvE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,8EAA8E;IAC9E,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,mEAAmE;IACnE,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,+EAA+E;IAC/E,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,wEAAwE;IACxE,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,eAAO,MAAM,SAAS,EAAE,YAAY,EA8QnC,CAAC;AAEF,yEAAyE;AACzE,wBAAgB,gBAAgB,IAAI,YAAY,EAAE,CAEjD;AAED,gFAAgF;AAChF,wBAAgB,aAAa,IAAI,YAAY,EAAE,CAE9C;AAED,2DAA2D;AAC3D,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAIlE;AAED,gEAAgE;AAChE,wBAAgB,gBAAgB,IAAI,MAAM,EAAE,CAE3C"}
@@ -113,14 +113,25 @@ export const TEMPLATES = [
113
113
  defaultMode: "prod",
114
114
  core: true,
115
115
  },
116
+ {
117
+ name: "code",
118
+ label: "Agent-Native Code",
119
+ hint: "Hidden customizable Agent-Native Code UI for local coding sessions and slash commands",
120
+ icon: "Code",
121
+ color: "#71717A",
122
+ colorRgb: "113 113 122",
123
+ devPort: 8103,
124
+ defaultMode: "dev",
125
+ hidden: true,
126
+ },
116
127
  {
117
128
  name: "migration",
118
- label: "Migration",
119
- hint: "Migration Workbench move existing apps to agent-native with verification",
129
+ label: "Migration Goal Surface",
130
+ hint: "Internal Agent-Native Code detail surface for /migrate assessment, approval, and verification",
120
131
  icon: "Route",
121
132
  color: "#0F766E",
122
133
  colorRgb: "15 118 110",
123
- devPort: 8100,
134
+ devPort: 8101,
124
135
  defaultMode: "dev",
125
136
  hidden: true,
126
137
  requiredPackages: ["migrate"],
@@ -174,6 +185,19 @@ export const TEMPLATES = [
174
185
  defaultMode: "prod",
175
186
  core: true,
176
187
  },
188
+ {
189
+ name: "brain",
190
+ label: "Brain",
191
+ hint: "Cited company memory from Slack, meetings, transcripts, and decisions",
192
+ icon: "Brain",
193
+ color: "#8B5CF6",
194
+ colorRgb: "139 92 246",
195
+ devPort: 8102,
196
+ prodUrl: "https://brain.agent-native.com",
197
+ defaultMode: "prod",
198
+ defaultAgent: true,
199
+ core: true,
200
+ },
177
201
  {
178
202
  name: "design",
179
203
  label: "Design",
@@ -1 +1 @@
1
- {"version":3,"file":"templates-meta.js","sourceRoot":"","sources":["../../src/cli/templates-meta.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * First-party template metadata used by the `agent-native` CLI.\n *\n * This file is intentionally inlined here (rather than imported from a\n * separate workspace package) so that the published `@agent-native/core`\n * has no `workspace:*` runtime dependencies. Without this inlining, `npx\n * @agent-native/core create ...` fails on a fresh machine with:\n *\n * npm error code EUNSUPPORTEDPROTOCOL\n * npm error Unsupported URL Type \"workspace:\": workspace:*\n *\n * Keep this list in sync with `packages/shared-app-config/templates.ts`,\n * which serves the same metadata to the desktop / mobile / frame packages\n * that always run inside the workspace. Duplication is intentional: the\n * CLI must remain installable outside the monorepo.\n */\n\nexport interface TemplateMeta {\n /** Directory name under templates/ and package name */\n name: string;\n /** Display name in pickers */\n label: string;\n /** One-line description shown in the picker */\n hint: string;\n /** Longer description (optional) */\n description?: string;\n /** Tabler icon name used in the desktop sidebar */\n icon: string;\n /** Hex accent color */\n color: string;\n /** CSS-safe RGB triplet (e.g. \"59 130 246\") */\n colorRgb: string;\n /** Dev server port for desktop `pnpm dev` */\n devPort: number;\n /** Production URL when running as a first-party app on agent-native.com */\n prodUrl?: string;\n /** Default URL path when deployed in a workspace (defaults to \"/<name>\") */\n prodPath?: string;\n /** Default mode when added to desktop app */\n defaultMode?: \"dev\" | \"prod\";\n /** Hide from pickers but still scaffoldable via explicit --template */\n hidden?: boolean;\n /** Include as a built-in connected A2A agent even when hidden from pickers */\n defaultAgent?: boolean;\n /** Always scaffold without prompting (e.g. starter as fallback) */\n alwaysAvailable?: boolean;\n /** Internal workspace packages this template depends on (e.g. \"scheduling\") */\n requiredPackages?: string[];\n /** Core app — featured in the CLI picker, homepage, and docs gallery */\n core?: boolean;\n}\n\nexport const TEMPLATES: TemplateMeta[] = [\n {\n name: \"calendar\",\n label: \"Calendar\",\n hint: \"Agent-native Google Calendar — manage events, sync, and public booking\",\n icon: \"CalendarDays\",\n color: \"#00B5FF\",\n colorRgb: \"0 181 255\",\n devPort: 8082,\n prodUrl: \"https://calendar.agent-native.com\",\n defaultMode: \"prod\",\n requiredPackages: [\"scheduling\"],\n core: true,\n },\n {\n name: \"content\",\n label: \"Content\",\n hint: \"Agent-native Notion/Google Docs — write and organize with agent assistance\",\n icon: \"FileText\",\n color: \"#10B981\",\n colorRgb: \"16 185 129\",\n devPort: 8083,\n prodUrl: \"https://content.agent-native.com\",\n defaultMode: \"prod\",\n core: true,\n },\n {\n name: \"slides\",\n label: \"Slides\",\n hint: \"Agent-native Google Slides — generate and edit React presentations\",\n icon: \"GalleryHorizontal\",\n color: \"#EC4899\",\n colorRgb: \"236 72 153\",\n devPort: 8086,\n prodUrl: \"https://slides.agent-native.com\",\n defaultMode: \"prod\",\n requiredPackages: [\"pinpoint\"],\n core: true,\n },\n {\n name: \"videos\",\n label: \"Video\",\n hint: \"Agent-native video editing with Remotion\",\n icon: \"Video\",\n color: \"#EF4444\",\n colorRgb: \"239 68 68\",\n devPort: 8087,\n prodUrl: \"https://videos.agent-native.com\",\n defaultMode: \"prod\",\n requiredPackages: [\"pinpoint\"],\n },\n {\n name: \"analytics\",\n label: \"Analytics\",\n hint: \"Agent-native Amplitude/Mixpanel — connect data sources, prompt for charts\",\n icon: \"BarChart2\",\n color: \"#F59E0B\",\n colorRgb: \"245 158 11\",\n devPort: 8088,\n prodUrl: \"https://analytics.agent-native.com\",\n defaultMode: \"prod\",\n core: true,\n },\n {\n name: \"mail\",\n label: \"Mail\",\n hint: \"Agent-native Superhuman — email client with keyboard shortcuts and AI triage\",\n icon: \"Mail\",\n color: \"#3B82F6\",\n colorRgb: \"59 130 246\",\n devPort: 8085,\n prodUrl: \"https://mail.agent-native.com\",\n defaultMode: \"prod\",\n core: true,\n },\n {\n name: \"dispatch\",\n label: \"Dispatch\",\n hint: \"Central Slack/Telegram router with jobs, memory, approvals, and A2A delegation\",\n icon: \"MessageCircle\",\n color: \"#14B8A6\",\n colorRgb: \"20 184 166\",\n devPort: 8092,\n prodUrl: \"https://dispatch.agent-native.com\",\n defaultMode: \"prod\",\n core: true,\n },\n {\n name: \"forms\",\n label: \"Forms\",\n hint: \"Agent-native form builder — create, edit, and manage forms\",\n icon: \"ClipboardList\",\n color: \"#06B6D4\",\n colorRgb: \"6 182 212\",\n devPort: 8084,\n prodUrl: \"https://forms.agent-native.com\",\n defaultMode: \"prod\",\n core: true,\n },\n {\n name: \"migration\",\n label: \"Migration\",\n hint: \"Migration Workbench — move existing apps to agent-native with verification\",\n icon: \"Route\",\n color: \"#0F766E\",\n colorRgb: \"15 118 110\",\n devPort: 8100,\n defaultMode: \"dev\",\n hidden: true,\n requiredPackages: [\"migrate\"],\n },\n {\n name: \"issues\",\n label: \"Issues\",\n hint: \"Agent-native Jira — project management and issue tracking\",\n icon: \"BrandJira\",\n color: \"#0EA5E9\",\n colorRgb: \"14 165 233\",\n devPort: 8091,\n prodUrl: \"https://issues.agent-native.com\",\n defaultMode: \"dev\",\n hidden: true,\n },\n {\n name: \"recruiting\",\n label: \"Recruiting\",\n hint: \"Agent-native Greenhouse — manage candidates and recruiting pipelines\",\n icon: \"Users\",\n color: \"#16A34A\",\n colorRgb: \"22 163 74\",\n devPort: 8090,\n prodUrl: \"https://recruiting.agent-native.com\",\n defaultMode: \"dev\",\n hidden: true,\n },\n {\n name: \"starter\",\n label: \"Starter\",\n hint: \"Minimal scaffold with the agent chat and core architecture wired up\",\n icon: \"Code\",\n color: \"#71717A\",\n colorRgb: \"113 113 122\",\n devPort: 8089,\n defaultMode: \"prod\",\n alwaysAvailable: true,\n core: true,\n hidden: true,\n },\n {\n name: \"clips\",\n label: \"Clips\",\n hint: \"Screen recording, meeting notes, and voice dictation — all with AI\",\n icon: \"ScreenShare\",\n color: \"#0EA5E9\",\n colorRgb: \"14 165 233\",\n devPort: 8094,\n prodUrl: \"https://clips.agent-native.com\",\n defaultMode: \"prod\",\n core: true,\n },\n {\n name: \"design\",\n label: \"Design\",\n hint: \"Agent-native design tool — create and edit visual designs with agent assistance\",\n icon: \"Brush\",\n color: \"#F472B6\",\n colorRgb: \"244 114 182\",\n devPort: 8099,\n prodUrl: \"https://design.agent-native.com\",\n defaultMode: \"prod\",\n requiredPackages: [\"pinpoint\"],\n core: true,\n },\n {\n name: \"images\",\n label: \"Images\",\n hint: \"Brand image libraries — generate on-brand heroes, diagrams, product shots, and slide art\",\n icon: \"Photo\",\n color: \"#0F766E\",\n colorRgb: \"15 118 110\",\n devPort: 8100,\n prodUrl: \"https://images.agent-native.com\",\n defaultMode: \"prod\",\n hidden: true,\n defaultAgent: true,\n },\n {\n name: \"calls\",\n label: \"Calls\",\n hint: \"Agent-native Gong — record, transcribe, and analyze sales calls\",\n icon: \"Phone\",\n color: \"#111111\",\n colorRgb: \"17 17 17\",\n devPort: 8095,\n prodUrl: \"https://calls.agent-native.com\",\n defaultMode: \"prod\",\n hidden: true,\n },\n {\n name: \"meeting-notes\",\n label: \"Meeting Notes\",\n hint: \"AI meeting notes — transcribe, enhance, and share meeting notes\",\n icon: \"Note\",\n color: \"#16A34A\",\n colorRgb: \"22 163 74\",\n devPort: 8096,\n prodUrl: \"https://meeting-notes.agent-native.com\",\n defaultMode: \"prod\",\n hidden: true,\n },\n {\n name: \"scheduling\",\n label: \"Scheduling\",\n hint: \"Full scheduling app — event types, team round-robin, routing forms, workflows\",\n icon: \"CalendarTime\",\n color: \"#0EA5E9\",\n colorRgb: \"14 165 233\",\n devPort: 8098,\n prodUrl: \"https://scheduling.agent-native.com\",\n defaultMode: \"prod\",\n requiredPackages: [\"scheduling\"],\n hidden: true,\n },\n {\n name: \"voice\",\n label: \"Voice\",\n hint: \"Voice dictation — speak to type anywhere with context-aware formatting\",\n icon: \"Microphone\",\n color: \"#0EA5E9\",\n colorRgb: \"14 165 233\",\n devPort: 8097,\n prodUrl: \"https://voice.agent-native.com\",\n defaultMode: \"prod\",\n hidden: true,\n },\n {\n name: \"macros\",\n label: \"Macros\",\n hint: \"Internal template — not shown in pickers\",\n icon: \"Code\",\n color: \"#71717A\",\n colorRgb: \"113 113 122\",\n devPort: 8093,\n hidden: true,\n defaultMode: \"dev\",\n },\n];\n\n/** Return templates visible in user-facing pickers (excludes hidden). */\nexport function visibleTemplates(): TemplateMeta[] {\n return TEMPLATES.filter((t) => !t.hidden);\n}\n\n/** Return core templates — the featured set shown in CLI pickers by default. */\nexport function coreTemplates(): TemplateMeta[] {\n return TEMPLATES.filter((t) => t.core);\n}\n\n/** Lookup by name. Returns undefined for unknown names. */\nexport function getTemplate(name: string): TemplateMeta | undefined {\n // Tolerate the legacy \"video\" alias.\n if (name === \"video\") name = \"videos\";\n return TEMPLATES.find((t) => t.name === name);\n}\n\n/** Names of all templates (including hidden) for validation. */\nexport function allTemplateNames(): string[] {\n return TEMPLATES.map((t) => t.name);\n}\n"]}
1
+ {"version":3,"file":"templates-meta.js","sourceRoot":"","sources":["../../src/cli/templates-meta.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * First-party template metadata used by the `agent-native` CLI.\n *\n * This file is intentionally inlined here (rather than imported from a\n * separate workspace package) so that the published `@agent-native/core`\n * has no `workspace:*` runtime dependencies. Without this inlining, `npx\n * @agent-native/core create ...` fails on a fresh machine with:\n *\n * npm error code EUNSUPPORTEDPROTOCOL\n * npm error Unsupported URL Type \"workspace:\": workspace:*\n *\n * Keep this list in sync with `packages/shared-app-config/templates.ts`,\n * which serves the same metadata to the desktop / mobile / frame packages\n * that always run inside the workspace. Duplication is intentional: the\n * CLI must remain installable outside the monorepo.\n */\n\nexport interface TemplateMeta {\n /** Directory name under templates/ and package name */\n name: string;\n /** Display name in pickers */\n label: string;\n /** One-line description shown in the picker */\n hint: string;\n /** Longer description (optional) */\n description?: string;\n /** Tabler icon name used in the desktop sidebar */\n icon: string;\n /** Hex accent color */\n color: string;\n /** CSS-safe RGB triplet (e.g. \"59 130 246\") */\n colorRgb: string;\n /** Dev server port for desktop `pnpm dev` */\n devPort: number;\n /** Production URL when running as a first-party app on agent-native.com */\n prodUrl?: string;\n /** Default URL path when deployed in a workspace (defaults to \"/<name>\") */\n prodPath?: string;\n /** Default mode when added to desktop app */\n defaultMode?: \"dev\" | \"prod\";\n /** Hide from pickers but still scaffoldable via explicit --template */\n hidden?: boolean;\n /** Include as a built-in connected A2A agent even when hidden from pickers */\n defaultAgent?: boolean;\n /** Always scaffold without prompting (e.g. starter as fallback) */\n alwaysAvailable?: boolean;\n /** Internal workspace packages this template depends on (e.g. \"scheduling\") */\n requiredPackages?: string[];\n /** Core app — featured in the CLI picker, homepage, and docs gallery */\n core?: boolean;\n}\n\nexport const TEMPLATES: TemplateMeta[] = [\n {\n name: \"calendar\",\n label: \"Calendar\",\n hint: \"Agent-native Google Calendar — manage events, sync, and public booking\",\n icon: \"CalendarDays\",\n color: \"#00B5FF\",\n colorRgb: \"0 181 255\",\n devPort: 8082,\n prodUrl: \"https://calendar.agent-native.com\",\n defaultMode: \"prod\",\n requiredPackages: [\"scheduling\"],\n core: true,\n },\n {\n name: \"content\",\n label: \"Content\",\n hint: \"Agent-native Notion/Google Docs — write and organize with agent assistance\",\n icon: \"FileText\",\n color: \"#10B981\",\n colorRgb: \"16 185 129\",\n devPort: 8083,\n prodUrl: \"https://content.agent-native.com\",\n defaultMode: \"prod\",\n core: true,\n },\n {\n name: \"slides\",\n label: \"Slides\",\n hint: \"Agent-native Google Slides — generate and edit React presentations\",\n icon: \"GalleryHorizontal\",\n color: \"#EC4899\",\n colorRgb: \"236 72 153\",\n devPort: 8086,\n prodUrl: \"https://slides.agent-native.com\",\n defaultMode: \"prod\",\n requiredPackages: [\"pinpoint\"],\n core: true,\n },\n {\n name: \"videos\",\n label: \"Video\",\n hint: \"Agent-native video editing with Remotion\",\n icon: \"Video\",\n color: \"#EF4444\",\n colorRgb: \"239 68 68\",\n devPort: 8087,\n prodUrl: \"https://videos.agent-native.com\",\n defaultMode: \"prod\",\n requiredPackages: [\"pinpoint\"],\n },\n {\n name: \"analytics\",\n label: \"Analytics\",\n hint: \"Agent-native Amplitude/Mixpanel — connect data sources, prompt for charts\",\n icon: \"BarChart2\",\n color: \"#F59E0B\",\n colorRgb: \"245 158 11\",\n devPort: 8088,\n prodUrl: \"https://analytics.agent-native.com\",\n defaultMode: \"prod\",\n core: true,\n },\n {\n name: \"mail\",\n label: \"Mail\",\n hint: \"Agent-native Superhuman — email client with keyboard shortcuts and AI triage\",\n icon: \"Mail\",\n color: \"#3B82F6\",\n colorRgb: \"59 130 246\",\n devPort: 8085,\n prodUrl: \"https://mail.agent-native.com\",\n defaultMode: \"prod\",\n core: true,\n },\n {\n name: \"dispatch\",\n label: \"Dispatch\",\n hint: \"Central Slack/Telegram router with jobs, memory, approvals, and A2A delegation\",\n icon: \"MessageCircle\",\n color: \"#14B8A6\",\n colorRgb: \"20 184 166\",\n devPort: 8092,\n prodUrl: \"https://dispatch.agent-native.com\",\n defaultMode: \"prod\",\n core: true,\n },\n {\n name: \"forms\",\n label: \"Forms\",\n hint: \"Agent-native form builder — create, edit, and manage forms\",\n icon: \"ClipboardList\",\n color: \"#06B6D4\",\n colorRgb: \"6 182 212\",\n devPort: 8084,\n prodUrl: \"https://forms.agent-native.com\",\n defaultMode: \"prod\",\n core: true,\n },\n {\n name: \"code\",\n label: \"Agent-Native Code\",\n hint: \"Hidden customizable Agent-Native Code UI for local coding sessions and slash commands\",\n icon: \"Code\",\n color: \"#71717A\",\n colorRgb: \"113 113 122\",\n devPort: 8103,\n defaultMode: \"dev\",\n hidden: true,\n },\n {\n name: \"migration\",\n label: \"Migration Goal Surface\",\n hint: \"Internal Agent-Native Code detail surface for /migrate assessment, approval, and verification\",\n icon: \"Route\",\n color: \"#0F766E\",\n colorRgb: \"15 118 110\",\n devPort: 8101,\n defaultMode: \"dev\",\n hidden: true,\n requiredPackages: [\"migrate\"],\n },\n {\n name: \"issues\",\n label: \"Issues\",\n hint: \"Agent-native Jira — project management and issue tracking\",\n icon: \"BrandJira\",\n color: \"#0EA5E9\",\n colorRgb: \"14 165 233\",\n devPort: 8091,\n prodUrl: \"https://issues.agent-native.com\",\n defaultMode: \"dev\",\n hidden: true,\n },\n {\n name: \"recruiting\",\n label: \"Recruiting\",\n hint: \"Agent-native Greenhouse — manage candidates and recruiting pipelines\",\n icon: \"Users\",\n color: \"#16A34A\",\n colorRgb: \"22 163 74\",\n devPort: 8090,\n prodUrl: \"https://recruiting.agent-native.com\",\n defaultMode: \"dev\",\n hidden: true,\n },\n {\n name: \"starter\",\n label: \"Starter\",\n hint: \"Minimal scaffold with the agent chat and core architecture wired up\",\n icon: \"Code\",\n color: \"#71717A\",\n colorRgb: \"113 113 122\",\n devPort: 8089,\n defaultMode: \"prod\",\n alwaysAvailable: true,\n core: true,\n hidden: true,\n },\n {\n name: \"clips\",\n label: \"Clips\",\n hint: \"Screen recording, meeting notes, and voice dictation — all with AI\",\n icon: \"ScreenShare\",\n color: \"#0EA5E9\",\n colorRgb: \"14 165 233\",\n devPort: 8094,\n prodUrl: \"https://clips.agent-native.com\",\n defaultMode: \"prod\",\n core: true,\n },\n {\n name: \"brain\",\n label: \"Brain\",\n hint: \"Cited company memory from Slack, meetings, transcripts, and decisions\",\n icon: \"Brain\",\n color: \"#8B5CF6\",\n colorRgb: \"139 92 246\",\n devPort: 8102,\n prodUrl: \"https://brain.agent-native.com\",\n defaultMode: \"prod\",\n defaultAgent: true,\n core: true,\n },\n {\n name: \"design\",\n label: \"Design\",\n hint: \"Agent-native design tool — create and edit visual designs with agent assistance\",\n icon: \"Brush\",\n color: \"#F472B6\",\n colorRgb: \"244 114 182\",\n devPort: 8099,\n prodUrl: \"https://design.agent-native.com\",\n defaultMode: \"prod\",\n requiredPackages: [\"pinpoint\"],\n core: true,\n },\n {\n name: \"images\",\n label: \"Images\",\n hint: \"Brand image libraries — generate on-brand heroes, diagrams, product shots, and slide art\",\n icon: \"Photo\",\n color: \"#0F766E\",\n colorRgb: \"15 118 110\",\n devPort: 8100,\n prodUrl: \"https://images.agent-native.com\",\n defaultMode: \"prod\",\n hidden: true,\n defaultAgent: true,\n },\n {\n name: \"calls\",\n label: \"Calls\",\n hint: \"Agent-native Gong — record, transcribe, and analyze sales calls\",\n icon: \"Phone\",\n color: \"#111111\",\n colorRgb: \"17 17 17\",\n devPort: 8095,\n prodUrl: \"https://calls.agent-native.com\",\n defaultMode: \"prod\",\n hidden: true,\n },\n {\n name: \"meeting-notes\",\n label: \"Meeting Notes\",\n hint: \"AI meeting notes — transcribe, enhance, and share meeting notes\",\n icon: \"Note\",\n color: \"#16A34A\",\n colorRgb: \"22 163 74\",\n devPort: 8096,\n prodUrl: \"https://meeting-notes.agent-native.com\",\n defaultMode: \"prod\",\n hidden: true,\n },\n {\n name: \"scheduling\",\n label: \"Scheduling\",\n hint: \"Full scheduling app — event types, team round-robin, routing forms, workflows\",\n icon: \"CalendarTime\",\n color: \"#0EA5E9\",\n colorRgb: \"14 165 233\",\n devPort: 8098,\n prodUrl: \"https://scheduling.agent-native.com\",\n defaultMode: \"prod\",\n requiredPackages: [\"scheduling\"],\n hidden: true,\n },\n {\n name: \"voice\",\n label: \"Voice\",\n hint: \"Voice dictation — speak to type anywhere with context-aware formatting\",\n icon: \"Microphone\",\n color: \"#0EA5E9\",\n colorRgb: \"14 165 233\",\n devPort: 8097,\n prodUrl: \"https://voice.agent-native.com\",\n defaultMode: \"prod\",\n hidden: true,\n },\n {\n name: \"macros\",\n label: \"Macros\",\n hint: \"Internal template — not shown in pickers\",\n icon: \"Code\",\n color: \"#71717A\",\n colorRgb: \"113 113 122\",\n devPort: 8093,\n hidden: true,\n defaultMode: \"dev\",\n },\n];\n\n/** Return templates visible in user-facing pickers (excludes hidden). */\nexport function visibleTemplates(): TemplateMeta[] {\n return TEMPLATES.filter((t) => !t.hidden);\n}\n\n/** Return core templates — the featured set shown in CLI pickers by default. */\nexport function coreTemplates(): TemplateMeta[] {\n return TEMPLATES.filter((t) => t.core);\n}\n\n/** Lookup by name. Returns undefined for unknown names. */\nexport function getTemplate(name: string): TemplateMeta | undefined {\n // Tolerate the legacy \"video\" alias.\n if (name === \"video\") name = \"videos\";\n return TEMPLATES.find((t) => t.name === name);\n}\n\n/** Names of all templates (including hidden) for validation. */\nexport function allTemplateNames(): string[] {\n return TEMPLATES.map((t) => t.name);\n}\n"]}
@@ -11,6 +11,8 @@ export interface WorkspacifyOptions {
11
11
  workspaceCoreName: string;
12
12
  /** Version range to use for the published @agent-native/core package */
13
13
  coreDependencyVersion?: string;
14
+ /** Version range to use for the package-backed Dispatch app */
15
+ dispatchDependencyVersion?: string;
14
16
  }
15
17
  export declare function workspacifyApp(opts: WorkspacifyOptions): void;
16
18
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"workspacify.d.ts","sourceRoot":"","sources":["../../src/cli/workspacify.ts"],"names":[],"mappings":"AA2BA,MAAM,WAAW,kBAAkB;IACjC,wEAAwE;IACxE,MAAM,EAAE,MAAM,CAAC;IACf,6BAA6B;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,kEAAkE;IAClE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,+BAA+B;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,gEAAgE;IAChE,iBAAiB,EAAE,MAAM,CAAC;IAC1B,wEAAwE;IACxE,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,kBAAkB,GAAG,IAAI,CA+F7D;AA2DD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,iBAAiB,EAAE,MAAM,GAAG,MAAM,CAGrE"}
1
+ {"version":3,"file":"workspacify.d.ts","sourceRoot":"","sources":["../../src/cli/workspacify.ts"],"names":[],"mappings":"AA2BA,MAAM,WAAW,kBAAkB;IACjC,wEAAwE;IACxE,MAAM,EAAE,MAAM,CAAC;IACf,6BAA6B;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,kEAAkE;IAClE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,+BAA+B;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,gEAAgE;IAChE,iBAAiB,EAAE,MAAM,CAAC;IAC1B,wEAAwE;IACxE,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,+DAA+D;IAC/D,yBAAyB,CAAC,EAAE,MAAM,CAAC;CACpC;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,kBAAkB,GAAG,IAAI,CAgG7D;AA2DD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,iBAAiB,EAAE,MAAM,GAAG,MAAM,CAGrE"}
@@ -26,6 +26,7 @@ const POSTGRES_DEPENDENCY_VERSION = "^3.4.9";
26
26
  export function workspacifyApp(opts) {
27
27
  const { appDir, workspaceCoreName } = opts;
28
28
  const coreDependencyVersion = opts.coreDependencyVersion ?? "latest";
29
+ const dispatchDependencyVersion = opts.dispatchDependencyVersion ?? "latest";
29
30
  // 1) Rewrite package.json to add the workspace core dep and resolve
30
31
  // @agent-native/core / @agent-native/dispatch workspace:* refs to
31
32
  // published package ranges. Other workspace:* deps (e.g.
@@ -49,7 +50,7 @@ export function workspacifyApp(opts) {
49
50
  deps[key] = coreDependencyVersion;
50
51
  }
51
52
  if (key === "@agent-native/dispatch") {
52
- deps[key] = "latest";
53
+ deps[key] = dispatchDependencyVersion;
53
54
  }
54
55
  }
55
56
  }
@@ -1 +1 @@
1
- {"version":3,"file":"workspacify.js","sourceRoot":"","sources":["../../src/cli/workspacify.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Transform a standalone template directory into a workspace app in place.\n *\n * Called after copying any template under `apps/<name>/` inside an enterprise\n * workspace. The transform:\n *\n * 1. Rewrites package.json:\n * - @agent-native/core and package-backed apps stay as regular npm deps\n * - Adds @<workspace-scope>/shared as a workspace:* dep so the app\n * inherits shared plugins/skills/AGENTS.md via the three-layer model.\n * 2. Removes files that only make sense in standalone apps\n * (`learnings.defaults.md`, etc.).\n * 3. Replaces starter's stock auth/chat wrappers with inherited wrappers so\n * the workspace core can own those plugin slots while framework defaults\n * still mount when the workspace core is empty.\n * 4. Leaves app source code untouched. The three-layer framework\n * auto-discovers workspace-core via `agent-native.workspaceCore` in the\n * workspace root package.json — no per-app wiring needed.\n *\n * This means any first-party template under templates/* is usable as a\n * workspace app without maintaining a parallel copy.\n */\nimport fs from \"fs\";\nimport path from \"path\";\n\nconst POSTGRES_DEPENDENCY_VERSION = \"^3.4.9\";\n\nexport interface WorkspacifyOptions {\n /** Target app directory (already populated with the copied template) */\n appDir: string;\n /** App name (e.g. \"mail\") */\n appName: string;\n /** Source template name (e.g. \"starter\" when appName is \"crm\") */\n templateName?: string;\n /** Workspace root directory */\n workspaceRoot: string;\n /** Shared workspace package name (e.g. \"@my-company/shared\") */\n workspaceCoreName: string;\n /** Version range to use for the published @agent-native/core package */\n coreDependencyVersion?: string;\n}\n\nexport function workspacifyApp(opts: WorkspacifyOptions): void {\n const { appDir, workspaceCoreName } = opts;\n const coreDependencyVersion = opts.coreDependencyVersion ?? \"latest\";\n\n // 1) Rewrite package.json to add the workspace core dep and resolve\n // @agent-native/core / @agent-native/dispatch workspace:* refs to\n // published package ranges. Other workspace:* deps (e.g.\n // @agent-native/scheduling) stay as-is — they resolve within the\n // workspace because the required package is scaffolded alongside the app.\n const pkgPath = path.join(appDir, \"package.json\");\n if (fs.existsSync(pkgPath)) {\n try {\n const pkg = JSON.parse(fs.readFileSync(pkgPath, \"utf-8\"));\n for (const depType of [\n \"dependencies\",\n \"devDependencies\",\n \"peerDependencies\",\n ] as const) {\n const deps = pkg[depType];\n if (!deps) continue;\n for (const [key, val] of Object.entries(deps)) {\n if (typeof val === \"string\" && val.startsWith(\"workspace:\")) {\n if (key === \"@agent-native/core\") {\n deps[key] = coreDependencyVersion;\n }\n if (key === \"@agent-native/dispatch\") {\n deps[key] = \"latest\";\n }\n }\n }\n }\n // Ensure the dependency on the workspace shared package is present.\n pkg.dependencies = pkg.dependencies ?? {};\n pkg.dependencies[workspaceCoreName] = \"workspace:*\";\n // Core loads postgres-js lazily when DATABASE_URL points at Postgres.\n // Add the runtime package to workspace apps so production bundles do\n // not fail only after a hosted Postgres database is configured.\n pkg.dependencies.postgres ??= POSTGRES_DEPENDENCY_VERSION;\n // pnpm build-script approvals belong at the workspace root. Leaving the\n // template's per-app setting in place makes pnpm warn on every install.\n if (pkg.pnpm && typeof pkg.pnpm === \"object\") {\n delete pkg.pnpm.onlyBuiltDependencies;\n if (Object.keys(pkg.pnpm).length === 0) {\n delete pkg.pnpm;\n }\n }\n fs.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + \"\\n\");\n } catch {\n // Non-fatal: leave package.json unchanged.\n }\n }\n\n // 2) Remove standalone-only files that would confuse the workspace layout.\n for (const f of [\n \"learnings.defaults.md\",\n // If the template shipped its own workspace marker / stray monorepo\n // files, strip them here too.\n ]) {\n const p = path.join(appDir, f);\n if (fs.existsSync(p)) fs.unlinkSync(p);\n }\n\n // 3) Templates document action commands from the framework repo layout.\n // Workspace apps live under apps/<name>, so point every agent at the\n // generated app directory instead.\n const agentsPath = path.join(appDir, \"AGENTS.md\");\n if (fs.existsSync(agentsPath)) {\n try {\n let content = fs.readFileSync(agentsPath, \"utf-8\");\n content = content\n .replace(\n \"The terminal cwd is the framework root. Always `cd` to this template's root before running any action:\",\n `The terminal cwd is the workspace root. Always \\`cd\\` to this app's root before running any action:`,\n )\n .replace(\n /cd templates\\/[^ \\n]+ && pnpm action/g,\n `cd apps/${opts.appName} && pnpm action`,\n );\n fs.writeFileSync(agentsPath, content);\n } catch {\n // Non-fatal: leave AGENTS.md unchanged.\n }\n }\n\n if ((opts.templateName ?? opts.appName) === \"starter\") {\n writeInheritedStarterPlugin(appDir, workspaceCoreName, {\n fileName: \"auth.ts\",\n exportName: \"defaultAuthPlugin\",\n });\n writeInheritedStarterAgentChatPlugin(\n appDir,\n workspaceCoreName,\n opts.appName,\n );\n }\n}\n\nfunction writeInheritedStarterPlugin(\n appDir: string,\n workspaceCoreName: string,\n opts: { fileName: string; exportName: string },\n): void {\n const pluginsDir = path.join(appDir, \"server\", \"plugins\");\n fs.mkdirSync(pluginsDir, { recursive: true });\n const pluginPath = path.join(pluginsDir, opts.fileName);\n fs.writeFileSync(\n pluginPath,\n [\n `import { ${opts.exportName} as frameworkDefault } from \"@agent-native/core/server\";`,\n `import * as workspaceServer from ${JSON.stringify(`${workspaceCoreName}/server`)};`,\n \"\",\n `const workspacePlugin = (workspaceServer as Record<string, unknown>).${opts.exportName};`,\n \"\",\n 'export default typeof workspacePlugin === \"function\"',\n \" ? workspacePlugin\",\n \" : frameworkDefault;\",\n \"\",\n ].join(\"\\n\"),\n );\n}\n\nfunction writeInheritedStarterAgentChatPlugin(\n appDir: string,\n workspaceCoreName: string,\n appId: string,\n): void {\n const pluginsDir = path.join(appDir, \"server\", \"plugins\");\n fs.mkdirSync(pluginsDir, { recursive: true });\n const pluginPath = path.join(pluginsDir, \"agent-chat.ts\");\n fs.writeFileSync(\n pluginPath,\n [\n `import {`,\n ` createAgentChatPlugin,`,\n ` loadActionsFromStaticRegistry,`,\n ` type AgentChatPluginOptions,`,\n `} from \"@agent-native/core/server\";`,\n `import * as workspaceServer from ${JSON.stringify(`${workspaceCoreName}/server`)};`,\n `import actionsRegistry from \"../../.generated/actions-registry.js\";`,\n \"\",\n `const createWorkspaceAgentChatPlugin = (workspaceServer as Record<string, unknown>).createWorkspaceAgentChatPlugin;`,\n `const options = {`,\n ` appId: ${JSON.stringify(appId)},`,\n ` actions: loadActionsFromStaticRegistry(actionsRegistry),`,\n `} satisfies AgentChatPluginOptions;`,\n \"\",\n `export default typeof createWorkspaceAgentChatPlugin === \"function\"`,\n ` ? (createWorkspaceAgentChatPlugin as (options: AgentChatPluginOptions) => unknown)(options)`,\n ` : createAgentChatPlugin(options);`,\n \"\",\n ].join(\"\\n\"),\n );\n}\n\n/**\n * Parse a workspace core package name into its npm scope.\n * \"@my-company/shared\" → \"my-company\"\n * \"shared\" → \"\" (no scope — shouldn't happen)\n */\nexport function parseWorkspaceScope(workspaceCoreName: string): string {\n const m = workspaceCoreName.match(/^@([^/]+)\\//);\n return m ? m[1] : \"\";\n}\n"]}
1
+ {"version":3,"file":"workspacify.js","sourceRoot":"","sources":["../../src/cli/workspacify.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Transform a standalone template directory into a workspace app in place.\n *\n * Called after copying any template under `apps/<name>/` inside an enterprise\n * workspace. The transform:\n *\n * 1. Rewrites package.json:\n * - @agent-native/core and package-backed apps stay as regular npm deps\n * - Adds @<workspace-scope>/shared as a workspace:* dep so the app\n * inherits shared plugins/skills/AGENTS.md via the three-layer model.\n * 2. Removes files that only make sense in standalone apps\n * (`learnings.defaults.md`, etc.).\n * 3. Replaces starter's stock auth/chat wrappers with inherited wrappers so\n * the workspace core can own those plugin slots while framework defaults\n * still mount when the workspace core is empty.\n * 4. Leaves app source code untouched. The three-layer framework\n * auto-discovers workspace-core via `agent-native.workspaceCore` in the\n * workspace root package.json — no per-app wiring needed.\n *\n * This means any first-party template under templates/* is usable as a\n * workspace app without maintaining a parallel copy.\n */\nimport fs from \"fs\";\nimport path from \"path\";\n\nconst POSTGRES_DEPENDENCY_VERSION = \"^3.4.9\";\n\nexport interface WorkspacifyOptions {\n /** Target app directory (already populated with the copied template) */\n appDir: string;\n /** App name (e.g. \"mail\") */\n appName: string;\n /** Source template name (e.g. \"starter\" when appName is \"crm\") */\n templateName?: string;\n /** Workspace root directory */\n workspaceRoot: string;\n /** Shared workspace package name (e.g. \"@my-company/shared\") */\n workspaceCoreName: string;\n /** Version range to use for the published @agent-native/core package */\n coreDependencyVersion?: string;\n /** Version range to use for the package-backed Dispatch app */\n dispatchDependencyVersion?: string;\n}\n\nexport function workspacifyApp(opts: WorkspacifyOptions): void {\n const { appDir, workspaceCoreName } = opts;\n const coreDependencyVersion = opts.coreDependencyVersion ?? \"latest\";\n const dispatchDependencyVersion = opts.dispatchDependencyVersion ?? \"latest\";\n\n // 1) Rewrite package.json to add the workspace core dep and resolve\n // @agent-native/core / @agent-native/dispatch workspace:* refs to\n // published package ranges. Other workspace:* deps (e.g.\n // @agent-native/scheduling) stay as-is — they resolve within the\n // workspace because the required package is scaffolded alongside the app.\n const pkgPath = path.join(appDir, \"package.json\");\n if (fs.existsSync(pkgPath)) {\n try {\n const pkg = JSON.parse(fs.readFileSync(pkgPath, \"utf-8\"));\n for (const depType of [\n \"dependencies\",\n \"devDependencies\",\n \"peerDependencies\",\n ] as const) {\n const deps = pkg[depType];\n if (!deps) continue;\n for (const [key, val] of Object.entries(deps)) {\n if (typeof val === \"string\" && val.startsWith(\"workspace:\")) {\n if (key === \"@agent-native/core\") {\n deps[key] = coreDependencyVersion;\n }\n if (key === \"@agent-native/dispatch\") {\n deps[key] = dispatchDependencyVersion;\n }\n }\n }\n }\n // Ensure the dependency on the workspace shared package is present.\n pkg.dependencies = pkg.dependencies ?? {};\n pkg.dependencies[workspaceCoreName] = \"workspace:*\";\n // Core loads postgres-js lazily when DATABASE_URL points at Postgres.\n // Add the runtime package to workspace apps so production bundles do\n // not fail only after a hosted Postgres database is configured.\n pkg.dependencies.postgres ??= POSTGRES_DEPENDENCY_VERSION;\n // pnpm build-script approvals belong at the workspace root. Leaving the\n // template's per-app setting in place makes pnpm warn on every install.\n if (pkg.pnpm && typeof pkg.pnpm === \"object\") {\n delete pkg.pnpm.onlyBuiltDependencies;\n if (Object.keys(pkg.pnpm).length === 0) {\n delete pkg.pnpm;\n }\n }\n fs.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + \"\\n\");\n } catch {\n // Non-fatal: leave package.json unchanged.\n }\n }\n\n // 2) Remove standalone-only files that would confuse the workspace layout.\n for (const f of [\n \"learnings.defaults.md\",\n // If the template shipped its own workspace marker / stray monorepo\n // files, strip them here too.\n ]) {\n const p = path.join(appDir, f);\n if (fs.existsSync(p)) fs.unlinkSync(p);\n }\n\n // 3) Templates document action commands from the framework repo layout.\n // Workspace apps live under apps/<name>, so point every agent at the\n // generated app directory instead.\n const agentsPath = path.join(appDir, \"AGENTS.md\");\n if (fs.existsSync(agentsPath)) {\n try {\n let content = fs.readFileSync(agentsPath, \"utf-8\");\n content = content\n .replace(\n \"The terminal cwd is the framework root. Always `cd` to this template's root before running any action:\",\n `The terminal cwd is the workspace root. Always \\`cd\\` to this app's root before running any action:`,\n )\n .replace(\n /cd templates\\/[^ \\n]+ && pnpm action/g,\n `cd apps/${opts.appName} && pnpm action`,\n );\n fs.writeFileSync(agentsPath, content);\n } catch {\n // Non-fatal: leave AGENTS.md unchanged.\n }\n }\n\n if ((opts.templateName ?? opts.appName) === \"starter\") {\n writeInheritedStarterPlugin(appDir, workspaceCoreName, {\n fileName: \"auth.ts\",\n exportName: \"defaultAuthPlugin\",\n });\n writeInheritedStarterAgentChatPlugin(\n appDir,\n workspaceCoreName,\n opts.appName,\n );\n }\n}\n\nfunction writeInheritedStarterPlugin(\n appDir: string,\n workspaceCoreName: string,\n opts: { fileName: string; exportName: string },\n): void {\n const pluginsDir = path.join(appDir, \"server\", \"plugins\");\n fs.mkdirSync(pluginsDir, { recursive: true });\n const pluginPath = path.join(pluginsDir, opts.fileName);\n fs.writeFileSync(\n pluginPath,\n [\n `import { ${opts.exportName} as frameworkDefault } from \"@agent-native/core/server\";`,\n `import * as workspaceServer from ${JSON.stringify(`${workspaceCoreName}/server`)};`,\n \"\",\n `const workspacePlugin = (workspaceServer as Record<string, unknown>).${opts.exportName};`,\n \"\",\n 'export default typeof workspacePlugin === \"function\"',\n \" ? workspacePlugin\",\n \" : frameworkDefault;\",\n \"\",\n ].join(\"\\n\"),\n );\n}\n\nfunction writeInheritedStarterAgentChatPlugin(\n appDir: string,\n workspaceCoreName: string,\n appId: string,\n): void {\n const pluginsDir = path.join(appDir, \"server\", \"plugins\");\n fs.mkdirSync(pluginsDir, { recursive: true });\n const pluginPath = path.join(pluginsDir, \"agent-chat.ts\");\n fs.writeFileSync(\n pluginPath,\n [\n `import {`,\n ` createAgentChatPlugin,`,\n ` loadActionsFromStaticRegistry,`,\n ` type AgentChatPluginOptions,`,\n `} from \"@agent-native/core/server\";`,\n `import * as workspaceServer from ${JSON.stringify(`${workspaceCoreName}/server`)};`,\n `import actionsRegistry from \"../../.generated/actions-registry.js\";`,\n \"\",\n `const createWorkspaceAgentChatPlugin = (workspaceServer as Record<string, unknown>).createWorkspaceAgentChatPlugin;`,\n `const options = {`,\n ` appId: ${JSON.stringify(appId)},`,\n ` actions: loadActionsFromStaticRegistry(actionsRegistry),`,\n `} satisfies AgentChatPluginOptions;`,\n \"\",\n `export default typeof createWorkspaceAgentChatPlugin === \"function\"`,\n ` ? (createWorkspaceAgentChatPlugin as (options: AgentChatPluginOptions) => unknown)(options)`,\n ` : createAgentChatPlugin(options);`,\n \"\",\n ].join(\"\\n\"),\n );\n}\n\n/**\n * Parse a workspace core package name into its npm scope.\n * \"@my-company/shared\" → \"my-company\"\n * \"shared\" → \"\" (no scope — shouldn't happen)\n */\nexport function parseWorkspaceScope(workspaceCoreName: string): string {\n const m = workspaceCoreName.match(/^@([^/]+)\\//);\n return m ? m[1] : \"\";\n}\n"]}
@@ -0,0 +1,32 @@
1
+ import { type AgentNativeFrameProps } from "./AgentNativeFrame.js";
2
+ import { type AgentNativeClientActions, type AgentNativeHostCommandHandlers, type AgentNativeHostContextGetter, type AgentNativeScreenSnapshotOptions } from "./host-bridge.js";
3
+ export interface AgentNativeCommandCallbackInfo {
4
+ command: string;
5
+ requestId?: string;
6
+ origin: string;
7
+ }
8
+ export type AgentNativeCommandCallback = (payload: unknown, info: AgentNativeCommandCallbackInfo) => unknown | Promise<unknown>;
9
+ export interface AgentNativeProps extends Omit<AgentNativeFrameProps, "actions" | "commands" | "getContext"> {
10
+ /**
11
+ * Live browser-session tools. These can change as page state changes and are
12
+ * only callable while this tab is connected.
13
+ */
14
+ actions?: AgentNativeClientActions;
15
+ /** Semantic app/page context layered over the built-in screen snapshot. */
16
+ getContext?: AgentNativeHostContextGetter;
17
+ /**
18
+ * Built-in screen context. Defaults to visible text + route + selection.
19
+ * Pass false to disable, or { includeDomHtml: true } for a DOM fallback.
20
+ */
21
+ screen?: boolean | AgentNativeScreenSnapshotOptions;
22
+ /** Extra/advanced host commands. */
23
+ commands?: AgentNativeHostCommandHandlers;
24
+ onRefresh?: AgentNativeCommandCallback;
25
+ onNavigate?: AgentNativeCommandCallback;
26
+ onRemount?: AgentNativeCommandCallback;
27
+ onOpenResource?: AgentNativeCommandCallback;
28
+ onRequestApproval?: AgentNativeCommandCallback;
29
+ }
30
+ export declare function useAgentNativeScreenContext(options?: AgentNativeScreenSnapshotOptions): AgentNativeHostContextGetter;
31
+ export declare function AgentNative({ actions, getContext, screen, commands, onRefresh, onNavigate, onRemount, onOpenResource, onRequestApproval, ...frameProps }: AgentNativeProps): import("react/jsx-runtime").JSX.Element;
32
+ //# sourceMappingURL=AgentNative.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AgentNative.d.ts","sourceRoot":"","sources":["../../src/client/AgentNative.tsx"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,qBAAqB,EAC3B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAEL,KAAK,wBAAwB,EAE7B,KAAK,8BAA8B,EAGnC,KAAK,4BAA4B,EACjC,KAAK,gCAAgC,EACtC,MAAM,kBAAkB,CAAC;AAE1B,MAAM,WAAW,8BAA8B;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,0BAA0B,GAAG,CACvC,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,8BAA8B,KACjC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAEhC,MAAM,WAAW,gBAAiB,SAAQ,IAAI,CAC5C,qBAAqB,EACrB,SAAS,GAAG,UAAU,GAAG,YAAY,CACtC;IACC;;;OAGG;IACH,OAAO,CAAC,EAAE,wBAAwB,CAAC;IACnC,2EAA2E;IAC3E,UAAU,CAAC,EAAE,4BAA4B,CAAC;IAC1C;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,GAAG,gCAAgC,CAAC;IACpD,oCAAoC;IACpC,QAAQ,CAAC,EAAE,8BAA8B,CAAC;IAC1C,SAAS,CAAC,EAAE,0BAA0B,CAAC;IACvC,UAAU,CAAC,EAAE,0BAA0B,CAAC;IACxC,SAAS,CAAC,EAAE,0BAA0B,CAAC;IACvC,cAAc,CAAC,EAAE,0BAA0B,CAAC;IAC5C,iBAAiB,CAAC,EAAE,0BAA0B,CAAC;CAChD;AAoCD,wBAAgB,2BAA2B,CACzC,OAAO,CAAC,EAAE,gCAAgC,GACzC,4BAA4B,CAE9B;AAED,wBAAgB,WAAW,CAAC,EAC1B,OAAO,EACP,UAAU,EACV,MAAa,EACb,QAAQ,EACR,SAAS,EACT,UAAU,EACV,SAAS,EACT,cAAc,EACd,iBAAiB,EACjB,GAAG,UAAU,EACd,EAAE,gBAAgB,2CAwDlB"}