@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,95 @@
1
+ import { realpath } from 'node:fs/promises';
2
+ const GIT_OUTPUT_LIMIT = 1024 * 1024;
3
+ const GIT_GRACE_MS = 5_000;
4
+ const GIT_TIMEOUT_MS = 30_000;
5
+ export async function inspectRetainedWorktree(subprocess, run) {
6
+ const retainedGit = run.execution.git;
7
+ if (retainedGit === undefined)
8
+ throw new Error('the retained run has no Git checkpoint');
9
+ const observedRoot = await gitCommand(subprocess, run.execution.worktreePath, ['rev-parse', '--show-toplevel']);
10
+ const observedBranch = await gitCommand(subprocess, run.execution.worktreePath, ['rev-parse', '--abbrev-ref', 'HEAD']);
11
+ const observedCommonDirectory = await gitCommand(subprocess, run.execution.worktreePath, [
12
+ 'rev-parse',
13
+ '--path-format=absolute',
14
+ '--git-common-dir',
15
+ ]);
16
+ const targetCommonDirectory = await gitCommand(subprocess, run.execution.targetRepository, [
17
+ 'rev-parse',
18
+ '--path-format=absolute',
19
+ '--git-common-dir',
20
+ ]);
21
+ const [canonicalRoot, canonicalWorktree, canonicalCommonDirectory, canonicalTargetCommonDirectory] = await Promise.all([
22
+ realpath(observedRoot.trim()),
23
+ realpath(run.execution.worktreePath),
24
+ realpath(observedCommonDirectory.trim()),
25
+ realpath(targetCommonDirectory.trim()),
26
+ ]);
27
+ if (canonicalRoot !== canonicalWorktree ||
28
+ canonicalCommonDirectory !== canonicalTargetCommonDirectory ||
29
+ observedBranch.trim() !== run.execution.branch) {
30
+ throw new Error('the retained path is not the recorded managed Git worktree and branch');
31
+ }
32
+ return await inspectGit(subprocess, run.execution.worktreePath, retainedGit.baseHead);
33
+ }
34
+ export async function inspectGit(subprocess, worktreePath, baseHead) {
35
+ const head = (await gitCommand(subprocess, worktreePath, ['rev-parse', 'HEAD'])).trim();
36
+ const status = await gitCommand(subprocess, worktreePath, ['status', '--porcelain']);
37
+ return { baseHead, head, status };
38
+ }
39
+ export async function gitCommand(subprocess, cwd, args, callerSignal) {
40
+ const executable = await subprocess.resolveExecutable('git');
41
+ callerSignal?.throwIfAborted();
42
+ const timeout = AbortSignal.timeout(GIT_TIMEOUT_MS);
43
+ const signal = callerSignal === undefined ? timeout : AbortSignal.any([timeout, callerSignal]);
44
+ const handle = subprocess.spawn({
45
+ argv: [executable, ...args],
46
+ cwd,
47
+ stdio: {
48
+ stdin: 'ignore',
49
+ stdout: { maxBytes: GIT_OUTPUT_LIMIT },
50
+ stderr: { maxBytes: GIT_OUTPUT_LIMIT },
51
+ },
52
+ graceMs: GIT_GRACE_MS,
53
+ signal,
54
+ });
55
+ let outcome;
56
+ let commandError;
57
+ try {
58
+ outcome = await handle.done;
59
+ }
60
+ catch (error) {
61
+ commandError = error;
62
+ }
63
+ let quiescenceError;
64
+ try {
65
+ if (!(await handle.waitForExit(AbortSignal.timeout(GIT_GRACE_MS * 2)))) {
66
+ quiescenceError = new Error(`git ${args[0] ?? ''} left a live managed process`);
67
+ }
68
+ }
69
+ catch (error) {
70
+ quiescenceError = error;
71
+ }
72
+ if (commandError !== undefined) {
73
+ if (quiescenceError !== undefined) {
74
+ throw new AggregateError([commandError, quiescenceError], `git ${args[0] ?? ''} failed and did not quiesce`);
75
+ }
76
+ throw commandError;
77
+ }
78
+ if (quiescenceError !== undefined)
79
+ throw quiescenceError;
80
+ if (outcome === undefined)
81
+ throw new Error(`git ${args[0] ?? ''} produced no process outcome`);
82
+ const stdout = handle.collected.stdout?.readFrom(0);
83
+ const stderr = handle.collected.stderr?.readFrom(0);
84
+ if (stdout?.lossy || stderr?.lossy)
85
+ throw new Error(`git ${args[0] ?? ''} output exceeded its safety bound`);
86
+ callerSignal?.throwIfAborted();
87
+ if (timeout.aborted)
88
+ throw new Error(`git ${args.join(' ')} timed out`);
89
+ if (outcome.exitCode !== 0) {
90
+ const diagnostic = stderr?.text.trim() || stdout?.text.trim() || `exit ${String(outcome.exitCode)}`;
91
+ throw new Error(`git ${args.join(' ')} failed: ${diagnostic}`);
92
+ }
93
+ return stdout?.text ?? '';
94
+ }
95
+ //# sourceMappingURL=git.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/dispatch/git.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export type { DispatchResult } from './contract.js';
2
+ export { Dispatch, default } from './service.js';
@@ -0,0 +1,2 @@
1
+ export { Dispatch, default } from './service.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/dispatch/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA"}
@@ -0,0 +1,11 @@
1
+ import type { ExecutionOutcome, GitExecutionSnapshot, ImplementingRun, PausingRun } from '../admission.js';
2
+ export interface ReportRecorder {
3
+ outcome?: ExecutionOutcome;
4
+ violation?: string;
5
+ }
6
+ export declare function createReportTool(recorder: ReportRecorder): import("@deepseek-ai/dsh-tools").ToolDefinition;
7
+ export declare function validatedOutcome(report: ReportRecorder, git: GitExecutionSnapshot): ExecutionOutcome;
8
+ export declare function executionPrompt(run: ImplementingRun | PausingRun): string;
9
+ export declare function continuationPrompt(run: ImplementingRun): string;
10
+ export declare function errorMessage(error: unknown): string;
11
+ export declare function truncateUtf8(value: string): string;
@@ -0,0 +1,141 @@
1
+ import { defineTool } from '@deepseek-ai/dsh-tools';
2
+ const MAX_REPORT_TEXT_BYTES = 4 * 1024;
3
+ const MAX_REPORT_EVIDENCE = 100;
4
+ const textEncoder = new TextEncoder();
5
+ export function createReportTool(recorder) {
6
+ return defineTool({
7
+ name: 'autopilot_report',
8
+ description: 'Submit the single structured terminal report for this Autopilot run.',
9
+ parameters: {
10
+ kind: { type: 'string', enum: ['verified', 'blocked', 'failed'], required: true },
11
+ summary: { type: 'string', required: true },
12
+ evidence: { type: 'array', items: { type: 'string' }, required: true },
13
+ gitHead: { type: 'string' },
14
+ gitStatus: { type: 'string' },
15
+ verification: {
16
+ type: 'array',
17
+ items: {
18
+ type: 'object',
19
+ additionalProperties: false,
20
+ properties: {
21
+ command: { type: 'string', required: true },
22
+ status: { type: 'string', enum: ['passed', 'failed', 'skipped'], required: true },
23
+ summary: { type: 'string', required: true },
24
+ reason: { type: 'string' },
25
+ },
26
+ },
27
+ },
28
+ pullRequestTitle: { type: 'string' },
29
+ pullRequestBody: { type: 'string' },
30
+ },
31
+ output: {
32
+ schema: { type: 'string', const: 'accepted' },
33
+ render: () => [{ type: 'text', text: 'Autopilot accepted the terminal report.' }],
34
+ },
35
+ async execute(args) {
36
+ if (recorder.outcome !== undefined) {
37
+ recorder.violation = 'the model submitted more than one terminal report';
38
+ throw new Error(recorder.violation);
39
+ }
40
+ if (args.summary.length === 0 || textEncoder.encode(args.summary).byteLength > MAX_REPORT_TEXT_BYTES) {
41
+ throw new TypeError('report summary must be non-empty and within its durable limit');
42
+ }
43
+ if (args.evidence.length > MAX_REPORT_EVIDENCE ||
44
+ args.evidence.some((entry) => entry.length === 0 || textEncoder.encode(entry).byteLength > MAX_REPORT_TEXT_BYTES)) {
45
+ throw new TypeError('report evidence must contain only bounded non-empty entries');
46
+ }
47
+ if (args.kind === 'verified') {
48
+ if (args.gitHead === undefined ||
49
+ !/^[a-f0-9]{40,64}$/.test(args.gitHead) ||
50
+ args.gitStatus === undefined ||
51
+ args.verification === undefined ||
52
+ args.verification.length === 0 ||
53
+ args.pullRequestTitle === undefined ||
54
+ args.pullRequestBody === undefined) {
55
+ throw new TypeError('verified reports require exact Git facts, verification results, and a PR payload');
56
+ }
57
+ if (args.verification.length > MAX_REPORT_EVIDENCE ||
58
+ args.verification.some((result) => result.command.length === 0 ||
59
+ result.summary.length === 0 ||
60
+ result.status === 'failed' ||
61
+ (result.status === 'skipped') !== (result.reason !== undefined) ||
62
+ [result.command, result.summary, result.reason]
63
+ .filter((value) => value !== undefined)
64
+ .some((value) => textEncoder.encode(value).byteLength > MAX_REPORT_TEXT_BYTES)) ||
65
+ args.pullRequestTitle.length === 0 ||
66
+ textEncoder.encode(args.pullRequestTitle).byteLength > MAX_REPORT_TEXT_BYTES ||
67
+ args.pullRequestBody.length === 0 ||
68
+ textEncoder.encode(args.pullRequestBody).byteLength > 32 * 1024) {
69
+ throw new TypeError('verified report evidence or PR payload is invalid');
70
+ }
71
+ recorder.outcome = {
72
+ kind: args.kind,
73
+ summary: args.summary,
74
+ evidence: [...args.evidence],
75
+ reportedGit: { head: args.gitHead, status: args.gitStatus },
76
+ verification: args.verification.map((result) => ({ ...result })),
77
+ suggestedPullRequest: { title: args.pullRequestTitle, body: args.pullRequestBody },
78
+ };
79
+ }
80
+ else {
81
+ if (args.gitHead !== undefined ||
82
+ args.gitStatus !== undefined ||
83
+ args.verification !== undefined ||
84
+ args.pullRequestTitle !== undefined ||
85
+ args.pullRequestBody !== undefined) {
86
+ throw new TypeError('blocked and failed reports must not claim verified publication facts');
87
+ }
88
+ recorder.outcome = { kind: args.kind, summary: args.summary, evidence: [...args.evidence] };
89
+ }
90
+ return 'accepted';
91
+ },
92
+ });
93
+ }
94
+ export function validatedOutcome(report, git) {
95
+ if (report.violation !== undefined) {
96
+ return { kind: 'failed', summary: 'The Agent violated the report contract.', evidence: [report.violation] };
97
+ }
98
+ if (report.outcome === undefined) {
99
+ return { kind: 'failed', summary: 'The Agent did not submit a terminal report.', evidence: [] };
100
+ }
101
+ if (report.outcome.kind === 'verified' &&
102
+ (report.outcome.reportedGit.head !== git.head || report.outcome.reportedGit.status !== git.status)) {
103
+ return {
104
+ kind: 'failed',
105
+ summary: 'The Agent reported Git facts that do not match the managed worktree.',
106
+ evidence: [truncateUtf8(`head=${git.head}\nstatus=${git.status}`)],
107
+ };
108
+ }
109
+ return report.outcome;
110
+ }
111
+ export function executionPrompt(run) {
112
+ const git = run.execution.git;
113
+ if (git === undefined)
114
+ throw new Error('the managed worktree has no durable Git facts');
115
+ return `Execute the approved Agent Brief below in the managed worktree. Use autopilot_report exactly once with a verified, blocked, or failed outcome before finishing. A verified report must repeat the exact final Git head and porcelain status, list each verification command/result or explicit skip reason, and supply a ready-for-review pull-request title and body.\n\nManaged Git head: ${git.head}\nManaged Git status: ${JSON.stringify(git.status)}\n\n${run.brief.content}`;
116
+ }
117
+ export function continuationPrompt(run) {
118
+ const git = run.execution.git;
119
+ if (git === undefined)
120
+ throw new Error('the managed worktree has no durable Git facts');
121
+ return `Continue the approved Agent Brief in this same persisted Session and managed worktree. Reconcile any interrupted operation from the prior pause before repeating a side effect. Use autopilot_report exactly once with a verified, blocked, or failed outcome before finishing. A verified report must repeat the exact final Git head and porcelain status, list each verification command/result or explicit skip reason, and supply a ready-for-review pull-request title and body.\n\nManaged Git head: ${git.head}\nManaged Git status: ${JSON.stringify(git.status)}\n\n${run.brief.content}`;
122
+ }
123
+ export function errorMessage(error) {
124
+ const message = error instanceof Error ? error.message : String(error);
125
+ return message || 'unknown Agent execution failure';
126
+ }
127
+ export function truncateUtf8(value) {
128
+ if (textEncoder.encode(value).byteLength <= MAX_REPORT_TEXT_BYTES)
129
+ return value;
130
+ let low = 0;
131
+ let high = value.length;
132
+ while (low < high) {
133
+ const middle = Math.ceil((low + high) / 2);
134
+ if (textEncoder.encode(value.slice(0, middle)).byteLength <= MAX_REPORT_TEXT_BYTES)
135
+ low = middle;
136
+ else
137
+ high = middle - 1;
138
+ }
139
+ return value.slice(0, low);
140
+ }
141
+ //# sourceMappingURL=report.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/dispatch/report.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { Context } from '@deepseek-ai/cordis';
2
+ import type { AgentHandle } from '@deepseek-ai/dsh-agent';
3
+ import type { Workspace } from '@deepseek-ai/dsh-workspace';
4
+ import type { ActiveResumeAuthorization, ImplementingRun, RunId } from '../admission.js';
5
+ import { type ActiveExecution } from './execution-state.js';
6
+ import { type ReportRecorder } from './report.js';
7
+ import { type UsageRecorder } from './usage.js';
8
+ export interface PreparedResume {
9
+ readonly run: ImplementingRun;
10
+ readonly active: ActiveExecution;
11
+ readonly handle: AgentHandle;
12
+ readonly usage: UsageRecorder;
13
+ readonly report: ReportRecorder;
14
+ readonly workspace: Workspace;
15
+ readonly baseHead: string;
16
+ }
17
+ export declare function preparePausedResume(ctx: Context, activeExecutions: Map<RunId, ActiveExecution>, runId: RunId, authorization: ActiveResumeAuthorization): Promise<PreparedResume>;
@@ -0,0 +1,89 @@
1
+ import { AgentCompositionUnavailableError, applyAgentPermission, assertAgentCompositionAvailable, modelSelection, mountAgentComposition, } from './composition.js';
2
+ import { activeExecution, currentRun, isPausedActive, sameGit } from './execution-state.js';
3
+ import { inspectRetainedWorktree } from './git.js';
4
+ import { createReportTool, errorMessage } from './report.js';
5
+ import { registerUsageRecorder } from './usage.js';
6
+ export async function preparePausedResume(ctx, activeExecutions, runId, authorization) {
7
+ const snapshot = ctx.admission.snapshot();
8
+ if (snapshot.scheduler.mode !== 'enabled')
9
+ throw new Error('scheduler must be enabled to resume a run');
10
+ if (snapshot.budget.usageUncertain) {
11
+ throw new Error('deployment token usage is uncertain; reconcile it before resuming');
12
+ }
13
+ const paused = currentRun(snapshot, runId);
14
+ if (!isPausedActive(paused))
15
+ throw new Error(`run "${runId}" is not an allocated paused run`);
16
+ if (paused.execution.recovery !== undefined) {
17
+ throw new Error(`run "${runId}" requires explicit ${paused.execution.recovery.reason} recovery`);
18
+ }
19
+ const remainingTokens = paused.budget.capTokens - paused.budget.settledTokens;
20
+ if (remainingTokens <= 0)
21
+ throw new Error(`run "${runId}" has no retained token capacity`);
22
+ const continuationAllowance = Math.min(paused.budget.allowanceTokens, remainingTokens);
23
+ const composition = paused.execution.agent;
24
+ if (composition === undefined) {
25
+ return await rejectResumeForRecovery(ctx, paused, 'composition-unavailable', `run "${runId}" predates native DSH composition and cannot be resumed safely`);
26
+ }
27
+ try {
28
+ await assertAgentCompositionAvailable(ctx, composition);
29
+ }
30
+ catch (error) {
31
+ if (!(error instanceof AgentCompositionUnavailableError))
32
+ throw error;
33
+ return await rejectResumeForRecovery(ctx, paused, 'composition-unavailable', `run "${runId}" retained DSH composition changed or is unavailable and requires explicit recovery: ${errorMessage(error.cause ?? error)}`);
34
+ }
35
+ const persisted = await ctx.sessionPersistence.stat(paused.execution.sessionId);
36
+ if (persisted?.header.id !== paused.execution.sessionId || persisted.header.cwd !== paused.execution.worktreePath) {
37
+ return await rejectResumeForRecovery(ctx, paused, 'session-unavailable', `run "${runId}" retained Session is unavailable or incompatible and requires explicit recovery`);
38
+ }
39
+ const retainedGit = paused.execution.git;
40
+ if (retainedGit === undefined)
41
+ throw new Error(`run "${runId}" has no retained Git checkpoint`);
42
+ const workspace = await ctx.workspaceRegistry.resolveByPath(paused.execution.worktreePath);
43
+ if (workspace === undefined || !workspace.sessionIds.includes(paused.execution.sessionId)) {
44
+ return await rejectResumeForRecovery(ctx, paused, 'workspace-unavailable', `run "${runId}" retained workspace ownership is unavailable and requires explicit recovery`);
45
+ }
46
+ let observedGit;
47
+ try {
48
+ observedGit = await inspectRetainedWorktree(ctx.subprocess, paused);
49
+ }
50
+ catch (error) {
51
+ return await rejectResumeForRecovery(ctx, paused, 'worktree-mismatch', `run "${runId}" retained worktree is unavailable or incompatible and requires explicit recovery: ${errorMessage(error)}`);
52
+ }
53
+ if (!sameGit(retainedGit, observedGit)) {
54
+ return await rejectResumeForRecovery(ctx, paused, 'worktree-mismatch', `run "${runId}" retained Git state changed and requires explicit recovery`);
55
+ }
56
+ const usage = { usage: [], requests: 0 };
57
+ const report = {};
58
+ const selected = modelSelection(composition);
59
+ const handle = await ctx.agents.resume({
60
+ resumeSessionId: paused.execution.sessionId,
61
+ agentOptions: {
62
+ ...selected,
63
+ maxTokens: continuationAllowance,
64
+ },
65
+ setup: async (agentCtx) => {
66
+ await mountAgentComposition(ctx, agentCtx, composition);
67
+ registerUsageRecorder(agentCtx, paused, composition, usage);
68
+ agentCtx.tools.register(createReportTool(report));
69
+ },
70
+ });
71
+ let resumed;
72
+ try {
73
+ applyAgentPermission(ctx, handle.agent.session, composition);
74
+ resumed = await ctx.admission.resumeActiveRun(runId, observedGit, authorization);
75
+ }
76
+ catch (error) {
77
+ await handle.dispose();
78
+ throw error;
79
+ }
80
+ const active = activeExecution();
81
+ active.handle = handle;
82
+ activeExecutions.set(runId, active);
83
+ return { run: resumed, active, handle, usage, report, workspace, baseHead: retainedGit.baseHead };
84
+ }
85
+ async function rejectResumeForRecovery(ctx, paused, reason, message) {
86
+ await ctx.admission.requireActiveRecovery(paused.runId, reason);
87
+ throw new Error(message);
88
+ }
89
+ //# sourceMappingURL=resume.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resume.js","sourceRoot":"","sources":["../../src/dispatch/resume.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ import type { Context } from '@deepseek-ai/cordis';
2
+ import { Service } from '@deepseek-ai/cordis';
3
+ import type { AdmissionSnapshot, PausedActiveRun, RunId } from '../admission.js';
4
+ import type { DispatchResult } from './contract.js';
5
+ declare module '@deepseek-ai/cordis' {
6
+ interface Context {
7
+ dispatch: Dispatch;
8
+ }
9
+ }
10
+ /** Durable dispatcher composed from the Host's configured DSH Agent, preset, model, Session, and workspace services. */
11
+ export declare class Dispatch extends Service {
12
+ static readonly inject: string[];
13
+ private readonly active;
14
+ private readonly starts;
15
+ private accepting;
16
+ constructor(ctx: Context);
17
+ [Service.init](): AsyncGenerator<() => Promise<void>, void, void>;
18
+ /**
19
+ * Claim and execute the next queued run through the Host's configured DSH preset and model, or return undefined when
20
+ * the queue is empty. Requires the injected DSH execution services, valid execution Settings, and Git.
21
+ * The method reserves durable budget before Git/model effects, owns the root Agent to quiescence, flushes its Session,
22
+ * records final Git facts, and settles a structured terminal outcome. Setup/model/Git failures become a failed run
23
+ * when the aggregate remains writable; an aggregate write failure rejects for explicit recovery. The operation
24
+ * accepts no caller cancellation signal.
25
+ */
26
+ dispatchNext(): Promise<DispatchResult | undefined>;
27
+ private prepareNext;
28
+ /**
29
+ * Atomically disable scheduler admission/dequeue, request native cancellation for every live root, and resolve only
30
+ * after each owned execution has reached a durable pause checkpoint. Cancellation-resistant work remains `pausing`
31
+ * and keeps its reservation while this operation waits. Recovered runs without a live owner remain explicit recovery.
32
+ */
33
+ disableScheduler(): Promise<AdmissionSnapshot>;
34
+ /**
35
+ * Request an operator hold for one live allocated run, cancel its native root, and resolve only after its Session and
36
+ * Autopilot checkpoint are durable. Queued work must use `Admission.holdQueued`; absent live ownership rejects.
37
+ */
38
+ stopRun(runId: RunId): Promise<PausedActiveRun>;
39
+ /**
40
+ * Resume one allocated pause through DSH's persisted Session path after proving the retained Session and Git worktree
41
+ * are still usable. The same run, Session, worktree, and branch are retained; no fallback identity is created. Tracker,
42
+ * scheduler, routing, Git, and budget gates are revalidated before the resumed Agent receives continuation input.
43
+ * Definite retained-resource failures persist an explicit recovery requirement; other preflight failures preserve the
44
+ * pause. The operation owns the resumed root through disposal. Caller cancellation becomes a durable operator pause
45
+ * before the resumed root is cancelled and drained.
46
+ */
47
+ resumeRun(runId: RunId, signal?: AbortSignal): Promise<DispatchResult>;
48
+ private prepareResume;
49
+ private executePreparedResume;
50
+ private pauseOwnedExecution;
51
+ private assertAccepting;
52
+ private hasRunningCapacity;
53
+ private assertExecutionStartReady;
54
+ private beginStart;
55
+ }
56
+ export default Dispatch;