@pellux/goodvibes-sdk 0.38.0 → 1.0.0

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 (474) hide show
  1. package/dist/contracts/artifacts/operator-contract.json +3171 -929
  2. package/dist/daemon.d.ts +2 -0
  3. package/dist/daemon.d.ts.map +1 -1
  4. package/dist/daemon.js +4 -0
  5. package/dist/events/surfaces.d.ts +25 -3
  6. package/dist/events/surfaces.d.ts.map +1 -1
  7. package/dist/events/surfaces.js +22 -1
  8. package/dist/events/workflows.d.ts +7 -6
  9. package/dist/events/workflows.d.ts.map +1 -1
  10. package/dist/index.d.ts +1 -1
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/platform/agents/archetypes.d.ts.map +1 -1
  13. package/dist/platform/agents/archetypes.js +7 -0
  14. package/dist/platform/agents/index.d.ts +1 -0
  15. package/dist/platform/agents/index.d.ts.map +1 -1
  16. package/dist/platform/agents/index.js +1 -0
  17. package/dist/platform/agents/orchestrator-runner.d.ts +13 -0
  18. package/dist/platform/agents/orchestrator-runner.d.ts.map +1 -1
  19. package/dist/platform/agents/orchestrator-runner.js +14 -0
  20. package/dist/platform/agents/orchestrator.d.ts +38 -6
  21. package/dist/platform/agents/orchestrator.d.ts.map +1 -1
  22. package/dist/platform/agents/orchestrator.js +66 -18
  23. package/dist/platform/agents/planner-decomposition-runner.d.ts +38 -0
  24. package/dist/platform/agents/planner-decomposition-runner.d.ts.map +1 -0
  25. package/dist/platform/agents/planner-decomposition-runner.js +113 -0
  26. package/dist/platform/agents/turn-knowledge-injection.d.ts +88 -3
  27. package/dist/platform/agents/turn-knowledge-injection.d.ts.map +1 -1
  28. package/dist/platform/agents/turn-knowledge-injection.js +147 -30
  29. package/dist/platform/agents/worktree.d.ts +126 -8
  30. package/dist/platform/agents/worktree.d.ts.map +1 -1
  31. package/dist/platform/agents/worktree.js +240 -19
  32. package/dist/platform/agents/wrfc-controller.d.ts +23 -0
  33. package/dist/platform/agents/wrfc-controller.d.ts.map +1 -1
  34. package/dist/platform/agents/wrfc-controller.js +158 -32
  35. package/dist/platform/agents/wrfc-gate-runtime.d.ts +9 -0
  36. package/dist/platform/agents/wrfc-gate-runtime.d.ts.map +1 -1
  37. package/dist/platform/agents/wrfc-gate-runtime.js +7 -3
  38. package/dist/platform/agents/wrfc-gates.d.ts +1 -1
  39. package/dist/platform/agents/wrfc-gates.d.ts.map +1 -1
  40. package/dist/platform/agents/wrfc-gates.js +7 -1
  41. package/dist/platform/agents/wrfc-types.d.ts +23 -3
  42. package/dist/platform/agents/wrfc-types.d.ts.map +1 -1
  43. package/dist/platform/automation/types.d.ts +9 -1
  44. package/dist/platform/automation/types.d.ts.map +1 -1
  45. package/dist/platform/calendar/calendar-api-shared.d.ts +25 -0
  46. package/dist/platform/calendar/calendar-api-shared.d.ts.map +1 -0
  47. package/dist/platform/calendar/calendar-api-shared.js +100 -0
  48. package/dist/platform/calendar/calendar-connector.d.ts +79 -0
  49. package/dist/platform/calendar/calendar-connector.d.ts.map +1 -0
  50. package/dist/platform/calendar/calendar-connector.js +155 -0
  51. package/dist/platform/calendar/google-calendar-api.d.ts +25 -0
  52. package/dist/platform/calendar/google-calendar-api.d.ts.map +1 -0
  53. package/dist/platform/calendar/google-calendar-api.js +89 -0
  54. package/dist/platform/calendar/http-fetch-adapter.d.ts +25 -0
  55. package/dist/platform/calendar/http-fetch-adapter.d.ts.map +1 -0
  56. package/dist/platform/calendar/http-fetch-adapter.js +25 -0
  57. package/dist/platform/calendar/ics-parser.d.ts +35 -0
  58. package/dist/platform/calendar/ics-parser.d.ts.map +1 -0
  59. package/dist/platform/calendar/ics-parser.js +236 -0
  60. package/dist/platform/calendar/index.d.ts +41 -0
  61. package/dist/platform/calendar/index.d.ts.map +1 -0
  62. package/dist/platform/calendar/index.js +49 -0
  63. package/dist/platform/calendar/merged-calendar-model.d.ts +67 -0
  64. package/dist/platform/calendar/merged-calendar-model.d.ts.map +1 -0
  65. package/dist/platform/calendar/merged-calendar-model.js +181 -0
  66. package/dist/platform/calendar/microsoft-graph-api.d.ts +25 -0
  67. package/dist/platform/calendar/microsoft-graph-api.d.ts.map +1 -0
  68. package/dist/platform/calendar/microsoft-graph-api.js +95 -0
  69. package/dist/platform/calendar/oauth-flow.d.ts +62 -0
  70. package/dist/platform/calendar/oauth-flow.d.ts.map +1 -0
  71. package/dist/platform/calendar/oauth-flow.js +305 -0
  72. package/dist/platform/calendar/oauth-providers.d.ts +43 -0
  73. package/dist/platform/calendar/oauth-providers.d.ts.map +1 -0
  74. package/dist/platform/calendar/oauth-providers.js +120 -0
  75. package/dist/platform/calendar/oauth-token-store.d.ts +72 -0
  76. package/dist/platform/calendar/oauth-token-store.d.ts.map +1 -0
  77. package/dist/platform/calendar/oauth-token-store.js +189 -0
  78. package/dist/platform/calendar/oauth-types.d.ts +274 -0
  79. package/dist/platform/calendar/oauth-types.d.ts.map +1 -0
  80. package/dist/platform/calendar/oauth-types.js +22 -0
  81. package/dist/platform/calendar/rrule.d.ts +39 -0
  82. package/dist/platform/calendar/rrule.d.ts.map +1 -0
  83. package/dist/platform/calendar/rrule.js +261 -0
  84. package/dist/platform/calendar/subscription-store.d.ts +118 -0
  85. package/dist/platform/calendar/subscription-store.d.ts.map +1 -0
  86. package/dist/platform/calendar/subscription-store.js +293 -0
  87. package/dist/platform/calendar/types.d.ts +170 -0
  88. package/dist/platform/calendar/types.d.ts.map +1 -0
  89. package/dist/platform/calendar/types.js +21 -0
  90. package/dist/platform/companion/companion-chat-attachments.d.ts +29 -0
  91. package/dist/platform/companion/companion-chat-attachments.d.ts.map +1 -0
  92. package/dist/platform/companion/companion-chat-attachments.js +121 -0
  93. package/dist/platform/companion/companion-chat-broker-bridge.d.ts +40 -0
  94. package/dist/platform/companion/companion-chat-broker-bridge.d.ts.map +1 -0
  95. package/dist/platform/companion/companion-chat-broker-bridge.js +14 -0
  96. package/dist/platform/companion/companion-chat-broker-sync.d.ts +38 -0
  97. package/dist/platform/companion/companion-chat-broker-sync.d.ts.map +1 -0
  98. package/dist/platform/companion/companion-chat-broker-sync.js +80 -0
  99. package/dist/platform/companion/companion-chat-gc.d.ts +63 -0
  100. package/dist/platform/companion/companion-chat-gc.d.ts.map +1 -0
  101. package/dist/platform/companion/companion-chat-gc.js +38 -0
  102. package/dist/platform/companion/companion-chat-manager.d.ts +67 -20
  103. package/dist/platform/companion/companion-chat-manager.d.ts.map +1 -1
  104. package/dist/platform/companion/companion-chat-manager.js +130 -144
  105. package/dist/platform/companion/companion-chat-persistence.d.ts +9 -1
  106. package/dist/platform/companion/companion-chat-persistence.d.ts.map +1 -1
  107. package/dist/platform/companion/companion-chat-persistence.js +10 -2
  108. package/dist/platform/companion/companion-chat-routes.d.ts +2 -1
  109. package/dist/platform/companion/companion-chat-routes.d.ts.map +1 -1
  110. package/dist/platform/companion/companion-chat-routes.js +37 -4
  111. package/dist/platform/config/credential-status.d.ts +28 -0
  112. package/dist/platform/config/credential-status.d.ts.map +1 -0
  113. package/dist/platform/config/credential-status.js +75 -0
  114. package/dist/platform/config/index.d.ts +25 -0
  115. package/dist/platform/config/index.d.ts.map +1 -1
  116. package/dist/platform/config/index.js +18 -0
  117. package/dist/platform/config/manager.d.ts +9 -0
  118. package/dist/platform/config/manager.d.ts.map +1 -1
  119. package/dist/platform/config/manager.js +21 -2
  120. package/dist/platform/config/migrations.d.ts +48 -0
  121. package/dist/platform/config/migrations.d.ts.map +1 -0
  122. package/dist/platform/config/migrations.js +54 -0
  123. package/dist/platform/config/schema-domain-core.d.ts +10 -1
  124. package/dist/platform/config/schema-domain-core.d.ts.map +1 -1
  125. package/dist/platform/config/schema-domain-core.js +46 -3
  126. package/dist/platform/config/schema-types.d.ts +13 -7
  127. package/dist/platform/config/schema-types.d.ts.map +1 -1
  128. package/dist/platform/config/schema.d.ts.map +1 -1
  129. package/dist/platform/config/schema.js +2 -0
  130. package/dist/platform/control-plane/approval-broker.d.ts +11 -0
  131. package/dist/platform/control-plane/approval-broker.d.ts.map +1 -1
  132. package/dist/platform/control-plane/approval-broker.js +17 -1
  133. package/dist/platform/control-plane/approval-hunk-apply.d.ts +77 -0
  134. package/dist/platform/control-plane/approval-hunk-apply.d.ts.map +1 -0
  135. package/dist/platform/control-plane/approval-hunk-apply.js +80 -0
  136. package/dist/platform/control-plane/gateway-disabled-response.d.ts +20 -0
  137. package/dist/platform/control-plane/gateway-disabled-response.d.ts.map +1 -0
  138. package/dist/platform/control-plane/gateway-disabled-response.js +24 -0
  139. package/dist/platform/control-plane/gateway-scope-enforcement.d.ts +68 -0
  140. package/dist/platform/control-plane/gateway-scope-enforcement.d.ts.map +1 -0
  141. package/dist/platform/control-plane/gateway-scope-enforcement.js +91 -0
  142. package/dist/platform/control-plane/gateway-utils.d.ts +17 -0
  143. package/dist/platform/control-plane/gateway-utils.d.ts.map +1 -1
  144. package/dist/platform/control-plane/gateway-utils.js +30 -0
  145. package/dist/platform/control-plane/gateway.d.ts +12 -2
  146. package/dist/platform/control-plane/gateway.d.ts.map +1 -1
  147. package/dist/platform/control-plane/gateway.js +27 -31
  148. package/dist/platform/control-plane/index.d.ts +6 -1
  149. package/dist/platform/control-plane/index.d.ts.map +1 -1
  150. package/dist/platform/control-plane/index.js +4 -0
  151. package/dist/platform/control-plane/invoke-input-validation.d.ts +56 -0
  152. package/dist/platform/control-plane/invoke-input-validation.d.ts.map +1 -0
  153. package/dist/platform/control-plane/invoke-input-validation.js +163 -0
  154. package/dist/platform/control-plane/method-catalog-admin.d.ts.map +1 -1
  155. package/dist/platform/control-plane/method-catalog-admin.js +12 -1
  156. package/dist/platform/control-plane/method-catalog-calendar.d.ts +16 -0
  157. package/dist/platform/control-plane/method-catalog-calendar.d.ts.map +1 -1
  158. package/dist/platform/control-plane/method-catalog-calendar.js +21 -0
  159. package/dist/platform/control-plane/method-catalog-channels.d.ts.map +1 -1
  160. package/dist/platform/control-plane/method-catalog-channels.js +32 -3
  161. package/dist/platform/control-plane/method-catalog-control-automation.d.ts.map +1 -1
  162. package/dist/platform/control-plane/method-catalog-control-automation.js +19 -34
  163. package/dist/platform/control-plane/method-catalog-control-companion.d.ts +15 -0
  164. package/dist/platform/control-plane/method-catalog-control-companion.d.ts.map +1 -0
  165. package/dist/platform/control-plane/method-catalog-control-companion.js +133 -0
  166. package/dist/platform/control-plane/method-catalog-control-core.d.ts.map +1 -1
  167. package/dist/platform/control-plane/method-catalog-control-core.js +104 -122
  168. package/dist/platform/control-plane/method-catalog-control.d.ts.map +1 -1
  169. package/dist/platform/control-plane/method-catalog-control.js +4 -0
  170. package/dist/platform/control-plane/method-catalog-email.d.ts +17 -0
  171. package/dist/platform/control-plane/method-catalog-email.d.ts.map +1 -1
  172. package/dist/platform/control-plane/method-catalog-email.js +21 -0
  173. package/dist/platform/control-plane/method-catalog-events.d.ts +28 -0
  174. package/dist/platform/control-plane/method-catalog-events.d.ts.map +1 -1
  175. package/dist/platform/control-plane/method-catalog-events.js +74 -1
  176. package/dist/platform/control-plane/method-catalog-fleet.d.ts +24 -0
  177. package/dist/platform/control-plane/method-catalog-fleet.d.ts.map +1 -0
  178. package/dist/platform/control-plane/method-catalog-fleet.js +65 -0
  179. package/dist/platform/control-plane/method-catalog-route-reconcile.d.ts +84 -0
  180. package/dist/platform/control-plane/method-catalog-route-reconcile.d.ts.map +1 -0
  181. package/dist/platform/control-plane/method-catalog-route-reconcile.js +103 -0
  182. package/dist/platform/control-plane/method-catalog-shared.d.ts +29 -0
  183. package/dist/platform/control-plane/method-catalog-shared.d.ts.map +1 -1
  184. package/dist/platform/control-plane/method-catalog.d.ts +9 -0
  185. package/dist/platform/control-plane/method-catalog.d.ts.map +1 -1
  186. package/dist/platform/control-plane/method-catalog.js +32 -3
  187. package/dist/platform/control-plane/operator-contract-schemas-admin.d.ts +8 -0
  188. package/dist/platform/control-plane/operator-contract-schemas-admin.d.ts.map +1 -1
  189. package/dist/platform/control-plane/operator-contract-schemas-admin.js +22 -1
  190. package/dist/platform/control-plane/operator-contract-schemas-fleet.d.ts +18 -0
  191. package/dist/platform/control-plane/operator-contract-schemas-fleet.d.ts.map +1 -0
  192. package/dist/platform/control-plane/operator-contract-schemas-fleet.js +182 -0
  193. package/dist/platform/control-plane/operator-contract-schemas-permissions.d.ts.map +1 -1
  194. package/dist/platform/control-plane/operator-contract-schemas-permissions.js +5 -0
  195. package/dist/platform/control-plane/operator-contract-schemas-runtime.d.ts +29 -0
  196. package/dist/platform/control-plane/operator-contract-schemas-runtime.d.ts.map +1 -1
  197. package/dist/platform/control-plane/operator-contract-schemas-runtime.js +57 -3
  198. package/dist/platform/control-plane/operator-contract-schemas.d.ts +1 -0
  199. package/dist/platform/control-plane/operator-contract-schemas.d.ts.map +1 -1
  200. package/dist/platform/control-plane/operator-contract-schemas.js +1 -0
  201. package/dist/platform/control-plane/operator-contract.d.ts.map +1 -1
  202. package/dist/platform/control-plane/operator-contract.js +8 -0
  203. package/dist/platform/control-plane/routes/checkpoints.d.ts +39 -0
  204. package/dist/platform/control-plane/routes/checkpoints.d.ts.map +1 -0
  205. package/dist/platform/control-plane/routes/checkpoints.js +166 -0
  206. package/dist/platform/control-plane/routes/fleet.d.ts +53 -0
  207. package/dist/platform/control-plane/routes/fleet.d.ts.map +1 -0
  208. package/dist/platform/control-plane/routes/fleet.js +153 -0
  209. package/dist/platform/control-plane/routes/gateway-verb-error.d.ts +30 -0
  210. package/dist/platform/control-plane/routes/gateway-verb-error.d.ts.map +1 -0
  211. package/dist/platform/control-plane/routes/gateway-verb-error.js +36 -0
  212. package/dist/platform/control-plane/routes/index.d.ts +0 -6
  213. package/dist/platform/control-plane/routes/index.d.ts.map +1 -1
  214. package/dist/platform/control-plane/routes/index.js +5 -5
  215. package/dist/platform/control-plane/routes/invocation-params.d.ts +23 -0
  216. package/dist/platform/control-plane/routes/invocation-params.d.ts.map +1 -0
  217. package/dist/platform/control-plane/routes/invocation-params.js +9 -0
  218. package/dist/platform/control-plane/routes/register-w3-s2.d.ts +26 -0
  219. package/dist/platform/control-plane/routes/register-w3-s2.d.ts.map +1 -0
  220. package/dist/platform/control-plane/routes/register-w3-s2.js +8 -0
  221. package/dist/platform/control-plane/routes/session-search.d.ts +37 -0
  222. package/dist/platform/control-plane/routes/session-search.d.ts.map +1 -0
  223. package/dist/platform/control-plane/routes/session-search.js +113 -0
  224. package/dist/platform/control-plane/session-broker-gc.d.ts +16 -0
  225. package/dist/platform/control-plane/session-broker-gc.d.ts.map +1 -1
  226. package/dist/platform/control-plane/session-broker-gc.js +23 -6
  227. package/dist/platform/control-plane/session-broker-helpers.d.ts +3 -3
  228. package/dist/platform/control-plane/session-broker-helpers.d.ts.map +1 -1
  229. package/dist/platform/control-plane/session-broker-inputs.d.ts +18 -0
  230. package/dist/platform/control-plane/session-broker-inputs.d.ts.map +1 -1
  231. package/dist/platform/control-plane/session-broker-inputs.js +34 -0
  232. package/dist/platform/control-plane/session-broker-sessions.d.ts +102 -3
  233. package/dist/platform/control-plane/session-broker-sessions.d.ts.map +1 -1
  234. package/dist/platform/control-plane/session-broker-sessions.js +179 -5
  235. package/dist/platform/control-plane/session-broker-state.d.ts +20 -1
  236. package/dist/platform/control-plane/session-broker-state.d.ts.map +1 -1
  237. package/dist/platform/control-plane/session-broker-state.js +67 -5
  238. package/dist/platform/control-plane/session-broker.d.ts +51 -38
  239. package/dist/platform/control-plane/session-broker.d.ts.map +1 -1
  240. package/dist/platform/control-plane/session-broker.js +183 -75
  241. package/dist/platform/control-plane/session-store-importer.d.ts +57 -0
  242. package/dist/platform/control-plane/session-store-importer.d.ts.map +1 -0
  243. package/dist/platform/control-plane/session-store-importer.js +227 -0
  244. package/dist/platform/control-plane/session-types.d.ts +142 -7
  245. package/dist/platform/control-plane/session-types.d.ts.map +1 -1
  246. package/dist/platform/core/execution-plan.d.ts +43 -1
  247. package/dist/platform/core/execution-plan.d.ts.map +1 -1
  248. package/dist/platform/core/execution-plan.js +46 -10
  249. package/dist/platform/core/index.d.ts +1 -0
  250. package/dist/platform/core/index.d.ts.map +1 -1
  251. package/dist/platform/core/index.js +1 -0
  252. package/dist/platform/core/orchestrator-runtime.d.ts +21 -1
  253. package/dist/platform/core/orchestrator-runtime.d.ts.map +1 -1
  254. package/dist/platform/core/orchestrator-tool-runtime.d.ts +7 -0
  255. package/dist/platform/core/orchestrator-tool-runtime.d.ts.map +1 -1
  256. package/dist/platform/core/orchestrator-tool-runtime.js +10 -0
  257. package/dist/platform/core/orchestrator-turn-loop.d.ts +8 -1
  258. package/dist/platform/core/orchestrator-turn-loop.d.ts.map +1 -1
  259. package/dist/platform/core/orchestrator-turn-loop.js +6 -0
  260. package/dist/platform/core/orchestrator.d.ts +6 -0
  261. package/dist/platform/core/orchestrator.d.ts.map +1 -1
  262. package/dist/platform/core/orchestrator.js +15 -0
  263. package/dist/platform/core/plan-decomposition.d.ts +196 -0
  264. package/dist/platform/core/plan-decomposition.d.ts.map +1 -0
  265. package/dist/platform/core/plan-decomposition.js +417 -0
  266. package/dist/platform/core/plan-proposal.d.ts +39 -0
  267. package/dist/platform/core/plan-proposal.d.ts.map +1 -1
  268. package/dist/platform/core/wrfc-routing.d.ts +1 -0
  269. package/dist/platform/core/wrfc-routing.d.ts.map +1 -1
  270. package/dist/platform/core/wrfc-routing.js +51 -1
  271. package/dist/platform/daemon/boot.d.ts +63 -0
  272. package/dist/platform/daemon/boot.d.ts.map +1 -0
  273. package/dist/platform/daemon/boot.js +60 -0
  274. package/dist/platform/daemon/cli.js +2 -1
  275. package/dist/platform/daemon/control-plane.d.ts.map +1 -1
  276. package/dist/platform/daemon/control-plane.js +50 -1
  277. package/dist/platform/daemon/facade-composition.d.ts.map +1 -1
  278. package/dist/platform/daemon/facade-composition.js +6 -0
  279. package/dist/platform/daemon/facade.d.ts +18 -6
  280. package/dist/platform/daemon/facade.d.ts.map +1 -1
  281. package/dist/platform/daemon/facade.js +50 -43
  282. package/dist/platform/daemon/http/router-route-contexts.d.ts +1 -0
  283. package/dist/platform/daemon/http/router-route-contexts.d.ts.map +1 -1
  284. package/dist/platform/daemon/http/router-route-contexts.js +1 -0
  285. package/dist/platform/daemon/http/router-session-broker-adapter.d.ts +13 -0
  286. package/dist/platform/daemon/http/router-session-broker-adapter.d.ts.map +1 -0
  287. package/dist/platform/daemon/http/router-session-broker-adapter.js +27 -0
  288. package/dist/platform/daemon/http/router.d.ts +1 -1
  289. package/dist/platform/daemon/http/router.d.ts.map +1 -1
  290. package/dist/platform/daemon/http/router.js +7 -22
  291. package/dist/platform/daemon/http/runtime-route-types.d.ts +42 -4
  292. package/dist/platform/daemon/http/runtime-route-types.d.ts.map +1 -1
  293. package/dist/platform/daemon/index.d.ts +2 -0
  294. package/dist/platform/daemon/index.d.ts.map +1 -1
  295. package/dist/platform/daemon/index.js +1 -0
  296. package/dist/platform/daemon/service-manager.d.ts +16 -0
  297. package/dist/platform/daemon/service-manager.d.ts.map +1 -1
  298. package/dist/platform/daemon/service-manager.js +79 -15
  299. package/dist/platform/intelligence/tree-sitter/service.d.ts.map +1 -1
  300. package/dist/platform/intelligence/tree-sitter/service.js +16 -2
  301. package/dist/platform/knowledge/browser-history/readers.d.ts.map +1 -1
  302. package/dist/platform/knowledge/browser-history/readers.js +15 -5
  303. package/dist/platform/knowledge/project-planning/service.d.ts +14 -1
  304. package/dist/platform/knowledge/project-planning/service.d.ts.map +1 -1
  305. package/dist/platform/knowledge/project-planning/service.js +77 -0
  306. package/dist/platform/knowledge/project-planning/types.d.ts +32 -0
  307. package/dist/platform/knowledge/project-planning/types.d.ts.map +1 -1
  308. package/dist/platform/orchestration/bookkeeping.d.ts +12 -0
  309. package/dist/platform/orchestration/bookkeeping.d.ts.map +1 -0
  310. package/dist/platform/orchestration/bookkeeping.js +91 -0
  311. package/dist/platform/orchestration/controller-compat.d.ts +14 -0
  312. package/dist/platform/orchestration/controller-compat.d.ts.map +1 -1
  313. package/dist/platform/orchestration/controller-compat.js +18 -4
  314. package/dist/platform/orchestration/engine.d.ts +26 -1
  315. package/dist/platform/orchestration/engine.d.ts.map +1 -1
  316. package/dist/platform/orchestration/engine.js +226 -21
  317. package/dist/platform/orchestration/index.d.ts +6 -4
  318. package/dist/platform/orchestration/index.d.ts.map +1 -1
  319. package/dist/platform/orchestration/index.js +3 -2
  320. package/dist/platform/orchestration/persistence.d.ts.map +1 -1
  321. package/dist/platform/orchestration/persistence.js +4 -1
  322. package/dist/platform/orchestration/phase-runner.d.ts +29 -2
  323. package/dist/platform/orchestration/phase-runner.d.ts.map +1 -1
  324. package/dist/platform/orchestration/phase-runner.js +98 -25
  325. package/dist/platform/orchestration/proposal-workstream.d.ts +56 -0
  326. package/dist/platform/orchestration/proposal-workstream.d.ts.map +1 -0
  327. package/dist/platform/orchestration/proposal-workstream.js +76 -0
  328. package/dist/platform/orchestration/scheduler.d.ts +19 -0
  329. package/dist/platform/orchestration/scheduler.d.ts.map +1 -1
  330. package/dist/platform/orchestration/scheduler.js +16 -0
  331. package/dist/platform/orchestration/types.d.ts +286 -1
  332. package/dist/platform/orchestration/types.d.ts.map +1 -1
  333. package/dist/platform/orchestration/types.js +32 -0
  334. package/dist/platform/orchestration/worktree-isolation.d.ts +33 -0
  335. package/dist/platform/orchestration/worktree-isolation.d.ts.map +1 -0
  336. package/dist/platform/orchestration/worktree-isolation.js +248 -0
  337. package/dist/platform/presentation/glyphs.d.ts +91 -0
  338. package/dist/platform/presentation/glyphs.d.ts.map +1 -0
  339. package/dist/platform/presentation/glyphs.js +93 -0
  340. package/dist/platform/presentation/index.d.ts +28 -0
  341. package/dist/platform/presentation/index.d.ts.map +1 -0
  342. package/dist/platform/presentation/index.js +27 -0
  343. package/dist/platform/presentation/thinking-phrases.d.ts +12 -0
  344. package/dist/platform/presentation/thinking-phrases.d.ts.map +1 -0
  345. package/dist/platform/presentation/thinking-phrases.js +32 -0
  346. package/dist/platform/presentation/tones.d.ts +121 -0
  347. package/dist/platform/presentation/tones.d.ts.map +1 -0
  348. package/dist/platform/presentation/tones.js +145 -0
  349. package/dist/platform/presentation/waiting-wording.d.ts +54 -0
  350. package/dist/platform/presentation/waiting-wording.d.ts.map +1 -0
  351. package/dist/platform/presentation/waiting-wording.js +51 -0
  352. package/dist/platform/providers/runtime-snapshot.d.ts.map +1 -1
  353. package/dist/platform/providers/runtime-snapshot.js +12 -2
  354. package/dist/platform/runtime/bootstrap-services.d.ts +62 -2
  355. package/dist/platform/runtime/bootstrap-services.d.ts.map +1 -1
  356. package/dist/platform/runtime/bootstrap-services.js +217 -50
  357. package/dist/platform/runtime/daemon-version-compat.d.ts +39 -0
  358. package/dist/platform/runtime/daemon-version-compat.d.ts.map +1 -0
  359. package/dist/platform/runtime/daemon-version-compat.js +75 -0
  360. package/dist/platform/runtime/detached-daemon-runtime.d.ts +26 -0
  361. package/dist/platform/runtime/detached-daemon-runtime.d.ts.map +1 -0
  362. package/dist/platform/runtime/detached-daemon-runtime.js +49 -0
  363. package/dist/platform/runtime/emitters/workflows.d.ts +1 -1
  364. package/dist/platform/runtime/emitters/workflows.d.ts.map +1 -1
  365. package/dist/platform/runtime/events/index.d.ts +13 -0
  366. package/dist/platform/runtime/events/index.d.ts.map +1 -1
  367. package/dist/platform/runtime/events/index.js +13 -0
  368. package/dist/platform/runtime/feature-flags/flags.d.ts.map +1 -1
  369. package/dist/platform/runtime/feature-flags/flags.js +39 -1
  370. package/dist/platform/runtime/fleet/adapters/orchestration.d.ts +40 -18
  371. package/dist/platform/runtime/fleet/adapters/orchestration.d.ts.map +1 -1
  372. package/dist/platform/runtime/fleet/adapters/orchestration.js +138 -34
  373. package/dist/platform/runtime/fleet/adapters/wrfc.d.ts +13 -0
  374. package/dist/platform/runtime/fleet/adapters/wrfc.d.ts.map +1 -1
  375. package/dist/platform/runtime/fleet/adapters/wrfc.js +48 -1
  376. package/dist/platform/runtime/fleet/registry.d.ts.map +1 -1
  377. package/dist/platform/runtime/fleet/registry.js +38 -4
  378. package/dist/platform/runtime/operator-client.d.ts +20 -2
  379. package/dist/platform/runtime/operator-client.d.ts.map +1 -1
  380. package/dist/platform/runtime/operator-client.js +11 -1
  381. package/dist/platform/runtime/provider-accounts/registry.d.ts.map +1 -1
  382. package/dist/platform/runtime/provider-accounts/registry.js +11 -1
  383. package/dist/platform/runtime/services.d.ts +9 -7
  384. package/dist/platform/runtime/services.d.ts.map +1 -1
  385. package/dist/platform/runtime/services.js +19 -4
  386. package/dist/platform/runtime/session-spine/client.d.ts +234 -0
  387. package/dist/platform/runtime/session-spine/client.d.ts.map +1 -0
  388. package/dist/platform/runtime/session-spine/client.js +449 -0
  389. package/dist/platform/runtime/session-spine/index.d.ts +12 -0
  390. package/dist/platform/runtime/session-spine/index.d.ts.map +1 -0
  391. package/dist/platform/runtime/session-spine/index.js +11 -0
  392. package/dist/platform/runtime/session-spine/union-cache.d.ts +225 -0
  393. package/dist/platform/runtime/session-spine/union-cache.d.ts.map +1 -0
  394. package/dist/platform/runtime/session-spine/union-cache.js +333 -0
  395. package/dist/platform/runtime/shell-command-ops.d.ts +3 -1
  396. package/dist/platform/runtime/shell-command-ops.d.ts.map +1 -1
  397. package/dist/platform/runtime/transports/daemon-http-client-validators.d.ts.map +1 -1
  398. package/dist/platform/runtime/transports/daemon-http-client-validators.js +22 -0
  399. package/dist/platform/runtime/transports/daemon-http-client.d.ts.map +1 -1
  400. package/dist/platform/runtime/transports/daemon-http-client.js +25 -2
  401. package/dist/platform/runtime/transports/http-types.d.ts +9 -2
  402. package/dist/platform/runtime/transports/http-types.d.ts.map +1 -1
  403. package/dist/platform/state/canonical-memory.d.ts +95 -0
  404. package/dist/platform/state/canonical-memory.d.ts.map +1 -0
  405. package/dist/platform/state/canonical-memory.js +155 -0
  406. package/dist/platform/state/code-index-reindex.d.ts +73 -0
  407. package/dist/platform/state/code-index-reindex.d.ts.map +1 -0
  408. package/dist/platform/state/code-index-reindex.js +156 -0
  409. package/dist/platform/state/code-index-store.d.ts.map +1 -1
  410. package/dist/platform/state/code-index-store.js +10 -2
  411. package/dist/platform/state/index.d.ts +8 -0
  412. package/dist/platform/state/index.d.ts.map +1 -1
  413. package/dist/platform/state/index.js +4 -0
  414. package/dist/platform/state/memory-recall-contract.d.ts +63 -0
  415. package/dist/platform/state/memory-recall-contract.d.ts.map +1 -0
  416. package/dist/platform/state/memory-recall-contract.js +94 -0
  417. package/dist/platform/state/memory-store.d.ts +2 -0
  418. package/dist/platform/state/memory-store.d.ts.map +1 -1
  419. package/dist/platform/state/memory-store.js +4 -0
  420. package/dist/platform/state/memory-vector-store.d.ts.map +1 -1
  421. package/dist/platform/state/memory-vector-store.js +13 -2
  422. package/dist/platform/state/sqlite-store.d.ts +2 -0
  423. package/dist/platform/state/sqlite-store.d.ts.map +1 -1
  424. package/dist/platform/state/sqlite-store.js +4 -0
  425. package/dist/platform/state/vibe-projection.d.ts +67 -0
  426. package/dist/platform/state/vibe-projection.d.ts.map +1 -0
  427. package/dist/platform/state/vibe-projection.js +115 -0
  428. package/dist/platform/tools/agent/index.d.ts.map +1 -1
  429. package/dist/platform/tools/agent/index.js +8 -0
  430. package/dist/platform/tools/agent/manager.d.ts +12 -0
  431. package/dist/platform/tools/agent/manager.d.ts.map +1 -1
  432. package/dist/platform/tools/agent/manager.js +6 -0
  433. package/dist/platform/tools/agent/schema.d.ts +26 -0
  434. package/dist/platform/tools/agent/schema.d.ts.map +1 -1
  435. package/dist/platform/tools/agent/schema.js +2 -2
  436. package/dist/platform/tools/agent/wrfc-batch-policy.d.ts +13 -0
  437. package/dist/platform/tools/agent/wrfc-batch-policy.d.ts.map +1 -1
  438. package/dist/platform/tools/agent/wrfc-batch-policy.js +60 -0
  439. package/dist/platform/tools/exec/runtime.d.ts +10 -0
  440. package/dist/platform/tools/exec/runtime.d.ts.map +1 -1
  441. package/dist/platform/tools/exec/runtime.js +22 -5
  442. package/dist/platform/tools/exec/schema.d.ts +1 -1
  443. package/dist/platform/tools/exec/schema.d.ts.map +1 -1
  444. package/dist/platform/tools/exec/schema.js +2 -1
  445. package/dist/platform/tools/index.d.ts +2 -0
  446. package/dist/platform/tools/index.d.ts.map +1 -1
  447. package/dist/platform/tools/index.js +2 -0
  448. package/dist/platform/tools/state/index.d.ts +9 -0
  449. package/dist/platform/tools/state/index.d.ts.map +1 -1
  450. package/dist/platform/tools/state/index.js +60 -3
  451. package/dist/platform/types/foundation-contract.d.ts +1 -1
  452. package/dist/platform/types/foundation-contract.d.ts.map +1 -1
  453. package/dist/platform/types/index.d.ts +1 -1
  454. package/dist/platform/types/index.d.ts.map +1 -1
  455. package/dist/platform/version.js +1 -1
  456. package/package.json +21 -9
  457. package/dist/platform/control-plane/routes/automation.d.ts +0 -3
  458. package/dist/platform/control-plane/routes/automation.d.ts.map +0 -1
  459. package/dist/platform/control-plane/routes/automation.js +0 -63
  460. package/dist/platform/control-plane/routes/context.d.ts +0 -2
  461. package/dist/platform/control-plane/routes/context.d.ts.map +0 -1
  462. package/dist/platform/control-plane/routes/context.js +0 -1
  463. package/dist/platform/control-plane/routes/operator.d.ts +0 -8
  464. package/dist/platform/control-plane/routes/operator.d.ts.map +0 -1
  465. package/dist/platform/control-plane/routes/operator.js +0 -415
  466. package/dist/platform/control-plane/routes/remote.d.ts +0 -3
  467. package/dist/platform/control-plane/routes/remote.d.ts.map +0 -1
  468. package/dist/platform/control-plane/routes/remote.js +0 -35
  469. package/dist/platform/control-plane/routes/sessions.d.ts +0 -3
  470. package/dist/platform/control-plane/routes/sessions.d.ts.map +0 -1
  471. package/dist/platform/control-plane/routes/sessions.js +0 -43
  472. package/dist/platform/control-plane/routes/tasks.d.ts +0 -3
  473. package/dist/platform/control-plane/routes/tasks.d.ts.map +0 -1
  474. package/dist/platform/control-plane/routes/tasks.js +0 -22
@@ -0,0 +1,182 @@
1
+ /**
2
+ * operator-contract-schemas-fleet.ts
3
+ *
4
+ * W3-S2 — contract schemas for fleet.*, checkpoints.*, and sessions.search.
5
+ * Split out of operator-contract-schemas-runtime.ts (which was already at
6
+ * the 800-line source-file cap) rather than grown into it; re-exported
7
+ * through operator-contract-schemas.ts alongside the other schema modules.
8
+ */
9
+ import { BOOLEAN_SCHEMA, NUMBER_SCHEMA, STRING_SCHEMA, arraySchema, objectSchema, } from './method-catalog-shared.js';
10
+ import { STRING_LIST_SCHEMA, enumSchema, nullableSchema, } from './operator-contract-schemas-shared.js';
11
+ import { SHARED_SESSION_KIND_READ_SCHEMA, SHARED_SESSION_RECORD_SCHEMA } from './operator-contract-schemas-runtime.js';
12
+ const PROCESS_KIND_SCHEMA = enumSchema([
13
+ 'agent',
14
+ 'wrfc-chain',
15
+ 'wrfc-subtask',
16
+ 'workflow',
17
+ 'trigger',
18
+ 'schedule',
19
+ 'watcher',
20
+ 'background-process',
21
+ 'workstream',
22
+ 'phase',
23
+ 'work-item',
24
+ 'code-index',
25
+ ]);
26
+ const PROCESS_STATE_SCHEMA = enumSchema([
27
+ 'thinking',
28
+ 'executing-tool',
29
+ 'awaiting-approval',
30
+ 'streaming',
31
+ 'stalled',
32
+ 'retrying',
33
+ 'done',
34
+ 'failed',
35
+ 'killed',
36
+ 'interrupted',
37
+ 'idle',
38
+ 'queued',
39
+ 'paused',
40
+ ]);
41
+ const PROCESS_COST_STATE_SCHEMA = enumSchema(['priced', 'unpriced', 'estimated']);
42
+ const PROCESS_USAGE_SCHEMA = objectSchema({
43
+ inputTokens: NUMBER_SCHEMA,
44
+ outputTokens: NUMBER_SCHEMA,
45
+ cacheReadTokens: NUMBER_SCHEMA,
46
+ cacheWriteTokens: NUMBER_SCHEMA,
47
+ reasoningTokens: NUMBER_SCHEMA,
48
+ llmCallCount: NUMBER_SCHEMA,
49
+ turnCount: NUMBER_SCHEMA,
50
+ toolCallCount: NUMBER_SCHEMA,
51
+ }, ['inputTokens', 'outputTokens', 'cacheReadTokens', 'cacheWriteTokens', 'llmCallCount', 'turnCount', 'toolCallCount']);
52
+ const PROCESS_ACTIVITY_SCHEMA = objectSchema({
53
+ kind: enumSchema(['tool', 'output-line', 'phase']),
54
+ text: STRING_SCHEMA,
55
+ toolName: STRING_SCHEMA,
56
+ at: NUMBER_SCHEMA,
57
+ }, ['kind', 'text', 'at']);
58
+ const PROCESS_CAPABILITIES_SCHEMA = objectSchema({
59
+ interruptible: BOOLEAN_SCHEMA,
60
+ killable: BOOLEAN_SCHEMA,
61
+ pausable: BOOLEAN_SCHEMA,
62
+ resumable: BOOLEAN_SCHEMA,
63
+ steerable: BOOLEAN_SCHEMA,
64
+ }, ['interruptible', 'killable', 'pausable', 'resumable', 'steerable']);
65
+ const PROCESS_SESSION_REF_SCHEMA = objectSchema({
66
+ sessionId: STRING_SCHEMA,
67
+ agentId: STRING_SCHEMA,
68
+ }, []);
69
+ export const PROCESS_NODE_SCHEMA = objectSchema({
70
+ id: STRING_SCHEMA,
71
+ kind: PROCESS_KIND_SCHEMA,
72
+ parentId: STRING_SCHEMA,
73
+ label: STRING_SCHEMA,
74
+ task: STRING_SCHEMA,
75
+ state: PROCESS_STATE_SCHEMA,
76
+ startedAt: NUMBER_SCHEMA,
77
+ completedAt: NUMBER_SCHEMA,
78
+ elapsedMs: NUMBER_SCHEMA,
79
+ usage: PROCESS_USAGE_SCHEMA,
80
+ model: STRING_SCHEMA,
81
+ provider: STRING_SCHEMA,
82
+ costUsd: nullableSchema(NUMBER_SCHEMA),
83
+ costState: PROCESS_COST_STATE_SCHEMA,
84
+ currentActivity: PROCESS_ACTIVITY_SCHEMA,
85
+ capabilities: PROCESS_CAPABILITIES_SCHEMA,
86
+ sessionRef: PROCESS_SESSION_REF_SCHEMA,
87
+ }, ['id', 'kind', 'label', 'state', 'elapsedMs', 'costState', 'capabilities'], { additionalProperties: true });
88
+ export const FLEET_SNAPSHOT_OUTPUT_SCHEMA = objectSchema({
89
+ capturedAt: NUMBER_SCHEMA,
90
+ nodes: arraySchema(PROCESS_NODE_SCHEMA),
91
+ truncated: BOOLEAN_SCHEMA,
92
+ totalCount: NUMBER_SCHEMA,
93
+ }, ['capturedAt', 'nodes', 'truncated', 'totalCount']);
94
+ export const FLEET_LIST_INPUT_SCHEMA = objectSchema({
95
+ kinds: STRING_LIST_SCHEMA,
96
+ states: STRING_LIST_SCHEMA,
97
+ limit: NUMBER_SCHEMA,
98
+ cursor: STRING_SCHEMA,
99
+ }, []);
100
+ export const FLEET_LIST_OUTPUT_SCHEMA = objectSchema({
101
+ items: arraySchema(PROCESS_NODE_SCHEMA),
102
+ nextCursor: STRING_SCHEMA,
103
+ hasMore: BOOLEAN_SCHEMA,
104
+ capturedAt: NUMBER_SCHEMA,
105
+ }, ['items', 'hasMore', 'capturedAt']);
106
+ const CHECKPOINT_KIND_SCHEMA = enumSchema(['turn', 'agent-run', 'manual']);
107
+ const RETENTION_CLASS_SCHEMA = enumSchema(['short', 'standard', 'forensic']);
108
+ export const WORKSPACE_CHECKPOINT_SCHEMA = objectSchema({
109
+ id: STRING_SCHEMA,
110
+ kind: CHECKPOINT_KIND_SCHEMA,
111
+ label: STRING_SCHEMA,
112
+ createdAt: NUMBER_SCHEMA,
113
+ parentId: nullableSchema(STRING_SCHEMA),
114
+ turnId: STRING_SCHEMA,
115
+ agentId: STRING_SCHEMA,
116
+ retentionClass: RETENTION_CLASS_SCHEMA,
117
+ commit: STRING_SCHEMA,
118
+ sizeBytes: NUMBER_SCHEMA,
119
+ }, ['id', 'kind', 'label', 'createdAt', 'parentId', 'retentionClass', 'commit', 'sizeBytes']);
120
+ export const CHECKPOINTS_LIST_INPUT_SCHEMA = objectSchema({
121
+ kind: CHECKPOINT_KIND_SCHEMA,
122
+ since: NUMBER_SCHEMA,
123
+ limit: NUMBER_SCHEMA,
124
+ }, []);
125
+ export const CHECKPOINTS_LIST_OUTPUT_SCHEMA = objectSchema({
126
+ checkpoints: arraySchema(WORKSPACE_CHECKPOINT_SCHEMA),
127
+ }, ['checkpoints']);
128
+ export const CHECKPOINTS_CREATE_INPUT_SCHEMA = objectSchema({
129
+ kind: CHECKPOINT_KIND_SCHEMA,
130
+ label: STRING_SCHEMA,
131
+ retentionClass: RETENTION_CLASS_SCHEMA,
132
+ turnId: STRING_SCHEMA,
133
+ agentId: STRING_SCHEMA,
134
+ paths: STRING_LIST_SCHEMA,
135
+ }, ['kind']);
136
+ export const CHECKPOINTS_CREATE_OUTPUT_SCHEMA = objectSchema({
137
+ checkpoint: nullableSchema(WORKSPACE_CHECKPOINT_SCHEMA),
138
+ noop: BOOLEAN_SCHEMA,
139
+ }, ['checkpoint', 'noop']);
140
+ export const CHECKPOINT_DIFF_SCHEMA = objectSchema({
141
+ from: STRING_SCHEMA,
142
+ to: STRING_SCHEMA,
143
+ files: STRING_LIST_SCHEMA,
144
+ unifiedDiff: STRING_SCHEMA,
145
+ stat: STRING_SCHEMA,
146
+ }, ['from', 'to', 'files', 'unifiedDiff', 'stat']);
147
+ export const CHECKPOINTS_DIFF_INPUT_SCHEMA = objectSchema({
148
+ a: STRING_SCHEMA,
149
+ b: STRING_SCHEMA,
150
+ }, ['a']);
151
+ export const CHECKPOINTS_DIFF_OUTPUT_SCHEMA = objectSchema({
152
+ diff: CHECKPOINT_DIFF_SCHEMA,
153
+ }, ['diff']);
154
+ export const CHECKPOINT_RESTORE_RESULT_SCHEMA = objectSchema({
155
+ checkpointId: STRING_SCHEMA,
156
+ safetyCheckpointId: nullableSchema(STRING_SCHEMA),
157
+ restoredFiles: STRING_LIST_SCHEMA,
158
+ removedFiles: STRING_LIST_SCHEMA,
159
+ }, ['checkpointId', 'safetyCheckpointId', 'restoredFiles', 'removedFiles']);
160
+ export const CHECKPOINTS_RESTORE_INPUT_SCHEMA = objectSchema({
161
+ id: STRING_SCHEMA,
162
+ paths: STRING_LIST_SCHEMA,
163
+ safetyCheckpoint: BOOLEAN_SCHEMA,
164
+ }, ['id']);
165
+ export const CHECKPOINTS_RESTORE_OUTPUT_SCHEMA = objectSchema({
166
+ result: CHECKPOINT_RESTORE_RESULT_SCHEMA,
167
+ }, ['result']);
168
+ export const SESSIONS_SEARCH_INPUT_SCHEMA = objectSchema({
169
+ query: STRING_SCHEMA,
170
+ project: STRING_SCHEMA,
171
+ kind: SHARED_SESSION_KIND_READ_SCHEMA,
172
+ surfaceKind: STRING_SCHEMA,
173
+ status: enumSchema(['active', 'closed']),
174
+ includeClosed: BOOLEAN_SCHEMA,
175
+ limit: NUMBER_SCHEMA,
176
+ cursor: STRING_SCHEMA,
177
+ }, []);
178
+ export const SESSIONS_SEARCH_OUTPUT_SCHEMA = objectSchema({
179
+ sessions: arraySchema(SHARED_SESSION_RECORD_SCHEMA),
180
+ nextCursor: STRING_SCHEMA,
181
+ hasMore: BOOLEAN_SCHEMA,
182
+ }, ['sessions', 'hasMore']);
@@ -1 +1 @@
1
- {"version":3,"file":"operator-contract-schemas-permissions.d.ts","sourceRoot":"","sources":["../../../src/platform/control-plane/operator-contract-schemas-permissions.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,0BAA0B,yBAAuD,CAAC;AAC/F,eAAO,MAAM,4BAA4B,yBAAoD,CAAC;AAC9F,eAAO,MAAM,sCAAsC,yBAA4D,CAAC;AAChH,eAAO,MAAM,kCAAkC,yBAAyF,CAAC;AACzI,eAAO,MAAM,8BAA8B,yBAAwE,CAAC;AAEpH,eAAO,MAAM,yCAAyC,yBAWoC,CAAC;AAE3F,eAAO,MAAM,gCAAgC,yBAO0C,CAAC;AAExF,eAAO,MAAM,iCAAiC,yBAGG,CAAC;AAElD,eAAO,MAAM,sBAAsB,yBAMjC,CAAC;AACH,eAAO,MAAM,wCAAwC,yBAQnD,CAAC;AACH,eAAO,MAAM,kCAAkC,yBAAiD,CAAC;AACjG,eAAO,MAAM,8BAA8B,yBAOzC,CAAC;AACH,eAAO,MAAM,iCAAiC,yBAc5C,CAAC;AAEH,eAAO,MAAM,kCAAkC,yBAasG,CAAC"}
1
+ {"version":3,"file":"operator-contract-schemas-permissions.d.ts","sourceRoot":"","sources":["../../../src/platform/control-plane/operator-contract-schemas-permissions.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,0BAA0B,yBAAuD,CAAC;AAC/F,eAAO,MAAM,4BAA4B,yBAAoD,CAAC;AAC9F,eAAO,MAAM,sCAAsC,yBAA4D,CAAC;AAChH,eAAO,MAAM,kCAAkC,yBAAyF,CAAC;AACzI,eAAO,MAAM,8BAA8B,yBAAwE,CAAC;AAEpH,eAAO,MAAM,yCAAyC,yBAWoC,CAAC;AAE3F,eAAO,MAAM,gCAAgC,yBAO0C,CAAC;AAExF,eAAO,MAAM,iCAAiC,yBAQG,CAAC;AAElD,eAAO,MAAM,sBAAsB,yBAMjC,CAAC;AACH,eAAO,MAAM,wCAAwC,yBAQnD,CAAC;AACH,eAAO,MAAM,kCAAkC,yBAAiD,CAAC;AACjG,eAAO,MAAM,8BAA8B,yBAOzC,CAAC;AACH,eAAO,MAAM,iCAAiC,yBAc5C,CAAC;AAEH,eAAO,MAAM,kCAAkC,yBAasG,CAAC"}
@@ -28,6 +28,11 @@ export const PERMISSION_PROMPT_REQUEST_SCHEMA = objectSchema({
28
28
  export const PERMISSION_PROMPT_DECISION_SCHEMA = objectSchema({
29
29
  approved: BOOLEAN_SCHEMA,
30
30
  remember: BOOLEAN_SCHEMA,
31
+ // Present when a per-hunk (or otherwise argument-modifying) approval replaced
32
+ // the tool call's original args — e.g. the edit-tool `edits` array filtered to
33
+ // the approved hunks. Computed server-side by the approval broker so every
34
+ // surface sees the same modified args on the resolved decision.
35
+ modifiedArgs: TOOL_ARGUMENTS_SCHEMA,
31
36
  }, ['approved'], { additionalProperties: false });
32
37
  export const PERMISSION_MODE_SCHEMA = enumSchema([
33
38
  'default',
@@ -1,4 +1,24 @@
1
+ /**
2
+ * READ-path kind schema: an OPEN enum. The known kinds are the same set as
3
+ * {@link SHARED_SESSION_KIND_SCHEMA}, but response/output validation must accept
4
+ * an unknown `kind` string per-record instead of hard-failing the whole envelope
5
+ * — a mixed-version daemon (or a future build) can emit a kind this reader does
6
+ * not model, and the tolerant normalizer downstream (`normalizeSharedSessionRecord`)
7
+ * already maps an unknown kind to the documented 'tui' fallback while preserving
8
+ * the raw value under `metadata.wireKind`. See
9
+ * docs/decisions/2026-07-05-session-wire-mixed-version.md (the enum leg). Writes
10
+ * stay strict: {@link SHARED_SESSION_REGISTER_INPUT_SCHEMA} keeps the closed enum
11
+ * so `sessions.register` still 400s on an unknown kind.
12
+ */
13
+ export declare const SHARED_SESSION_KIND_READ_SCHEMA: Record<string, unknown>;
1
14
  export declare const SHARED_SESSION_PARTICIPANT_SCHEMA: Record<string, unknown>;
15
+ /**
16
+ * Input to sessions.register — the idempotent registration + heartbeat upsert
17
+ * keyed on the caller-supplied `sessionId`. Carries the identity spine
18
+ * (kind + project + participant triple). Re-calling with the same id is the
19
+ * heartbeat (advances participant.lastSeenAt).
20
+ */
21
+ export declare const SHARED_SESSION_REGISTER_INPUT_SCHEMA: Record<string, unknown>;
2
22
  export declare const SHARED_SESSION_MESSAGE_SCHEMA: Record<string, unknown>;
3
23
  export declare const SHARED_SESSION_RECORD_SCHEMA: Record<string, unknown>;
4
24
  export declare const COMPANION_CHAT_SESSION_SCHEMA: Record<string, unknown>;
@@ -13,6 +33,14 @@ export declare const SESSION_BROKER_SNAPSHOT_SCHEMA: Record<string, unknown>;
13
33
  export declare const SHARED_SESSION_WITH_MESSAGES_SCHEMA: Record<string, unknown>;
14
34
  export declare const SHARED_SESSION_WITH_INPUTS_SCHEMA: Record<string, unknown>;
15
35
  export declare const SHARED_SESSION_CREATE_OUTPUT_SCHEMA: Record<string, unknown>;
36
+ /**
37
+ * Output of sessions.register. Beyond the record it carries honest lifecycle
38
+ * disposition: `reopened` is true only when this call reopened a closed session,
39
+ * and `conflict` is present (status:'closed') when register targeted a closed
40
+ * session WITHOUT reopen:true — the heartbeat was recorded but the session was
41
+ * left closed.
42
+ */
43
+ export declare const SHARED_SESSION_REGISTER_OUTPUT_SCHEMA: Record<string, unknown>;
16
44
  export declare const SHARED_SESSION_CONVERSATION_ROUTE_OUTPUT_SCHEMA: Record<string, unknown>;
17
45
  export declare const SHARED_SESSION_MESSAGE_CREATE_OUTPUT_SCHEMA: Record<string, unknown>;
18
46
  export declare const SHARED_SESSION_MESSAGE_ROUTE_OUTPUT_SCHEMA: {
@@ -28,6 +56,7 @@ export declare const TASK_STATUS_OUTPUT_SCHEMA: Record<string, unknown>;
28
56
  export declare const SHARED_APPROVAL_RECORD_SCHEMA: Record<string, unknown>;
29
57
  export declare const APPROVAL_SNAPSHOT_SCHEMA: Record<string, unknown>;
30
58
  export declare const APPROVAL_ACTION_INPUT_SCHEMA: Record<string, unknown>;
59
+ export declare const APPROVAL_APPROVE_INPUT_SCHEMA: Record<string, unknown>;
31
60
  export declare const APPROVAL_ACTION_OUTPUT_SCHEMA: Record<string, unknown>;
32
61
  export declare const PROVIDER_RUNTIME_SNAPSHOT_SCHEMA: Record<string, unknown>;
33
62
  export declare const PROVIDER_USAGE_SNAPSHOT_SCHEMA: Record<string, unknown>;
@@ -1 +1 @@
1
- {"version":3,"file":"operator-contract-schemas-runtime.d.ts","sourceRoot":"","sources":["../../../src/platform/control-plane/operator-contract-schemas-runtime.ts"],"names":[],"mappings":"AA+DA,eAAO,MAAM,iCAAiC,yBAQA,CAAC;AAE/C,eAAO,MAAM,6BAA6B,yBAasB,CAAC;AAEjE,eAAO,MAAM,4BAA4B,yBAmBqI,CAAC;AAE/K,eAAO,MAAM,6BAA6B,yBAYsF,CAAC;AAEjI,eAAO,MAAM,6BAA6B,yBAO4B,CAAC;AAEvE,eAAO,MAAM,2CAA2C,yBAG7B,CAAC;AAE5B,eAAO,MAAM,mCAAmC,yBAOtB,CAAC;AAE3B,eAAO,MAAM,mCAAmC,yBAGnB,CAAC;AAE9B,eAAO,MAAM,oCAAoC,yBAkB/C,CAAC;AAEH,eAAO,MAAM,kCAAkC,yBAqB0D,CAAC;AAE1G,eAAO,MAAM,uBAAuB,yBAWoE,CAAC;AAEzG,eAAO,MAAM,8BAA8B,yBAOjB,CAAC;AAE3B,eAAO,MAAM,mCAAmC,yBAGrB,CAAC;AAE5B,eAAO,MAAM,iCAAiC,yBAGrB,CAAC;AAE1B,eAAO,MAAM,mCAAmC,yBAEjC,CAAC;AAEhB,eAAO,MAAM,+CAA+C,yBAIlB,CAAC;AAE3C,eAAO,MAAM,2CAA2C,yBAMF,CAAC;AAEvD,eAAO,MAAM,0CAA0C;;CAK7C,CAAC;AAUX,eAAO,MAAM,mBAAmB,yBAqByD,CAAC;AAE1F,eAAO,MAAM,oBAAoB,yBAsBsB,CAAC;AAExD,eAAO,MAAM,wBAAwB,yBAgBO,CAAC;AAE7C,eAAO,MAAM,yBAAyB,yBASc,CAAC;AAErD,eAAO,MAAM,kBAAkB,yBAEnB,CAAC;AAEb,eAAO,MAAM,yBAAyB,yBAIM,CAAC;AAE7C,eAAO,MAAM,yBAAyB,yBAUiE,CAAC;AAWxG,eAAO,MAAM,6BAA6B,yBAgB8C,CAAC;AAEzF,eAAO,MAAM,wBAAwB,yBASuG,CAAC;AAE7I,eAAO,MAAM,4BAA4B,yBAIU,CAAC;AAEpD,eAAO,MAAM,6BAA6B,yBAE1B,CAAC;AA0EjB,eAAO,MAAM,gCAAgC,yBAMkB,CAAC;AAEhE,eAAO,MAAM,8BAA8B,yBAcqD,CAAC;AAqEjG,eAAO,MAAM,gCAAgC,yBAKmB,CAAC;AAEjE,eAAO,MAAM,sBAAsB,yBAcyF,CAAC;AAE7H,eAAO,MAAM,4BAA4B,yBASyG,CAAC;AAqBnJ,eAAO,MAAM,0BAA0B,yBAUyH,CAAC;AAEjK,eAAO,MAAM,2BAA2B,yBAIC,CAAC"}
1
+ {"version":3,"file":"operator-contract-schemas-runtime.d.ts","sourceRoot":"","sources":["../../../src/platform/control-plane/operator-contract-schemas-runtime.ts"],"names":[],"mappings":"AAmCA;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,+BAA+B,EAAyB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AA6B7F,eAAO,MAAM,iCAAiC,yBAQA,CAAC;AAE/C;;;;;GAKG;AACH,eAAO,MAAM,oCAAoC,yBAOe,CAAC;AAEjE,eAAO,MAAM,6BAA6B,yBAasB,CAAC;AAEjE,eAAO,MAAM,4BAA4B,yBAuBqI,CAAC;AAE/K,eAAO,MAAM,6BAA6B,yBAYsF,CAAC;AAEjI,eAAO,MAAM,6BAA6B,yBAO4B,CAAC;AAEvE,eAAO,MAAM,2CAA2C,yBAG7B,CAAC;AAE5B,eAAO,MAAM,mCAAmC,yBAOtB,CAAC;AAE3B,eAAO,MAAM,mCAAmC,yBAGnB,CAAC;AAE9B,eAAO,MAAM,oCAAoC,yBAkB/C,CAAC;AAEH,eAAO,MAAM,kCAAkC,yBAqB0D,CAAC;AAE1G,eAAO,MAAM,uBAAuB,yBAWoE,CAAC;AAEzG,eAAO,MAAM,8BAA8B,yBAOjB,CAAC;AAE3B,eAAO,MAAM,mCAAmC,yBAGrB,CAAC;AAE5B,eAAO,MAAM,iCAAiC,yBAGrB,CAAC;AAE1B,eAAO,MAAM,mCAAmC,yBAEjC,CAAC;AAEhB;;;;;;GAMG;AACH,eAAO,MAAM,qCAAqC,yBAIvB,CAAC;AAE5B,eAAO,MAAM,+CAA+C,yBAIlB,CAAC;AAE3C,eAAO,MAAM,2CAA2C,yBAMF,CAAC;AAEvD,eAAO,MAAM,0CAA0C;;CAK7C,CAAC;AAUX,eAAO,MAAM,mBAAmB,yBAqByD,CAAC;AAE1F,eAAO,MAAM,oBAAoB,yBAsBsB,CAAC;AAExD,eAAO,MAAM,wBAAwB,yBAgBO,CAAC;AAE7C,eAAO,MAAM,yBAAyB,yBASc,CAAC;AAErD,eAAO,MAAM,kBAAkB,yBAEnB,CAAC;AAEb,eAAO,MAAM,yBAAyB,yBAIM,CAAC;AAE7C,eAAO,MAAM,yBAAyB,yBAUiE,CAAC;AAWxG,eAAO,MAAM,6BAA6B,yBAgB8C,CAAC;AAEzF,eAAO,MAAM,wBAAwB,yBASuG,CAAC;AAE7I,eAAO,MAAM,4BAA4B,yBAIU,CAAC;AAOpD,eAAO,MAAM,6BAA6B,yBAKS,CAAC;AAEpD,eAAO,MAAM,6BAA6B,yBAE1B,CAAC;AA0EjB,eAAO,MAAM,gCAAgC,yBAMkB,CAAC;AAEhE,eAAO,MAAM,8BAA8B,yBAcqD,CAAC;AAqEjG,eAAO,MAAM,gCAAgC,yBAKmB,CAAC;AAEjE,eAAO,MAAM,sBAAsB,yBAcyF,CAAC;AAE7H,eAAO,MAAM,4BAA4B,yBASyG,CAAC;AAqBnJ,eAAO,MAAM,0BAA0B,yBAUyH,CAAC;AAEjK,eAAO,MAAM,2BAA2B,yBAIC,CAAC"}
@@ -13,10 +13,23 @@ const INBOUND_SERVER_SURFACE_SCHEMA = enumSchema(['controlPlane', 'httpListener'
13
13
  const INBOUND_TLS_MODE_SCHEMA = enumSchema(['off', 'proxy', 'direct']);
14
14
  const OUTBOUND_TRUST_MODE_SCHEMA = enumSchema(['bundled', 'bundled+custom', 'custom']);
15
15
  const OUTBOUND_CA_STRATEGY_SCHEMA = enumSchema(['bun-default', 'bundled+custom', 'custom']);
16
- const SHARED_SESSION_KIND_SCHEMA = enumSchema(['tui', 'companion-task', 'companion-chat']);
16
+ const SHARED_SESSION_KIND_SCHEMA = enumSchema(['tui', 'agent', 'webui', 'companion-task', 'companion-chat', 'automation']);
17
+ /**
18
+ * READ-path kind schema: an OPEN enum. The known kinds are the same set as
19
+ * {@link SHARED_SESSION_KIND_SCHEMA}, but response/output validation must accept
20
+ * an unknown `kind` string per-record instead of hard-failing the whole envelope
21
+ * — a mixed-version daemon (or a future build) can emit a kind this reader does
22
+ * not model, and the tolerant normalizer downstream (`normalizeSharedSessionRecord`)
23
+ * already maps an unknown kind to the documented 'tui' fallback while preserving
24
+ * the raw value under `metadata.wireKind`. See
25
+ * docs/decisions/2026-07-05-session-wire-mixed-version.md (the enum leg). Writes
26
+ * stay strict: {@link SHARED_SESSION_REGISTER_INPUT_SCHEMA} keeps the closed enum
27
+ * so `sessions.register` still 400s on an unknown kind.
28
+ */
29
+ export const SHARED_SESSION_KIND_READ_SCHEMA = { type: 'string' };
17
30
  const SHARED_SESSION_INPUT_INTENT_SCHEMA = enumSchema(['submit', 'steer', 'follow-up']);
18
31
  const SHARED_SESSION_INPUT_STATE_SCHEMA = enumSchema(['queued', 'delivered', 'spawned', 'completed', 'cancelled', 'failed', 'rejected']);
19
- const SHARED_SESSION_MESSAGE_MODE_SCHEMA = enumSchema(['spawn', 'continued-live', 'queued-follow-up', 'rejected']);
32
+ const SHARED_SESSION_MESSAGE_MODE_SCHEMA = enumSchema(['spawn', 'continued-live', 'queued-follow-up', 'queued-for-surface', 'rejected']);
20
33
  const COMPANION_CHAT_SESSION_STATUS_SCHEMA = enumSchema(['active', 'closed']);
21
34
  const COMPANION_CHAT_MESSAGE_ROLE_SCHEMA = enumSchema(['user', 'assistant']);
22
35
  const PROVIDER_SELECTION_SCHEMA = enumSchema(['inherit-current', 'concrete', 'synthetic']);
@@ -49,6 +62,20 @@ export const SHARED_SESSION_PARTICIPANT_SCHEMA = objectSchema({
49
62
  routeId: STRING_SCHEMA,
50
63
  lastSeenAt: NUMBER_SCHEMA,
51
64
  }, ['surfaceKind', 'surfaceId', 'lastSeenAt']);
65
+ /**
66
+ * Input to sessions.register — the idempotent registration + heartbeat upsert
67
+ * keyed on the caller-supplied `sessionId`. Carries the identity spine
68
+ * (kind + project + participant triple). Re-calling with the same id is the
69
+ * heartbeat (advances participant.lastSeenAt).
70
+ */
71
+ export const SHARED_SESSION_REGISTER_INPUT_SCHEMA = objectSchema({
72
+ sessionId: STRING_SCHEMA,
73
+ kind: SHARED_SESSION_KIND_SCHEMA,
74
+ project: STRING_SCHEMA,
75
+ title: STRING_SCHEMA,
76
+ participant: SHARED_SESSION_PARTICIPANT_SCHEMA,
77
+ reopen: BOOLEAN_SCHEMA,
78
+ }, ['sessionId', 'participant'], { additionalProperties: true });
52
79
  export const SHARED_SESSION_MESSAGE_SCHEMA = objectSchema({
53
80
  id: STRING_SCHEMA,
54
81
  sessionId: STRING_SCHEMA,
@@ -65,7 +92,10 @@ export const SHARED_SESSION_MESSAGE_SCHEMA = objectSchema({
65
92
  }, ['id', 'sessionId', 'role', 'body', 'createdAt', 'metadata']);
66
93
  export const SHARED_SESSION_RECORD_SCHEMA = objectSchema({
67
94
  id: STRING_SCHEMA,
68
- kind: SHARED_SESSION_KIND_SCHEMA,
95
+ // Open on READ: an unknown kind must not blank the record (or, per-record, the
96
+ // whole list). Write validation stays strict via SHARED_SESSION_REGISTER_INPUT_SCHEMA.
97
+ kind: SHARED_SESSION_KIND_READ_SCHEMA,
98
+ project: STRING_SCHEMA,
69
99
  title: STRING_SCHEMA,
70
100
  status: enumSchema(['active', 'closed']),
71
101
  createdAt: NUMBER_SCHEMA,
@@ -74,6 +104,7 @@ export const SHARED_SESSION_RECORD_SCHEMA = objectSchema({
74
104
  closedAt: NUMBER_SCHEMA,
75
105
  lastActivityAt: NUMBER_SCHEMA,
76
106
  messageCount: NUMBER_SCHEMA,
107
+ retainedMessageCount: NUMBER_SCHEMA,
77
108
  pendingInputCount: NUMBER_SCHEMA,
78
109
  routeIds: STRING_LIST_SCHEMA,
79
110
  surfaceKinds: STRING_LIST_SCHEMA,
@@ -192,6 +223,18 @@ export const SHARED_SESSION_WITH_INPUTS_SCHEMA = objectSchema({
192
223
  export const SHARED_SESSION_CREATE_OUTPUT_SCHEMA = objectSchema({
193
224
  session: SHARED_SESSION_RECORD_SCHEMA,
194
225
  }, ['session']);
226
+ /**
227
+ * Output of sessions.register. Beyond the record it carries honest lifecycle
228
+ * disposition: `reopened` is true only when this call reopened a closed session,
229
+ * and `conflict` is present (status:'closed') when register targeted a closed
230
+ * session WITHOUT reopen:true — the heartbeat was recorded but the session was
231
+ * left closed.
232
+ */
233
+ export const SHARED_SESSION_REGISTER_OUTPUT_SCHEMA = objectSchema({
234
+ session: SHARED_SESSION_RECORD_SCHEMA,
235
+ reopened: BOOLEAN_SCHEMA,
236
+ conflict: objectSchema({ status: enumSchema(['closed']) }, ['status']),
237
+ }, ['session', 'reopened']);
195
238
  export const SHARED_SESSION_CONVERSATION_ROUTE_OUTPUT_SCHEMA = objectSchema({
196
239
  messageId: STRING_SCHEMA,
197
240
  routedTo: STRING_SCHEMA,
@@ -348,6 +391,17 @@ export const APPROVAL_ACTION_INPUT_SCHEMA = objectSchema({
348
391
  note: STRING_SCHEMA,
349
392
  remember: BOOLEAN_SCHEMA,
350
393
  }, ['approvalId'], { additionalProperties: false });
394
+ // approvals.approve additionally accepts an optional per-hunk selection. Absent
395
+ // selectedHunks = approve the whole request (exact back-compat). When present,
396
+ // the broker filters the edit-tool `edits` array to those indices server-side
397
+ // so TUI and webui produce identical modified-edit args; an out-of-range index
398
+ // or a non-edit approval is a 400.
399
+ export const APPROVAL_APPROVE_INPUT_SCHEMA = objectSchema({
400
+ approvalId: STRING_SCHEMA,
401
+ note: STRING_SCHEMA,
402
+ remember: BOOLEAN_SCHEMA,
403
+ selectedHunks: arraySchema(NUMBER_SCHEMA),
404
+ }, ['approvalId'], { additionalProperties: false });
351
405
  export const APPROVAL_ACTION_OUTPUT_SCHEMA = objectSchema({
352
406
  approval: SHARED_APPROVAL_RECORD_SCHEMA,
353
407
  }, ['approval']);
@@ -1,5 +1,6 @@
1
1
  export * from './operator-contract-schemas-control.js';
2
2
  export * from './operator-contract-schemas-domains.js';
3
+ export * from './operator-contract-schemas-fleet.js';
3
4
  export * from './operator-contract-schemas-permissions.js';
4
5
  export * from './operator-contract-schemas-remote.js';
5
6
  export * from './operator-contract-schemas-runtime.js';
@@ -1 +1 @@
1
- {"version":3,"file":"operator-contract-schemas.d.ts","sourceRoot":"","sources":["../../../src/platform/control-plane/operator-contract-schemas.ts"],"names":[],"mappings":"AAAA,cAAc,wCAAwC,CAAC;AACvD,cAAc,wCAAwC,CAAC;AACvD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,uCAAuC,CAAC;AACtD,cAAc,wCAAwC,CAAC;AACvD,cAAc,0CAA0C,CAAC"}
1
+ {"version":3,"file":"operator-contract-schemas.d.ts","sourceRoot":"","sources":["../../../src/platform/control-plane/operator-contract-schemas.ts"],"names":[],"mappings":"AAAA,cAAc,wCAAwC,CAAC;AACvD,cAAc,wCAAwC,CAAC;AACvD,cAAc,sCAAsC,CAAC;AACrD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,uCAAuC,CAAC;AACtD,cAAc,wCAAwC,CAAC;AACvD,cAAc,0CAA0C,CAAC"}
@@ -1,5 +1,6 @@
1
1
  export * from './operator-contract-schemas-control.js';
2
2
  export * from './operator-contract-schemas-domains.js';
3
+ export * from './operator-contract-schemas-fleet.js';
3
4
  export * from './operator-contract-schemas-permissions.js';
4
5
  export * from './operator-contract-schemas-remote.js';
5
6
  export * from './operator-contract-schemas-runtime.js';
@@ -1 +1 @@
1
- {"version":3,"file":"operator-contract.d.ts","sourceRoot":"","sources":["../../../src/platform/control-plane/operator-contract.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA0B,oBAAoB,EAA2B,MAAM,qBAAqB,CAAC;AAiBjH,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAYhF,YAAY,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAqBhF,eAAO,MAAM,wBAAwB,yBAsE+B,CAAC;AAoErE,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,oBAAoB,GAAG,wBAAwB,CAyB7F"}
1
+ {"version":3,"file":"operator-contract.d.ts","sourceRoot":"","sources":["../../../src/platform/control-plane/operator-contract.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA0B,oBAAoB,EAA2B,MAAM,qBAAqB,CAAC;AAkBjH,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAYhF,YAAY,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAqBhF,eAAO,MAAM,wBAAwB,yBA4E+B,CAAC;AAoErE,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,oBAAoB,GAAG,wBAAwB,CA0B7F"}
@@ -1,6 +1,7 @@
1
1
  import { getOperatorContract } from '@pellux/goodvibes-contracts';
2
2
  import { BOOLEAN_SCHEMA, METHOD_DESCRIPTOR_SCHEMA, EVENT_DESCRIPTOR_SCHEMA, NUMBER_SCHEMA, STRING_SCHEMA, arraySchema, objectSchema, } from './method-catalog-shared.js';
3
3
  import { CONTROL_AUTH_CURRENT_RESPONSE_SCHEMA, CONTROL_AUTH_LOGIN_REQUEST_SCHEMA, CONTROL_AUTH_LOGIN_RESPONSE_SCHEMA, } from './operator-contract-schemas.js';
4
+ import { summarizeInvokeValidationCoverage } from './invoke-input-validation.js';
4
5
  import { VERSION } from '../version.js';
5
6
  import { OPERATOR_SESSION_COOKIE_NAME } from '../security/http-auth.js';
6
7
  const OPERATOR_CONTRACT_VERSION = 1;
@@ -79,6 +80,12 @@ export const OPERATOR_CONTRACT_SCHEMA = objectSchema({
79
80
  withDomains: NUMBER_SCHEMA,
80
81
  withWireEvents: NUMBER_SCHEMA,
81
82
  }, ['events', 'withDomains', 'withWireEvents']),
83
+ validationCoverage: objectSchema({
84
+ methods: NUMBER_SCHEMA,
85
+ validated: NUMBER_SCHEMA,
86
+ skippedGeneric: NUMBER_SCHEMA,
87
+ skippedUntyped: NUMBER_SCHEMA,
88
+ }, ['methods', 'validated', 'skippedGeneric', 'skippedUntyped']),
82
89
  }, ['methods', 'events', 'schemaCoverage', 'eventCoverage']),
83
90
  peer: objectSchema({
84
91
  contractPath: STRING_SCHEMA,
@@ -171,6 +178,7 @@ export function buildOperatorContract(catalog) {
171
178
  events,
172
179
  schemaCoverage: summarizeSchemaCoverage(catalog.list()),
173
180
  eventCoverage: summarizeEventCoverage(catalog.listEvents()),
181
+ validationCoverage: summarizeInvokeValidationCoverage(catalog.list()),
174
182
  },
175
183
  };
176
184
  }
@@ -0,0 +1,39 @@
1
+ /**
2
+ * routes/checkpoints.ts
3
+ *
4
+ * W3-S2 — `checkpoints.list` / `checkpoints.create` / `checkpoints.diff` /
5
+ * `checkpoints.restore` gateway-method handlers over the ALREADY
6
+ * daemon-resident `WorkspaceCheckpointManager` (constructed +
7
+ * eagerly-`init()`'d at ../../runtime/services.ts:620, exposed on
8
+ * RuntimeServices at :245). Thin verb registration over an existing manager
9
+ * — see routes/fleet.ts's header comment for the full rationale on why these
10
+ * are wired via `GatewayMethodCatalog.register(descriptor, handler)` instead
11
+ * of a daemon-sdk REST route or a router.ts change.
12
+ *
13
+ * IMPORTANT (brief-mandated, do not "fix"): `checkpoints.restore` executes
14
+ * the restore immediately, with NO server-side confirmation gate. The TUI
15
+ * gates this behind a confirm overlay in the UI layer
16
+ * (src/input/commands/checkpoint-runtime.ts, DiffPanel.confirmOverlay) —
17
+ * confirmation is the CALLING SURFACE's responsibility, not the wire verb's.
18
+ * A future caller (webui) that fires this unguarded will perform a real
19
+ * git-backed workspace rewrite.
20
+ */
21
+ import type { GatewayMethodCatalog } from '../method-catalog.js';
22
+ import type { GatewayMethodHandler } from '../method-catalog-shared.js';
23
+ import type { WorkspaceCheckpointManager } from '../../workspace/checkpoint/manager.js';
24
+ /** Structural deps — the read/write surface `checkpoints.*` needs. */
25
+ export type CheckpointsGatewayManager = Pick<WorkspaceCheckpointManager, 'list' | 'create' | 'diff' | 'restore'>;
26
+ export declare function createCheckpointsListHandler(manager: CheckpointsGatewayManager): GatewayMethodHandler;
27
+ export declare function createCheckpointsCreateHandler(manager: CheckpointsGatewayManager): GatewayMethodHandler;
28
+ export declare function createCheckpointsDiffHandler(manager: CheckpointsGatewayManager): GatewayMethodHandler;
29
+ export declare function createCheckpointsRestoreHandler(manager: CheckpointsGatewayManager): GatewayMethodHandler;
30
+ /**
31
+ * Attach the `checkpoints.*` handlers to the descriptors already registered
32
+ * (without a handler) from ../method-catalog-control-core.ts's static
33
+ * builtin array. Call once, at RuntimeServices construction time, after
34
+ * `workspaceCheckpointManager` exists. A missing descriptor is a silent
35
+ * no-op — see routes/fleet.ts's `registerFleetGatewayMethods` for the same
36
+ * rationale.
37
+ */
38
+ export declare function registerCheckpointGatewayMethods(catalog: GatewayMethodCatalog, manager: CheckpointsGatewayManager): void;
39
+ //# sourceMappingURL=checkpoints.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkpoints.d.ts","sourceRoot":"","sources":["../../../../src/platform/control-plane/routes/checkpoints.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,uCAAuC,CAAC;AA8GxF,sEAAsE;AACtE,MAAM,MAAM,yBAAyB,GAAG,IAAI,CAAC,0BAA0B,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC,CAAC;AAEjH,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,yBAAyB,GAAG,oBAAoB,CASrG;AAED,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,yBAAyB,GAAG,oBAAoB,CAkBvG;AAED,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,yBAAyB,GAAG,oBAAoB,CAQrG;AAED,wBAAgB,+BAA+B,CAAC,OAAO,EAAE,yBAAyB,GAAG,oBAAoB,CAUxG;AAED;;;;;;;GAOG;AACH,wBAAgB,gCAAgC,CAAC,OAAO,EAAE,oBAAoB,EAAE,OAAO,EAAE,yBAAyB,GAAG,IAAI,CAYxH"}
@@ -0,0 +1,166 @@
1
+ import { GatewayVerbError } from './gateway-verb-error.js';
2
+ import { readInvocationParams } from './invocation-params.js';
3
+ const CHECKPOINT_KINDS = ['turn', 'agent-run', 'manual'];
4
+ const RETENTION_CLASSES = ['short', 'standard', 'forensic'];
5
+ const CHECKPOINTS_LIST_DEFAULT_LIMIT = 100;
6
+ const CHECKPOINTS_LIST_MAX_LIMIT = 500;
7
+ /**
8
+ * `WorkspaceCheckpointManager.requireCheckpoint` (../../workspace/checkpoint/manager.ts:599-604,
9
+ * private) throws a plain `Error` with this exact message shape for an
10
+ * unknown/gc'd id. `diff`/`restore` both route through it. There is no
11
+ * public `get(id)` to pre-check existence without a second full manager
12
+ * call, so this handler matches the message text the manager already
13
+ * commits to (any manager.ts rewrite of that string is covered by the
14
+ * bootDaemon proof test — see test/w3-s2-*.test.ts — as a regression net,
15
+ * not by this string match alone).
16
+ */
17
+ const NO_CHECKPOINT_FOUND_MARKER = 'no checkpoint found with id';
18
+ async function callOrHonestNotFound(fn) {
19
+ try {
20
+ return await fn();
21
+ }
22
+ catch (err) {
23
+ const message = err instanceof Error ? err.message : String(err);
24
+ if (message.includes(NO_CHECKPOINT_FOUND_MARKER)) {
25
+ // Preserve the manager's own message (it already names the specific
26
+ // missing id) — only the status/code are being upgraded from the
27
+ // blanket 500 a plain throw would collapse to.
28
+ throw new GatewayVerbError(message, 'NOT_FOUND', 404);
29
+ }
30
+ throw err;
31
+ }
32
+ }
33
+ function optionalString(value) {
34
+ return typeof value === 'string' && value.length > 0 ? value : undefined;
35
+ }
36
+ function requiredString(value, field) {
37
+ if (typeof value !== 'string' || value.length === 0) {
38
+ throw new GatewayVerbError(`Missing required field: ${field}`, 'INVALID_ARGUMENT', 400);
39
+ }
40
+ return value;
41
+ }
42
+ function optionalNumber(value, field) {
43
+ if (value === undefined || value === null)
44
+ return undefined;
45
+ const n = typeof value === 'number' ? value : Number(value);
46
+ if (!Number.isFinite(n)) {
47
+ throw new GatewayVerbError(`Invalid number for field: ${field}`, 'INVALID_ARGUMENT', 400);
48
+ }
49
+ return n;
50
+ }
51
+ function optionalStringArray(value) {
52
+ if (value === undefined || value === null)
53
+ return undefined;
54
+ if (!Array.isArray(value) || !value.every((v) => typeof v === 'string')) {
55
+ throw new GatewayVerbError('Invalid field: paths must be a string array', 'INVALID_ARGUMENT', 400);
56
+ }
57
+ return value;
58
+ }
59
+ function optionalBoolean(value, field) {
60
+ if (value === undefined || value === null)
61
+ return undefined;
62
+ if (typeof value !== 'boolean') {
63
+ throw new GatewayVerbError(`Invalid boolean for field: ${field}`, 'INVALID_ARGUMENT', 400);
64
+ }
65
+ return value;
66
+ }
67
+ function validateCheckpointKind(value, required) {
68
+ if (value === undefined || value === null) {
69
+ if (required)
70
+ throw new GatewayVerbError('Missing required field: kind', 'INVALID_ARGUMENT', 400);
71
+ return undefined;
72
+ }
73
+ if (typeof value !== 'string' || !CHECKPOINT_KINDS.includes(value)) {
74
+ throw new GatewayVerbError(`Invalid kind: ${String(value)} (expected one of ${CHECKPOINT_KINDS.join(', ')})`, 'INVALID_ARGUMENT', 400);
75
+ }
76
+ return value;
77
+ }
78
+ function validateRetentionClass(value) {
79
+ if (value === undefined || value === null)
80
+ return undefined;
81
+ if (typeof value !== 'string' || !RETENTION_CLASSES.includes(value)) {
82
+ throw new GatewayVerbError(`Invalid retentionClass: ${String(value)} (expected one of ${RETENTION_CLASSES.join(', ')})`, 'INVALID_ARGUMENT', 400);
83
+ }
84
+ return value;
85
+ }
86
+ function clampLimit(raw) {
87
+ if (raw === undefined || raw === null)
88
+ return CHECKPOINTS_LIST_DEFAULT_LIMIT;
89
+ const n = typeof raw === 'number' ? raw : Number(raw);
90
+ if (!Number.isFinite(n) || n <= 0) {
91
+ throw new GatewayVerbError(`Invalid limit: ${String(raw)}`, 'INVALID_ARGUMENT', 400);
92
+ }
93
+ return Math.min(Math.floor(n), CHECKPOINTS_LIST_MAX_LIMIT);
94
+ }
95
+ export function createCheckpointsListHandler(manager) {
96
+ return async (invocation) => {
97
+ const params = readInvocationParams(invocation);
98
+ const kind = validateCheckpointKind(params.kind, false);
99
+ const since = optionalNumber(params.since, 'since');
100
+ const limit = clampLimit(params.limit);
101
+ const checkpoints = await manager.list({ kind, since, limit });
102
+ return { checkpoints };
103
+ };
104
+ }
105
+ export function createCheckpointsCreateHandler(manager) {
106
+ return async (invocation) => {
107
+ const body = readInvocationParams(invocation);
108
+ const kind = validateCheckpointKind(body.kind, true);
109
+ if (!kind)
110
+ throw new GatewayVerbError('Missing required field: kind', 'INVALID_ARGUMENT', 400);
111
+ const checkpoint = await manager.create({
112
+ kind,
113
+ label: optionalString(body.label),
114
+ retentionClass: validateRetentionClass(body.retentionClass),
115
+ turnId: optionalString(body.turnId),
116
+ agentId: optionalString(body.agentId),
117
+ paths: optionalStringArray(body.paths),
118
+ });
119
+ // `create` returns null when the workspace tree is unchanged since the
120
+ // parent checkpoint (manager.ts:349-357) — an honest no-op, not an
121
+ // error and not a fabricated checkpoint record.
122
+ return { checkpoint, noop: checkpoint === null };
123
+ };
124
+ }
125
+ export function createCheckpointsDiffHandler(manager) {
126
+ return async (invocation) => {
127
+ const params = readInvocationParams(invocation);
128
+ const a = requiredString(params.a, 'a');
129
+ const b = optionalString(params.b);
130
+ const diff = await callOrHonestNotFound(() => manager.diff(a, b));
131
+ return { diff };
132
+ };
133
+ }
134
+ export function createCheckpointsRestoreHandler(manager) {
135
+ return async (invocation) => {
136
+ const body = readInvocationParams(invocation);
137
+ const id = requiredString(body.id, 'id');
138
+ const result = await callOrHonestNotFound(() => manager.restore(id, {
139
+ paths: optionalStringArray(body.paths),
140
+ safetyCheckpoint: optionalBoolean(body.safetyCheckpoint, 'safetyCheckpoint'),
141
+ }));
142
+ return { result };
143
+ };
144
+ }
145
+ /**
146
+ * Attach the `checkpoints.*` handlers to the descriptors already registered
147
+ * (without a handler) from ../method-catalog-control-core.ts's static
148
+ * builtin array. Call once, at RuntimeServices construction time, after
149
+ * `workspaceCheckpointManager` exists. A missing descriptor is a silent
150
+ * no-op — see routes/fleet.ts's `registerFleetGatewayMethods` for the same
151
+ * rationale.
152
+ */
153
+ export function registerCheckpointGatewayMethods(catalog, manager) {
154
+ const listDescriptor = catalog.get('checkpoints.list');
155
+ if (listDescriptor)
156
+ catalog.register(listDescriptor, createCheckpointsListHandler(manager), { replace: true });
157
+ const createDescriptor = catalog.get('checkpoints.create');
158
+ if (createDescriptor)
159
+ catalog.register(createDescriptor, createCheckpointsCreateHandler(manager), { replace: true });
160
+ const diffDescriptor = catalog.get('checkpoints.diff');
161
+ if (diffDescriptor)
162
+ catalog.register(diffDescriptor, createCheckpointsDiffHandler(manager), { replace: true });
163
+ const restoreDescriptor = catalog.get('checkpoints.restore');
164
+ if (restoreDescriptor)
165
+ catalog.register(restoreDescriptor, createCheckpointsRestoreHandler(manager), { replace: true });
166
+ }