@cydm/happy-elves 0.1.0-beta.31 → 0.1.0-beta.310

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 (342) hide show
  1. package/apps/cli/dist/commands/app.js +10 -0
  2. package/apps/cli/dist/commands/daemon.js +92 -4
  3. package/apps/cli/dist/commands/gateway.d.ts +2 -0
  4. package/apps/cli/dist/commands/gateway.js +429 -0
  5. package/apps/cli/dist/commands/lib/args.js +49 -0
  6. package/apps/cli/dist/commands/lib/bootstrap-daemon.d.ts +2 -2
  7. package/apps/cli/dist/commands/lib/bootstrap-daemon.js +2 -2
  8. package/apps/cli/dist/commands/lib/doctor.d.ts +11 -0
  9. package/apps/cli/dist/commands/lib/doctor.js +276 -11
  10. package/apps/cli/dist/commands/lib/gateway-store.d.ts +38 -0
  11. package/apps/cli/dist/commands/lib/gateway-store.js +33 -0
  12. package/apps/cli/dist/commands/lib/index.d.ts +4 -2
  13. package/apps/cli/dist/commands/lib/index.js +2 -0
  14. package/apps/cli/dist/commands/lib/json.d.ts +2 -2
  15. package/apps/cli/dist/commands/lib/json.js +5 -2
  16. package/apps/cli/dist/commands/lib/local-daemon.d.ts +1 -0
  17. package/apps/cli/dist/commands/lib/local-daemon.js +14 -0
  18. package/apps/cli/dist/commands/lib/paths.d.ts +2 -0
  19. package/apps/cli/dist/commands/lib/paths.js +2 -0
  20. package/apps/cli/dist/commands/lib/relay-db-audit.d.ts +37 -0
  21. package/apps/cli/dist/commands/lib/relay-db-audit.js +300 -0
  22. package/apps/cli/dist/commands/lib/relay-http.d.ts +1 -1
  23. package/apps/cli/dist/commands/lib/scope.d.ts +1 -1
  24. package/apps/cli/dist/commands/lib/session-output.d.ts +15 -1
  25. package/apps/cli/dist/commands/lib/session-output.js +214 -6
  26. package/apps/cli/dist/commands/lib/session-view.d.ts +2 -2
  27. package/apps/cli/dist/commands/lib/status.js +5 -1
  28. package/apps/cli/dist/commands/lib/types.d.ts +4 -2
  29. package/apps/cli/dist/commands/lib/usage.js +123 -10
  30. package/apps/cli/dist/commands/lib/workspace.d.ts +2 -2
  31. package/apps/cli/dist/commands/lib/workspace.js +63 -10
  32. package/apps/cli/dist/commands/machine.js +50 -9
  33. package/apps/cli/dist/commands/memory.d.ts +2 -0
  34. package/apps/cli/dist/commands/memory.js +179 -0
  35. package/apps/cli/dist/commands/relay.js +29 -2
  36. package/apps/cli/dist/commands/release.d.ts +2 -0
  37. package/apps/cli/dist/commands/release.js +197 -0
  38. package/apps/cli/dist/commands/remote.js +10 -2
  39. package/apps/cli/dist/commands/schedule.d.ts +2 -0
  40. package/apps/cli/dist/commands/schedule.js +273 -0
  41. package/apps/cli/dist/commands/session.js +517 -5
  42. package/apps/cli/dist/commands/turn.js +225 -9
  43. package/apps/cli/dist/commands/workspace.d.ts +2 -0
  44. package/apps/cli/dist/commands/workspace.js +68 -0
  45. package/apps/cli/package.json +6 -0
  46. package/apps/daemon/dist/gateway/adapters.d.ts +38 -0
  47. package/apps/daemon/dist/gateway/adapters.js +2 -0
  48. package/apps/daemon/dist/gateway/feishu.d.ts +65 -0
  49. package/apps/daemon/dist/gateway/feishu.js +493 -0
  50. package/apps/daemon/dist/gateway/format.d.ts +2 -0
  51. package/apps/daemon/dist/gateway/format.js +19 -0
  52. package/apps/daemon/dist/gateway/handler.d.ts +7 -0
  53. package/apps/daemon/dist/gateway/handler.js +151 -0
  54. package/apps/daemon/dist/gateway/runtime.d.ts +33 -0
  55. package/apps/daemon/dist/gateway/runtime.js +850 -0
  56. package/apps/daemon/dist/gateway/store.d.ts +92 -0
  57. package/apps/daemon/dist/gateway/store.js +268 -0
  58. package/apps/daemon/dist/memory/handler.d.ts +7 -0
  59. package/apps/daemon/dist/memory/handler.js +105 -0
  60. package/apps/daemon/dist/memory/manager.d.ts +44 -0
  61. package/apps/daemon/dist/memory/manager.js +359 -0
  62. package/apps/daemon/dist/paths.d.ts +3 -0
  63. package/apps/daemon/dist/paths.js +3 -0
  64. package/apps/daemon/dist/relay/admission.d.ts +30 -0
  65. package/apps/daemon/dist/relay/admission.js +31 -0
  66. package/apps/daemon/dist/relay/connection.js +37 -1
  67. package/apps/daemon/dist/relay/devtools.d.ts +1 -1
  68. package/apps/daemon/dist/relay/register.js +2 -0
  69. package/apps/daemon/dist/relay/send.d.ts +2 -2
  70. package/apps/daemon/dist/relay/send.js +2 -0
  71. package/apps/daemon/dist/relay-http.d.ts +1 -1
  72. package/apps/daemon/dist/runtime/external-provider.d.ts +1 -1
  73. package/apps/daemon/dist/runtime/external-provider.js +187 -17
  74. package/apps/daemon/dist/runtime.d.ts +1 -2
  75. package/apps/daemon/dist/runtime.js +0 -3
  76. package/apps/daemon/dist/schedule/handler.d.ts +9 -0
  77. package/apps/daemon/dist/schedule/handler.js +148 -0
  78. package/apps/daemon/dist/schedule/runner.d.ts +21 -0
  79. package/apps/daemon/dist/schedule/runner.js +547 -0
  80. package/apps/daemon/dist/schedule/store.d.ts +9 -0
  81. package/apps/daemon/dist/schedule/store.js +143 -0
  82. package/apps/daemon/dist/session/create-session.d.ts +1 -1
  83. package/apps/daemon/dist/session/directory.d.ts +1 -1
  84. package/apps/daemon/dist/session/events.d.ts +15 -2
  85. package/apps/daemon/dist/session/events.js +76 -24
  86. package/apps/daemon/dist/session/file-preview.d.ts +1 -1
  87. package/apps/daemon/dist/session/lifecycle.d.ts +26 -3
  88. package/apps/daemon/dist/session/lifecycle.js +161 -22
  89. package/apps/daemon/dist/session/metadata.d.ts +2 -2
  90. package/apps/daemon/dist/session/metadata.js +42 -1
  91. package/apps/daemon/dist/session/primitives.d.ts +1 -1
  92. package/apps/daemon/dist/session/primitives.js +37 -6
  93. package/apps/daemon/dist/session/prompt.d.ts +28 -1
  94. package/apps/daemon/dist/session/prompt.js +340 -5
  95. package/apps/daemon/dist/session/reconcile.d.ts +3 -0
  96. package/apps/daemon/dist/session/reconcile.js +235 -0
  97. package/apps/daemon/dist/session/runtime-handle.d.ts +1 -1
  98. package/apps/daemon/dist/start.js +5 -1
  99. package/apps/daemon/dist/state.d.ts +2 -2
  100. package/apps/daemon/dist/turn-coordinator.d.ts +1 -0
  101. package/apps/daemon/dist/turn-coordinator.js +4 -0
  102. package/apps/daemon/dist/types.d.ts +16 -1
  103. package/apps/daemon/package.json +3 -25
  104. package/apps/relay/dist/connections.d.ts +2 -0
  105. package/apps/relay/dist/controller-handlers.d.ts +42 -2
  106. package/apps/relay/dist/controller-handlers.js +349 -37
  107. package/apps/relay/dist/db.js +296 -2
  108. package/apps/relay/dist/errors.d.ts +2 -1
  109. package/apps/relay/dist/errors.js +3 -1
  110. package/apps/relay/dist/http-routes.js +659 -33
  111. package/apps/relay/dist/http-schemas.d.ts +156 -0
  112. package/apps/relay/dist/http-schemas.js +85 -0
  113. package/apps/relay/dist/index.js +31 -1
  114. package/apps/relay/dist/machine-handlers.d.ts +15 -7
  115. package/apps/relay/dist/machine-handlers.js +567 -27
  116. package/apps/relay/dist/projections.d.ts +1 -1
  117. package/apps/relay/dist/projections.js +13 -0
  118. package/apps/relay/dist/relay-context.d.ts +41 -3
  119. package/apps/relay/dist/relay-context.js +244 -19
  120. package/apps/relay/dist/repositories.d.ts +2 -2
  121. package/apps/relay/dist/repositories.js +28 -1
  122. package/apps/relay/dist/runtime-bindings.d.ts +25 -0
  123. package/apps/relay/dist/runtime-bindings.js +49 -0
  124. package/apps/relay/dist/scope.d.ts +1 -1
  125. package/apps/relay/dist/types.d.ts +71 -1
  126. package/apps/relay/dist/websocket.js +2 -0
  127. package/package.json +5 -11
  128. package/packages/agent-sdk/dist/index.d.ts +80 -0
  129. package/packages/agent-sdk/dist/index.js +16 -0
  130. package/packages/client/dist/account.d.ts +35 -2
  131. package/packages/client/dist/account.js +98 -1
  132. package/packages/client/dist/client.d.ts +59 -6
  133. package/packages/client/dist/client.js +312 -58
  134. package/packages/client/dist/index.d.ts +1 -1
  135. package/packages/client/dist/parsers.d.ts +28 -2
  136. package/packages/client/dist/parsers.js +167 -0
  137. package/packages/client/dist/transport.d.ts +21 -1
  138. package/packages/client/dist/transport.js +69 -6
  139. package/packages/client/dist/types.d.ts +177 -1
  140. package/packages/client/dist/validation.d.ts +1 -1
  141. package/packages/runtime/dist/index.d.ts +66 -0
  142. package/packages/runtime-acpx/dist/index.d.ts +1 -1
  143. package/packages/runtime-acpx/dist/index.js +8 -0
  144. package/packages/runtime-cli/dist/claude-history.d.ts +1 -2
  145. package/packages/runtime-cli/dist/claude-history.js +0 -3
  146. package/packages/runtime-cli/dist/claude-session-store.d.ts +0 -1
  147. package/packages/runtime-cli/dist/claude-session-store.js +1 -1
  148. package/packages/runtime-cli/dist/claude-turn.d.ts +2 -1
  149. package/packages/runtime-cli/dist/claude-turn.js +29 -9
  150. package/packages/runtime-cli/dist/codex-app-server.d.ts +8 -3
  151. package/packages/runtime-cli/dist/codex-app-server.js +122 -25
  152. package/packages/runtime-cli/dist/codex-history.d.ts +1 -2
  153. package/packages/runtime-cli/dist/codex-history.js +11 -5
  154. package/packages/runtime-cli/dist/codex-protocol.d.ts +2 -2
  155. package/packages/runtime-cli/dist/codex-protocol.js +4 -4
  156. package/packages/runtime-cli/dist/history-merge.d.ts +1 -1
  157. package/packages/runtime-cli/dist/index.d.ts +1 -1
  158. package/packages/runtime-cli/dist/index.js +108 -2
  159. package/packages/runtime-cli/dist/permissions.d.ts +1 -1
  160. package/packages/runtime-cli/dist/session-store.d.ts +2 -1
  161. package/packages/runtime-cli/dist/session-store.js +9 -8
  162. package/packages/shared/dist/index.d.ts +2 -0
  163. package/packages/shared/dist/index.js +2 -0
  164. package/packages/shared/dist/protocol-schemas.d.ts +1077 -0
  165. package/packages/shared/dist/protocol-schemas.js +273 -0
  166. package/packages/shared/dist/protocol-types.d.ts +371 -3
  167. package/packages/shared/dist/protocol.d.ts +181 -2
  168. package/packages/shared/dist/protocol.js +197 -1
  169. package/packages/shared/dist/session-tags.d.ts +12 -0
  170. package/packages/shared/dist/session-tags.js +50 -0
  171. package/apps/cli/dist/commands/account.js.map +0 -1
  172. package/apps/cli/dist/commands/app.js.map +0 -1
  173. package/apps/cli/dist/commands/collect.js.map +0 -1
  174. package/apps/cli/dist/commands/command.js.map +0 -1
  175. package/apps/cli/dist/commands/config.js.map +0 -1
  176. package/apps/cli/dist/commands/daemon.js.map +0 -1
  177. package/apps/cli/dist/commands/lib/args.js.map +0 -1
  178. package/apps/cli/dist/commands/lib/audit.js.map +0 -1
  179. package/apps/cli/dist/commands/lib/bootstrap-config.js.map +0 -1
  180. package/apps/cli/dist/commands/lib/bootstrap-daemon.js.map +0 -1
  181. package/apps/cli/dist/commands/lib/bootstrap-output.js.map +0 -1
  182. package/apps/cli/dist/commands/lib/bootstrap.js.map +0 -1
  183. package/apps/cli/dist/commands/lib/config.js.map +0 -1
  184. package/apps/cli/dist/commands/lib/doctor.js.map +0 -1
  185. package/apps/cli/dist/commands/lib/exit.js.map +0 -1
  186. package/apps/cli/dist/commands/lib/index.js.map +0 -1
  187. package/apps/cli/dist/commands/lib/json.js.map +0 -1
  188. package/apps/cli/dist/commands/lib/local-daemon.js.map +0 -1
  189. package/apps/cli/dist/commands/lib/loop-store.js.map +0 -1
  190. package/apps/cli/dist/commands/lib/paths.js.map +0 -1
  191. package/apps/cli/dist/commands/lib/relay-http.js.map +0 -1
  192. package/apps/cli/dist/commands/lib/scope.js.map +0 -1
  193. package/apps/cli/dist/commands/lib/session-output.js.map +0 -1
  194. package/apps/cli/dist/commands/lib/session-view.js.map +0 -1
  195. package/apps/cli/dist/commands/lib/status.js.map +0 -1
  196. package/apps/cli/dist/commands/lib/types.js.map +0 -1
  197. package/apps/cli/dist/commands/lib/usage.js.map +0 -1
  198. package/apps/cli/dist/commands/lib/workspace.js.map +0 -1
  199. package/apps/cli/dist/commands/loop.js.map +0 -1
  200. package/apps/cli/dist/commands/machine.js.map +0 -1
  201. package/apps/cli/dist/commands/relay.js.map +0 -1
  202. package/apps/cli/dist/commands/remote.js.map +0 -1
  203. package/apps/cli/dist/commands/session.js.map +0 -1
  204. package/apps/cli/dist/commands/token.js.map +0 -1
  205. package/apps/cli/dist/commands/turn.js.map +0 -1
  206. package/apps/cli/dist/errors.js.map +0 -1
  207. package/apps/cli/dist/index.js.map +0 -1
  208. package/apps/daemon/dist/app.js.map +0 -1
  209. package/apps/daemon/dist/args.js.map +0 -1
  210. package/apps/daemon/dist/audit.js.map +0 -1
  211. package/apps/daemon/dist/cli.js.map +0 -1
  212. package/apps/daemon/dist/config.js.map +0 -1
  213. package/apps/daemon/dist/errors.js.map +0 -1
  214. package/apps/daemon/dist/loop/runner.js.map +0 -1
  215. package/apps/daemon/dist/loop/store.js.map +0 -1
  216. package/apps/daemon/dist/pair.js.map +0 -1
  217. package/apps/daemon/dist/paths.js.map +0 -1
  218. package/apps/daemon/dist/process.js.map +0 -1
  219. package/apps/daemon/dist/relay/connection.js.map +0 -1
  220. package/apps/daemon/dist/relay/devtools.js.map +0 -1
  221. package/apps/daemon/dist/relay/register.js.map +0 -1
  222. package/apps/daemon/dist/relay/send.js.map +0 -1
  223. package/apps/daemon/dist/relay-http.js.map +0 -1
  224. package/apps/daemon/dist/runtime/external-provider.js.map +0 -1
  225. package/apps/daemon/dist/runtime.js.map +0 -1
  226. package/apps/daemon/dist/session/create-session.js.map +0 -1
  227. package/apps/daemon/dist/session/directory.js.map +0 -1
  228. package/apps/daemon/dist/session/events.js.map +0 -1
  229. package/apps/daemon/dist/session/file-preview.js.map +0 -1
  230. package/apps/daemon/dist/session/lifecycle.js.map +0 -1
  231. package/apps/daemon/dist/session/metadata.js.map +0 -1
  232. package/apps/daemon/dist/session/primitives.js.map +0 -1
  233. package/apps/daemon/dist/session/prompt.js.map +0 -1
  234. package/apps/daemon/dist/session/runtime-handle.js.map +0 -1
  235. package/apps/daemon/dist/start.js.map +0 -1
  236. package/apps/daemon/dist/state.js.map +0 -1
  237. package/apps/daemon/dist/turn-coordinator.js.map +0 -1
  238. package/apps/daemon/dist/types.js.map +0 -1
  239. package/apps/daemon/dist/utils.js.map +0 -1
  240. package/apps/relay/dist/auth.js.map +0 -1
  241. package/apps/relay/dist/connections.js.map +0 -1
  242. package/apps/relay/dist/controller-handlers.js.map +0 -1
  243. package/apps/relay/dist/db.js.map +0 -1
  244. package/apps/relay/dist/errors.js.map +0 -1
  245. package/apps/relay/dist/http-routes.js.map +0 -1
  246. package/apps/relay/dist/http-schemas.js.map +0 -1
  247. package/apps/relay/dist/index.js.map +0 -1
  248. package/apps/relay/dist/machine-handlers.js.map +0 -1
  249. package/apps/relay/dist/projections.js.map +0 -1
  250. package/apps/relay/dist/relay-context.js.map +0 -1
  251. package/apps/relay/dist/repositories.js.map +0 -1
  252. package/apps/relay/dist/retention.js.map +0 -1
  253. package/apps/relay/dist/scope.js.map +0 -1
  254. package/apps/relay/dist/security.js.map +0 -1
  255. package/apps/relay/dist/types.js.map +0 -1
  256. package/apps/relay/dist/websocket.js.map +0 -1
  257. package/apps/relay/package.json +0 -29
  258. package/packages/agent-sdk/dist/index.d.ts.map +0 -1
  259. package/packages/agent-sdk/dist/index.js.map +0 -1
  260. package/packages/agent-sdk/package.json +0 -20
  261. package/packages/client/dist/account.d.ts.map +0 -1
  262. package/packages/client/dist/account.js.map +0 -1
  263. package/packages/client/dist/client.d.ts.map +0 -1
  264. package/packages/client/dist/client.js.map +0 -1
  265. package/packages/client/dist/errors.d.ts.map +0 -1
  266. package/packages/client/dist/errors.js.map +0 -1
  267. package/packages/client/dist/http.d.ts.map +0 -1
  268. package/packages/client/dist/http.js.map +0 -1
  269. package/packages/client/dist/index.d.ts.map +0 -1
  270. package/packages/client/dist/index.js.map +0 -1
  271. package/packages/client/dist/parsers.d.ts.map +0 -1
  272. package/packages/client/dist/parsers.js.map +0 -1
  273. package/packages/client/dist/transport.d.ts.map +0 -1
  274. package/packages/client/dist/transport.js.map +0 -1
  275. package/packages/client/dist/types.d.ts.map +0 -1
  276. package/packages/client/dist/types.js.map +0 -1
  277. package/packages/client/dist/validation.d.ts.map +0 -1
  278. package/packages/client/dist/validation.js.map +0 -1
  279. package/packages/client/package.json +0 -22
  280. package/packages/pie-provider/dist/index.d.ts.map +0 -1
  281. package/packages/pie-provider/dist/index.js.map +0 -1
  282. package/packages/pie-provider/package.json +0 -26
  283. package/packages/runtime/dist/index.d.ts.map +0 -1
  284. package/packages/runtime/dist/index.js.map +0 -1
  285. package/packages/runtime/package.json +0 -19
  286. package/packages/runtime-acpx/dist/index.d.ts.map +0 -1
  287. package/packages/runtime-acpx/dist/index.js.map +0 -1
  288. package/packages/runtime-acpx/package.json +0 -23
  289. package/packages/runtime-cli/dist/async-queue.d.ts.map +0 -1
  290. package/packages/runtime-cli/dist/async-queue.js.map +0 -1
  291. package/packages/runtime-cli/dist/claude-history.d.ts.map +0 -1
  292. package/packages/runtime-cli/dist/claude-history.js.map +0 -1
  293. package/packages/runtime-cli/dist/claude-json.d.ts.map +0 -1
  294. package/packages/runtime-cli/dist/claude-json.js.map +0 -1
  295. package/packages/runtime-cli/dist/claude-rename.d.ts.map +0 -1
  296. package/packages/runtime-cli/dist/claude-rename.js.map +0 -1
  297. package/packages/runtime-cli/dist/claude-session-store.d.ts.map +0 -1
  298. package/packages/runtime-cli/dist/claude-session-store.js.map +0 -1
  299. package/packages/runtime-cli/dist/claude-turn.d.ts.map +0 -1
  300. package/packages/runtime-cli/dist/claude-turn.js.map +0 -1
  301. package/packages/runtime-cli/dist/codex-app-server.d.ts.map +0 -1
  302. package/packages/runtime-cli/dist/codex-app-server.js.map +0 -1
  303. package/packages/runtime-cli/dist/codex-approvals.d.ts.map +0 -1
  304. package/packages/runtime-cli/dist/codex-approvals.js.map +0 -1
  305. package/packages/runtime-cli/dist/codex-history.d.ts.map +0 -1
  306. package/packages/runtime-cli/dist/codex-history.js.map +0 -1
  307. package/packages/runtime-cli/dist/codex-json-rpc.d.ts.map +0 -1
  308. package/packages/runtime-cli/dist/codex-json-rpc.js.map +0 -1
  309. package/packages/runtime-cli/dist/codex-lifecycle.d.ts.map +0 -1
  310. package/packages/runtime-cli/dist/codex-lifecycle.js.map +0 -1
  311. package/packages/runtime-cli/dist/codex-protocol.d.ts.map +0 -1
  312. package/packages/runtime-cli/dist/codex-protocol.js.map +0 -1
  313. package/packages/runtime-cli/dist/command-resolver.d.ts.map +0 -1
  314. package/packages/runtime-cli/dist/command-resolver.js.map +0 -1
  315. package/packages/runtime-cli/dist/history-merge.d.ts.map +0 -1
  316. package/packages/runtime-cli/dist/history-merge.js.map +0 -1
  317. package/packages/runtime-cli/dist/index.d.ts.map +0 -1
  318. package/packages/runtime-cli/dist/index.js.map +0 -1
  319. package/packages/runtime-cli/dist/permissions.d.ts.map +0 -1
  320. package/packages/runtime-cli/dist/permissions.js.map +0 -1
  321. package/packages/runtime-cli/dist/session-store.d.ts.map +0 -1
  322. package/packages/runtime-cli/dist/session-store.js.map +0 -1
  323. package/packages/runtime-cli/package.json +0 -22
  324. package/packages/shared/dist/args.d.ts.map +0 -1
  325. package/packages/shared/dist/args.js.map +0 -1
  326. package/packages/shared/dist/crypto.d.ts.map +0 -1
  327. package/packages/shared/dist/crypto.js.map +0 -1
  328. package/packages/shared/dist/ids.d.ts.map +0 -1
  329. package/packages/shared/dist/ids.js.map +0 -1
  330. package/packages/shared/dist/index.d.ts.map +0 -1
  331. package/packages/shared/dist/index.js.map +0 -1
  332. package/packages/shared/dist/protocol-schemas.d.ts.map +0 -1
  333. package/packages/shared/dist/protocol-schemas.js.map +0 -1
  334. package/packages/shared/dist/protocol-types.d.ts.map +0 -1
  335. package/packages/shared/dist/protocol-types.js.map +0 -1
  336. package/packages/shared/dist/protocol.d.ts.map +0 -1
  337. package/packages/shared/dist/protocol.js.map +0 -1
  338. package/packages/shared/dist/session-name.d.ts.map +0 -1
  339. package/packages/shared/dist/session-name.js.map +0 -1
  340. package/packages/shared/dist/session-state.d.ts.map +0 -1
  341. package/packages/shared/dist/session-state.js.map +0 -1
  342. package/packages/shared/package.json +0 -24
@@ -63,6 +63,10 @@ export function initDb(db) {
63
63
  encrypted_metadata TEXT,
64
64
  current_head TEXT,
65
65
  last_turn_id TEXT,
66
+ head_basis_event_id INTEGER,
67
+ head_basis_message_id TEXT,
68
+ head_basis_logical_time INTEGER,
69
+ head_basis_turn_seq INTEGER,
66
70
  source_session_id TEXT,
67
71
  source_checkpoint_id TEXT,
68
72
  created_at INTEGER NOT NULL,
@@ -112,6 +116,41 @@ export function initDb(db) {
112
116
  FOREIGN KEY (machine_id) REFERENCES machines(id) ON DELETE CASCADE
113
117
  );
114
118
 
119
+ CREATE TABLE IF NOT EXISTS session_runtime_bindings (
120
+ account_id TEXT NOT NULL,
121
+ machine_id TEXT NOT NULL,
122
+ agent TEXT NOT NULL,
123
+ runtime_session_id TEXT NOT NULL,
124
+ session_id TEXT NOT NULL,
125
+ status TEXT NOT NULL,
126
+ created_at INTEGER NOT NULL,
127
+ updated_at INTEGER NOT NULL,
128
+ PRIMARY KEY (account_id, machine_id, agent, runtime_session_id),
129
+ FOREIGN KEY (account_id) REFERENCES accounts(id) ON DELETE CASCADE,
130
+ FOREIGN KEY (session_id) REFERENCES sessions(id) ON DELETE CASCADE,
131
+ FOREIGN KEY (machine_id) REFERENCES machines(id) ON DELETE CASCADE
132
+ );
133
+
134
+ CREATE TABLE IF NOT EXISTS pending_session_head_advances (
135
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
136
+ account_id TEXT NOT NULL,
137
+ session_id TEXT NOT NULL,
138
+ machine_id TEXT NOT NULL,
139
+ message_id TEXT,
140
+ current_head TEXT NOT NULL,
141
+ last_turn_id TEXT NOT NULL,
142
+ basis_turn_id TEXT NOT NULL,
143
+ basis_event_message_id TEXT NOT NULL,
144
+ basis_turn_seq INTEGER NOT NULL,
145
+ basis_occurred_at INTEGER,
146
+ encrypted_metadata TEXT,
147
+ created_at INTEGER NOT NULL,
148
+ updated_at INTEGER NOT NULL,
149
+ FOREIGN KEY (account_id) REFERENCES accounts(id) ON DELETE CASCADE,
150
+ FOREIGN KEY (session_id) REFERENCES sessions(id) ON DELETE CASCADE,
151
+ FOREIGN KEY (machine_id) REFERENCES machines(id) ON DELETE CASCADE
152
+ );
153
+
115
154
  CREATE TABLE IF NOT EXISTS command_results (
116
155
  account_id TEXT NOT NULL,
117
156
  request_id TEXT NOT NULL,
@@ -121,35 +160,182 @@ export function initDb(db) {
121
160
  FOREIGN KEY (account_id) REFERENCES accounts(id) ON DELETE CASCADE
122
161
  );
123
162
 
163
+ CREATE TABLE IF NOT EXISTS relay_admissions (
164
+ account_id TEXT NOT NULL,
165
+ request_id TEXT NOT NULL,
166
+ session_id TEXT NOT NULL,
167
+ machine_id TEXT NOT NULL,
168
+ kind TEXT NOT NULL,
169
+ turn_id TEXT,
170
+ admission TEXT NOT NULL,
171
+ dispatch TEXT NOT NULL,
172
+ started_at INTEGER,
173
+ finished_at INTEGER,
174
+ terminal_status TEXT,
175
+ last_error_code TEXT,
176
+ created_at INTEGER NOT NULL,
177
+ updated_at INTEGER NOT NULL,
178
+ PRIMARY KEY (account_id, request_id),
179
+ FOREIGN KEY (account_id) REFERENCES accounts(id) ON DELETE CASCADE,
180
+ FOREIGN KEY (session_id) REFERENCES sessions(id) ON DELETE CASCADE,
181
+ FOREIGN KEY (machine_id) REFERENCES machines(id) ON DELETE CASCADE
182
+ );
183
+
184
+ CREATE TABLE IF NOT EXISTS relay_session_claims (
185
+ account_id TEXT NOT NULL,
186
+ session_id TEXT NOT NULL,
187
+ request_id TEXT NOT NULL,
188
+ machine_id TEXT NOT NULL,
189
+ turn_id TEXT NOT NULL,
190
+ command_type TEXT NOT NULL,
191
+ state TEXT NOT NULL,
192
+ created_at INTEGER NOT NULL,
193
+ updated_at INTEGER NOT NULL,
194
+ PRIMARY KEY (account_id, session_id),
195
+ FOREIGN KEY (account_id) REFERENCES accounts(id) ON DELETE CASCADE,
196
+ FOREIGN KEY (session_id) REFERENCES sessions(id) ON DELETE CASCADE,
197
+ FOREIGN KEY (machine_id) REFERENCES machines(id) ON DELETE CASCADE
198
+ );
199
+
200
+ CREATE TABLE IF NOT EXISTS relay_dispatch_outbox (
201
+ account_id TEXT NOT NULL,
202
+ request_id TEXT NOT NULL,
203
+ machine_id TEXT NOT NULL,
204
+ session_id TEXT NOT NULL,
205
+ command_type TEXT NOT NULL,
206
+ message TEXT NOT NULL,
207
+ state TEXT NOT NULL,
208
+ created_at INTEGER NOT NULL,
209
+ updated_at INTEGER NOT NULL,
210
+ delivered_at INTEGER,
211
+ PRIMARY KEY (account_id, request_id),
212
+ FOREIGN KEY (account_id) REFERENCES accounts(id) ON DELETE CASCADE,
213
+ FOREIGN KEY (session_id) REFERENCES sessions(id) ON DELETE CASCADE,
214
+ FOREIGN KEY (machine_id) REFERENCES machines(id) ON DELETE CASCADE
215
+ );
216
+
217
+ CREATE TABLE IF NOT EXISTS session_stars (
218
+ account_id TEXT NOT NULL,
219
+ session_id TEXT NOT NULL,
220
+ starred_at INTEGER NOT NULL,
221
+ PRIMARY KEY (account_id, session_id),
222
+ FOREIGN KEY (account_id) REFERENCES accounts(id) ON DELETE CASCADE,
223
+ FOREIGN KEY (session_id) REFERENCES sessions(id) ON DELETE CASCADE
224
+ );
225
+
226
+ CREATE TABLE IF NOT EXISTS account_recent_sessions (
227
+ account_id TEXT NOT NULL,
228
+ session_id TEXT NOT NULL,
229
+ last_selected_at INTEGER NOT NULL,
230
+ PRIMARY KEY (account_id, session_id),
231
+ FOREIGN KEY (account_id) REFERENCES accounts(id) ON DELETE CASCADE,
232
+ FOREIGN KEY (session_id) REFERENCES sessions(id) ON DELETE CASCADE
233
+ );
234
+
235
+ CREATE TABLE IF NOT EXISTS account_workspace_cwd_pins (
236
+ account_id TEXT NOT NULL,
237
+ machine_id TEXT NOT NULL,
238
+ cwd TEXT NOT NULL,
239
+ label TEXT,
240
+ pinned_at INTEGER NOT NULL,
241
+ PRIMARY KEY (account_id, machine_id, cwd),
242
+ FOREIGN KEY (account_id) REFERENCES accounts(id) ON DELETE CASCADE
243
+ );
244
+
245
+ CREATE TABLE IF NOT EXISTS account_project_preferences (
246
+ account_id TEXT NOT NULL,
247
+ project_key TEXT NOT NULL,
248
+ machine_id TEXT,
249
+ cwd TEXT,
250
+ agent TEXT,
251
+ memory_mode TEXT,
252
+ updated_at INTEGER NOT NULL,
253
+ PRIMARY KEY (account_id, project_key),
254
+ FOREIGN KEY (account_id) REFERENCES accounts(id) ON DELETE CASCADE
255
+ );
256
+
257
+ CREATE TABLE IF NOT EXISTS account_memories (
258
+ id TEXT PRIMARY KEY,
259
+ account_id TEXT NOT NULL,
260
+ project_key TEXT NOT NULL,
261
+ encrypted_memory TEXT NOT NULL,
262
+ created_at INTEGER NOT NULL,
263
+ updated_at INTEGER NOT NULL,
264
+ FOREIGN KEY (account_id) REFERENCES accounts(id) ON DELETE CASCADE
265
+ );
266
+
267
+ CREATE TABLE IF NOT EXISTS account_memory_settings (
268
+ account_id TEXT NOT NULL,
269
+ project_key TEXT NOT NULL,
270
+ disabled INTEGER NOT NULL DEFAULT 0,
271
+ injection_enabled INTEGER NOT NULL DEFAULT 0,
272
+ updated_at INTEGER NOT NULL,
273
+ PRIMARY KEY (account_id, project_key),
274
+ FOREIGN KEY (account_id) REFERENCES accounts(id) ON DELETE CASCADE
275
+ );
276
+
124
277
  CREATE INDEX IF NOT EXISTS idx_machines_account ON machines(account_id);
125
278
  CREATE INDEX IF NOT EXISTS idx_sessions_account ON sessions(account_id, updated_at DESC);
126
279
  CREATE INDEX IF NOT EXISTS idx_events_account ON session_events(account_id, id DESC);
127
280
  CREATE INDEX IF NOT EXISTS idx_events_session ON session_events(session_id, id);
128
281
  CREATE INDEX IF NOT EXISTS idx_turn_aliases_runtime
129
282
  ON session_turn_aliases(account_id, session_id, runtime_turn_id);
283
+ CREATE INDEX IF NOT EXISTS idx_runtime_bindings_session
284
+ ON session_runtime_bindings(account_id, session_id);
285
+ CREATE INDEX IF NOT EXISTS idx_pending_head_session
286
+ ON pending_session_head_advances(account_id, session_id, machine_id);
130
287
  CREATE INDEX IF NOT EXISTS idx_command_results_created ON command_results(created_at);
288
+ CREATE INDEX IF NOT EXISTS idx_relay_admissions_session ON relay_admissions(account_id, session_id);
289
+ CREATE INDEX IF NOT EXISTS idx_relay_session_claims_request ON relay_session_claims(account_id, request_id);
290
+ CREATE INDEX IF NOT EXISTS idx_relay_outbox_machine_state ON relay_dispatch_outbox(account_id, machine_id, state, created_at);
131
291
  CREATE INDEX IF NOT EXISTS idx_controller_invites_account ON controller_invites(account_id, created_at DESC);
292
+ CREATE INDEX IF NOT EXISTS idx_session_stars_account ON session_stars(account_id, starred_at DESC);
293
+ CREATE INDEX IF NOT EXISTS idx_recent_sessions_account ON account_recent_sessions(account_id, last_selected_at DESC);
294
+ CREATE INDEX IF NOT EXISTS idx_workspace_cwd_pins_account ON account_workspace_cwd_pins(account_id, pinned_at DESC);
295
+ CREATE INDEX IF NOT EXISTS idx_memories_account_project ON account_memories(account_id, project_key, updated_at DESC);
132
296
  `);
133
297
  ensureColumn(db, "sessions", "current_head", "TEXT");
134
298
  ensureColumn(db, "sessions", "last_turn_id", "TEXT");
299
+ ensureColumn(db, "sessions", "head_basis_event_id", "INTEGER");
300
+ ensureColumn(db, "sessions", "head_basis_message_id", "TEXT");
301
+ ensureColumn(db, "sessions", "head_basis_logical_time", "INTEGER");
302
+ ensureColumn(db, "sessions", "head_basis_turn_seq", "INTEGER");
135
303
  ensureColumn(db, "sessions", "source_session_id", "TEXT");
136
304
  ensureColumn(db, "sessions", "source_checkpoint_id", "TEXT");
137
305
  ensureColumn(db, "session_events", "message_id", "TEXT");
138
306
  ensureColumn(db, "session_events", "turn_seq", "INTEGER");
139
307
  ensureColumn(db, "session_events", "occurred_at", "INTEGER");
308
+ ensureColumn(db, "relay_admissions", "started_at", "INTEGER");
309
+ ensureColumn(db, "relay_admissions", "finished_at", "INTEGER");
310
+ ensureColumn(db, "relay_admissions", "terminal_status", "TEXT");
311
+ ensureColumn(db, "relay_admissions", "last_error_code", "TEXT");
312
+ ensureColumn(db, "relay_dispatch_outbox", "message", "TEXT");
313
+ ensureColumn(db, "relay_dispatch_outbox", "command_type", "TEXT");
314
+ ensureColumn(db, "relay_dispatch_outbox", "delivered_at", "INTEGER");
140
315
  ensureColumn(db, "tokens", "device_name", "TEXT");
141
316
  ensureColumn(db, "tokens", "revoked_at", "INTEGER");
142
317
  ensureColumn(db, "tokens", "expires_at", "INTEGER");
143
318
  ensureColumn(db, "tokens", "scope", "TEXT");
319
+ ensureColumn(db, "tokens", "last_seen", "INTEGER");
320
+ ensureColumn(db, "account_project_preferences", "memory_mode", "TEXT");
144
321
  ensureColumn(db, "controller_invites", "created_by_device_id", "TEXT");
145
322
  ensureColumn(db, "controller_invites", "requested_device_name", "TEXT");
146
323
  ensureColumn(db, "controller_invites", "consumed_by_device_id", "TEXT");
147
324
  ensureColumn(db, "controller_invites", "revoked_at", "INTEGER");
325
+ ensureCommandResultsAccountRequestConflictTarget(db);
148
326
  db.exec(`
327
+ CREATE UNIQUE INDEX IF NOT EXISTS idx_command_results_account_request_unique
328
+ ON command_results(account_id, request_id);
149
329
  CREATE UNIQUE INDEX IF NOT EXISTS idx_events_machine_message
150
330
  ON session_events(account_id, machine_id, message_id)
151
331
  WHERE message_id IS NOT NULL;
332
+ CREATE UNIQUE INDEX IF NOT EXISTS idx_pending_head_machine_message
333
+ ON pending_session_head_advances(account_id, machine_id, message_id)
334
+ WHERE message_id IS NOT NULL;
152
335
  `);
336
+ repairHistoricalEventTimestamps(db);
337
+ backfillRelayDispatchOutboxCommandType(db);
338
+ restoreDurableSessionClaims(db);
153
339
  }
154
340
  export function pruneRelayRetention(db, now, config) {
155
341
  if (config.commandResultRetentionMs > 0) {
@@ -160,9 +346,117 @@ export function pruneRelayRetention(db, now, config) {
160
346
  }
161
347
  }
162
348
  function ensureColumn(db, table, column, definition) {
163
- const rows = db.prepare(`PRAGMA table_info(${table})`).all();
164
- if (!rows.some((row) => row.name === column)) {
349
+ if (!tableColumnNames(db, table).has(column)) {
165
350
  db.exec(`ALTER TABLE ${table} ADD COLUMN ${column} ${definition}`);
166
351
  }
167
352
  }
353
+ function tableColumnNames(db, table) {
354
+ return new Set(db.prepare(`PRAGMA table_info(${table})`).all().map((row) => row.name));
355
+ }
356
+ function restoreDurableSessionClaims(db) {
357
+ db.prepare(`INSERT OR IGNORE INTO relay_session_claims
358
+ (account_id, session_id, request_id, machine_id, turn_id, command_type, state, created_at, updated_at)
359
+ SELECT admissions.account_id,
360
+ admissions.session_id,
361
+ admissions.request_id,
362
+ admissions.machine_id,
363
+ admissions.turn_id,
364
+ 'prompt',
365
+ 'active',
366
+ admissions.created_at,
367
+ admissions.updated_at
368
+ FROM relay_admissions AS admissions
369
+ JOIN sessions ON sessions.account_id = admissions.account_id
370
+ AND sessions.id = admissions.session_id
371
+ AND sessions.machine_id = admissions.machine_id
372
+ WHERE admissions.kind = 'prompt'
373
+ AND admissions.turn_id IS NOT NULL
374
+ AND admissions.terminal_status IS NULL
375
+ AND sessions.status IN ('running', 'offline')`).run();
376
+ }
377
+ function ensureCommandResultsAccountRequestConflictTarget(db) {
378
+ const columns = db.prepare("PRAGMA table_info(command_results)").all();
379
+ const hasUpdatedAt = columns.some((column) => column.name === "updated_at");
380
+ const orderBy = hasUpdatedAt
381
+ ? "COALESCE(updated_at, created_at) DESC, created_at DESC, rowid DESC"
382
+ : "created_at DESC, rowid DESC";
383
+ db.exec(`
384
+ DELETE FROM command_results
385
+ WHERE rowid IN (
386
+ SELECT rowid
387
+ FROM (
388
+ SELECT
389
+ rowid,
390
+ ROW_NUMBER() OVER (
391
+ PARTITION BY account_id, request_id
392
+ ORDER BY ${orderBy}
393
+ ) AS duplicate_rank
394
+ FROM command_results
395
+ )
396
+ WHERE duplicate_rank > 1
397
+ );
398
+ `);
399
+ }
400
+ function repairHistoricalEventTimestamps(db) {
401
+ const rows = db
402
+ .prepare("SELECT id, turn_id FROM session_events WHERE occurred_at IS NULL AND message_id LIKE 'hist_%'")
403
+ .all();
404
+ const update = db.prepare("UPDATE session_events SET occurred_at = ? WHERE id = ? AND occurred_at IS NULL");
405
+ const repairs = rows
406
+ .map((row) => ({ id: row.id, occurredAt: uuidV7TimestampMs(row.turn_id) }))
407
+ .filter((row) => row.occurredAt !== undefined);
408
+ if (repairs.length === 0)
409
+ return;
410
+ db.exec("BEGIN");
411
+ try {
412
+ for (const item of repairs)
413
+ update.run(item.occurredAt, item.id);
414
+ db.exec("COMMIT");
415
+ }
416
+ catch (error) {
417
+ db.exec("ROLLBACK");
418
+ throw error;
419
+ }
420
+ }
421
+ function backfillRelayDispatchOutboxCommandType(db) {
422
+ const columns = tableColumnNames(db, "relay_dispatch_outbox");
423
+ if (columns.has("command_json")) {
424
+ db.prepare("UPDATE relay_dispatch_outbox SET message = command_json WHERE (message IS NULL OR message = '') AND command_json IS NOT NULL AND command_json != ''").run();
425
+ }
426
+ const rows = db
427
+ .prepare("SELECT rowid, message FROM relay_dispatch_outbox WHERE command_type IS NULL OR command_type = ''")
428
+ .all();
429
+ if (rows.length === 0)
430
+ return;
431
+ const update = db.prepare("UPDATE relay_dispatch_outbox SET command_type = ? WHERE rowid = ?");
432
+ db.exec("BEGIN");
433
+ try {
434
+ for (const row of rows) {
435
+ update.run(commandTypeFromOutboxMessage(row.message ?? ""), row.rowid);
436
+ }
437
+ db.exec("COMMIT");
438
+ }
439
+ catch (error) {
440
+ db.exec("ROLLBACK");
441
+ throw error;
442
+ }
443
+ }
444
+ function commandTypeFromOutboxMessage(message) {
445
+ try {
446
+ const parsed = JSON.parse(message);
447
+ return typeof parsed.type === "string" && parsed.type.trim() ? parsed.type : "unknown";
448
+ }
449
+ catch {
450
+ return "unknown";
451
+ }
452
+ }
453
+ function uuidV7TimestampMs(value) {
454
+ if (!value)
455
+ return undefined;
456
+ const match = /^([0-9a-f]{8})-([0-9a-f]{4})-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/iu.exec(value);
457
+ if (!match)
458
+ return undefined;
459
+ const timestamp = Number.parseInt(`${match[1]}${match[2]}`, 16);
460
+ return Number.isSafeInteger(timestamp) ? timestamp : undefined;
461
+ }
168
462
  //# sourceMappingURL=db.js.map
@@ -1,5 +1,6 @@
1
1
  export declare class HttpError extends Error {
2
2
  readonly statusCode: number;
3
3
  readonly code: string;
4
- constructor(statusCode: number, code: string, message: string);
4
+ readonly details?: Record<string, unknown> | undefined;
5
+ constructor(statusCode: number, code: string, message: string, details?: Record<string, unknown> | undefined);
5
6
  }
@@ -1,10 +1,12 @@
1
1
  export class HttpError extends Error {
2
2
  statusCode;
3
3
  code;
4
- constructor(statusCode, code, message) {
4
+ details;
5
+ constructor(statusCode, code, message, details) {
5
6
  super(message);
6
7
  this.statusCode = statusCode;
7
8
  this.code = code;
9
+ this.details = details;
8
10
  }
9
11
  }
10
12
  //# sourceMappingURL=errors.js.map