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

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 (509) hide show
  1. package/dist/a2a/client.d.ts +7 -0
  2. package/dist/a2a/client.d.ts.map +1 -1
  3. package/dist/a2a/client.js +24 -3
  4. package/dist/a2a/client.js.map +1 -1
  5. package/dist/a2a/handlers.d.ts +6 -3
  6. package/dist/a2a/handlers.d.ts.map +1 -1
  7. package/dist/a2a/handlers.js +45 -39
  8. package/dist/a2a/handlers.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 +2 -2
  12. package/dist/a2a/index.js.map +1 -1
  13. package/dist/a2a/server.d.ts +7 -2
  14. package/dist/a2a/server.d.ts.map +1 -1
  15. package/dist/a2a/server.js +54 -14
  16. package/dist/a2a/server.js.map +1 -1
  17. package/dist/a2a/task-store.d.ts +6 -6
  18. package/dist/a2a/task-store.d.ts.map +1 -1
  19. package/dist/a2a/task-store.js +102 -42
  20. package/dist/a2a/task-store.js.map +1 -1
  21. package/dist/a2a/types.d.ts +2 -0
  22. package/dist/a2a/types.d.ts.map +1 -1
  23. package/dist/action.d.ts +46 -0
  24. package/dist/action.d.ts.map +1 -0
  25. package/dist/action.js +35 -0
  26. package/dist/action.js.map +1 -0
  27. package/dist/adapters/sync/file-sync.js +1 -1
  28. package/dist/agent/index.d.ts +2 -2
  29. package/dist/agent/index.d.ts.map +1 -1
  30. package/dist/agent/index.js.map +1 -1
  31. package/dist/agent/production-agent.d.ts +22 -6
  32. package/dist/agent/production-agent.d.ts.map +1 -1
  33. package/dist/agent/production-agent.js +326 -107
  34. package/dist/agent/production-agent.js.map +1 -1
  35. package/dist/agent/run-manager.d.ts +43 -0
  36. package/dist/agent/run-manager.d.ts.map +1 -0
  37. package/dist/agent/run-manager.js +358 -0
  38. package/dist/agent/run-manager.js.map +1 -0
  39. package/dist/agent/run-store.d.ts +26 -0
  40. package/dist/agent/run-store.d.ts.map +1 -0
  41. package/dist/agent/run-store.js +145 -0
  42. package/dist/agent/run-store.js.map +1 -0
  43. package/dist/agent/thread-data-builder.d.ts +30 -0
  44. package/dist/agent/thread-data-builder.d.ts.map +1 -0
  45. package/dist/agent/thread-data-builder.js +88 -0
  46. package/dist/agent/thread-data-builder.js.map +1 -0
  47. package/dist/agent/types.d.ts +52 -1
  48. package/dist/agent/types.d.ts.map +1 -1
  49. package/dist/application-state/emitter.d.ts +3 -2
  50. package/dist/application-state/emitter.d.ts.map +1 -1
  51. package/dist/application-state/emitter.js +14 -4
  52. package/dist/application-state/emitter.js.map +1 -1
  53. package/dist/application-state/handlers.d.ts.map +1 -1
  54. package/dist/application-state/handlers.js +13 -16
  55. package/dist/application-state/handlers.js.map +1 -1
  56. package/dist/application-state/script-helpers.d.ts +1 -1
  57. package/dist/application-state/script-helpers.d.ts.map +1 -1
  58. package/dist/application-state/script-helpers.js +15 -5
  59. package/dist/application-state/script-helpers.js.map +1 -1
  60. package/dist/application-state/store.d.ts +4 -3
  61. package/dist/application-state/store.d.ts.map +1 -1
  62. package/dist/application-state/store.js +31 -38
  63. package/dist/application-state/store.js.map +1 -1
  64. package/dist/chat-threads/emitter.d.ts +9 -0
  65. package/dist/chat-threads/emitter.d.ts.map +1 -0
  66. package/dist/chat-threads/emitter.js +14 -0
  67. package/dist/chat-threads/emitter.js.map +1 -0
  68. package/dist/chat-threads/store.d.ts +28 -0
  69. package/dist/chat-threads/store.d.ts.map +1 -0
  70. package/dist/chat-threads/store.js +124 -0
  71. package/dist/chat-threads/store.js.map +1 -0
  72. package/dist/cli/create.d.ts.map +1 -1
  73. package/dist/cli/create.js +4 -18
  74. package/dist/cli/create.js.map +1 -1
  75. package/dist/cli/index.js +42 -3
  76. package/dist/cli/index.js.map +1 -1
  77. package/dist/cli/setup-agents.d.ts +11 -0
  78. package/dist/cli/setup-agents.d.ts.map +1 -0
  79. package/dist/cli/setup-agents.js +123 -0
  80. package/dist/cli/setup-agents.js.map +1 -0
  81. package/dist/client/AgentPanel.d.ts +14 -3
  82. package/dist/client/AgentPanel.d.ts.map +1 -1
  83. package/dist/client/AgentPanel.js +492 -21
  84. package/dist/client/AgentPanel.js.map +1 -1
  85. package/dist/client/AssistantChat.d.ts +27 -3
  86. package/dist/client/AssistantChat.d.ts.map +1 -1
  87. package/dist/client/AssistantChat.js +639 -57
  88. package/dist/client/AssistantChat.js.map +1 -1
  89. package/dist/client/ClientOnly.d.ts +14 -0
  90. package/dist/client/ClientOnly.d.ts.map +1 -0
  91. package/dist/client/ClientOnly.js +17 -0
  92. package/dist/client/ClientOnly.js.map +1 -0
  93. package/dist/client/CommandMenu.d.ts +71 -0
  94. package/dist/client/CommandMenu.d.ts.map +1 -0
  95. package/dist/client/CommandMenu.js +257 -0
  96. package/dist/client/CommandMenu.js.map +1 -0
  97. package/dist/client/DefaultSpinner.d.ts +7 -0
  98. package/dist/client/DefaultSpinner.d.ts.map +1 -0
  99. package/dist/client/DefaultSpinner.js +28 -0
  100. package/dist/client/DefaultSpinner.js.map +1 -0
  101. package/dist/client/MultiTabAssistantChat.d.ts +34 -2
  102. package/dist/client/MultiTabAssistantChat.d.ts.map +1 -1
  103. package/dist/client/MultiTabAssistantChat.js +346 -67
  104. package/dist/client/MultiTabAssistantChat.js.map +1 -1
  105. package/dist/client/PoweredByBadge.d.ts.map +1 -1
  106. package/dist/client/PoweredByBadge.js +2 -1
  107. package/dist/client/PoweredByBadge.js.map +1 -1
  108. package/dist/client/active-run-state.d.ts +10 -0
  109. package/dist/client/active-run-state.d.ts.map +1 -0
  110. package/dist/client/active-run-state.js +32 -0
  111. package/dist/client/active-run-state.js.map +1 -0
  112. package/dist/client/agent-chat-adapter.d.ts +2 -1
  113. package/dist/client/agent-chat-adapter.d.ts.map +1 -1
  114. package/dist/client/agent-chat-adapter.js +83 -129
  115. package/dist/client/agent-chat-adapter.js.map +1 -1
  116. package/dist/client/agent-chat.d.ts +2 -0
  117. package/dist/client/agent-chat.d.ts.map +1 -1
  118. package/dist/client/agent-chat.js +2 -2
  119. package/dist/client/agent-chat.js.map +1 -1
  120. package/dist/client/analytics.d.ts +16 -0
  121. package/dist/client/analytics.d.ts.map +1 -0
  122. package/dist/client/analytics.js +17 -0
  123. package/dist/client/analytics.js.map +1 -0
  124. package/dist/client/components/ApiKeySettings.d.ts +2 -2
  125. package/dist/client/components/ApiKeySettings.js +4 -4
  126. package/dist/client/components/ApiKeySettings.js.map +1 -1
  127. package/dist/client/components/CodeRequiredDialog.d.ts +13 -0
  128. package/dist/client/components/CodeRequiredDialog.d.ts.map +1 -0
  129. package/dist/client/components/CodeRequiredDialog.js +160 -0
  130. package/dist/client/components/CodeRequiredDialog.js.map +1 -0
  131. package/dist/client/composer/MentionPopover.d.ts +26 -0
  132. package/dist/client/composer/MentionPopover.d.ts.map +1 -0
  133. package/dist/client/composer/MentionPopover.js +130 -0
  134. package/dist/client/composer/MentionPopover.js.map +1 -0
  135. package/dist/client/composer/TiptapComposer.d.ts +19 -0
  136. package/dist/client/composer/TiptapComposer.d.ts.map +1 -0
  137. package/dist/client/composer/TiptapComposer.js +415 -0
  138. package/dist/client/composer/TiptapComposer.js.map +1 -0
  139. package/dist/client/composer/extensions/FileReference.d.ts +3 -0
  140. package/dist/client/composer/extensions/FileReference.d.ts.map +1 -0
  141. package/dist/client/composer/extensions/FileReference.js +36 -0
  142. package/dist/client/composer/extensions/FileReference.js.map +1 -0
  143. package/dist/client/composer/extensions/MentionReference.d.ts +3 -0
  144. package/dist/client/composer/extensions/MentionReference.d.ts.map +1 -0
  145. package/dist/client/composer/extensions/MentionReference.js +63 -0
  146. package/dist/client/composer/extensions/MentionReference.js.map +1 -0
  147. package/dist/client/composer/extensions/SkillReference.d.ts +3 -0
  148. package/dist/client/composer/extensions/SkillReference.d.ts.map +1 -0
  149. package/dist/client/composer/extensions/SkillReference.js +40 -0
  150. package/dist/client/composer/extensions/SkillReference.js.map +1 -0
  151. package/dist/client/composer/index.d.ts +8 -0
  152. package/dist/client/composer/index.d.ts.map +1 -0
  153. package/dist/client/composer/index.js +7 -0
  154. package/dist/client/composer/index.js.map +1 -0
  155. package/dist/client/composer/types.d.ts +32 -0
  156. package/dist/client/composer/types.d.ts.map +1 -0
  157. package/dist/client/composer/types.js +2 -0
  158. package/dist/client/composer/types.js.map +1 -0
  159. package/dist/client/composer/use-file-search.d.ts +6 -0
  160. package/dist/client/composer/use-file-search.d.ts.map +1 -0
  161. package/dist/client/composer/use-file-search.js +40 -0
  162. package/dist/client/composer/use-file-search.js.map +1 -0
  163. package/dist/client/composer/use-mention-search.d.ts +6 -0
  164. package/dist/client/composer/use-mention-search.d.ts.map +1 -0
  165. package/dist/client/composer/use-mention-search.js +39 -0
  166. package/dist/client/composer/use-mention-search.js.map +1 -0
  167. package/dist/client/composer/use-skills.d.ts +7 -0
  168. package/dist/client/composer/use-skills.d.ts.map +1 -0
  169. package/dist/client/composer/use-skills.js +38 -0
  170. package/dist/client/composer/use-skills.js.map +1 -0
  171. package/dist/client/index.d.ts +13 -4
  172. package/dist/client/index.d.ts.map +1 -1
  173. package/dist/client/index.js +12 -3
  174. package/dist/client/index.js.map +1 -1
  175. package/dist/client/resources/ResourceEditor.d.ts +7 -0
  176. package/dist/client/resources/ResourceEditor.d.ts.map +1 -0
  177. package/dist/client/resources/ResourceEditor.js +851 -0
  178. package/dist/client/resources/ResourceEditor.js.map +1 -0
  179. package/dist/client/resources/ResourceTree.d.ts +13 -0
  180. package/dist/client/resources/ResourceTree.d.ts.map +1 -0
  181. package/dist/client/resources/ResourceTree.js +122 -0
  182. package/dist/client/resources/ResourceTree.js.map +1 -0
  183. package/dist/client/resources/ResourcesPanel.d.ts +2 -0
  184. package/dist/client/resources/ResourcesPanel.d.ts.map +1 -0
  185. package/dist/client/resources/ResourcesPanel.js +341 -0
  186. package/dist/client/resources/ResourcesPanel.js.map +1 -0
  187. package/dist/client/resources/index.d.ts +5 -0
  188. package/dist/client/resources/index.d.ts.map +1 -0
  189. package/dist/client/resources/index.js +5 -0
  190. package/dist/client/resources/index.js.map +1 -0
  191. package/dist/client/resources/use-resources.d.ts +45 -0
  192. package/dist/client/resources/use-resources.d.ts.map +1 -0
  193. package/dist/client/resources/use-resources.js +102 -0
  194. package/dist/client/resources/use-resources.js.map +1 -0
  195. package/dist/client/sse-event-processor.d.ts +50 -0
  196. package/dist/client/sse-event-processor.d.ts.map +1 -0
  197. package/dist/client/sse-event-processor.js +267 -0
  198. package/dist/client/sse-event-processor.js.map +1 -0
  199. package/dist/client/terminal/AgentTerminal.d.ts +1 -1
  200. package/dist/client/terminal/AgentTerminal.d.ts.map +1 -1
  201. package/dist/client/terminal/AgentTerminal.js +12 -7
  202. package/dist/client/terminal/AgentTerminal.js.map +1 -1
  203. package/dist/client/use-agent-chat.d.ts +1 -1
  204. package/dist/client/use-agent-chat.d.ts.map +1 -1
  205. package/dist/client/use-agent-chat.js +3 -3
  206. package/dist/client/use-agent-chat.js.map +1 -1
  207. package/dist/client/use-chat-threads.d.ts +36 -0
  208. package/dist/client/use-chat-threads.d.ts.map +1 -0
  209. package/dist/client/use-chat-threads.js +175 -0
  210. package/dist/client/use-chat-threads.js.map +1 -0
  211. package/dist/client/use-db-sync.d.ts +35 -0
  212. package/dist/client/use-db-sync.d.ts.map +1 -0
  213. package/dist/client/use-db-sync.js +74 -0
  214. package/dist/client/use-db-sync.js.map +1 -0
  215. package/dist/client/use-dev-mode.d.ts +11 -0
  216. package/dist/client/use-dev-mode.d.ts.map +1 -0
  217. package/dist/client/use-dev-mode.js +71 -0
  218. package/dist/client/use-dev-mode.js.map +1 -0
  219. package/dist/client/use-file-sync-status.d.ts +1 -1
  220. package/dist/client/use-file-sync-status.js +3 -3
  221. package/dist/client/use-file-sync-status.js.map +1 -1
  222. package/dist/client/use-send-to-agent-chat.d.ts +17 -0
  223. package/dist/client/use-send-to-agent-chat.d.ts.map +1 -0
  224. package/dist/client/use-send-to-agent-chat.js +40 -0
  225. package/dist/client/use-send-to-agent-chat.js.map +1 -0
  226. package/dist/client/use-session.d.ts +1 -1
  227. package/dist/client/use-session.d.ts.map +1 -1
  228. package/dist/client/use-session.js +13 -4
  229. package/dist/client/use-session.js.map +1 -1
  230. package/dist/client/useProductionAgent.d.ts +1 -1
  231. package/dist/client/useProductionAgent.d.ts.map +1 -1
  232. package/dist/client/useProductionAgent.js +38 -3
  233. package/dist/client/useProductionAgent.js.map +1 -1
  234. package/dist/credentials/index.d.ts +18 -0
  235. package/dist/credentials/index.d.ts.map +1 -0
  236. package/dist/credentials/index.js +32 -0
  237. package/dist/credentials/index.js.map +1 -0
  238. package/dist/db/client.d.ts +35 -0
  239. package/dist/db/client.d.ts.map +1 -0
  240. package/dist/db/client.js +248 -0
  241. package/dist/db/client.js.map +1 -0
  242. package/dist/db/create-get-db.d.ts.map +1 -1
  243. package/dist/db/create-get-db.js +108 -12
  244. package/dist/db/create-get-db.js.map +1 -1
  245. package/dist/db/index.d.ts +10 -6
  246. package/dist/db/index.d.ts.map +1 -1
  247. package/dist/db/index.js +10 -4
  248. package/dist/db/index.js.map +1 -1
  249. package/dist/db/migrations.d.ts.map +1 -1
  250. package/dist/db/migrations.js +52 -21
  251. package/dist/db/migrations.js.map +1 -1
  252. package/dist/db/schema.d.ts +45 -0
  253. package/dist/db/schema.d.ts.map +1 -0
  254. package/dist/db/schema.js +61 -0
  255. package/dist/db/schema.js.map +1 -0
  256. package/dist/deploy/build.d.ts +16 -0
  257. package/dist/deploy/build.d.ts.map +1 -0
  258. package/dist/deploy/build.js +453 -0
  259. package/dist/deploy/build.js.map +1 -0
  260. package/dist/deploy/route-discovery.d.ts +43 -0
  261. package/dist/deploy/route-discovery.d.ts.map +1 -0
  262. package/dist/deploy/route-discovery.js +115 -0
  263. package/dist/deploy/route-discovery.js.map +1 -0
  264. package/dist/index.browser.d.ts +1 -1
  265. package/dist/index.browser.d.ts.map +1 -1
  266. package/dist/index.browser.js +1 -1
  267. package/dist/index.browser.js.map +1 -1
  268. package/dist/index.d.ts +3 -2
  269. package/dist/index.d.ts.map +1 -1
  270. package/dist/index.js +2 -1
  271. package/dist/index.js.map +1 -1
  272. package/dist/oauth-tokens/index.d.ts +1 -1
  273. package/dist/oauth-tokens/index.d.ts.map +1 -1
  274. package/dist/oauth-tokens/index.js +1 -1
  275. package/dist/oauth-tokens/index.js.map +1 -1
  276. package/dist/oauth-tokens/store.d.ts +18 -1
  277. package/dist/oauth-tokens/store.d.ts.map +1 -1
  278. package/dist/oauth-tokens/store.js +81 -40
  279. package/dist/oauth-tokens/store.js.map +1 -1
  280. package/dist/resources/emitter.d.ts +13 -0
  281. package/dist/resources/emitter.d.ts.map +1 -0
  282. package/dist/resources/emitter.js +32 -0
  283. package/dist/resources/emitter.js.map +1 -0
  284. package/dist/resources/handlers.d.ts +45 -0
  285. package/dist/resources/handlers.d.ts.map +1 -0
  286. package/dist/resources/handlers.js +219 -0
  287. package/dist/resources/handlers.js.map +1 -0
  288. package/dist/resources/index.d.ts +5 -0
  289. package/dist/resources/index.d.ts.map +1 -0
  290. package/dist/resources/index.js +5 -0
  291. package/dist/resources/index.js.map +1 -0
  292. package/dist/resources/script-helpers.d.ts +24 -0
  293. package/dist/resources/script-helpers.d.ts.map +1 -0
  294. package/dist/resources/script-helpers.js +36 -0
  295. package/dist/resources/script-helpers.js.map +1 -0
  296. package/dist/resources/store.d.ts +35 -0
  297. package/dist/resources/store.d.ts.map +1 -0
  298. package/dist/resources/store.js +453 -0
  299. package/dist/resources/store.js.map +1 -0
  300. package/dist/scripts/call-agent.d.ts +5 -0
  301. package/dist/scripts/call-agent.d.ts.map +1 -0
  302. package/dist/scripts/call-agent.js +107 -0
  303. package/dist/scripts/call-agent.js.map +1 -0
  304. package/dist/scripts/core-scripts.d.ts.map +1 -1
  305. package/dist/scripts/core-scripts.js +2 -0
  306. package/dist/scripts/core-scripts.js.map +1 -1
  307. package/dist/scripts/db/exec.d.ts +6 -2
  308. package/dist/scripts/db/exec.d.ts.map +1 -1
  309. package/dist/scripts/db/exec.js +127 -36
  310. package/dist/scripts/db/exec.js.map +1 -1
  311. package/dist/scripts/db/query.d.ts +7 -2
  312. package/dist/scripts/db/query.d.ts.map +1 -1
  313. package/dist/scripts/db/query.js +89 -45
  314. package/dist/scripts/db/query.js.map +1 -1
  315. package/dist/scripts/db/schema.d.ts +2 -2
  316. package/dist/scripts/db/schema.d.ts.map +1 -1
  317. package/dist/scripts/db/schema.js +145 -6
  318. package/dist/scripts/db/schema.js.map +1 -1
  319. package/dist/scripts/db/scoping.d.ts +36 -0
  320. package/dist/scripts/db/scoping.d.ts.map +1 -0
  321. package/dist/scripts/db/scoping.js +198 -0
  322. package/dist/scripts/db/scoping.js.map +1 -0
  323. package/dist/scripts/dev/index.d.ts +2 -2
  324. package/dist/scripts/dev/index.js +1 -1
  325. package/dist/scripts/dev/list-files.d.ts +2 -2
  326. package/dist/scripts/dev/read-file.d.ts +2 -2
  327. package/dist/scripts/dev/read-file.js +1 -1
  328. package/dist/scripts/dev/read-file.js.map +1 -1
  329. package/dist/scripts/dev/search-files.d.ts +2 -2
  330. package/dist/scripts/dev/search-files.js +1 -1
  331. package/dist/scripts/dev/search-files.js.map +1 -1
  332. package/dist/scripts/dev/shell.d.ts +2 -2
  333. package/dist/scripts/dev/shell.js +1 -1
  334. package/dist/scripts/dev/shell.js.map +1 -1
  335. package/dist/scripts/dev/write-file.d.ts +2 -2
  336. package/dist/scripts/dev/write-file.js +1 -1
  337. package/dist/scripts/dev/write-file.js.map +1 -1
  338. package/dist/scripts/resources/delete.d.ts +10 -0
  339. package/dist/scripts/resources/delete.d.ts.map +1 -0
  340. package/dist/scripts/resources/delete.js +38 -0
  341. package/dist/scripts/resources/delete.js.map +1 -0
  342. package/dist/scripts/resources/index.d.ts +2 -0
  343. package/dist/scripts/resources/index.d.ts.map +1 -0
  344. package/dist/scripts/resources/index.js +8 -0
  345. package/dist/scripts/resources/index.js.map +1 -0
  346. package/dist/scripts/resources/list.d.ts +10 -0
  347. package/dist/scripts/resources/list.d.ts.map +1 -0
  348. package/dist/scripts/resources/list.js +57 -0
  349. package/dist/scripts/resources/list.js.map +1 -0
  350. package/dist/scripts/resources/migrate-learnings.d.ts +10 -0
  351. package/dist/scripts/resources/migrate-learnings.d.ts.map +1 -0
  352. package/dist/scripts/resources/migrate-learnings.js +23 -0
  353. package/dist/scripts/resources/migrate-learnings.js.map +1 -0
  354. package/dist/scripts/resources/read.d.ts +10 -0
  355. package/dist/scripts/resources/read.d.ts.map +1 -0
  356. package/dist/scripts/resources/read.js +59 -0
  357. package/dist/scripts/resources/read.js.map +1 -0
  358. package/dist/scripts/resources/write.d.ts +10 -0
  359. package/dist/scripts/resources/write.d.ts.map +1 -0
  360. package/dist/scripts/resources/write.js +67 -0
  361. package/dist/scripts/resources/write.js.map +1 -0
  362. package/dist/scripts/runner.d.ts +7 -7
  363. package/dist/scripts/runner.d.ts.map +1 -1
  364. package/dist/scripts/runner.js +68 -27
  365. package/dist/scripts/runner.js.map +1 -1
  366. package/dist/scripts/utils.d.ts +4 -1
  367. package/dist/scripts/utils.d.ts.map +1 -1
  368. package/dist/scripts/utils.js +5 -3
  369. package/dist/scripts/utils.js.map +1 -1
  370. package/dist/server/action-discovery.d.ts +40 -0
  371. package/dist/server/action-discovery.d.ts.map +1 -0
  372. package/dist/server/action-discovery.js +189 -0
  373. package/dist/server/action-discovery.js.map +1 -0
  374. package/dist/server/agent-chat-plugin.d.ts +12 -23
  375. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  376. package/dist/server/agent-chat-plugin.js +1102 -39
  377. package/dist/server/agent-chat-plugin.js.map +1 -1
  378. package/dist/server/agent-discovery.d.ts +16 -0
  379. package/dist/server/agent-discovery.d.ts.map +1 -0
  380. package/dist/server/agent-discovery.js +136 -0
  381. package/dist/server/agent-discovery.js.map +1 -0
  382. package/dist/server/analytics.d.ts +19 -0
  383. package/dist/server/analytics.d.ts.map +1 -0
  384. package/dist/server/analytics.js +61 -0
  385. package/dist/server/analytics.js.map +1 -0
  386. package/dist/server/auth-plugin.d.ts +5 -0
  387. package/dist/server/auth-plugin.d.ts.map +1 -1
  388. package/dist/server/auth-plugin.js +12 -1
  389. package/dist/server/auth-plugin.js.map +1 -1
  390. package/dist/server/auth.d.ts +3 -1
  391. package/dist/server/auth.d.ts.map +1 -1
  392. package/dist/server/auth.js +598 -104
  393. package/dist/server/auth.js.map +1 -1
  394. package/dist/server/core-routes-plugin.d.ts +57 -0
  395. package/dist/server/core-routes-plugin.d.ts.map +1 -0
  396. package/dist/server/core-routes-plugin.js +125 -0
  397. package/dist/server/core-routes-plugin.js.map +1 -0
  398. package/dist/server/create-server.d.ts +4 -4
  399. package/dist/server/create-server.d.ts.map +1 -1
  400. package/dist/server/create-server.js +5 -5
  401. package/dist/server/create-server.js.map +1 -1
  402. package/dist/server/default-watcher.d.ts +9 -3
  403. package/dist/server/default-watcher.d.ts.map +1 -1
  404. package/dist/server/default-watcher.js +26 -6
  405. package/dist/server/default-watcher.js.map +1 -1
  406. package/dist/server/google-auth-plugin.d.ts.map +1 -1
  407. package/dist/server/google-auth-plugin.js +4 -3
  408. package/dist/server/google-auth-plugin.js.map +1 -1
  409. package/dist/server/google-oauth.d.ts +72 -0
  410. package/dist/server/google-oauth.d.ts.map +1 -0
  411. package/dist/server/google-oauth.js +187 -0
  412. package/dist/server/google-oauth.js.map +1 -0
  413. package/dist/server/index.d.ts +10 -2
  414. package/dist/server/index.d.ts.map +1 -1
  415. package/dist/server/index.js +9 -1
  416. package/dist/server/index.js.map +1 -1
  417. package/dist/server/oauth-helpers.d.ts +16 -0
  418. package/dist/server/oauth-helpers.d.ts.map +1 -0
  419. package/dist/server/oauth-helpers.js +25 -0
  420. package/dist/server/oauth-helpers.js.map +1 -0
  421. package/dist/server/poll.d.ts +40 -0
  422. package/dist/server/poll.d.ts.map +1 -0
  423. package/dist/server/poll.js +49 -0
  424. package/dist/server/poll.js.map +1 -0
  425. package/dist/server/resources-plugin.d.ts +27 -0
  426. package/dist/server/resources-plugin.d.ts.map +1 -0
  427. package/dist/server/resources-plugin.js +74 -0
  428. package/dist/server/resources-plugin.js.map +1 -0
  429. package/dist/server/script-discovery.d.ts +6 -0
  430. package/dist/server/script-discovery.d.ts.map +1 -0
  431. package/dist/server/script-discovery.js +6 -0
  432. package/dist/server/script-discovery.js.map +1 -0
  433. package/dist/server/sse.d.ts +1 -1
  434. package/dist/server/sse.js +1 -1
  435. package/dist/settings/handlers.d.ts +3 -3
  436. package/dist/settings/handlers.d.ts.map +1 -1
  437. package/dist/settings/handlers.js +8 -6
  438. package/dist/settings/handlers.js.map +1 -1
  439. package/dist/settings/index.d.ts +1 -1
  440. package/dist/settings/index.d.ts.map +1 -1
  441. package/dist/settings/index.js.map +1 -1
  442. package/dist/settings/store.d.ts +6 -2
  443. package/dist/settings/store.d.ts.map +1 -1
  444. package/dist/settings/store.js +26 -36
  445. package/dist/settings/store.js.map +1 -1
  446. package/dist/settings/user-settings.d.ts +6 -10
  447. package/dist/settings/user-settings.d.ts.map +1 -1
  448. package/dist/settings/user-settings.js +9 -18
  449. package/dist/settings/user-settings.js.map +1 -1
  450. package/dist/tailwind.preset.d.ts +7 -6
  451. package/dist/tailwind.preset.d.ts.map +1 -1
  452. package/dist/tailwind.preset.js +18 -1
  453. package/dist/tailwind.preset.js.map +1 -1
  454. package/dist/terminal/cli-registry.d.ts +3 -1
  455. package/dist/terminal/cli-registry.d.ts.map +1 -1
  456. package/dist/terminal/cli-registry.js +10 -5
  457. package/dist/terminal/cli-registry.js.map +1 -1
  458. package/dist/terminal/pty-server.d.ts.map +1 -1
  459. package/dist/terminal/pty-server.js +65 -11
  460. package/dist/terminal/pty-server.js.map +1 -1
  461. package/dist/terminal/terminal-plugin.d.ts +2 -2
  462. package/dist/terminal/terminal-plugin.d.ts.map +1 -1
  463. package/dist/terminal/terminal-plugin.js +27 -8
  464. package/dist/terminal/terminal-plugin.js.map +1 -1
  465. package/dist/vite/client.d.ts.map +1 -1
  466. package/dist/vite/client.js +114 -8
  467. package/dist/vite/client.js.map +1 -1
  468. package/dist/vite/dev-api-server.d.ts +1 -1
  469. package/dist/vite/dev-api-server.d.ts.map +1 -1
  470. package/dist/vite/dev-api-server.js +105 -22
  471. package/dist/vite/dev-api-server.js.map +1 -1
  472. package/package.json +23 -7
  473. package/src/templates/default/.agents/skills/actions/SKILL.md +136 -0
  474. package/src/templates/default/.agents/skills/create-skill/SKILL.md +1 -1
  475. package/src/templates/default/.agents/skills/delegate-to-agent/SKILL.md +1 -1
  476. package/src/templates/default/.agents/skills/files-as-database/SKILL.md +2 -2
  477. package/src/templates/default/.agents/skills/real-time-sync/SKILL.md +112 -0
  478. package/src/templates/default/AGENTS.md +56 -164
  479. package/src/templates/default/DEVELOPING.md +117 -0
  480. package/src/templates/default/{scripts → actions}/hello.ts +1 -1
  481. package/src/templates/default/actions/navigate.ts +53 -0
  482. package/src/templates/default/actions/view-screen.ts +39 -0
  483. package/src/templates/default/app/entry.server.tsx +2 -1
  484. package/src/templates/default/app/global.css +2 -2
  485. package/src/templates/default/app/root.tsx +27 -15
  486. package/src/templates/default/app/routes/_index.tsx +1 -1
  487. package/src/templates/default/package.json +4 -0
  488. package/src/templates/default/public/icon-180.svg +4 -0
  489. package/src/templates/default/public/icon-192.svg +4 -0
  490. package/src/templates/default/public/icon-512.svg +4 -0
  491. package/src/templates/default/public/manifest.json +13 -0
  492. package/src/templates/default/server/plugins/.gitkeep +0 -0
  493. package/dist/a2a/middleware.d.ts +0 -3
  494. package/dist/a2a/middleware.d.ts.map +0 -1
  495. package/dist/a2a/middleware.js +0 -36
  496. package/dist/a2a/middleware.js.map +0 -1
  497. package/dist/client/use-file-watcher.d.ts +0 -23
  498. package/dist/client/use-file-watcher.d.ts.map +0 -1
  499. package/dist/client/use-file-watcher.js +0 -50
  500. package/dist/client/use-file-watcher.js.map +0 -1
  501. package/src/templates/default/.agents/skills/scripts/SKILL.md +0 -121
  502. package/src/templates/default/.agents/skills/sse-file-watcher/SKILL.md +0 -80
  503. package/src/templates/default/server/plugins/agent-chat.ts +0 -1
  504. package/src/templates/default/server/plugins/auth.ts +0 -1
  505. package/src/templates/default/server/plugins/file-sync.ts +0 -1
  506. package/src/templates/default/server/plugins/terminal.ts +0 -1
  507. package/src/templates/default/server/routes/api/events.get.ts +0 -3
  508. package/src/templates/default/server/routes/api/file-sync/status.get.ts +0 -4
  509. /package/src/templates/default/{scripts → actions}/run.ts +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"index.browser.js","sourceRoot":"","sources":["../src/index.browser.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAEhF,SAAS;AACT,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,cAAc,EACd,UAAU,EACV,EAAE,EACF,cAAc,GAGf,MAAM,mBAAmB,CAAC;AAE3B,sBAAsB;AACtB,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.browser.js","sourceRoot":"","sources":["../src/index.browser.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAEhF,SAAS;AACT,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,UAAU,EACV,kBAAkB,EAClB,kBAAkB,EAClB,SAAS,EACT,cAAc,EACd,UAAU,EACV,EAAE,EACF,cAAc,GAIf,MAAM,mBAAmB,CAAC;AAE3B,sBAAsB;AACtB,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,8 +1,9 @@
1
- export { createProductionAgentHandler, type ScriptEntry, type ProductionAgentOptions, type ScriptTool, type AgentMessage, type AgentChatRequest, type AgentChatEvent, } from "./agent/index.js";
1
+ export { createProductionAgentHandler, type ActionEntry, type ScriptEntry, type ProductionAgentOptions, type ActionTool, type ScriptTool, type AgentMessage, type AgentChatRequest, type AgentChatEvent, } from "./agent/index.js";
2
+ export { defineAction } from "./action.js";
2
3
  export { createDevScriptRegistry } from "./scripts/dev/index.js";
3
4
  export { createAgentChatPlugin, defaultAgentChatPlugin, type AgentChatPluginOptions, } from "./server/agent-chat-plugin.js";
4
5
  export { createServer, createFileWatcher, createSSEHandler, defineNitroPlugin, autoMountAuth, getSession, type CreateServerOptions, type FileWatcherOptions, type SSEHandlerOptions, type AuthSession, type AuthOptions, } from "./server/index.js";
5
- export { sendToAgentChat, useAgentChatGenerating, useFileWatcher, cn, ApiKeySettings, useSession, useProductionAgent, ProductionAgentPanel, type AgentChatMessage, type ProductionAgentMessage, type UseProductionAgentResult, type ProductionAgentPanelProps, } from "./client/index.js";
6
+ export { sendToAgentChat, useAgentChatGenerating, useDevMode, useSendToAgentChat, CodeRequiredDialog, useDbSync, useFileWatcher, cn, ApiKeySettings, useSession, useProductionAgent, ProductionAgentPanel, type AgentChatMessage, type CodeRequiredDialogProps, type ProductionAgentMessage, type UseProductionAgentResult, type ProductionAgentPanelProps, } from "./client/index.js";
6
7
  export { agentChat, type AgentChatCallOptions, type AgentChatResponse, } from "./shared/index.js";
7
8
  export { runScript, loadEnv, parseArgs, camelCaseArgs, isValidPath, isValidProjectPath, ensureDir, fail, } from "./scripts/index.js";
8
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,4BAA4B,EAC5B,KAAK,WAAW,EAChB,KAAK,sBAAsB,EAC3B,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,cAAc,GACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,KAAK,sBAAsB,GAC5B,MAAM,+BAA+B,CAAC;AAGvC,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,UAAU,EACV,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAChB,KAAK,WAAW,GACjB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,cAAc,EACd,EAAE,EACF,cAAc,EACd,UAAU,EACV,kBAAkB,EAClB,oBAAoB,EACpB,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAC3B,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,GAC/B,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,SAAS,EACT,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,GACvB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,SAAS,EACT,OAAO,EACP,SAAS,EACT,aAAa,EACb,WAAW,EACX,kBAAkB,EAClB,SAAS,EACT,IAAI,GACL,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,4BAA4B,EAC5B,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,sBAAsB,EAC3B,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,cAAc,GACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,KAAK,sBAAsB,GAC5B,MAAM,+BAA+B,CAAC;AAGvC,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,UAAU,EACV,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAChB,KAAK,WAAW,GACjB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,UAAU,EACV,kBAAkB,EAClB,kBAAkB,EAClB,SAAS,EACT,cAAc,EACd,EAAE,EACF,cAAc,EACd,UAAU,EACV,kBAAkB,EAClB,oBAAoB,EACpB,KAAK,gBAAgB,EACrB,KAAK,uBAAuB,EAC5B,KAAK,sBAAsB,EAC3B,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,GAC/B,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,SAAS,EACT,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,GACvB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,SAAS,EACT,OAAO,EACP,SAAS,EACT,aAAa,EACb,WAAW,EACX,kBAAkB,EAClB,SAAS,EACT,IAAI,GACL,MAAM,oBAAoB,CAAC"}
package/dist/index.js CHANGED
@@ -2,12 +2,13 @@
2
2
  // Import everything from "@agent-native/core".
3
3
  // Agent (production mode)
4
4
  export { createProductionAgentHandler, } from "./agent/index.js";
5
+ export { defineAction } from "./action.js";
5
6
  export { createDevScriptRegistry } from "./scripts/dev/index.js";
6
7
  export { createAgentChatPlugin, defaultAgentChatPlugin, } from "./server/agent-chat-plugin.js";
7
8
  // Server
8
9
  export { createServer, createFileWatcher, createSSEHandler, defineNitroPlugin, autoMountAuth, getSession, } from "./server/index.js";
9
10
  // Client
10
- export { sendToAgentChat, useAgentChatGenerating, useFileWatcher, cn, ApiKeySettings, useSession, useProductionAgent, ProductionAgentPanel, } from "./client/index.js";
11
+ export { sendToAgentChat, useAgentChatGenerating, useDevMode, useSendToAgentChat, CodeRequiredDialog, useDbSync, useFileWatcher, cn, ApiKeySettings, useSession, useProductionAgent, ProductionAgentPanel, } from "./client/index.js";
11
12
  // Shared (isomorphic)
12
13
  export { agentChat, } from "./shared/index.js";
13
14
  // Scripts
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,mCAAmC;AACnC,+CAA+C;AAE/C,0BAA0B;AAC1B,OAAO,EACL,4BAA4B,GAO7B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GAEvB,MAAM,+BAA+B,CAAC;AAEvC,SAAS;AACT,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,UAAU,GAMX,MAAM,mBAAmB,CAAC;AAE3B,SAAS;AACT,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,cAAc,EACd,EAAE,EACF,cAAc,EACd,UAAU,EACV,kBAAkB,EAClB,oBAAoB,GAKrB,MAAM,mBAAmB,CAAC;AAE3B,sBAAsB;AACtB,OAAO,EACL,SAAS,GAGV,MAAM,mBAAmB,CAAC;AAE3B,UAAU;AACV,OAAO,EACL,SAAS,EACT,OAAO,EACP,SAAS,EACT,aAAa,EACb,WAAW,EACX,kBAAkB,EAClB,SAAS,EACT,IAAI,GACL,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,mCAAmC;AACnC,+CAA+C;AAE/C,0BAA0B;AAC1B,OAAO,EACL,4BAA4B,GAS7B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GAEvB,MAAM,+BAA+B,CAAC;AAEvC,SAAS;AACT,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,UAAU,GAMX,MAAM,mBAAmB,CAAC;AAE3B,SAAS;AACT,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,UAAU,EACV,kBAAkB,EAClB,kBAAkB,EAClB,SAAS,EACT,cAAc,EACd,EAAE,EACF,cAAc,EACd,UAAU,EACV,kBAAkB,EAClB,oBAAoB,GAMrB,MAAM,mBAAmB,CAAC;AAE3B,sBAAsB;AACtB,OAAO,EACL,SAAS,GAGV,MAAM,mBAAmB,CAAC;AAE3B,UAAU;AACV,OAAO,EACL,SAAS,EACT,OAAO,EACP,SAAS,EACT,aAAa,EACb,WAAW,EACX,kBAAkB,EAClB,SAAS,EACT,IAAI,GACL,MAAM,oBAAoB,CAAC"}
@@ -1,2 +1,2 @@
1
- export { getOAuthTokens, saveOAuthTokens, deleteOAuthTokens, listOAuthAccounts, hasOAuthTokens, } from "./store.js";
1
+ export { getOAuthTokens, saveOAuthTokens, deleteOAuthTokens, listOAuthAccounts, listOAuthAccountsByOwner, hasOAuthTokens, } from "./store.js";
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/oauth-tokens/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,GACf,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/oauth-tokens/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,wBAAwB,EACxB,cAAc,GACf,MAAM,YAAY,CAAC"}
@@ -1,2 +1,2 @@
1
- export { getOAuthTokens, saveOAuthTokens, deleteOAuthTokens, listOAuthAccounts, hasOAuthTokens, } from "./store.js";
1
+ export { getOAuthTokens, saveOAuthTokens, deleteOAuthTokens, listOAuthAccounts, listOAuthAccountsByOwner, hasOAuthTokens, } from "./store.js";
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/oauth-tokens/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,GACf,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/oauth-tokens/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,wBAAwB,EACxB,cAAc,GACf,MAAM,YAAY,CAAC"}
@@ -1,7 +1,24 @@
1
1
  export declare function getOAuthTokens(provider: string, accountId: string): Promise<Record<string, unknown> | null>;
2
- export declare function saveOAuthTokens(provider: string, accountId: string, tokens: Record<string, unknown>): Promise<void>;
2
+ /**
3
+ * Save OAuth tokens. The `owner` parameter specifies which user owns this
4
+ * account — defaults to `accountId` (the account itself is the owner).
5
+ * For multi-account support, pass the logged-in user's email as owner.
6
+ *
7
+ * If the account already exists and is owned by a different user, throws
8
+ * an error to prevent silently stealing another user's linked account.
9
+ */
10
+ export declare function saveOAuthTokens(provider: string, accountId: string, tokens: Record<string, unknown>, owner?: string): Promise<void>;
3
11
  export declare function deleteOAuthTokens(provider: string, accountId?: string): Promise<number>;
4
12
  export declare function listOAuthAccounts(provider: string): Promise<Array<{
13
+ accountId: string;
14
+ owner: string | null;
15
+ tokens: Record<string, unknown>;
16
+ }>>;
17
+ /**
18
+ * List all OAuth accounts owned by a specific user.
19
+ * In multi-account mode, a user may have connected multiple Google accounts.
20
+ */
21
+ export declare function listOAuthAccountsByOwner(provider: string, owner: string): Promise<Array<{
5
22
  accountId: string;
6
23
  tokens: Record<string, unknown>;
7
24
  }>>;
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/oauth-tokens/store.ts"],"names":[],"mappings":"AAoCA,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,CASzC;AAED,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAAC,IAAI,CAAC,CAOf;AAED,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC,CAejB;AAED,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,KAAK,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC,CAAC,CAWxE;AAED,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAQvE"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/oauth-tokens/store.ts"],"names":[],"mappings":"AAiCA,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,CASzC;AAED;;;;;;;GAOG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CA6Bf;AAED,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC,CAejB;AAED,wBAAsB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAChE,KAAK,CAAC;IACJ,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC,CAAC,CACH,CAYA;AAED;;;GAGG;AACH,wBAAsB,wBAAwB,CAC5C,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,KAAK,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC,CAAC,CAWxE;AAED,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAQvE"}
@@ -1,39 +1,35 @@
1
- import { createClient } from "@libsql/client";
2
- import fs from "fs";
3
- import path from "path";
4
- let _client;
5
- let _initialized = false;
6
- function getClient() {
7
- if (!_client) {
8
- const url = process.env.DATABASE_URL || "file:./data/app.db";
9
- if (url.startsWith("file:")) {
10
- fs.mkdirSync(path.join(process.cwd(), "data"), { recursive: true });
11
- }
12
- _client = createClient({
13
- url,
14
- authToken: process.env.DATABASE_AUTH_TOKEN,
15
- });
16
- }
17
- return _client;
18
- }
1
+ import { getDbExec, isPostgres, intType } from "../db/client.js";
2
+ let _initPromise;
19
3
  async function ensureTable() {
20
- if (_initialized)
21
- return;
22
- const client = getClient();
23
- await client.execute(`
24
- CREATE TABLE IF NOT EXISTS oauth_tokens (
25
- provider TEXT NOT NULL,
26
- account_id TEXT NOT NULL,
27
- tokens TEXT NOT NULL,
28
- updated_at INTEGER NOT NULL,
29
- PRIMARY KEY (provider, account_id)
30
- )
31
- `);
32
- _initialized = true;
4
+ if (!_initPromise) {
5
+ _initPromise = (async () => {
6
+ const client = getDbExec();
7
+ await client.execute(`
8
+ CREATE TABLE IF NOT EXISTS oauth_tokens (
9
+ provider TEXT NOT NULL,
10
+ account_id TEXT NOT NULL,
11
+ owner TEXT,
12
+ tokens TEXT NOT NULL,
13
+ updated_at ${intType()} NOT NULL,
14
+ PRIMARY KEY (provider, account_id)
15
+ )
16
+ `);
17
+ // Migration: add owner column to existing tables
18
+ try {
19
+ await client.execute(`ALTER TABLE oauth_tokens ADD COLUMN owner TEXT`);
20
+ }
21
+ catch {
22
+ // Column already exists
23
+ }
24
+ // Backfill: set owner = account_id for existing rows without an owner
25
+ await client.execute(`UPDATE oauth_tokens SET owner = account_id WHERE owner IS NULL`);
26
+ })();
27
+ }
28
+ return _initPromise;
33
29
  }
34
30
  export async function getOAuthTokens(provider, accountId) {
35
31
  await ensureTable();
36
- const client = getClient();
32
+ const client = getDbExec();
37
33
  const { rows } = await client.execute({
38
34
  sql: `SELECT tokens FROM oauth_tokens WHERE provider = ? AND account_id = ?`,
39
35
  args: [provider, accountId],
@@ -42,17 +38,45 @@ export async function getOAuthTokens(provider, accountId) {
42
38
  return null;
43
39
  return JSON.parse(rows[0].tokens);
44
40
  }
45
- export async function saveOAuthTokens(provider, accountId, tokens) {
41
+ /**
42
+ * Save OAuth tokens. The `owner` parameter specifies which user owns this
43
+ * account — defaults to `accountId` (the account itself is the owner).
44
+ * For multi-account support, pass the logged-in user's email as owner.
45
+ *
46
+ * If the account already exists and is owned by a different user, throws
47
+ * an error to prevent silently stealing another user's linked account.
48
+ */
49
+ export async function saveOAuthTokens(provider, accountId, tokens, owner) {
46
50
  await ensureTable();
47
- const client = getClient();
51
+ const client = getDbExec();
52
+ // When owner is not provided (e.g. during token refresh), preserve the existing
53
+ // owner so secondary accounts don't get silently re-assigned to accountId.
54
+ let resolvedOwner = owner ?? accountId;
55
+ if (!owner) {
56
+ const { rows: existing } = await client.execute({
57
+ sql: `SELECT owner FROM oauth_tokens WHERE provider = ? AND account_id = ?`,
58
+ args: [provider, accountId],
59
+ });
60
+ if (existing.length > 0 && existing[0].owner) {
61
+ resolvedOwner = existing[0].owner;
62
+ }
63
+ }
48
64
  await client.execute({
49
- sql: `INSERT OR REPLACE INTO oauth_tokens (provider, account_id, tokens, updated_at) VALUES (?, ?, ?, ?)`,
50
- args: [provider, accountId, JSON.stringify(tokens), Date.now()],
65
+ sql: isPostgres()
66
+ ? `INSERT INTO oauth_tokens (provider, account_id, owner, tokens, updated_at) VALUES (?, ?, ?, ?, ?) ON CONFLICT (provider, account_id) DO UPDATE SET owner=EXCLUDED.owner, tokens=EXCLUDED.tokens, updated_at=EXCLUDED.updated_at`
67
+ : `INSERT OR REPLACE INTO oauth_tokens (provider, account_id, owner, tokens, updated_at) VALUES (?, ?, ?, ?, ?)`,
68
+ args: [
69
+ provider,
70
+ accountId,
71
+ resolvedOwner,
72
+ JSON.stringify(tokens),
73
+ Date.now(),
74
+ ],
51
75
  });
52
76
  }
53
77
  export async function deleteOAuthTokens(provider, accountId) {
54
78
  await ensureTable();
55
- const client = getClient();
79
+ const client = getDbExec();
56
80
  if (accountId) {
57
81
  const result = await client.execute({
58
82
  sql: `DELETE FROM oauth_tokens WHERE provider = ? AND account_id = ?`,
@@ -68,11 +92,28 @@ export async function deleteOAuthTokens(provider, accountId) {
68
92
  }
69
93
  export async function listOAuthAccounts(provider) {
70
94
  await ensureTable();
71
- const client = getClient();
95
+ const client = getDbExec();
72
96
  const { rows } = await client.execute({
73
- sql: `SELECT account_id, tokens FROM oauth_tokens WHERE provider = ?`,
97
+ sql: `SELECT account_id, owner, tokens FROM oauth_tokens WHERE provider = ?`,
74
98
  args: [provider],
75
99
  });
100
+ return rows.map((row) => ({
101
+ accountId: row.account_id,
102
+ owner: row.owner ?? null,
103
+ tokens: JSON.parse(row.tokens),
104
+ }));
105
+ }
106
+ /**
107
+ * List all OAuth accounts owned by a specific user.
108
+ * In multi-account mode, a user may have connected multiple Google accounts.
109
+ */
110
+ export async function listOAuthAccountsByOwner(provider, owner) {
111
+ await ensureTable();
112
+ const client = getDbExec();
113
+ const { rows } = await client.execute({
114
+ sql: `SELECT account_id, tokens FROM oauth_tokens WHERE provider = ? AND owner = ?`,
115
+ args: [provider, owner],
116
+ });
76
117
  return rows.map((row) => ({
77
118
  accountId: row.account_id,
78
119
  tokens: JSON.parse(row.tokens),
@@ -80,7 +121,7 @@ export async function listOAuthAccounts(provider) {
80
121
  }
81
122
  export async function hasOAuthTokens(provider) {
82
123
  await ensureTable();
83
- const client = getClient();
124
+ const client = getDbExec();
84
125
  const { rows } = await client.execute({
85
126
  sql: `SELECT 1 FROM oauth_tokens WHERE provider = ? LIMIT 1`,
86
127
  args: [provider],
@@ -1 +1 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/oauth-tokens/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/oauth-tokens/store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { EventEmitter } from "events";
2
+ export interface ResourceEvent {
3
+ source: "resources";
4
+ type: "change" | "delete";
5
+ id: string;
6
+ path: string;
7
+ owner: string;
8
+ requestSource?: string;
9
+ }
10
+ export declare function getResourcesEmitter(): EventEmitter;
11
+ export declare function emitResourceChange(id: string, path: string, owner: string, requestSource?: string): void;
12
+ export declare function emitResourceDelete(id: string, path: string, owner: string, requestSource?: string): void;
13
+ //# sourceMappingURL=emitter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emitter.d.ts","sourceRoot":"","sources":["../../src/resources/emitter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,WAAW,CAAC;IACpB,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAQD,wBAAgB,mBAAmB,IAAI,YAAY,CAElD;AAED,wBAAgB,kBAAkB,CAChC,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,aAAa,CAAC,EAAE,MAAM,GACrB,IAAI,CAUN;AAED,wBAAgB,kBAAkB,CAChC,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,aAAa,CAAC,EAAE,MAAM,GACrB,IAAI,CAUN"}
@@ -0,0 +1,32 @@
1
+ import { EventEmitter } from "events";
2
+ /**
3
+ * Singleton EventEmitter for resources DB changes.
4
+ * The SSE handler subscribes to this via extraEmitters.
5
+ */
6
+ const _emitter = new EventEmitter();
7
+ export function getResourcesEmitter() {
8
+ return _emitter;
9
+ }
10
+ export function emitResourceChange(id, path, owner, requestSource) {
11
+ const event = {
12
+ source: "resources",
13
+ type: "change",
14
+ id,
15
+ path,
16
+ owner,
17
+ ...(requestSource && { requestSource }),
18
+ };
19
+ _emitter.emit("resources", event);
20
+ }
21
+ export function emitResourceDelete(id, path, owner, requestSource) {
22
+ const event = {
23
+ source: "resources",
24
+ type: "delete",
25
+ id,
26
+ path,
27
+ owner,
28
+ ...(requestSource && { requestSource }),
29
+ };
30
+ _emitter.emit("resources", event);
31
+ }
32
+ //# sourceMappingURL=emitter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emitter.js","sourceRoot":"","sources":["../../src/resources/emitter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAWtC;;;GAGG;AACH,MAAM,QAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;AAEpC,MAAM,UAAU,mBAAmB;IACjC,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,EAAU,EACV,IAAY,EACZ,KAAa,EACb,aAAsB;IAEtB,MAAM,KAAK,GAAkB;QAC3B,MAAM,EAAE,WAAW;QACnB,IAAI,EAAE,QAAQ;QACd,EAAE;QACF,IAAI;QACJ,KAAK;QACL,GAAG,CAAC,aAAa,IAAI,EAAE,aAAa,EAAE,CAAC;KACxC,CAAC;IACF,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,EAAU,EACV,IAAY,EACZ,KAAa,EACb,aAAsB;IAEtB,MAAM,KAAK,GAAkB;QAC3B,MAAM,EAAE,WAAW;QACnB,IAAI,EAAE,QAAQ;QACd,EAAE;QACF,IAAI;QACJ,KAAK;QACL,GAAG,CAAC,aAAa,IAAI,EAAE,aAAa,EAAE,CAAC;KACxC,CAAC;IACF,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;AACpC,CAAC"}
@@ -0,0 +1,45 @@
1
+ import { type Resource, type ResourceMeta } from "./store.js";
2
+ interface TreeNode {
3
+ name: string;
4
+ path: string;
5
+ type: "file" | "folder";
6
+ children?: TreeNode[];
7
+ resource?: ResourceMeta;
8
+ }
9
+ /** GET /_agent-native/resources — list resources */
10
+ export declare function handleListResources(event: any): Promise<{
11
+ resources: ResourceMeta[];
12
+ }>;
13
+ /** GET /_agent-native/resources/tree — build nested tree */
14
+ export declare function handleGetResourceTree(event: any): Promise<{
15
+ tree: TreeNode[];
16
+ }>;
17
+ /** GET /_agent-native/resources/:id — get single resource with content.
18
+ * If the request comes from an <img>/<video>/etc tag (Accept includes the
19
+ * resource's mime type, or query param `?raw` is set), return the raw binary
20
+ * with the correct Content-Type so the browser can render it inline. */
21
+ export declare function handleGetResource(event: any): Promise<Resource | {
22
+ error: string;
23
+ }>;
24
+ /** POST /_agent-native/resources — create a resource */
25
+ export declare function handleCreateResource(event: any): Promise<Resource | {
26
+ error: string;
27
+ }>;
28
+ /** PUT /_agent-native/resources/:id — update an existing resource */
29
+ export declare function handleUpdateResource(event: any): Promise<Resource | {
30
+ error: string;
31
+ }>;
32
+ /** DELETE /_agent-native/resources/:id — delete a resource */
33
+ export declare function handleDeleteResource(event: any): Promise<{
34
+ error: string;
35
+ ok?: undefined;
36
+ } | {
37
+ ok: boolean;
38
+ error?: undefined;
39
+ }>;
40
+ /** POST /_agent-native/resources/upload — upload a file as a resource */
41
+ export declare function handleUploadResource(event: any): Promise<Resource | {
42
+ error: string;
43
+ }>;
44
+ export {};
45
+ //# sourceMappingURL=handlers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../src/resources/handlers.ts"],"names":[],"mappings":"AASA,OAAO,EAWL,KAAK,QAAQ,EACb,KAAK,YAAY,EAClB,MAAM,YAAY,CAAC;AAsBpB,UAAU,QAAQ;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC;IACxB,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC;IACtB,QAAQ,CAAC,EAAE,YAAY,CAAC;CACzB;AA8CD,oDAAoD;AACpD,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,GAAG;;GAqBnD;AAED,4DAA4D;AAC5D,wBAAsB,qBAAqB,CAAC,KAAK,EAAE,GAAG;;GAoBrD;AAED;;;yEAGyE;AACzE,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,GAAG;;GA8CjD;AAED,wDAAwD;AACxD,wBAAsB,oBAAoB,CAAC,KAAK,EAAE,GAAG;;GA2BpD;AAED,qEAAqE;AACrE,wBAAsB,oBAAoB,CAAC,KAAK,EAAE,GAAG;;GA6BpD;AAED,8DAA8D;AAC9D,wBAAsB,oBAAoB,CAAC,KAAK,EAAE,GAAG;;;;;;GAcpD;AAED,yEAAyE;AACzE,wBAAsB,oBAAoB,CAAC,KAAK,EAAE,GAAG;;GAkCpD"}
@@ -0,0 +1,219 @@
1
+ import { readBody, getQuery, getRouterParam, setResponseStatus, readMultipartFormData, } from "h3";
2
+ import { resourceGet, resourceGetByPath, resourcePut, resourceDelete, resourceList, resourceListAccessible, resourceMove, ensurePersonalDefaults, SHARED_OWNER, } from "./store.js";
3
+ import { getSession } from "../server/auth.js";
4
+ // ---------------------------------------------------------------------------
5
+ // Owner resolution
6
+ // ---------------------------------------------------------------------------
7
+ async function resolveOwner(event, shared) {
8
+ if (shared)
9
+ return SHARED_OWNER;
10
+ const session = await getSession(event);
11
+ return session?.email || "local@localhost";
12
+ }
13
+ async function resolveEmail(event) {
14
+ const session = await getSession(event);
15
+ return session?.email || "local@localhost";
16
+ }
17
+ function buildTree(resources) {
18
+ const root = [];
19
+ for (const res of resources) {
20
+ const parts = res.path.split("/").filter(Boolean);
21
+ let current = root;
22
+ for (let i = 0; i < parts.length; i++) {
23
+ const part = parts[i];
24
+ const isLast = i === parts.length - 1;
25
+ const currentPath = "/" + parts.slice(0, i + 1).join("/");
26
+ if (isLast) {
27
+ current.push({
28
+ name: part,
29
+ path: currentPath,
30
+ type: "file",
31
+ resource: res,
32
+ });
33
+ }
34
+ else {
35
+ let folder = current.find((n) => n.name === part && n.type === "folder");
36
+ if (!folder) {
37
+ folder = {
38
+ name: part,
39
+ path: currentPath,
40
+ type: "folder",
41
+ children: [],
42
+ };
43
+ current.push(folder);
44
+ }
45
+ current = folder.children;
46
+ }
47
+ }
48
+ }
49
+ return root;
50
+ }
51
+ // ---------------------------------------------------------------------------
52
+ // Handlers
53
+ // ---------------------------------------------------------------------------
54
+ /** GET /_agent-native/resources — list resources */
55
+ export async function handleListResources(event) {
56
+ const query = getQuery(event);
57
+ const prefix = query.prefix || undefined;
58
+ const scope = query.scope || "all";
59
+ const email = await resolveEmail(event);
60
+ // Seed personal AGENTS.md + LEARNINGS.md on first access
61
+ await ensurePersonalDefaults(email);
62
+ let resources;
63
+ if (scope === "personal") {
64
+ resources = await resourceList(email, prefix);
65
+ }
66
+ else if (scope === "shared") {
67
+ resources = await resourceList(SHARED_OWNER, prefix);
68
+ }
69
+ else {
70
+ // "all" — personal + shared
71
+ resources = await resourceListAccessible(email, prefix);
72
+ }
73
+ return { resources };
74
+ }
75
+ /** GET /_agent-native/resources/tree — build nested tree */
76
+ export async function handleGetResourceTree(event) {
77
+ const query = getQuery(event);
78
+ const scope = query.scope || "all";
79
+ const email = await resolveEmail(event);
80
+ // Seed personal AGENTS.md + LEARNINGS.md on first access
81
+ await ensurePersonalDefaults(email);
82
+ let resources;
83
+ if (scope === "personal") {
84
+ resources = await resourceList(email);
85
+ }
86
+ else if (scope === "shared") {
87
+ resources = await resourceList(SHARED_OWNER);
88
+ }
89
+ else {
90
+ resources = await resourceListAccessible(email);
91
+ }
92
+ const tree = buildTree(resources);
93
+ return { tree };
94
+ }
95
+ /** GET /_agent-native/resources/:id — get single resource with content.
96
+ * If the request comes from an <img>/<video>/etc tag (Accept includes the
97
+ * resource's mime type, or query param `?raw` is set), return the raw binary
98
+ * with the correct Content-Type so the browser can render it inline. */
99
+ export async function handleGetResource(event) {
100
+ const id = getRouterParam(event, "id") || event.context.params?.id;
101
+ if (!id) {
102
+ setResponseStatus(event, 400);
103
+ return { error: "Resource ID is required" };
104
+ }
105
+ const resource = await resourceGet(id);
106
+ if (!resource) {
107
+ setResponseStatus(event, 404);
108
+ return { error: "Resource not found" };
109
+ }
110
+ // Serve raw binary when ?raw query param is set (used by <img> tags etc.)
111
+ const query = getQuery(event);
112
+ const wantsRaw = query.raw !== undefined;
113
+ if (wantsRaw && resource.content) {
114
+ const isText = resource.mimeType.startsWith("text/") ||
115
+ resource.mimeType === "application/json";
116
+ const buf = isText
117
+ ? Buffer.from(resource.content, "utf-8")
118
+ : Buffer.from(resource.content, "base64");
119
+ event.node.res.setHeader("Content-Type", resource.mimeType);
120
+ event.node.res.setHeader("Content-Length", buf.length);
121
+ event.node.res.end(buf);
122
+ return;
123
+ }
124
+ // For binary resources (images, audio, video), omit the content field from
125
+ // the JSON response — it can be megabytes of base64. The client fetches
126
+ // the actual bytes via ?raw when it needs to display them.
127
+ const isBinary = resource.mimeType.startsWith("image/") ||
128
+ resource.mimeType.startsWith("audio/") ||
129
+ resource.mimeType.startsWith("video/") ||
130
+ resource.mimeType === "application/octet-stream";
131
+ if (isBinary) {
132
+ const { content: _content, ...meta } = resource;
133
+ return { ...meta, content: "" };
134
+ }
135
+ return resource;
136
+ }
137
+ /** POST /_agent-native/resources — create a resource */
138
+ export async function handleCreateResource(event) {
139
+ const body = await readBody(event);
140
+ if (!body?.path || typeof body.path !== "string") {
141
+ setResponseStatus(event, 400);
142
+ return { error: "path is required" };
143
+ }
144
+ const owner = await resolveOwner(event, body.shared);
145
+ // If ifNotExists is set, skip if the resource already exists
146
+ if (body.ifNotExists) {
147
+ const existing = await resourceGetByPath(owner, body.path);
148
+ if (existing) {
149
+ return existing;
150
+ }
151
+ }
152
+ const resource = await resourcePut(owner, body.path, body.content ?? "", body.mimeType);
153
+ setResponseStatus(event, 201);
154
+ return resource;
155
+ }
156
+ /** PUT /_agent-native/resources/:id — update an existing resource */
157
+ export async function handleUpdateResource(event) {
158
+ const id = getRouterParam(event, "id") || event.context.params?.id;
159
+ if (!id) {
160
+ setResponseStatus(event, 400);
161
+ return { error: "Resource ID is required" };
162
+ }
163
+ const existing = await resourceGet(id);
164
+ if (!existing) {
165
+ setResponseStatus(event, 404);
166
+ return { error: "Resource not found" };
167
+ }
168
+ const body = await readBody(event);
169
+ // If path changed, move it
170
+ if (body.path && body.path !== existing.path) {
171
+ await resourceMove(id, body.path);
172
+ }
173
+ // Update content/mimeType by re-putting
174
+ const resource = await resourcePut(existing.owner, body.path ?? existing.path, body.content ?? existing.content, body.mimeType ?? existing.mimeType);
175
+ return resource;
176
+ }
177
+ /** DELETE /_agent-native/resources/:id — delete a resource */
178
+ export async function handleDeleteResource(event) {
179
+ const id = getRouterParam(event, "id") || event.context.params?.id;
180
+ if (!id) {
181
+ setResponseStatus(event, 400);
182
+ return { error: "Resource ID is required" };
183
+ }
184
+ const deleted = await resourceDelete(id);
185
+ if (!deleted) {
186
+ setResponseStatus(event, 404);
187
+ return { error: "Resource not found" };
188
+ }
189
+ return { ok: true };
190
+ }
191
+ /** POST /_agent-native/resources/upload — upload a file as a resource */
192
+ export async function handleUploadResource(event) {
193
+ const parts = await readMultipartFormData(event);
194
+ if (!parts || parts.length === 0) {
195
+ setResponseStatus(event, 400);
196
+ return { error: "No file uploaded" };
197
+ }
198
+ const filePart = parts.find((p) => p.name === "file");
199
+ const pathPart = parts.find((p) => p.name === "path");
200
+ const sharedPart = parts.find((p) => p.name === "shared");
201
+ if (!filePart || !filePart.data) {
202
+ setResponseStatus(event, 400);
203
+ return { error: "No file data found" };
204
+ }
205
+ const fileName = filePart.filename || "upload";
206
+ const path = pathPart?.data?.toString() || `/${fileName}`;
207
+ const shared = sharedPart?.data?.toString() === "true";
208
+ const mimeType = filePart.type || "application/octet-stream";
209
+ // Encode binary files as base64, keep text as-is
210
+ const isText = mimeType.startsWith("text/") || mimeType === "application/json";
211
+ const content = isText
212
+ ? filePart.data.toString("utf-8")
213
+ : filePart.data.toString("base64");
214
+ const owner = await resolveOwner(event, shared);
215
+ const resource = await resourcePut(owner, path, content, mimeType);
216
+ setResponseStatus(event, 201);
217
+ return resource;
218
+ }
219
+ //# sourceMappingURL=handlers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../src/resources/handlers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export * from "./store.js";
2
+ export * from "./emitter.js";
3
+ export * from "./script-helpers.js";
4
+ export * from "./handlers.js";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/resources/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC"}