@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
@@ -1,4 +1,4 @@
1
- import type { SessionSnapshot } from "@happy-elves/shared";
1
+ import type { SessionSnapshot } from "../../../packages/shared/dist/index.js";
2
2
  export type TokenKind = "controller" | "machine";
3
3
  export type ScopedTokenScope = {
4
4
  name?: string;
@@ -18,6 +18,7 @@ export type TokenRecord = {
18
18
  revoked_at: number | null;
19
19
  expires_at: number | null;
20
20
  scope: string | null;
21
+ last_seen: number | null;
21
22
  created_at: number;
22
23
  };
23
24
  export type MachineRow = {
@@ -41,6 +42,10 @@ export type SessionRow = {
41
42
  encrypted_metadata: string | null;
42
43
  current_head: string | null;
43
44
  last_turn_id: string | null;
45
+ head_basis_event_id: number | null;
46
+ head_basis_message_id: string | null;
47
+ head_basis_logical_time: number | null;
48
+ head_basis_turn_seq: number | null;
44
49
  source_session_id: string | null;
45
50
  source_checkpoint_id: string | null;
46
51
  created_at: number;
@@ -59,12 +64,77 @@ export type EventRow = {
59
64
  created_at: number;
60
65
  occurred_at: number | null;
61
66
  };
67
+ export type PendingSessionHeadAdvanceRow = {
68
+ id: number;
69
+ account_id: string;
70
+ session_id: string;
71
+ machine_id: string;
72
+ message_id: string | null;
73
+ current_head: string;
74
+ last_turn_id: string;
75
+ basis_turn_id: string;
76
+ basis_event_message_id: string;
77
+ basis_turn_seq: number;
78
+ basis_occurred_at: number | null;
79
+ encrypted_metadata: string | null;
80
+ created_at: number;
81
+ updated_at: number;
82
+ };
62
83
  export type CommandResultRow = {
63
84
  account_id: string;
64
85
  request_id: string;
65
86
  response: string;
66
87
  created_at: number;
67
88
  };
89
+ export type RelayAdmissionRow = {
90
+ account_id: string;
91
+ request_id: string;
92
+ session_id: string;
93
+ machine_id: string;
94
+ kind: "createSession" | "prompt";
95
+ turn_id: string | null;
96
+ admission: "accepted";
97
+ dispatch: "queued" | "delivered";
98
+ started_at: number | null;
99
+ finished_at: number | null;
100
+ terminal_status: "completed" | "cancelled" | "failed" | "error" | "unknown" | null;
101
+ last_error_code: string | null;
102
+ created_at: number;
103
+ updated_at: number;
104
+ };
105
+ export type RelaySessionClaimRow = {
106
+ account_id: string;
107
+ session_id: string;
108
+ request_id: string;
109
+ machine_id: string;
110
+ turn_id: string;
111
+ command_type: "prompt";
112
+ state: "active";
113
+ created_at: number;
114
+ updated_at: number;
115
+ };
116
+ export type SessionRuntimeBindingRow = {
117
+ account_id: string;
118
+ machine_id: string;
119
+ agent: string;
120
+ runtime_session_id: string;
121
+ session_id: string;
122
+ status: "active" | "closed";
123
+ created_at: number;
124
+ updated_at: number;
125
+ };
126
+ export type RelayDispatchOutboxRow = {
127
+ account_id: string;
128
+ request_id: string;
129
+ machine_id: string;
130
+ session_id: string;
131
+ command_type: string;
132
+ message: string;
133
+ state: "queued" | "delivered";
134
+ created_at: number;
135
+ updated_at: number;
136
+ delivered_at: number | null;
137
+ };
68
138
  export type PairingRow = {
69
139
  code: string;
70
140
  account_id: string;
@@ -50,6 +50,7 @@ export function registerWebsocketRoute(app, context, originAllowed) {
50
50
  fail("Machine token does not match machine id", "AUTH_TOKEN_INVALID");
51
51
  return;
52
52
  }
53
+ context.markTokenSeen(token.token);
53
54
  if (message.clientType === "controller") {
54
55
  const controller = {
55
56
  id: connectionId,
@@ -84,6 +85,7 @@ export function registerWebsocketRoute(app, context, originAllowed) {
84
85
  const machineSnapshotNow = context.updateMachineLastSeen(machine.accountId, machine.machineId);
85
86
  if (machineSnapshotNow)
86
87
  context.broadcastControllers(machine.accountId, { type: "server:machine", machine: machineSnapshotNow });
88
+ context.deliverQueuedCommandsForMachine(machine);
87
89
  context.resumeOfflineSessionsForMachine(machine);
88
90
  }
89
91
  return;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cydm/happy-elves",
3
- "version": "0.1.0-beta.31",
3
+ "version": "0.1.0-beta.310",
4
4
  "description": "Remote controller for local coding agents with hosted or self-hosted relay support.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -10,24 +10,17 @@
10
10
  "LICENSE",
11
11
  "README.md",
12
12
  "apps/cli/dist",
13
+ "apps/cli/package.json",
13
14
  "apps/daemon/dist",
14
15
  "apps/daemon/package.json",
15
16
  "apps/relay/dist",
16
- "apps/relay/package.json",
17
17
  "packages/shared/dist",
18
- "packages/shared/package.json",
19
18
  "packages/client/dist",
20
- "packages/client/package.json",
21
19
  "packages/runtime/dist",
22
- "packages/runtime/package.json",
23
20
  "packages/runtime-acpx/dist",
24
- "packages/runtime-acpx/package.json",
25
21
  "packages/runtime-cli/dist",
26
- "packages/runtime-cli/package.json",
27
22
  "packages/agent-sdk/dist",
28
- "packages/agent-sdk/package.json",
29
- "packages/pie-provider/dist",
30
- "packages/pie-provider/package.json"
23
+ "packages/pie-provider/dist"
31
24
  ],
32
25
  "engines": {
33
26
  "node": ">=24.2.0"
@@ -35,9 +28,10 @@
35
28
  "dependencies": {
36
29
  "@fastify/cors": "^11.1.0",
37
30
  "@fastify/websocket": "^11.0.2",
31
+ "@larksuiteoapi/node-sdk": "^1.72.0",
38
32
  "@noble/ciphers": "^2.2.0",
39
33
  "@noble/hashes": "^2.2.0",
40
- "acpx": "^0.7.0",
34
+ "acpx": "^0.13.0",
41
35
  "fastify": "^5.6.2",
42
36
  "zod": "^4.4.2"
43
37
  },
@@ -18,6 +18,13 @@ export type AgentProfile = {
18
18
  label: string;
19
19
  command?: string;
20
20
  historyModel?: "append-only" | "authoritative-linear";
21
+ defaultModel?: string;
22
+ models?: Array<{
23
+ id: string;
24
+ label?: string;
25
+ unavailable?: boolean;
26
+ reason?: string;
27
+ }>;
21
28
  capabilities?: AgentCapability;
22
29
  };
23
30
  export type ProviderInfo = {
@@ -30,12 +37,20 @@ export type RuntimeHandle = {
30
37
  agent: string;
31
38
  sessionId: string;
32
39
  cwd?: string;
40
+ model?: string;
33
41
  opaque?: Record<string, unknown>;
34
42
  };
35
43
  export type RuntimeAttachment = {
44
+ name?: string;
36
45
  mediaType: string;
46
+ sizeBytes?: number;
37
47
  data: string;
38
48
  };
49
+ export type RuntimeOptionChoice = {
50
+ id: string;
51
+ label: string;
52
+ description?: string;
53
+ };
39
54
  export type RuntimeEvent = {
40
55
  type: "text_delta";
41
56
  text: string;
@@ -47,6 +62,16 @@ export type RuntimeEvent = {
47
62
  tag?: string;
48
63
  used?: number;
49
64
  size?: number;
65
+ } | {
66
+ type: "session_usage";
67
+ source: "provider" | "estimated";
68
+ usedTokens: number;
69
+ contextWindowTokens?: number;
70
+ inputTokens?: number;
71
+ outputTokens?: number;
72
+ cachedInputTokens?: number;
73
+ reasoningOutputTokens?: number;
74
+ totalTokens?: number;
50
75
  } | {
51
76
  type: "tool_call";
52
77
  text: string;
@@ -54,6 +79,13 @@ export type RuntimeEvent = {
54
79
  toolCallId?: string;
55
80
  status?: string;
56
81
  title?: string;
82
+ } | {
83
+ type: "option_request";
84
+ optionRequestId: string;
85
+ title?: string;
86
+ message: string;
87
+ options: RuntimeOptionChoice[];
88
+ allowFreeText?: boolean;
57
89
  } | {
58
90
  type: "done";
59
91
  stopReason?: string;
@@ -85,6 +117,26 @@ export type RuntimeTurnResult = {
85
117
  retryable?: boolean;
86
118
  };
87
119
  };
120
+ export type RuntimeTurnInspection = {
121
+ status: "active";
122
+ currentHead?: string;
123
+ lastTurnId?: string;
124
+ providerTurnId?: string;
125
+ evidence?: string;
126
+ } | {
127
+ status: "terminal";
128
+ terminalStatus: "completed" | "cancelled" | "failed";
129
+ currentHead?: string;
130
+ lastTurnId?: string;
131
+ providerTurnId?: string;
132
+ error?: string;
133
+ evidence?: string;
134
+ } | {
135
+ status: "unknown" | "not_found" | "uninspectable";
136
+ providerTurnId?: string;
137
+ reason?: string;
138
+ evidence?: string;
139
+ };
88
140
  export interface RuntimeTurn {
89
141
  readonly requestId: string;
90
142
  readonly events: AsyncIterable<RuntimeEvent>;
@@ -92,6 +144,11 @@ export interface RuntimeTurn {
92
144
  cancel(input?: {
93
145
  reason?: string;
94
146
  }): Promise<void>;
147
+ respondOption?(input: {
148
+ optionRequestId: string;
149
+ selectedOptionId?: string;
150
+ text?: string;
151
+ }): Promise<void>;
95
152
  closeStream(input?: {
96
153
  reason?: string;
97
154
  }): Promise<void>;
@@ -174,6 +231,7 @@ export interface HappyElvesAgentProvider {
174
231
  resumeHandle?: RuntimeHandle;
175
232
  cwd?: string;
176
233
  permissionMode?: PermissionMode;
234
+ model?: string;
177
235
  restartableEmptySession?: boolean;
178
236
  }): Promise<RuntimeHandle>;
179
237
  startTurn(input: {
@@ -182,6 +240,7 @@ export interface HappyElvesAgentProvider {
182
240
  attachments?: RuntimeAttachment[];
183
241
  mode: PromptMode;
184
242
  permissionMode?: PermissionMode;
243
+ model?: string;
185
244
  requestId: string;
186
245
  timeoutMs?: number;
187
246
  signal?: AbortSignal;
@@ -195,6 +254,12 @@ export interface HappyElvesAgentProvider {
195
254
  reason: string;
196
255
  discardPersistentState?: boolean;
197
256
  }): Promise<void>;
257
+ inspectTurn?(input: {
258
+ handle: RuntimeHandle;
259
+ turnId?: string;
260
+ providerTurnId?: string;
261
+ requestId?: string;
262
+ }): Promise<RuntimeTurnInspection>;
198
263
  listHistoricalSessions?(input: {
199
264
  agent?: string;
200
265
  cwd?: string;
@@ -265,6 +330,16 @@ export type ProviderRequest = {
265
330
  id: string;
266
331
  method: "startTurn";
267
332
  params: Omit<Parameters<HappyElvesAgentProvider["startTurn"]>[0], "signal">;
333
+ } | {
334
+ type: "request";
335
+ id: string;
336
+ method: "respondOption";
337
+ params: {
338
+ handle: RuntimeHandle;
339
+ optionRequestId: string;
340
+ selectedOptionId?: string;
341
+ text?: string;
342
+ };
268
343
  } | {
269
344
  type: "request";
270
345
  id: string;
@@ -275,6 +350,11 @@ export type ProviderRequest = {
275
350
  id: string;
276
351
  method: "close";
277
352
  params: Parameters<HappyElvesAgentProvider["close"]>[0];
353
+ } | {
354
+ type: "request";
355
+ id: string;
356
+ method: "inspectTurn";
357
+ params: Parameters<NonNullable<HappyElvesAgentProvider["inspectTurn"]>>[0];
278
358
  } | {
279
359
  type: "request";
280
360
  id: string;
@@ -68,6 +68,18 @@ async function dispatchRequest(provider, request, activeTurns) {
68
68
  switch (request.method) {
69
69
  case "startTurn":
70
70
  throw new ProviderError("INTERNAL_ERROR", "startTurn must be handled by the streaming dispatcher");
71
+ case "respondOption":
72
+ {
73
+ const activeTurn = activeTurns.get(runtimeHandleKey(request.params.handle));
74
+ if (!activeTurn?.respondOption)
75
+ throw new ProviderError("UNSUPPORTED", "respondOption is not supported by this active turn");
76
+ await activeTurn.respondOption({
77
+ optionRequestId: request.params.optionRequestId,
78
+ selectedOptionId: request.params.selectedOptionId,
79
+ text: request.params.text,
80
+ });
81
+ return undefined;
82
+ }
71
83
  case "getProviderInfo":
72
84
  return provider.getProviderInfo();
73
85
  case "listAgents":
@@ -85,6 +97,10 @@ async function dispatchRequest(provider, request, activeTurns) {
85
97
  return provider.cancel(request.params);
86
98
  case "close":
87
99
  return provider.close(request.params);
100
+ case "inspectTurn":
101
+ if (!provider.inspectTurn)
102
+ throw new ProviderError("UNSUPPORTED", "inspectTurn is not supported");
103
+ return provider.inspectTurn(request.params);
88
104
  case "listHistoricalSessions":
89
105
  if (!provider.listHistoricalSessions)
90
106
  throw new ProviderError("UNSUPPORTED", "listHistoricalSessions is not supported");
@@ -1,5 +1,5 @@
1
- import { type PairingStartResponse } from "@happy-elves/shared";
2
- import type { AddControllerDeviceInput, AddControllerDeviceResult, ControllerClientConfig, ControllerInviteClaimInput, ControllerInviteClaimResult, ControllerInviteCreateInput, ControllerInviteCreateResult, CreateScopedTokenInput, DeviceListResponse, ScopedTokenInfo, ScopedTokenSelf } from "./types.js";
1
+ import { type PairingStartResponse } from "../../shared/dist/index.js";
2
+ import type { AddControllerDeviceInput, AddControllerDeviceResult, ControllerClientConfig, ControllerInviteClaimInput, ControllerInviteClaimResult, ControllerInviteCreateInput, ControllerInviteCreateResult, CreateScopedTokenInput, DeviceListResponse, EncryptedMemoryRecord, MemorySettings, RenameDeviceResult, ScopedTokenInfo, ScopedTokenSelf, WorkspaceCwdPin, WorkspaceCwdPinInput, WorkspaceProjectPreference, WorkspaceProjectPreferenceInput, WorkspaceRecentSession, WorkspaceSessionStarResult, WorkspaceSyncState } from "./types.js";
3
3
  export declare function listDevices(config: ControllerClientConfig): Promise<DeviceListResponse>;
4
4
  export declare function createPairingCode(config: ControllerClientConfig): Promise<PairingStartResponse>;
5
5
  export declare function addControllerDevice(config: ControllerClientConfig, input: AddControllerDeviceInput): Promise<AddControllerDeviceResult>;
@@ -9,6 +9,39 @@ export declare function revokeDevice(config: ControllerClientConfig, deviceId: s
9
9
  deviceId: string;
10
10
  revokedAt: number;
11
11
  }>;
12
+ export declare function renameDevice(config: ControllerClientConfig, deviceId: string, name: string): Promise<RenameDeviceResult>;
13
+ export declare function workspaceSyncState(config: ControllerClientConfig): Promise<WorkspaceSyncState>;
14
+ export declare function setSessionStar(config: ControllerClientConfig, sessionId: string, starred: boolean): Promise<WorkspaceSessionStarResult>;
15
+ export declare function markSessionRecent(config: ControllerClientConfig, sessionId: string): Promise<WorkspaceRecentSession>;
16
+ export declare function pinWorkspaceCwd(config: ControllerClientConfig, input: WorkspaceCwdPinInput): Promise<WorkspaceCwdPin>;
17
+ export declare function unpinWorkspaceCwd(config: ControllerClientConfig, input: Pick<WorkspaceCwdPinInput, "machineId" | "cwd">): Promise<{
18
+ machineId: string;
19
+ cwd: string;
20
+ removed: boolean;
21
+ removedAt: number;
22
+ }>;
23
+ export declare function setWorkspaceProjectPreference(config: ControllerClientConfig, input: WorkspaceProjectPreferenceInput): Promise<WorkspaceProjectPreference>;
24
+ export declare function listEncryptedMemories(config: ControllerClientConfig, projectKey?: string): Promise<{
25
+ memories: EncryptedMemoryRecord[];
26
+ }>;
27
+ export declare function saveEncryptedMemory(config: ControllerClientConfig, input: {
28
+ id: string;
29
+ projectKey: string;
30
+ encryptedMemory: unknown;
31
+ }): Promise<EncryptedMemoryRecord>;
32
+ export declare function deleteMemory(config: ControllerClientConfig, id: string): Promise<{
33
+ id: string;
34
+ deleted: boolean;
35
+ deletedAt: number;
36
+ }>;
37
+ export declare function listMemorySettings(config: ControllerClientConfig, projectKey?: string): Promise<{
38
+ settings: MemorySettings[];
39
+ }>;
40
+ export declare function setMemorySettings(config: ControllerClientConfig, input: {
41
+ projectKey: string;
42
+ disabled?: boolean;
43
+ injectionEnabled?: boolean;
44
+ }): Promise<MemorySettings>;
12
45
  export declare function tokenSelf(config: ControllerClientConfig): Promise<ScopedTokenSelf>;
13
46
  export declare function listScopedTokens(config: ControllerClientConfig): Promise<{
14
47
  tokens: ScopedTokenInfo[];
@@ -1,6 +1,6 @@
1
1
  import { base64UrlEncode, encryptJson, randomBytes } from "../../shared/dist/index.js";
2
2
  import { authenticatedJson, authenticatedJsonRaw, publicJsonRaw } from "./http.js";
3
- import { parseAddControllerDeviceResult, parseControllerInviteClaim, parseControllerInviteCreate, parseDevicesResponse, parsePairingStartResponse, parseRevokeDeviceResult, parseScopedTokenCreate, parseScopedTokenList, parseScopedTokenRevoke, parseScopedTokenSelf, } from "./parsers.js";
3
+ import { parseAddControllerDeviceResult, parseControllerInviteClaim, parseControllerInviteCreate, parseDevicesResponse, parseMemoryDeleteResult, parseMemoryListResponse, parseMemorySaveResult, parseMemorySettingsList, parseMemorySettingsResult, parsePairingStartResponse, parseRenameDeviceResult, parseRevokeDeviceResult, parseScopedTokenCreate, parseScopedTokenList, parseScopedTokenRevoke, parseScopedTokenSelf, parseWorkspaceCwdPinResult, parseWorkspaceCwdUnpinResult, parseWorkspaceProjectPreferenceResult, parseWorkspaceRecentSessionResult, parseWorkspaceSessionStarResult, parseWorkspaceSyncState, } from "./parsers.js";
4
4
  import { requireNonEmpty } from "./validation.js";
5
5
  export async function listDevices(config) {
6
6
  return await authenticatedJson(config, "/api/devices", { method: "GET" }, parseDevicesResponse);
@@ -54,6 +54,103 @@ export async function revokeDevice(config, deviceId) {
54
54
  body: JSON.stringify({ deviceId: checkedDeviceId }),
55
55
  }, parseRevokeDeviceResult);
56
56
  }
57
+ export async function renameDevice(config, deviceId, name) {
58
+ const checkedDeviceId = requireNonEmpty(deviceId, "deviceId");
59
+ const checkedName = requireNonEmpty(name, "name");
60
+ return await authenticatedJson(config, "/api/devices/rename", {
61
+ method: "POST",
62
+ headers: { "content-type": "application/json" },
63
+ body: JSON.stringify({ deviceId: checkedDeviceId, name: checkedName }),
64
+ }, parseRenameDeviceResult);
65
+ }
66
+ export async function workspaceSyncState(config) {
67
+ return await authenticatedJson(config, "/api/workspace-sync", { method: "GET" }, parseWorkspaceSyncState);
68
+ }
69
+ export async function setSessionStar(config, sessionId, starred) {
70
+ const checkedSessionId = requireNonEmpty(sessionId, "sessionId");
71
+ return await authenticatedJson(config, "/api/workspace-sync/session-star", {
72
+ method: "POST",
73
+ headers: { "content-type": "application/json" },
74
+ body: JSON.stringify({ sessionId: checkedSessionId, starred }),
75
+ }, parseWorkspaceSessionStarResult);
76
+ }
77
+ export async function markSessionRecent(config, sessionId) {
78
+ const checkedSessionId = requireNonEmpty(sessionId, "sessionId");
79
+ return await authenticatedJson(config, "/api/workspace-sync/session-recent", {
80
+ method: "POST",
81
+ headers: { "content-type": "application/json" },
82
+ body: JSON.stringify({ sessionId: checkedSessionId }),
83
+ }, parseWorkspaceRecentSessionResult);
84
+ }
85
+ export async function pinWorkspaceCwd(config, input) {
86
+ const machineId = requireNonEmpty(input.machineId, "machineId");
87
+ const cwd = requireNonEmpty(input.cwd, "cwd");
88
+ return await authenticatedJson(config, "/api/workspace-sync/cwd-pin", {
89
+ method: "POST",
90
+ headers: { "content-type": "application/json" },
91
+ body: JSON.stringify({ machineId, cwd, ...(input.label ? { label: input.label } : {}) }),
92
+ }, parseWorkspaceCwdPinResult);
93
+ }
94
+ export async function unpinWorkspaceCwd(config, input) {
95
+ const machineId = requireNonEmpty(input.machineId, "machineId");
96
+ const cwd = requireNonEmpty(input.cwd, "cwd");
97
+ return await authenticatedJson(config, "/api/workspace-sync/cwd-unpin", {
98
+ method: "POST",
99
+ headers: { "content-type": "application/json" },
100
+ body: JSON.stringify({ machineId, cwd }),
101
+ }, parseWorkspaceCwdUnpinResult);
102
+ }
103
+ export async function setWorkspaceProjectPreference(config, input) {
104
+ const projectKey = requireNonEmpty(input.projectKey, "projectKey");
105
+ return await authenticatedJson(config, "/api/workspace-sync/project-preference", {
106
+ method: "POST",
107
+ headers: { "content-type": "application/json" },
108
+ body: JSON.stringify({
109
+ projectKey,
110
+ ...(input.machineId ? { machineId: input.machineId } : {}),
111
+ ...(input.cwd ? { cwd: input.cwd } : {}),
112
+ ...(input.agent ? { agent: input.agent } : {}),
113
+ ...(input.memoryMode ? { memoryMode: input.memoryMode } : {}),
114
+ }),
115
+ }, parseWorkspaceProjectPreferenceResult);
116
+ }
117
+ export async function listEncryptedMemories(config, projectKey) {
118
+ const query = projectKey ? `?projectKey=${encodeURIComponent(projectKey)}` : "";
119
+ return await authenticatedJson(config, `/api/memory${query}`, { method: "GET" }, parseMemoryListResponse);
120
+ }
121
+ export async function saveEncryptedMemory(config, input) {
122
+ const id = requireNonEmpty(input.id, "id");
123
+ const projectKey = requireNonEmpty(input.projectKey, "projectKey");
124
+ return await authenticatedJson(config, "/api/memory", {
125
+ method: "POST",
126
+ headers: { "content-type": "application/json" },
127
+ body: JSON.stringify({ id, projectKey, encryptedMemory: input.encryptedMemory }),
128
+ }, parseMemorySaveResult);
129
+ }
130
+ export async function deleteMemory(config, id) {
131
+ const checkedId = requireNonEmpty(id, "id");
132
+ return await authenticatedJson(config, "/api/memory/delete", {
133
+ method: "POST",
134
+ headers: { "content-type": "application/json" },
135
+ body: JSON.stringify({ id: checkedId }),
136
+ }, parseMemoryDeleteResult);
137
+ }
138
+ export async function listMemorySettings(config, projectKey) {
139
+ const query = projectKey ? `?projectKey=${encodeURIComponent(projectKey)}` : "";
140
+ return await authenticatedJson(config, `/api/memory/settings${query}`, { method: "GET" }, parseMemorySettingsList);
141
+ }
142
+ export async function setMemorySettings(config, input) {
143
+ const projectKey = requireNonEmpty(input.projectKey, "projectKey");
144
+ return await authenticatedJson(config, "/api/memory/settings", {
145
+ method: "POST",
146
+ headers: { "content-type": "application/json" },
147
+ body: JSON.stringify({
148
+ projectKey,
149
+ ...(input.disabled === undefined ? {} : { disabled: input.disabled }),
150
+ ...(input.injectionEnabled === undefined ? {} : { injectionEnabled: input.injectionEnabled }),
151
+ }),
152
+ }, parseMemorySettingsResult);
153
+ }
57
154
  export async function tokenSelf(config) {
58
155
  return await authenticatedJson(config, "/api/scoped-tokens/self", { method: "GET" }, parseScopedTokenSelf);
59
156
  }
@@ -1,6 +1,6 @@
1
- import { type DirectoryListing, type EncryptedSessionEvent, type HistoricalSessionSnapshot, type MachineSnapshot, type PairingStartResponse, type SessionSnapshot } from "@happy-elves/shared";
1
+ import { type DirectoryListing, type EncryptedSessionEvent, type EncryptedEnvelope, type HistoricalSessionSnapshot, type MachineSnapshot, type PairingStartResponse, type SessionSnapshot } from "../../shared/dist/index.js";
2
2
  import { sendCommand } from "./transport.js";
3
- import type { AddControllerDeviceInput, AddControllerDeviceResult, CancelInput, CollectInput, CommandResult, ControllerClientConfig, ControllerInviteClaimInput, ControllerInviteClaimResult, ControllerInviteCreateInput, ControllerInviteCreateResult, ControllerSnapshot, ControllerSubscriptionHandlers, CreateScopedTokenInput, CreateSessionInput, DecodedSessionEvent, DecodedSessionEventsPage, DeviceListResponse, DirectoryInput, FilePreviewInput, ForkInput, HistoricalSessionListPage, HistoricalSessionsInput, ImportHistoricalSessionInput, MachineMetadata, MachineDevExecInput, MachineDevExecResponse, MachineDiagnosticsResponse, RunOptions, ScopedTokenInfo, ScopedTokenSelf, SessionFilter, SessionMetadata, WaitInput } from "./types.js";
3
+ import type { AddControllerDeviceInput, AddControllerDeviceResult, CancelInput, CollectInput, CommandResult, ControllerClientConfig, ControllerInviteClaimInput, ControllerInviteClaimResult, ControllerInviteCreateInput, ControllerInviteCreateResult, ControllerSnapshot, ControllerSubscriptionHandlers, CreateScopedTokenInput, CreateSessionInput, DecodedSessionEvent, DecodedSessionEventsPage, DeviceListResponse, DirectoryInput, FilePreviewInput, ForkInput, GatewayCommandInput, GatewayCommandResponse, HistoricalSessionListPage, HistoricalSessionsInput, ImportHistoricalSessionInput, MachineMetadata, MachineDevExecInput, MachineDevExecResponse, MachineDiagnosticsResponse, MemoryCommandInput, MemoryCommandResponse, DecodedMemoryRecord, RepairSessionHeadInput, RepairSessionHeadResult, RunOptions, ScheduleCommandInput, ScheduleCommandResponse, ScopedTokenInfo, ScopedTokenSelf, SessionFilter, SessionMetadata, WaitInput, MemorySaveInput, MemorySearchInput, MemorySettings, TurnReconcileResponse, WorkspaceCwdPin, WorkspaceCwdPinInput, WorkspaceProjectPreference, WorkspaceProjectPreferenceInput, WorkspaceRecentSession, WorkspaceSessionStarResult, WorkspaceSyncState } from "./types.js";
4
4
  export declare class ControllerClient {
5
5
  readonly config: ControllerClientConfig;
6
6
  constructor(config: ControllerClientConfig);
@@ -15,6 +15,37 @@ export declare class ControllerClient {
15
15
  deviceId: string;
16
16
  revokedAt: number;
17
17
  }>;
18
+ renameDevice(deviceId: string, name: string): Promise<{
19
+ deviceId: string;
20
+ name: string;
21
+ renamedAt: number;
22
+ }>;
23
+ workspaceSync(): Promise<WorkspaceSyncState>;
24
+ starSession(sessionId: string): Promise<WorkspaceSessionStarResult>;
25
+ unstarSession(sessionId: string): Promise<WorkspaceSessionStarResult>;
26
+ markSessionRecent(sessionId: string): Promise<WorkspaceRecentSession>;
27
+ pinWorkspaceCwd(input: WorkspaceCwdPinInput): Promise<WorkspaceCwdPin>;
28
+ unpinWorkspaceCwd(input: Pick<WorkspaceCwdPinInput, "machineId" | "cwd">): Promise<{
29
+ machineId: string;
30
+ cwd: string;
31
+ removed: boolean;
32
+ removedAt: number;
33
+ }>;
34
+ setWorkspaceProjectPreference(input: WorkspaceProjectPreferenceInput): Promise<WorkspaceProjectPreference>;
35
+ saveMemory(input: MemorySaveInput): Promise<DecodedMemoryRecord>;
36
+ listMemories(projectKey?: string): Promise<DecodedMemoryRecord[]>;
37
+ searchMemories(input: MemorySearchInput): Promise<DecodedMemoryRecord[]>;
38
+ deleteMemory(id: string): Promise<{
39
+ id: string;
40
+ deleted: boolean;
41
+ deletedAt: number;
42
+ }>;
43
+ memorySettings(projectKey?: string): Promise<MemorySettings[]>;
44
+ setMemorySettings(input: {
45
+ projectKey: string;
46
+ disabled?: boolean;
47
+ injectionEnabled?: boolean;
48
+ }): Promise<MemorySettings>;
18
49
  tokenSelf(): Promise<ScopedTokenSelf>;
19
50
  listScopedTokens(): Promise<{
20
51
  tokens: ScopedTokenInfo[];
@@ -31,31 +62,53 @@ export declare class ControllerClient {
31
62
  getSession(sessionId: string): Promise<SessionSnapshot | undefined>;
32
63
  history(sessionId: string, limit?: number): Promise<DecodedSessionEvent[]>;
33
64
  createSession(input: CreateSessionInput): Promise<CommandResult>;
65
+ updateSessionMetadata(sessionId: string, metadata: SessionMetadata): Promise<SessionSnapshot>;
66
+ setSessionTags(sessionId: string, tags: readonly unknown[]): Promise<{
67
+ session: SessionSnapshot;
68
+ tags: string[];
69
+ }>;
70
+ findLoadedRuntimeSession(input: {
71
+ machineId: string;
72
+ agent: string;
73
+ runtimeSessionId: string;
74
+ }): Promise<SessionSnapshot | undefined>;
34
75
  collect(sessionId: string, input?: CollectInput): Promise<DecodedSessionEvent[]>;
35
76
  collectPage(sessionId: string, input?: CollectInput): Promise<DecodedSessionEventsPage>;
77
+ repairSessionHead(sessionId: string, input: RepairSessionHeadInput): Promise<RepairSessionHeadResult>;
36
78
  wait(sessionId: string, input?: WaitInput): Promise<SessionSnapshot>;
37
- resume(sessionId: string): Promise<CommandResult>;
79
+ resume(sessionId: string, options?: {
80
+ syncDirection?: "latest" | "older";
81
+ }): Promise<CommandResult>;
38
82
  listHistoricalSessionsPage(input: HistoricalSessionsInput): Promise<HistoricalSessionListPage>;
39
83
  listHistoricalSessions(input: HistoricalSessionsInput): Promise<HistoricalSessionSnapshot[]>;
40
84
  listDirectory(input: DirectoryInput): Promise<DirectoryListing>;
41
- previewFile(input: FilePreviewInput): Promise<import("@happy-elves/shared").FilePreviewResult>;
85
+ previewFile(input: FilePreviewInput): Promise<import("../../shared/dist/index.js").FilePreviewResult>;
42
86
  machineDiagnostics(machineId: string): Promise<MachineDiagnosticsResponse>;
43
87
  machineDevExec(input: MachineDevExecInput): Promise<MachineDevExecResponse>;
88
+ gateway(input: GatewayCommandInput): Promise<GatewayCommandResponse>;
89
+ schedule(input: ScheduleCommandInput): Promise<ScheduleCommandResponse>;
90
+ memory(input: MemoryCommandInput): Promise<MemoryCommandResponse>;
44
91
  importHistoricalSession(input: ImportHistoricalSessionInput): Promise<CommandResult>;
45
92
  rewind(sessionId: string, to: string): Promise<CommandResult>;
46
93
  fork(sessionId: string, input: ForkInput): Promise<CommandResult>;
47
94
  renameSession(sessionId: string, name: string): Promise<CommandResult>;
48
95
  run(sessionId: string, text: string, options?: RunOptions): Promise<CommandResult>;
96
+ reconcileTurn(sessionId: string, turnId?: string): Promise<TurnReconcileResponse>;
49
97
  cancel(sessionId: string, input?: CancelInput): Promise<CommandResult>;
50
98
  close(sessionId: string, reason?: string): Promise<CommandResult>;
51
99
  subscribe(handlers: ControllerSubscriptionHandlers): WebSocket;
52
100
  decodeEvents(events: EncryptedSessionEvent[]): Promise<DecodedSessionEvent[]>;
53
101
  decodeMachineMetadata(machine: MachineSnapshot): Promise<MachineMetadata>;
54
102
  decodeSessionMetadata(session: SessionSnapshot): Promise<SessionMetadata>;
103
+ decodeMemory(memory: {
104
+ id: string;
105
+ projectKey: string;
106
+ encryptedMemory: EncryptedEnvelope;
107
+ createdAt: number;
108
+ updatedAt: number;
109
+ }): Promise<DecodedMemoryRecord>;
55
110
  sendCommand(command: Parameters<typeof sendCommand>[1], waitForDone?: boolean, timeoutMs?: number): Promise<CommandResult>;
56
111
  private waitForCreatedSession;
57
- private recoverCreatedSessionName;
58
- private waitForSessionName;
59
112
  private waitForRunSettlement;
60
113
  private mergeReplayedTurnEvents;
61
114
  private sessionEvents;