@pocketcoder/host 0.0.2

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 (839) hide show
  1. package/LICENSE +53 -0
  2. package/README.md +1106 -0
  3. package/dist/__tests__/daemon-startup.test.d.ts +2 -0
  4. package/dist/__tests__/daemon-startup.test.d.ts.map +1 -0
  5. package/dist/__tests__/daemon-startup.test.js +339 -0
  6. package/dist/__tests__/daemon-startup.test.js.map +1 -0
  7. package/dist/__tests__/env.test.d.ts +2 -0
  8. package/dist/__tests__/env.test.d.ts.map +1 -0
  9. package/dist/__tests__/env.test.js +44 -0
  10. package/dist/__tests__/env.test.js.map +1 -0
  11. package/dist/auth/__tests__/gateway-auth.test.d.ts +2 -0
  12. package/dist/auth/__tests__/gateway-auth.test.d.ts.map +1 -0
  13. package/dist/auth/__tests__/gateway-auth.test.js +208 -0
  14. package/dist/auth/__tests__/gateway-auth.test.js.map +1 -0
  15. package/dist/auth/__tests__/login-manager.test.d.ts +2 -0
  16. package/dist/auth/__tests__/login-manager.test.d.ts.map +1 -0
  17. package/dist/auth/__tests__/login-manager.test.js +160 -0
  18. package/dist/auth/__tests__/login-manager.test.js.map +1 -0
  19. package/dist/auth/__tests__/login.test.d.ts +2 -0
  20. package/dist/auth/__tests__/login.test.d.ts.map +1 -0
  21. package/dist/auth/__tests__/login.test.js +165 -0
  22. package/dist/auth/__tests__/login.test.js.map +1 -0
  23. package/dist/auth/__tests__/manual-flow.test.d.ts +2 -0
  24. package/dist/auth/__tests__/manual-flow.test.d.ts.map +1 -0
  25. package/dist/auth/__tests__/manual-flow.test.js +72 -0
  26. package/dist/auth/__tests__/manual-flow.test.js.map +1 -0
  27. package/dist/auth/__tests__/oauth-server.test.d.ts +2 -0
  28. package/dist/auth/__tests__/oauth-server.test.d.ts.map +1 -0
  29. package/dist/auth/__tests__/oauth-server.test.js +104 -0
  30. package/dist/auth/__tests__/oauth-server.test.js.map +1 -0
  31. package/dist/auth/__tests__/token-refresh.test.d.ts +2 -0
  32. package/dist/auth/__tests__/token-refresh.test.d.ts.map +1 -0
  33. package/dist/auth/__tests__/token-refresh.test.js +205 -0
  34. package/dist/auth/__tests__/token-refresh.test.js.map +1 -0
  35. package/dist/auth/__tests__/token-storage.test.d.ts +2 -0
  36. package/dist/auth/__tests__/token-storage.test.d.ts.map +1 -0
  37. package/dist/auth/__tests__/token-storage.test.js +145 -0
  38. package/dist/auth/__tests__/token-storage.test.js.map +1 -0
  39. package/dist/auth/gateway-auth.d.ts +38 -0
  40. package/dist/auth/gateway-auth.d.ts.map +1 -0
  41. package/dist/auth/gateway-auth.js +117 -0
  42. package/dist/auth/gateway-auth.js.map +1 -0
  43. package/dist/auth/login.d.ts +43 -0
  44. package/dist/auth/login.d.ts.map +1 -0
  45. package/dist/auth/login.js +180 -0
  46. package/dist/auth/login.js.map +1 -0
  47. package/dist/auth/manual-flow.d.ts +16 -0
  48. package/dist/auth/manual-flow.d.ts.map +1 -0
  49. package/dist/auth/manual-flow.js +44 -0
  50. package/dist/auth/manual-flow.js.map +1 -0
  51. package/dist/auth/oauth-server.d.ts +22 -0
  52. package/dist/auth/oauth-server.d.ts.map +1 -0
  53. package/dist/auth/oauth-server.js +165 -0
  54. package/dist/auth/oauth-server.js.map +1 -0
  55. package/dist/auth/token-refresh.d.ts +36 -0
  56. package/dist/auth/token-refresh.d.ts.map +1 -0
  57. package/dist/auth/token-refresh.js +116 -0
  58. package/dist/auth/token-refresh.js.map +1 -0
  59. package/dist/auth/token-storage.d.ts +20 -0
  60. package/dist/auth/token-storage.d.ts.map +1 -0
  61. package/dist/auth/token-storage.js +71 -0
  62. package/dist/auth/token-storage.js.map +1 -0
  63. package/dist/auth/types.d.ts +12 -0
  64. package/dist/auth/types.d.ts.map +1 -0
  65. package/dist/auth/types.js +2 -0
  66. package/dist/auth/types.js.map +1 -0
  67. package/dist/cli/commands/__tests__/cli-auth.test.d.ts +2 -0
  68. package/dist/cli/commands/__tests__/cli-auth.test.d.ts.map +1 -0
  69. package/dist/cli/commands/__tests__/cli-auth.test.js +135 -0
  70. package/dist/cli/commands/__tests__/cli-auth.test.js.map +1 -0
  71. package/dist/cli/commands/__tests__/cli-autostart.test.d.ts +2 -0
  72. package/dist/cli/commands/__tests__/cli-autostart.test.d.ts.map +1 -0
  73. package/dist/cli/commands/__tests__/cli-autostart.test.js +95 -0
  74. package/dist/cli/commands/__tests__/cli-autostart.test.js.map +1 -0
  75. package/dist/cli/commands/__tests__/cli-daemon.test.d.ts +2 -0
  76. package/dist/cli/commands/__tests__/cli-daemon.test.d.ts.map +1 -0
  77. package/dist/cli/commands/__tests__/cli-daemon.test.js +144 -0
  78. package/dist/cli/commands/__tests__/cli-daemon.test.js.map +1 -0
  79. package/dist/cli/commands/__tests__/cli-logs.test.d.ts +2 -0
  80. package/dist/cli/commands/__tests__/cli-logs.test.d.ts.map +1 -0
  81. package/dist/cli/commands/__tests__/cli-logs.test.js +85 -0
  82. package/dist/cli/commands/__tests__/cli-logs.test.js.map +1 -0
  83. package/dist/cli/commands/__tests__/cli-machine.test.d.ts +2 -0
  84. package/dist/cli/commands/__tests__/cli-machine.test.d.ts.map +1 -0
  85. package/dist/cli/commands/__tests__/cli-machine.test.js +119 -0
  86. package/dist/cli/commands/__tests__/cli-machine.test.js.map +1 -0
  87. package/dist/cli/commands/__tests__/cli-projects.test.d.ts +2 -0
  88. package/dist/cli/commands/__tests__/cli-projects.test.d.ts.map +1 -0
  89. package/dist/cli/commands/__tests__/cli-projects.test.js +246 -0
  90. package/dist/cli/commands/__tests__/cli-projects.test.js.map +1 -0
  91. package/dist/cli/commands/__tests__/cli-status.test.d.ts +2 -0
  92. package/dist/cli/commands/__tests__/cli-status.test.d.ts.map +1 -0
  93. package/dist/cli/commands/__tests__/cli-status.test.js +153 -0
  94. package/dist/cli/commands/__tests__/cli-status.test.js.map +1 -0
  95. package/dist/cli/commands/add.d.ts +7 -0
  96. package/dist/cli/commands/add.d.ts.map +1 -0
  97. package/dist/cli/commands/add.js +37 -0
  98. package/dist/cli/commands/add.js.map +1 -0
  99. package/dist/cli/commands/autostart.d.ts +16 -0
  100. package/dist/cli/commands/autostart.d.ts.map +1 -0
  101. package/dist/cli/commands/autostart.js +47 -0
  102. package/dist/cli/commands/autostart.js.map +1 -0
  103. package/dist/cli/commands/login.d.ts +6 -0
  104. package/dist/cli/commands/login.d.ts.map +1 -0
  105. package/dist/cli/commands/login.js +19 -0
  106. package/dist/cli/commands/login.js.map +1 -0
  107. package/dist/cli/commands/logout.d.ts +7 -0
  108. package/dist/cli/commands/logout.d.ts.map +1 -0
  109. package/dist/cli/commands/logout.js +50 -0
  110. package/dist/cli/commands/logout.js.map +1 -0
  111. package/dist/cli/commands/logs.d.ts +9 -0
  112. package/dist/cli/commands/logs.d.ts.map +1 -0
  113. package/dist/cli/commands/logs.js +113 -0
  114. package/dist/cli/commands/logs.js.map +1 -0
  115. package/dist/cli/commands/machine.d.ts +8 -0
  116. package/dist/cli/commands/machine.d.ts.map +1 -0
  117. package/dist/cli/commands/machine.js +78 -0
  118. package/dist/cli/commands/machine.js.map +1 -0
  119. package/dist/cli/commands/projects.d.ts +6 -0
  120. package/dist/cli/commands/projects.d.ts.map +1 -0
  121. package/dist/cli/commands/projects.js +28 -0
  122. package/dist/cli/commands/projects.js.map +1 -0
  123. package/dist/cli/commands/remove.d.ts +7 -0
  124. package/dist/cli/commands/remove.d.ts.map +1 -0
  125. package/dist/cli/commands/remove.js +31 -0
  126. package/dist/cli/commands/remove.js.map +1 -0
  127. package/dist/cli/commands/start.d.ts +14 -0
  128. package/dist/cli/commands/start.d.ts.map +1 -0
  129. package/dist/cli/commands/start.js +67 -0
  130. package/dist/cli/commands/start.js.map +1 -0
  131. package/dist/cli/commands/status.d.ts +6 -0
  132. package/dist/cli/commands/status.d.ts.map +1 -0
  133. package/dist/cli/commands/status.js +68 -0
  134. package/dist/cli/commands/status.js.map +1 -0
  135. package/dist/cli/commands/stop.d.ts +6 -0
  136. package/dist/cli/commands/stop.d.ts.map +1 -0
  137. package/dist/cli/commands/stop.js +39 -0
  138. package/dist/cli/commands/stop.js.map +1 -0
  139. package/dist/cli/index.d.ts +3 -0
  140. package/dist/cli/index.d.ts.map +1 -0
  141. package/dist/cli/index.js +5 -0
  142. package/dist/cli/index.js.map +1 -0
  143. package/dist/cli/notify-project-sync.d.ts +11 -0
  144. package/dist/cli/notify-project-sync.d.ts.map +1 -0
  145. package/dist/cli/notify-project-sync.js +45 -0
  146. package/dist/cli/notify-project-sync.js.map +1 -0
  147. package/dist/cli/notify-re-register.d.ts +7 -0
  148. package/dist/cli/notify-re-register.d.ts.map +1 -0
  149. package/dist/cli/notify-re-register.js +34 -0
  150. package/dist/cli/notify-re-register.js.map +1 -0
  151. package/dist/cli/program.d.ts +6 -0
  152. package/dist/cli/program.d.ts.map +1 -0
  153. package/dist/cli/program.js +66 -0
  154. package/dist/cli/program.js.map +1 -0
  155. package/dist/config/__tests__/index.test.d.ts +2 -0
  156. package/dist/config/__tests__/index.test.d.ts.map +1 -0
  157. package/dist/config/__tests__/index.test.js +146 -0
  158. package/dist/config/__tests__/index.test.js.map +1 -0
  159. package/dist/config/index.d.ts +13 -0
  160. package/dist/config/index.d.ts.map +1 -0
  161. package/dist/config/index.js +77 -0
  162. package/dist/config/index.js.map +1 -0
  163. package/dist/config/schema.d.ts +26 -0
  164. package/dist/config/schema.d.ts.map +1 -0
  165. package/dist/config/schema.js +54 -0
  166. package/dist/config/schema.js.map +1 -0
  167. package/dist/control-plane/__tests__/server.test.d.ts +2 -0
  168. package/dist/control-plane/__tests__/server.test.d.ts.map +1 -0
  169. package/dist/control-plane/__tests__/server.test.js +64 -0
  170. package/dist/control-plane/__tests__/server.test.js.map +1 -0
  171. package/dist/control-plane/routes/__tests__/status.test.d.ts +2 -0
  172. package/dist/control-plane/routes/__tests__/status.test.d.ts.map +1 -0
  173. package/dist/control-plane/routes/__tests__/status.test.js +152 -0
  174. package/dist/control-plane/routes/__tests__/status.test.js.map +1 -0
  175. package/dist/control-plane/routes/__tests__/stop.test.d.ts +2 -0
  176. package/dist/control-plane/routes/__tests__/stop.test.d.ts.map +1 -0
  177. package/dist/control-plane/routes/__tests__/stop.test.js +92 -0
  178. package/dist/control-plane/routes/__tests__/stop.test.js.map +1 -0
  179. package/dist/control-plane/routes/health.d.ts +3 -0
  180. package/dist/control-plane/routes/health.d.ts.map +1 -0
  181. package/dist/control-plane/routes/health.js +14 -0
  182. package/dist/control-plane/routes/health.js.map +1 -0
  183. package/dist/control-plane/routes/machine-label.d.ts +8 -0
  184. package/dist/control-plane/routes/machine-label.d.ts.map +1 -0
  185. package/dist/control-plane/routes/machine-label.js +32 -0
  186. package/dist/control-plane/routes/machine-label.js.map +1 -0
  187. package/dist/control-plane/routes/project-sync.d.ts +12 -0
  188. package/dist/control-plane/routes/project-sync.d.ts.map +1 -0
  189. package/dist/control-plane/routes/project-sync.js +63 -0
  190. package/dist/control-plane/routes/project-sync.js.map +1 -0
  191. package/dist/control-plane/routes/re-register.d.ts +9 -0
  192. package/dist/control-plane/routes/re-register.d.ts.map +1 -0
  193. package/dist/control-plane/routes/re-register.js +56 -0
  194. package/dist/control-plane/routes/re-register.js.map +1 -0
  195. package/dist/control-plane/routes/status.d.ts +49 -0
  196. package/dist/control-plane/routes/status.d.ts.map +1 -0
  197. package/dist/control-plane/routes/status.js +55 -0
  198. package/dist/control-plane/routes/status.js.map +1 -0
  199. package/dist/control-plane/routes/stop.d.ts +7 -0
  200. package/dist/control-plane/routes/stop.d.ts.map +1 -0
  201. package/dist/control-plane/routes/stop.js +25 -0
  202. package/dist/control-plane/routes/stop.js.map +1 -0
  203. package/dist/control-plane/server.d.ts +10 -0
  204. package/dist/control-plane/server.d.ts.map +1 -0
  205. package/dist/control-plane/server.js +39 -0
  206. package/dist/control-plane/server.js.map +1 -0
  207. package/dist/daemon.d.ts +23 -0
  208. package/dist/daemon.d.ts.map +1 -0
  209. package/dist/daemon.js +533 -0
  210. package/dist/daemon.js.map +1 -0
  211. package/dist/db/__tests__/cleanup.test.d.ts +2 -0
  212. package/dist/db/__tests__/cleanup.test.d.ts.map +1 -0
  213. package/dist/db/__tests__/cleanup.test.js +153 -0
  214. package/dist/db/__tests__/cleanup.test.js.map +1 -0
  215. package/dist/db/__tests__/database.test.d.ts +2 -0
  216. package/dist/db/__tests__/database.test.d.ts.map +1 -0
  217. package/dist/db/__tests__/database.test.js +93 -0
  218. package/dist/db/__tests__/database.test.js.map +1 -0
  219. package/dist/db/__tests__/migrator.test.d.ts +2 -0
  220. package/dist/db/__tests__/migrator.test.d.ts.map +1 -0
  221. package/dist/db/__tests__/migrator.test.js +146 -0
  222. package/dist/db/__tests__/migrator.test.js.map +1 -0
  223. package/dist/db/cleanup.d.ts +20 -0
  224. package/dist/db/cleanup.d.ts.map +1 -0
  225. package/dist/db/cleanup.js +67 -0
  226. package/dist/db/cleanup.js.map +1 -0
  227. package/dist/db/database.d.ts +18 -0
  228. package/dist/db/database.d.ts.map +1 -0
  229. package/dist/db/database.js +41 -0
  230. package/dist/db/database.js.map +1 -0
  231. package/dist/db/migrations.d.ts +7 -0
  232. package/dist/db/migrations.d.ts.map +1 -0
  233. package/dist/db/migrations.js +32 -0
  234. package/dist/db/migrations.js.map +1 -0
  235. package/dist/db/migrator.d.ts +26 -0
  236. package/dist/db/migrator.d.ts.map +1 -0
  237. package/dist/db/migrator.js +105 -0
  238. package/dist/db/migrator.js.map +1 -0
  239. package/dist/db/repositories/__tests__/command-runs.test.d.ts +2 -0
  240. package/dist/db/repositories/__tests__/command-runs.test.d.ts.map +1 -0
  241. package/dist/db/repositories/__tests__/command-runs.test.js +90 -0
  242. package/dist/db/repositories/__tests__/command-runs.test.js.map +1 -0
  243. package/dist/db/repositories/__tests__/fs-state.test.d.ts +2 -0
  244. package/dist/db/repositories/__tests__/fs-state.test.d.ts.map +1 -0
  245. package/dist/db/repositories/__tests__/fs-state.test.js +77 -0
  246. package/dist/db/repositories/__tests__/fs-state.test.js.map +1 -0
  247. package/dist/db/repositories/__tests__/projects.test.d.ts +2 -0
  248. package/dist/db/repositories/__tests__/projects.test.d.ts.map +1 -0
  249. package/dist/db/repositories/__tests__/projects.test.js +84 -0
  250. package/dist/db/repositories/__tests__/projects.test.js.map +1 -0
  251. package/dist/db/repositories/__tests__/terminal-sessions.test.d.ts +2 -0
  252. package/dist/db/repositories/__tests__/terminal-sessions.test.d.ts.map +1 -0
  253. package/dist/db/repositories/__tests__/terminal-sessions.test.js +93 -0
  254. package/dist/db/repositories/__tests__/terminal-sessions.test.js.map +1 -0
  255. package/dist/db/repositories/command-runs.d.ts +28 -0
  256. package/dist/db/repositories/command-runs.d.ts.map +1 -0
  257. package/dist/db/repositories/command-runs.js +42 -0
  258. package/dist/db/repositories/command-runs.js.map +1 -0
  259. package/dist/db/repositories/fs-state.d.ts +28 -0
  260. package/dist/db/repositories/fs-state.d.ts.map +1 -0
  261. package/dist/db/repositories/fs-state.js +48 -0
  262. package/dist/db/repositories/fs-state.js.map +1 -0
  263. package/dist/db/repositories/projects.d.ts +33 -0
  264. package/dist/db/repositories/projects.d.ts.map +1 -0
  265. package/dist/db/repositories/projects.js +50 -0
  266. package/dist/db/repositories/projects.js.map +1 -0
  267. package/dist/db/repositories/terminal-sessions.d.ts +28 -0
  268. package/dist/db/repositories/terminal-sessions.d.ts.map +1 -0
  269. package/dist/db/repositories/terminal-sessions.js +47 -0
  270. package/dist/db/repositories/terminal-sessions.js.map +1 -0
  271. package/dist/db/schema.d.ts +6 -0
  272. package/dist/db/schema.d.ts.map +1 -0
  273. package/dist/db/schema.js +49 -0
  274. package/dist/db/schema.js.map +1 -0
  275. package/dist/env.d.ts +15 -0
  276. package/dist/env.d.ts.map +1 -0
  277. package/dist/env.js +23 -0
  278. package/dist/env.js.map +1 -0
  279. package/dist/errors/__tests__/index.test.d.ts +2 -0
  280. package/dist/errors/__tests__/index.test.d.ts.map +1 -0
  281. package/dist/errors/__tests__/index.test.js +105 -0
  282. package/dist/errors/__tests__/index.test.js.map +1 -0
  283. package/dist/errors/index.d.ts +36 -0
  284. package/dist/errors/index.d.ts.map +1 -0
  285. package/dist/errors/index.js +54 -0
  286. package/dist/errors/index.js.map +1 -0
  287. package/dist/gateway/__tests__/message-router.test.d.ts +2 -0
  288. package/dist/gateway/__tests__/message-router.test.d.ts.map +1 -0
  289. package/dist/gateway/__tests__/message-router.test.js +225 -0
  290. package/dist/gateway/__tests__/message-router.test.js.map +1 -0
  291. package/dist/gateway/__tests__/reconnection.test.d.ts +2 -0
  292. package/dist/gateway/__tests__/reconnection.test.d.ts.map +1 -0
  293. package/dist/gateway/__tests__/reconnection.test.js +244 -0
  294. package/dist/gateway/__tests__/reconnection.test.js.map +1 -0
  295. package/dist/gateway/__tests__/websocket-client.test.d.ts +2 -0
  296. package/dist/gateway/__tests__/websocket-client.test.d.ts.map +1 -0
  297. package/dist/gateway/__tests__/websocket-client.test.js +249 -0
  298. package/dist/gateway/__tests__/websocket-client.test.js.map +1 -0
  299. package/dist/gateway/gateway-request.d.ts +17 -0
  300. package/dist/gateway/gateway-request.d.ts.map +1 -0
  301. package/dist/gateway/gateway-request.js +39 -0
  302. package/dist/gateway/gateway-request.js.map +1 -0
  303. package/dist/gateway/message-router.d.ts +31 -0
  304. package/dist/gateway/message-router.d.ts.map +1 -0
  305. package/dist/gateway/message-router.js +91 -0
  306. package/dist/gateway/message-router.js.map +1 -0
  307. package/dist/gateway/messages/__tests__/daemon-register.test.d.ts +2 -0
  308. package/dist/gateway/messages/__tests__/daemon-register.test.d.ts.map +1 -0
  309. package/dist/gateway/messages/__tests__/daemon-register.test.js +113 -0
  310. package/dist/gateway/messages/__tests__/daemon-register.test.js.map +1 -0
  311. package/dist/gateway/messages/__tests__/project-sync.test.d.ts +2 -0
  312. package/dist/gateway/messages/__tests__/project-sync.test.d.ts.map +1 -0
  313. package/dist/gateway/messages/__tests__/project-sync.test.js +92 -0
  314. package/dist/gateway/messages/__tests__/project-sync.test.js.map +1 -0
  315. package/dist/gateway/messages/daemon-register.d.ts +13 -0
  316. package/dist/gateway/messages/daemon-register.d.ts.map +1 -0
  317. package/dist/gateway/messages/daemon-register.js +39 -0
  318. package/dist/gateway/messages/daemon-register.js.map +1 -0
  319. package/dist/gateway/messages/project-sync.d.ts +16 -0
  320. package/dist/gateway/messages/project-sync.d.ts.map +1 -0
  321. package/dist/gateway/messages/project-sync.js +42 -0
  322. package/dist/gateway/messages/project-sync.js.map +1 -0
  323. package/dist/gateway/types.d.ts +41 -0
  324. package/dist/gateway/types.d.ts.map +1 -0
  325. package/dist/gateway/types.js +5 -0
  326. package/dist/gateway/types.js.map +1 -0
  327. package/dist/gateway/websocket-client.d.ts +55 -0
  328. package/dist/gateway/websocket-client.d.ts.map +1 -0
  329. package/dist/gateway/websocket-client.js +185 -0
  330. package/dist/gateway/websocket-client.js.map +1 -0
  331. package/dist/handlers/__tests__/agent-cancel.test.d.ts +2 -0
  332. package/dist/handlers/__tests__/agent-cancel.test.d.ts.map +1 -0
  333. package/dist/handlers/__tests__/agent-cancel.test.js +152 -0
  334. package/dist/handlers/__tests__/agent-cancel.test.js.map +1 -0
  335. package/dist/handlers/__tests__/agent-message.test.d.ts +2 -0
  336. package/dist/handlers/__tests__/agent-message.test.d.ts.map +1 -0
  337. package/dist/handlers/__tests__/agent-message.test.js +270 -0
  338. package/dist/handlers/__tests__/agent-message.test.js.map +1 -0
  339. package/dist/handlers/__tests__/agent-session-new.test.d.ts +2 -0
  340. package/dist/handlers/__tests__/agent-session-new.test.d.ts.map +1 -0
  341. package/dist/handlers/__tests__/agent-session-new.test.js +185 -0
  342. package/dist/handlers/__tests__/agent-session-new.test.js.map +1 -0
  343. package/dist/handlers/__tests__/agent-sessions-list.test.d.ts +2 -0
  344. package/dist/handlers/__tests__/agent-sessions-list.test.d.ts.map +1 -0
  345. package/dist/handlers/__tests__/agent-sessions-list.test.js +171 -0
  346. package/dist/handlers/__tests__/agent-sessions-list.test.js.map +1 -0
  347. package/dist/handlers/__tests__/command-cancel.test.d.ts +2 -0
  348. package/dist/handlers/__tests__/command-cancel.test.d.ts.map +1 -0
  349. package/dist/handlers/__tests__/command-cancel.test.js +121 -0
  350. package/dist/handlers/__tests__/command-cancel.test.js.map +1 -0
  351. package/dist/handlers/__tests__/command-exec.test.d.ts +2 -0
  352. package/dist/handlers/__tests__/command-exec.test.d.ts.map +1 -0
  353. package/dist/handlers/__tests__/command-exec.test.js +155 -0
  354. package/dist/handlers/__tests__/command-exec.test.js.map +1 -0
  355. package/dist/handlers/__tests__/fs-create.test.d.ts +2 -0
  356. package/dist/handlers/__tests__/fs-create.test.d.ts.map +1 -0
  357. package/dist/handlers/__tests__/fs-create.test.js +147 -0
  358. package/dist/handlers/__tests__/fs-create.test.js.map +1 -0
  359. package/dist/handlers/__tests__/fs-delete.test.d.ts +2 -0
  360. package/dist/handlers/__tests__/fs-delete.test.d.ts.map +1 -0
  361. package/dist/handlers/__tests__/fs-delete.test.js +153 -0
  362. package/dist/handlers/__tests__/fs-delete.test.js.map +1 -0
  363. package/dist/handlers/__tests__/fs-list.test.d.ts +2 -0
  364. package/dist/handlers/__tests__/fs-list.test.d.ts.map +1 -0
  365. package/dist/handlers/__tests__/fs-list.test.js +203 -0
  366. package/dist/handlers/__tests__/fs-list.test.js.map +1 -0
  367. package/dist/handlers/__tests__/fs-read.test.d.ts +2 -0
  368. package/dist/handlers/__tests__/fs-read.test.d.ts.map +1 -0
  369. package/dist/handlers/__tests__/fs-read.test.js +178 -0
  370. package/dist/handlers/__tests__/fs-read.test.js.map +1 -0
  371. package/dist/handlers/__tests__/fs-replace.test.d.ts +2 -0
  372. package/dist/handlers/__tests__/fs-replace.test.d.ts.map +1 -0
  373. package/dist/handlers/__tests__/fs-replace.test.js +201 -0
  374. package/dist/handlers/__tests__/fs-replace.test.js.map +1 -0
  375. package/dist/handlers/__tests__/fs-search.test.d.ts +2 -0
  376. package/dist/handlers/__tests__/fs-search.test.d.ts.map +1 -0
  377. package/dist/handlers/__tests__/fs-search.test.js +195 -0
  378. package/dist/handlers/__tests__/fs-search.test.js.map +1 -0
  379. package/dist/handlers/__tests__/fs-write.test.d.ts +2 -0
  380. package/dist/handlers/__tests__/fs-write.test.d.ts.map +1 -0
  381. package/dist/handlers/__tests__/fs-write.test.js +173 -0
  382. package/dist/handlers/__tests__/fs-write.test.js.map +1 -0
  383. package/dist/handlers/__tests__/git-branch-create.test.d.ts +2 -0
  384. package/dist/handlers/__tests__/git-branch-create.test.d.ts.map +1 -0
  385. package/dist/handlers/__tests__/git-branch-create.test.js +158 -0
  386. package/dist/handlers/__tests__/git-branch-create.test.js.map +1 -0
  387. package/dist/handlers/__tests__/git-branches.test.d.ts +2 -0
  388. package/dist/handlers/__tests__/git-branches.test.d.ts.map +1 -0
  389. package/dist/handlers/__tests__/git-branches.test.js +184 -0
  390. package/dist/handlers/__tests__/git-branches.test.js.map +1 -0
  391. package/dist/handlers/__tests__/git-checkout.test.d.ts +2 -0
  392. package/dist/handlers/__tests__/git-checkout.test.d.ts.map +1 -0
  393. package/dist/handlers/__tests__/git-checkout.test.js +126 -0
  394. package/dist/handlers/__tests__/git-checkout.test.js.map +1 -0
  395. package/dist/handlers/__tests__/git-commit.test.d.ts +2 -0
  396. package/dist/handlers/__tests__/git-commit.test.d.ts.map +1 -0
  397. package/dist/handlers/__tests__/git-commit.test.js +131 -0
  398. package/dist/handlers/__tests__/git-commit.test.js.map +1 -0
  399. package/dist/handlers/__tests__/git-diff.test.d.ts +2 -0
  400. package/dist/handlers/__tests__/git-diff.test.d.ts.map +1 -0
  401. package/dist/handlers/__tests__/git-diff.test.js +185 -0
  402. package/dist/handlers/__tests__/git-diff.test.js.map +1 -0
  403. package/dist/handlers/__tests__/git-discard.test.d.ts +2 -0
  404. package/dist/handlers/__tests__/git-discard.test.d.ts.map +1 -0
  405. package/dist/handlers/__tests__/git-discard.test.js +154 -0
  406. package/dist/handlers/__tests__/git-discard.test.js.map +1 -0
  407. package/dist/handlers/__tests__/git-file-base.test.d.ts +2 -0
  408. package/dist/handlers/__tests__/git-file-base.test.d.ts.map +1 -0
  409. package/dist/handlers/__tests__/git-file-base.test.js +148 -0
  410. package/dist/handlers/__tests__/git-file-base.test.js.map +1 -0
  411. package/dist/handlers/__tests__/git-pull.test.d.ts +2 -0
  412. package/dist/handlers/__tests__/git-pull.test.d.ts.map +1 -0
  413. package/dist/handlers/__tests__/git-pull.test.js +180 -0
  414. package/dist/handlers/__tests__/git-pull.test.js.map +1 -0
  415. package/dist/handlers/__tests__/git-push.test.d.ts +2 -0
  416. package/dist/handlers/__tests__/git-push.test.d.ts.map +1 -0
  417. package/dist/handlers/__tests__/git-push.test.js +177 -0
  418. package/dist/handlers/__tests__/git-push.test.js.map +1 -0
  419. package/dist/handlers/__tests__/git-stage.test.d.ts +2 -0
  420. package/dist/handlers/__tests__/git-stage.test.d.ts.map +1 -0
  421. package/dist/handlers/__tests__/git-stage.test.js +165 -0
  422. package/dist/handlers/__tests__/git-stage.test.js.map +1 -0
  423. package/dist/handlers/__tests__/git-status.test.d.ts +2 -0
  424. package/dist/handlers/__tests__/git-status.test.d.ts.map +1 -0
  425. package/dist/handlers/__tests__/git-status.test.js +182 -0
  426. package/dist/handlers/__tests__/git-status.test.js.map +1 -0
  427. package/dist/handlers/__tests__/machines-list.test.d.ts +2 -0
  428. package/dist/handlers/__tests__/machines-list.test.d.ts.map +1 -0
  429. package/dist/handlers/__tests__/machines-list.test.js +164 -0
  430. package/dist/handlers/__tests__/machines-list.test.js.map +1 -0
  431. package/dist/handlers/__tests__/project-create.test.d.ts +2 -0
  432. package/dist/handlers/__tests__/project-create.test.d.ts.map +1 -0
  433. package/dist/handlers/__tests__/project-create.test.js +166 -0
  434. package/dist/handlers/__tests__/project-create.test.js.map +1 -0
  435. package/dist/handlers/__tests__/project-delete.test.d.ts +2 -0
  436. package/dist/handlers/__tests__/project-delete.test.d.ts.map +1 -0
  437. package/dist/handlers/__tests__/project-delete.test.js +150 -0
  438. package/dist/handlers/__tests__/project-delete.test.js.map +1 -0
  439. package/dist/handlers/__tests__/projects-list.test.d.ts +2 -0
  440. package/dist/handlers/__tests__/projects-list.test.d.ts.map +1 -0
  441. package/dist/handlers/__tests__/projects-list.test.js +145 -0
  442. package/dist/handlers/__tests__/projects-list.test.js.map +1 -0
  443. package/dist/handlers/__tests__/terminal-create.test.d.ts +2 -0
  444. package/dist/handlers/__tests__/terminal-create.test.d.ts.map +1 -0
  445. package/dist/handlers/__tests__/terminal-create.test.js +156 -0
  446. package/dist/handlers/__tests__/terminal-create.test.js.map +1 -0
  447. package/dist/handlers/__tests__/terminal-kill.test.d.ts +2 -0
  448. package/dist/handlers/__tests__/terminal-kill.test.d.ts.map +1 -0
  449. package/dist/handlers/__tests__/terminal-kill.test.js +125 -0
  450. package/dist/handlers/__tests__/terminal-kill.test.js.map +1 -0
  451. package/dist/handlers/__tests__/terminal-resize.test.d.ts +2 -0
  452. package/dist/handlers/__tests__/terminal-resize.test.d.ts.map +1 -0
  453. package/dist/handlers/__tests__/terminal-resize.test.js +128 -0
  454. package/dist/handlers/__tests__/terminal-resize.test.js.map +1 -0
  455. package/dist/handlers/__tests__/terminal-stdin.test.d.ts +2 -0
  456. package/dist/handlers/__tests__/terminal-stdin.test.d.ts.map +1 -0
  457. package/dist/handlers/__tests__/terminal-stdin.test.js +128 -0
  458. package/dist/handlers/__tests__/terminal-stdin.test.js.map +1 -0
  459. package/dist/handlers/agent-cancel.d.ts +11 -0
  460. package/dist/handlers/agent-cancel.d.ts.map +1 -0
  461. package/dist/handlers/agent-cancel.js +67 -0
  462. package/dist/handlers/agent-cancel.js.map +1 -0
  463. package/dist/handlers/agent-message.d.ts +13 -0
  464. package/dist/handlers/agent-message.d.ts.map +1 -0
  465. package/dist/handlers/agent-message.js +119 -0
  466. package/dist/handlers/agent-message.js.map +1 -0
  467. package/dist/handlers/agent-prompt-response.d.ts +13 -0
  468. package/dist/handlers/agent-prompt-response.d.ts.map +1 -0
  469. package/dist/handlers/agent-prompt-response.js +26 -0
  470. package/dist/handlers/agent-prompt-response.js.map +1 -0
  471. package/dist/handlers/agent-session-new.d.ts +13 -0
  472. package/dist/handlers/agent-session-new.d.ts.map +1 -0
  473. package/dist/handlers/agent-session-new.js +106 -0
  474. package/dist/handlers/agent-session-new.js.map +1 -0
  475. package/dist/handlers/agent-sessions-list.d.ts +10 -0
  476. package/dist/handlers/agent-sessions-list.d.ts.map +1 -0
  477. package/dist/handlers/agent-sessions-list.js +78 -0
  478. package/dist/handlers/agent-sessions-list.js.map +1 -0
  479. package/dist/handlers/command-cancel.d.ts +9 -0
  480. package/dist/handlers/command-cancel.d.ts.map +1 -0
  481. package/dist/handlers/command-cancel.js +32 -0
  482. package/dist/handlers/command-cancel.js.map +1 -0
  483. package/dist/handlers/command-exec.d.ts +9 -0
  484. package/dist/handlers/command-exec.d.ts.map +1 -0
  485. package/dist/handlers/command-exec.js +74 -0
  486. package/dist/handlers/command-exec.js.map +1 -0
  487. package/dist/handlers/fs/__tests__/limits.test.d.ts +2 -0
  488. package/dist/handlers/fs/__tests__/limits.test.d.ts.map +1 -0
  489. package/dist/handlers/fs/__tests__/limits.test.js +154 -0
  490. package/dist/handlers/fs/__tests__/limits.test.js.map +1 -0
  491. package/dist/handlers/fs/limits.d.ts +41 -0
  492. package/dist/handlers/fs/limits.d.ts.map +1 -0
  493. package/dist/handlers/fs/limits.js +68 -0
  494. package/dist/handlers/fs/limits.js.map +1 -0
  495. package/dist/handlers/fs-create.d.ts +8 -0
  496. package/dist/handlers/fs-create.d.ts.map +1 -0
  497. package/dist/handlers/fs-create.js +98 -0
  498. package/dist/handlers/fs-create.js.map +1 -0
  499. package/dist/handlers/fs-delete.d.ts +8 -0
  500. package/dist/handlers/fs-delete.d.ts.map +1 -0
  501. package/dist/handlers/fs-delete.js +95 -0
  502. package/dist/handlers/fs-delete.js.map +1 -0
  503. package/dist/handlers/fs-list.d.ts +7 -0
  504. package/dist/handlers/fs-list.d.ts.map +1 -0
  505. package/dist/handlers/fs-list.js +70 -0
  506. package/dist/handlers/fs-list.js.map +1 -0
  507. package/dist/handlers/fs-read.d.ts +7 -0
  508. package/dist/handlers/fs-read.d.ts.map +1 -0
  509. package/dist/handlers/fs-read.js +98 -0
  510. package/dist/handlers/fs-read.js.map +1 -0
  511. package/dist/handlers/fs-replace.d.ts +8 -0
  512. package/dist/handlers/fs-replace.d.ts.map +1 -0
  513. package/dist/handlers/fs-replace.js +178 -0
  514. package/dist/handlers/fs-replace.js.map +1 -0
  515. package/dist/handlers/fs-search.d.ts +10 -0
  516. package/dist/handlers/fs-search.d.ts.map +1 -0
  517. package/dist/handlers/fs-search.js +302 -0
  518. package/dist/handlers/fs-search.js.map +1 -0
  519. package/dist/handlers/fs-write.d.ts +7 -0
  520. package/dist/handlers/fs-write.d.ts.map +1 -0
  521. package/dist/handlers/fs-write.js +74 -0
  522. package/dist/handlers/fs-write.js.map +1 -0
  523. package/dist/handlers/git/__tests__/credentials.test.d.ts +2 -0
  524. package/dist/handlers/git/__tests__/credentials.test.d.ts.map +1 -0
  525. package/dist/handlers/git/__tests__/credentials.test.js +145 -0
  526. package/dist/handlers/git/__tests__/credentials.test.js.map +1 -0
  527. package/dist/handlers/git/__tests__/error-parser.test.d.ts +2 -0
  528. package/dist/handlers/git/__tests__/error-parser.test.d.ts.map +1 -0
  529. package/dist/handlers/git/__tests__/error-parser.test.js +85 -0
  530. package/dist/handlers/git/__tests__/error-parser.test.js.map +1 -0
  531. package/dist/handlers/git/credentials.d.ts +55 -0
  532. package/dist/handlers/git/credentials.d.ts.map +1 -0
  533. package/dist/handlers/git/credentials.js +93 -0
  534. package/dist/handlers/git/credentials.js.map +1 -0
  535. package/dist/handlers/git/error-parser.d.ts +27 -0
  536. package/dist/handlers/git/error-parser.d.ts.map +1 -0
  537. package/dist/handlers/git/error-parser.js +98 -0
  538. package/dist/handlers/git/error-parser.js.map +1 -0
  539. package/dist/handlers/git-branch-create.d.ts +7 -0
  540. package/dist/handlers/git-branch-create.d.ts.map +1 -0
  541. package/dist/handlers/git-branch-create.js +60 -0
  542. package/dist/handlers/git-branch-create.js.map +1 -0
  543. package/dist/handlers/git-branches.d.ts +7 -0
  544. package/dist/handlers/git-branches.d.ts.map +1 -0
  545. package/dist/handlers/git-branches.js +60 -0
  546. package/dist/handlers/git-branches.js.map +1 -0
  547. package/dist/handlers/git-checkout.d.ts +7 -0
  548. package/dist/handlers/git-checkout.d.ts.map +1 -0
  549. package/dist/handlers/git-checkout.js +59 -0
  550. package/dist/handlers/git-checkout.js.map +1 -0
  551. package/dist/handlers/git-commit.d.ts +7 -0
  552. package/dist/handlers/git-commit.d.ts.map +1 -0
  553. package/dist/handlers/git-commit.js +59 -0
  554. package/dist/handlers/git-commit.js.map +1 -0
  555. package/dist/handlers/git-diff.d.ts +7 -0
  556. package/dist/handlers/git-diff.d.ts.map +1 -0
  557. package/dist/handlers/git-diff.js +56 -0
  558. package/dist/handlers/git-diff.js.map +1 -0
  559. package/dist/handlers/git-discard.d.ts +7 -0
  560. package/dist/handlers/git-discard.d.ts.map +1 -0
  561. package/dist/handlers/git-discard.js +56 -0
  562. package/dist/handlers/git-discard.js.map +1 -0
  563. package/dist/handlers/git-file-base.d.ts +7 -0
  564. package/dist/handlers/git-file-base.d.ts.map +1 -0
  565. package/dist/handlers/git-file-base.js +61 -0
  566. package/dist/handlers/git-file-base.js.map +1 -0
  567. package/dist/handlers/git-pull.d.ts +8 -0
  568. package/dist/handlers/git-pull.d.ts.map +1 -0
  569. package/dist/handlers/git-pull.js +69 -0
  570. package/dist/handlers/git-pull.js.map +1 -0
  571. package/dist/handlers/git-push.d.ts +7 -0
  572. package/dist/handlers/git-push.d.ts.map +1 -0
  573. package/dist/handlers/git-push.js +67 -0
  574. package/dist/handlers/git-push.js.map +1 -0
  575. package/dist/handlers/git-stage.d.ts +7 -0
  576. package/dist/handlers/git-stage.d.ts.map +1 -0
  577. package/dist/handlers/git-stage.js +56 -0
  578. package/dist/handlers/git-stage.js.map +1 -0
  579. package/dist/handlers/git-status.d.ts +7 -0
  580. package/dist/handlers/git-status.d.ts.map +1 -0
  581. package/dist/handlers/git-status.js +63 -0
  582. package/dist/handlers/git-status.js.map +1 -0
  583. package/dist/handlers/git-unstage.d.ts +7 -0
  584. package/dist/handlers/git-unstage.d.ts.map +1 -0
  585. package/dist/handlers/git-unstage.js +56 -0
  586. package/dist/handlers/git-unstage.js.map +1 -0
  587. package/dist/handlers/machines-list.d.ts +14 -0
  588. package/dist/handlers/machines-list.d.ts.map +1 -0
  589. package/dist/handlers/machines-list.js +53 -0
  590. package/dist/handlers/machines-list.js.map +1 -0
  591. package/dist/handlers/project-create.d.ts +18 -0
  592. package/dist/handlers/project-create.d.ts.map +1 -0
  593. package/dist/handlers/project-create.js +100 -0
  594. package/dist/handlers/project-create.js.map +1 -0
  595. package/dist/handlers/project-delete.d.ts +19 -0
  596. package/dist/handlers/project-delete.d.ts.map +1 -0
  597. package/dist/handlers/project-delete.js +89 -0
  598. package/dist/handlers/project-delete.js.map +1 -0
  599. package/dist/handlers/projects-list.d.ts +7 -0
  600. package/dist/handlers/projects-list.d.ts.map +1 -0
  601. package/dist/handlers/projects-list.js +42 -0
  602. package/dist/handlers/projects-list.js.map +1 -0
  603. package/dist/handlers/terminal-create.d.ts +8 -0
  604. package/dist/handlers/terminal-create.d.ts.map +1 -0
  605. package/dist/handlers/terminal-create.js +50 -0
  606. package/dist/handlers/terminal-create.js.map +1 -0
  607. package/dist/handlers/terminal-kill.d.ts +10 -0
  608. package/dist/handlers/terminal-kill.d.ts.map +1 -0
  609. package/dist/handlers/terminal-kill.js +32 -0
  610. package/dist/handlers/terminal-kill.js.map +1 -0
  611. package/dist/handlers/terminal-resize.d.ts +8 -0
  612. package/dist/handlers/terminal-resize.d.ts.map +1 -0
  613. package/dist/handlers/terminal-resize.js +29 -0
  614. package/dist/handlers/terminal-resize.js.map +1 -0
  615. package/dist/handlers/terminal-stdin.d.ts +8 -0
  616. package/dist/handlers/terminal-stdin.d.ts.map +1 -0
  617. package/dist/handlers/terminal-stdin.js +29 -0
  618. package/dist/handlers/terminal-stdin.js.map +1 -0
  619. package/dist/index.d.ts +8 -0
  620. package/dist/index.d.ts.map +1 -0
  621. package/dist/index.js +20 -0
  622. package/dist/index.js.map +1 -0
  623. package/dist/opencode/__tests__/check-installed.test.d.ts +2 -0
  624. package/dist/opencode/__tests__/check-installed.test.d.ts.map +1 -0
  625. package/dist/opencode/__tests__/check-installed.test.js +68 -0
  626. package/dist/opencode/__tests__/check-installed.test.js.map +1 -0
  627. package/dist/opencode/__tests__/detect.test.d.ts +2 -0
  628. package/dist/opencode/__tests__/detect.test.d.ts.map +1 -0
  629. package/dist/opencode/__tests__/detect.test.js +147 -0
  630. package/dist/opencode/__tests__/detect.test.js.map +1 -0
  631. package/dist/opencode/__tests__/health-check.test.d.ts +2 -0
  632. package/dist/opencode/__tests__/health-check.test.d.ts.map +1 -0
  633. package/dist/opencode/__tests__/health-check.test.js +143 -0
  634. package/dist/opencode/__tests__/health-check.test.js.map +1 -0
  635. package/dist/opencode/__tests__/permission-reply.test.d.ts +2 -0
  636. package/dist/opencode/__tests__/permission-reply.test.d.ts.map +1 -0
  637. package/dist/opencode/__tests__/permission-reply.test.js +140 -0
  638. package/dist/opencode/__tests__/permission-reply.test.js.map +1 -0
  639. package/dist/opencode/__tests__/proxy.test.d.ts +2 -0
  640. package/dist/opencode/__tests__/proxy.test.d.ts.map +1 -0
  641. package/dist/opencode/__tests__/proxy.test.js +179 -0
  642. package/dist/opencode/__tests__/proxy.test.js.map +1 -0
  643. package/dist/opencode/__tests__/session-filter.test.d.ts +2 -0
  644. package/dist/opencode/__tests__/session-filter.test.d.ts.map +1 -0
  645. package/dist/opencode/__tests__/session-filter.test.js +117 -0
  646. package/dist/opencode/__tests__/session-filter.test.js.map +1 -0
  647. package/dist/opencode/__tests__/spawn.test.d.ts +2 -0
  648. package/dist/opencode/__tests__/spawn.test.d.ts.map +1 -0
  649. package/dist/opencode/__tests__/spawn.test.js +167 -0
  650. package/dist/opencode/__tests__/spawn.test.js.map +1 -0
  651. package/dist/opencode/__tests__/sse.test.d.ts +2 -0
  652. package/dist/opencode/__tests__/sse.test.d.ts.map +1 -0
  653. package/dist/opencode/__tests__/sse.test.js +245 -0
  654. package/dist/opencode/__tests__/sse.test.js.map +1 -0
  655. package/dist/opencode/__tests__/supervisor.test.d.ts +2 -0
  656. package/dist/opencode/__tests__/supervisor.test.d.ts.map +1 -0
  657. package/dist/opencode/__tests__/supervisor.test.js +206 -0
  658. package/dist/opencode/__tests__/supervisor.test.js.map +1 -0
  659. package/dist/opencode/check-installed.d.ts +12 -0
  660. package/dist/opencode/check-installed.d.ts.map +1 -0
  661. package/dist/opencode/check-installed.js +25 -0
  662. package/dist/opencode/check-installed.js.map +1 -0
  663. package/dist/opencode/detect.d.ts +16 -0
  664. package/dist/opencode/detect.d.ts.map +1 -0
  665. package/dist/opencode/detect.js +102 -0
  666. package/dist/opencode/detect.js.map +1 -0
  667. package/dist/opencode/health-check.d.ts +31 -0
  668. package/dist/opencode/health-check.d.ts.map +1 -0
  669. package/dist/opencode/health-check.js +97 -0
  670. package/dist/opencode/health-check.js.map +1 -0
  671. package/dist/opencode/permission-reply.d.ts +14 -0
  672. package/dist/opencode/permission-reply.d.ts.map +1 -0
  673. package/dist/opencode/permission-reply.js +70 -0
  674. package/dist/opencode/permission-reply.js.map +1 -0
  675. package/dist/opencode/proxy.d.ts +45 -0
  676. package/dist/opencode/proxy.d.ts.map +1 -0
  677. package/dist/opencode/proxy.js +99 -0
  678. package/dist/opencode/proxy.js.map +1 -0
  679. package/dist/opencode/session-filter.d.ts +26 -0
  680. package/dist/opencode/session-filter.d.ts.map +1 -0
  681. package/dist/opencode/session-filter.js +20 -0
  682. package/dist/opencode/session-filter.js.map +1 -0
  683. package/dist/opencode/spawn.d.ts +24 -0
  684. package/dist/opencode/spawn.d.ts.map +1 -0
  685. package/dist/opencode/spawn.js +143 -0
  686. package/dist/opencode/spawn.js.map +1 -0
  687. package/dist/opencode/sse.d.ts +42 -0
  688. package/dist/opencode/sse.d.ts.map +1 -0
  689. package/dist/opencode/sse.js +250 -0
  690. package/dist/opencode/sse.js.map +1 -0
  691. package/dist/opencode/supervisor.d.ts +43 -0
  692. package/dist/opencode/supervisor.d.ts.map +1 -0
  693. package/dist/opencode/supervisor.js +153 -0
  694. package/dist/opencode/supervisor.js.map +1 -0
  695. package/dist/services/__tests__/autostart.test.d.ts +2 -0
  696. package/dist/services/__tests__/autostart.test.d.ts.map +1 -0
  697. package/dist/services/__tests__/autostart.test.js +176 -0
  698. package/dist/services/__tests__/autostart.test.js.map +1 -0
  699. package/dist/services/__tests__/file-watcher.test.d.ts +2 -0
  700. package/dist/services/__tests__/file-watcher.test.d.ts.map +1 -0
  701. package/dist/services/__tests__/file-watcher.test.js +265 -0
  702. package/dist/services/__tests__/file-watcher.test.js.map +1 -0
  703. package/dist/services/__tests__/git-pty.test.d.ts +2 -0
  704. package/dist/services/__tests__/git-pty.test.d.ts.map +1 -0
  705. package/dist/services/__tests__/git-pty.test.js +137 -0
  706. package/dist/services/__tests__/git-pty.test.js.map +1 -0
  707. package/dist/services/__tests__/message-queue.test.d.ts +2 -0
  708. package/dist/services/__tests__/message-queue.test.d.ts.map +1 -0
  709. package/dist/services/__tests__/message-queue.test.js +203 -0
  710. package/dist/services/__tests__/message-queue.test.js.map +1 -0
  711. package/dist/services/__tests__/queue-overflow.test.d.ts +2 -0
  712. package/dist/services/__tests__/queue-overflow.test.d.ts.map +1 -0
  713. package/dist/services/__tests__/queue-overflow.test.js +115 -0
  714. package/dist/services/__tests__/queue-overflow.test.js.map +1 -0
  715. package/dist/services/__tests__/shutdown.test.d.ts +2 -0
  716. package/dist/services/__tests__/shutdown.test.d.ts.map +1 -0
  717. package/dist/services/__tests__/shutdown.test.js +181 -0
  718. package/dist/services/__tests__/shutdown.test.js.map +1 -0
  719. package/dist/services/__tests__/terminal-exit.test.d.ts +2 -0
  720. package/dist/services/__tests__/terminal-exit.test.d.ts.map +1 -0
  721. package/dist/services/__tests__/terminal-exit.test.js +150 -0
  722. package/dist/services/__tests__/terminal-exit.test.js.map +1 -0
  723. package/dist/services/__tests__/terminal-stdout.test.d.ts +2 -0
  724. package/dist/services/__tests__/terminal-stdout.test.d.ts.map +1 -0
  725. package/dist/services/__tests__/terminal-stdout.test.js +160 -0
  726. package/dist/services/__tests__/terminal-stdout.test.js.map +1 -0
  727. package/dist/services/autostart.d.ts +42 -0
  728. package/dist/services/autostart.d.ts.map +1 -0
  729. package/dist/services/autostart.js +198 -0
  730. package/dist/services/autostart.js.map +1 -0
  731. package/dist/services/capabilities.d.ts +18 -0
  732. package/dist/services/capabilities.d.ts.map +1 -0
  733. package/dist/services/capabilities.js +38 -0
  734. package/dist/services/capabilities.js.map +1 -0
  735. package/dist/services/command-runner.d.ts +46 -0
  736. package/dist/services/command-runner.d.ts.map +1 -0
  737. package/dist/services/command-runner.js +151 -0
  738. package/dist/services/command-runner.js.map +1 -0
  739. package/dist/services/file-watcher.d.ts +35 -0
  740. package/dist/services/file-watcher.d.ts.map +1 -0
  741. package/dist/services/file-watcher.js +133 -0
  742. package/dist/services/file-watcher.js.map +1 -0
  743. package/dist/services/filesystem.d.ts +68 -0
  744. package/dist/services/filesystem.d.ts.map +1 -0
  745. package/dist/services/filesystem.js +249 -0
  746. package/dist/services/filesystem.js.map +1 -0
  747. package/dist/services/git.d.ts +149 -0
  748. package/dist/services/git.d.ts.map +1 -0
  749. package/dist/services/git.js +589 -0
  750. package/dist/services/git.js.map +1 -0
  751. package/dist/services/message-queue.d.ts +58 -0
  752. package/dist/services/message-queue.d.ts.map +1 -0
  753. package/dist/services/message-queue.js +118 -0
  754. package/dist/services/message-queue.js.map +1 -0
  755. package/dist/services/shutdown.d.ts +40 -0
  756. package/dist/services/shutdown.d.ts.map +1 -0
  757. package/dist/services/shutdown.js +144 -0
  758. package/dist/services/shutdown.js.map +1 -0
  759. package/dist/services/terminal-manager.d.ts +43 -0
  760. package/dist/services/terminal-manager.d.ts.map +1 -0
  761. package/dist/services/terminal-manager.js +118 -0
  762. package/dist/services/terminal-manager.js.map +1 -0
  763. package/dist/utils/__tests__/config.test.d.ts +2 -0
  764. package/dist/utils/__tests__/config.test.d.ts.map +1 -0
  765. package/dist/utils/__tests__/config.test.js +67 -0
  766. package/dist/utils/__tests__/config.test.js.map +1 -0
  767. package/dist/utils/__tests__/diff.test.d.ts +2 -0
  768. package/dist/utils/__tests__/diff.test.d.ts.map +1 -0
  769. package/dist/utils/__tests__/diff.test.js +40 -0
  770. package/dist/utils/__tests__/diff.test.js.map +1 -0
  771. package/dist/utils/__tests__/filename-validation.test.d.ts +2 -0
  772. package/dist/utils/__tests__/filename-validation.test.d.ts.map +1 -0
  773. package/dist/utils/__tests__/filename-validation.test.js +114 -0
  774. package/dist/utils/__tests__/filename-validation.test.js.map +1 -0
  775. package/dist/utils/__tests__/logger.test.d.ts +2 -0
  776. package/dist/utils/__tests__/logger.test.d.ts.map +1 -0
  777. package/dist/utils/__tests__/logger.test.js +254 -0
  778. package/dist/utils/__tests__/logger.test.js.map +1 -0
  779. package/dist/utils/__tests__/machine-key.test.d.ts +2 -0
  780. package/dist/utils/__tests__/machine-key.test.d.ts.map +1 -0
  781. package/dist/utils/__tests__/machine-key.test.js +123 -0
  782. package/dist/utils/__tests__/machine-key.test.js.map +1 -0
  783. package/dist/utils/__tests__/path-sandbox.test.d.ts +2 -0
  784. package/dist/utils/__tests__/path-sandbox.test.d.ts.map +1 -0
  785. package/dist/utils/__tests__/path-sandbox.test.js +97 -0
  786. package/dist/utils/__tests__/path-sandbox.test.js.map +1 -0
  787. package/dist/utils/__tests__/paths.test.d.ts +2 -0
  788. package/dist/utils/__tests__/paths.test.d.ts.map +1 -0
  789. package/dist/utils/__tests__/paths.test.js +87 -0
  790. package/dist/utils/__tests__/paths.test.js.map +1 -0
  791. package/dist/utils/__tests__/pid.test.d.ts +2 -0
  792. package/dist/utils/__tests__/pid.test.d.ts.map +1 -0
  793. package/dist/utils/__tests__/pid.test.js +79 -0
  794. package/dist/utils/__tests__/pid.test.js.map +1 -0
  795. package/dist/utils/__tests__/validate-project-path.test.d.ts +2 -0
  796. package/dist/utils/__tests__/validate-project-path.test.d.ts.map +1 -0
  797. package/dist/utils/__tests__/validate-project-path.test.js +178 -0
  798. package/dist/utils/__tests__/validate-project-path.test.js.map +1 -0
  799. package/dist/utils/config.d.ts +8 -0
  800. package/dist/utils/config.d.ts.map +1 -0
  801. package/dist/utils/config.js +16 -0
  802. package/dist/utils/config.js.map +1 -0
  803. package/dist/utils/diff.d.ts +11 -0
  804. package/dist/utils/diff.d.ts.map +1 -0
  805. package/dist/utils/diff.js +24 -0
  806. package/dist/utils/diff.js.map +1 -0
  807. package/dist/utils/filename-validation.d.ts +10 -0
  808. package/dist/utils/filename-validation.d.ts.map +1 -0
  809. package/dist/utils/filename-validation.js +55 -0
  810. package/dist/utils/filename-validation.js.map +1 -0
  811. package/dist/utils/logger.d.ts +18 -0
  812. package/dist/utils/logger.d.ts.map +1 -0
  813. package/dist/utils/logger.js +104 -0
  814. package/dist/utils/logger.js.map +1 -0
  815. package/dist/utils/machine-info.d.ts +6 -0
  816. package/dist/utils/machine-info.d.ts.map +1 -0
  817. package/dist/utils/machine-info.js +38 -0
  818. package/dist/utils/machine-info.js.map +1 -0
  819. package/dist/utils/machine-key.d.ts +20 -0
  820. package/dist/utils/machine-key.d.ts.map +1 -0
  821. package/dist/utils/machine-key.js +66 -0
  822. package/dist/utils/machine-key.js.map +1 -0
  823. package/dist/utils/path-sandbox.d.ts +24 -0
  824. package/dist/utils/path-sandbox.d.ts.map +1 -0
  825. package/dist/utils/path-sandbox.js +69 -0
  826. package/dist/utils/path-sandbox.js.map +1 -0
  827. package/dist/utils/paths.d.ts +19 -0
  828. package/dist/utils/paths.d.ts.map +1 -0
  829. package/dist/utils/paths.js +52 -0
  830. package/dist/utils/paths.js.map +1 -0
  831. package/dist/utils/pid.d.ts +23 -0
  832. package/dist/utils/pid.d.ts.map +1 -0
  833. package/dist/utils/pid.js +57 -0
  834. package/dist/utils/pid.js.map +1 -0
  835. package/dist/utils/validate-project-path.d.ts +17 -0
  836. package/dist/utils/validate-project-path.d.ts.map +1 -0
  837. package/dist/utils/validate-project-path.js +109 -0
  838. package/dist/utils/validate-project-path.js.map +1 -0
  839. package/package.json +59 -0
@@ -0,0 +1,42 @@
1
+ import { openDatabase } from "../database.js";
2
+ /**
3
+ * Creates a new command run record.
4
+ */
5
+ export function createCommandRun(requestId, projectId, command) {
6
+ const db = openDatabase();
7
+ db.prepare("INSERT INTO command_runs (request_id, project_id, command) VALUES (?, ?, ?)").run(requestId, projectId, command);
8
+ }
9
+ /**
10
+ * Updates a command run with its result.
11
+ */
12
+ export function updateCommandRun(requestId, exitCode, outputPreview, truncated) {
13
+ const db = openDatabase();
14
+ db.prepare("UPDATE command_runs SET exit_code = ?, output_preview = ?, truncated = ?, ended_at = CURRENT_TIMESTAMP WHERE request_id = ?").run(exitCode, outputPreview, truncated ? 1 : 0, requestId);
15
+ }
16
+ /**
17
+ * Returns a command run by its request ID, or null if not found.
18
+ */
19
+ export function getCommandRun(requestId) {
20
+ const db = openDatabase();
21
+ const row = db.prepare("SELECT * FROM command_runs WHERE request_id = ?").get(requestId);
22
+ return row ?? null;
23
+ }
24
+ /**
25
+ * Cleans up old command runs. Removes entries older than 7 days
26
+ * and trims to at most 10,000 rows (keeping the most recent).
27
+ */
28
+ export function cleanupOldRuns() {
29
+ const db = openDatabase();
30
+ // Delete runs older than 7 days
31
+ const ageResult = db
32
+ .prepare("DELETE FROM command_runs WHERE started_at < datetime('now', '-7 days')")
33
+ .run();
34
+ // Delete excess rows beyond the 10,000 limit (keep newest)
35
+ const limitResult = db
36
+ .prepare(`DELETE FROM command_runs WHERE request_id NOT IN (
37
+ SELECT request_id FROM command_runs ORDER BY started_at DESC LIMIT 10000
38
+ )`)
39
+ .run();
40
+ return ageResult.changes + limitResult.changes;
41
+ }
42
+ //# sourceMappingURL=command-runs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-runs.js","sourceRoot":"","sources":["../../../src/db/repositories/command-runs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAa9C;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,SAAiB,EAAE,SAAiB,EAAE,OAAe;IACpF,MAAM,EAAE,GAAG,YAAY,EAAE,CAAC;IAC1B,EAAE,CAAC,OAAO,CAAC,6EAA6E,CAAC,CAAC,GAAG,CAC3F,SAAS,EACT,SAAS,EACT,OAAO,CACR,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAC9B,SAAiB,EACjB,QAAgB,EAChB,aAA4B,EAC5B,SAAkB;IAElB,MAAM,EAAE,GAAG,YAAY,EAAE,CAAC;IAC1B,EAAE,CAAC,OAAO,CACR,6HAA6H,CAC9H,CAAC,GAAG,CAAC,QAAQ,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;AAC/D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,SAAiB;IAC7C,MAAM,EAAE,GAAG,YAAY,EAAE,CAAC;IAC1B,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,iDAAiD,CAAC,CAAC,GAAG,CAAC,SAAS,CAE1E,CAAC;IACd,OAAO,GAAG,IAAI,IAAI,CAAC;AACrB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc;IAC5B,MAAM,EAAE,GAAG,YAAY,EAAE,CAAC;IAE1B,gCAAgC;IAChC,MAAM,SAAS,GAAG,EAAE;SACjB,OAAO,CAAC,wEAAwE,CAAC;SACjF,GAAG,EAAE,CAAC;IAET,2DAA2D;IAC3D,MAAM,WAAW,GAAG,EAAE;SACnB,OAAO,CACN;;QAEE,CACH;SACA,GAAG,EAAE,CAAC;IAET,OAAO,SAAS,CAAC,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;AACjD,CAAC"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Repository for filesystem watcher state (seq tracking per project).
3
+ */
4
+ /**
5
+ * Initializes the fs_state entry for a project with last_seq = 0.
6
+ * No-op if the entry already exists.
7
+ */
8
+ export declare function initFsState(projectId: string): void;
9
+ /**
10
+ * Gets the current seq number for a project.
11
+ * Returns 0 if no entry exists.
12
+ */
13
+ export declare function getSeq(projectId: string): number;
14
+ /**
15
+ * Updates the seq number for a project to a specific value.
16
+ * Creates the entry if it doesn't exist.
17
+ */
18
+ export declare function updateSeq(projectId: string, seq: number): void;
19
+ /**
20
+ * Increments and returns the next seq number for a project.
21
+ * Creates the entry if it doesn't exist.
22
+ */
23
+ export declare function incrementSeq(projectId: string): number;
24
+ /**
25
+ * Resets the seq counter for a project.
26
+ */
27
+ export declare function resetSeq(projectId: string): void;
28
+ //# sourceMappingURL=fs-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fs-state.d.ts","sourceRoot":"","sources":["../../../src/db/repositories/fs-state.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;;GAGG;AACH,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAGnD;AAED;;;GAGG;AACH,wBAAgB,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAMhD;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAM9D;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAQtD;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAGhD"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Repository for filesystem watcher state (seq tracking per project).
3
+ */
4
+ import { openDatabase } from "../database.js";
5
+ /**
6
+ * Initializes the fs_state entry for a project with last_seq = 0.
7
+ * No-op if the entry already exists.
8
+ */
9
+ export function initFsState(projectId) {
10
+ const db = openDatabase();
11
+ db.prepare("INSERT OR IGNORE INTO fs_state (project_id, last_seq) VALUES (?, 0)").run(projectId);
12
+ }
13
+ /**
14
+ * Gets the current seq number for a project.
15
+ * Returns 0 if no entry exists.
16
+ */
17
+ export function getSeq(projectId) {
18
+ const db = openDatabase();
19
+ const row = db.prepare("SELECT last_seq FROM fs_state WHERE project_id = ?").get(projectId);
20
+ return row?.last_seq ?? 0;
21
+ }
22
+ /**
23
+ * Updates the seq number for a project to a specific value.
24
+ * Creates the entry if it doesn't exist.
25
+ */
26
+ export function updateSeq(projectId, seq) {
27
+ const db = openDatabase();
28
+ db.prepare(`INSERT INTO fs_state (project_id, last_seq) VALUES (?, ?)
29
+ ON CONFLICT (project_id) DO UPDATE SET last_seq = ?`).run(projectId, seq, seq);
30
+ }
31
+ /**
32
+ * Increments and returns the next seq number for a project.
33
+ * Creates the entry if it doesn't exist.
34
+ */
35
+ export function incrementSeq(projectId) {
36
+ const db = openDatabase();
37
+ db.prepare(`INSERT INTO fs_state (project_id, last_seq) VALUES (?, 1)
38
+ ON CONFLICT (project_id) DO UPDATE SET last_seq = last_seq + 1`).run(projectId);
39
+ return getSeq(projectId);
40
+ }
41
+ /**
42
+ * Resets the seq counter for a project.
43
+ */
44
+ export function resetSeq(projectId) {
45
+ const db = openDatabase();
46
+ db.prepare("DELETE FROM fs_state WHERE project_id = ?").run(projectId);
47
+ }
48
+ //# sourceMappingURL=fs-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fs-state.js","sourceRoot":"","sources":["../../../src/db/repositories/fs-state.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,SAAiB;IAC3C,MAAM,EAAE,GAAG,YAAY,EAAE,CAAC;IAC1B,EAAE,CAAC,OAAO,CAAC,qEAAqE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AACnG,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,MAAM,CAAC,SAAiB;IACtC,MAAM,EAAE,GAAG,YAAY,EAAE,CAAC;IAC1B,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,oDAAoD,CAAC,CAAC,GAAG,CAAC,SAAS,CAE7E,CAAC;IACd,OAAO,GAAG,EAAE,QAAQ,IAAI,CAAC,CAAC;AAC5B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,SAAiB,EAAE,GAAW;IACtD,MAAM,EAAE,GAAG,YAAY,EAAE,CAAC;IAC1B,EAAE,CAAC,OAAO,CACR;yDACqD,CACtD,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,SAAiB;IAC5C,MAAM,EAAE,GAAG,YAAY,EAAE,CAAC;IAC1B,EAAE,CAAC,OAAO,CACR;oEACgE,CACjE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAEjB,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC;AAC3B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,SAAiB;IACxC,MAAM,EAAE,GAAG,YAAY,EAAE,CAAC;IAC1B,EAAE,CAAC,OAAO,CAAC,2CAA2C,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AACzE,CAAC"}
@@ -0,0 +1,33 @@
1
+ export interface Project {
2
+ project_id: string;
3
+ name: string;
4
+ path: string;
5
+ created_at: string;
6
+ last_opened_at: string | null;
7
+ }
8
+ /**
9
+ * Creates a new project with a generated UUID.
10
+ */
11
+ export declare function createProject(name: string, path: string): Project;
12
+ /**
13
+ * Returns a project by its ID, or null if not found.
14
+ */
15
+ export declare function getProject(projectId: string): Project | null;
16
+ /**
17
+ * Returns a project by its filesystem path, or null if not found.
18
+ */
19
+ export declare function getProjectByPath(path: string): Project | null;
20
+ /**
21
+ * Returns all registered projects.
22
+ */
23
+ export declare function listProjects(): Project[];
24
+ /**
25
+ * Updates the last_opened_at timestamp to the current time.
26
+ */
27
+ export declare function updateProjectLastOpened(projectId: string): void;
28
+ /**
29
+ * Deletes a project. Related rows in claude_project_dirs, fs_state,
30
+ * and command_runs are removed automatically via ON DELETE CASCADE.
31
+ */
32
+ export declare function deleteProject(projectId: string): void;
33
+ //# sourceMappingURL=projects.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projects.d.ts","sourceRoot":"","sources":["../../../src/db/repositories/projects.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,OAAO;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAUjE;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAM5D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAI7D;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,OAAO,EAAE,CAGxC;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAK/D;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAGrD"}
@@ -0,0 +1,50 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { openDatabase } from "../database.js";
3
+ /**
4
+ * Creates a new project with a generated UUID.
5
+ */
6
+ export function createProject(name, path) {
7
+ const db = openDatabase();
8
+ const projectId = randomUUID();
9
+ db.prepare("INSERT INTO projects (project_id, name, path) VALUES (?, ?, ?)").run(projectId, name, path);
10
+ return getProject(projectId);
11
+ }
12
+ /**
13
+ * Returns a project by its ID, or null if not found.
14
+ */
15
+ export function getProject(projectId) {
16
+ const db = openDatabase();
17
+ const row = db.prepare("SELECT * FROM projects WHERE project_id = ?").get(projectId);
18
+ return row ?? null;
19
+ }
20
+ /**
21
+ * Returns a project by its filesystem path, or null if not found.
22
+ */
23
+ export function getProjectByPath(path) {
24
+ const db = openDatabase();
25
+ const row = db.prepare("SELECT * FROM projects WHERE path = ?").get(path);
26
+ return row ?? null;
27
+ }
28
+ /**
29
+ * Returns all registered projects.
30
+ */
31
+ export function listProjects() {
32
+ const db = openDatabase();
33
+ return db.prepare("SELECT * FROM projects ORDER BY name").all();
34
+ }
35
+ /**
36
+ * Updates the last_opened_at timestamp to the current time.
37
+ */
38
+ export function updateProjectLastOpened(projectId) {
39
+ const db = openDatabase();
40
+ db.prepare("UPDATE projects SET last_opened_at = CURRENT_TIMESTAMP WHERE project_id = ?").run(projectId);
41
+ }
42
+ /**
43
+ * Deletes a project. Related rows in claude_project_dirs, fs_state,
44
+ * and command_runs are removed automatically via ON DELETE CASCADE.
45
+ */
46
+ export function deleteProject(projectId) {
47
+ const db = openDatabase();
48
+ db.prepare("DELETE FROM projects WHERE project_id = ?").run(projectId);
49
+ }
50
+ //# sourceMappingURL=projects.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projects.js","sourceRoot":"","sources":["../../../src/db/repositories/projects.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAU9C;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,IAAY;IACtD,MAAM,EAAE,GAAG,YAAY,EAAE,CAAC;IAC1B,MAAM,SAAS,GAAG,UAAU,EAAE,CAAC;IAC/B,EAAE,CAAC,OAAO,CAAC,gEAAgE,CAAC,CAAC,GAAG,CAC9E,SAAS,EACT,IAAI,EACJ,IAAI,CACL,CAAC;IAEF,OAAO,UAAU,CAAC,SAAS,CAAE,CAAC;AAChC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,SAAiB;IAC1C,MAAM,EAAE,GAAG,YAAY,EAAE,CAAC;IAC1B,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,6CAA6C,CAAC,CAAC,GAAG,CAAC,SAAS,CAEtE,CAAC;IACd,OAAO,GAAG,IAAI,IAAI,CAAC;AACrB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,MAAM,EAAE,GAAG,YAAY,EAAE,CAAC;IAC1B,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,uCAAuC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAwB,CAAC;IACjG,OAAO,GAAG,IAAI,IAAI,CAAC;AACrB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY;IAC1B,MAAM,EAAE,GAAG,YAAY,EAAE,CAAC;IAC1B,OAAO,EAAE,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAAC,GAAG,EAAe,CAAC;AAC/E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB,CAAC,SAAiB;IACvD,MAAM,EAAE,GAAG,YAAY,EAAE,CAAC;IAC1B,EAAE,CAAC,OAAO,CAAC,6EAA6E,CAAC,CAAC,GAAG,CAC3F,SAAS,CACV,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,SAAiB;IAC7C,MAAM,EAAE,GAAG,YAAY,EAAE,CAAC;IAC1B,EAAE,CAAC,OAAO,CAAC,2CAA2C,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AACzE,CAAC"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Repository for terminal session tracking.
3
+ */
4
+ export interface TerminalSession {
5
+ terminal_id: string;
6
+ project_id: string;
7
+ pid: number | null;
8
+ created_at: string;
9
+ closed_at: string | null;
10
+ }
11
+ /**
12
+ * Creates a new terminal session with a generated UUID.
13
+ */
14
+ export declare function createTerminalSession(projectId: string, pid?: number): TerminalSession;
15
+ /**
16
+ * Returns a terminal session by ID, or null if not found.
17
+ */
18
+ export declare function getTerminalSession(terminalId: string): TerminalSession | null;
19
+ /**
20
+ * Lists active (unclosed) terminal sessions.
21
+ * Optionally filters by project ID.
22
+ */
23
+ export declare function listActiveSessions(projectId?: string): TerminalSession[];
24
+ /**
25
+ * Marks a terminal session as closed by setting closed_at to the current timestamp.
26
+ */
27
+ export declare function closeTerminalSession(terminalId: string): void;
28
+ //# sourceMappingURL=terminal-sessions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal-sessions.d.ts","sourceRoot":"","sources":["../../../src/db/repositories/terminal-sessions.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,eAAe,CAUtF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAM7E;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,eAAe,EAAE,CAYxE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAK7D"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Repository for terminal session tracking.
3
+ */
4
+ import { randomUUID } from "node:crypto";
5
+ import { openDatabase } from "../database.js";
6
+ /**
7
+ * Creates a new terminal session with a generated UUID.
8
+ */
9
+ export function createTerminalSession(projectId, pid) {
10
+ const db = openDatabase();
11
+ const terminalId = randomUUID();
12
+ db.prepare("INSERT INTO terminal_sessions (terminal_id, project_id, pid) VALUES (?, ?, ?)").run(terminalId, projectId, pid ?? null);
13
+ return getTerminalSession(terminalId);
14
+ }
15
+ /**
16
+ * Returns a terminal session by ID, or null if not found.
17
+ */
18
+ export function getTerminalSession(terminalId) {
19
+ const db = openDatabase();
20
+ const row = db
21
+ .prepare("SELECT * FROM terminal_sessions WHERE terminal_id = ?")
22
+ .get(terminalId);
23
+ return row ?? null;
24
+ }
25
+ /**
26
+ * Lists active (unclosed) terminal sessions.
27
+ * Optionally filters by project ID.
28
+ */
29
+ export function listActiveSessions(projectId) {
30
+ const db = openDatabase();
31
+ if (projectId) {
32
+ return db
33
+ .prepare("SELECT * FROM terminal_sessions WHERE closed_at IS NULL AND project_id = ? ORDER BY created_at DESC")
34
+ .all(projectId);
35
+ }
36
+ return db
37
+ .prepare("SELECT * FROM terminal_sessions WHERE closed_at IS NULL ORDER BY created_at DESC")
38
+ .all();
39
+ }
40
+ /**
41
+ * Marks a terminal session as closed by setting closed_at to the current timestamp.
42
+ */
43
+ export function closeTerminalSession(terminalId) {
44
+ const db = openDatabase();
45
+ db.prepare("UPDATE terminal_sessions SET closed_at = CURRENT_TIMESTAMP WHERE terminal_id = ?").run(terminalId);
46
+ }
47
+ //# sourceMappingURL=terminal-sessions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal-sessions.js","sourceRoot":"","sources":["../../../src/db/repositories/terminal-sessions.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAU9C;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,SAAiB,EAAE,GAAY;IACnE,MAAM,EAAE,GAAG,YAAY,EAAE,CAAC;IAC1B,MAAM,UAAU,GAAG,UAAU,EAAE,CAAC;IAChC,EAAE,CAAC,OAAO,CAAC,+EAA+E,CAAC,CAAC,GAAG,CAC7F,UAAU,EACV,SAAS,EACT,GAAG,IAAI,IAAI,CACZ,CAAC;IAEF,OAAO,kBAAkB,CAAC,UAAU,CAAE,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,UAAkB;IACnD,MAAM,EAAE,GAAG,YAAY,EAAE,CAAC;IAC1B,MAAM,GAAG,GAAG,EAAE;SACX,OAAO,CAAC,uDAAuD,CAAC;SAChE,GAAG,CAAC,UAAU,CAAgC,CAAC;IAClD,OAAO,GAAG,IAAI,IAAI,CAAC;AACrB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,SAAkB;IACnD,MAAM,EAAE,GAAG,YAAY,EAAE,CAAC;IAC1B,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,EAAE;aACN,OAAO,CACN,qGAAqG,CACtG;aACA,GAAG,CAAC,SAAS,CAAsB,CAAC;IACzC,CAAC;IACD,OAAO,EAAE;SACN,OAAO,CAAC,kFAAkF,CAAC;SAC3F,GAAG,EAAuB,CAAC;AAChC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,UAAkB;IACrD,MAAM,EAAE,GAAG,YAAY,EAAE,CAAC;IAC1B,EAAE,CAAC,OAAO,CACR,kFAAkF,CACnF,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AACpB,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * SQLite database schema for the PocketCoder daemon.
3
+ * Matches PRD.md Section 5 exactly.
4
+ */
5
+ export declare const SCHEMA_SQL = "\n-- Registered projects\nCREATE TABLE IF NOT EXISTS projects (\n project_id TEXT PRIMARY KEY,\n name TEXT NOT NULL,\n path TEXT NOT NULL UNIQUE,\n created_at DATETIME DEFAULT CURRENT_TIMESTAMP,\n last_opened_at DATETIME\n);\n\n-- Filesystem watcher state (only seq for sync)\nCREATE TABLE IF NOT EXISTS fs_state (\n project_id TEXT PRIMARY KEY REFERENCES projects(project_id) ON DELETE CASCADE,\n last_seq INTEGER NOT NULL DEFAULT 0\n);\n\n-- Command execution history\nCREATE TABLE IF NOT EXISTS command_runs (\n request_id TEXT PRIMARY KEY,\n project_id TEXT NOT NULL REFERENCES projects(project_id) ON DELETE CASCADE,\n command TEXT NOT NULL,\n started_at DATETIME DEFAULT CURRENT_TIMESTAMP,\n ended_at DATETIME,\n exit_code INTEGER,\n truncated BOOLEAN DEFAULT FALSE,\n output_preview TEXT\n);\n\n-- Terminal session tracking\nCREATE TABLE IF NOT EXISTS terminal_sessions (\n terminal_id TEXT PRIMARY KEY,\n project_id TEXT NOT NULL REFERENCES projects(project_id) ON DELETE CASCADE,\n pid INTEGER,\n created_at DATETIME DEFAULT CURRENT_TIMESTAMP,\n closed_at DATETIME\n);\n\n-- Indexes for frequently queried columns\nCREATE INDEX IF NOT EXISTS idx_projects_path ON projects(path);\nCREATE INDEX IF NOT EXISTS idx_command_runs_project ON command_runs(project_id);\nCREATE INDEX IF NOT EXISTS idx_command_runs_started ON command_runs(started_at);\nCREATE INDEX IF NOT EXISTS idx_terminal_sessions_project ON terminal_sessions(project_id);\nCREATE INDEX IF NOT EXISTS idx_terminal_sessions_created ON terminal_sessions(created_at);\n";
6
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,UAAU,0hDA2CtB,CAAC"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * SQLite database schema for the PocketCoder daemon.
3
+ * Matches PRD.md Section 5 exactly.
4
+ */
5
+ export const SCHEMA_SQL = `
6
+ -- Registered projects
7
+ CREATE TABLE IF NOT EXISTS projects (
8
+ project_id TEXT PRIMARY KEY,
9
+ name TEXT NOT NULL,
10
+ path TEXT NOT NULL UNIQUE,
11
+ created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
12
+ last_opened_at DATETIME
13
+ );
14
+
15
+ -- Filesystem watcher state (only seq for sync)
16
+ CREATE TABLE IF NOT EXISTS fs_state (
17
+ project_id TEXT PRIMARY KEY REFERENCES projects(project_id) ON DELETE CASCADE,
18
+ last_seq INTEGER NOT NULL DEFAULT 0
19
+ );
20
+
21
+ -- Command execution history
22
+ CREATE TABLE IF NOT EXISTS command_runs (
23
+ request_id TEXT PRIMARY KEY,
24
+ project_id TEXT NOT NULL REFERENCES projects(project_id) ON DELETE CASCADE,
25
+ command TEXT NOT NULL,
26
+ started_at DATETIME DEFAULT CURRENT_TIMESTAMP,
27
+ ended_at DATETIME,
28
+ exit_code INTEGER,
29
+ truncated BOOLEAN DEFAULT FALSE,
30
+ output_preview TEXT
31
+ );
32
+
33
+ -- Terminal session tracking
34
+ CREATE TABLE IF NOT EXISTS terminal_sessions (
35
+ terminal_id TEXT PRIMARY KEY,
36
+ project_id TEXT NOT NULL REFERENCES projects(project_id) ON DELETE CASCADE,
37
+ pid INTEGER,
38
+ created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
39
+ closed_at DATETIME
40
+ );
41
+
42
+ -- Indexes for frequently queried columns
43
+ CREATE INDEX IF NOT EXISTS idx_projects_path ON projects(path);
44
+ CREATE INDEX IF NOT EXISTS idx_command_runs_project ON command_runs(project_id);
45
+ CREATE INDEX IF NOT EXISTS idx_command_runs_started ON command_runs(started_at);
46
+ CREATE INDEX IF NOT EXISTS idx_terminal_sessions_project ON terminal_sessions(project_id);
47
+ CREATE INDEX IF NOT EXISTS idx_terminal_sessions_created ON terminal_sessions(created_at);
48
+ `;
49
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,CAAC,MAAM,UAAU,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2CzB,CAAC"}
package/dist/env.d.ts ADDED
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Environment configuration for the daemon.
3
+ * GATEWAY_URL: WebSocket URL for the gateway server
4
+ * SUPABASE_URL: Supabase project URL for OAuth redirects
5
+ */
6
+ export interface DaemonEnv {
7
+ gatewayUrl: string;
8
+ supabaseUrl: string;
9
+ }
10
+ /**
11
+ * Load and validate environment configuration.
12
+ * Reads GATEWAY_URL and SUPABASE_URL from process.env with production defaults.
13
+ */
14
+ export declare function getEnv(): DaemonEnv;
15
+ //# sourceMappingURL=env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,SAAS;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAKD;;;GAGG;AACH,wBAAgB,MAAM,IAAI,SAAS,CAalC"}
package/dist/env.js ADDED
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Environment configuration for the daemon.
3
+ * GATEWAY_URL: WebSocket URL for the gateway server
4
+ * SUPABASE_URL: Supabase project URL for OAuth redirects
5
+ */
6
+ const DEFAULT_GATEWAY_URL = "wss://gateway.pocketcoder.dev";
7
+ const DEFAULT_SUPABASE_URL = "https://ajsbcbsffnjfsvslabih.supabase.co";
8
+ /**
9
+ * Load and validate environment configuration.
10
+ * Reads GATEWAY_URL and SUPABASE_URL from process.env with production defaults.
11
+ */
12
+ export function getEnv() {
13
+ const gatewayUrl = process.env.GATEWAY_URL ?? DEFAULT_GATEWAY_URL;
14
+ const supabaseUrl = process.env.SUPABASE_URL ?? DEFAULT_SUPABASE_URL;
15
+ if (!gatewayUrl.startsWith("ws://") && !gatewayUrl.startsWith("wss://")) {
16
+ throw new Error(`Invalid GATEWAY_URL: "${gatewayUrl}". Must start with ws:// or wss://`);
17
+ }
18
+ if (!supabaseUrl.startsWith("https://")) {
19
+ throw new Error(`Invalid SUPABASE_URL: "${supabaseUrl}". Must start with https://`);
20
+ }
21
+ return { gatewayUrl, supabaseUrl };
22
+ }
23
+ //# sourceMappingURL=env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,MAAM,mBAAmB,GAAG,+BAA+B,CAAC;AAC5D,MAAM,oBAAoB,GAAG,0CAA0C,CAAC;AAExE;;;GAGG;AACH,MAAM,UAAU,MAAM;IACpB,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,mBAAmB,CAAC;IAClE,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,oBAAoB,CAAC;IAErE,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACxE,MAAM,IAAI,KAAK,CAAC,yBAAyB,UAAU,oCAAoC,CAAC,CAAC;IAC3F,CAAC;IAED,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,0BAA0B,WAAW,6BAA6B,CAAC,CAAC;IACtF,CAAC;IAED,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC;AACrC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.test.d.ts","sourceRoot":"","sources":["../../../src/errors/__tests__/index.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,105 @@
1
+ import { describe, it, expect } from "vitest";
2
+ import { createError, AppError, toMessageError, ErrorCode } from "../index.js";
3
+ describe("createError", () => {
4
+ it("should create formatted error response", () => {
5
+ const error = createError(ErrorCode.UNKNOWN_ERROR, "Something went wrong");
6
+ expect(error).toEqual({
7
+ code: ErrorCode.UNKNOWN_ERROR,
8
+ message: "Something went wrong",
9
+ });
10
+ });
11
+ it("should include error code", () => {
12
+ const error = createError(ErrorCode.FILE_NOT_FOUND, "File not found");
13
+ expect(error.code).toBe(ErrorCode.FILE_NOT_FOUND);
14
+ });
15
+ it("should include details when provided", () => {
16
+ const error = createError(ErrorCode.FILE_TOO_LARGE, "File exceeds 10MB limit", {
17
+ size: 15728640,
18
+ limit: 10485760,
19
+ });
20
+ expect(error.details).toEqual({
21
+ size: 15728640,
22
+ limit: 10485760,
23
+ });
24
+ });
25
+ it("should omit details when not provided", () => {
26
+ const error = createError(ErrorCode.UNAUTHORIZED, "Not authenticated");
27
+ expect(error).not.toHaveProperty("details");
28
+ });
29
+ it("should use all error codes from PRD specification with UPPERCASE values", () => {
30
+ // Verify key error codes exist in the enum with UPPERCASE values (per PRD)
31
+ expect(ErrorCode.OUTSIDE_PROJECT_ROOT).toBe("OUTSIDE_PROJECT_ROOT");
32
+ expect(ErrorCode.INVALID_FILENAME).toBe("INVALID_FILENAME");
33
+ expect(ErrorCode.PATH_NOT_FOUND).toBe("PATH_NOT_FOUND");
34
+ expect(ErrorCode.DAEMON_BUSY).toBe("DAEMON_BUSY");
35
+ expect(ErrorCode.TERMINAL_NOT_FOUND).toBe("TERMINAL_NOT_FOUND");
36
+ expect(ErrorCode.OPENCODE_NOT_INSTALLED).toBe("OPENCODE_NOT_INSTALLED");
37
+ expect(ErrorCode.PERMISSION_DENIED).toBe("PERMISSION_DENIED");
38
+ expect(ErrorCode.FILE_TOO_LARGE).toBe("FILE_TOO_LARGE");
39
+ expect(ErrorCode.UNSUPPORTED_FORMAT).toBe("UNSUPPORTED_FORMAT");
40
+ });
41
+ });
42
+ describe("AppError", () => {
43
+ it("should extend Error", () => {
44
+ const err = new AppError(ErrorCode.FILE_NOT_FOUND, "Not found");
45
+ expect(err).toBeInstanceOf(Error);
46
+ expect(err).toBeInstanceOf(AppError);
47
+ });
48
+ it("should carry code and message", () => {
49
+ const err = new AppError(ErrorCode.OUTSIDE_PROJECT_ROOT, "Path escapes project");
50
+ expect(err.code).toBe(ErrorCode.OUTSIDE_PROJECT_ROOT);
51
+ expect(err.message).toBe("Path escapes project");
52
+ expect(err.name).toBe("AppError");
53
+ });
54
+ it("should carry optional details", () => {
55
+ const err = new AppError(ErrorCode.FILE_TOO_LARGE, "Too large", {
56
+ size: 15728640,
57
+ limit: 10485760,
58
+ });
59
+ expect(err.details).toEqual({ size: 15728640, limit: 10485760 });
60
+ });
61
+ it("should convert to MessageError via toMessageError()", () => {
62
+ const err = new AppError(ErrorCode.TERMINAL_NOT_FOUND, "Terminal not found", {
63
+ terminalId: "t1",
64
+ });
65
+ const messageError = err.toMessageError();
66
+ expect(messageError).toEqual({
67
+ code: ErrorCode.TERMINAL_NOT_FOUND,
68
+ message: "Terminal not found",
69
+ details: { terminalId: "t1" },
70
+ });
71
+ });
72
+ });
73
+ describe("toMessageError", () => {
74
+ it("should extract MessageError from AppError", () => {
75
+ const err = new AppError(ErrorCode.INVALID_FILENAME, "Bad filename", {
76
+ filename: "con",
77
+ });
78
+ const result = toMessageError(err);
79
+ expect(result).toEqual({
80
+ code: ErrorCode.INVALID_FILENAME,
81
+ message: "Bad filename",
82
+ details: { filename: "con" },
83
+ });
84
+ });
85
+ it("should wrap regular Error as UNKNOWN_ERROR", () => {
86
+ const err = new Error("Something unexpected");
87
+ const result = toMessageError(err);
88
+ expect(result).toEqual({
89
+ code: ErrorCode.UNKNOWN_ERROR,
90
+ message: "Something unexpected",
91
+ });
92
+ });
93
+ it("should wrap string as UNKNOWN_ERROR", () => {
94
+ const result = toMessageError("string error");
95
+ expect(result).toEqual({
96
+ code: ErrorCode.UNKNOWN_ERROR,
97
+ message: "string error",
98
+ });
99
+ });
100
+ it("should handle null/undefined", () => {
101
+ expect(toMessageError(null).code).toBe(ErrorCode.UNKNOWN_ERROR);
102
+ expect(toMessageError(undefined).code).toBe(ErrorCode.UNKNOWN_ERROR);
103
+ });
104
+ });
105
+ //# sourceMappingURL=index.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../../src/errors/__tests__/index.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Error handling utilities for the Host application.
3
+ *
4
+ * Provides a consistent way to create error responses matching
5
+ * the MessageError format defined in @pocketcoder/shared.
6
+ */
7
+ import type { MessageError } from "@pocketcoder/shared";
8
+ import { ErrorCode } from "@pocketcoder/shared/constants";
9
+ export { ErrorCode };
10
+ /**
11
+ * Create a formatted error object matching the MessageError interface.
12
+ *
13
+ * @param code - ErrorCode enum value
14
+ * @param message - Human-readable error description
15
+ * @param details - Optional additional context
16
+ */
17
+ export declare function createError(code: ErrorCode, message: string, details?: Record<string, unknown>): MessageError;
18
+ /**
19
+ * Application-level error class that carries an ErrorCode.
20
+ * Handlers can throw this and the router/catch block can extract
21
+ * structured error information.
22
+ */
23
+ export declare class AppError extends Error {
24
+ readonly code: ErrorCode;
25
+ readonly details?: Record<string, unknown>;
26
+ constructor(code: ErrorCode, message: string, details?: Record<string, unknown>);
27
+ /** Convert to a MessageError for sending over the wire. */
28
+ toMessageError(): MessageError;
29
+ }
30
+ /**
31
+ * Extract a MessageError from an unknown caught value.
32
+ * If the value is an AppError, uses its code and details.
33
+ * Otherwise falls back to UNKNOWN_ERROR.
34
+ */
35
+ export declare function toMessageError(err: unknown): MessageError;
36
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAE1D,OAAO,EAAE,SAAS,EAAE,CAAC;AAErB;;;;;;GAMG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,YAAY,CAMd;AAED;;;;GAIG;AACH,qBAAa,QAAS,SAAQ,KAAK;IACjC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAE/B,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAO/E,2DAA2D;IAC3D,cAAc,IAAI,YAAY;CAG/B;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,YAAY,CAMzD"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Error handling utilities for the Host application.
3
+ *
4
+ * Provides a consistent way to create error responses matching
5
+ * the MessageError format defined in @pocketcoder/shared.
6
+ */
7
+ import { ErrorCode } from "@pocketcoder/shared/constants";
8
+ export { ErrorCode };
9
+ /**
10
+ * Create a formatted error object matching the MessageError interface.
11
+ *
12
+ * @param code - ErrorCode enum value
13
+ * @param message - Human-readable error description
14
+ * @param details - Optional additional context
15
+ */
16
+ export function createError(code, message, details) {
17
+ const error = { code, message };
18
+ if (details !== undefined) {
19
+ error.details = details;
20
+ }
21
+ return error;
22
+ }
23
+ /**
24
+ * Application-level error class that carries an ErrorCode.
25
+ * Handlers can throw this and the router/catch block can extract
26
+ * structured error information.
27
+ */
28
+ export class AppError extends Error {
29
+ code;
30
+ details;
31
+ constructor(code, message, details) {
32
+ super(message);
33
+ this.name = "AppError";
34
+ this.code = code;
35
+ this.details = details;
36
+ }
37
+ /** Convert to a MessageError for sending over the wire. */
38
+ toMessageError() {
39
+ return createError(this.code, this.message, this.details);
40
+ }
41
+ }
42
+ /**
43
+ * Extract a MessageError from an unknown caught value.
44
+ * If the value is an AppError, uses its code and details.
45
+ * Otherwise falls back to UNKNOWN_ERROR.
46
+ */
47
+ export function toMessageError(err) {
48
+ if (err instanceof AppError) {
49
+ return err.toMessageError();
50
+ }
51
+ const message = err instanceof Error ? err.message : String(err);
52
+ return createError(ErrorCode.UNKNOWN_ERROR, message);
53
+ }
54
+ //# sourceMappingURL=index.js.map