@canhta/dsh-autopilot 0.1.0-alpha.1

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 (448) hide show
  1. package/AGENTS.md +41 -0
  2. package/CONTEXT.md +39 -0
  3. package/LICENSE +21 -0
  4. package/README.md +95 -0
  5. package/cordis.patch.yml +13 -0
  6. package/deploy/dsh-autopilot.service +26 -0
  7. package/docs/CONTRIBUTING.md +60 -0
  8. package/docs/README.md +34 -0
  9. package/docs/agents/domain.md +7 -0
  10. package/docs/agents/issue-tracker.md +21 -0
  11. package/docs/agents/triage-labels.md +13 -0
  12. package/docs/assets/banner.png +0 -0
  13. package/docs/deployment.md +138 -0
  14. package/docs/engineering.md +43 -0
  15. package/docs/specs/execution.md +65 -0
  16. package/docs/specs/integrations.md +89 -0
  17. package/docs/specs/lifecycle.md +81 -0
  18. package/docs/specs/operations.md +89 -0
  19. package/docs/specs/plugin.md +49 -0
  20. package/docs/specs/providers.md +62 -0
  21. package/docs/specs/scope.md +35 -0
  22. package/docs/specs/ui-components.md +96 -0
  23. package/docs/specs/web-ui.md +64 -0
  24. package/lib/admission/cancellation-control.d.ts +11 -0
  25. package/lib/admission/cancellation-control.js +72 -0
  26. package/lib/admission/cancellation-control.js.map +1 -0
  27. package/lib/admission/candidates.d.ts +2 -0
  28. package/lib/admission/candidates.js +23 -0
  29. package/lib/admission/candidates.js.map +1 -0
  30. package/lib/admission/composition-claim.d.ts +10 -0
  31. package/lib/admission/composition-claim.js +13 -0
  32. package/lib/admission/composition-claim.js.map +1 -0
  33. package/lib/admission/constants.d.ts +12 -0
  34. package/lib/admission/constants.js +13 -0
  35. package/lib/admission/constants.js.map +1 -0
  36. package/lib/admission/deliveries.d.ts +6 -0
  37. package/lib/admission/deliveries.js +175 -0
  38. package/lib/admission/deliveries.js.map +1 -0
  39. package/lib/admission/delivery-control.d.ts +28 -0
  40. package/lib/admission/delivery-control.js +294 -0
  41. package/lib/admission/delivery-control.js.map +1 -0
  42. package/lib/admission/execution-control.d.ts +29 -0
  43. package/lib/admission/execution-control.js +177 -0
  44. package/lib/admission/execution-control.js.map +1 -0
  45. package/lib/admission/index.d.ts +4 -0
  46. package/lib/admission/index.js +4 -0
  47. package/lib/admission/index.js.map +1 -0
  48. package/lib/admission/model.d.ts +296 -0
  49. package/lib/admission/model.js +13 -0
  50. package/lib/admission/model.js.map +1 -0
  51. package/lib/admission/pause-control.d.ts +44 -0
  52. package/lib/admission/pause-control.js +220 -0
  53. package/lib/admission/pause-control.js.map +1 -0
  54. package/lib/admission/policy.d.ts +39 -0
  55. package/lib/admission/policy.js +238 -0
  56. package/lib/admission/policy.js.map +1 -0
  57. package/lib/admission/ports.d.ts +13 -0
  58. package/lib/admission/ports.js +2 -0
  59. package/lib/admission/ports.js.map +1 -0
  60. package/lib/admission/publication-control.d.ts +16 -0
  61. package/lib/admission/publication-control.js +153 -0
  62. package/lib/admission/publication-control.js.map +1 -0
  63. package/lib/admission/reconciler.d.ts +7 -0
  64. package/lib/admission/reconciler.js +121 -0
  65. package/lib/admission/reconciler.js.map +1 -0
  66. package/lib/admission/resume-control.d.ts +27 -0
  67. package/lib/admission/resume-control.js +213 -0
  68. package/lib/admission/resume-control.js.map +1 -0
  69. package/lib/admission/run-fence.d.ts +11 -0
  70. package/lib/admission/run-fence.js +49 -0
  71. package/lib/admission/run-fence.js.map +1 -0
  72. package/lib/admission/service.d.ts +130 -0
  73. package/lib/admission/service.js +415 -0
  74. package/lib/admission/service.js.map +1 -0
  75. package/lib/admission/state-domain.d.ts +11 -0
  76. package/lib/admission/state-domain.js +33 -0
  77. package/lib/admission/state-domain.js.map +1 -0
  78. package/lib/admission/state-integrity.d.ts +19 -0
  79. package/lib/admission/state-integrity.js +102 -0
  80. package/lib/admission/state-integrity.js.map +1 -0
  81. package/lib/admission/state-migration.d.ts +4 -0
  82. package/lib/admission/state-migration.js +46 -0
  83. package/lib/admission/state-migration.js.map +1 -0
  84. package/lib/admission/state.d.ts +4524 -0
  85. package/lib/admission/state.js +394 -0
  86. package/lib/admission/state.js.map +1 -0
  87. package/lib/admission.d.ts +1 -0
  88. package/lib/admission.js +2 -0
  89. package/lib/admission.js.map +1 -0
  90. package/lib/client-types/client/OperationsAtoms.d.ts +30 -0
  91. package/lib/client-types/client/OperationsPanel.d.ts +34 -0
  92. package/lib/client-types/client/RunsView.d.ts +14 -0
  93. package/lib/client-types/client/SettingsCapabilitySections.d.ts +16 -0
  94. package/lib/client-types/client/SettingsPanel.d.ts +40 -0
  95. package/lib/client-types/client/SettingsPolicySections.d.ts +13 -0
  96. package/lib/client-types/client/SettingsProviderSection.d.ts +21 -0
  97. package/lib/client-types/client/SummaryView.d.ts +10 -0
  98. package/lib/client-types/client/WorktreesView.d.ts +9 -0
  99. package/lib/client-types/client/index.d.ts +9 -0
  100. package/lib/client-types/client/locales/en.d.ts +154 -0
  101. package/lib/client-types/client/locales/index.d.ts +9 -0
  102. package/lib/client-types/client/locales/zh.d.ts +155 -0
  103. package/lib/client-types/client/settings-draft.d.ts +29 -0
  104. package/lib/client-types/client/state.d.ts +63 -0
  105. package/lib/client-types/code-host/index.d.ts +2 -0
  106. package/lib/client-types/code-host/model.d.ts +118 -0
  107. package/lib/client-types/code-host/registry.d.ts +23 -0
  108. package/lib/client-types/code-host/validation.d.ts +51 -0
  109. package/lib/client-types/code-host.d.ts +2 -0
  110. package/lib/client-types/config/index.d.ts +2 -0
  111. package/lib/client-types/config/settings.d.ts +51 -0
  112. package/lib/client-types/config.d.ts +2 -0
  113. package/lib/client-types/notification/index.d.ts +2 -0
  114. package/lib/client-types/notification/model.d.ts +57 -0
  115. package/lib/client-types/notification/registry.d.ts +16 -0
  116. package/lib/client-types/notification.d.ts +2 -0
  117. package/lib/client-types/providers/generation-registry.d.ts +20 -0
  118. package/lib/client-types/remote.d.ts +65 -0
  119. package/lib/client-types/tracker/index.d.ts +2 -0
  120. package/lib/client-types/tracker/model.d.ts +222 -0
  121. package/lib/client-types/tracker/registry.d.ts +49 -0
  122. package/lib/client-types/tracker/validation.d.ts +60 -0
  123. package/lib/client-types/tracker.d.ts +2 -0
  124. package/lib/client-types/web/contract.d.ts +958 -0
  125. package/lib/client.js +7961 -0
  126. package/lib/client.js.map +1 -0
  127. package/lib/code-host/index.d.ts +2 -0
  128. package/lib/code-host/index.js +3 -0
  129. package/lib/code-host/index.js.map +1 -0
  130. package/lib/code-host/model.d.ts +118 -0
  131. package/lib/code-host/model.js +23 -0
  132. package/lib/code-host/model.js.map +1 -0
  133. package/lib/code-host/registry.d.ts +23 -0
  134. package/lib/code-host/registry.js +90 -0
  135. package/lib/code-host/registry.js.map +1 -0
  136. package/lib/code-host/validation.d.ts +51 -0
  137. package/lib/code-host/validation.js +30 -0
  138. package/lib/code-host/validation.js.map +1 -0
  139. package/lib/code-host.d.ts +2 -0
  140. package/lib/code-host.js +3 -0
  141. package/lib/code-host.js.map +1 -0
  142. package/lib/config/index.d.ts +2 -0
  143. package/lib/config/index.js +3 -0
  144. package/lib/config/index.js.map +1 -0
  145. package/lib/config/settings.d.ts +51 -0
  146. package/lib/config/settings.js +195 -0
  147. package/lib/config/settings.js.map +1 -0
  148. package/lib/config.d.ts +2 -0
  149. package/lib/config.js +3 -0
  150. package/lib/config.js.map +1 -0
  151. package/lib/delivery/index.d.ts +1 -0
  152. package/lib/delivery/index.js +2 -0
  153. package/lib/delivery/index.js.map +1 -0
  154. package/lib/delivery/service.d.ts +29 -0
  155. package/lib/delivery/service.js +140 -0
  156. package/lib/delivery/service.js.map +1 -0
  157. package/lib/delivery.d.ts +2 -0
  158. package/lib/delivery.js +3 -0
  159. package/lib/delivery.js.map +1 -0
  160. package/lib/dispatch/composition.d.ts +18 -0
  161. package/lib/dispatch/composition.js +109 -0
  162. package/lib/dispatch/composition.js.map +1 -0
  163. package/lib/dispatch/contract.d.ts +2 -0
  164. package/lib/dispatch/contract.js +2 -0
  165. package/lib/dispatch/contract.js.map +1 -0
  166. package/lib/dispatch/execute.d.ts +10 -0
  167. package/lib/dispatch/execute.js +138 -0
  168. package/lib/dispatch/execute.js.map +1 -0
  169. package/lib/dispatch/execution-state.d.ts +12 -0
  170. package/lib/dispatch/execution-state.js +24 -0
  171. package/lib/dispatch/execution-state.js.map +1 -0
  172. package/lib/dispatch/git.d.ts +5 -0
  173. package/lib/dispatch/git.js +95 -0
  174. package/lib/dispatch/git.js.map +1 -0
  175. package/lib/dispatch/index.d.ts +2 -0
  176. package/lib/dispatch/index.js +2 -0
  177. package/lib/dispatch/index.js.map +1 -0
  178. package/lib/dispatch/report.d.ts +11 -0
  179. package/lib/dispatch/report.js +141 -0
  180. package/lib/dispatch/report.js.map +1 -0
  181. package/lib/dispatch/resume.d.ts +17 -0
  182. package/lib/dispatch/resume.js +89 -0
  183. package/lib/dispatch/resume.js.map +1 -0
  184. package/lib/dispatch/service.d.ts +56 -0
  185. package/lib/dispatch/service.js +231 -0
  186. package/lib/dispatch/service.js.map +1 -0
  187. package/lib/dispatch/usage.d.ts +10 -0
  188. package/lib/dispatch/usage.js +47 -0
  189. package/lib/dispatch/usage.js.map +1 -0
  190. package/lib/dispatch.d.ts +2 -0
  191. package/lib/dispatch.js +3 -0
  192. package/lib/dispatch.js.map +1 -0
  193. package/lib/github-code-host.d.ts +1 -0
  194. package/lib/github-code-host.js +2 -0
  195. package/lib/github-code-host.js.map +1 -0
  196. package/lib/github-issues.d.ts +1 -0
  197. package/lib/github-issues.js +2 -0
  198. package/lib/github-issues.js.map +1 -0
  199. package/lib/index.d.ts +21 -0
  200. package/lib/index.js +48 -0
  201. package/lib/index.js.map +1 -0
  202. package/lib/ingress.d.ts +2 -0
  203. package/lib/ingress.js +3 -0
  204. package/lib/ingress.js.map +1 -0
  205. package/lib/jira.d.ts +1 -0
  206. package/lib/jira.js +2 -0
  207. package/lib/jira.js.map +1 -0
  208. package/lib/mcp/contracts.d.ts +21 -0
  209. package/lib/mcp/contracts.js +33 -0
  210. package/lib/mcp/contracts.js.map +1 -0
  211. package/lib/mcp/cursor.d.ts +10 -0
  212. package/lib/mcp/cursor.js +68 -0
  213. package/lib/mcp/cursor.js.map +1 -0
  214. package/lib/mcp/definition.d.ts +8 -0
  215. package/lib/mcp/definition.js +43 -0
  216. package/lib/mcp/definition.js.map +1 -0
  217. package/lib/mcp/index.d.ts +6 -0
  218. package/lib/mcp/index.js +7 -0
  219. package/lib/mcp/index.js.map +1 -0
  220. package/lib/mcp/json.d.ts +4 -0
  221. package/lib/mcp/json.js +20 -0
  222. package/lib/mcp/json.js.map +1 -0
  223. package/lib/mcp/mount.d.ts +17 -0
  224. package/lib/mcp/mount.js +79 -0
  225. package/lib/mcp/mount.js.map +1 -0
  226. package/lib/mcp/read-tools.d.ts +27 -0
  227. package/lib/mcp/read-tools.js +149 -0
  228. package/lib/mcp/read-tools.js.map +1 -0
  229. package/lib/notification/index.d.ts +2 -0
  230. package/lib/notification/index.js +3 -0
  231. package/lib/notification/index.js.map +1 -0
  232. package/lib/notification/model.d.ts +57 -0
  233. package/lib/notification/model.js +20 -0
  234. package/lib/notification/model.js.map +1 -0
  235. package/lib/notification/registry.d.ts +16 -0
  236. package/lib/notification/registry.js +67 -0
  237. package/lib/notification/registry.js.map +1 -0
  238. package/lib/notification.d.ts +2 -0
  239. package/lib/notification.js +3 -0
  240. package/lib/notification.js.map +1 -0
  241. package/lib/ntfy-notification.d.ts +1 -0
  242. package/lib/ntfy-notification.js +2 -0
  243. package/lib/ntfy-notification.js.map +1 -0
  244. package/lib/operations/cleanup-inspector.d.ts +16 -0
  245. package/lib/operations/cleanup-inspector.js +132 -0
  246. package/lib/operations/cleanup-inspector.js.map +1 -0
  247. package/lib/operations/cleanup.d.ts +25 -0
  248. package/lib/operations/cleanup.js +151 -0
  249. package/lib/operations/cleanup.js.map +1 -0
  250. package/lib/operations/disposition.d.ts +46 -0
  251. package/lib/operations/disposition.js +89 -0
  252. package/lib/operations/disposition.js.map +1 -0
  253. package/lib/operations/health.d.ts +6 -0
  254. package/lib/operations/health.js +41 -0
  255. package/lib/operations/health.js.map +1 -0
  256. package/lib/operations/index.d.ts +6 -0
  257. package/lib/operations/index.js +7 -0
  258. package/lib/operations/index.js.map +1 -0
  259. package/lib/operations/inspection.d.ts +35 -0
  260. package/lib/operations/inspection.js +183 -0
  261. package/lib/operations/inspection.js.map +1 -0
  262. package/lib/operations/model.d.ts +77 -0
  263. package/lib/operations/model.js +2 -0
  264. package/lib/operations/model.js.map +1 -0
  265. package/lib/operations/recovery.d.ts +11 -0
  266. package/lib/operations/recovery.js +101 -0
  267. package/lib/operations/recovery.js.map +1 -0
  268. package/lib/operations/retention.d.ts +28 -0
  269. package/lib/operations/retention.js +105 -0
  270. package/lib/operations/retention.js.map +1 -0
  271. package/lib/operations/runtime-owner.d.ts +54 -0
  272. package/lib/operations/runtime-owner.js +281 -0
  273. package/lib/operations/runtime-owner.js.map +1 -0
  274. package/lib/operations/service.d.ts +55 -0
  275. package/lib/operations/service.js +154 -0
  276. package/lib/operations/service.js.map +1 -0
  277. package/lib/operations/state.d.ts +79 -0
  278. package/lib/operations/state.js +51 -0
  279. package/lib/operations/state.js.map +1 -0
  280. package/lib/operations/storage-composition.d.ts +16 -0
  281. package/lib/operations/storage-composition.js +61 -0
  282. package/lib/operations/storage-composition.js.map +1 -0
  283. package/lib/operations/store.d.ts +16 -0
  284. package/lib/operations/store.js +84 -0
  285. package/lib/operations/store.js.map +1 -0
  286. package/lib/operations.d.ts +2 -0
  287. package/lib/operations.js +3 -0
  288. package/lib/operations.js.map +1 -0
  289. package/lib/providers/generation-registry.d.ts +20 -0
  290. package/lib/providers/generation-registry.js +72 -0
  291. package/lib/providers/generation-registry.js.map +1 -0
  292. package/lib/providers/github-code-host/contracts.d.ts +224 -0
  293. package/lib/providers/github-code-host/contracts.js +144 -0
  294. package/lib/providers/github-code-host/contracts.js.map +1 -0
  295. package/lib/providers/github-code-host/index.d.ts +2 -0
  296. package/lib/providers/github-code-host/index.js +2 -0
  297. package/lib/providers/github-code-host/index.js.map +1 -0
  298. package/lib/providers/github-code-host/provider.d.ts +5 -0
  299. package/lib/providers/github-code-host/provider.js +289 -0
  300. package/lib/providers/github-code-host/provider.js.map +1 -0
  301. package/lib/providers/github-code-host/schemas.d.ts +81 -0
  302. package/lib/providers/github-code-host/schemas.js +39 -0
  303. package/lib/providers/github-code-host/schemas.js.map +1 -0
  304. package/lib/providers/github-code-host/settings.d.ts +16 -0
  305. package/lib/providers/github-code-host/settings.js +65 -0
  306. package/lib/providers/github-code-host/settings.js.map +1 -0
  307. package/lib/providers/github-issues/contracts.d.ts +151 -0
  308. package/lib/providers/github-issues/contracts.js +141 -0
  309. package/lib/providers/github-issues/contracts.js.map +1 -0
  310. package/lib/providers/github-issues/index.d.ts +1 -0
  311. package/lib/providers/github-issues/index.js +2 -0
  312. package/lib/providers/github-issues/index.js.map +1 -0
  313. package/lib/providers/github-issues/ingress.d.ts +8 -0
  314. package/lib/providers/github-issues/ingress.js +80 -0
  315. package/lib/providers/github-issues/ingress.js.map +1 -0
  316. package/lib/providers/github-issues/normalization.d.ts +11 -0
  317. package/lib/providers/github-issues/normalization.js +115 -0
  318. package/lib/providers/github-issues/normalization.js.map +1 -0
  319. package/lib/providers/github-issues/provider.d.ts +6 -0
  320. package/lib/providers/github-issues/provider.js +235 -0
  321. package/lib/providers/github-issues/provider.js.map +1 -0
  322. package/lib/providers/github-issues/schemas.d.ts +123 -0
  323. package/lib/providers/github-issues/schemas.js +58 -0
  324. package/lib/providers/github-issues/schemas.js.map +1 -0
  325. package/lib/providers/github-issues/settings.d.ts +27 -0
  326. package/lib/providers/github-issues/settings.js +154 -0
  327. package/lib/providers/github-issues/settings.js.map +1 -0
  328. package/lib/providers/jira/contracts.d.ts +193 -0
  329. package/lib/providers/jira/contracts.js +133 -0
  330. package/lib/providers/jira/contracts.js.map +1 -0
  331. package/lib/providers/jira/index.d.ts +1 -0
  332. package/lib/providers/jira/index.js +2 -0
  333. package/lib/providers/jira/index.js.map +1 -0
  334. package/lib/providers/jira/ingress.d.ts +4 -0
  335. package/lib/providers/jira/ingress.js +60 -0
  336. package/lib/providers/jira/ingress.js.map +1 -0
  337. package/lib/providers/jira/normalization.d.ts +8 -0
  338. package/lib/providers/jira/normalization.js +121 -0
  339. package/lib/providers/jira/normalization.js.map +1 -0
  340. package/lib/providers/jira/provider.d.ts +6 -0
  341. package/lib/providers/jira/provider.js +317 -0
  342. package/lib/providers/jira/provider.js.map +1 -0
  343. package/lib/providers/jira/schemas.d.ts +134 -0
  344. package/lib/providers/jira/schemas.js +76 -0
  345. package/lib/providers/jira/schemas.js.map +1 -0
  346. package/lib/providers/jira/settings.d.ts +32 -0
  347. package/lib/providers/jira/settings.js +163 -0
  348. package/lib/providers/jira/settings.js.map +1 -0
  349. package/lib/providers/notification-http.d.ts +13 -0
  350. package/lib/providers/notification-http.js +136 -0
  351. package/lib/providers/notification-http.js.map +1 -0
  352. package/lib/providers/ntfy-notification/index.d.ts +2 -0
  353. package/lib/providers/ntfy-notification/index.js +2 -0
  354. package/lib/providers/ntfy-notification/index.js.map +1 -0
  355. package/lib/providers/ntfy-notification/provider.d.ts +4 -0
  356. package/lib/providers/ntfy-notification/provider.js +89 -0
  357. package/lib/providers/ntfy-notification/provider.js.map +1 -0
  358. package/lib/providers/ntfy-notification/settings.d.ts +12 -0
  359. package/lib/providers/ntfy-notification/settings.js +34 -0
  360. package/lib/providers/ntfy-notification/settings.js.map +1 -0
  361. package/lib/providers/webhook-notification/index.d.ts +2 -0
  362. package/lib/providers/webhook-notification/index.js +2 -0
  363. package/lib/providers/webhook-notification/index.js.map +1 -0
  364. package/lib/providers/webhook-notification/provider.d.ts +4 -0
  365. package/lib/providers/webhook-notification/provider.js +57 -0
  366. package/lib/providers/webhook-notification/provider.js.map +1 -0
  367. package/lib/providers/webhook-notification/settings.d.ts +11 -0
  368. package/lib/providers/webhook-notification/settings.js +31 -0
  369. package/lib/providers/webhook-notification/settings.js.map +1 -0
  370. package/lib/publication/git.d.ts +7 -0
  371. package/lib/publication/git.js +154 -0
  372. package/lib/publication/git.js.map +1 -0
  373. package/lib/publication/index.d.ts +1 -0
  374. package/lib/publication/index.js +2 -0
  375. package/lib/publication/index.js.map +1 -0
  376. package/lib/publication/service.d.ts +27 -0
  377. package/lib/publication/service.js +166 -0
  378. package/lib/publication/service.js.map +1 -0
  379. package/lib/publication.d.ts +2 -0
  380. package/lib/publication.js +3 -0
  381. package/lib/publication.js.map +1 -0
  382. package/lib/reconciliation/index.d.ts +3 -0
  383. package/lib/reconciliation/index.js +4 -0
  384. package/lib/reconciliation/index.js.map +1 -0
  385. package/lib/reconciliation/ingress.d.ts +21 -0
  386. package/lib/reconciliation/ingress.js +168 -0
  387. package/lib/reconciliation/ingress.js.map +1 -0
  388. package/lib/reconciliation/service.d.ts +75 -0
  389. package/lib/reconciliation/service.js +228 -0
  390. package/lib/reconciliation/service.js.map +1 -0
  391. package/lib/reconciliation.d.ts +2 -0
  392. package/lib/reconciliation.js +3 -0
  393. package/lib/reconciliation.js.map +1 -0
  394. package/lib/remote.d.ts +65 -0
  395. package/lib/remote.js +135 -0
  396. package/lib/remote.js.map +1 -0
  397. package/lib/tracker/index.d.ts +2 -0
  398. package/lib/tracker/index.js +3 -0
  399. package/lib/tracker/index.js.map +1 -0
  400. package/lib/tracker/model.d.ts +222 -0
  401. package/lib/tracker/model.js +66 -0
  402. package/lib/tracker/model.js.map +1 -0
  403. package/lib/tracker/registry.d.ts +49 -0
  404. package/lib/tracker/registry.js +213 -0
  405. package/lib/tracker/registry.js.map +1 -0
  406. package/lib/tracker/validation.d.ts +60 -0
  407. package/lib/tracker/validation.js +52 -0
  408. package/lib/tracker/validation.js.map +1 -0
  409. package/lib/tracker.d.ts +2 -0
  410. package/lib/tracker.js +3 -0
  411. package/lib/tracker.js.map +1 -0
  412. package/lib/typert.d.ts +1 -0
  413. package/lib/typert.js +2 -0
  414. package/lib/typert.js.map +1 -0
  415. package/lib/web/commands.d.ts +18 -0
  416. package/lib/web/commands.js +231 -0
  417. package/lib/web/commands.js.map +1 -0
  418. package/lib/web/contract.d.ts +958 -0
  419. package/lib/web/contract.js +230 -0
  420. package/lib/web/contract.js.map +1 -0
  421. package/lib/web/contributions.d.ts +41 -0
  422. package/lib/web/contributions.js +61 -0
  423. package/lib/web/contributions.js.map +1 -0
  424. package/lib/web/integrations.d.ts +13 -0
  425. package/lib/web/integrations.js +95 -0
  426. package/lib/web/integrations.js.map +1 -0
  427. package/lib/web/projection.d.ts +10 -0
  428. package/lib/web/projection.js +192 -0
  429. package/lib/web/projection.js.map +1 -0
  430. package/lib/web/service.d.ts +31 -0
  431. package/lib/web/service.js +141 -0
  432. package/lib/web/service.js.map +1 -0
  433. package/lib/web.d.ts +5 -0
  434. package/lib/web.js +6 -0
  435. package/lib/web.js.map +1 -0
  436. package/lib/webhook-notification.d.ts +1 -0
  437. package/lib/webhook-notification.js +2 -0
  438. package/lib/webhook-notification.js.map +1 -0
  439. package/lib/workflow/index.d.ts +1 -0
  440. package/lib/workflow/index.js +2 -0
  441. package/lib/workflow/index.js.map +1 -0
  442. package/lib/workflow/service.d.ts +31 -0
  443. package/lib/workflow/service.js +220 -0
  444. package/lib/workflow/service.js.map +1 -0
  445. package/lib/workflow.d.ts +2 -0
  446. package/lib/workflow.js +3 -0
  447. package/lib/workflow.js.map +1 -0
  448. package/package.json +276 -0
@@ -0,0 +1,415 @@
1
+ import { Service } from '@deepseek-ai/cordis';
2
+ import { codeHostProviderId } from '../code-host.js';
3
+ import { CancellationControl } from './cancellation-control.js';
4
+ import { consumePreparedAgentComposition } from './composition-claim.js';
5
+ import { MAX_AUTOMATIC_EXTERNAL_ATTEMPTS, MAX_OPERATOR_COMMANDS, STATE_KEY } from './constants.js';
6
+ import { DeliveryControl } from './delivery-control.js';
7
+ import { ExecutionControl } from './execution-control.js';
8
+ import { PauseControl } from './pause-control.js';
9
+ import { PublicationControl } from './publication-control.js';
10
+ import { reconcile as reconcileAdmission, reconcileIngress as reconcileTrackerIngress } from './reconciler.js';
11
+ import { ResumeControl } from './resume-control.js';
12
+ import { RunOperationFence } from './run-fence.js';
13
+ import { operatorCommandSchema, stateSchema, } from './state.js';
14
+ import { admissionDomainSpec, initialState, snapshotOf } from './state-domain.js';
15
+ import { migrateAdmissionStateV6 } from './state-migration.js';
16
+ export class Admission extends Service {
17
+ static inject = ['tracker', 'autopilotConfig', 'storageDomain'];
18
+ state;
19
+ runOperations = new RunOperationFence();
20
+ constructor(ctx) {
21
+ super(ctx, 'admission');
22
+ }
23
+ async *[Service.init]() {
24
+ const domain = await this.ctx.storageDomain.open(admissionDomainSpec);
25
+ yield () => domain.close();
26
+ const storedTable = domain.table('state');
27
+ const stored = storedTable.get(STATE_KEY);
28
+ if (stored === undefined) {
29
+ await storedTable.put(STATE_KEY, initialState());
30
+ }
31
+ else if (stored.schemaVersion === 6) {
32
+ const needsCodeHost = stored.runs.some((run) => typeof run === 'object' && run !== null && 'execution' in run);
33
+ const settings = this.currentSettings();
34
+ if (needsCodeHost && settings.codeHostProvider === '') {
35
+ throw new Error('version-6 admission state with allocated runs requires a configured code-host provider');
36
+ }
37
+ const codeHostBinding = needsCodeHost
38
+ ? this.ctx.get('codeHost')?.binding(codeHostProviderId(settings.codeHostProvider))
39
+ : undefined;
40
+ await storedTable.put(STATE_KEY, migrateAdmissionStateV6(stored, settings, codeHostBinding));
41
+ }
42
+ this.state = storedTable;
43
+ if (stored !== undefined)
44
+ await this.markInterruptedRunsForRecovery();
45
+ }
46
+ /**
47
+ * Return a detached view with active work first, then queued work in dispatch order, then retained inactive runs.
48
+ * Throws if the service has not finished initialization; it performs no I/O and has no cancellation point.
49
+ */
50
+ snapshot() {
51
+ const current = this.currentState();
52
+ return snapshotOf(current);
53
+ }
54
+ /** Atomically retain one accepted operator command before its effect starts, deduplicated by caller request id. */
55
+ async acceptOperatorCommand(request) {
56
+ const parsed = operatorCommandSchema
57
+ .pick({ requestId: true, kind: true, runId: true, deliveryId: true, previewId: true })
58
+ .parse(request);
59
+ let created = false;
60
+ const committed = await this.currentTable().update(STATE_KEY, (current) => {
61
+ const existing = current.operatorCommands.find(({ requestId }) => requestId === parsed.requestId);
62
+ if (existing !== undefined) {
63
+ if (existing.kind !== parsed.kind ||
64
+ existing.runId !== parsed.runId ||
65
+ existing.deliveryId !== parsed.deliveryId ||
66
+ existing.previewId !== parsed.previewId) {
67
+ throw new Error(`command request id "${parsed.requestId}" was already used for a different action`);
68
+ }
69
+ return current;
70
+ }
71
+ const next = structuredClone(current);
72
+ const removable = next.operatorCommands.findIndex(({ status }) => status === 'succeeded' || status === 'rejected');
73
+ if (next.operatorCommands.length >= MAX_OPERATOR_COMMANDS) {
74
+ if (removable < 0)
75
+ throw new Error('too many operator commands are still active');
76
+ next.operatorCommands.splice(removable, 1);
77
+ }
78
+ next.operatorCommands.push({
79
+ ...parsed,
80
+ status: 'accepted',
81
+ acceptedAt: new Date().toISOString(),
82
+ });
83
+ next.revision += 1;
84
+ created = true;
85
+ return stateSchema.parse(next);
86
+ });
87
+ const command = committed.operatorCommands.find(({ requestId }) => requestId === parsed.requestId);
88
+ if (command === undefined)
89
+ throw new Error('accepted operator command disappeared from durable state');
90
+ return { command: structuredClone(command), created };
91
+ }
92
+ /** Persist a command transition in the same authoritative aggregate as the run/scheduler effect. */
93
+ async updateOperatorCommand(requestId, patch) {
94
+ const committed = await this.currentTable().update(STATE_KEY, (current) => {
95
+ const index = current.operatorCommands.findIndex((command) => command.requestId === requestId);
96
+ if (index < 0)
97
+ throw new Error(`operator command "${requestId}" does not exist`);
98
+ const next = structuredClone(current);
99
+ const prior = next.operatorCommands[index];
100
+ if (prior === undefined)
101
+ throw new Error(`operator command "${requestId}" disappeared`);
102
+ next.revision += 1;
103
+ next.operatorCommands[index] = operatorCommandSchema.parse({
104
+ ...prior,
105
+ ...patch,
106
+ ...(patch.status === 'succeeded' ? { revision: next.revision } : {}),
107
+ });
108
+ return stateSchema.parse(next);
109
+ });
110
+ const command = committed.operatorCommands.find((candidate) => candidate.requestId === requestId);
111
+ if (command === undefined)
112
+ throw new Error(`operator command "${requestId}" disappeared after update`);
113
+ return structuredClone(command);
114
+ }
115
+ operatorCommand(requestId) {
116
+ const command = this.currentState().operatorCommands.find((candidate) => candidate.requestId === requestId);
117
+ return command === undefined ? undefined : structuredClone(command);
118
+ }
119
+ operatorCommands() {
120
+ return structuredClone(this.currentState().operatorCommands);
121
+ }
122
+ /** Explain whether durable runs or outbound intents still depend on one tracker configuration. */
123
+ trackerSwitchBlocker(providerId) {
124
+ const dependents = this.currentState().runs.filter((run) => (run.providerId === providerId &&
125
+ run.state !== 'failed' &&
126
+ run.state !== 'completed' &&
127
+ run.state !== 'cancelled') ||
128
+ run.deliveries.some((delivery) => delivery.kind !== 'notification' &&
129
+ delivery.providerId === providerId &&
130
+ delivery.status !== 'succeeded' &&
131
+ delivery.status !== 'retired'));
132
+ if (dependents.length === 0)
133
+ return undefined;
134
+ const shown = dependents.slice(0, 3).map(({ displayKey }) => displayKey);
135
+ return `Tracker configuration cannot change while unfinished work or unresolved delivery intents remain for ${String(dependents.length)} affected run${dependents.length === 1 ? '' : 's'} (${shown.join(', ')}${dependents.length > shown.length ? ', …' : ''}).`;
136
+ }
137
+ /** Explain whether admitted runs still depend on one code-host provider selection. */
138
+ codeHostSwitchBlocker(providerId) {
139
+ const dependents = this.currentState().runs.filter((run) => ((run.state === 'queued' || (run.state === 'paused' && run.pause.kind === 'queued')) && providerId !== '') ||
140
+ ('execution' in run &&
141
+ run.execution.codeHost.providerId === providerId &&
142
+ run.state !== 'failed' &&
143
+ run.state !== 'completed' &&
144
+ (run.state !== 'cancelled' ||
145
+ ('publication' in run &&
146
+ run.publication !== undefined &&
147
+ !['failed', 'succeeded'].includes(run.publication.status)))));
148
+ if (dependents.length === 0)
149
+ return undefined;
150
+ const shown = dependents.slice(0, 3).map(({ displayKey }) => displayKey);
151
+ return `Code-host configuration cannot change while ${String(dependents.length)} unfinished run${dependents.length === 1 ? ' depends' : 's depend'} on it (${shown.join(', ')}${dependents.length > shown.length ? ', …' : ''}).`;
152
+ }
153
+ /** Prevent one provider id from being rebound while queued work or durable run history still names that binding. */
154
+ codeHostBindingSwitchBlocker(providerId) {
155
+ const dependents = this.currentState().runs.filter((run) => run.state === 'queued' ||
156
+ (run.state === 'paused' && run.pause.kind === 'queued') ||
157
+ ('execution' in run && run.execution.codeHost.providerId === providerId));
158
+ if (dependents.length === 0)
159
+ return undefined;
160
+ const shown = dependents.slice(0, 3).map(({ displayKey }) => displayKey);
161
+ return `Code-host binding configuration cannot change while durable run history or queued work remains for ${String(dependents.length)} affected run${dependents.length === 1 ? '' : 's'} (${shown.join(', ')}${dependents.length > shown.length ? ', …' : ''}).`;
162
+ }
163
+ /** Explain whether unallocated admitted work would be redirected by an execution-routing Settings change. */
164
+ executionRoutingSwitchBlocker() {
165
+ const dependents = this.currentState().runs.filter((run) => run.state === 'queued' || (run.state === 'paused' && run.pause.kind === 'queued'));
166
+ if (dependents.length === 0)
167
+ return undefined;
168
+ const shown = dependents.slice(0, 3).map(({ displayKey }) => displayKey);
169
+ return `Execution routing cannot change while ${String(dependents.length)} admitted run${dependents.length === 1 ? ' is' : 's are'} waiting for allocation (${shown.join(', ')}${dependents.length > shown.length ? ', …' : ''}).`;
170
+ }
171
+ /** Atomically change the admission/dequeue gate; rejects invalid modes or unsafe disable and has no cancellation point. */
172
+ setSchedulerMode(mode) {
173
+ return this.pauseControl().setSchedulerMode(mode);
174
+ }
175
+ /**
176
+ * Persist a draining/disabled transition and pause requests for active work.
177
+ * Rejects storage/schema failures; returned run ids still require the dispatcher to reach quiescence.
178
+ */
179
+ requestSchedulerDisable() {
180
+ return this.runOperations.mutateMany(this.snapshot().runs.map((run) => run.runId), () => this.pauseControl().requestSchedulerDisable());
181
+ }
182
+ /** Persist service-withdrawal pause requests for active runs; it does not itself cancel agents or accept cancellation. */
183
+ requestServiceWithdrawalPause() {
184
+ return this.runOperations.mutateMany(this.snapshot().runs.map((run) => run.runId), () => this.pauseControl().requestServiceWithdrawalPause());
185
+ }
186
+ /** Request an operator pause for one active run; rejects missing/terminal runs and performs no agent cancellation itself. */
187
+ requestRunPause(runId) {
188
+ return this.runOperations.mutate(runId, () => this.pauseControl().requestRunPause(runId));
189
+ }
190
+ /**
191
+ * Commit a quiescent active-run pause after the dispatcher has observed Git and usage.
192
+ * Rejects stale/non-pausing runs, invalid facts, or durable-write failures; no caller cancellation is accepted.
193
+ */
194
+ checkpointPaused(runId, git, usage) {
195
+ return this.runOperations.mutate(runId, () => this.pauseControl().checkpointPaused(runId, git, usage));
196
+ }
197
+ /** Persist an operator hold for queued work before resources are allocated; rejects non-queued runs. */
198
+ holdQueued(runId) {
199
+ return this.runOperations.mutate(runId, () => this.pauseControl().holdQueued(runId));
200
+ }
201
+ /** End one quiescent queued, paused, or blocked run without authorizing tracker or resource side effects. */
202
+ cancelRun(runId, requestId) {
203
+ return this.runOperations.mutate(runId, () => this.cancellationControl().cancel(runId, requestId));
204
+ }
205
+ /** Revalidate and return operator-held queued work to dispatch order; rejects changed eligibility or disabled admission. */
206
+ resumeRun(runId) {
207
+ return this.runOperations.mutate(runId, () => this.resumeControl().resumeRun(runId));
208
+ }
209
+ /**
210
+ * Revalidate retained issue, Session/worktree Git facts, scheduler and budget before active continuation.
211
+ * Rejects unauthorized/stale recovery and durable failures; it allocates no external resource and has no cancellation.
212
+ */
213
+ resumeActiveRun(runId, observedGit, authorization) {
214
+ return this.runOperations.mutate(runId, () => this.resumeControl().resumeActiveRun(runId, observedGit, authorization));
215
+ }
216
+ /** Persist a bounded explicit-recovery requirement for an allocated paused run; rejects incompatible lifecycle state. */
217
+ requireActiveRecovery(runId, reason) {
218
+ return this.runOperations.mutate(runId, () => this.resumeControl().requireActiveRecovery(runId, reason));
219
+ }
220
+ /** Atomically claim and reserve the next eligible queued run, or return undefined; rejects invalid settings/state. */
221
+ async claimNext(preparedAgent) {
222
+ const agent = consumePreparedAgentComposition(preparedAgent);
223
+ for (;;) {
224
+ const snapshot = this.snapshot();
225
+ if (snapshot.scheduler.mode !== 'enabled')
226
+ return undefined;
227
+ if (snapshot.budget.usageUncertain)
228
+ return await this.executionControl().claimNext(agent);
229
+ const queued = snapshot.runs.find((run) => run.state === 'queued');
230
+ if (queued === undefined)
231
+ return undefined;
232
+ const claimed = await this.runOperations.mutate(queued.runId, () => this.executionControl().claimNext(agent, queued.runId));
233
+ if (claimed !== undefined)
234
+ return claimed;
235
+ }
236
+ }
237
+ /** Persist verified worktree ownership facts for the claimed run; rejects stale identity, invalid Git facts or writes. */
238
+ recordWorktree(runId, git) {
239
+ return this.runOperations.mutate(runId, () => this.executionControl().recordWorktree(runId, git));
240
+ }
241
+ /** Atomically settle one implementing run and its usage reservation; rejects mismatched outcomes or stale state. */
242
+ settle(runId, outcome, usage) {
243
+ return this.runOperations.mutate(runId, () => this.executionControl().settle(runId, outcome, usage));
244
+ }
245
+ /** Claim one persisted publication intent for the sole Host publisher; no external side effect occurs. */
246
+ claimPublication(runId) {
247
+ return this.runOperations.mutate(runId, () => this.publicationControl().claim(runId));
248
+ }
249
+ /** Fail if a publication worker no longer owns the current durable intent; this check performs no I/O. */
250
+ assertPublicationOwner(runId, owner) {
251
+ this.publicationControl().assertOwner(runId, owner);
252
+ }
253
+ /** Persist a reconciled remote branch receipt while retaining publication ownership. */
254
+ recordPublicationBranch(runId, owner, remoteHead) {
255
+ return this.runOperations.mutate(runId, () => this.publicationControl().recordBranch(runId, owner, remoteHead));
256
+ }
257
+ /** Commit the confirmed ready PR and completed lifecycle event atomically. */
258
+ completePublication(runId, owner, receipt) {
259
+ return this.runOperations.mutate(runId, () => this.publicationControl().complete(runId, owner, receipt));
260
+ }
261
+ /** Persist a sanitized permanent, retryable, or ambiguous publication failure without changing verified work. */
262
+ failPublication(runId, owner, error, status, retryAfterMs) {
263
+ return this.runOperations.mutate(runId, () => this.publicationControl().fail(runId, owner, error, status, retryAfterMs));
264
+ }
265
+ claimDelivery(deliveryId) {
266
+ const runId = this.deliveryRunId(deliveryId);
267
+ return this.runOperations.mutate(runId, () => {
268
+ if (this.deliveryRunId(deliveryId) !== runId)
269
+ throw new Error(`delivery "${deliveryId}" changed runs`);
270
+ return this.deliveryControl().claim(deliveryId);
271
+ });
272
+ }
273
+ assertDeliveryOwner(runId, deliveryId, owner) {
274
+ this.deliveryControl().assertOwner(runId, deliveryId, owner);
275
+ }
276
+ succeedDelivery(runId, deliveryId, owner, receipt) {
277
+ return this.runOperations.mutate(runId, () => this.deliveryControl().succeed(runId, deliveryId, owner, receipt));
278
+ }
279
+ failDelivery(runId, deliveryId, owner, error, status, retryAfterMs) {
280
+ return this.runOperations.mutate(runId, () => this.deliveryControl().fail(runId, deliveryId, owner, error, status, retryAfterMs));
281
+ }
282
+ retryDelivery(deliveryId) {
283
+ const runId = this.deliveryRunId(deliveryId);
284
+ return this.runOperations.mutate(runId, () => {
285
+ if (this.deliveryRunId(deliveryId) !== runId)
286
+ throw new Error(`delivery "${deliveryId}" changed runs`);
287
+ return this.deliveryControl().retry(deliveryId);
288
+ });
289
+ }
290
+ /** Replace one settled failed tracker projection after its provider mapping has been corrected. */
291
+ repairTrackerProjection(deliveryId) {
292
+ const runId = this.deliveryRunId(deliveryId);
293
+ return this.runOperations.mutate(runId, () => {
294
+ if (this.deliveryRunId(deliveryId) !== runId)
295
+ throw new Error(`delivery "${deliveryId}" changed runs`);
296
+ return this.deliveryControl().repairProjection(deliveryId);
297
+ });
298
+ }
299
+ /**
300
+ * Read the selected tracker provider and atomically admit every currently eligible issue.
301
+ * When the scheduler is not enabled, returns an unchanged detached snapshot without reading the provider or retaining
302
+ * an ingress receipt. Provider, validation, capacity, or durable-write failures reject without advancing admission
303
+ * state. Provider withdrawal cancels its owned reads; a caller signal fences mutation after cancellation.
304
+ */
305
+ async reconcile(request) {
306
+ return reconcileAdmission(this.dependencies(), request);
307
+ }
308
+ /** Authenticate raw tracker ingress and keep that provider generation alive through its durable admission commit. */
309
+ async reconcileIngress(request, signal) {
310
+ return reconcileTrackerIngress(this.dependencies(), request, signal);
311
+ }
312
+ pauseControl() {
313
+ return new PauseControl(this.dependencies());
314
+ }
315
+ cancellationControl() {
316
+ return new CancellationControl(this.dependencies());
317
+ }
318
+ resumeControl() {
319
+ return new ResumeControl(this.dependencies());
320
+ }
321
+ executionControl() {
322
+ return new ExecutionControl(this.dependencies());
323
+ }
324
+ publicationControl() {
325
+ return new PublicationControl(this.dependencies());
326
+ }
327
+ deliveryControl() {
328
+ return new DeliveryControl(this.dependencies());
329
+ }
330
+ deliveryRunId(deliveryId) {
331
+ const run = this.currentState().runs.find((candidate) => candidate.deliveries.some((delivery) => delivery.id === deliveryId));
332
+ if (run === undefined)
333
+ throw new Error(`delivery "${deliveryId}" does not exist`);
334
+ return run.runId;
335
+ }
336
+ dependencies() {
337
+ const codeHost = this.ctx.get('codeHost');
338
+ return {
339
+ ...(codeHost === undefined ? {} : { codeHost }),
340
+ tracker: this.ctx.tracker,
341
+ settings: () => this.currentSettings(),
342
+ state: () => this.currentState(),
343
+ table: () => this.currentTable(),
344
+ };
345
+ }
346
+ currentSettings() {
347
+ return this.ctx.autopilotConfig.get();
348
+ }
349
+ currentTable() {
350
+ if (this.state === undefined)
351
+ throw new Error('admission service is not initialized');
352
+ return this.state;
353
+ }
354
+ currentState() {
355
+ const current = this.currentTable().get(STATE_KEY);
356
+ if (current === undefined)
357
+ throw new Error('admission state record is missing');
358
+ return current;
359
+ }
360
+ async markInterruptedRunsForRecovery() {
361
+ await this.currentTable().update(STATE_KEY, (current) => {
362
+ if (!current.runs.some((run) => ((run.state === 'implementing' || run.state === 'pausing') && run.execution.recovery === undefined) ||
363
+ (run.state === 'publishing' && run.publication?.status === 'in-flight') ||
364
+ run.deliveries.some((delivery) => delivery.status === 'in-flight'))) {
365
+ return current;
366
+ }
367
+ const interruptedAt = new Date().toISOString();
368
+ const next = structuredClone(current);
369
+ next.runs = next.runs.map((run) => {
370
+ const interruptedExecution = (run.state === 'implementing' || run.state === 'pausing') && run.execution.recovery === undefined
371
+ ? {
372
+ ...run,
373
+ execution: {
374
+ ...run.execution,
375
+ recovery: { kind: 'required', reason: 'host-restart', interruptedAt },
376
+ },
377
+ }
378
+ : run;
379
+ return {
380
+ ...interruptedExecution,
381
+ ...(interruptedExecution.state === 'publishing' && interruptedExecution.publication?.status === 'in-flight'
382
+ ? {
383
+ publication: {
384
+ ...interruptedExecution.publication,
385
+ status: interruptedExecution.publication.attempts >= MAX_AUTOMATIC_EXTERNAL_ATTEMPTS
386
+ ? 'exhausted'
387
+ : 'uncertain',
388
+ owner: undefined,
389
+ exhaustedFrom: interruptedExecution.publication.attempts >= MAX_AUTOMATIC_EXTERNAL_ATTEMPTS
390
+ ? 'uncertain'
391
+ : undefined,
392
+ lastError: 'Host restarted while publication acknowledgement was unresolved.',
393
+ },
394
+ }
395
+ : {}),
396
+ deliveries: interruptedExecution.deliveries.map((delivery) => delivery.status === 'in-flight'
397
+ ? {
398
+ ...delivery,
399
+ status: delivery.attempts >= MAX_AUTOMATIC_EXTERNAL_ATTEMPTS
400
+ ? 'exhausted'
401
+ : 'uncertain',
402
+ owner: undefined,
403
+ exhaustedFrom: delivery.attempts >= MAX_AUTOMATIC_EXTERNAL_ATTEMPTS ? 'uncertain' : undefined,
404
+ lastError: 'Host restarted while delivery acknowledgement was unresolved.',
405
+ }
406
+ : delivery),
407
+ };
408
+ });
409
+ next.revision += 1;
410
+ return stateSchema.parse(next);
411
+ });
412
+ }
413
+ }
414
+ export default Admission;
415
+ //# sourceMappingURL=service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/admission/service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { AdmissionSnapshot } from './model.js';
2
+ import { type AdmissionState, type StoredAdmissionState } from './state.js';
3
+ export declare const admissionDomainSpec: {
4
+ name: string;
5
+ version: number;
6
+ tables: {
7
+ state: import("@deepseek-ai/dsh-storage-domain").DomainTableSpec<"primary", StoredAdmissionState>;
8
+ };
9
+ };
10
+ export declare function initialState(): AdmissionState;
11
+ export declare function snapshotOf(state: AdmissionState): AdmissionSnapshot;
@@ -0,0 +1,33 @@
1
+ import { defineDomain, domainTable } from '@deepseek-ai/dsh-storage-domain';
2
+ import { compareSnapshotRuns } from './policy.js';
3
+ import { storedAdmissionStateSchema } from './state.js';
4
+ export const admissionDomainSpec = defineDomain({
5
+ name: 'autopilot_admission',
6
+ // State v7 is an in-place record migration; the DSH domain layout remains compatible with its v6 stamp.
7
+ version: 6,
8
+ tables: {
9
+ state: domainTable(storedAdmissionStateSchema),
10
+ },
11
+ });
12
+ export function initialState() {
13
+ return {
14
+ schemaVersion: 7,
15
+ revision: 0,
16
+ nextSequence: 1,
17
+ runs: [],
18
+ acceptedIngress: [],
19
+ operatorCommands: [],
20
+ scheduler: { mode: 'enabled', changedAt: new Date().toISOString() },
21
+ budget: { reservedTokens: 0, settledTokens: 0, usageUncertain: false },
22
+ };
23
+ }
24
+ export function snapshotOf(state) {
25
+ return {
26
+ revision: state.revision,
27
+ runs: structuredClone(state.runs).sort(compareSnapshotRuns),
28
+ acceptedIngress: [...state.acceptedIngress],
29
+ scheduler: structuredClone(state.scheduler),
30
+ budget: structuredClone(state.budget),
31
+ };
32
+ }
33
+ //# sourceMappingURL=state-domain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state-domain.js","sourceRoot":"","sources":["../../src/admission/state-domain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAA;AAG3E,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AACjD,OAAO,EAAkD,0BAA0B,EAAE,MAAM,YAAY,CAAA;AAEvG,MAAM,CAAC,MAAM,mBAAmB,GAAG,YAAY,CAAC;IAC9C,IAAI,EAAE,qBAAqB;IAC3B,wGAAwG;IACxG,OAAO,EAAE,CAAC;IACV,MAAM,EAAE;QACN,KAAK,EAAE,WAAW,CAAyC,0BAA0B,CAAC;KACvF;CACF,CAAC,CAAA;AAEF,MAAM,UAAU,YAAY;IAC1B,OAAO;QACL,aAAa,EAAE,CAAC;QAChB,QAAQ,EAAE,CAAC;QACX,YAAY,EAAE,CAAC;QACf,IAAI,EAAE,EAAE;QACR,eAAe,EAAE,EAAE;QACnB,gBAAgB,EAAE,EAAE;QACpB,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE;QACnE,MAAM,EAAE,EAAE,cAAc,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,cAAc,EAAE,KAAK,EAAE;KACvE,CAAA;AACH,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAqB;IAC9C,OAAO;QACL,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,IAAI,EAAE,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC;QAC3D,eAAe,EAAE,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC;QAC3C,SAAS,EAAE,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC;QAC3C,MAAM,EAAE,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC;KACtC,CAAA;AACH,CAAC"}
@@ -0,0 +1,19 @@
1
+ import type { RefinementCtx } from 'zod';
2
+ import type { AutopilotRun, SchedulerMode } from './model.js';
3
+ export interface StateIntegrityInput {
4
+ readonly nextSequence: number;
5
+ readonly runs: readonly AutopilotRun[];
6
+ readonly acceptedIngress: readonly string[];
7
+ readonly operatorCommands: readonly {
8
+ readonly requestId: string;
9
+ }[];
10
+ readonly scheduler: {
11
+ readonly mode: SchedulerMode;
12
+ };
13
+ readonly budget: {
14
+ readonly reservedTokens: number;
15
+ readonly settledTokens: number;
16
+ readonly usageUncertain: boolean;
17
+ };
18
+ }
19
+ export declare function validateStateIntegrity(value: StateIntegrityInput, context: RefinementCtx): void;
@@ -0,0 +1,102 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { isPausedActiveRun, runId, runIdentityFromRun } from './policy.js';
3
+ export function validateStateIntegrity(value, context) {
4
+ const identities = value.runs.map(runIdentityFromRun);
5
+ const sequences = value.runs.map((run) => run.queueSequence);
6
+ const issue = (message) => context.addIssue({ code: 'custom', message });
7
+ if (new Set(value.runs.map((run) => run.runId)).size !== value.runs.length)
8
+ issue('run ids must be unique');
9
+ if (new Set(sequences).size !== sequences.length)
10
+ issue('queue sequences must be unique');
11
+ if (new Set(value.acceptedIngress).size !== value.acceptedIngress.length)
12
+ issue('accepted ingress ids must be unique');
13
+ if (new Set(value.operatorCommands.map(({ requestId }) => requestId)).size !== value.operatorCommands.length) {
14
+ issue('operator command request ids must be unique');
15
+ }
16
+ if (value.runs.some((run, index) => run.runId !== runId(identities[index] ?? ''))) {
17
+ issue('run ids must match their durable identities');
18
+ }
19
+ if (value.runs.some((run) => createHash('sha256').update(run.brief.content).digest('hex') !== run.brief.digest)) {
20
+ issue('Brief digests must match retained content');
21
+ }
22
+ if (value.scheduler.mode === 'disabled' && value.runs.some((run) => run.state === 'implementing')) {
23
+ issue('disabled scheduler cannot retain an implementing run');
24
+ }
25
+ if (sequences.length > 0 && value.nextSequence <= Math.max(...sequences)) {
26
+ issue('next queue sequence must follow every retained run');
27
+ }
28
+ const runReservations = value.runs.reduce((total, run) => total + ('budget' in run ? run.budget.reservedTokens : 0), 0);
29
+ if (runReservations !== value.budget.reservedTokens) {
30
+ issue('deployment reservation must equal active run reservations');
31
+ }
32
+ const runSettlements = value.runs.reduce((total, run) => total + ('budget' in run ? run.budget.settledTokens : 0), 0);
33
+ if (runSettlements !== value.budget.settledTokens)
34
+ issue('deployment settlement must equal retained run settlements');
35
+ const uncertain = value.runs.some((run) => 'budget' in run && run.budget.usageUncertain);
36
+ if (uncertain !== value.budget.usageUncertain)
37
+ issue('deployment usage uncertainty must match retained run uncertainty');
38
+ for (const run of value.runs) {
39
+ if ('budget' in run && run.budget.usageUncertain !== (run.budget.usageUncertaintyReason !== undefined)) {
40
+ issue('run usage uncertainty must retain exactly one actionable reason');
41
+ }
42
+ const activePause = run.state === 'pausing' || isPausedActiveRun(run)
43
+ ? run.pause
44
+ : isCancelledPausedActiveRun(run)
45
+ ? run.pause
46
+ : undefined;
47
+ if (activePause !== undefined && activePause.operatorHold !== (activePause.reason === 'operator')) {
48
+ issue('active operator pause reason and hold must agree');
49
+ }
50
+ if ((run.state === 'implementing' || run.state === 'pausing') && run.budget.usageUncertain) {
51
+ issue('active runs cannot carry uncertain usage');
52
+ }
53
+ if ('budget' in run && run.budget.settledTokens + run.budget.reservedTokens > run.budget.capTokens) {
54
+ issue('run settled usage and reservation must stay within its retained cap');
55
+ }
56
+ if ('budget' in run && run.budget.reservedTokens > run.budget.allowanceTokens) {
57
+ issue('run reservation must stay within its immutable attempt allowance');
58
+ }
59
+ if (run.state === 'publishing' && run.outcome.kind !== 'verified')
60
+ issue('publishing runs require a verified outcome');
61
+ if ((run.state === 'publishing' || run.state === 'completed') && run.publication === undefined) {
62
+ issue('publishing and completed runs require a publication intent');
63
+ }
64
+ if (run.state === 'completed' &&
65
+ (run.outcome.kind !== 'verified' ||
66
+ run.publication?.status !== 'succeeded' ||
67
+ run.publication.receipt === undefined)) {
68
+ issue('completed runs require verified work and a successful publication receipt');
69
+ }
70
+ const publication = 'publication' in run ? run.publication : undefined;
71
+ if (publication?.status === 'succeeded' && publication.receipt === undefined) {
72
+ issue('successful publication requires a receipt');
73
+ }
74
+ if ((publication?.status === 'in-flight') !== (publication?.owner !== undefined)) {
75
+ issue('in-flight publication must have exactly one owner');
76
+ }
77
+ if ((publication?.status === 'exhausted') !== (publication?.exhaustedFrom !== undefined)) {
78
+ issue('exhausted publication must retain exactly one failure classification');
79
+ }
80
+ const deliveryIds = run.deliveries.map((delivery) => delivery.id);
81
+ if (new Set(deliveryIds).size !== deliveryIds.length)
82
+ issue('delivery ids must be unique per run');
83
+ for (const delivery of run.deliveries) {
84
+ if ((delivery.status === 'in-flight') !== (delivery.owner !== undefined)) {
85
+ issue('in-flight delivery must have exactly one owner');
86
+ }
87
+ if (delivery.status === 'succeeded' && (delivery.receiptId === undefined || delivery.receivedAt === undefined)) {
88
+ issue('successful delivery requires a receipt');
89
+ }
90
+ if ((delivery.status === 'exhausted') !== (delivery.exhaustedFrom !== undefined)) {
91
+ issue('exhausted delivery must retain exactly one failure classification');
92
+ }
93
+ }
94
+ if ((run.state === 'blocked' || run.state === 'failed') && run.outcome.kind !== run.state) {
95
+ issue('terminal lifecycle state must match its structured outcome');
96
+ }
97
+ }
98
+ }
99
+ function isCancelledPausedActiveRun(run) {
100
+ return run.state === 'cancelled' && run.cancellation.from === 'paused-active';
101
+ }
102
+ //# sourceMappingURL=state-integrity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state-integrity.js","sourceRoot":"","sources":["../../src/admission/state-integrity.ts"],"names":[],"mappings":"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"}