@agent-native/core 0.4.1 → 0.4.3

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 (394) hide show
  1. package/README.md +31 -0
  2. package/dist/adapters/convex/adapter.d.ts +24 -0
  3. package/dist/adapters/convex/adapter.d.ts.map +1 -0
  4. package/dist/adapters/convex/adapter.js +125 -0
  5. package/dist/adapters/convex/adapter.js.map +1 -0
  6. package/dist/adapters/convex/index.d.ts +4 -0
  7. package/dist/adapters/convex/index.d.ts.map +1 -0
  8. package/dist/adapters/convex/index.js +3 -0
  9. package/dist/adapters/convex/index.js.map +1 -0
  10. package/dist/adapters/drizzle/adapter.d.ts +36 -0
  11. package/dist/adapters/drizzle/adapter.d.ts.map +1 -0
  12. package/dist/adapters/drizzle/adapter.js +210 -0
  13. package/dist/adapters/drizzle/adapter.js.map +1 -0
  14. package/dist/adapters/drizzle/index.d.ts +3 -0
  15. package/dist/adapters/drizzle/index.d.ts.map +1 -0
  16. package/dist/adapters/drizzle/index.js +3 -0
  17. package/dist/adapters/drizzle/index.js.map +1 -0
  18. package/dist/adapters/drizzle/schema.d.ts +146 -0
  19. package/dist/adapters/drizzle/schema.d.ts.map +1 -0
  20. package/dist/adapters/drizzle/schema.js +20 -0
  21. package/dist/adapters/drizzle/schema.js.map +1 -0
  22. package/dist/adapters/firestore/adapter.d.ts +3 -2
  23. package/dist/adapters/firestore/adapter.d.ts.map +1 -1
  24. package/dist/adapters/firestore/adapter.js +23 -6
  25. package/dist/adapters/firestore/adapter.js.map +1 -1
  26. package/dist/adapters/supabase/adapter.d.ts +2 -1
  27. package/dist/adapters/supabase/adapter.d.ts.map +1 -1
  28. package/dist/adapters/supabase/adapter.js +4 -1
  29. package/dist/adapters/supabase/adapter.js.map +1 -1
  30. package/dist/adapters/sync/config.d.ts +22 -2
  31. package/dist/adapters/sync/config.d.ts.map +1 -1
  32. package/dist/adapters/sync/config.js +175 -16
  33. package/dist/adapters/sync/config.js.map +1 -1
  34. package/dist/adapters/sync/create-file-sync.d.ts +32 -0
  35. package/dist/adapters/sync/create-file-sync.d.ts.map +1 -0
  36. package/dist/adapters/sync/create-file-sync.js +218 -0
  37. package/dist/adapters/sync/create-file-sync.js.map +1 -0
  38. package/dist/adapters/sync/file-sync.d.ts +40 -6
  39. package/dist/adapters/sync/file-sync.d.ts.map +1 -1
  40. package/dist/adapters/sync/file-sync.js +442 -97
  41. package/dist/adapters/sync/file-sync.js.map +1 -1
  42. package/dist/adapters/sync/index.d.ts +3 -2
  43. package/dist/adapters/sync/index.d.ts.map +1 -1
  44. package/dist/adapters/sync/index.js +3 -1
  45. package/dist/adapters/sync/index.js.map +1 -1
  46. package/dist/adapters/sync/merge.js +3 -2
  47. package/dist/adapters/sync/merge.js.map +1 -1
  48. package/dist/adapters/sync/types.d.ts +36 -2
  49. package/dist/adapters/sync/types.d.ts.map +1 -1
  50. package/dist/adapters/sync/types.js +22 -1
  51. package/dist/adapters/sync/types.js.map +1 -1
  52. package/dist/agent/index.d.ts +3 -0
  53. package/dist/agent/index.d.ts.map +1 -0
  54. package/dist/agent/index.js +2 -0
  55. package/dist/agent/index.js.map +1 -0
  56. package/dist/agent/production-agent.d.ts +16 -0
  57. package/dist/agent/production-agent.d.ts.map +1 -0
  58. package/dist/agent/production-agent.js +158 -0
  59. package/dist/agent/production-agent.js.map +1 -0
  60. package/dist/agent/types.d.ts +40 -0
  61. package/dist/agent/types.d.ts.map +1 -0
  62. package/dist/agent/types.js +2 -0
  63. package/dist/agent/types.js.map +1 -0
  64. package/dist/application-state/emitter.d.ts +10 -0
  65. package/dist/application-state/emitter.d.ts.map +1 -0
  66. package/dist/application-state/emitter.js +18 -0
  67. package/dist/application-state/emitter.js.map +1 -0
  68. package/dist/application-state/handlers.d.ts +20 -0
  69. package/dist/application-state/handlers.d.ts.map +1 -0
  70. package/dist/application-state/handlers.js +94 -0
  71. package/dist/application-state/handlers.js.map +1 -0
  72. package/dist/application-state/index.d.ts +5 -0
  73. package/dist/application-state/index.d.ts.map +1 -0
  74. package/dist/application-state/index.js +9 -0
  75. package/dist/application-state/index.js.map +1 -0
  76. package/dist/application-state/script-helpers.d.ts +17 -0
  77. package/dist/application-state/script-helpers.d.ts.map +1 -0
  78. package/dist/application-state/script-helpers.js +28 -0
  79. package/dist/application-state/script-helpers.js.map +1 -0
  80. package/dist/application-state/store.d.ts +9 -0
  81. package/dist/application-state/store.d.ts.map +1 -0
  82. package/dist/application-state/store.js +93 -0
  83. package/dist/application-state/store.js.map +1 -0
  84. package/dist/cli/create.d.ts.map +1 -1
  85. package/dist/cli/create.js +40 -24
  86. package/dist/cli/create.js.map +1 -1
  87. package/dist/cli/index.js +37 -11
  88. package/dist/cli/index.js.map +1 -1
  89. package/dist/client/AgentPanel.d.ts +53 -0
  90. package/dist/client/AgentPanel.d.ts.map +1 -0
  91. package/dist/client/AgentPanel.js +70 -0
  92. package/dist/client/AgentPanel.js.map +1 -0
  93. package/dist/client/AssistantChat.d.ts +27 -0
  94. package/dist/client/AssistantChat.d.ts.map +1 -0
  95. package/dist/client/AssistantChat.js +165 -0
  96. package/dist/client/AssistantChat.js.map +1 -0
  97. package/dist/client/ErrorBoundary.d.ts +4 -0
  98. package/dist/client/ErrorBoundary.d.ts.map +1 -0
  99. package/dist/client/ErrorBoundary.js +22 -0
  100. package/dist/client/ErrorBoundary.js.map +1 -0
  101. package/dist/client/MultiTabAssistantChat.d.ts +4 -0
  102. package/dist/client/MultiTabAssistantChat.d.ts.map +1 -0
  103. package/dist/client/MultiTabAssistantChat.js +125 -0
  104. package/dist/client/MultiTabAssistantChat.js.map +1 -0
  105. package/dist/client/PoweredByBadge.d.ts +14 -0
  106. package/dist/client/PoweredByBadge.d.ts.map +1 -0
  107. package/dist/client/PoweredByBadge.js +60 -0
  108. package/dist/client/PoweredByBadge.js.map +1 -0
  109. package/dist/client/ProductionAgentPanel.d.ts +6 -0
  110. package/dist/client/ProductionAgentPanel.d.ts.map +1 -0
  111. package/dist/client/ProductionAgentPanel.js +6 -0
  112. package/dist/client/ProductionAgentPanel.js.map +1 -0
  113. package/dist/client/Turnstile.d.ts +35 -0
  114. package/dist/client/Turnstile.d.ts.map +1 -0
  115. package/dist/client/Turnstile.js +77 -0
  116. package/dist/client/Turnstile.js.map +1 -0
  117. package/dist/client/agent-chat-adapter.d.ts +10 -0
  118. package/dist/client/agent-chat-adapter.d.ts.map +1 -0
  119. package/dist/client/agent-chat-adapter.js +235 -0
  120. package/dist/client/agent-chat-adapter.js.map +1 -0
  121. package/dist/client/agent-chat.d.ts +9 -1
  122. package/dist/client/agent-chat.d.ts.map +1 -1
  123. package/dist/client/agent-chat.js +11 -1
  124. package/dist/client/agent-chat.js.map +1 -1
  125. package/dist/client/index.d.ts +13 -1
  126. package/dist/client/index.d.ts.map +1 -1
  127. package/dist/client/index.js +14 -1
  128. package/dist/client/index.js.map +1 -1
  129. package/dist/client/terminal/AgentTerminal.d.ts +35 -0
  130. package/dist/client/terminal/AgentTerminal.d.ts.map +1 -0
  131. package/dist/client/terminal/AgentTerminal.js +346 -0
  132. package/dist/client/terminal/AgentTerminal.js.map +1 -0
  133. package/dist/client/terminal/index.d.ts +7 -0
  134. package/dist/client/terminal/index.d.ts.map +1 -0
  135. package/dist/client/terminal/index.js +7 -0
  136. package/dist/client/terminal/index.js.map +1 -0
  137. package/dist/client/use-agent-chat.d.ts +1 -1
  138. package/dist/client/use-agent-chat.d.ts.map +1 -1
  139. package/dist/client/use-agent-chat.js +1 -1
  140. package/dist/client/use-agent-chat.js.map +1 -1
  141. package/dist/client/use-file-sync-status.d.ts +21 -0
  142. package/dist/client/use-file-sync-status.d.ts.map +1 -0
  143. package/dist/client/use-file-sync-status.js +65 -0
  144. package/dist/client/use-file-sync-status.js.map +1 -0
  145. package/dist/client/use-session.d.ts +16 -0
  146. package/dist/client/use-session.d.ts.map +1 -0
  147. package/dist/client/use-session.js +49 -0
  148. package/dist/client/use-session.js.map +1 -0
  149. package/dist/client/useProductionAgent.d.ts +23 -0
  150. package/dist/client/useProductionAgent.d.ts.map +1 -0
  151. package/dist/client/useProductionAgent.js +137 -0
  152. package/dist/client/useProductionAgent.js.map +1 -0
  153. package/dist/db/create-get-db.d.ts +3 -0
  154. package/dist/db/create-get-db.d.ts.map +1 -0
  155. package/dist/db/create-get-db.js +18 -0
  156. package/dist/db/create-get-db.js.map +1 -0
  157. package/dist/db/index.d.ts +23 -0
  158. package/dist/db/index.d.ts.map +1 -0
  159. package/dist/db/index.js +19 -0
  160. package/dist/db/index.js.map +1 -0
  161. package/dist/db/migrations.d.ts +7 -0
  162. package/dist/db/migrations.d.ts.map +1 -0
  163. package/dist/db/migrations.js +35 -0
  164. package/dist/db/migrations.js.map +1 -0
  165. package/dist/index.browser.d.ts +1 -1
  166. package/dist/index.browser.d.ts.map +1 -1
  167. package/dist/index.browser.js +1 -1
  168. package/dist/index.browser.js.map +1 -1
  169. package/dist/index.d.ts +5 -2
  170. package/dist/index.d.ts.map +1 -1
  171. package/dist/index.js +6 -2
  172. package/dist/index.js.map +1 -1
  173. package/dist/oauth-tokens/index.d.ts +2 -0
  174. package/dist/oauth-tokens/index.d.ts.map +1 -0
  175. package/dist/oauth-tokens/index.js +2 -0
  176. package/dist/oauth-tokens/index.js.map +1 -0
  177. package/dist/oauth-tokens/store.d.ts +9 -0
  178. package/dist/oauth-tokens/store.d.ts.map +1 -0
  179. package/dist/oauth-tokens/store.js +90 -0
  180. package/dist/oauth-tokens/store.js.map +1 -0
  181. package/dist/router/index.d.ts +3 -0
  182. package/dist/router/index.d.ts.map +1 -0
  183. package/dist/router/index.js +5 -0
  184. package/dist/router/index.js.map +1 -0
  185. package/dist/scripts/core-scripts.d.ts +10 -0
  186. package/dist/scripts/core-scripts.d.ts.map +1 -0
  187. package/dist/scripts/core-scripts.js +15 -0
  188. package/dist/scripts/core-scripts.js.map +1 -0
  189. package/dist/scripts/db/exec.d.ts +11 -0
  190. package/dist/scripts/db/exec.d.ts.map +1 -0
  191. package/dist/scripts/db/exec.js +101 -0
  192. package/dist/scripts/db/exec.js.map +1 -0
  193. package/dist/scripts/db/index.d.ts +2 -0
  194. package/dist/scripts/db/index.d.ts.map +1 -0
  195. package/dist/scripts/db/index.js +6 -0
  196. package/dist/scripts/db/index.js.map +1 -0
  197. package/dist/scripts/db/query.d.ts +10 -0
  198. package/dist/scripts/db/query.d.ts.map +1 -0
  199. package/dist/scripts/db/query.js +112 -0
  200. package/dist/scripts/db/query.js.map +1 -0
  201. package/dist/scripts/db/schema.d.ts +12 -0
  202. package/dist/scripts/db/schema.d.ts.map +1 -0
  203. package/dist/scripts/db/schema.js +140 -0
  204. package/dist/scripts/db/schema.js.map +1 -0
  205. package/dist/scripts/dev/index.d.ts +15 -0
  206. package/dist/scripts/dev/index.d.ts.map +1 -0
  207. package/dist/scripts/dev/index.js +118 -0
  208. package/dist/scripts/dev/index.js.map +1 -0
  209. package/dist/scripts/dev/list-files.d.ts +5 -0
  210. package/dist/scripts/dev/list-files.d.ts.map +1 -0
  211. package/dist/scripts/dev/list-files.js +102 -0
  212. package/dist/scripts/dev/list-files.js.map +1 -0
  213. package/dist/scripts/dev/read-file.d.ts +5 -0
  214. package/dist/scripts/dev/read-file.d.ts.map +1 -0
  215. package/dist/scripts/dev/read-file.js +68 -0
  216. package/dist/scripts/dev/read-file.js.map +1 -0
  217. package/dist/scripts/dev/search-files.d.ts +5 -0
  218. package/dist/scripts/dev/search-files.d.ts.map +1 -0
  219. package/dist/scripts/dev/search-files.js +133 -0
  220. package/dist/scripts/dev/search-files.js.map +1 -0
  221. package/dist/scripts/dev/shell.d.ts +5 -0
  222. package/dist/scripts/dev/shell.d.ts.map +1 -0
  223. package/dist/scripts/dev/shell.js +65 -0
  224. package/dist/scripts/dev/shell.js.map +1 -0
  225. package/dist/scripts/dev/write-file.d.ts +5 -0
  226. package/dist/scripts/dev/write-file.d.ts.map +1 -0
  227. package/dist/scripts/dev/write-file.js +50 -0
  228. package/dist/scripts/dev/write-file.js.map +1 -0
  229. package/dist/scripts/index.d.ts +5 -0
  230. package/dist/scripts/index.d.ts.map +1 -1
  231. package/dist/scripts/index.js +5 -0
  232. package/dist/scripts/index.js.map +1 -1
  233. package/dist/scripts/runner.d.ts +3 -0
  234. package/dist/scripts/runner.d.ts.map +1 -1
  235. package/dist/scripts/runner.js +53 -14
  236. package/dist/scripts/runner.js.map +1 -1
  237. package/dist/server/agent-chat-plugin.d.ts +43 -0
  238. package/dist/server/agent-chat-plugin.d.ts.map +1 -0
  239. package/dist/server/agent-chat-plugin.js +92 -0
  240. package/dist/server/agent-chat-plugin.js.map +1 -0
  241. package/dist/server/auth-plugin.d.ts +6 -0
  242. package/dist/server/auth-plugin.d.ts.map +1 -0
  243. package/dist/server/auth-plugin.js +8 -0
  244. package/dist/server/auth-plugin.js.map +1 -0
  245. package/dist/server/auth.d.ts +75 -0
  246. package/dist/server/auth.d.ts.map +1 -0
  247. package/dist/server/auth.js +499 -0
  248. package/dist/server/auth.js.map +1 -0
  249. package/dist/server/captcha.d.ts +12 -0
  250. package/dist/server/captcha.d.ts.map +1 -0
  251. package/dist/server/captcha.js +43 -0
  252. package/dist/server/captcha.js.map +1 -0
  253. package/dist/server/create-server.d.ts +20 -10
  254. package/dist/server/create-server.d.ts.map +1 -1
  255. package/dist/server/create-server.js +48 -28
  256. package/dist/server/create-server.js.map +1 -1
  257. package/dist/server/default-watcher.d.ts +17 -0
  258. package/dist/server/default-watcher.d.ts.map +1 -0
  259. package/dist/server/default-watcher.js +37 -0
  260. package/dist/server/default-watcher.js.map +1 -0
  261. package/dist/server/file-sync-plugin.d.ts +7 -0
  262. package/dist/server/file-sync-plugin.d.ts.map +1 -0
  263. package/dist/server/file-sync-plugin.js +38 -0
  264. package/dist/server/file-sync-plugin.js.map +1 -0
  265. package/dist/server/google-auth-plugin.d.ts +22 -0
  266. package/dist/server/google-auth-plugin.d.ts.map +1 -0
  267. package/dist/server/google-auth-plugin.js +122 -0
  268. package/dist/server/google-auth-plugin.js.map +1 -0
  269. package/dist/server/index.d.ts +13 -2
  270. package/dist/server/index.d.ts.map +1 -1
  271. package/dist/server/index.js +14 -2
  272. package/dist/server/index.js.map +1 -1
  273. package/dist/server/missing-key.d.ts +9 -5
  274. package/dist/server/missing-key.d.ts.map +1 -1
  275. package/dist/server/missing-key.js +12 -7
  276. package/dist/server/missing-key.js.map +1 -1
  277. package/dist/server/sse.d.ts +18 -8
  278. package/dist/server/sse.d.ts.map +1 -1
  279. package/dist/server/sse.js +90 -19
  280. package/dist/server/sse.js.map +1 -1
  281. package/dist/settings/handlers.d.ts +9 -0
  282. package/dist/settings/handlers.d.ts.map +1 -0
  283. package/dist/settings/handlers.js +29 -0
  284. package/dist/settings/handlers.js.map +1 -0
  285. package/dist/settings/index.d.ts +5 -0
  286. package/dist/settings/index.d.ts.map +1 -0
  287. package/dist/settings/index.js +9 -0
  288. package/dist/settings/index.js.map +1 -0
  289. package/dist/settings/script-helpers.d.ts +9 -0
  290. package/dist/settings/script-helpers.d.ts.map +1 -0
  291. package/dist/settings/script-helpers.js +16 -0
  292. package/dist/settings/script-helpers.js.map +1 -0
  293. package/dist/settings/store.d.ts +7 -0
  294. package/dist/settings/store.d.ts.map +1 -0
  295. package/dist/settings/store.js +88 -0
  296. package/dist/settings/store.js.map +1 -0
  297. package/dist/settings/user-settings.d.ts +21 -0
  298. package/dist/settings/user-settings.d.ts.map +1 -0
  299. package/dist/settings/user-settings.js +35 -0
  300. package/dist/settings/user-settings.js.map +1 -0
  301. package/dist/tailwind.preset.js +1 -1
  302. package/dist/tailwind.preset.js.map +1 -1
  303. package/dist/terminal/cli-registry.d.ts +16 -0
  304. package/dist/terminal/cli-registry.d.ts.map +1 -0
  305. package/dist/terminal/cli-registry.js +42 -0
  306. package/dist/terminal/cli-registry.js.map +1 -0
  307. package/dist/terminal/index.d.ts +9 -0
  308. package/dist/terminal/index.d.ts.map +1 -0
  309. package/dist/terminal/index.js +9 -0
  310. package/dist/terminal/index.js.map +1 -0
  311. package/dist/terminal/pty-server.d.ts +31 -0
  312. package/dist/terminal/pty-server.d.ts.map +1 -0
  313. package/dist/terminal/pty-server.js +252 -0
  314. package/dist/terminal/pty-server.js.map +1 -0
  315. package/dist/terminal/terminal-plugin.d.ts +23 -0
  316. package/dist/terminal/terminal-plugin.d.ts.map +1 -0
  317. package/dist/terminal/terminal-plugin.js +90 -0
  318. package/dist/terminal/terminal-plugin.js.map +1 -0
  319. package/dist/vite/client.d.ts +28 -5
  320. package/dist/vite/client.d.ts.map +1 -1
  321. package/dist/vite/client.js +55 -16
  322. package/dist/vite/client.js.map +1 -1
  323. package/dist/vite/dev-api-server.d.ts +10 -0
  324. package/dist/vite/dev-api-server.d.ts.map +1 -0
  325. package/dist/vite/dev-api-server.js +160 -0
  326. package/dist/vite/dev-api-server.js.map +1 -0
  327. package/dist/vite/index.d.ts +2 -3
  328. package/dist/vite/index.d.ts.map +1 -1
  329. package/dist/vite/index.js +2 -3
  330. package/dist/vite/index.js.map +1 -1
  331. package/package.json +74 -19
  332. package/src/templates/default/.agents/skills/create-skill/SKILL.md +1 -1
  333. package/src/templates/default/.agents/skills/delegate-to-agent/SKILL.md +3 -3
  334. package/src/templates/default/.agents/skills/files-as-database/SKILL.md +82 -63
  335. package/src/templates/default/.agents/skills/frontend-design/SKILL.md +2 -2
  336. package/src/templates/default/.agents/skills/scripts/SKILL.md +20 -17
  337. package/src/templates/default/.agents/skills/self-modifying-code/SKILL.md +2 -2
  338. package/src/templates/default/.agents/skills/sse-file-watcher/SKILL.md +49 -64
  339. package/src/templates/default/.ignore +0 -0
  340. package/src/templates/default/AGENTS.md +129 -28
  341. package/src/templates/default/_gitignore +9 -5
  342. package/src/templates/default/app/entry.client.tsx +4 -0
  343. package/src/templates/default/app/entry.server.tsx +55 -0
  344. package/src/templates/default/app/global.css +95 -0
  345. package/src/templates/default/app/root.tsx +95 -0
  346. package/src/templates/default/app/routes/_index.tsx +62 -0
  347. package/src/templates/default/app/routes.ts +4 -0
  348. package/src/templates/default/app/vite-env.d.ts +6 -0
  349. package/src/templates/default/application-state/.gitkeep +0 -0
  350. package/src/templates/default/components.json +1 -1
  351. package/src/templates/default/data/sync-config.json +1 -0
  352. package/src/templates/default/package.json +7 -8
  353. package/src/templates/default/react-router.config.ts +6 -0
  354. package/src/templates/default/scripts/run.ts +1 -8
  355. package/src/templates/default/server/plugins/agent-chat.ts +1 -0
  356. package/src/templates/default/server/plugins/auth.ts +1 -0
  357. package/src/templates/default/server/plugins/file-sync.ts +1 -0
  358. package/src/templates/default/server/plugins/terminal.ts +1 -0
  359. package/src/templates/default/server/routes/[...page].get.ts +12 -0
  360. package/src/templates/default/server/routes/api/events.get.ts +3 -0
  361. package/src/templates/default/server/routes/api/file-sync/status.get.ts +4 -0
  362. package/src/templates/default/server/routes/api/hello.get.ts +5 -0
  363. package/src/templates/default/tailwind.config.ts +1 -1
  364. package/src/templates/default/tsconfig.json +9 -1
  365. package/src/templates/default/vite.config.ts +4 -1
  366. package/tsconfig.base.json +5 -3
  367. package/dist/adapters/neon/adapter.d.ts +0 -28
  368. package/dist/adapters/neon/adapter.d.ts.map +0 -1
  369. package/dist/adapters/neon/adapter.js +0 -135
  370. package/dist/adapters/neon/adapter.js.map +0 -1
  371. package/dist/adapters/neon/index.d.ts +0 -3
  372. package/dist/adapters/neon/index.d.ts.map +0 -1
  373. package/dist/adapters/neon/index.js +0 -3
  374. package/dist/adapters/neon/index.js.map +0 -1
  375. package/dist/server/production.d.ts +0 -18
  376. package/dist/server/production.d.ts.map +0 -1
  377. package/dist/server/production.js +0 -37
  378. package/dist/server/production.js.map +0 -1
  379. package/dist/vite/express-plugin.d.ts +0 -14
  380. package/dist/vite/express-plugin.d.ts.map +0 -1
  381. package/dist/vite/express-plugin.js +0 -53
  382. package/dist/vite/express-plugin.js.map +0 -1
  383. package/dist/vite/server.d.ts +0 -21
  384. package/dist/vite/server.d.ts.map +0 -1
  385. package/dist/vite/server.js +0 -68
  386. package/dist/vite/server.js.map +0 -1
  387. package/src/templates/default/client/App.tsx +0 -56
  388. package/src/templates/default/client/global.css +0 -75
  389. package/src/templates/default/client/vite-env.d.ts +0 -1
  390. package/src/templates/default/index.html +0 -14
  391. package/src/templates/default/server/index.ts +0 -22
  392. package/src/templates/default/server/node-build.ts +0 -4
  393. package/src/templates/default/vite.config.server.ts +0 -3
  394. /package/src/templates/default/{client → app}/lib/utils.ts +0 -0
@@ -0,0 +1,346 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ /**
3
+ * AgentTerminal — Embeddable CLI terminal component
4
+ *
5
+ * Renders an xterm.js terminal connected to a PTY WebSocket server.
6
+ * When running inside a harness, renders nothing (the harness manages the terminal).
7
+ *
8
+ * Usage:
9
+ * import { AgentTerminal } from "@agent-native/core/terminal";
10
+ * <AgentTerminal className="w-full h-[400px]" />
11
+ */
12
+ import { useRef, useEffect, useState, } from "react";
13
+ import { getHarnessOrigin } from "../harness.js";
14
+ // Inject xterm CSS once
15
+ let cssInjected = false;
16
+ function injectXtermCss() {
17
+ if (cssInjected || typeof document === "undefined")
18
+ return;
19
+ cssInjected = true;
20
+ const style = document.createElement("style");
21
+ style.textContent = `
22
+ .xterm { position: relative; user-select: none; }
23
+ .xterm.focus, .xterm:focus { outline: none; }
24
+ .xterm .xterm-helpers { position: absolute; top: 0; z-index: 5; }
25
+ .xterm .xterm-helper-textarea {
26
+ padding: 0; border: 0; margin: 0;
27
+ position: absolute; opacity: 0; left: -9999em; top: 0;
28
+ width: 0; height: 0; z-index: -5;
29
+ white-space: nowrap; overflow: hidden; resize: none;
30
+ }
31
+ .xterm .composition-view { display: none; position: absolute; white-space: nowrap; z-index: 1; }
32
+ .xterm .composition-view.active { display: block; }
33
+ .xterm .xterm-viewport {
34
+ background-color: #000; overflow-y: scroll;
35
+ cursor: default; position: absolute; right: 0; left: 0; top: 0; bottom: 0;
36
+ }
37
+ .xterm .xterm-screen { position: relative; }
38
+ .xterm .xterm-screen canvas { position: absolute; left: 0; top: 0; }
39
+ .xterm .xterm-scroll-area { visibility: hidden; }
40
+ .xterm-char-measure-element {
41
+ display: inline-block; visibility: hidden; position: absolute; top: 0; left: -9999em;
42
+ line-height: normal;
43
+ }
44
+ .xterm.enable-mouse-events { cursor: default; }
45
+ .xterm.xterm-cursor-pointer, .xterm .xterm-cursor-pointer { cursor: pointer; }
46
+ .xterm.column-select.focus { cursor: crosshair; }
47
+ .xterm .xterm-accessibility:not(.debug),
48
+ .xterm .xterm-message { position: absolute; left: 0; top: 0; bottom: 0; right: 0; z-index: 10; color: transparent; pointer-events: none; }
49
+ .xterm .xterm-accessibility-tree:not(.debug) *::selection { color: transparent; }
50
+ .xterm .xterm-accessibility-tree { user-select: text; white-space: pre; }
51
+ .xterm .live-region { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
52
+ .xterm .xterm-dim { opacity: 0.5; }
53
+ .xterm .xterm-underline-1 { text-decoration: underline; }
54
+ .xterm .xterm-underline-2 { text-decoration: double underline; }
55
+ .xterm .xterm-underline-3 { text-decoration: wavy underline; }
56
+ .xterm .xterm-underline-4 { text-decoration: dotted underline; }
57
+ .xterm .xterm-underline-5 { text-decoration: dashed underline; }
58
+ .xterm .xterm-overline { text-decoration: overline; }
59
+ .xterm .xterm-strikethrough { text-decoration: line-through; }
60
+ .xterm .xterm-screen .xterm-decoration-container .xterm-decoration { z-index: 6; position: absolute; }
61
+ .xterm .xterm-screen .xterm-decoration-container .xterm-decoration.xterm-decoration-top-layer { z-index: 7; }
62
+ .xterm .xterm-decoration-overview-ruler { z-index: 8; position: absolute; top: 0; right: 0; pointer-events: none; }
63
+ .xterm .xterm-decoration-top { z-index: 2; position: relative; }
64
+ `;
65
+ document.head.appendChild(style);
66
+ }
67
+ const DEFAULT_THEME = {
68
+ background: "#111",
69
+ foreground: "#e0e0e0",
70
+ cursor: "#58a6ff",
71
+ selectionBackground: "#264f78",
72
+ black: "#484f58",
73
+ red: "#ff7b72",
74
+ green: "#3fb950",
75
+ yellow: "#d29922",
76
+ blue: "#58a6ff",
77
+ magenta: "#bc8cff",
78
+ cyan: "#39d353",
79
+ white: "#b1bac4",
80
+ };
81
+ export function AgentTerminal({ command, flags, wsUrl: wsUrlProp, hideInHarness = true, theme, fontSize = 12, className, style, onConnectionChange, onAgentRunningChange, }) {
82
+ const termRef = useRef(null);
83
+ const [connected, setConnected] = useState(false);
84
+ const [error, setError] = useState(null);
85
+ const [inHarness, setInHarness] = useState(false);
86
+ // Check harness state after mount (postMessage is async)
87
+ useEffect(() => {
88
+ if (!hideInHarness)
89
+ return;
90
+ // Check immediately and also after a short delay for the postMessage to arrive
91
+ const check = () => {
92
+ if (getHarnessOrigin())
93
+ setInHarness(true);
94
+ };
95
+ check();
96
+ const timer = setTimeout(check, 500);
97
+ return () => clearTimeout(timer);
98
+ }, [hideInHarness]);
99
+ // Notify parent of connection changes
100
+ useEffect(() => {
101
+ onConnectionChange?.(connected);
102
+ }, [connected, onConnectionChange]);
103
+ // Main terminal setup
104
+ useEffect(() => {
105
+ if (typeof window === "undefined")
106
+ return;
107
+ if (hideInHarness && inHarness)
108
+ return;
109
+ const container = termRef.current;
110
+ if (!container)
111
+ return;
112
+ let disposed = false;
113
+ let ws = null;
114
+ let cleanupMessageHandler = null;
115
+ async function init() {
116
+ // Dynamic imports for SSR safety
117
+ const [{ Terminal }, { FitAddon }, { WebLinksAddon }] = await Promise.all([
118
+ import("@xterm/xterm"),
119
+ import("@xterm/addon-fit"),
120
+ import("@xterm/addon-web-links"),
121
+ ]);
122
+ if (disposed || !container)
123
+ return;
124
+ injectXtermCss();
125
+ const term = new Terminal({
126
+ cursorBlink: true,
127
+ fontSize,
128
+ fontFamily: "'SF Mono', 'Fira Code', 'Cascadia Code', Menlo, monospace",
129
+ theme: { ...DEFAULT_THEME, ...theme },
130
+ });
131
+ const fitAddon = new FitAddon();
132
+ const webLinksAddon = new WebLinksAddon((_event, uri) => {
133
+ window.open(uri, "_blank", "noopener");
134
+ });
135
+ term.loadAddon(fitAddon);
136
+ term.loadAddon(webLinksAddon);
137
+ term.open(container);
138
+ requestAnimationFrame(() => {
139
+ try {
140
+ fitAddon.fit();
141
+ }
142
+ catch { }
143
+ });
144
+ // Resize observer for auto-fitting
145
+ const resizeObserver = new ResizeObserver(() => {
146
+ requestAnimationFrame(() => {
147
+ try {
148
+ fitAddon.fit();
149
+ sendResize();
150
+ }
151
+ catch { }
152
+ });
153
+ });
154
+ resizeObserver.observe(container);
155
+ // Discover WebSocket URL
156
+ let wsUrl = wsUrlProp;
157
+ if (!wsUrl) {
158
+ try {
159
+ const res = await fetch("/api/agent-terminal-info");
160
+ const info = await res.json();
161
+ if (!info.available) {
162
+ setError(info.error || "Agent terminal not available");
163
+ return;
164
+ }
165
+ const protocol = location.protocol === "https:" ? "wss:" : "ws:";
166
+ wsUrl = `${protocol}//${location.hostname}:${info.wsPort}/ws`;
167
+ if (!command && info.command) {
168
+ command = info.command;
169
+ }
170
+ }
171
+ catch (err) {
172
+ setError("Failed to discover terminal server");
173
+ return;
174
+ }
175
+ }
176
+ // Build WebSocket URL with query params
177
+ const qs = new URLSearchParams();
178
+ if (command)
179
+ qs.set("command", command);
180
+ if (flags)
181
+ qs.set("flags", flags);
182
+ const qsStr = qs.toString();
183
+ const fullWsUrl = qsStr ? `${wsUrl}?${qsStr}` : wsUrl;
184
+ // Connect WebSocket
185
+ let agentRunning = false;
186
+ let idleTimer = null;
187
+ let connectionId = 0;
188
+ function sendResize() {
189
+ if (ws && ws.readyState === WebSocket.OPEN && term) {
190
+ ws.send(JSON.stringify({
191
+ type: "resize",
192
+ cols: term.cols,
193
+ rows: term.rows,
194
+ }));
195
+ }
196
+ }
197
+ function notifyAgentRunning(running) {
198
+ onAgentRunningChange?.(running);
199
+ window.dispatchEvent(new CustomEvent("builder.fusion.chatRunning", {
200
+ detail: { isRunning: running },
201
+ }));
202
+ }
203
+ function connect(url) {
204
+ const thisId = ++connectionId;
205
+ if (ws) {
206
+ ws.close();
207
+ ws = null;
208
+ }
209
+ const socket = new WebSocket(url);
210
+ socket.binaryType = "arraybuffer";
211
+ ws = socket;
212
+ socket.onopen = () => {
213
+ setConnected(true);
214
+ setError(null);
215
+ socket.send(JSON.stringify({
216
+ type: "resize",
217
+ cols: term.cols,
218
+ rows: term.rows,
219
+ }));
220
+ };
221
+ socket.onmessage = (event) => {
222
+ const data = event.data instanceof ArrayBuffer
223
+ ? new TextDecoder().decode(event.data)
224
+ : event.data;
225
+ // Check for setup-status JSON messages
226
+ try {
227
+ const msg = JSON.parse(data);
228
+ if (msg.type === "setup-status") {
229
+ if (msg.status === "not-found" || msg.status === "failed") {
230
+ setError(msg.message);
231
+ // Bump connectionId to suppress reconnect on close
232
+ connectionId++;
233
+ }
234
+ return;
235
+ }
236
+ }
237
+ catch {
238
+ // Not JSON — regular terminal output
239
+ }
240
+ setError(null);
241
+ term.write(data);
242
+ // Idle detection — same logic as harness-cli TerminalTab
243
+ if (data.includes("❯") || data.includes("\x1b[?25h")) {
244
+ if (idleTimer)
245
+ clearTimeout(idleTimer);
246
+ idleTimer = setTimeout(() => {
247
+ if (agentRunning) {
248
+ agentRunning = false;
249
+ notifyAgentRunning(false);
250
+ }
251
+ }, 600);
252
+ }
253
+ else if (agentRunning) {
254
+ if (idleTimer)
255
+ clearTimeout(idleTimer);
256
+ }
257
+ };
258
+ socket.onclose = () => {
259
+ setConnected(false);
260
+ if (connectionId === thisId && !disposed) {
261
+ term.write("\r\n\x1b[31m[terminal] Connection closed. Reconnecting in 3s...\x1b[0m\r\n");
262
+ setTimeout(() => {
263
+ if (connectionId === thisId && !disposed) {
264
+ connect(url);
265
+ }
266
+ }, 3000);
267
+ }
268
+ };
269
+ socket.onerror = () => socket.close();
270
+ }
271
+ // Terminal input → WebSocket
272
+ term.onData((data) => {
273
+ if (ws && ws.readyState === WebSocket.OPEN) {
274
+ ws.send(data);
275
+ }
276
+ });
277
+ // Chat bridge integration — listen for sendToAgentChat messages
278
+ const messageHandler = (event) => {
279
+ // Only accept messages from same origin or known harness
280
+ if (event.origin !== window.location.origin &&
281
+ event.origin !== getHarnessOrigin()) {
282
+ return;
283
+ }
284
+ if (event.data?.type === "builder.submitChat") {
285
+ const message = event.data.data?.message;
286
+ if (message && ws && ws.readyState === WebSocket.OPEN) {
287
+ ws.send(message + "\r");
288
+ agentRunning = true;
289
+ notifyAgentRunning(true);
290
+ }
291
+ }
292
+ };
293
+ window.addEventListener("message", messageHandler);
294
+ cleanupMessageHandler = () => window.removeEventListener("message", messageHandler);
295
+ connect(fullWsUrl);
296
+ // Store cleanup references
297
+ return () => {
298
+ disposed = true;
299
+ connectionId++;
300
+ if (idleTimer)
301
+ clearTimeout(idleTimer);
302
+ resizeObserver.disconnect();
303
+ if (ws) {
304
+ ws.close();
305
+ ws = null;
306
+ }
307
+ term.dispose();
308
+ };
309
+ }
310
+ let cleanup;
311
+ init().then((fn) => {
312
+ cleanup = fn;
313
+ });
314
+ return () => {
315
+ disposed = true;
316
+ cleanup?.();
317
+ cleanupMessageHandler?.();
318
+ };
319
+ // eslint-disable-next-line react-hooks/exhaustive-deps
320
+ }, [hideInHarness, inHarness]);
321
+ if (hideInHarness && inHarness) {
322
+ return null;
323
+ }
324
+ return (_jsx("div", { ref: termRef, className: className, style: {
325
+ width: "100%",
326
+ height: "100%",
327
+ padding: "4px 0 4px 12px",
328
+ backgroundColor: "#111",
329
+ position: "relative",
330
+ ...style,
331
+ }, children: error && (_jsx("div", { style: {
332
+ position: "absolute",
333
+ inset: 0,
334
+ display: "flex",
335
+ alignItems: "center",
336
+ justifyContent: "center",
337
+ backgroundColor: "#111",
338
+ color: "#ff7b72",
339
+ fontSize: "13px",
340
+ fontFamily: "monospace",
341
+ padding: "20px",
342
+ textAlign: "center",
343
+ zIndex: 1,
344
+ }, children: error })) }));
345
+ }
346
+ //# sourceMappingURL=AgentTerminal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AgentTerminal.js","sourceRoot":"","sources":["../../../src/client/terminal/AgentTerminal.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Terminal — client-side exports
3
+ *
4
+ * Embeddable agent CLI terminal component.
5
+ */
6
+ export { AgentTerminal, type AgentTerminalProps } from "./AgentTerminal.js";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/client/terminal/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Terminal — client-side exports
3
+ *
4
+ * Embeddable agent CLI terminal component.
5
+ */
6
+ export { AgentTerminal } from "./AgentTerminal.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/client/terminal/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAA2B,MAAM,oBAAoB,CAAC"}
@@ -9,6 +9,6 @@ import { type AgentChatMessage } from "./agent-chat.js";
9
9
  */
10
10
  export declare function useAgentChatGenerating(): [
11
11
  boolean,
12
- (opts: AgentChatMessage) => void
12
+ (opts: AgentChatMessage) => string
13
13
  ];
14
14
  //# sourceMappingURL=use-agent-chat.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-agent-chat.d.ts","sourceRoot":"","sources":["../../src/client/use-agent-chat.ts"],"names":[],"mappings":"AACA,OAAO,EAAmB,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEzE;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,IAAI;IACxC,OAAO;IACP,CAAC,IAAI,EAAE,gBAAgB,KAAK,IAAI;CACjC,CAqBA"}
1
+ {"version":3,"file":"use-agent-chat.d.ts","sourceRoot":"","sources":["../../src/client/use-agent-chat.ts"],"names":[],"mappings":"AACA,OAAO,EAAmB,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEzE;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,IAAI;IACxC,OAAO;IACP,CAAC,IAAI,EAAE,gBAAgB,KAAK,MAAM;CACnC,CAqBA"}
@@ -22,7 +22,7 @@ export function useAgentChatGenerating() {
22
22
  }, []);
23
23
  const send = useCallback((opts) => {
24
24
  setIsGenerating(true);
25
- sendToAgentChat(opts);
25
+ return sendToAgentChat(opts);
26
26
  }, []);
27
27
  return [isGenerating, send];
28
28
  }
@@ -1 +1 @@
1
- {"version":3,"file":"use-agent-chat.js","sourceRoot":"","sources":["../../src/client/use-agent-chat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACzD,OAAO,EAAE,eAAe,EAAyB,MAAM,iBAAiB,CAAC;AAEzE;;;;;;;GAOG;AACH,MAAM,UAAU,sBAAsB;IAIpC,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAExD,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,OAAO,GAAG,CAAC,CAAQ,EAAE,EAAE;YAC3B,MAAM,MAAM,GAAI,CAAiB,CAAC,MAAM,CAAC;YACzC,IAAI,MAAM,EAAE,SAAS,KAAK,KAAK,EAAE,CAAC;gBAChC,eAAe,CAAC,KAAK,CAAC,CAAC;YACzB,CAAC;QACH,CAAC,CAAC;QACF,MAAM,CAAC,gBAAgB,CAAC,4BAA4B,EAAE,OAAO,CAAC,CAAC;QAC/D,OAAO,GAAG,EAAE,CACV,MAAM,CAAC,mBAAmB,CAAC,4BAA4B,EAAE,OAAO,CAAC,CAAC;IACtE,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,IAAsB,EAAE,EAAE;QAClD,eAAe,CAAC,IAAI,CAAC,CAAC;QACtB,eAAe,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;AAC9B,CAAC"}
1
+ {"version":3,"file":"use-agent-chat.js","sourceRoot":"","sources":["../../src/client/use-agent-chat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACzD,OAAO,EAAE,eAAe,EAAyB,MAAM,iBAAiB,CAAC;AAEzE;;;;;;;GAOG;AACH,MAAM,UAAU,sBAAsB;IAIpC,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAExD,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,OAAO,GAAG,CAAC,CAAQ,EAAE,EAAE;YAC3B,MAAM,MAAM,GAAI,CAAiB,CAAC,MAAM,CAAC;YACzC,IAAI,MAAM,EAAE,SAAS,KAAK,KAAK,EAAE,CAAC;gBAChC,eAAe,CAAC,KAAK,CAAC,CAAC;YACzB,CAAC;QACH,CAAC,CAAC;QACF,MAAM,CAAC,gBAAgB,CAAC,4BAA4B,EAAE,OAAO,CAAC,CAAC;QAC/D,OAAO,GAAG,EAAE,CACV,MAAM,CAAC,mBAAmB,CAAC,4BAA4B,EAAE,OAAO,CAAC,CAAC;IACtE,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,IAAsB,EAAU,EAAE;QAC1D,eAAe,CAAC,IAAI,CAAC,CAAC;QACtB,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;AAC9B,CAAC"}
@@ -0,0 +1,21 @@
1
+ interface FileSyncStatus {
2
+ enabled: boolean;
3
+ connected: boolean;
4
+ conflicts: string[];
5
+ lastSyncedAt: number | null;
6
+ }
7
+ interface FileSyncEvent {
8
+ source: "sync";
9
+ type: string;
10
+ path: string;
11
+ }
12
+ /**
13
+ * React hook for tracking file sync status via SSE events.
14
+ * Fetches initial state from GET /api/file-sync/status on mount,
15
+ * then accumulates updates from SSE sync events.
16
+ */
17
+ export declare function useFileSyncStatus(options?: {
18
+ onEvent?: (event: FileSyncEvent) => void;
19
+ }): FileSyncStatus;
20
+ export {};
21
+ //# sourceMappingURL=use-file-sync-status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-file-sync-status.d.ts","sourceRoot":"","sources":["../../src/client/use-file-sync-status.ts"],"names":[],"mappings":"AAEA,UAAU,cAAc;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,UAAU,aAAa;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,CAAC,EAAE;IAC1C,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;CAC1C,GAAG,cAAc,CA4DjB"}
@@ -0,0 +1,65 @@
1
+ import { useState, useEffect, useRef } from "react";
2
+ /**
3
+ * React hook for tracking file sync status via SSE events.
4
+ * Fetches initial state from GET /api/file-sync/status on mount,
5
+ * then accumulates updates from SSE sync events.
6
+ */
7
+ export function useFileSyncStatus(options) {
8
+ const [status, setStatus] = useState({
9
+ enabled: false,
10
+ connected: false,
11
+ conflicts: [],
12
+ lastSyncedAt: null,
13
+ });
14
+ const onEventRef = useRef(options?.onEvent);
15
+ onEventRef.current = options?.onEvent;
16
+ // Fetch initial state on mount
17
+ useEffect(() => {
18
+ let cancelled = false;
19
+ fetch("/api/file-sync/status")
20
+ .then((r) => r.json())
21
+ .then((data) => {
22
+ if (!cancelled) {
23
+ setStatus((prev) => ({
24
+ ...prev,
25
+ enabled: data.enabled,
26
+ connected: data.connected ?? data.enabled,
27
+ }));
28
+ }
29
+ })
30
+ .catch(() => { });
31
+ return () => {
32
+ cancelled = true;
33
+ };
34
+ }, []);
35
+ // Subscribe to SSE sync events
36
+ useEffect(() => {
37
+ const es = new EventSource("/api/events");
38
+ const handler = (event) => {
39
+ try {
40
+ const data = JSON.parse(event.data);
41
+ if (data.source === "sync") {
42
+ setStatus((prev) => ({
43
+ ...prev,
44
+ lastSyncedAt: Date.now(),
45
+ conflicts: data.type === "conflict" || data.type === "conflict-saved"
46
+ ? [...new Set([...prev.conflicts, data.path])]
47
+ : data.type === "conflict-resolved"
48
+ ? prev.conflicts.filter((p) => p !== data.path)
49
+ : prev.conflicts,
50
+ }));
51
+ onEventRef.current?.(data);
52
+ }
53
+ }
54
+ catch {
55
+ /* malformed SSE data */
56
+ }
57
+ };
58
+ es.addEventListener("message", handler);
59
+ return () => {
60
+ es.close();
61
+ };
62
+ }, []);
63
+ return status;
64
+ }
65
+ //# sourceMappingURL=use-file-sync-status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-file-sync-status.js","sourceRoot":"","sources":["../../src/client/use-file-sync-status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAepD;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAEjC;IACC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAiB;QACnD,OAAO,EAAE,KAAK;QACd,SAAS,EAAE,KAAK;QAChB,SAAS,EAAE,EAAE;QACb,YAAY,EAAE,IAAI;KACnB,CAAC,CAAC;IACH,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC5C,UAAU,CAAC,OAAO,GAAG,OAAO,EAAE,OAAO,CAAC;IAEtC,+BAA+B;IAC/B,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,KAAK,CAAC,uBAAuB,CAAC;aAC3B,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;aACrB,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;YACb,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;oBACnB,GAAG,IAAI;oBACP,OAAO,EAAE,IAAI,CAAC,OAAO;oBACrB,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO;iBAC1C,CAAC,CAAC,CAAC;YACN,CAAC;QACH,CAAC,CAAC;aACD,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACnB,OAAO,GAAG,EAAE;YACV,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,+BAA+B;IAC/B,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,EAAE,GAAG,IAAI,WAAW,CAAC,aAAa,CAAC,CAAC;QAC1C,MAAM,OAAO,GAAG,CAAC,KAAmB,EAAE,EAAE;YACtC,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACpC,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;oBAC3B,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;wBACnB,GAAG,IAAI;wBACP,YAAY,EAAE,IAAI,CAAC,GAAG,EAAE;wBACxB,SAAS,EACP,IAAI,CAAC,IAAI,KAAK,UAAU,IAAI,IAAI,CAAC,IAAI,KAAK,gBAAgB;4BACxD,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;4BAC9C,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,mBAAmB;gCACjC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC;gCACvD,CAAC,CAAC,IAAI,CAAC,SAAS;qBACvB,CAAC,CAAC,CAAC;oBACJ,UAAU,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;gBAC7B,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,wBAAwB;YAC1B,CAAC;QACH,CAAC,CAAC;QACF,EAAE,CAAC,gBAAgB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACxC,OAAO,GAAG,EAAE;YACV,EAAE,CAAC,KAAK,EAAE,CAAC;QACb,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,16 @@
1
+ import type { AuthSession } from "../server/auth.js";
2
+ export type { AuthSession };
3
+ interface UseSessionResult {
4
+ session: AuthSession | null;
5
+ isLoading: boolean;
6
+ }
7
+ /**
8
+ * Client-side hook to get the current auth session.
9
+ *
10
+ * - In dev mode: immediately returns { email: "local@localhost" }
11
+ * - In production: fetches /api/auth/session and returns the result
12
+ *
13
+ * Templates should use this instead of building their own auth context.
14
+ */
15
+ export declare function useSession(): UseSessionResult;
16
+ //# sourceMappingURL=use-session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-session.d.ts","sourceRoot":"","sources":["../../src/client/use-session.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,YAAY,EAAE,WAAW,EAAE,CAAC;AAE5B,UAAU,gBAAgB;IACxB,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,IAAI,gBAAgB,CAqC7C"}
@@ -0,0 +1,49 @@
1
+ import { useState, useEffect } from "react";
2
+ /**
3
+ * Client-side hook to get the current auth session.
4
+ *
5
+ * - In dev mode: immediately returns { email: "local@localhost" }
6
+ * - In production: fetches /api/auth/session and returns the result
7
+ *
8
+ * Templates should use this instead of building their own auth context.
9
+ */
10
+ export function useSession() {
11
+ const [session, setSession] = useState(null);
12
+ const [isLoading, setIsLoading] = useState(true);
13
+ useEffect(() => {
14
+ let cancelled = false;
15
+ async function fetchSession() {
16
+ try {
17
+ const res = await fetch("/api/auth/session");
18
+ if (!res.ok) {
19
+ setSession(null);
20
+ return;
21
+ }
22
+ const data = await res.json();
23
+ if (!cancelled) {
24
+ // The endpoint returns { error: "..." } when not authenticated
25
+ if (data.error) {
26
+ setSession(null);
27
+ }
28
+ else {
29
+ setSession(data);
30
+ }
31
+ }
32
+ }
33
+ catch {
34
+ if (!cancelled)
35
+ setSession(null);
36
+ }
37
+ finally {
38
+ if (!cancelled)
39
+ setIsLoading(false);
40
+ }
41
+ }
42
+ fetchSession();
43
+ return () => {
44
+ cancelled = true;
45
+ };
46
+ }, []);
47
+ return { session, isLoading };
48
+ }
49
+ //# sourceMappingURL=use-session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-session.js","sourceRoot":"","sources":["../../src/client/use-session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAU5C;;;;;;;GAOG;AACH,MAAM,UAAU,UAAU;IACxB,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAqB,IAAI,CAAC,CAAC;IACjE,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAEjD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,SAAS,GAAG,KAAK,CAAC;QAEtB,KAAK,UAAU,YAAY;YACzB,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,mBAAmB,CAAC,CAAC;gBAC7C,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;oBACZ,UAAU,CAAC,IAAI,CAAC,CAAC;oBACjB,OAAO;gBACT,CAAC;gBACD,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;gBAC9B,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,+DAA+D;oBAC/D,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;wBACf,UAAU,CAAC,IAAI,CAAC,CAAC;oBACnB,CAAC;yBAAM,CAAC;wBACN,UAAU,CAAC,IAAmB,CAAC,CAAC;oBAClC,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,IAAI,CAAC,SAAS;oBAAE,UAAU,CAAC,IAAI,CAAC,CAAC;YACnC,CAAC;oBAAS,CAAC;gBACT,IAAI,CAAC,SAAS;oBAAE,YAAY,CAAC,KAAK,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;QAED,YAAY,EAAE,CAAC;QACf,OAAO,GAAG,EAAE;YACV,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;AAChC,CAAC"}
@@ -0,0 +1,23 @@
1
+ export interface ProductionAgentMessage {
2
+ id: string;
3
+ role: "user" | "assistant";
4
+ content: string;
5
+ toolCalls?: Array<{
6
+ tool: string;
7
+ input: Record<string, string>;
8
+ result?: string;
9
+ }>;
10
+ }
11
+ export interface UseProductionAgentOptions {
12
+ /** API endpoint URL. Default: "/api/agent-chat" */
13
+ apiUrl?: string;
14
+ }
15
+ export interface UseProductionAgentResult {
16
+ messages: ProductionAgentMessage[];
17
+ isGenerating: boolean;
18
+ sendMessage: (text: string) => void;
19
+ clearHistory: () => void;
20
+ }
21
+ /** @deprecated Use `AssistantChat` component instead */
22
+ export declare function useProductionAgent(options?: UseProductionAgentOptions): UseProductionAgentResult;
23
+ //# sourceMappingURL=useProductionAgent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useProductionAgent.d.ts","sourceRoot":"","sources":["../../src/client/useProductionAgent.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,KAAK,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,yBAAyB;IACxC,mDAAmD;IACnD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,sBAAsB,EAAE,CAAC;IACnC,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,YAAY,EAAE,MAAM,IAAI,CAAC;CAC1B;AAED,wDAAwD;AACxD,wBAAgB,kBAAkB,CAChC,OAAO,CAAC,EAAE,yBAAyB,GAClC,wBAAwB,CAqK1B"}