@agent-native/core 0.5.0-dev.b51eaae → 0.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1011) hide show
  1. package/README.md +49 -37
  2. package/dist/a2a/agent-card.d.ts.map +1 -1
  3. package/dist/a2a/agent-card.js +12 -1
  4. package/dist/a2a/agent-card.js.map +1 -1
  5. package/dist/a2a/client.d.ts +11 -0
  6. package/dist/a2a/client.d.ts.map +1 -1
  7. package/dist/a2a/client.js +38 -1
  8. package/dist/a2a/client.js.map +1 -1
  9. package/dist/a2a/index.d.ts +1 -1
  10. package/dist/a2a/index.d.ts.map +1 -1
  11. package/dist/a2a/index.js +1 -1
  12. package/dist/a2a/index.js.map +1 -1
  13. package/dist/a2a/server.d.ts +4 -0
  14. package/dist/a2a/server.d.ts.map +1 -1
  15. package/dist/a2a/server.js +53 -8
  16. package/dist/a2a/server.js.map +1 -1
  17. package/dist/a2a/types.d.ts +1 -0
  18. package/dist/a2a/types.d.ts.map +1 -1
  19. package/dist/action.d.ts +64 -30
  20. package/dist/action.d.ts.map +1 -1
  21. package/dist/action.js +224 -27
  22. package/dist/action.js.map +1 -1
  23. package/dist/agent/engine/ai-sdk-engine.d.ts +24 -0
  24. package/dist/agent/engine/ai-sdk-engine.d.ts.map +1 -0
  25. package/dist/agent/engine/ai-sdk-engine.js +302 -0
  26. package/dist/agent/engine/ai-sdk-engine.js.map +1 -0
  27. package/dist/agent/engine/anthropic-engine.d.ts +24 -0
  28. package/dist/agent/engine/anthropic-engine.d.ts.map +1 -0
  29. package/dist/agent/engine/anthropic-engine.js +169 -0
  30. package/dist/agent/engine/anthropic-engine.js.map +1 -0
  31. package/dist/agent/engine/builtin.d.ts +12 -0
  32. package/dist/agent/engine/builtin.d.ts.map +1 -0
  33. package/dist/agent/engine/builtin.js +72 -0
  34. package/dist/agent/engine/builtin.js.map +1 -0
  35. package/dist/agent/engine/index.d.ts +9 -0
  36. package/dist/agent/engine/index.d.ts.map +1 -0
  37. package/dist/agent/engine/index.js +8 -0
  38. package/dist/agent/engine/index.js.map +1 -0
  39. package/dist/agent/engine/registry.d.ts +61 -0
  40. package/dist/agent/engine/registry.d.ts.map +1 -0
  41. package/dist/agent/engine/registry.js +101 -0
  42. package/dist/agent/engine/registry.js.map +1 -0
  43. package/dist/agent/engine/translate-ai-sdk.d.ts +20 -0
  44. package/dist/agent/engine/translate-ai-sdk.d.ts.map +1 -0
  45. package/dist/agent/engine/translate-ai-sdk.js +174 -0
  46. package/dist/agent/engine/translate-ai-sdk.js.map +1 -0
  47. package/dist/agent/engine/translate-anthropic.d.ts +23 -0
  48. package/dist/agent/engine/translate-anthropic.d.ts.map +1 -0
  49. package/dist/agent/engine/translate-anthropic.js +140 -0
  50. package/dist/agent/engine/translate-anthropic.js.map +1 -0
  51. package/dist/agent/engine/types.d.ts +168 -0
  52. package/dist/agent/engine/types.d.ts.map +1 -0
  53. package/dist/agent/engine/types.js +13 -0
  54. package/dist/agent/engine/types.js.map +1 -0
  55. package/dist/agent/production-agent.d.ts +48 -2
  56. package/dist/agent/production-agent.d.ts.map +1 -1
  57. package/dist/agent/production-agent.js +369 -79
  58. package/dist/agent/production-agent.js.map +1 -1
  59. package/dist/agent/run-manager.d.ts +1 -1
  60. package/dist/agent/run-manager.d.ts.map +1 -1
  61. package/dist/agent/run-manager.js +15 -9
  62. package/dist/agent/run-manager.js.map +1 -1
  63. package/dist/agent/run-store.d.ts.map +1 -1
  64. package/dist/agent/run-store.js +5 -5
  65. package/dist/agent/run-store.js.map +1 -1
  66. package/dist/agent/thread-data-builder.d.ts +1 -0
  67. package/dist/agent/thread-data-builder.d.ts.map +1 -1
  68. package/dist/agent/thread-data-builder.js +4 -1
  69. package/dist/agent/thread-data-builder.js.map +1 -1
  70. package/dist/agent/types.d.ts +23 -2
  71. package/dist/agent/types.d.ts.map +1 -1
  72. package/dist/application-state/handlers.d.ts +8 -8
  73. package/dist/application-state/handlers.d.ts.map +1 -1
  74. package/dist/application-state/handlers.js +3 -2
  75. package/dist/application-state/handlers.js.map +1 -1
  76. package/dist/application-state/script-helpers.d.ts.map +1 -1
  77. package/dist/application-state/script-helpers.js +47 -9
  78. package/dist/application-state/script-helpers.js.map +1 -1
  79. package/dist/chat-threads/store.d.ts +14 -0
  80. package/dist/chat-threads/store.d.ts.map +1 -1
  81. package/dist/chat-threads/store.js +32 -0
  82. package/dist/chat-threads/store.js.map +1 -1
  83. package/dist/cli/create-workspace.d.ts +8 -0
  84. package/dist/cli/create-workspace.d.ts.map +1 -0
  85. package/dist/cli/create-workspace.js +18 -0
  86. package/dist/cli/create-workspace.js.map +1 -0
  87. package/dist/cli/create.d.ts +36 -2
  88. package/dist/cli/create.d.ts.map +1 -1
  89. package/dist/cli/create.js +509 -61
  90. package/dist/cli/create.js.map +1 -1
  91. package/dist/cli/index.js +73 -6
  92. package/dist/cli/index.js.map +1 -1
  93. package/dist/cli/workspacify.d.ts +18 -0
  94. package/dist/cli/workspacify.d.ts.map +1 -0
  95. package/dist/cli/workspacify.js +74 -0
  96. package/dist/cli/workspacify.js.map +1 -0
  97. package/dist/client/AgentPanel.d.ts +6 -2
  98. package/dist/client/AgentPanel.d.ts.map +1 -1
  99. package/dist/client/AgentPanel.js +314 -180
  100. package/dist/client/AgentPanel.js.map +1 -1
  101. package/dist/client/AgentTaskCard.d.ts +12 -0
  102. package/dist/client/AgentTaskCard.d.ts.map +1 -0
  103. package/dist/client/AgentTaskCard.js +146 -0
  104. package/dist/client/AgentTaskCard.js.map +1 -0
  105. package/dist/client/AssistantChat.d.ts +13 -2
  106. package/dist/client/AssistantChat.d.ts.map +1 -1
  107. package/dist/client/AssistantChat.js +344 -122
  108. package/dist/client/AssistantChat.js.map +1 -1
  109. package/dist/client/MultiTabAssistantChat.d.ts +7 -1
  110. package/dist/client/MultiTabAssistantChat.d.ts.map +1 -1
  111. package/dist/client/MultiTabAssistantChat.js +345 -63
  112. package/dist/client/MultiTabAssistantChat.js.map +1 -1
  113. package/dist/client/PoweredByBadge.js +2 -2
  114. package/dist/client/PoweredByBadge.js.map +1 -1
  115. package/dist/client/Turnstile.d.ts.map +1 -1
  116. package/dist/client/Turnstile.js +2 -3
  117. package/dist/client/Turnstile.js.map +1 -1
  118. package/dist/client/agent-chat-adapter.d.ts.map +1 -1
  119. package/dist/client/agent-chat-adapter.js +63 -2
  120. package/dist/client/agent-chat-adapter.js.map +1 -1
  121. package/dist/client/agent-chat.d.ts +14 -1
  122. package/dist/client/agent-chat.d.ts.map +1 -1
  123. package/dist/client/agent-chat.js +4 -2
  124. package/dist/client/agent-chat.js.map +1 -1
  125. package/dist/client/components/CodeAgentIndicator.d.ts +14 -0
  126. package/dist/client/components/CodeAgentIndicator.d.ts.map +1 -0
  127. package/dist/client/components/CodeAgentIndicator.js +29 -0
  128. package/dist/client/components/CodeAgentIndicator.js.map +1 -0
  129. package/dist/client/components/CodeRequiredDialog.d.ts.map +1 -1
  130. package/dist/client/components/CodeRequiredDialog.js +86 -5
  131. package/dist/client/components/CodeRequiredDialog.js.map +1 -1
  132. package/dist/client/composer/MentionPopover.d.ts +4 -1
  133. package/dist/client/composer/MentionPopover.d.ts.map +1 -1
  134. package/dist/client/composer/MentionPopover.js +51 -8
  135. package/dist/client/composer/MentionPopover.js.map +1 -1
  136. package/dist/client/composer/TiptapComposer.d.ts +8 -1
  137. package/dist/client/composer/TiptapComposer.d.ts.map +1 -1
  138. package/dist/client/composer/TiptapComposer.js +149 -17
  139. package/dist/client/composer/TiptapComposer.js.map +1 -1
  140. package/dist/client/composer/index.d.ts +1 -1
  141. package/dist/client/composer/index.d.ts.map +1 -1
  142. package/dist/client/composer/types.d.ts +6 -1
  143. package/dist/client/composer/types.d.ts.map +1 -1
  144. package/dist/client/composer/use-mention-search.d.ts.map +1 -1
  145. package/dist/client/composer/use-mention-search.js +46 -13
  146. package/dist/client/composer/use-mention-search.js.map +1 -1
  147. package/dist/client/frame-protocol.d.ts +54 -0
  148. package/dist/client/frame-protocol.d.ts.map +1 -0
  149. package/dist/client/frame-protocol.js +9 -0
  150. package/dist/client/frame-protocol.js.map +1 -0
  151. package/dist/client/frame.d.ts +56 -0
  152. package/dist/client/frame.d.ts.map +1 -0
  153. package/dist/client/{harness.js → frame.js} +49 -26
  154. package/dist/client/frame.js.map +1 -0
  155. package/dist/client/index.d.ts +7 -3
  156. package/dist/client/index.d.ts.map +1 -1
  157. package/dist/client/index.js +6 -3
  158. package/dist/client/index.js.map +1 -1
  159. package/dist/client/integrations/IntegrationCard.d.ts +6 -0
  160. package/dist/client/integrations/IntegrationCard.d.ts.map +1 -0
  161. package/dist/client/integrations/IntegrationCard.js +45 -0
  162. package/dist/client/integrations/IntegrationCard.js.map +1 -0
  163. package/dist/client/integrations/IntegrationsPanel.d.ts +2 -0
  164. package/dist/client/integrations/IntegrationsPanel.d.ts.map +1 -0
  165. package/dist/client/integrations/IntegrationsPanel.js +162 -0
  166. package/dist/client/integrations/IntegrationsPanel.js.map +1 -0
  167. package/dist/client/integrations/index.d.ts +4 -0
  168. package/dist/client/integrations/index.d.ts.map +1 -0
  169. package/dist/client/integrations/index.js +3 -0
  170. package/dist/client/integrations/index.js.map +1 -0
  171. package/dist/client/integrations/useIntegrationStatus.d.ts +15 -0
  172. package/dist/client/integrations/useIntegrationStatus.d.ts.map +1 -0
  173. package/dist/client/integrations/useIntegrationStatus.js +37 -0
  174. package/dist/client/integrations/useIntegrationStatus.js.map +1 -0
  175. package/dist/client/onboarding/OnboardingBanner.d.ts +13 -0
  176. package/dist/client/onboarding/OnboardingBanner.d.ts.map +1 -0
  177. package/dist/client/onboarding/OnboardingBanner.js +36 -0
  178. package/dist/client/onboarding/OnboardingBanner.js.map +1 -0
  179. package/dist/client/onboarding/OnboardingPanel.d.ts +16 -0
  180. package/dist/client/onboarding/OnboardingPanel.d.ts.map +1 -0
  181. package/dist/client/onboarding/OnboardingPanel.js +360 -0
  182. package/dist/client/onboarding/OnboardingPanel.js.map +1 -0
  183. package/dist/client/onboarding/SetupButton.d.ts +10 -0
  184. package/dist/client/onboarding/SetupButton.d.ts.map +1 -0
  185. package/dist/client/onboarding/SetupButton.js +26 -0
  186. package/dist/client/onboarding/SetupButton.js.map +1 -0
  187. package/dist/client/onboarding/index.d.ts +12 -0
  188. package/dist/client/onboarding/index.d.ts.map +1 -0
  189. package/dist/client/onboarding/index.js +11 -0
  190. package/dist/client/onboarding/index.js.map +1 -0
  191. package/dist/client/onboarding/use-onboarding.d.ts +34 -0
  192. package/dist/client/onboarding/use-onboarding.d.ts.map +1 -0
  193. package/dist/client/onboarding/use-onboarding.js +101 -0
  194. package/dist/client/onboarding/use-onboarding.js.map +1 -0
  195. package/dist/client/org/InvitationBanner.d.ts +9 -0
  196. package/dist/client/org/InvitationBanner.d.ts.map +1 -0
  197. package/dist/client/org/InvitationBanner.js +17 -0
  198. package/dist/client/org/InvitationBanner.js.map +1 -0
  199. package/dist/client/org/OrgSwitcher.d.ts +14 -0
  200. package/dist/client/org/OrgSwitcher.d.ts.map +1 -0
  201. package/dist/client/org/OrgSwitcher.js +51 -0
  202. package/dist/client/org/OrgSwitcher.js.map +1 -0
  203. package/dist/client/org/TeamPage.d.ts +28 -0
  204. package/dist/client/org/TeamPage.d.ts.map +1 -0
  205. package/dist/client/org/TeamPage.js +216 -0
  206. package/dist/client/org/TeamPage.js.map +1 -0
  207. package/dist/client/org/hooks.d.ts +14 -0
  208. package/dist/client/org/hooks.d.ts.map +1 -0
  209. package/dist/client/org/hooks.js +101 -0
  210. package/dist/client/org/hooks.js.map +1 -0
  211. package/dist/client/org/index.d.ts +6 -0
  212. package/dist/client/org/index.d.ts.map +1 -0
  213. package/dist/client/org/index.js +6 -0
  214. package/dist/client/org/index.js.map +1 -0
  215. package/dist/client/resources/ResourceEditor.d.ts +8 -1
  216. package/dist/client/resources/ResourceEditor.d.ts.map +1 -1
  217. package/dist/client/resources/ResourceEditor.js +141 -89
  218. package/dist/client/resources/ResourceEditor.js.map +1 -1
  219. package/dist/client/resources/ResourceTree.d.ts +5 -1
  220. package/dist/client/resources/ResourceTree.d.ts.map +1 -1
  221. package/dist/client/resources/ResourceTree.js +33 -5
  222. package/dist/client/resources/ResourceTree.js.map +1 -1
  223. package/dist/client/resources/ResourcesPanel.d.ts.map +1 -1
  224. package/dist/client/resources/ResourcesPanel.js +260 -109
  225. package/dist/client/resources/ResourcesPanel.js.map +1 -1
  226. package/dist/client/resources/use-resources.d.ts +15 -0
  227. package/dist/client/resources/use-resources.d.ts.map +1 -1
  228. package/dist/client/resources/use-resources.js +2 -2
  229. package/dist/client/resources/use-resources.js.map +1 -1
  230. package/dist/client/settings/AgentsSection.d.ts +2 -0
  231. package/dist/client/settings/AgentsSection.d.ts.map +1 -0
  232. package/dist/client/settings/AgentsSection.js +198 -0
  233. package/dist/client/settings/AgentsSection.js.map +1 -0
  234. package/dist/client/settings/BackgroundAgentSection.d.ts +2 -0
  235. package/dist/client/settings/BackgroundAgentSection.d.ts.map +1 -0
  236. package/dist/client/settings/BackgroundAgentSection.js +46 -0
  237. package/dist/client/settings/BackgroundAgentSection.js.map +1 -0
  238. package/dist/client/settings/BrowserSection.d.ts +2 -0
  239. package/dist/client/settings/BrowserSection.d.ts.map +1 -0
  240. package/dist/client/settings/BrowserSection.js +10 -0
  241. package/dist/client/settings/BrowserSection.js.map +1 -0
  242. package/dist/client/settings/ComingSoonSection.d.ts +13 -0
  243. package/dist/client/settings/ComingSoonSection.d.ts.map +1 -0
  244. package/dist/client/settings/ComingSoonSection.js +9 -0
  245. package/dist/client/settings/ComingSoonSection.js.map +1 -0
  246. package/dist/client/settings/LLMSection.d.ts +2 -0
  247. package/dist/client/settings/LLMSection.d.ts.map +1 -0
  248. package/dist/client/settings/LLMSection.js +64 -0
  249. package/dist/client/settings/LLMSection.js.map +1 -0
  250. package/dist/client/settings/SettingsPanel.d.ts +8 -0
  251. package/dist/client/settings/SettingsPanel.d.ts.map +1 -0
  252. package/dist/client/settings/SettingsPanel.js +118 -0
  253. package/dist/client/settings/SettingsPanel.js.map +1 -0
  254. package/dist/client/settings/SettingsSection.d.ts +19 -0
  255. package/dist/client/settings/SettingsSection.d.ts.map +1 -0
  256. package/dist/client/settings/SettingsSection.js +10 -0
  257. package/dist/client/settings/SettingsSection.js.map +1 -0
  258. package/dist/client/settings/index.d.ts +3 -0
  259. package/dist/client/settings/index.d.ts.map +1 -0
  260. package/dist/client/settings/index.js +3 -0
  261. package/dist/client/settings/index.js.map +1 -0
  262. package/dist/client/settings/useBuilderStatus.d.ts +22 -0
  263. package/dist/client/settings/useBuilderStatus.d.ts.map +1 -0
  264. package/dist/client/settings/useBuilderStatus.js +41 -0
  265. package/dist/client/settings/useBuilderStatus.js.map +1 -0
  266. package/dist/client/sse-event-processor.d.ts +9 -1
  267. package/dist/client/sse-event-processor.d.ts.map +1 -1
  268. package/dist/client/sse-event-processor.js +36 -3
  269. package/dist/client/sse-event-processor.js.map +1 -1
  270. package/dist/client/terminal/AgentTerminal.d.ts +4 -4
  271. package/dist/client/terminal/AgentTerminal.d.ts.map +1 -1
  272. package/dist/client/terminal/AgentTerminal.js +14 -14
  273. package/dist/client/terminal/AgentTerminal.js.map +1 -1
  274. package/dist/client/use-action.d.ts +51 -0
  275. package/dist/client/use-action.d.ts.map +1 -0
  276. package/dist/client/use-action.js +102 -0
  277. package/dist/client/use-action.js.map +1 -0
  278. package/dist/client/use-avatar.d.ts +15 -0
  279. package/dist/client/use-avatar.d.ts.map +1 -0
  280. package/dist/client/use-avatar.js +116 -0
  281. package/dist/client/use-avatar.js.map +1 -0
  282. package/dist/client/use-chat-threads.d.ts +1 -1
  283. package/dist/client/use-chat-threads.d.ts.map +1 -1
  284. package/dist/client/use-chat-threads.js +34 -18
  285. package/dist/client/use-chat-threads.js.map +1 -1
  286. package/dist/client/use-dev-mode.d.ts.map +1 -1
  287. package/dist/client/use-dev-mode.js +2 -0
  288. package/dist/client/use-dev-mode.js.map +1 -1
  289. package/dist/client/use-send-to-agent-chat.d.ts +7 -4
  290. package/dist/client/use-send-to-agent-chat.d.ts.map +1 -1
  291. package/dist/client/use-send-to-agent-chat.js +31 -10
  292. package/dist/client/use-send-to-agent-chat.js.map +1 -1
  293. package/dist/collab/awareness.d.ts +41 -0
  294. package/dist/collab/awareness.d.ts.map +1 -0
  295. package/dist/collab/awareness.js +82 -0
  296. package/dist/collab/awareness.js.map +1 -0
  297. package/dist/collab/client.d.ts +49 -0
  298. package/dist/collab/client.d.ts.map +1 -0
  299. package/dist/collab/client.js +250 -0
  300. package/dist/collab/client.js.map +1 -0
  301. package/dist/collab/emitter.d.ts +12 -0
  302. package/dist/collab/emitter.d.ts.map +1 -0
  303. package/dist/collab/emitter.js +16 -0
  304. package/dist/collab/emitter.js.map +1 -0
  305. package/dist/collab/index.d.ts +7 -0
  306. package/dist/collab/index.d.ts.map +1 -0
  307. package/dist/collab/index.js +14 -0
  308. package/dist/collab/index.js.map +1 -0
  309. package/dist/collab/routes.d.ts +69 -0
  310. package/dist/collab/routes.d.ts.map +1 -0
  311. package/dist/collab/routes.js +98 -0
  312. package/dist/collab/routes.js.map +1 -0
  313. package/dist/collab/storage.d.ts +18 -0
  314. package/dist/collab/storage.d.ts.map +1 -0
  315. package/dist/collab/storage.js +94 -0
  316. package/dist/collab/storage.js.map +1 -0
  317. package/dist/collab/text-to-yjs.d.ts +23 -0
  318. package/dist/collab/text-to-yjs.d.ts.map +1 -0
  319. package/dist/collab/text-to-yjs.js +63 -0
  320. package/dist/collab/text-to-yjs.js.map +1 -0
  321. package/dist/collab/xml-ops.d.ts +20 -0
  322. package/dist/collab/xml-ops.d.ts.map +1 -0
  323. package/dist/collab/xml-ops.js +59 -0
  324. package/dist/collab/xml-ops.js.map +1 -0
  325. package/dist/collab/ydoc-manager.d.ts +52 -0
  326. package/dist/collab/ydoc-manager.d.ts.map +1 -0
  327. package/dist/collab/ydoc-manager.js +154 -0
  328. package/dist/collab/ydoc-manager.js.map +1 -0
  329. package/dist/db/client.d.ts +10 -0
  330. package/dist/db/client.d.ts.map +1 -1
  331. package/dist/db/client.js +43 -2
  332. package/dist/db/client.js.map +1 -1
  333. package/dist/db/create-get-db.js.map +1 -1
  334. package/dist/db/index.d.ts +1 -1
  335. package/dist/db/index.d.ts.map +1 -1
  336. package/dist/db/index.js +1 -1
  337. package/dist/db/index.js.map +1 -1
  338. package/dist/db/migrations.d.ts +9 -1
  339. package/dist/db/migrations.d.ts.map +1 -1
  340. package/dist/db/migrations.js +45 -20
  341. package/dist/db/migrations.js.map +1 -1
  342. package/dist/db/schema.d.ts +8 -1
  343. package/dist/db/schema.d.ts.map +1 -1
  344. package/dist/db/schema.js +13 -2
  345. package/dist/db/schema.js.map +1 -1
  346. package/dist/deploy/build.js +795 -86
  347. package/dist/deploy/build.js.map +1 -1
  348. package/dist/deploy/route-discovery.d.ts +22 -4
  349. package/dist/deploy/route-discovery.d.ts.map +1 -1
  350. package/dist/deploy/route-discovery.js +148 -35
  351. package/dist/deploy/route-discovery.js.map +1 -1
  352. package/dist/deploy/workspace-core.d.ts +28 -0
  353. package/dist/deploy/workspace-core.d.ts.map +1 -0
  354. package/dist/deploy/workspace-core.js +223 -0
  355. package/dist/deploy/workspace-core.js.map +1 -0
  356. package/dist/deploy/workspace-deploy.d.ts +11 -0
  357. package/dist/deploy/workspace-deploy.d.ts.map +1 -0
  358. package/dist/deploy/workspace-deploy.js +148 -0
  359. package/dist/deploy/workspace-deploy.js.map +1 -0
  360. package/dist/file-upload/builder.d.ts +11 -0
  361. package/dist/file-upload/builder.d.ts.map +1 -0
  362. package/dist/file-upload/builder.js +53 -0
  363. package/dist/file-upload/builder.js.map +1 -0
  364. package/dist/file-upload/index.d.ts +4 -0
  365. package/dist/file-upload/index.d.ts.map +1 -0
  366. package/dist/file-upload/index.js +3 -0
  367. package/dist/file-upload/index.js.map +1 -0
  368. package/dist/file-upload/registry.d.ts +23 -0
  369. package/dist/file-upload/registry.d.ts.map +1 -0
  370. package/dist/file-upload/registry.js +52 -0
  371. package/dist/file-upload/registry.js.map +1 -0
  372. package/dist/file-upload/types.d.ts +37 -0
  373. package/dist/file-upload/types.d.ts.map +1 -0
  374. package/dist/file-upload/types.js +10 -0
  375. package/dist/file-upload/types.js.map +1 -0
  376. package/dist/index.browser.d.ts +2 -0
  377. package/dist/index.browser.d.ts.map +1 -1
  378. package/dist/index.browser.js +4 -0
  379. package/dist/index.browser.js.map +1 -1
  380. package/dist/index.d.ts +3 -3
  381. package/dist/index.d.ts.map +1 -1
  382. package/dist/index.js +2 -2
  383. package/dist/index.js.map +1 -1
  384. package/dist/integrations/adapters/google-docs.d.ts +89 -0
  385. package/dist/integrations/adapters/google-docs.d.ts.map +1 -0
  386. package/dist/integrations/adapters/google-docs.js +261 -0
  387. package/dist/integrations/adapters/google-docs.js.map +1 -0
  388. package/dist/integrations/adapters/slack.d.ts +10 -0
  389. package/dist/integrations/adapters/slack.d.ts.map +1 -0
  390. package/dist/integrations/adapters/slack.js +249 -0
  391. package/dist/integrations/adapters/slack.js.map +1 -0
  392. package/dist/integrations/adapters/telegram.d.ts +12 -0
  393. package/dist/integrations/adapters/telegram.d.ts.map +1 -0
  394. package/dist/integrations/adapters/telegram.js +216 -0
  395. package/dist/integrations/adapters/telegram.js.map +1 -0
  396. package/dist/integrations/adapters/whatsapp.d.ts +14 -0
  397. package/dist/integrations/adapters/whatsapp.d.ts.map +1 -0
  398. package/dist/integrations/adapters/whatsapp.js +205 -0
  399. package/dist/integrations/adapters/whatsapp.js.map +1 -0
  400. package/dist/integrations/config-store.d.ts +24 -0
  401. package/dist/integrations/config-store.d.ts.map +1 -0
  402. package/dist/integrations/config-store.js +92 -0
  403. package/dist/integrations/config-store.js.map +1 -0
  404. package/dist/integrations/google-docs-poller.d.ts +54 -0
  405. package/dist/integrations/google-docs-poller.d.ts.map +1 -0
  406. package/dist/integrations/google-docs-poller.js +442 -0
  407. package/dist/integrations/google-docs-poller.js.map +1 -0
  408. package/dist/integrations/index.d.ts +10 -0
  409. package/dist/integrations/index.d.ts.map +1 -0
  410. package/dist/integrations/index.js +13 -0
  411. package/dist/integrations/index.js.map +1 -0
  412. package/dist/integrations/plugin.d.ts +20 -0
  413. package/dist/integrations/plugin.d.ts.map +1 -0
  414. package/dist/integrations/plugin.js +260 -0
  415. package/dist/integrations/plugin.js.map +1 -0
  416. package/dist/integrations/thread-mapping-store.d.ts +25 -0
  417. package/dist/integrations/thread-mapping-store.d.ts.map +1 -0
  418. package/dist/integrations/thread-mapping-store.js +95 -0
  419. package/dist/integrations/thread-mapping-store.js.map +1 -0
  420. package/dist/integrations/types.d.ts +144 -0
  421. package/dist/integrations/types.d.ts.map +1 -0
  422. package/dist/integrations/types.js +2 -0
  423. package/dist/integrations/types.js.map +1 -0
  424. package/dist/integrations/webhook-handler.d.ts +40 -0
  425. package/dist/integrations/webhook-handler.d.ts.map +1 -0
  426. package/dist/integrations/webhook-handler.js +220 -0
  427. package/dist/integrations/webhook-handler.js.map +1 -0
  428. package/dist/jobs/cron.d.ts +14 -0
  429. package/dist/jobs/cron.d.ts.map +1 -0
  430. package/dist/jobs/cron.js +100 -0
  431. package/dist/jobs/cron.js.map +1 -0
  432. package/dist/jobs/index.d.ts +4 -0
  433. package/dist/jobs/index.d.ts.map +1 -0
  434. package/dist/jobs/index.js +4 -0
  435. package/dist/jobs/index.js.map +1 -0
  436. package/dist/jobs/scheduler.d.ts +32 -0
  437. package/dist/jobs/scheduler.d.ts.map +1 -0
  438. package/dist/jobs/scheduler.js +226 -0
  439. package/dist/jobs/scheduler.js.map +1 -0
  440. package/dist/jobs/tools.d.ts +3 -0
  441. package/dist/jobs/tools.d.ts.map +1 -0
  442. package/dist/jobs/tools.js +209 -0
  443. package/dist/jobs/tools.js.map +1 -0
  444. package/dist/mcp/index.d.ts +3 -0
  445. package/dist/mcp/index.d.ts.map +1 -0
  446. package/dist/mcp/index.js +2 -0
  447. package/dist/mcp/index.js.map +1 -0
  448. package/dist/mcp/server.d.ts +26 -0
  449. package/dist/mcp/server.d.ts.map +1 -0
  450. package/dist/mcp/server.js +182 -0
  451. package/dist/mcp/server.js.map +1 -0
  452. package/dist/mcp-client/config.d.ts +46 -0
  453. package/dist/mcp-client/config.d.ts.map +1 -0
  454. package/dist/mcp-client/config.js +152 -0
  455. package/dist/mcp-client/config.js.map +1 -0
  456. package/dist/mcp-client/index.d.ts +17 -0
  457. package/dist/mcp-client/index.d.ts.map +1 -0
  458. package/dist/mcp-client/index.js +53 -0
  459. package/dist/mcp-client/index.js.map +1 -0
  460. package/dist/mcp-client/manager.d.ts +76 -0
  461. package/dist/mcp-client/manager.d.ts.map +1 -0
  462. package/dist/mcp-client/manager.js +212 -0
  463. package/dist/mcp-client/manager.js.map +1 -0
  464. package/dist/oauth-tokens/index.d.ts +1 -1
  465. package/dist/oauth-tokens/index.d.ts.map +1 -1
  466. package/dist/oauth-tokens/index.js +1 -1
  467. package/dist/oauth-tokens/index.js.map +1 -1
  468. package/dist/oauth-tokens/store.d.ts +5 -0
  469. package/dist/oauth-tokens/store.d.ts.map +1 -1
  470. package/dist/oauth-tokens/store.js +33 -8
  471. package/dist/oauth-tokens/store.js.map +1 -1
  472. package/dist/onboarding/default-steps.d.ts +10 -0
  473. package/dist/onboarding/default-steps.d.ts.map +1 -0
  474. package/dist/onboarding/default-steps.js +164 -0
  475. package/dist/onboarding/default-steps.js.map +1 -0
  476. package/dist/onboarding/index.d.ts +12 -0
  477. package/dist/onboarding/index.d.ts.map +1 -0
  478. package/dist/onboarding/index.js +11 -0
  479. package/dist/onboarding/index.js.map +1 -0
  480. package/dist/onboarding/plugin.d.ts +19 -0
  481. package/dist/onboarding/plugin.d.ts.map +1 -0
  482. package/dist/onboarding/plugin.js +147 -0
  483. package/dist/onboarding/plugin.js.map +1 -0
  484. package/dist/onboarding/registry.d.ts +24 -0
  485. package/dist/onboarding/registry.d.ts.map +1 -0
  486. package/dist/onboarding/registry.js +40 -0
  487. package/dist/onboarding/registry.js.map +1 -0
  488. package/dist/onboarding/types.d.ts +71 -0
  489. package/dist/onboarding/types.d.ts.map +1 -0
  490. package/dist/onboarding/types.js +10 -0
  491. package/dist/onboarding/types.js.map +1 -0
  492. package/dist/org/context.d.ts +11 -0
  493. package/dist/org/context.d.ts.map +1 -0
  494. package/dist/org/context.js +61 -0
  495. package/dist/org/context.js.map +1 -0
  496. package/dist/org/handlers.d.ts +66 -0
  497. package/dist/org/handlers.d.ts.map +1 -0
  498. package/dist/org/handlers.js +306 -0
  499. package/dist/org/handlers.js.map +1 -0
  500. package/dist/org/index.d.ts +7 -0
  501. package/dist/org/index.d.ts.map +1 -0
  502. package/dist/org/index.js +11 -0
  503. package/dist/org/index.js.map +1 -0
  504. package/dist/org/migrations.d.ts +10 -0
  505. package/dist/org/migrations.d.ts.map +1 -0
  506. package/dist/org/migrations.js +39 -0
  507. package/dist/org/migrations.js.map +1 -0
  508. package/dist/org/plugin.d.ts +26 -0
  509. package/dist/org/plugin.d.ts.map +1 -0
  510. package/dist/org/plugin.js +94 -0
  511. package/dist/org/plugin.js.map +1 -0
  512. package/dist/org/schema.d.ts +301 -0
  513. package/dist/org/schema.d.ts.map +1 -0
  514. package/dist/org/schema.js +23 -0
  515. package/dist/org/schema.js.map +1 -0
  516. package/dist/org/types.d.ts +42 -0
  517. package/dist/org/types.d.ts.map +1 -0
  518. package/dist/org/types.js +5 -0
  519. package/dist/org/types.js.map +1 -0
  520. package/dist/resources/agents.d.ts +4 -0
  521. package/dist/resources/agents.d.ts.map +1 -0
  522. package/dist/resources/agents.js +44 -0
  523. package/dist/resources/agents.js.map +1 -0
  524. package/dist/resources/handlers.d.ts +27 -1
  525. package/dist/resources/handlers.d.ts.map +1 -1
  526. package/dist/resources/handlers.js +121 -11
  527. package/dist/resources/handlers.js.map +1 -1
  528. package/dist/resources/metadata.d.ts +48 -0
  529. package/dist/resources/metadata.d.ts.map +1 -0
  530. package/dist/resources/metadata.js +150 -0
  531. package/dist/resources/metadata.js.map +1 -0
  532. package/dist/resources/script-helpers.d.ts.map +1 -1
  533. package/dist/resources/script-helpers.js +3 -2
  534. package/dist/resources/script-helpers.js.map +1 -1
  535. package/dist/resources/store.d.ts +5 -0
  536. package/dist/resources/store.d.ts.map +1 -1
  537. package/dist/resources/store.js +76 -17
  538. package/dist/resources/store.js.map +1 -1
  539. package/dist/scripts/agent-engines/list-agent-engines.d.ts +7 -0
  540. package/dist/scripts/agent-engines/list-agent-engines.d.ts.map +1 -0
  541. package/dist/scripts/agent-engines/list-agent-engines.js +42 -0
  542. package/dist/scripts/agent-engines/list-agent-engines.js.map +1 -0
  543. package/dist/scripts/agent-engines/set-agent-engine.d.ts +7 -0
  544. package/dist/scripts/agent-engines/set-agent-engine.d.ts.map +1 -0
  545. package/dist/scripts/agent-engines/set-agent-engine.js +57 -0
  546. package/dist/scripts/agent-engines/set-agent-engine.js.map +1 -0
  547. package/dist/scripts/agent-engines/test-agent-engine.d.ts +7 -0
  548. package/dist/scripts/agent-engines/test-agent-engine.d.ts.map +1 -0
  549. package/dist/scripts/agent-engines/test-agent-engine.js +102 -0
  550. package/dist/scripts/agent-engines/test-agent-engine.js.map +1 -0
  551. package/dist/scripts/call-agent.d.ts +1 -1
  552. package/dist/scripts/call-agent.d.ts.map +1 -1
  553. package/dist/scripts/call-agent.js +13 -8
  554. package/dist/scripts/call-agent.js.map +1 -1
  555. package/dist/scripts/chat/index.d.ts +2 -0
  556. package/dist/scripts/chat/index.d.ts.map +1 -0
  557. package/dist/scripts/chat/index.js +5 -0
  558. package/dist/scripts/chat/index.js.map +1 -0
  559. package/dist/scripts/chat/open-chat.d.ts +11 -0
  560. package/dist/scripts/chat/open-chat.d.ts.map +1 -0
  561. package/dist/scripts/chat/open-chat.js +48 -0
  562. package/dist/scripts/chat/open-chat.js.map +1 -0
  563. package/dist/scripts/chat/search-chats.d.ts +10 -0
  564. package/dist/scripts/chat/search-chats.d.ts.map +1 -0
  565. package/dist/scripts/chat/search-chats.js +90 -0
  566. package/dist/scripts/chat/search-chats.js.map +1 -0
  567. package/dist/scripts/core-scripts.d.ts.map +1 -1
  568. package/dist/scripts/core-scripts.js +4 -0
  569. package/dist/scripts/core-scripts.js.map +1 -1
  570. package/dist/scripts/db/check-scoping.d.ts +14 -0
  571. package/dist/scripts/db/check-scoping.d.ts.map +1 -0
  572. package/dist/scripts/db/check-scoping.js +174 -0
  573. package/dist/scripts/db/check-scoping.js.map +1 -0
  574. package/dist/scripts/db/exec.d.ts +3 -2
  575. package/dist/scripts/db/exec.d.ts.map +1 -1
  576. package/dist/scripts/db/exec.js +35 -19
  577. package/dist/scripts/db/exec.js.map +1 -1
  578. package/dist/scripts/db/index.d.ts.map +1 -1
  579. package/dist/scripts/db/index.js +2 -0
  580. package/dist/scripts/db/index.js.map +1 -1
  581. package/dist/scripts/db/patch.d.ts +50 -0
  582. package/dist/scripts/db/patch.d.ts.map +1 -0
  583. package/dist/scripts/db/patch.js +392 -0
  584. package/dist/scripts/db/patch.js.map +1 -0
  585. package/dist/scripts/db/scoping.d.ts +8 -2
  586. package/dist/scripts/db/scoping.d.ts.map +1 -1
  587. package/dist/scripts/db/scoping.js +66 -47
  588. package/dist/scripts/db/scoping.js.map +1 -1
  589. package/dist/scripts/dev/index.d.ts.map +1 -1
  590. package/dist/scripts/dev/index.js +64 -1
  591. package/dist/scripts/dev/index.js.map +1 -1
  592. package/dist/scripts/docs/index.d.ts +2 -0
  593. package/dist/scripts/docs/index.d.ts.map +1 -0
  594. package/dist/scripts/docs/index.js +4 -0
  595. package/dist/scripts/docs/index.js.map +1 -0
  596. package/dist/scripts/docs/search.d.ts +13 -0
  597. package/dist/scripts/docs/search.d.ts.map +1 -0
  598. package/dist/scripts/docs/search.js +130 -0
  599. package/dist/scripts/docs/search.js.map +1 -0
  600. package/dist/scripts/parse-args.d.ts +14 -0
  601. package/dist/scripts/parse-args.d.ts.map +1 -0
  602. package/dist/scripts/parse-args.js +45 -0
  603. package/dist/scripts/parse-args.js.map +1 -0
  604. package/dist/scripts/resources/delete-memory.d.ts +7 -0
  605. package/dist/scripts/resources/delete-memory.d.ts.map +1 -0
  606. package/dist/scripts/resources/delete-memory.js +49 -0
  607. package/dist/scripts/resources/delete-memory.js.map +1 -0
  608. package/dist/scripts/resources/delete.d.ts.map +1 -1
  609. package/dist/scripts/resources/delete.js +2 -1
  610. package/dist/scripts/resources/delete.js.map +1 -1
  611. package/dist/scripts/resources/index.d.ts.map +1 -1
  612. package/dist/scripts/resources/index.js +2 -0
  613. package/dist/scripts/resources/index.js.map +1 -1
  614. package/dist/scripts/resources/list.d.ts.map +1 -1
  615. package/dist/scripts/resources/list.js +2 -1
  616. package/dist/scripts/resources/list.js.map +1 -1
  617. package/dist/scripts/resources/migrate-learnings.d.ts.map +1 -1
  618. package/dist/scripts/resources/migrate-learnings.js +2 -1
  619. package/dist/scripts/resources/migrate-learnings.js.map +1 -1
  620. package/dist/scripts/resources/read.d.ts.map +1 -1
  621. package/dist/scripts/resources/read.js +2 -1
  622. package/dist/scripts/resources/read.js.map +1 -1
  623. package/dist/scripts/resources/save-memory.d.ts +9 -0
  624. package/dist/scripts/resources/save-memory.d.ts.map +1 -0
  625. package/dist/scripts/resources/save-memory.js +78 -0
  626. package/dist/scripts/resources/save-memory.js.map +1 -0
  627. package/dist/scripts/resources/write.d.ts.map +1 -1
  628. package/dist/scripts/resources/write.js +2 -1
  629. package/dist/scripts/resources/write.js.map +1 -1
  630. package/dist/scripts/runner.d.ts.map +1 -1
  631. package/dist/scripts/runner.js +10 -2
  632. package/dist/scripts/runner.js.map +1 -1
  633. package/dist/scripts/utils.d.ts +9 -8
  634. package/dist/scripts/utils.d.ts.map +1 -1
  635. package/dist/scripts/utils.js +40 -35
  636. package/dist/scripts/utils.js.map +1 -1
  637. package/dist/server/action-discovery.d.ts +5 -0
  638. package/dist/server/action-discovery.d.ts.map +1 -1
  639. package/dist/server/action-discovery.js +132 -33
  640. package/dist/server/action-discovery.js.map +1 -1
  641. package/dist/server/action-routes.d.ts +15 -0
  642. package/dist/server/action-routes.d.ts.map +1 -0
  643. package/dist/server/action-routes.js +111 -0
  644. package/dist/server/action-routes.js.map +1 -0
  645. package/dist/server/agent-chat-plugin.d.ts +23 -0
  646. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  647. package/dist/server/agent-chat-plugin.js +1474 -266
  648. package/dist/server/agent-chat-plugin.js.map +1 -1
  649. package/dist/server/agent-discovery.d.ts +8 -3
  650. package/dist/server/agent-discovery.d.ts.map +1 -1
  651. package/dist/server/agent-discovery.js +57 -8
  652. package/dist/server/agent-discovery.js.map +1 -1
  653. package/dist/server/agent-teams.d.ts +70 -0
  654. package/dist/server/agent-teams.d.ts.map +1 -0
  655. package/dist/server/agent-teams.js +368 -0
  656. package/dist/server/agent-teams.js.map +1 -0
  657. package/dist/server/agents-bundle.d.ts +115 -0
  658. package/dist/server/agents-bundle.d.ts.map +1 -0
  659. package/dist/server/agents-bundle.js +275 -0
  660. package/dist/server/agents-bundle.js.map +1 -0
  661. package/dist/server/auth-plugin.d.ts +3 -3
  662. package/dist/server/auth-plugin.d.ts.map +1 -1
  663. package/dist/server/auth-plugin.js +9 -10
  664. package/dist/server/auth-plugin.js.map +1 -1
  665. package/dist/server/auth.d.ts +55 -33
  666. package/dist/server/auth.d.ts.map +1 -1
  667. package/dist/server/auth.js +640 -610
  668. package/dist/server/auth.js.map +1 -1
  669. package/dist/server/better-auth-instance.d.ts +72 -0
  670. package/dist/server/better-auth-instance.d.ts.map +1 -0
  671. package/dist/server/better-auth-instance.js +340 -0
  672. package/dist/server/better-auth-instance.js.map +1 -0
  673. package/dist/server/builder-browser.d.ts +40 -0
  674. package/dist/server/builder-browser.d.ts.map +1 -0
  675. package/dist/server/builder-browser.js +166 -0
  676. package/dist/server/builder-browser.js.map +1 -0
  677. package/dist/server/collab-plugin.d.ts +29 -0
  678. package/dist/server/collab-plugin.d.ts.map +1 -0
  679. package/dist/server/collab-plugin.js +85 -0
  680. package/dist/server/collab-plugin.js.map +1 -0
  681. package/dist/server/core-routes-plugin.d.ts +0 -3
  682. package/dist/server/core-routes-plugin.d.ts.map +1 -1
  683. package/dist/server/core-routes-plugin.js +248 -32
  684. package/dist/server/core-routes-plugin.js.map +1 -1
  685. package/dist/server/create-server.d.ts +1 -1
  686. package/dist/server/create-server.d.ts.map +1 -1
  687. package/dist/server/create-server.js +39 -16
  688. package/dist/server/create-server.js.map +1 -1
  689. package/dist/server/credential-provider.d.ts +37 -0
  690. package/dist/server/credential-provider.d.ts.map +1 -0
  691. package/dist/server/credential-provider.js +49 -0
  692. package/dist/server/credential-provider.js.map +1 -0
  693. package/dist/server/framework-request-handler.d.ts +47 -0
  694. package/dist/server/framework-request-handler.d.ts.map +1 -0
  695. package/dist/server/framework-request-handler.js +207 -0
  696. package/dist/server/framework-request-handler.js.map +1 -0
  697. package/dist/server/google-auth-plugin.d.ts +4 -0
  698. package/dist/server/google-auth-plugin.d.ts.map +1 -1
  699. package/dist/server/google-auth-plugin.js +14 -13
  700. package/dist/server/google-auth-plugin.js.map +1 -1
  701. package/dist/server/google-oauth.d.ts +3 -3
  702. package/dist/server/google-oauth.d.ts.map +1 -1
  703. package/dist/server/google-oauth.js +51 -24
  704. package/dist/server/google-oauth.js.map +1 -1
  705. package/dist/server/h3-helpers.d.ts +23 -0
  706. package/dist/server/h3-helpers.d.ts.map +1 -0
  707. package/dist/server/h3-helpers.js +37 -0
  708. package/dist/server/h3-helpers.js.map +1 -0
  709. package/dist/server/index.d.ts +12 -4
  710. package/dist/server/index.d.ts.map +1 -1
  711. package/dist/server/index.js +15 -4
  712. package/dist/server/index.js.map +1 -1
  713. package/dist/server/local-migration.d.ts +32 -0
  714. package/dist/server/local-migration.d.ts.map +1 -0
  715. package/dist/server/local-migration.js +205 -0
  716. package/dist/server/local-migration.js.map +1 -0
  717. package/dist/server/oauth-helpers.d.ts +5 -6
  718. package/dist/server/oauth-helpers.d.ts.map +1 -1
  719. package/dist/server/oauth-helpers.js +10 -11
  720. package/dist/server/oauth-helpers.js.map +1 -1
  721. package/dist/server/onboarding-html.d.ts +24 -0
  722. package/dist/server/onboarding-html.d.ts.map +1 -0
  723. package/dist/server/onboarding-html.js +438 -0
  724. package/dist/server/onboarding-html.js.map +1 -0
  725. package/dist/server/poll.d.ts +7 -2
  726. package/dist/server/poll.d.ts.map +1 -1
  727. package/dist/server/poll.js +48 -1
  728. package/dist/server/poll.js.map +1 -1
  729. package/dist/server/request-context.d.ts +20 -0
  730. package/dist/server/request-context.d.ts.map +1 -0
  731. package/dist/server/request-context.js +41 -0
  732. package/dist/server/request-context.js.map +1 -0
  733. package/dist/server/resources-plugin.d.ts.map +1 -1
  734. package/dist/server/resources-plugin.js +4 -3
  735. package/dist/server/resources-plugin.js.map +1 -1
  736. package/dist/server/schema-prompt.d.ts +16 -0
  737. package/dist/server/schema-prompt.d.ts.map +1 -0
  738. package/dist/server/schema-prompt.js +275 -0
  739. package/dist/server/schema-prompt.js.map +1 -0
  740. package/dist/server/sse.d.ts +3 -20
  741. package/dist/server/sse.d.ts.map +1 -1
  742. package/dist/server/sse.js +1 -29
  743. package/dist/server/sse.js.map +1 -1
  744. package/dist/server/ssr-handler.d.ts +6 -0
  745. package/dist/server/ssr-handler.d.ts.map +1 -0
  746. package/dist/server/ssr-handler.js +55 -0
  747. package/dist/server/ssr-handler.js.map +1 -0
  748. package/dist/settings/handlers.d.ts +3 -3
  749. package/dist/settings/handlers.d.ts.map +1 -1
  750. package/dist/settings/handlers.js +2 -1
  751. package/dist/settings/handlers.js.map +1 -1
  752. package/dist/settings/index.d.ts +1 -0
  753. package/dist/settings/index.d.ts.map +1 -1
  754. package/dist/settings/index.js +2 -0
  755. package/dist/settings/index.js.map +1 -1
  756. package/dist/settings/org-settings.d.ts +22 -0
  757. package/dist/settings/org-settings.d.ts.map +1 -0
  758. package/dist/settings/org-settings.js +45 -0
  759. package/dist/settings/org-settings.js.map +1 -0
  760. package/dist/shared/agent-chat.d.ts +5 -5
  761. package/dist/shared/agent-chat.d.ts.map +1 -1
  762. package/dist/shared/agent-chat.js +8 -8
  763. package/dist/shared/agent-chat.js.map +1 -1
  764. package/dist/shared/agent-env.d.ts +1 -1
  765. package/dist/shared/agent-env.js +1 -1
  766. package/dist/shared/runtime.d.ts +14 -0
  767. package/dist/shared/runtime.d.ts.map +1 -0
  768. package/dist/shared/runtime.js +25 -0
  769. package/dist/shared/runtime.js.map +1 -0
  770. package/dist/templates/default/.agents/skills/actions/SKILL.md +143 -0
  771. package/dist/templates/default/.agents/skills/agent-engines/SKILL.md +127 -0
  772. package/dist/templates/default/.agents/skills/capture-learnings/SKILL.md +50 -0
  773. package/dist/templates/default/.agents/skills/create-skill/SKILL.md +167 -0
  774. package/dist/templates/default/.agents/skills/delegate-to-agent/SKILL.md +90 -0
  775. package/dist/templates/default/.agents/skills/frontend-design/SKILL.md +69 -0
  776. package/dist/templates/default/.agents/skills/real-time-collab/SKILL.md +183 -0
  777. package/dist/templates/default/.agents/skills/real-time-sync/SKILL.md +112 -0
  778. package/dist/templates/default/.agents/skills/security/SKILL.md +213 -0
  779. package/dist/templates/default/.agents/skills/self-modifying-code/SKILL.md +79 -0
  780. package/{src/templates/default/.agents/skills/files-as-database → dist/templates/default/.agents/skills/storing-data}/SKILL.md +7 -1
  781. package/dist/templates/default/.claude/settings.json +100 -0
  782. package/dist/templates/default/.env.example +5 -0
  783. package/dist/templates/default/.prettierrc +5 -0
  784. package/dist/templates/default/AGENTS.md +110 -0
  785. package/dist/templates/default/DEVELOPING.md +117 -0
  786. package/dist/templates/default/_gitignore +38 -0
  787. package/dist/templates/default/actions/hello.ts +20 -0
  788. package/dist/templates/default/actions/navigate.ts +53 -0
  789. package/dist/templates/default/actions/run.ts +2 -0
  790. package/dist/templates/default/actions/view-screen.ts +39 -0
  791. package/dist/templates/default/app/entry.client.tsx +4 -0
  792. package/dist/templates/default/app/entry.server.tsx +56 -0
  793. package/dist/templates/default/app/global.css +95 -0
  794. package/dist/templates/default/app/lib/utils.ts +1 -0
  795. package/dist/templates/default/app/root.tsx +110 -0
  796. package/dist/templates/default/app/routes/_index.tsx +62 -0
  797. package/dist/templates/default/app/routes.ts +4 -0
  798. package/dist/templates/default/app/vite-env.d.ts +6 -0
  799. package/dist/templates/default/components.json +20 -0
  800. package/dist/templates/default/data/.gitkeep +0 -0
  801. package/dist/templates/default/data/sync-config.json +1 -0
  802. package/dist/templates/default/learnings.defaults.md +5 -0
  803. package/dist/templates/default/learnings.md +0 -0
  804. package/dist/templates/default/package.json +46 -0
  805. package/dist/templates/default/postcss.config.js +6 -0
  806. package/dist/templates/default/public/icon-180.svg +4 -0
  807. package/dist/templates/default/public/icon-192.svg +4 -0
  808. package/dist/templates/default/public/icon-512.svg +4 -0
  809. package/dist/templates/default/public/manifest.json +13 -0
  810. package/dist/templates/default/react-router.config.ts +6 -0
  811. package/dist/templates/default/server/middleware/auth.ts +15 -0
  812. package/dist/templates/default/server/plugins/.gitkeep +0 -0
  813. package/dist/templates/default/server/routes/[...page].get.ts +5 -0
  814. package/dist/templates/default/server/routes/api/hello.get.ts +5 -0
  815. package/dist/templates/default/shared/api.ts +6 -0
  816. package/dist/templates/default/ssr-entry.ts +20 -0
  817. package/dist/templates/default/tailwind.config.ts +7 -0
  818. package/dist/templates/default/tsconfig.json +11 -0
  819. package/dist/templates/default/vite.config.ts +6 -0
  820. package/dist/templates/workspace-core/AGENTS.md +62 -0
  821. package/dist/templates/workspace-core/actions/company-directory.ts +38 -0
  822. package/dist/templates/workspace-core/package.json +39 -0
  823. package/dist/templates/workspace-core/skills/company-policies/SKILL.md +42 -0
  824. package/dist/templates/workspace-core/src/client/AuthenticatedLayout.tsx +37 -0
  825. package/dist/templates/workspace-core/src/client/index.ts +26 -0
  826. package/dist/templates/workspace-core/src/credentials.ts +29 -0
  827. package/dist/templates/workspace-core/src/index.ts +21 -0
  828. package/dist/templates/workspace-core/src/server/agent-chat-plugin.ts +30 -0
  829. package/dist/templates/workspace-core/src/server/auth-plugin.ts +35 -0
  830. package/dist/templates/workspace-core/src/server/index.ts +22 -0
  831. package/dist/templates/workspace-core/tailwind.preset.ts +34 -0
  832. package/dist/templates/workspace-core/tsconfig.json +9 -0
  833. package/dist/templates/workspace-root/.env.example +37 -0
  834. package/dist/templates/workspace-root/README.md +62 -0
  835. package/dist/templates/workspace-root/_gitignore +23 -0
  836. package/dist/templates/workspace-root/package.json +18 -0
  837. package/dist/templates/workspace-root/pnpm-workspace.yaml +3 -0
  838. package/dist/templates/workspace-root/tsconfig.base.json +21 -0
  839. package/dist/terminal/cli-registry.d.ts +1 -1
  840. package/dist/terminal/cli-registry.d.ts.map +1 -1
  841. package/dist/terminal/cli-registry.js +7 -7
  842. package/dist/terminal/cli-registry.js.map +1 -1
  843. package/dist/terminal/pty-server.d.ts +1 -1
  844. package/dist/terminal/pty-server.d.ts.map +1 -1
  845. package/dist/terminal/pty-server.js +34 -12
  846. package/dist/terminal/pty-server.js.map +1 -1
  847. package/dist/terminal/terminal-plugin.d.ts +0 -9
  848. package/dist/terminal/terminal-plugin.d.ts.map +1 -1
  849. package/dist/terminal/terminal-plugin.js +57 -14
  850. package/dist/terminal/terminal-plugin.js.map +1 -1
  851. package/dist/usage/store.d.ts +29 -0
  852. package/dist/usage/store.d.ts.map +1 -0
  853. package/dist/usage/store.js +102 -0
  854. package/dist/usage/store.js.map +1 -0
  855. package/dist/vite/action-types-plugin.d.ts +13 -0
  856. package/dist/vite/action-types-plugin.d.ts.map +1 -0
  857. package/dist/vite/action-types-plugin.js +132 -0
  858. package/dist/vite/action-types-plugin.js.map +1 -0
  859. package/dist/vite/agents-bundle-plugin.d.ts +3 -0
  860. package/dist/vite/agents-bundle-plugin.d.ts.map +1 -0
  861. package/dist/vite/agents-bundle-plugin.js +137 -0
  862. package/dist/vite/agents-bundle-plugin.js.map +1 -0
  863. package/dist/vite/client.d.ts +21 -0
  864. package/dist/vite/client.d.ts.map +1 -1
  865. package/dist/vite/client.js +297 -37
  866. package/dist/vite/client.js.map +1 -1
  867. package/dist/vite/index.d.ts +2 -1
  868. package/dist/vite/index.d.ts.map +1 -1
  869. package/dist/vite/index.js +2 -1
  870. package/dist/vite/index.js.map +1 -1
  871. package/docs/content/a2a-protocol.md +223 -0
  872. package/docs/content/actions.md +129 -0
  873. package/docs/content/agent-mentions.md +171 -0
  874. package/docs/content/authentication.md +155 -0
  875. package/docs/content/cli-adapters.md +244 -0
  876. package/docs/content/client.md +175 -0
  877. package/docs/content/context-awareness.md +168 -0
  878. package/docs/content/creating-templates.md +311 -0
  879. package/docs/content/database.md +82 -0
  880. package/docs/content/deployment.md +180 -0
  881. package/docs/content/enterprise-workspace.md +235 -0
  882. package/docs/content/faq.md +101 -0
  883. package/docs/content/file-uploads.md +102 -0
  884. package/docs/content/frames.md +47 -0
  885. package/docs/content/getting-started.md +104 -0
  886. package/docs/content/integrations.md +198 -0
  887. package/docs/content/key-concepts.md +246 -0
  888. package/docs/content/mcp-clients.md +110 -0
  889. package/docs/content/mcp-protocol.md +168 -0
  890. package/docs/content/onboarding.md +107 -0
  891. package/docs/content/real-time-collaboration.md +185 -0
  892. package/docs/content/resources.md +277 -0
  893. package/docs/content/security.md +158 -0
  894. package/docs/content/server.md +200 -0
  895. package/docs/content/skills-guide.md +107 -0
  896. package/docs/content/what-is-agent-native.md +100 -0
  897. package/docs/content/workspace-management.md +224 -0
  898. package/package.json +78 -20
  899. package/src/templates/default/.agents/skills/actions/SKILL.md +14 -7
  900. package/src/templates/default/.agents/skills/agent-engines/SKILL.md +127 -0
  901. package/src/templates/default/.agents/skills/real-time-collab/SKILL.md +183 -0
  902. package/src/templates/default/.agents/skills/security/SKILL.md +213 -0
  903. package/src/templates/default/.agents/skills/storing-data/SKILL.md +116 -0
  904. package/src/templates/default/.claude/settings.json +13 -0
  905. package/src/templates/default/AGENTS.md +25 -9
  906. package/src/templates/default/_gitignore +1 -0
  907. package/src/templates/default/actions/view-screen.ts +1 -1
  908. package/src/templates/default/app/root.tsx +4 -1
  909. package/src/templates/default/package.json +2 -2
  910. package/src/templates/default/server/middleware/auth.ts +15 -0
  911. package/src/templates/default/server/routes/[...page].get.ts +2 -9
  912. package/src/templates/default/ssr-entry.ts +20 -0
  913. package/src/templates/workspace-core/AGENTS.md +62 -0
  914. package/src/templates/workspace-core/actions/company-directory.ts +38 -0
  915. package/src/templates/workspace-core/package.json +39 -0
  916. package/src/templates/workspace-core/skills/company-policies/SKILL.md +42 -0
  917. package/src/templates/workspace-core/src/client/AuthenticatedLayout.tsx +37 -0
  918. package/src/templates/workspace-core/src/client/index.ts +26 -0
  919. package/src/templates/workspace-core/src/credentials.ts +29 -0
  920. package/src/templates/workspace-core/src/index.ts +21 -0
  921. package/src/templates/workspace-core/src/server/agent-chat-plugin.ts +30 -0
  922. package/src/templates/workspace-core/src/server/auth-plugin.ts +35 -0
  923. package/src/templates/workspace-core/src/server/index.ts +22 -0
  924. package/src/templates/workspace-core/tailwind.preset.ts +34 -0
  925. package/src/templates/workspace-core/tsconfig.json +9 -0
  926. package/src/templates/workspace-root/.env.example +37 -0
  927. package/src/templates/workspace-root/README.md +62 -0
  928. package/src/templates/workspace-root/_gitignore +23 -0
  929. package/src/templates/workspace-root/package.json +18 -0
  930. package/src/templates/workspace-root/pnpm-workspace.yaml +3 -0
  931. package/src/templates/workspace-root/tsconfig.base.json +21 -0
  932. package/dist/adapters/convex/adapter.d.ts +0 -24
  933. package/dist/adapters/convex/adapter.d.ts.map +0 -1
  934. package/dist/adapters/convex/adapter.js +0 -125
  935. package/dist/adapters/convex/adapter.js.map +0 -1
  936. package/dist/adapters/convex/index.d.ts +0 -4
  937. package/dist/adapters/convex/index.d.ts.map +0 -1
  938. package/dist/adapters/convex/index.js +0 -3
  939. package/dist/adapters/convex/index.js.map +0 -1
  940. package/dist/adapters/drizzle/adapter.d.ts +0 -36
  941. package/dist/adapters/drizzle/adapter.d.ts.map +0 -1
  942. package/dist/adapters/drizzle/adapter.js +0 -210
  943. package/dist/adapters/drizzle/adapter.js.map +0 -1
  944. package/dist/adapters/drizzle/index.d.ts +0 -3
  945. package/dist/adapters/drizzle/index.d.ts.map +0 -1
  946. package/dist/adapters/drizzle/index.js +0 -3
  947. package/dist/adapters/drizzle/index.js.map +0 -1
  948. package/dist/adapters/drizzle/schema.d.ts +0 -146
  949. package/dist/adapters/drizzle/schema.d.ts.map +0 -1
  950. package/dist/adapters/drizzle/schema.js +0 -20
  951. package/dist/adapters/drizzle/schema.js.map +0 -1
  952. package/dist/adapters/firestore/adapter.d.ts +0 -48
  953. package/dist/adapters/firestore/adapter.d.ts.map +0 -1
  954. package/dist/adapters/firestore/adapter.js +0 -62
  955. package/dist/adapters/firestore/adapter.js.map +0 -1
  956. package/dist/adapters/firestore/index.d.ts +0 -4
  957. package/dist/adapters/firestore/index.d.ts.map +0 -1
  958. package/dist/adapters/firestore/index.js +0 -3
  959. package/dist/adapters/firestore/index.js.map +0 -1
  960. package/dist/adapters/supabase/adapter.d.ts +0 -43
  961. package/dist/adapters/supabase/adapter.d.ts.map +0 -1
  962. package/dist/adapters/supabase/adapter.js +0 -137
  963. package/dist/adapters/supabase/adapter.js.map +0 -1
  964. package/dist/adapters/supabase/index.d.ts +0 -3
  965. package/dist/adapters/supabase/index.d.ts.map +0 -1
  966. package/dist/adapters/supabase/index.js +0 -3
  967. package/dist/adapters/supabase/index.js.map +0 -1
  968. package/dist/adapters/sync/config.d.ts +0 -40
  969. package/dist/adapters/sync/config.d.ts.map +0 -1
  970. package/dist/adapters/sync/config.js +0 -209
  971. package/dist/adapters/sync/config.js.map +0 -1
  972. package/dist/adapters/sync/create-file-sync.d.ts +0 -32
  973. package/dist/adapters/sync/create-file-sync.d.ts.map +0 -1
  974. package/dist/adapters/sync/create-file-sync.js +0 -218
  975. package/dist/adapters/sync/create-file-sync.js.map +0 -1
  976. package/dist/adapters/sync/file-sync.d.ts +0 -94
  977. package/dist/adapters/sync/file-sync.d.ts.map +0 -1
  978. package/dist/adapters/sync/file-sync.js +0 -671
  979. package/dist/adapters/sync/file-sync.js.map +0 -1
  980. package/dist/adapters/sync/index.d.ts +0 -6
  981. package/dist/adapters/sync/index.d.ts.map +0 -1
  982. package/dist/adapters/sync/index.js +0 -6
  983. package/dist/adapters/sync/index.js.map +0 -1
  984. package/dist/adapters/sync/merge.d.ts +0 -21
  985. package/dist/adapters/sync/merge.d.ts.map +0 -1
  986. package/dist/adapters/sync/merge.js +0 -132
  987. package/dist/adapters/sync/merge.js.map +0 -1
  988. package/dist/adapters/sync/types.d.ts +0 -62
  989. package/dist/adapters/sync/types.d.ts.map +0 -1
  990. package/dist/adapters/sync/types.js +0 -23
  991. package/dist/adapters/sync/types.js.map +0 -1
  992. package/dist/client/harness.d.ts +0 -48
  993. package/dist/client/harness.d.ts.map +0 -1
  994. package/dist/client/harness.js.map +0 -1
  995. package/dist/client/use-file-sync-status.d.ts +0 -21
  996. package/dist/client/use-file-sync-status.d.ts.map +0 -1
  997. package/dist/client/use-file-sync-status.js +0 -65
  998. package/dist/client/use-file-sync-status.js.map +0 -1
  999. package/dist/server/default-watcher.d.ts +0 -23
  1000. package/dist/server/default-watcher.d.ts.map +0 -1
  1001. package/dist/server/default-watcher.js +0 -57
  1002. package/dist/server/default-watcher.js.map +0 -1
  1003. package/dist/server/file-sync-plugin.d.ts +0 -7
  1004. package/dist/server/file-sync-plugin.d.ts.map +0 -1
  1005. package/dist/server/file-sync-plugin.js +0 -38
  1006. package/dist/server/file-sync-plugin.js.map +0 -1
  1007. package/dist/vite/dev-api-server.d.ts +0 -10
  1008. package/dist/vite/dev-api-server.d.ts.map +0 -1
  1009. package/dist/vite/dev-api-server.js +0 -243
  1010. package/dist/vite/dev-api-server.js.map +0 -1
  1011. /package/{src/templates/default/application-state/.gitkeep → dist/templates/default/.ignore} +0 -0
@@ -16,13 +16,13 @@ import path from "path";
16
16
  import fs from "fs";
17
17
  import { execFileSync } from "child_process";
18
18
  import { createRequire } from "module";
19
- import { discoverApiRoutes, discoverPlugins, getMissingDefaultPlugins, DEFAULT_PLUGIN_REGISTRY, } from "./route-discovery.js";
19
+ import { discoverApiRoutes, discoverPlugins, discoverActionFiles, getMissingDefaultPlugins, DEFAULT_PLUGIN_REGISTRY, } from "./route-discovery.js";
20
+ import { getWorkspaceCoreExports, } from "./workspace-core.js";
20
21
  const cwd = process.cwd();
21
22
  const preset = process.env.NITRO_PRESET || "node";
22
23
  /** Plugins that require Node.js runtime and cannot run on edge/serverless */
23
24
  const NODE_ONLY_PLUGINS = new Set([
24
25
  "terminal", // PTY requires child_process
25
- "file-sync", // chokidar requires fs watchers
26
26
  ]);
27
27
  function isNodeOnlyPlugin(filePath) {
28
28
  const basename = path.basename(filePath, path.extname(filePath));
@@ -30,16 +30,40 @@ function isNodeOnlyPlugin(filePath) {
30
30
  }
31
31
  /**
32
32
  * Generate the worker entry source code that wires up H3 + React Router SSR.
33
+ *
34
+ * If a workspace core is present (monorepo with `agent-native.workspaceCore`
35
+ * configured and the named package resolves), any plugin slot that the
36
+ * workspace core exports is imported from there instead of from
37
+ * `@agent-native/core/server`. This is the middle layer of the three-layer
38
+ * inheritance model: app local > workspace core > framework default.
33
39
  */
34
- function generateWorkerEntry(routes, pluginPaths, defaultPluginStems = []) {
40
+ function generateWorkerEntry(routes, pluginPaths, defaultPluginStems = [], actions = [], workspaceCore = null) {
35
41
  const routeImports = [];
36
42
  const routeRegistrations = [];
37
43
  for (let i = 0; i < routes.length; i++) {
38
44
  const r = routes[i];
39
45
  const varName = `route_${i}`;
40
- // Use the absolute path for the import
41
46
  routeImports.push(`import ${varName} from ${JSON.stringify(r.absPath)};`);
42
- routeRegistrations.push(` router.${r.method}(${JSON.stringify(r.route)}, ${varName});`);
47
+ routeRegistrations.push(` app.on(${JSON.stringify(r.method.toUpperCase())}, ${JSON.stringify(r.route)}, ${varName});`);
48
+ }
49
+ // Action route imports and registrations
50
+ const actionImports = [];
51
+ const actionRegistrations = [];
52
+ for (let i = 0; i < actions.length; i++) {
53
+ const a = actions[i];
54
+ const varName = `action_${i}`;
55
+ actionImports.push(`import ${varName} from ${JSON.stringify(a.absPath)};`);
56
+ const routePath = `/_agent-native/actions/${a.name}`;
57
+ actionRegistrations.push(` app.on(${JSON.stringify(a.method.toUpperCase())}, ${JSON.stringify(routePath)}, defineEventHandler(async (event) => {
58
+ const params = ${a.method === "get" ? "Object.fromEntries(event.url.searchParams)" : "(await readBody(event)) ?? {}"};
59
+ try {
60
+ const result = await ${varName}.run(params);
61
+ if (typeof result === "string") { try { return JSON.parse(result); } catch { return result; } }
62
+ return result;
63
+ } catch (err) {
64
+ return new Response(JSON.stringify({ error: err?.message || "Action failed" }), { status: err?.message?.startsWith("Invalid action parameters:") ? 400 : 500, headers: { "Content-Type": "application/json" } });
65
+ }
66
+ }));`);
43
67
  }
44
68
  // Filter out Node-only plugins
45
69
  const edgePlugins = pluginPaths.filter((p) => !isNodeOnlyPlugin(p));
@@ -49,31 +73,44 @@ function generateWorkerEntry(routes, pluginPaths, defaultPluginStems = []) {
49
73
  const varName = `plugin_${i}`;
50
74
  pluginImports.push(`import ${varName} from ${JSON.stringify(edgePlugins[i])};`);
51
75
  pluginCalls.push(` if (typeof ${varName} === "function") {
52
- await ${varName}({ h3App: app });
76
+ await ${varName}(nitroApp);
53
77
  }`);
54
78
  }
55
- // Auto-mounted default plugins (from core, for missing plugin files)
79
+ // Auto-mounted default plugins (for slots the template doesn't override
80
+ // locally). For each slot, prefer a workspace-core export over the
81
+ // @agent-native/core default, if the workspace core provides one.
56
82
  const edgeDefaultStems = defaultPluginStems.filter((stem) => !NODE_ONLY_PLUGINS.has(stem));
57
83
  for (let i = 0; i < edgeDefaultStems.length; i++) {
58
84
  const stem = edgeDefaultStems[i];
59
- const exportName = DEFAULT_PLUGIN_REGISTRY[stem];
60
- if (!exportName)
61
- continue;
62
85
  const varName = `defaultPlugin_${i}`;
63
- pluginImports.push(`import { ${exportName} as ${varName} } from "@agent-native/core/server";`);
86
+ const workspaceExportName = workspaceCore?.plugins?.[stem];
87
+ if (workspaceCore && workspaceExportName) {
88
+ // Workspace-core layer wins over the framework default.
89
+ pluginImports.push(`import { ${workspaceExportName} as ${varName} } from ${JSON.stringify(`${workspaceCore.packageName}/server`)};`);
90
+ }
91
+ else {
92
+ // Fall back to the framework default from @agent-native/core.
93
+ const defaultExportName = DEFAULT_PLUGIN_REGISTRY[stem];
94
+ if (!defaultExportName)
95
+ continue;
96
+ pluginImports.push(`import { ${defaultExportName} as ${varName} } from "@agent-native/core/server";`);
97
+ }
64
98
  pluginCalls.push(` if (typeof ${varName} === "function") {
65
- await ${varName}({ h3App: app });
99
+ await ${varName}(nitroApp);
66
100
  }`);
67
101
  }
68
102
  return `
69
103
  // Auto-generated worker entry point for ${preset}
70
- import { createApp, createRouter, toWebHandler, defineEventHandler, toWebRequest } from "h3";
104
+ import { H3, defineEventHandler, readBody } from "h3";
71
105
  import { createRequestHandler } from "react-router";
72
106
  import * as serverBuild from "./server-build.js";
73
107
 
74
108
  // API route handlers
75
109
  ${routeImports.join("\n")}
76
110
 
111
+ // Action handlers (auto-discovered from actions/)
112
+ ${actionImports.join("\n")}
113
+
77
114
  // Server plugins
78
115
  ${pluginImports.join("\n")}
79
116
 
@@ -82,39 +119,48 @@ let _handler;
82
119
  async function getHandler() {
83
120
  if (_handler) return _handler;
84
121
 
85
- const app = createApp();
86
- const router = createRouter();
122
+ const app = new H3();
123
+
124
+ // Build a fake nitroApp surface so framework plugins (which expect
125
+ // \`nitroApp.h3["~middleware"]\`) can register routes via getH3App().
126
+ const noop = () => {};
127
+ const nitroApp = {
128
+ h3: app,
129
+ hooks: { hook: noop, callHook: noop, hookOnce: noop },
130
+ captureError: noop,
131
+ };
87
132
 
88
- // CORS
133
+ // CORS — applied as global middleware via .use(handler)
89
134
  app.use(defineEventHandler((event) => {
90
- const headers = event.node?.res || event.res;
91
- if (headers?.setHeader) {
92
- headers.setHeader("Access-Control-Allow-Origin", "*");
93
- headers.setHeader("Access-Control-Allow-Methods", "GET,POST,PUT,PATCH,DELETE,OPTIONS");
94
- headers.setHeader("Access-Control-Allow-Headers", "Content-Type,Authorization,X-Requested-With");
95
- }
96
- if (event.method === "OPTIONS" || event.node?.req?.method === "OPTIONS") {
97
- return new Response(null, { status: 204 });
135
+ if (event.req.method === "OPTIONS") {
136
+ return new Response(null, {
137
+ status: 204,
138
+ headers: {
139
+ "Access-Control-Allow-Origin": "*",
140
+ "Access-Control-Allow-Methods": "GET,POST,PUT,PATCH,DELETE,OPTIONS",
141
+ "Access-Control-Allow-Headers": "Content-Type,Authorization,X-Requested-With",
142
+ },
143
+ });
98
144
  }
99
145
  }));
100
146
 
101
- // Run plugins BEFORE routes auth middleware must be mounted first
147
+ // Run plugins — they call getH3App(nitroApp).use(path, handler) which
148
+ // pushes path-prefix middleware onto app["~middleware"].
102
149
  ${pluginCalls.join("\n")}
103
150
 
104
- // Mount router AFTER plugins so auth middleware runs first
105
- app.use(router);
106
-
107
151
  // Register API routes
108
152
  ${routeRegistrations.join("\n")}
109
153
 
154
+ // Register action routes (/_agent-native/actions/*)
155
+ ${actionRegistrations.join("\n")}
156
+
110
157
  // SSR catch-all for React Router
111
158
  const rrHandler = createRequestHandler(() => serverBuild);
112
- router.get("/**", defineEventHandler(async (event) => {
113
- const webReq = toWebRequest(event);
114
- return rrHandler(webReq);
159
+ app.all("/**", defineEventHandler(async (event) => {
160
+ return rrHandler(event.req);
115
161
  }));
116
162
 
117
- _handler = toWebHandler(app);
163
+ _handler = app.fetch.bind(app);
118
164
  return _handler;
119
165
  }
120
166
 
@@ -134,8 +180,12 @@ export default {
134
180
  }
135
181
  }
136
182
 
137
- // Try serving static assets first (CF Pages advanced mode)
138
- if (env?.ASSETS) {
183
+ // Try serving static assets first (CF Pages advanced mode).
184
+ // Only attempt this for GET/HEAD — the ASSETS binding is a static file
185
+ // server and returns 405 for any other method, which would short-circuit
186
+ // API calls (PUT/POST/DELETE to /_agent-native/*) before they reach our
187
+ // h3 middleware.
188
+ if (env?.ASSETS && (request.method === "GET" || request.method === "HEAD")) {
139
189
  try {
140
190
  const assetResponse = await env.ASSETS.fetch(request);
141
191
  if (assetResponse.status !== 404) {
@@ -146,7 +196,6 @@ export default {
146
196
  }
147
197
  }
148
198
 
149
-
150
199
  const handler = await getHandler();
151
200
  return handler(request);
152
201
  }
@@ -179,17 +228,26 @@ async function buildCloudflarePages() {
179
228
  copyDir(clientDir, distDir);
180
229
  // Exclude _worker.js from being served as a public asset
181
230
  fs.writeFileSync(path.join(distDir, ".assetsignore"), "_worker.js\n");
231
+ // Write a package.json inside _worker.js/ to tell wrangler this is a
232
+ // pre-bundled ES module worker — skip re-bundling our esbuild output.
233
+ fs.mkdirSync(path.join(distDir, "_worker.js"), { recursive: true });
234
+ fs.writeFileSync(path.join(distDir, "_worker.js", "package.json"), JSON.stringify({ main: "index.js", type: "module" }));
182
235
  // Create empty stub for native modules that wrangler's bundler needs to resolve
183
236
  const stubsDir = path.join(distDir, "_worker.js", "stubs");
184
237
  fs.mkdirSync(stubsDir, { recursive: true });
185
238
  fs.writeFileSync(path.join(stubsDir, "empty.js"), "export default {}; export const watch = () => ({ close() {} }); export const Database = class {};\n");
186
- // Discover routes and plugins
187
- const routes = discoverApiRoutes(cwd);
188
- const plugins = discoverPlugins(cwd);
189
- const missingDefaults = getMissingDefaultPlugins(cwd);
190
- console.log(`[deploy] ${routes.length} API routes, ${plugins.length} plugins (${plugins.filter((p) => isNodeOnlyPlugin(p)).length} skipped as Node-only), ${missingDefaults.length} auto-mounted defaults`);
239
+ // Discover routes, plugins, actions, and the workspace core (if any).
240
+ const routes = await discoverApiRoutes(cwd);
241
+ const plugins = await discoverPlugins(cwd);
242
+ const actions = await discoverActionFiles(cwd);
243
+ const missingDefaults = await getMissingDefaultPlugins(cwd);
244
+ const workspaceCore = await getWorkspaceCoreExports(cwd);
245
+ const workspaceSlotCount = workspaceCore
246
+ ? Object.keys(workspaceCore.plugins).length
247
+ : 0;
248
+ console.log(`[deploy] ${routes.length} API routes, ${actions.length} actions, ${plugins.length} plugins (${plugins.filter((p) => isNodeOnlyPlugin(p)).length} skipped as Node-only), ${missingDefaults.length} auto-mounted defaults${workspaceCore ? `, workspace-core ${workspaceCore.packageName} (${workspaceSlotCount} plugin slots)` : ""}`);
191
249
  // Generate the worker entry
192
- const entrySource = generateWorkerEntry(routes, plugins, missingDefaults);
250
+ const entrySource = generateWorkerEntry(routes, plugins, missingDefaults, actions, workspaceCore);
193
251
  // Create _worker.js output directory
194
252
  const workerOutDir = path.join(distDir, "_worker.js");
195
253
  fs.mkdirSync(workerOutDir, { recursive: true });
@@ -201,7 +259,9 @@ async function buildCloudflarePages() {
201
259
  // The server build (React Router SSR) is copied to tmp so esbuild can resolve it.
202
260
  const tmpDir = path.join(cwd, ".deploy-tmp");
203
261
  fs.mkdirSync(tmpDir, { recursive: true });
204
- const tmpEntry = path.join(tmpDir, "worker-entry.js");
262
+ // Name the entry "index.js" so esbuild outputs index.js in the outdir,
263
+ // matching the _worker.js/index.js entry point that Cloudflare Pages expects.
264
+ const tmpEntry = path.join(tmpDir, "index.js");
205
265
  fs.writeFileSync(tmpEntry, adjustedEntry);
206
266
  // Copy server build files so esbuild can resolve the import
207
267
  copyDir(serverDir, path.join(tmpDir, "server"));
@@ -227,12 +287,32 @@ async function buildCloudflarePages() {
227
287
  fs.writeFileSync(path.join(modDir, "package.json"), JSON.stringify({ name: mod, main: "index.js", type: "module" }));
228
288
  }
229
289
  const esbuildBin = findEsbuild();
230
- // Externalize node builtins (both bare and node: prefixed) — the require shim handles bare ones,
231
- // and CF Workers runtime handles node: prefixed ones via nodejs_compat
232
- const nodeExternals = getNodeBuiltinNames().flatMap((n) => [
233
- `--external:${n}`,
234
- `--external:node:${n}`,
235
- ]);
290
+ // Externalize node builtins (both bare and node: prefixed) — the require
291
+ // shim handles bare ones. Also alias every `node:*` specifier to its bare
292
+ // name so esbuild emits `import from "fs"` everywhere, never
293
+ // `import from "node:fs"`. CF Pages Functions (wrangler 3.x, nodejs_compat
294
+ // v1) rejects the `node:` prefix in chunks with:
295
+ // No such module "node:fs" imported from chunks/...
296
+ // The alias is the authoritative fix; the post-build strip stays as belt
297
+ // & suspenders in case esbuild emits a node: string via some other path.
298
+ const builtinNames = getNodeBuiltinNames();
299
+ // Only externalize bare names. node:* externals would otherwise pin
300
+ // the prefix in output; instead we alias node:* → bare so anything that
301
+ // resolves past alias land as bare externals.
302
+ const nodeExternals = builtinNames.map((n) => `--external:${n}`);
303
+ const nodeAliases = builtinNames.map((n) => `--alias:node:${n}=${n}`);
304
+ // Hard externalize large client-only / node-only libraries so they don't
305
+ // bloat the edge worker. These are never executed in the CF Pages runtime
306
+ // — mermaid/excalidraw render in the browser, pdf-parse and @google/genai
307
+ // run from node-only action scripts. Without this, slides' bundle hits
308
+ // the 25 MiB Pages Functions limit.
309
+ const heavyClientExternals = [
310
+ "mermaid",
311
+ "@excalidraw/excalidraw",
312
+ "@excalidraw/mermaid-to-excalidraw",
313
+ "pdf-parse",
314
+ "@google/genai",
315
+ ].map((p) => `--external:${p}`);
236
316
  execFileSync(esbuildBin, [
237
317
  tmpEntry,
238
318
  "--bundle",
@@ -241,8 +321,14 @@ async function buildCloudflarePages() {
241
321
  // browser platform for npm resolution; node builtins externalized separately
242
322
  "--platform=browser",
243
323
  "--minify",
244
- `--outfile=${entryFile}`,
324
+ // Single-file bundle (no --splitting). CF Pages Functions' deploy
325
+ // validator fails to load chunked _worker.js/ bundles even when the
326
+ // chunks contain only bare node-builtin imports (wrangler 3.101.0
327
+ // + nodejs_compat v2). Matches main's working config.
328
+ `--outdir=${workerOutDir}`,
245
329
  "--conditions=workerd,worker,import",
330
+ // The ssr-handler imports a virtual module that only exists at dev time
331
+ "--external:virtual:react-router/server-build",
246
332
  // Banner: override the __require shim that esbuild generates for CJS modules.
247
333
  // This provides a real require() backed by ESM imports of node builtins.
248
334
  // Without this, CF Workers rejects the bundle because esbuild's default
@@ -250,43 +336,102 @@ async function buildCloudflarePages() {
250
336
  `--banner:js=${generateRequireShim()}`,
251
337
  // Externalize node: builtins — CF Workers runtime provides them
252
338
  ...nodeExternals,
339
+ ...heavyClientExternals,
340
+ // Rewrite node:* -> bare names so chunks never contain node: imports
341
+ ...nodeAliases,
253
342
  ], { stdio: "inherit", cwd });
254
343
  // Clean up tmp
255
344
  fs.rmSync(tmpDir, { recursive: true });
256
- // Patch unenv stubs: make fs.mkdirSync/writeFileSync/readFileSync no-ops instead of throwing.
257
- // Some code calls these at import time; on Workers there's no filesystem, but the calls
258
- // are guarded by runtime checks (url.startsWith("file:")) so they're dead code on Workers.
259
- // The unenv stubs throw "not implemented" which crashes at validation time.
260
- // This patch makes them safe no-ops so the module loads without error.
261
- let workerCode2 = fs.readFileSync(entryFile, "utf-8");
262
- // Only add shim if unenv stubs would be present (when wrangler bundles with nodejs_compat_v2)
263
- if (!workerCode2.includes("__unenv_fs_patched__")) {
264
- workerCode2 = `/* __unenv_fs_patched__ */\n` + workerCode2;
345
+ // Rewrite the external virtual import to a local stub.
346
+ // esbuild externalizes "virtual:react-router/server-build" (used by ssr-handler),
347
+ // but wrangler re-bundles and chokes on it. Replace the import with a no-op stub.
348
+ const virtualStub = path.join(workerOutDir, "chunks", "_virtual-stub.js");
349
+ fs.mkdirSync(path.dirname(virtualStub), { recursive: true });
350
+ fs.writeFileSync(virtualStub, "export default {};\n");
351
+ // Post-build patches apply to ALL .js files in the worker output directory
352
+ // (entry + chunks) since code can land in any chunk after splitting.
353
+ const allJsFiles = getAllJsFiles(workerOutDir);
354
+ for (const jsFile of allJsFiles) {
355
+ let code = fs.readFileSync(jsFile, "utf-8");
356
+ const isEntry = path.basename(jsFile) === "index.js";
357
+ // Strip "node:" prefix from all imports/requires. Cloudflare Pages
358
+ // Functions runs under nodejs_compat v1, which exposes builtins as
359
+ // bare names ("fs") and rejects "node:fs" at worker init:
360
+ // No such module "node:fs" imported from chunks/...
361
+ // (Workers-on-the-edge use v2 and require the prefix; Pages lags.)
362
+ // Preserve the original quote char (single vs double) when rewriting —
363
+ // esbuild's minifier sometimes places `import('node:buffer')` inside a
364
+ // double-quoted string literal; swapping to double quotes breaks the
365
+ // outer literal and produces `Unexpected identifier 'buffer'`.
366
+ code = code.replace(/\bfrom(\s*)(["'])node:([^"']+)\2/g, (_, ws, q, mod) => `from${ws}${q}${mod}${q}`);
367
+ code = code.replace(/\bimport(\s*)(["'])node:([^"']+)\2/g, (_, ws, q, mod) => `import${ws}${q}${mod}${q}`);
368
+ // Strip `node:` prefix from any string literal that names a node
369
+ // builtin. Covers dynamic imports, require(), getBuiltinModule(),
370
+ // and minified wrappers like `Ut("node:fs")` that Nitro/h3 emit.
371
+ // Pages' loader scans chunks for `"node:*"` literals and fails with
372
+ // 'No such module "node:fs"' whether or not the string is reached
373
+ // at runtime. Scoping to known builtins avoids touching user data.
374
+ const builtinsPattern = [
375
+ "fs",
376
+ "fs/promises",
377
+ "path",
378
+ "os",
379
+ "crypto",
380
+ "http",
381
+ "https",
382
+ "stream",
383
+ "stream/web",
384
+ "url",
385
+ "util",
386
+ "events",
387
+ "buffer",
388
+ "querystring",
389
+ "zlib",
390
+ "net",
391
+ "tls",
392
+ "assert",
393
+ "timers",
394
+ "child_process",
395
+ "module",
396
+ "async_hooks",
397
+ "process",
398
+ "worker_threads",
399
+ "sqlite",
400
+ ].join("|");
401
+ const builtinRe = new RegExp(`(["'])node:(${builtinsPattern})\\1`, "g");
402
+ code = code.replace(builtinRe, (_, q, mod) => `${q}${mod}${q}`);
403
+ // Rewrite virtual:react-router/server-build imports to the local stub.
404
+ // The generated entry handles SSR directly; this import is dead code from ssr-handler.
405
+ const relStub = path
406
+ .relative(path.dirname(jsFile), virtualStub)
407
+ .replace(/\\/g, "/");
408
+ code = code.replace(/["']virtual:react-router\/server-build["']/g, `"./${relStub}"`);
409
+ // Patch createRequire(import.meta.url) — import.meta.url is undefined in CF Workers.
410
+ // Matches both `from "module"` and `from "node:module"` — with the node:
411
+ // prefix preserved (for nodejs_compat_v2), the latter is what esbuild now emits.
412
+ code = code.replace(/\bimport\s*\{\s*createRequire\s+as\s+([\w$]+)\s*\}\s*from\s*["'](?:node:)?module["']\s*;/g, "var $1 = function() { return typeof require !== 'undefined' ? require : function(m) { throw new Error('require not supported: ' + m); }; };");
413
+ // Patch setInterval/setTimeout at module scope — CF Workers disallows timers in global scope.
414
+ // Some dependencies (e.g. Anthropic SDK rate limiter) call setInterval at module init.
415
+ // With code splitting, chunks evaluate before the entry, so the shim must be in every file.
416
+ // The restore only happens in the entry's fetch() handler.
417
+ if (!code.includes("__origSetInterval")) {
418
+ const timerShim = [
419
+ "var __origSetInterval=globalThis.setInterval;",
420
+ "globalThis.setInterval=function(){return{unref(){},ref(){},close(){}}};",
421
+ ].join("");
422
+ code = timerShim + code;
423
+ }
424
+ if (isEntry) {
425
+ const timerRestore = "if(__origSetInterval)globalThis.setInterval=__origSetInterval;";
426
+ code = code.replace(/async fetch\(request,\s*env,\s*ctx\)\s*\{/, (match) => match + timerRestore);
427
+ }
428
+ fs.writeFileSync(jsFile, code);
265
429
  }
266
- fs.writeFileSync(entryFile, workerCode2);
267
- // Patch setInterval/setTimeout at module scope — CF Workers disallows timers in global scope.
268
- // Some dependencies (e.g. Anthropic SDK rate limiter) call setInterval at module init.
269
- // Inject a banner that makes setInterval/setTimeout safe during module evaluation,
270
- // then restores them inside the first fetch() call.
271
- let workerCode = fs.readFileSync(entryFile, "utf-8");
272
- const timerShim = [
273
- "var __origSetInterval=globalThis.setInterval;",
274
- "globalThis.setInterval=function(){return{unref(){},ref(){},close(){}}};",
275
- ].join("");
276
- // Restore real setInterval inside the fetch handler
277
- const timerRestore = "if(__origSetInterval)globalThis.setInterval=__origSetInterval;";
278
- workerCode = timerShim + workerCode;
279
- // Inject restore right after "async fetch(request, env, ctx) {"
280
- workerCode = workerCode.replace(/async fetch\(request,\s*env,\s*ctx\)\s*\{/, (match) => match + timerRestore);
281
- // Strip "node:" prefix from all imports/requires — nodejs_compat v1 only provides bare names.
282
- // Handles minified output (no space before quotes) and subpaths like node:fs/promises.
283
- workerCode = workerCode.replace(/from\s*["']node:([^"']+)["']/g, (_, mod) => `from"${mod}"`);
284
- workerCode = workerCode.replace(/import\s*["']node:([^"']+)["']/g, (_, mod) => `import"${mod}"`);
285
- fs.writeFileSync(entryFile, workerCode);
286
430
  // Report size
287
431
  const entrySize = fs.statSync(entryFile).size;
288
432
  const totalSize = getDirSize(workerOutDir);
289
- console.log(`[deploy] Cloudflare Pages output written to dist/ (worker entry: ${(entrySize / 1024).toFixed(0)}KB, total: ${(totalSize / 1024 / 1024).toFixed(1)}MB)`);
433
+ const chunkCount = allJsFiles.length - 1; // exclude entry
434
+ console.log(`[deploy] Cloudflare Pages output written to dist/ (entry: ${(entrySize / 1024).toFixed(0)}KB, ${chunkCount} chunks, total: ${(totalSize / 1024 / 1024).toFixed(1)}MB)`);
290
435
  }
291
436
  const NODE_BUILTINS = [
292
437
  "assert",
@@ -364,11 +509,21 @@ function generateRequireShim() {
364
509
  "child_process",
365
510
  "module",
366
511
  ];
512
+ // Bare module names — CF Pages Functions runs under nodejs_compat v1,
513
+ // which rejects "node:fs" and only accepts "fs". The post-build pass in
514
+ // buildCloudflarePages() also strips any `node:` prefix that esbuild or
515
+ // dependencies emit elsewhere.
367
516
  const imports = shimmed
368
517
  .map((m) => `import __${m.replace("/", "_")} from "${m}";`)
369
518
  .join("");
519
+ // Only bare-name keys. Pages' Functions loader appears to scan chunks
520
+ // for "node:*" string literals and pre-resolves them as module specs —
521
+ // so keeping "node:fs" as an object key caused deploy to fail with
522
+ // 'No such module "node:fs"' even though nothing imported it. The
523
+ // post-build strip turns every runtime `require("node:fs")` into
524
+ // `require("fs")` so bare keys are sufficient.
370
525
  const entries = shimmed
371
- .map((m) => `"${m}":__${m.replace("/", "_")},"node:${m}":__${m.replace("/", "_")}`)
526
+ .map((m) => `"${m}":__${m.replace("/", "_")}`)
372
527
  .join(",");
373
528
  return `${imports}\nconst __mods={${entries}};export var require=globalThis.require||function(m){const r=__mods[m];if(r!==undefined)return r;throw new Error("Cannot require: "+m)};\n`;
374
529
  }
@@ -406,6 +561,21 @@ function findWorkspaceRoot(dir) {
406
561
  }
407
562
  return null;
408
563
  }
564
+ /** Recursively collect all .js files in a directory. */
565
+ function getAllJsFiles(dir) {
566
+ const results = [];
567
+ const entries = fs.readdirSync(dir, { withFileTypes: true });
568
+ for (const entry of entries) {
569
+ const fullPath = path.join(dir, entry.name);
570
+ if (entry.isDirectory()) {
571
+ results.push(...getAllJsFiles(fullPath));
572
+ }
573
+ else if (entry.name.endsWith(".js")) {
574
+ results.push(fullPath);
575
+ }
576
+ }
577
+ return results;
578
+ }
409
579
  function getDirSize(dir) {
410
580
  let size = 0;
411
581
  const entries = fs.readdirSync(dir, { withFileTypes: true });
@@ -434,20 +604,559 @@ function copyDir(src, dest) {
434
604
  }
435
605
  }
436
606
  }
607
+ /**
608
+ * Create stub directories for dangling platform-specific optional dependency
609
+ * symlinks in the pnpm store.
610
+ *
611
+ * pnpm's store at `node_modules/.pnpm/<pkg>@<ver>/node_modules/<pkg>/<dep>`
612
+ * contains symlinks for ALL optional deps declared by a package, but only
613
+ * installs the ones matching the current OS/CPU as real packages. The other
614
+ * symlinks dangle — their targets at `.pnpm/<scope>+<pkg>@<ver>/node_modules/...`
615
+ * don't exist.
616
+ *
617
+ * Nitro's `nitro:externals` plugin (via nf3 / @vercel/nft) walks
618
+ * optionalDependencies when tracing files and calls `realpath` on them, which
619
+ * throws ENOENT on dangling targets. This blocks builds with presets like
620
+ * netlify / vercel / aws-lambda on macOS when packages like `libsql` declare
621
+ * Linux-only platform variants as optional deps.
622
+ *
623
+ * Fix: walk `node_modules/.pnpm/` and for every dangling symlink under
624
+ * `<pkg>/node_modules/<scope>/<dep>`, create the symlink's target as a tiny
625
+ * stub directory containing just a valid `package.json`. The tracer can now
626
+ * `realpath` and read the package.json without throwing — the stub is empty
627
+ * so no binary is bundled (which is what we want: we're building from macOS,
628
+ * the target deploy platform will install its own native binary).
629
+ */
630
+ function createDanglingOptionalDepStubs() {
631
+ // In pnpm monorepos, the store may live at the workspace root rather than
632
+ // in the template dir. Walk up from `cwd` to find every `.pnpm` directory.
633
+ const pnpmRoots = [];
634
+ let dir = cwd;
635
+ while (true) {
636
+ const candidate = path.join(dir, "node_modules", ".pnpm");
637
+ if (fs.existsSync(candidate))
638
+ pnpmRoots.push(candidate);
639
+ const parent = path.dirname(dir);
640
+ if (parent === dir)
641
+ break;
642
+ dir = parent;
643
+ }
644
+ if (pnpmRoots.length === 0)
645
+ return;
646
+ let stubsCreated = 0;
647
+ for (const pnpmRoot of pnpmRoots) {
648
+ let pkgDirs;
649
+ try {
650
+ pkgDirs = fs.readdirSync(pnpmRoot);
651
+ }
652
+ catch {
653
+ continue;
654
+ }
655
+ for (const pkgDir of pkgDirs) {
656
+ // e.g. `libsql@0.5.29`, `@libsql+client@0.15.15`
657
+ const innerNm = path.join(pnpmRoot, pkgDir, "node_modules");
658
+ if (!fs.existsSync(innerNm))
659
+ continue;
660
+ let innerEntries;
661
+ try {
662
+ innerEntries = fs.readdirSync(innerNm, { withFileTypes: true });
663
+ }
664
+ catch {
665
+ continue;
666
+ }
667
+ for (const entry of innerEntries) {
668
+ // Top-level entry: either `foo` (unscoped) or `@scope` (scoped)
669
+ const entryPath = path.join(innerNm, entry.name);
670
+ const candidates = [];
671
+ if (entry.name.startsWith("@")) {
672
+ // Scoped — iterate children
673
+ let scopedChildren;
674
+ try {
675
+ scopedChildren = fs.readdirSync(entryPath, {
676
+ withFileTypes: true,
677
+ });
678
+ }
679
+ catch {
680
+ continue;
681
+ }
682
+ for (const child of scopedChildren) {
683
+ candidates.push({
684
+ symlinkPath: path.join(entryPath, child.name),
685
+ pkgName: `${entry.name}/${child.name}`,
686
+ });
687
+ }
688
+ }
689
+ else {
690
+ candidates.push({ symlinkPath: entryPath, pkgName: entry.name });
691
+ }
692
+ for (const { symlinkPath, pkgName } of candidates) {
693
+ let isSymlink = false;
694
+ try {
695
+ isSymlink = fs.lstatSync(symlinkPath).isSymbolicLink();
696
+ }
697
+ catch {
698
+ continue;
699
+ }
700
+ if (!isSymlink)
701
+ continue;
702
+ // Check if the symlink target exists
703
+ try {
704
+ fs.statSync(symlinkPath);
705
+ continue; // Target exists — nothing to do
706
+ }
707
+ catch {
708
+ // Dangling symlink — create a stub at the target
709
+ }
710
+ let linkTarget;
711
+ try {
712
+ linkTarget = fs.readlinkSync(symlinkPath);
713
+ }
714
+ catch {
715
+ continue;
716
+ }
717
+ const resolvedTarget = path.resolve(path.dirname(symlinkPath), linkTarget);
718
+ try {
719
+ fs.mkdirSync(resolvedTarget, { recursive: true });
720
+ const stubPkgJson = {
721
+ name: pkgName,
722
+ version: "0.0.0-stub",
723
+ description: "Empty stub created by @agent-native/core deploy build to satisfy nitro's file tracer on platforms where this optional dep is not installed.",
724
+ };
725
+ fs.writeFileSync(path.join(resolvedTarget, "package.json"), JSON.stringify(stubPkgJson, null, 2));
726
+ stubsCreated++;
727
+ }
728
+ catch {
729
+ // Best-effort — ignore failures
730
+ }
731
+ }
732
+ }
733
+ }
734
+ }
735
+ if (stubsCreated > 0) {
736
+ console.log(`[deploy] Created ${stubsCreated} stub package dir(s) for dangling optional deps (platform-specific binaries not installed on this host).`);
737
+ }
738
+ }
739
+ /**
740
+ * Build for any non-Cloudflare preset using Nitro's programmatic build API.
741
+ * Handles netlify, vercel, deno_deploy, aws-lambda, and all other targets.
742
+ */
743
+ async function buildWithNitro() {
744
+ console.log(`[deploy] Building for preset "${preset}" via Nitro...`);
745
+ // Work around pnpm + nitro:externals (nf3) bug where dangling symlinks for
746
+ // platform-specific optional deps cause realpath ENOENT during file tracing.
747
+ createDanglingOptionalDepStubs();
748
+ const { createNitro, prepare, copyPublicAssets, build: nitroBuild, } = await import("nitro/builder");
749
+ // Resolve the React Router server build so the SSR catch-all route
750
+ // can import "virtual:react-router/server-build" in production.
751
+ const rrServerBuild = path.join(cwd, "build", "server", "index.js");
752
+ // Inline the template's AGENTS.md + .agents/skills/ content into the Nitro
753
+ // bundle via the `virtual` config option. Nitro's internal `nitro:virtual`
754
+ // Rollup plugin picks this up and resolves `virtual:agents-bundle` to the
755
+ // generated ES module source. Without this, Nitro's Rolldown build (used for
756
+ // netlify, vercel, aws-lambda, node presets) can't resolve the virtual
757
+ // module that `server/agents-bundle.ts` imports — it silently falls through
758
+ // to an empty bundle and the agent gets no instructions/skills at runtime.
759
+ //
760
+ // The Vite plugin at `vite/agents-bundle-plugin.ts` handles this for the
761
+ // React Router client/server build (and cloudflare via esbuild rebundle),
762
+ // but Nitro runs its OWN build from ./server/ without Vite, so it needs its
763
+ // own virtual module registration. Both paths reuse `readAgentsBundleFromFs`
764
+ // from `server/agents-bundle.ts` to guarantee identical content.
765
+ const { readAgentsBundleFromFs } = await import("../server/agents-bundle.js");
766
+ // Resolve the workspace core (if present) up front so the bundle embeds
767
+ // enterprise-wide AGENTS.md + skills alongside the template's.
768
+ const nitroWorkspaceCore = await getWorkspaceCoreExports(cwd);
769
+ const nitroWorkspaceSource = nitroWorkspaceCore
770
+ ? {
771
+ skillsDir: nitroWorkspaceCore.skillsDir,
772
+ agentsMdPath: nitroWorkspaceCore.agentsMdPath,
773
+ rootDir: nitroWorkspaceCore.packageDir,
774
+ }
775
+ : null;
776
+ const agentsBundleModuleSource = () => {
777
+ const bundle = readAgentsBundleFromFs(cwd, nitroWorkspaceSource);
778
+ return `// AUTO-GENERATED by @agent-native/core deploy build (Nitro virtual)
779
+ // Contains the inlined AGENTS.md + .agents/skills/ content from the template,
780
+ // merged with the workspace core's AGENTS.md + skills/ when present.
781
+ const bundle = ${JSON.stringify(bundle)};
782
+ export default bundle;
783
+ `;
784
+ };
785
+ const nitro = await createNitro({
786
+ rootDir: cwd,
787
+ dev: false,
788
+ preset,
789
+ minify: true,
790
+ serverDir: "./server",
791
+ alias: fs.existsSync(rrServerBuild)
792
+ ? { "virtual:react-router/server-build": rrServerBuild }
793
+ : {},
794
+ virtual: {
795
+ "virtual:agents-bundle": agentsBundleModuleSource,
796
+ },
797
+ // For edge presets (cloudflare, deno), bundle all deps — node_modules
798
+ // aren't available at runtime. Netlify/Vercel/Node have node_modules.
799
+ ...(preset.startsWith("cloudflare") || preset.startsWith("deno")
800
+ ? { noExternals: true }
801
+ : {}),
802
+ });
803
+ await prepare(nitro);
804
+ await copyPublicAssets(nitro);
805
+ await nitroBuild(nitro);
806
+ // Copy React Router's client build into Nitro's public output dir
807
+ const clientDir = path.join(cwd, "build", "client");
808
+ const publicOutputDir = nitro.options.output.publicDir;
809
+ if (fs.existsSync(clientDir) && publicOutputDir) {
810
+ copyDir(clientDir, publicOutputDir);
811
+ console.log(`[deploy] Copied client assets to ${path.relative(cwd, publicOutputDir)}`);
812
+ }
813
+ // Resolve remaining bare npm imports by bundling them into _libs/.
814
+ // Nitro sometimes leaves small packages as externals even with noExternals.
815
+ if (preset.startsWith("cloudflare") || preset.startsWith("deno")) {
816
+ const { execFileSync } = await import("child_process");
817
+ const { createRequire } = await import("module");
818
+ const esbuildBin = (() => {
819
+ try {
820
+ const _req = createRequire(cwd + "/");
821
+ const pkg = path.dirname(_req.resolve("esbuild/package.json"));
822
+ const bin = path.join(pkg, "bin", "esbuild");
823
+ if (fs.existsSync(bin))
824
+ return bin;
825
+ }
826
+ catch { }
827
+ return "esbuild";
828
+ })();
829
+ // Scan all output files for bare npm imports
830
+ const outputDir = nitro.options.output.serverDir || path.join(cwd, "dist", "_worker.js");
831
+ const bareImports = new Set();
832
+ function scanForBareImports(dir) {
833
+ if (!fs.existsSync(dir))
834
+ return;
835
+ for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {
836
+ const p = path.join(dir, entry.name);
837
+ if (entry.isDirectory()) {
838
+ scanForBareImports(p);
839
+ continue;
840
+ }
841
+ if (!entry.name.endsWith(".mjs") && !entry.name.endsWith(".js"))
842
+ continue;
843
+ const code = fs.readFileSync(p, "utf-8");
844
+ const matches = code.matchAll(/from\s*["']([a-z@][a-z0-9._\-/]*)["']/g);
845
+ for (const m of matches) {
846
+ const mod = m[1];
847
+ if (mod.startsWith("node:"))
848
+ continue;
849
+ // Skip Node builtins that are available via nodejs_compat
850
+ const builtins = new Set([
851
+ "fs",
852
+ "path",
853
+ "os",
854
+ "crypto",
855
+ "http",
856
+ "https",
857
+ "stream",
858
+ "url",
859
+ "util",
860
+ "events",
861
+ "buffer",
862
+ "net",
863
+ "tls",
864
+ "assert",
865
+ "timers",
866
+ "child_process",
867
+ "module",
868
+ "process",
869
+ "worker_threads",
870
+ "querystring",
871
+ "zlib",
872
+ "vm",
873
+ "string_decoder",
874
+ "diagnostics_channel",
875
+ "async_hooks",
876
+ "perf_hooks",
877
+ "inspector",
878
+ ]);
879
+ if (builtins.has(mod))
880
+ continue;
881
+ bareImports.add(mod);
882
+ }
883
+ }
884
+ }
885
+ scanForBareImports(outputDir);
886
+ // For each bare import, try to bundle it as a standalone module
887
+ if (bareImports.size > 0) {
888
+ const libsDir = path.join(outputDir, "_libs");
889
+ fs.mkdirSync(libsDir, { recursive: true });
890
+ for (const mod of bareImports) {
891
+ const outFile = path.join(libsDir, `${mod.replace(/[/@]/g, "_")}.mjs`);
892
+ try {
893
+ // Try resolving from both template dir and workspace root
894
+ const nodePaths = [
895
+ path.join(cwd, "node_modules"),
896
+ path.resolve(cwd, "../../node_modules"),
897
+ ].filter((p) => fs.existsSync(p));
898
+ // Resolve the module — check workspace node_modules and pnpm store
899
+ let resolvedMod = mod;
900
+ const _require = createRequire(cwd + "/");
901
+ try {
902
+ const resolved = _require.resolve(mod);
903
+ resolvedMod = resolved;
904
+ }
905
+ catch {
906
+ // Try from workspace root
907
+ try {
908
+ const wsRequire = createRequire(path.resolve(cwd, "../../package.json"));
909
+ resolvedMod = wsRequire.resolve(mod);
910
+ }
911
+ catch {
912
+ // Will fail at esbuild
913
+ }
914
+ }
915
+ // Scan what named imports the consumer expects, then generate
916
+ // explicit re-exports to handle CJS modules properly.
917
+ const neededExports = new Set();
918
+ function findNeededExports(dir) {
919
+ if (!fs.existsSync(dir))
920
+ return;
921
+ for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {
922
+ const p = path.join(dir, entry.name);
923
+ if (entry.isDirectory()) {
924
+ findNeededExports(p);
925
+ continue;
926
+ }
927
+ if (!entry.name.endsWith(".mjs") && !entry.name.endsWith(".js"))
928
+ continue;
929
+ const code = fs.readFileSync(p, "utf-8");
930
+ // Match: import{foo as bar,baz}from"<mod>"
931
+ const escaped = mod.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
932
+ const re = new RegExp(`import\\{([^}]+)\\}from["']${escaped}["']`, "g");
933
+ for (const m2 of code.matchAll(re)) {
934
+ for (const part of m2[1].split(",")) {
935
+ const name = part
936
+ .trim()
937
+ .split(/\s+as\s+/)[0]
938
+ .trim();
939
+ if (name && /^[a-zA-Z_$]/.test(name))
940
+ neededExports.add(name);
941
+ }
942
+ }
943
+ }
944
+ }
945
+ findNeededExports(outputDir);
946
+ const entryCode = neededExports.size > 0
947
+ ? [
948
+ `import _mod from "${resolvedMod}";`,
949
+ `export default _mod;`,
950
+ ...Array.from(neededExports).map((n) => `export const ${n} = _mod.${n} ?? _mod?.default?.${n};`),
951
+ ].join("\n")
952
+ : `export * from "${resolvedMod}"; export { default } from "${resolvedMod}";`;
953
+ execFileSync(esbuildBin, [
954
+ "--bundle",
955
+ `--outfile=${outFile}`,
956
+ "--format=esm",
957
+ "--platform=neutral",
958
+ "--target=es2022",
959
+ "--external:node:*",
960
+ ], {
961
+ input: entryCode,
962
+ cwd,
963
+ stdio: ["pipe", "pipe", "pipe"],
964
+ });
965
+ // Rewrite imports in all files to point to the bundled module
966
+ function rewriteImports(dir) {
967
+ if (!fs.existsSync(dir))
968
+ return;
969
+ for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {
970
+ const p = path.join(dir, entry.name);
971
+ if (entry.isDirectory()) {
972
+ rewriteImports(p);
973
+ continue;
974
+ }
975
+ if (!entry.name.endsWith(".mjs") && !entry.name.endsWith(".js"))
976
+ continue;
977
+ let code = fs.readFileSync(p, "utf-8");
978
+ const relPath = path
979
+ .relative(path.dirname(p), outFile)
980
+ .replace(/\\/g, "/");
981
+ const importPath = relPath.startsWith(".")
982
+ ? relPath
983
+ : "./" + relPath;
984
+ const re = new RegExp(`from["']${mod.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")}["']`, "g");
985
+ if (re.test(code)) {
986
+ code = code.replace(re, `from"${importPath}"`);
987
+ fs.writeFileSync(p, code);
988
+ }
989
+ }
990
+ }
991
+ rewriteImports(outputDir);
992
+ console.log(`[deploy] Bundled external: ${mod}`);
993
+ }
994
+ catch {
995
+ console.warn(`[deploy] Could not bundle: ${mod} (may not be needed at runtime)`);
996
+ }
997
+ }
998
+ }
999
+ }
1000
+ // Cloudflare-specific post-build patches
1001
+ if (preset.startsWith("cloudflare")) {
1002
+ const serverDir2 = nitro.options.output.serverDir;
1003
+ const scanDirs = [serverDir2];
1004
+ if (serverDir2) {
1005
+ const chunksDir = path.join(serverDir2, "_chunks");
1006
+ const libsDir = path.join(serverDir2, "_libs");
1007
+ if (fs.existsSync(chunksDir))
1008
+ scanDirs.push(chunksDir);
1009
+ if (fs.existsSync(libsDir))
1010
+ scanDirs.push(libsDir);
1011
+ }
1012
+ for (const scanDir of scanDirs) {
1013
+ if (!scanDir || !fs.existsSync(scanDir))
1014
+ continue;
1015
+ for (const file of fs.readdirSync(scanDir)) {
1016
+ if (!file.endsWith(".mjs") && !file.endsWith(".js"))
1017
+ continue;
1018
+ const filePath = path.join(scanDir, file);
1019
+ let code = fs.readFileSync(filePath, "utf-8");
1020
+ let changed = false;
1021
+ // 1. Rewrite bare Node.js imports to node: prefixed.
1022
+ // CF Workers requires the node: prefix for built-in modules.
1023
+ const NODE_BUILTINS = [
1024
+ "fs",
1025
+ "path",
1026
+ "os",
1027
+ "crypto",
1028
+ "http",
1029
+ "https",
1030
+ "stream",
1031
+ "url",
1032
+ "util",
1033
+ "events",
1034
+ "buffer",
1035
+ "querystring",
1036
+ "zlib",
1037
+ "net",
1038
+ "tls",
1039
+ "assert",
1040
+ "timers",
1041
+ "child_process",
1042
+ "module",
1043
+ "process",
1044
+ "worker_threads",
1045
+ "string_decoder",
1046
+ "diagnostics_channel",
1047
+ "async_hooks",
1048
+ "perf_hooks",
1049
+ "inspector",
1050
+ "vm",
1051
+ ];
1052
+ for (const mod of NODE_BUILTINS) {
1053
+ // Match: from"fs" or from "fs" (but not from"node:fs")
1054
+ const re = new RegExp(`from\\s*["']${mod}["']`, "g");
1055
+ if (re.test(code)) {
1056
+ code = code.replace(re, `from"node:${mod}"`);
1057
+ changed = true;
1058
+ }
1059
+ }
1060
+ // 2. Patch import.meta.url for createRequire().
1061
+ // React Router's server build uses createRequire(import.meta.url)
1062
+ // but import.meta.url is undefined on CF Workers.
1063
+ if (code.includes("import.meta.url")) {
1064
+ code = code.replace(/import\.meta\.url/g, '"file:///worker.mjs"');
1065
+ changed = true;
1066
+ }
1067
+ // 3. Patch setInterval/setTimeout at global scope.
1068
+ // CF Workers disallows timers in global scope.
1069
+ if (code.includes("setInterval") && !code.includes("__timer_shim__")) {
1070
+ const shim = "/* __timer_shim__ */" +
1071
+ "var __origSetInterval=globalThis.setInterval;" +
1072
+ "globalThis.setInterval=function(){return{unref(){},ref(){},close(){}}};";
1073
+ const restore = ";(function(){if(typeof __origSetInterval!=='undefined')globalThis.setInterval=__origSetInterval})();";
1074
+ code = shim + code + "\n" + restore;
1075
+ changed = true;
1076
+ }
1077
+ if (changed)
1078
+ fs.writeFileSync(filePath, code);
1079
+ }
1080
+ }
1081
+ // 3. Create stub modules in _libs/ for native deps that Nitro's rolldown
1082
+ // bundler references but can't resolve on CF Workers, and rewrite
1083
+ // bare imports to point to the stub files.
1084
+ const libsDir2 = path.join(serverDir2 || path.join(cwd, "dist", "_worker.js"), "_libs");
1085
+ if (fs.existsSync(libsDir2)) {
1086
+ const NATIVE_STUBS = ["better-sqlite3", "node-pty", "cron-parser"];
1087
+ for (const mod of NATIVE_STUBS) {
1088
+ const libFiles = fs
1089
+ .readdirSync(libsDir2)
1090
+ .filter((f) => f.endsWith(".mjs"));
1091
+ const referencingFiles = [];
1092
+ for (const f of libFiles) {
1093
+ const filePath = path.join(libsDir2, f);
1094
+ const content = fs.readFileSync(filePath, "utf-8");
1095
+ if (content.includes(`"${mod}"`) || content.includes(`'${mod}'`)) {
1096
+ referencingFiles.push(filePath);
1097
+ }
1098
+ }
1099
+ if (referencingFiles.length === 0)
1100
+ continue;
1101
+ // Create a stub _libs/<mod>.mjs that exports empty defaults
1102
+ const stubName = mod.replace(/[/@]/g, "__") + ".mjs";
1103
+ const stubPath = path.join(libsDir2, stubName);
1104
+ if (!fs.existsSync(stubPath)) {
1105
+ fs.writeFileSync(stubPath, `export default {}; export const watch = () => ({ close() {} });\n`);
1106
+ console.log(`[deploy] Created stub for _libs/${stubName}`);
1107
+ }
1108
+ // Rewrite bare imports in _libs/ and _chunks/ to use the stub
1109
+ const escaped = mod.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
1110
+ const importRe = new RegExp(`(from\\s*["'])${escaped}(["'])`, "g");
1111
+ // Scan _libs/ files
1112
+ for (const filePath of referencingFiles) {
1113
+ let code = fs.readFileSync(filePath, "utf-8");
1114
+ if (importRe.test(code)) {
1115
+ code = code.replace(importRe, `$1./${stubName}$2`);
1116
+ fs.writeFileSync(filePath, code);
1117
+ console.log(`[deploy] Rewrote ${mod} imports in _libs/${path.basename(filePath)}`);
1118
+ }
1119
+ }
1120
+ // Also scan _chunks/ files (they import native deps too)
1121
+ const chunksDir2 = path.join(serverDir2 || path.join(cwd, "dist", "_worker.js"), "_chunks");
1122
+ if (fs.existsSync(chunksDir2)) {
1123
+ for (const f of fs
1124
+ .readdirSync(chunksDir2)
1125
+ .filter((f) => f.endsWith(".mjs") || f.endsWith(".js"))) {
1126
+ const filePath = path.join(chunksDir2, f);
1127
+ let code = fs.readFileSync(filePath, "utf-8");
1128
+ if (importRe.test(code)) {
1129
+ // From _chunks/, the stub is at ../_libs/<stubName>
1130
+ code = code.replace(importRe, `$1../_libs/${stubName}$2`);
1131
+ fs.writeFileSync(filePath, code);
1132
+ console.log(`[deploy] Rewrote ${mod} imports in _chunks/${f}`);
1133
+ }
1134
+ }
1135
+ }
1136
+ }
1137
+ }
1138
+ console.log("[deploy] Patched bare Node imports, timer calls, and route finder for CF Workers");
1139
+ }
1140
+ await nitro.close();
1141
+ console.log(`[deploy] Nitro build complete for preset "${preset}".`);
1142
+ }
437
1143
  // Main
438
- const SUPPORTED_PRESETS = ["cloudflare_pages"];
439
1144
  if (preset === "node") {
440
- // No post-processing needed for Node.js target
441
1145
  process.exit(0);
442
1146
  }
443
- if (!SUPPORTED_PRESETS.includes(preset)) {
444
- console.error(`[deploy] Unsupported preset: ${preset}. Supported: ${SUPPORTED_PRESETS.join(", ")}`);
445
- process.exit(1);
446
- }
447
1147
  console.log(`[deploy] Building for ${preset}...`);
448
1148
  switch (preset) {
449
1149
  case "cloudflare_pages":
1150
+ case "cloudflare-pages":
1151
+ // Cloudflare Workers require a single-file bundle that wrangler can deploy.
1152
+ // Nitro's native presets produce split chunks that wrangler can't upload
1153
+ // as multi-module Workers. Use the custom esbuild-based bundler.
450
1154
  await buildCloudflarePages();
451
1155
  break;
1156
+ default:
1157
+ // All other presets (netlify, vercel, deno_deploy, aws-lambda, etc.)
1158
+ // are handled natively by Nitro's build API.
1159
+ await buildWithNitro();
1160
+ break;
452
1161
  }
453
1162
  //# sourceMappingURL=build.js.map