@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
@@ -25,13 +25,17 @@ export function parseDevicesResponse(value) {
25
25
  }
26
26
  const machineId = device.machineId;
27
27
  const revokedAt = device.revokedAt;
28
+ const online = device.online;
29
+ const lastSeen = device.lastSeen;
28
30
  return {
29
31
  deviceId: readStringField(device, "deviceId", "Device"),
30
32
  name: readStringField(device, "name", "Device"),
31
33
  kind,
32
34
  current: readBooleanField(device, "current", "Device"),
33
35
  revoked: readBooleanField(device, "revoked", "Device"),
36
+ ...(typeof online === "boolean" ? { online } : {}),
34
37
  createdAt: readNumberField(device, "createdAt", "Device"),
38
+ ...(typeof lastSeen === "number" ? { lastSeen } : {}),
35
39
  ...(typeof machineId === "string" ? { machineId } : {}),
36
40
  ...(typeof revokedAt === "number" ? { revokedAt } : {}),
37
41
  };
@@ -90,6 +94,150 @@ export function parseRevokeDeviceResult(value) {
90
94
  revokedAt: readNumberField(record, "revokedAt", "Device revoke"),
91
95
  };
92
96
  }
97
+ export function parseRenameDeviceResult(value) {
98
+ const record = assertRecord(value, "Device rename");
99
+ return {
100
+ deviceId: readStringField(record, "deviceId", "Device rename"),
101
+ name: readStringField(record, "name", "Device rename"),
102
+ renamedAt: readNumberField(record, "renamedAt", "Device rename"),
103
+ };
104
+ }
105
+ function optionalString(record, key) {
106
+ const value = record[key];
107
+ return typeof value === "string" ? value : undefined;
108
+ }
109
+ function optionalNumber(record, key) {
110
+ const value = record[key];
111
+ return typeof value === "number" && Number.isFinite(value) ? value : undefined;
112
+ }
113
+ function parseWorkspaceSessionStar(value) {
114
+ const record = assertRecord(value, "Workspace star");
115
+ return {
116
+ sessionId: readStringField(record, "sessionId", "Workspace star"),
117
+ starredAt: readNumberField(record, "starredAt", "Workspace star"),
118
+ };
119
+ }
120
+ function parseWorkspaceRecentSession(value) {
121
+ const record = assertRecord(value, "Workspace recent session");
122
+ return {
123
+ sessionId: readStringField(record, "sessionId", "Workspace recent session"),
124
+ lastSelectedAt: readNumberField(record, "lastSelectedAt", "Workspace recent session"),
125
+ };
126
+ }
127
+ function parseWorkspaceCwdPin(value) {
128
+ const record = assertRecord(value, "Workspace cwd pin");
129
+ return {
130
+ machineId: readStringField(record, "machineId", "Workspace cwd pin"),
131
+ cwd: readStringField(record, "cwd", "Workspace cwd pin"),
132
+ ...(optionalString(record, "label") ? { label: optionalString(record, "label") } : {}),
133
+ pinnedAt: readNumberField(record, "pinnedAt", "Workspace cwd pin"),
134
+ };
135
+ }
136
+ function parseWorkspaceProjectPreference(value) {
137
+ const record = assertRecord(value, "Workspace project preference");
138
+ return {
139
+ projectKey: readStringField(record, "projectKey", "Workspace project preference"),
140
+ ...(optionalString(record, "machineId") ? { machineId: optionalString(record, "machineId") } : {}),
141
+ ...(optionalString(record, "cwd") ? { cwd: optionalString(record, "cwd") } : {}),
142
+ ...(optionalString(record, "agent") ? { agent: optionalString(record, "agent") } : {}),
143
+ ...(isMemoryMode(record.memoryMode) ? { memoryMode: record.memoryMode } : {}),
144
+ updatedAt: readNumberField(record, "updatedAt", "Workspace project preference"),
145
+ };
146
+ }
147
+ function isMemoryMode(value) {
148
+ return value === "off" || value === "readonly" || value === "readwrite";
149
+ }
150
+ export function parseWorkspaceSyncState(value) {
151
+ const record = assertRecord(value, "Workspace sync");
152
+ if (!Array.isArray(record.stars) ||
153
+ !Array.isArray(record.recentSessions) ||
154
+ !Array.isArray(record.cwdPins) ||
155
+ !Array.isArray(record.projectPreferences)) {
156
+ throw new ControllerClientError("Workspace sync response is invalid", "RELAY_RESPONSE_INVALID");
157
+ }
158
+ return {
159
+ stars: record.stars.map(parseWorkspaceSessionStar),
160
+ recentSessions: record.recentSessions.map(parseWorkspaceRecentSession),
161
+ cwdPins: record.cwdPins.map(parseWorkspaceCwdPin),
162
+ projectPreferences: record.projectPreferences.map(parseWorkspaceProjectPreference),
163
+ };
164
+ }
165
+ export function parseWorkspaceSessionStarResult(value) {
166
+ const record = assertRecord(value, "Workspace session star");
167
+ const starredAt = optionalNumber(record, "starredAt");
168
+ const unstarredAt = optionalNumber(record, "unstarredAt");
169
+ return {
170
+ sessionId: readStringField(record, "sessionId", "Workspace session star"),
171
+ starred: readBooleanField(record, "starred", "Workspace session star"),
172
+ ...(starredAt === undefined ? {} : { starredAt }),
173
+ ...(unstarredAt === undefined ? {} : { unstarredAt }),
174
+ };
175
+ }
176
+ export function parseWorkspaceRecentSessionResult(value) {
177
+ return parseWorkspaceRecentSession(value);
178
+ }
179
+ export function parseWorkspaceCwdPinResult(value) {
180
+ return parseWorkspaceCwdPin(value);
181
+ }
182
+ export function parseWorkspaceCwdUnpinResult(value) {
183
+ const record = assertRecord(value, "Workspace cwd unpin");
184
+ return {
185
+ machineId: readStringField(record, "machineId", "Workspace cwd unpin"),
186
+ cwd: readStringField(record, "cwd", "Workspace cwd unpin"),
187
+ removed: readBooleanField(record, "removed", "Workspace cwd unpin"),
188
+ removedAt: readNumberField(record, "removedAt", "Workspace cwd unpin"),
189
+ };
190
+ }
191
+ export function parseWorkspaceProjectPreferenceResult(value) {
192
+ return parseWorkspaceProjectPreference(value);
193
+ }
194
+ function parseEncryptedMemoryRecord(value) {
195
+ const record = assertRecord(value, "Memory");
196
+ return {
197
+ id: readStringField(record, "id", "Memory"),
198
+ projectKey: readStringField(record, "projectKey", "Memory"),
199
+ encryptedMemory: encryptedEnvelopeSchema.parse(record.encryptedMemory),
200
+ createdAt: readNumberField(record, "createdAt", "Memory"),
201
+ updatedAt: readNumberField(record, "updatedAt", "Memory"),
202
+ };
203
+ }
204
+ export function parseMemoryListResponse(value) {
205
+ const record = assertRecord(value, "Memory list");
206
+ if (!Array.isArray(record.memories)) {
207
+ throw new ControllerClientError("Memory list response is invalid", "RELAY_RESPONSE_INVALID");
208
+ }
209
+ return { memories: record.memories.map(parseEncryptedMemoryRecord) };
210
+ }
211
+ export function parseMemorySaveResult(value) {
212
+ return parseEncryptedMemoryRecord(value);
213
+ }
214
+ export function parseMemoryDeleteResult(value) {
215
+ const record = assertRecord(value, "Memory delete");
216
+ return {
217
+ id: readStringField(record, "id", "Memory delete"),
218
+ deleted: readBooleanField(record, "deleted", "Memory delete"),
219
+ deletedAt: readNumberField(record, "deletedAt", "Memory delete"),
220
+ };
221
+ }
222
+ function parseMemorySettings(value) {
223
+ const record = assertRecord(value, "Memory settings");
224
+ return {
225
+ projectKey: readStringField(record, "projectKey", "Memory settings"),
226
+ disabled: readBooleanField(record, "disabled", "Memory settings"),
227
+ injectionEnabled: readBooleanField(record, "injectionEnabled", "Memory settings"),
228
+ updatedAt: readNumberField(record, "updatedAt", "Memory settings"),
229
+ };
230
+ }
231
+ export function parseMemorySettingsList(value) {
232
+ const record = assertRecord(value, "Memory settings list");
233
+ if (!Array.isArray(record.settings)) {
234
+ throw new ControllerClientError("Memory settings list response is invalid", "RELAY_RESPONSE_INVALID");
235
+ }
236
+ return { settings: record.settings.map(parseMemorySettings) };
237
+ }
238
+ export function parseMemorySettingsResult(value) {
239
+ return parseMemorySettings(value);
240
+ }
93
241
  function parseScope(value, label) {
94
242
  const record = assertRecord(value ?? {}, label);
95
243
  const machines = readOptionalStringArray(record, "machines", label);
@@ -175,4 +323,23 @@ export function parseSessionEventsResponse(value) {
175
323
  ...(oldestEventId === undefined ? {} : { oldestEventId }),
176
324
  };
177
325
  }
326
+ export function parseRepairSessionHeadResult(value) {
327
+ const record = assertRecord(value, "Session head repair");
328
+ const session = assertRecord(record.session, "Session head repair session");
329
+ const basis = assertRecord(record.basis, "Session head repair basis");
330
+ const messageId = basis.messageId;
331
+ const reason = record.reason;
332
+ return {
333
+ advanced: readBooleanField(record, "advanced", "Session head repair"),
334
+ ...(typeof record.settled === "boolean" ? { settled: record.settled } : {}),
335
+ session: session,
336
+ basis: {
337
+ eventId: readNumberField(basis, "eventId", "Session head repair basis"),
338
+ ...(typeof messageId === "string" ? { messageId } : {}),
339
+ logicalTime: readNumberField(basis, "logicalTime", "Session head repair basis"),
340
+ turnSeq: readNumberField(basis, "turnSeq", "Session head repair basis"),
341
+ },
342
+ ...(typeof reason === "string" ? { reason } : {}),
343
+ };
344
+ }
178
345
  //# sourceMappingURL=parsers.js.map
@@ -1,4 +1,4 @@
1
- import { type ControllerClientMessage, type EncryptedSessionEvent, type ServerMessage } from "@happy-elves/shared";
1
+ import { type ControllerClientMessage, type EncryptedSessionEvent, type ServerMessage } from "../../shared/dist/index.js";
2
2
  import type { CommandResult, ControllerClientConfig, ControllerSubscriptionHandlers, DecodedSessionEvent } from "./types.js";
3
3
  export declare function subscribe(config: ControllerClientConfig, handlers: ControllerSubscriptionHandlers): WebSocket;
4
4
  type CommandTransport = {
@@ -37,5 +37,25 @@ export declare function sendAndWaitForMachineDevExecResult(config: ControllerCli
37
37
  }>, waitTimeoutMs?: number): Promise<Extract<ServerMessage, {
38
38
  type: "server:machineDevExecResult";
39
39
  }>>;
40
+ export declare function sendAndWaitForGatewayResult(config: ControllerClientConfig, command: Extract<ControllerClientMessage, {
41
+ type: "controller:gateway";
42
+ }>): Promise<Extract<ServerMessage, {
43
+ type: "server:gatewayResult";
44
+ }>>;
45
+ export declare function sendAndWaitForScheduleResult(config: ControllerClientConfig, command: Extract<ControllerClientMessage, {
46
+ type: "controller:schedule";
47
+ }>): Promise<Extract<ServerMessage, {
48
+ type: "server:scheduleResult";
49
+ }>>;
50
+ export declare function sendAndWaitForMemoryResult(config: ControllerClientConfig, command: Extract<ControllerClientMessage, {
51
+ type: "controller:memory";
52
+ }>): Promise<Extract<ServerMessage, {
53
+ type: "server:memoryResult";
54
+ }>>;
55
+ export declare function sendAndWaitForTurnReconcileResult(config: ControllerClientConfig, command: Extract<ControllerClientMessage, {
56
+ type: "controller:reconcileTurn";
57
+ }>): Promise<Extract<ServerMessage, {
58
+ type: "server:turnReconciled";
59
+ }>>;
40
60
  export {};
41
61
  //# sourceMappingURL=transport.d.ts.map
@@ -60,10 +60,26 @@ export function subscribe(config, handlers) {
60
60
  void handlers.onSessionTranscriptPrepended?.(message);
61
61
  return;
62
62
  }
63
+ if (message.type === "server:memoryResult") {
64
+ void handlers.onMemoryResult?.(message);
65
+ return;
66
+ }
67
+ if (message.type === "server:turnReconciled") {
68
+ void handlers.onTurnReconciled?.(message);
69
+ return;
70
+ }
63
71
  if (message.type === "server:historicalSessions") {
64
72
  handlers.onHistoricalSessions?.(message);
65
73
  return;
66
74
  }
75
+ if (message.type === "server:gatewayResult") {
76
+ handlers.onGatewayResult?.(message);
77
+ return;
78
+ }
79
+ if (message.type === "server:scheduleResult") {
80
+ handlers.onScheduleResult?.(message);
81
+ return;
82
+ }
67
83
  if (message.type === "server:ack") {
68
84
  handlers.onAck?.(message);
69
85
  return;
@@ -85,11 +101,14 @@ export async function sendCommand(context, command, waitForDone = false, timeout
85
101
  const targetTurnId = "turnId" in command ? command.turnId : undefined;
86
102
  return await new Promise((resolve, reject) => {
87
103
  let settled = false;
104
+ let retainedPoller;
88
105
  const finish = (result) => {
89
106
  if (settled)
90
107
  return;
91
108
  settled = true;
92
109
  globalThis.clearTimeout(timer);
110
+ if (retainedPoller)
111
+ globalThis.clearInterval(retainedPoller);
93
112
  ws.close();
94
113
  resolve(result);
95
114
  };
@@ -98,10 +117,24 @@ export async function sendCommand(context, command, waitForDone = false, timeout
98
117
  return;
99
118
  settled = true;
100
119
  globalThis.clearTimeout(timer);
120
+ if (retainedPoller)
121
+ globalThis.clearInterval(retainedPoller);
101
122
  ws.close();
102
123
  reject(error);
103
124
  };
104
- const resolveFromRetainedTurnIfDone = (sessionId, turnId, sessionIdFromAck) => {
125
+ const commandResultFromAck = () => ({
126
+ requestId: command.requestId,
127
+ sessionId: ackedSessionId,
128
+ turnId: ackedTurnId,
129
+ admission: ackedAdmission,
130
+ dispatch: ackedDispatch,
131
+ events,
132
+ });
133
+ let retainedLookupInFlight = false;
134
+ const resolveFromRetainedTurnIfDone = (sessionId, turnId) => {
135
+ if (retainedLookupInFlight)
136
+ return;
137
+ retainedLookupInFlight = true;
105
138
  void context.sessionEvents(sessionId, { limit: 1000 })
106
139
  .then(({ events: retainedEvents }) => retainedEvents.filter((event) => event.turnId === turnId))
107
140
  .then(async (turnEvents) => {
@@ -116,9 +149,21 @@ export async function sendCommand(context, command, waitForDone = false, timeout
116
149
  events.push(event);
117
150
  }
118
151
  events.sort((left, right) => left.id - right.id);
119
- finish({ requestId: command.requestId, sessionId: sessionIdFromAck, events });
152
+ finish(commandResultFromAck());
120
153
  })
121
- .catch(() => { });
154
+ .catch(() => { })
155
+ .finally(() => {
156
+ retainedLookupInFlight = false;
157
+ });
158
+ };
159
+ const startRetainedTurnPoller = (sessionId, turnId) => {
160
+ if (retainedPoller)
161
+ return;
162
+ resolveFromRetainedTurnIfDone(sessionId, turnId);
163
+ retainedPoller = globalThis.setInterval(() => {
164
+ if (!settled)
165
+ resolveFromRetainedTurnIfDone(sessionId, turnId);
166
+ }, 2_000);
122
167
  };
123
168
  const timer = globalThis.setTimeout(() => {
124
169
  fail(new ControllerClientError("Timed out waiting for command result", "COMMAND_TIMEOUT", {
@@ -129,6 +174,9 @@ export async function sendCommand(context, command, waitForDone = false, timeout
129
174
  }));
130
175
  }, timeoutMs ?? (waitForDone ? 30 * 60 * 1000 : 15_000));
131
176
  let ackedSessionId;
177
+ let ackedTurnId;
178
+ let ackedAdmission;
179
+ let ackedDispatch;
132
180
  let commandAcked = false;
133
181
  ws.addEventListener("message", (event) => {
134
182
  if (settled)
@@ -148,11 +196,14 @@ export async function sendCommand(context, command, waitForDone = false, timeout
148
196
  if (message.type === "server:ack" && message.requestId === command.requestId) {
149
197
  commandAcked = true;
150
198
  ackedSessionId = message.sessionId;
199
+ ackedTurnId = message.turnId;
200
+ ackedAdmission = message.admission;
201
+ ackedDispatch = message.dispatch;
151
202
  if (!waitForDone) {
152
- finish({ requestId: command.requestId, sessionId: ackedSessionId, events });
203
+ finish(commandResultFromAck());
153
204
  }
154
205
  else if (targetSessionId && targetTurnId) {
155
- resolveFromRetainedTurnIfDone(targetSessionId, targetTurnId, ackedSessionId);
206
+ startRetainedTurnPoller(targetSessionId, targetTurnId);
156
207
  }
157
208
  return;
158
209
  }
@@ -172,7 +223,7 @@ export async function sendCommand(context, command, waitForDone = false, timeout
172
223
  void decryptJson(context.config.accountSecret, message.event.payload)
173
224
  .then((payload) => {
174
225
  if (payload.type === "done") {
175
- finish({ requestId: command.requestId, sessionId: ackedSessionId, events });
226
+ finish(commandResultFromAck());
176
227
  }
177
228
  })
178
229
  .catch(() => { });
@@ -197,6 +248,18 @@ export async function sendAndWaitForMachineDiagnostics(config, command) {
197
248
  export async function sendAndWaitForMachineDevExecResult(config, command, waitTimeoutMs) {
198
249
  return await sendAndWaitForServerMessage(config, command, "server:machineDevExecResult", "machine dev exec result; remote result is unknown", waitTimeoutMs ?? (command.timeoutMs ?? 60_000) + 15_000);
199
250
  }
251
+ export async function sendAndWaitForGatewayResult(config, command) {
252
+ return await sendAndWaitForServerMessage(config, command, "server:gatewayResult", "gateway result", 30_000);
253
+ }
254
+ export async function sendAndWaitForScheduleResult(config, command) {
255
+ return await sendAndWaitForServerMessage(config, command, "server:scheduleResult", "schedule result", 30_000);
256
+ }
257
+ export async function sendAndWaitForMemoryResult(config, command) {
258
+ return await sendAndWaitForServerMessage(config, command, "server:memoryResult", "memory result", 30_000);
259
+ }
260
+ export async function sendAndWaitForTurnReconcileResult(config, command) {
261
+ return await sendAndWaitForServerMessage(config, command, "server:turnReconciled", "turn reconcile result", 45_000);
262
+ }
200
263
  function connect(config) {
201
264
  return new Promise((resolve, reject) => {
202
265
  const ws = new WebSocket(wsUrl(config.relayUrl));
@@ -1,4 +1,4 @@
1
- import type { DirectoryListing, EncryptedSessionEvent, FilePreviewMode, FilePreviewResult, HistoricalSessionSnapshot, MachineSnapshot, MachineDevExecResult, MachineDiagnostics, ServerMessage, SessionEventPayload, SessionSnapshot } from "@happy-elves/shared";
1
+ import type { DirectoryListing, EncryptedSessionEvent, FilePreviewMode, FilePreviewResult, GatewayChannelInput, GatewayCommandResult, HistoricalSessionSnapshot, MachineSnapshot, MachineDevExecResult, MachineDiagnostics, ScheduleCommandResult, ScheduleCreateInput, MemoryCommandResult, MemoryMode, MemoryPromoteInput, MemoryWriteInput, ServerMessage, SessionEventPayload, SessionSnapshot, TurnReconcileResult } from "../../shared/dist/index.js";
2
2
  export type ControllerClientConfig = {
3
3
  relayUrl: string;
4
4
  controllerToken: string;
@@ -11,6 +11,9 @@ export type CommandResult = {
11
11
  requestId?: string;
12
12
  sessionId?: string;
13
13
  turnId?: string;
14
+ admission?: "accepted" | "replayed";
15
+ dispatch?: "queued" | "delivered";
16
+ mode?: "existing";
14
17
  events: EncryptedSessionEvent[];
15
18
  };
16
19
  export type DecodedSessionEvent = EncryptedSessionEvent & {
@@ -40,6 +43,18 @@ export type ControllerSubscriptionHandlers = {
40
43
  onHistoricalSessions?: (message: Extract<ServerMessage, {
41
44
  type: "server:historicalSessions";
42
45
  }>) => void;
46
+ onGatewayResult?: (message: Extract<ServerMessage, {
47
+ type: "server:gatewayResult";
48
+ }>) => void;
49
+ onScheduleResult?: (message: Extract<ServerMessage, {
50
+ type: "server:scheduleResult";
51
+ }>) => void;
52
+ onMemoryResult?: (message: Extract<ServerMessage, {
53
+ type: "server:memoryResult";
54
+ }>) => void;
55
+ onTurnReconciled?: (message: Extract<ServerMessage, {
56
+ type: "server:turnReconciled";
57
+ }>) => void;
43
58
  onAck?: (message: Extract<ServerMessage, {
44
59
  type: "server:ack";
45
60
  }>) => void;
@@ -58,7 +73,9 @@ export type ControllerDevice = {
58
73
  kind: "controller" | "machine";
59
74
  current: boolean;
60
75
  revoked: boolean;
76
+ online?: boolean;
61
77
  createdAt: number;
78
+ lastSeen?: number;
62
79
  machineId?: string;
63
80
  revokedAt?: number;
64
81
  };
@@ -69,6 +86,96 @@ export type AddControllerDeviceResult = {
69
86
  deviceName: string;
70
87
  createdAt: number;
71
88
  };
89
+ export type RenameDeviceResult = {
90
+ deviceId: string;
91
+ name: string;
92
+ renamedAt: number;
93
+ };
94
+ export type WorkspaceSessionStar = {
95
+ sessionId: string;
96
+ starredAt: number;
97
+ };
98
+ export type WorkspaceRecentSession = {
99
+ sessionId: string;
100
+ lastSelectedAt: number;
101
+ };
102
+ export type WorkspaceCwdPin = {
103
+ machineId: string;
104
+ cwd: string;
105
+ label?: string;
106
+ pinnedAt: number;
107
+ };
108
+ export type WorkspaceProjectPreference = {
109
+ projectKey: string;
110
+ machineId?: string;
111
+ cwd?: string;
112
+ agent?: string;
113
+ memoryMode?: MemoryMode;
114
+ updatedAt: number;
115
+ };
116
+ export type WorkspaceSyncState = {
117
+ stars: WorkspaceSessionStar[];
118
+ recentSessions: WorkspaceRecentSession[];
119
+ cwdPins: WorkspaceCwdPin[];
120
+ projectPreferences: WorkspaceProjectPreference[];
121
+ };
122
+ export type WorkspaceSessionStarResult = {
123
+ sessionId: string;
124
+ starred: boolean;
125
+ starredAt?: number;
126
+ unstarredAt?: number;
127
+ };
128
+ export type WorkspaceCwdPinInput = {
129
+ machineId: string;
130
+ cwd: string;
131
+ label?: string;
132
+ };
133
+ export type WorkspaceProjectPreferenceInput = {
134
+ projectKey: string;
135
+ machineId?: string;
136
+ cwd?: string;
137
+ agent?: string;
138
+ memoryMode?: MemoryMode;
139
+ };
140
+ export type MemoryPayload = {
141
+ title?: string;
142
+ text: string;
143
+ tags?: string[];
144
+ };
145
+ export type EncryptedMemoryRecord = {
146
+ id: string;
147
+ projectKey: string;
148
+ encryptedMemory: import("../../shared/dist/index.js").EncryptedEnvelope;
149
+ createdAt: number;
150
+ updatedAt: number;
151
+ };
152
+ export type DecodedMemoryRecord = {
153
+ id: string;
154
+ projectKey: string;
155
+ title?: string;
156
+ text: string;
157
+ tags?: string[];
158
+ createdAt: number;
159
+ updatedAt: number;
160
+ };
161
+ export type MemorySettings = {
162
+ projectKey: string;
163
+ disabled: boolean;
164
+ injectionEnabled: boolean;
165
+ updatedAt: number;
166
+ };
167
+ export type MemorySaveInput = {
168
+ id?: string;
169
+ projectKey: string;
170
+ title?: string;
171
+ text: string;
172
+ tags?: string[];
173
+ };
174
+ export type MemorySearchInput = {
175
+ projectKey: string;
176
+ query: string;
177
+ limit?: number;
178
+ };
72
179
  export type ControllerInviteCreateResult = {
73
180
  accountId: string;
74
181
  inviteCode: string;
@@ -121,6 +228,8 @@ export type SessionMetadata = {
121
228
  cwd?: string;
122
229
  agent?: string;
123
230
  permissionMode?: PermissionMode;
231
+ tags?: string[];
232
+ tagKeys?: string[];
124
233
  [key: string]: unknown;
125
234
  };
126
235
  export type SessionFilter = {
@@ -128,6 +237,7 @@ export type SessionFilter = {
128
237
  agent?: string;
129
238
  cwd?: string;
130
239
  name?: string;
240
+ tags?: string[];
131
241
  };
132
242
  export type CreateSessionInput = {
133
243
  machineId: string;
@@ -137,14 +247,26 @@ export type CreateSessionInput = {
137
247
  runtimeName?: string;
138
248
  createdFrom?: string;
139
249
  permissionMode?: PermissionMode;
250
+ model?: string;
251
+ tags?: string[];
252
+ hiddenFromWorkspace?: boolean;
253
+ source?: string;
140
254
  };
141
255
  export type RunOptions = {
142
256
  wait?: boolean;
143
257
  permissionMode?: PermissionMode;
258
+ memoryMode?: MemoryMode;
259
+ memoryProjectKey?: string;
260
+ memoryTopN?: number;
261
+ model?: string;
144
262
  waitTimeoutMs?: number;
145
263
  ackTimeoutMs?: number;
264
+ inactivityTimeoutMs?: number;
146
265
  runtimeTimeoutMs?: number;
147
266
  };
267
+ export type TurnReconcileResponse = TurnReconcileResult & {
268
+ machineId: string;
269
+ };
148
270
  export type HistoricalSessionsInput = {
149
271
  machineId: string;
150
272
  cwd?: string;
@@ -173,6 +295,36 @@ export type MachineDevExecInput = {
173
295
  timeoutMs?: number;
174
296
  waitTimeoutMs?: number;
175
297
  };
298
+ export type GatewayCommandInput = {
299
+ machineId: string;
300
+ action: "list" | "get" | "upsert" | "enable" | "disable" | "test" | "notify";
301
+ channelId?: string;
302
+ channel?: GatewayChannelInput;
303
+ externalConversationId?: string;
304
+ externalMessageId?: string;
305
+ text?: string;
306
+ };
307
+ export type GatewayCommandResponse = GatewayCommandResult;
308
+ export type ScheduleCommandInput = {
309
+ machineId: string;
310
+ action: "list" | "show" | "create" | "pause" | "resume" | "delete" | "history" | "run" | "runDue" | "runMissed";
311
+ scheduleId?: string;
312
+ occurrenceId?: string;
313
+ schedule?: ScheduleCreateInput;
314
+ };
315
+ export type ScheduleCommandResponse = ScheduleCommandResult;
316
+ export type MemoryCommandInput = {
317
+ machineId: string;
318
+ action: "overview" | "read" | "search" | "reindex" | "write" | "promote" | "status" | "sync";
319
+ projectKey?: string;
320
+ path?: string;
321
+ query?: string;
322
+ limit?: number;
323
+ mode?: MemoryMode;
324
+ write?: MemoryWriteInput;
325
+ promote?: MemoryPromoteInput;
326
+ };
327
+ export type MemoryCommandResponse = MemoryCommandResult;
176
328
  export type ImportHistoricalSessionInput = {
177
329
  machineId: string;
178
330
  agent: string;
@@ -186,6 +338,7 @@ export type ImportHistoricalSessionInput = {
186
338
  export type ForkInput = {
187
339
  from: string;
188
340
  name: string;
341
+ tags?: string[];
189
342
  };
190
343
  export type CancelInput = {
191
344
  turnId?: string;
@@ -202,6 +355,29 @@ export type CollectInput = {
202
355
  since?: EventCursor;
203
356
  limit?: number;
204
357
  };
358
+ export type RepairSessionHeadInput = {
359
+ currentHead: string;
360
+ lastTurnId: string;
361
+ status?: "completed" | "cancelled" | "failed";
362
+ basis: {
363
+ turnId: string;
364
+ eventMessageId: string;
365
+ turnSeq: number;
366
+ occurredAt?: number;
367
+ };
368
+ };
369
+ export type RepairSessionHeadResult = {
370
+ advanced: boolean;
371
+ settled?: boolean;
372
+ session: SessionSnapshot;
373
+ basis: {
374
+ eventId: number;
375
+ messageId?: string;
376
+ logicalTime: number;
377
+ turnSeq: number;
378
+ };
379
+ reason?: string;
380
+ };
205
381
  export type ControllerInviteCreateInput = {
206
382
  deviceName?: string;
207
383
  ttlMs?: number;
@@ -1,4 +1,4 @@
1
- import type { SessionSnapshot } from "@happy-elves/shared";
1
+ import type { SessionSnapshot } from "../../shared/dist/index.js";
2
2
  import type { EventCursor, WaitCondition } from "./types.js";
3
3
  export declare function assertRecord(value: unknown, label: string): Record<string, unknown>;
4
4
  export declare function readStringField(record: Record<string, unknown>, key: string, label: string): string;