looply-cli 0.0.0-stage → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (793) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +137 -3
  3. package/dist/.src-hash +1 -0
  4. package/dist/acceptance-observe.d.ts +108 -0
  5. package/dist/acceptance-observe.d.ts.map +1 -0
  6. package/dist/acceptance-observe.js +152 -0
  7. package/dist/acceptance-observe.js.map +1 -0
  8. package/dist/agent-cmd.d.ts +131 -0
  9. package/dist/agent-cmd.d.ts.map +1 -0
  10. package/dist/agent-cmd.js +154 -0
  11. package/dist/agent-cmd.js.map +1 -0
  12. package/dist/agent-contained.d.ts +114 -0
  13. package/dist/agent-contained.d.ts.map +1 -0
  14. package/dist/agent-contained.js +292 -0
  15. package/dist/agent-contained.js.map +1 -0
  16. package/dist/agent-driver.d.ts +130 -0
  17. package/dist/agent-driver.d.ts.map +1 -0
  18. package/dist/agent-driver.js +170 -0
  19. package/dist/agent-driver.js.map +1 -0
  20. package/dist/agent-envelope.d.ts +94 -0
  21. package/dist/agent-envelope.d.ts.map +1 -0
  22. package/dist/agent-envelope.js +214 -0
  23. package/dist/agent-envelope.js.map +1 -0
  24. package/dist/agent-exec.d.ts +182 -0
  25. package/dist/agent-exec.d.ts.map +1 -0
  26. package/dist/agent-exec.js +125 -0
  27. package/dist/agent-exec.js.map +1 -0
  28. package/dist/agent-runtime.d.ts +23 -0
  29. package/dist/agent-runtime.d.ts.map +1 -0
  30. package/dist/agent-runtime.js +143 -0
  31. package/dist/agent-runtime.js.map +1 -0
  32. package/dist/approval-gate-read.d.ts +66 -0
  33. package/dist/approval-gate-read.d.ts.map +1 -0
  34. package/dist/approval-gate-read.js +138 -0
  35. package/dist/approval-gate-read.js.map +1 -0
  36. package/dist/approval-resolution.d.ts +87 -0
  37. package/dist/approval-resolution.d.ts.map +1 -0
  38. package/dist/approval-resolution.js +100 -0
  39. package/dist/approval-resolution.js.map +1 -0
  40. package/dist/approval-resumes.d.ts +102 -0
  41. package/dist/approval-resumes.d.ts.map +1 -0
  42. package/dist/approval-resumes.js +167 -0
  43. package/dist/approval-resumes.js.map +1 -0
  44. package/dist/ask-brain.d.ts +167 -0
  45. package/dist/ask-brain.d.ts.map +1 -0
  46. package/dist/ask-brain.js +355 -0
  47. package/dist/ask-brain.js.map +1 -0
  48. package/dist/autonomy-authority.d.ts +80 -0
  49. package/dist/autonomy-authority.d.ts.map +1 -0
  50. package/dist/autonomy-authority.js +82 -0
  51. package/dist/autonomy-authority.js.map +1 -0
  52. package/dist/autonomy-controller.d.ts +321 -0
  53. package/dist/autonomy-controller.d.ts.map +1 -0
  54. package/dist/autonomy-controller.js +517 -0
  55. package/dist/autonomy-controller.js.map +1 -0
  56. package/dist/autonomy-store.d.ts +327 -0
  57. package/dist/autonomy-store.d.ts.map +1 -0
  58. package/dist/autonomy-store.js +581 -0
  59. package/dist/autonomy-store.js.map +1 -0
  60. package/dist/autonomy-tick.d.ts +257 -0
  61. package/dist/autonomy-tick.d.ts.map +1 -0
  62. package/dist/autonomy-tick.js +616 -0
  63. package/dist/autonomy-tick.js.map +1 -0
  64. package/dist/bin.d.ts +3 -0
  65. package/dist/bin.d.ts.map +1 -0
  66. package/dist/bin.js +2727 -0
  67. package/dist/bin.js.map +1 -0
  68. package/dist/brain-advice.d.ts +21 -0
  69. package/dist/brain-advice.d.ts.map +1 -0
  70. package/dist/brain-advice.js +51 -0
  71. package/dist/brain-advice.js.map +1 -0
  72. package/dist/candidate-replay-runtime.d.ts +125 -0
  73. package/dist/candidate-replay-runtime.d.ts.map +1 -0
  74. package/dist/candidate-replay-runtime.js +188 -0
  75. package/dist/candidate-replay-runtime.js.map +1 -0
  76. package/dist/checkout-carry.d.ts +76 -0
  77. package/dist/checkout-carry.d.ts.map +1 -0
  78. package/dist/checkout-carry.js +125 -0
  79. package/dist/checkout-carry.js.map +1 -0
  80. package/dist/citation-readers.d.ts +26 -0
  81. package/dist/citation-readers.d.ts.map +1 -0
  82. package/dist/citation-readers.js +102 -0
  83. package/dist/citation-readers.js.map +1 -0
  84. package/dist/command-receipts.d.ts +79 -0
  85. package/dist/command-receipts.d.ts.map +1 -0
  86. package/dist/command-receipts.js +143 -0
  87. package/dist/command-receipts.js.map +1 -0
  88. package/dist/command-runner.d.ts +32 -0
  89. package/dist/command-runner.d.ts.map +1 -0
  90. package/dist/command-runner.js +108 -0
  91. package/dist/command-runner.js.map +1 -0
  92. package/dist/compatible-sets.d.ts +67 -0
  93. package/dist/compatible-sets.d.ts.map +1 -0
  94. package/dist/compatible-sets.js +81 -0
  95. package/dist/compatible-sets.js.map +1 -0
  96. package/dist/compile-check.d.ts +31 -0
  97. package/dist/compile-check.d.ts.map +1 -0
  98. package/dist/compile-check.js +34 -0
  99. package/dist/compile-check.js.map +1 -0
  100. package/dist/compile-store.d.ts +16 -0
  101. package/dist/compile-store.d.ts.map +1 -0
  102. package/dist/compile-store.js +21 -0
  103. package/dist/compile-store.js.map +1 -0
  104. package/dist/completion.d.ts +106 -0
  105. package/dist/completion.d.ts.map +1 -0
  106. package/dist/completion.js +131 -0
  107. package/dist/completion.js.map +1 -0
  108. package/dist/config.d.ts +549 -0
  109. package/dist/config.d.ts.map +1 -0
  110. package/dist/config.js +763 -0
  111. package/dist/config.js.map +1 -0
  112. package/dist/control-file.d.ts +142 -0
  113. package/dist/control-file.d.ts.map +1 -0
  114. package/dist/control-file.js +144 -0
  115. package/dist/control-file.js.map +1 -0
  116. package/dist/coordinator-state.d.ts +131 -0
  117. package/dist/coordinator-state.d.ts.map +1 -0
  118. package/dist/coordinator-state.js +380 -0
  119. package/dist/coordinator-state.js.map +1 -0
  120. package/dist/coordinator.d.ts +95 -0
  121. package/dist/coordinator.d.ts.map +1 -0
  122. package/dist/coordinator.js +97 -0
  123. package/dist/coordinator.js.map +1 -0
  124. package/dist/cursor-store.d.ts +53 -0
  125. package/dist/cursor-store.d.ts.map +1 -0
  126. package/dist/cursor-store.js +98 -0
  127. package/dist/cursor-store.js.map +1 -0
  128. package/dist/daemon-cmd.d.ts +239 -0
  129. package/dist/daemon-cmd.d.ts.map +1 -0
  130. package/dist/daemon-cmd.js +1751 -0
  131. package/dist/daemon-cmd.js.map +1 -0
  132. package/dist/daemon-lock.d.ts +140 -0
  133. package/dist/daemon-lock.d.ts.map +1 -0
  134. package/dist/daemon-lock.js +352 -0
  135. package/dist/daemon-lock.js.map +1 -0
  136. package/dist/daemon-recovery.d.ts +78 -0
  137. package/dist/daemon-recovery.d.ts.map +1 -0
  138. package/dist/daemon-recovery.js +161 -0
  139. package/dist/daemon-recovery.js.map +1 -0
  140. package/dist/daemon.d.ts +368 -0
  141. package/dist/daemon.d.ts.map +1 -0
  142. package/dist/daemon.js +601 -0
  143. package/dist/daemon.js.map +1 -0
  144. package/dist/declared-response-shape.d.ts +93 -0
  145. package/dist/declared-response-shape.d.ts.map +1 -0
  146. package/dist/declared-response-shape.js +200 -0
  147. package/dist/declared-response-shape.js.map +1 -0
  148. package/dist/declared-surfaces.d.ts +16 -0
  149. package/dist/declared-surfaces.d.ts.map +1 -0
  150. package/dist/declared-surfaces.js +19 -0
  151. package/dist/declared-surfaces.js.map +1 -0
  152. package/dist/depends-review.d.ts +113 -0
  153. package/dist/depends-review.d.ts.map +1 -0
  154. package/dist/depends-review.js +110 -0
  155. package/dist/depends-review.js.map +1 -0
  156. package/dist/doctor.d.ts +91 -0
  157. package/dist/doctor.d.ts.map +1 -0
  158. package/dist/doctor.js +71 -0
  159. package/dist/doctor.js.map +1 -0
  160. package/dist/edge-approval.d.ts +105 -0
  161. package/dist/edge-approval.d.ts.map +1 -0
  162. package/dist/edge-approval.js +100 -0
  163. package/dist/edge-approval.js.map +1 -0
  164. package/dist/evidence-cache.d.ts +45 -0
  165. package/dist/evidence-cache.d.ts.map +1 -0
  166. package/dist/evidence-cache.js +90 -0
  167. package/dist/evidence-cache.js.map +1 -0
  168. package/dist/evidence-cmd.d.ts +133 -0
  169. package/dist/evidence-cmd.d.ts.map +1 -0
  170. package/dist/evidence-cmd.js +347 -0
  171. package/dist/evidence-cmd.js.map +1 -0
  172. package/dist/evidence-facts.d.ts +40 -0
  173. package/dist/evidence-facts.d.ts.map +1 -0
  174. package/dist/evidence-facts.js +114 -0
  175. package/dist/evidence-facts.js.map +1 -0
  176. package/dist/exclusive-lock.d.ts +52 -0
  177. package/dist/exclusive-lock.d.ts.map +1 -0
  178. package/dist/exclusive-lock.js +150 -0
  179. package/dist/exclusive-lock.js.map +1 -0
  180. package/dist/exec-domains.d.ts +140 -0
  181. package/dist/exec-domains.d.ts.map +1 -0
  182. package/dist/exec-domains.js +287 -0
  183. package/dist/exec-domains.js.map +1 -0
  184. package/dist/exemption-store.d.ts +197 -0
  185. package/dist/exemption-store.d.ts.map +1 -0
  186. package/dist/exemption-store.js +266 -0
  187. package/dist/exemption-store.js.map +1 -0
  188. package/dist/explicit-start-gate.d.ts +96 -0
  189. package/dist/explicit-start-gate.d.ts.map +1 -0
  190. package/dist/explicit-start-gate.js +103 -0
  191. package/dist/explicit-start-gate.js.map +1 -0
  192. package/dist/fs-trouble.d.ts +70 -0
  193. package/dist/fs-trouble.d.ts.map +1 -0
  194. package/dist/fs-trouble.js +98 -0
  195. package/dist/fs-trouble.js.map +1 -0
  196. package/dist/gate.d.ts +278 -0
  197. package/dist/gate.d.ts.map +1 -0
  198. package/dist/gate.js +278 -0
  199. package/dist/gate.js.map +1 -0
  200. package/dist/git-driver.d.ts +519 -0
  201. package/dist/git-driver.d.ts.map +1 -0
  202. package/dist/git-driver.js +900 -0
  203. package/dist/git-driver.js.map +1 -0
  204. package/dist/git-push-executor.d.ts +41 -0
  205. package/dist/git-push-executor.d.ts.map +1 -0
  206. package/dist/git-push-executor.js +142 -0
  207. package/dist/git-push-executor.js.map +1 -0
  208. package/dist/glob.d.ts +26 -0
  209. package/dist/glob.d.ts.map +1 -0
  210. package/dist/glob.js +93 -0
  211. package/dist/glob.js.map +1 -0
  212. package/dist/goal-adaptive.d.ts +295 -0
  213. package/dist/goal-adaptive.d.ts.map +1 -0
  214. package/dist/goal-adaptive.js +393 -0
  215. package/dist/goal-adaptive.js.map +1 -0
  216. package/dist/goal-compile.d.ts +342 -0
  217. package/dist/goal-compile.d.ts.map +1 -0
  218. package/dist/goal-compile.js +444 -0
  219. package/dist/goal-compile.js.map +1 -0
  220. package/dist/goal-depends-executor.d.ts +55 -0
  221. package/dist/goal-depends-executor.d.ts.map +1 -0
  222. package/dist/goal-depends-executor.js +202 -0
  223. package/dist/goal-depends-executor.js.map +1 -0
  224. package/dist/goal-execution-evidence.d.ts +135 -0
  225. package/dist/goal-execution-evidence.d.ts.map +1 -0
  226. package/dist/goal-execution-evidence.js +159 -0
  227. package/dist/goal-execution-evidence.js.map +1 -0
  228. package/dist/goal-gap.d.ts +140 -0
  229. package/dist/goal-gap.d.ts.map +1 -0
  230. package/dist/goal-gap.js +197 -0
  231. package/dist/goal-gap.js.map +1 -0
  232. package/dist/goal-met-target.d.ts +98 -0
  233. package/dist/goal-met-target.d.ts.map +1 -0
  234. package/dist/goal-met-target.js +92 -0
  235. package/dist/goal-met-target.js.map +1 -0
  236. package/dist/goal-ownership.d.ts +416 -0
  237. package/dist/goal-ownership.d.ts.map +1 -0
  238. package/dist/goal-ownership.js +576 -0
  239. package/dist/goal-ownership.js.map +1 -0
  240. package/dist/goal-runs.d.ts +82 -0
  241. package/dist/goal-runs.d.ts.map +1 -0
  242. package/dist/goal-runs.js +120 -0
  243. package/dist/goal-runs.js.map +1 -0
  244. package/dist/goal-store.d.ts +146 -0
  245. package/dist/goal-store.d.ts.map +1 -0
  246. package/dist/goal-store.js +294 -0
  247. package/dist/goal-store.js.map +1 -0
  248. package/dist/goal-view.d.ts +156 -0
  249. package/dist/goal-view.d.ts.map +1 -0
  250. package/dist/goal-view.js +499 -0
  251. package/dist/goal-view.js.map +1 -0
  252. package/dist/governed-approvals.d.ts +152 -0
  253. package/dist/governed-approvals.d.ts.map +1 -0
  254. package/dist/governed-approvals.js +246 -0
  255. package/dist/governed-approvals.js.map +1 -0
  256. package/dist/governed-broker.d.ts +169 -0
  257. package/dist/governed-broker.d.ts.map +1 -0
  258. package/dist/governed-broker.js +196 -0
  259. package/dist/governed-broker.js.map +1 -0
  260. package/dist/governed-run.d.ts +220 -0
  261. package/dist/governed-run.d.ts.map +1 -0
  262. package/dist/governed-run.js +406 -0
  263. package/dist/governed-run.js.map +1 -0
  264. package/dist/grant-reconcile.d.ts +63 -0
  265. package/dist/grant-reconcile.d.ts.map +1 -0
  266. package/dist/grant-reconcile.js +121 -0
  267. package/dist/grant-reconcile.js.map +1 -0
  268. package/dist/index-for-head.d.ts +56 -0
  269. package/dist/index-for-head.d.ts.map +1 -0
  270. package/dist/index-for-head.js +103 -0
  271. package/dist/index-for-head.js.map +1 -0
  272. package/dist/index.d.ts +39 -0
  273. package/dist/index.d.ts.map +1 -0
  274. package/dist/index.js +55 -0
  275. package/dist/index.js.map +1 -0
  276. package/dist/init-detect.d.ts +39 -0
  277. package/dist/init-detect.d.ts.map +1 -0
  278. package/dist/init-detect.js +188 -0
  279. package/dist/init-detect.js.map +1 -0
  280. package/dist/integration-deps.d.ts +62 -0
  281. package/dist/integration-deps.d.ts.map +1 -0
  282. package/dist/integration-deps.js +251 -0
  283. package/dist/integration-deps.js.map +1 -0
  284. package/dist/integration-runtime.d.ts +458 -0
  285. package/dist/integration-runtime.d.ts.map +1 -0
  286. package/dist/integration-runtime.js +681 -0
  287. package/dist/integration-runtime.js.map +1 -0
  288. package/dist/integration.d.ts +45 -0
  289. package/dist/integration.d.ts.map +1 -0
  290. package/dist/integration.js +87 -0
  291. package/dist/integration.js.map +1 -0
  292. package/dist/integrator.d.ts +84 -0
  293. package/dist/integrator.d.ts.map +1 -0
  294. package/dist/integrator.js +193 -0
  295. package/dist/integrator.js.map +1 -0
  296. package/dist/lane-claims.d.ts +174 -0
  297. package/dist/lane-claims.d.ts.map +1 -0
  298. package/dist/lane-claims.js +218 -0
  299. package/dist/lane-claims.js.map +1 -0
  300. package/dist/lane-coverage.d.ts +87 -0
  301. package/dist/lane-coverage.d.ts.map +1 -0
  302. package/dist/lane-coverage.js +129 -0
  303. package/dist/lane-coverage.js.map +1 -0
  304. package/dist/ledger-replay.d.ts +115 -0
  305. package/dist/ledger-replay.d.ts.map +1 -0
  306. package/dist/ledger-replay.js +155 -0
  307. package/dist/ledger-replay.js.map +1 -0
  308. package/dist/ledger-store.d.ts +68 -0
  309. package/dist/ledger-store.d.ts.map +1 -0
  310. package/dist/ledger-store.js +111 -0
  311. package/dist/ledger-store.js.map +1 -0
  312. package/dist/loop-safety-observer.d.ts +132 -0
  313. package/dist/loop-safety-observer.d.ts.map +1 -0
  314. package/dist/loop-safety-observer.js +76 -0
  315. package/dist/loop-safety-observer.js.map +1 -0
  316. package/dist/loop-safety-store.d.ts +339 -0
  317. package/dist/loop-safety-store.d.ts.map +1 -0
  318. package/dist/loop-safety-store.js +800 -0
  319. package/dist/loop-safety-store.js.map +1 -0
  320. package/dist/machine-store.d.ts +54 -0
  321. package/dist/machine-store.d.ts.map +1 -0
  322. package/dist/machine-store.js +149 -0
  323. package/dist/machine-store.js.map +1 -0
  324. package/dist/mcp-main.d.ts +2 -0
  325. package/dist/mcp-main.d.ts.map +1 -0
  326. package/dist/mcp-main.js +116 -0
  327. package/dist/mcp-main.js.map +1 -0
  328. package/dist/mcp-server.d.ts +72 -0
  329. package/dist/mcp-server.d.ts.map +1 -0
  330. package/dist/mcp-server.js +259 -0
  331. package/dist/mcp-server.js.map +1 -0
  332. package/dist/model-routing.d.ts +75 -0
  333. package/dist/model-routing.d.ts.map +1 -0
  334. package/dist/model-routing.js +108 -0
  335. package/dist/model-routing.js.map +1 -0
  336. package/dist/model-transport.d.ts +188 -0
  337. package/dist/model-transport.d.ts.map +1 -0
  338. package/dist/model-transport.js +625 -0
  339. package/dist/model-transport.js.map +1 -0
  340. package/dist/notify-cadence.d.ts +55 -0
  341. package/dist/notify-cadence.d.ts.map +1 -0
  342. package/dist/notify-cadence.js +68 -0
  343. package/dist/notify-cadence.js.map +1 -0
  344. package/dist/notify-channel.d.ts +69 -0
  345. package/dist/notify-channel.d.ts.map +1 -0
  346. package/dist/notify-channel.js +151 -0
  347. package/dist/notify-channel.js.map +1 -0
  348. package/dist/notify.d.ts +71 -0
  349. package/dist/notify.d.ts.map +1 -0
  350. package/dist/notify.js +125 -0
  351. package/dist/notify.js.map +1 -0
  352. package/dist/observation-inventory.d.ts +65 -0
  353. package/dist/observation-inventory.d.ts.map +1 -0
  354. package/dist/observation-inventory.js +139 -0
  355. package/dist/observation-inventory.js.map +1 -0
  356. package/dist/owned-children.d.ts +45 -0
  357. package/dist/owned-children.d.ts.map +1 -0
  358. package/dist/owned-children.js +64 -0
  359. package/dist/owned-children.js.map +1 -0
  360. package/dist/packet-for-goal.d.ts +19 -0
  361. package/dist/packet-for-goal.d.ts.map +1 -0
  362. package/dist/packet-for-goal.js +32 -0
  363. package/dist/packet-for-goal.js.map +1 -0
  364. package/dist/pair-cmd.d.ts +85 -0
  365. package/dist/pair-cmd.d.ts.map +1 -0
  366. package/dist/pair-cmd.js +205 -0
  367. package/dist/pair-cmd.js.map +1 -0
  368. package/dist/partial-asker.d.ts +96 -0
  369. package/dist/partial-asker.d.ts.map +1 -0
  370. package/dist/partial-asker.js +117 -0
  371. package/dist/partial-asker.js.map +1 -0
  372. package/dist/pdf-text-lines.d.ts +17 -0
  373. package/dist/pdf-text-lines.d.ts.map +1 -0
  374. package/dist/pdf-text-lines.js +70 -0
  375. package/dist/pdf-text-lines.js.map +1 -0
  376. package/dist/pdf-text-worker.d.ts +2 -0
  377. package/dist/pdf-text-worker.d.ts.map +1 -0
  378. package/dist/pdf-text-worker.js +81 -0
  379. package/dist/pdf-text-worker.js.map +1 -0
  380. package/dist/pdf-text.d.ts +56 -0
  381. package/dist/pdf-text.d.ts.map +1 -0
  382. package/dist/pdf-text.js +64 -0
  383. package/dist/pdf-text.js.map +1 -0
  384. package/dist/pending-action.d.ts +154 -0
  385. package/dist/pending-action.d.ts.map +1 -0
  386. package/dist/pending-action.js +148 -0
  387. package/dist/pending-action.js.map +1 -0
  388. package/dist/preemptor.d.ts +40 -0
  389. package/dist/preemptor.d.ts.map +1 -0
  390. package/dist/preemptor.js +49 -0
  391. package/dist/preemptor.js.map +1 -0
  392. package/dist/programme-mode.d.ts +29 -0
  393. package/dist/programme-mode.d.ts.map +1 -0
  394. package/dist/programme-mode.js +50 -0
  395. package/dist/programme-mode.js.map +1 -0
  396. package/dist/progress-view.d.ts +14 -0
  397. package/dist/progress-view.d.ts.map +1 -0
  398. package/dist/progress-view.js +114 -0
  399. package/dist/progress-view.js.map +1 -0
  400. package/dist/project-graph-builder.d.ts +81 -0
  401. package/dist/project-graph-builder.d.ts.map +1 -0
  402. package/dist/project-graph-builder.js +246 -0
  403. package/dist/project-graph-builder.js.map +1 -0
  404. package/dist/project-graph-runtime.d.ts +86 -0
  405. package/dist/project-graph-runtime.d.ts.map +1 -0
  406. package/dist/project-graph-runtime.js +112 -0
  407. package/dist/project-graph-runtime.js.map +1 -0
  408. package/dist/project-index-builder.d.ts +96 -0
  409. package/dist/project-index-builder.d.ts.map +1 -0
  410. package/dist/project-index-builder.js +298 -0
  411. package/dist/project-index-builder.js.map +1 -0
  412. package/dist/project-index-facts.d.ts +51 -0
  413. package/dist/project-index-facts.d.ts.map +1 -0
  414. package/dist/project-index-facts.js +117 -0
  415. package/dist/project-index-facts.js.map +1 -0
  416. package/dist/project-index-store.d.ts +97 -0
  417. package/dist/project-index-store.d.ts.map +1 -0
  418. package/dist/project-index-store.js +140 -0
  419. package/dist/project-index-store.js.map +1 -0
  420. package/dist/project-memory-store.d.ts +127 -0
  421. package/dist/project-memory-store.d.ts.map +1 -0
  422. package/dist/project-memory-store.js +302 -0
  423. package/dist/project-memory-store.js.map +1 -0
  424. package/dist/proposal-store.d.ts +14 -0
  425. package/dist/proposal-store.d.ts.map +1 -0
  426. package/dist/proposal-store.js +19 -0
  427. package/dist/proposal-store.js.map +1 -0
  428. package/dist/prover.d.ts +80 -0
  429. package/dist/prover.d.ts.map +1 -0
  430. package/dist/prover.js +137 -0
  431. package/dist/prover.js.map +1 -0
  432. package/dist/provider-identity-store.d.ts +34 -0
  433. package/dist/provider-identity-store.d.ts.map +1 -0
  434. package/dist/provider-identity-store.js +72 -0
  435. package/dist/provider-identity-store.js.map +1 -0
  436. package/dist/provider-identity.d.ts +104 -0
  437. package/dist/provider-identity.d.ts.map +1 -0
  438. package/dist/provider-identity.js +167 -0
  439. package/dist/provider-identity.js.map +1 -0
  440. package/dist/provider-limit.d.ts +79 -0
  441. package/dist/provider-limit.d.ts.map +1 -0
  442. package/dist/provider-limit.js +148 -0
  443. package/dist/provider-limit.js.map +1 -0
  444. package/dist/provider-preflight.d.ts +171 -0
  445. package/dist/provider-preflight.d.ts.map +1 -0
  446. package/dist/provider-preflight.js +395 -0
  447. package/dist/provider-preflight.js.map +1 -0
  448. package/dist/provider-state.d.ts +120 -0
  449. package/dist/provider-state.d.ts.map +1 -0
  450. package/dist/provider-state.js +182 -0
  451. package/dist/provider-state.js.map +1 -0
  452. package/dist/providers.d.ts +132 -0
  453. package/dist/providers.d.ts.map +1 -0
  454. package/dist/providers.js +161 -0
  455. package/dist/providers.js.map +1 -0
  456. package/dist/publication-recorder.d.ts +117 -0
  457. package/dist/publication-recorder.d.ts.map +1 -0
  458. package/dist/publication-recorder.js +124 -0
  459. package/dist/publication-recorder.js.map +1 -0
  460. package/dist/pursuit-delivery.d.ts +24 -0
  461. package/dist/pursuit-delivery.d.ts.map +1 -0
  462. package/dist/pursuit-delivery.js +38 -0
  463. package/dist/pursuit-delivery.js.map +1 -0
  464. package/dist/queue-store.d.ts +132 -0
  465. package/dist/queue-store.d.ts.map +1 -0
  466. package/dist/queue-store.js +185 -0
  467. package/dist/queue-store.js.map +1 -0
  468. package/dist/queue-summary.d.ts +14 -0
  469. package/dist/queue-summary.d.ts.map +1 -0
  470. package/dist/queue-summary.js +82 -0
  471. package/dist/queue-summary.js.map +1 -0
  472. package/dist/queue-view.d.ts +20 -0
  473. package/dist/queue-view.d.ts.map +1 -0
  474. package/dist/queue-view.js +163 -0
  475. package/dist/queue-view.js.map +1 -0
  476. package/dist/queue-write-lease.d.ts +106 -0
  477. package/dist/queue-write-lease.d.ts.map +1 -0
  478. package/dist/queue-write-lease.js +282 -0
  479. package/dist/queue-write-lease.js.map +1 -0
  480. package/dist/rails-home.d.ts +162 -0
  481. package/dist/rails-home.d.ts.map +1 -0
  482. package/dist/rails-home.js +452 -0
  483. package/dist/rails-home.js.map +1 -0
  484. package/dist/rails-migrations.d.ts +75 -0
  485. package/dist/rails-migrations.d.ts.map +1 -0
  486. package/dist/rails-migrations.js +199 -0
  487. package/dist/rails-migrations.js.map +1 -0
  488. package/dist/rails-stores.d.ts +49 -0
  489. package/dist/rails-stores.d.ts.map +1 -0
  490. package/dist/rails-stores.js +100 -0
  491. package/dist/rails-stores.js.map +1 -0
  492. package/dist/reaper.d.ts +69 -0
  493. package/dist/reaper.d.ts.map +1 -0
  494. package/dist/reaper.js +152 -0
  495. package/dist/reaper.js.map +1 -0
  496. package/dist/record-store.d.ts +36 -0
  497. package/dist/record-store.d.ts.map +1 -0
  498. package/dist/record-store.js +78 -0
  499. package/dist/record-store.js.map +1 -0
  500. package/dist/recovery-io.d.ts +50 -0
  501. package/dist/recovery-io.d.ts.map +1 -0
  502. package/dist/recovery-io.js +122 -0
  503. package/dist/recovery-io.js.map +1 -0
  504. package/dist/recovery.d.ts +146 -0
  505. package/dist/recovery.d.ts.map +1 -0
  506. package/dist/recovery.js +110 -0
  507. package/dist/recovery.js.map +1 -0
  508. package/dist/redraw.d.ts +34 -0
  509. package/dist/redraw.d.ts.map +1 -0
  510. package/dist/redraw.js +62 -0
  511. package/dist/redraw.js.map +1 -0
  512. package/dist/rejected-evidence.d.ts +255 -0
  513. package/dist/rejected-evidence.d.ts.map +1 -0
  514. package/dist/rejected-evidence.js +324 -0
  515. package/dist/rejected-evidence.js.map +1 -0
  516. package/dist/report-cmd.d.ts +32 -0
  517. package/dist/report-cmd.d.ts.map +1 -0
  518. package/dist/report-cmd.js +201 -0
  519. package/dist/report-cmd.js.map +1 -0
  520. package/dist/repos-cmd.d.ts +80 -0
  521. package/dist/repos-cmd.d.ts.map +1 -0
  522. package/dist/repos-cmd.js +240 -0
  523. package/dist/repos-cmd.js.map +1 -0
  524. package/dist/request-body-shape.d.ts +93 -0
  525. package/dist/request-body-shape.d.ts.map +1 -0
  526. package/dist/request-body-shape.js +407 -0
  527. package/dist/request-body-shape.js.map +1 -0
  528. package/dist/requirement-claims.d.ts +89 -0
  529. package/dist/requirement-claims.d.ts.map +1 -0
  530. package/dist/requirement-claims.js +92 -0
  531. package/dist/requirement-claims.js.map +1 -0
  532. package/dist/retention-apply-runtime.d.ts +105 -0
  533. package/dist/retention-apply-runtime.d.ts.map +1 -0
  534. package/dist/retention-apply-runtime.js +269 -0
  535. package/dist/retention-apply-runtime.js.map +1 -0
  536. package/dist/reverify.d.ts +41 -0
  537. package/dist/reverify.d.ts.map +1 -0
  538. package/dist/reverify.js +69 -0
  539. package/dist/reverify.js.map +1 -0
  540. package/dist/round-records.d.ts +65 -0
  541. package/dist/round-records.d.ts.map +1 -0
  542. package/dist/round-records.js +61 -0
  543. package/dist/round-records.js.map +1 -0
  544. package/dist/round-runner.d.ts +924 -0
  545. package/dist/round-runner.d.ts.map +1 -0
  546. package/dist/round-runner.js +1693 -0
  547. package/dist/round-runner.js.map +1 -0
  548. package/dist/run-approval.d.ts +180 -0
  549. package/dist/run-approval.d.ts.map +1 -0
  550. package/dist/run-approval.js +199 -0
  551. package/dist/run-approval.js.map +1 -0
  552. package/dist/run-cmd.d.ts +359 -0
  553. package/dist/run-cmd.d.ts.map +1 -0
  554. package/dist/run-cmd.js +4418 -0
  555. package/dist/run-cmd.js.map +1 -0
  556. package/dist/run-delivery.d.ts +71 -0
  557. package/dist/run-delivery.d.ts.map +1 -0
  558. package/dist/run-delivery.js +104 -0
  559. package/dist/run-delivery.js.map +1 -0
  560. package/dist/run-ended.d.ts +75 -0
  561. package/dist/run-ended.d.ts.map +1 -0
  562. package/dist/run-ended.js +27 -0
  563. package/dist/run-ended.js.map +1 -0
  564. package/dist/run-ending-locator.d.ts +125 -0
  565. package/dist/run-ending-locator.d.ts.map +1 -0
  566. package/dist/run-ending-locator.js +133 -0
  567. package/dist/run-ending-locator.js.map +1 -0
  568. package/dist/run-launcher.d.ts +459 -0
  569. package/dist/run-launcher.d.ts.map +1 -0
  570. package/dist/run-launcher.js +652 -0
  571. package/dist/run-launcher.js.map +1 -0
  572. package/dist/run-lease.d.ts +208 -0
  573. package/dist/run-lease.d.ts.map +1 -0
  574. package/dist/run-lease.js +301 -0
  575. package/dist/run-lease.js.map +1 -0
  576. package/dist/run-refusal-marks.d.ts +189 -0
  577. package/dist/run-refusal-marks.d.ts.map +1 -0
  578. package/dist/run-refusal-marks.js +249 -0
  579. package/dist/run-refusal-marks.js.map +1 -0
  580. package/dist/run-start-marks.d.ts +153 -0
  581. package/dist/run-start-marks.d.ts.map +1 -0
  582. package/dist/run-start-marks.js +269 -0
  583. package/dist/run-start-marks.js.map +1 -0
  584. package/dist/scan-cmd.d.ts +14 -0
  585. package/dist/scan-cmd.d.ts.map +1 -0
  586. package/dist/scan-cmd.js +270 -0
  587. package/dist/scan-cmd.js.map +1 -0
  588. package/dist/scan-events.d.ts +50 -0
  589. package/dist/scan-events.d.ts.map +1 -0
  590. package/dist/scan-events.js +91 -0
  591. package/dist/scan-events.js.map +1 -0
  592. package/dist/scan.d.ts +191 -0
  593. package/dist/scan.d.ts.map +1 -0
  594. package/dist/scan.js +417 -0
  595. package/dist/scan.js.map +1 -0
  596. package/dist/scope-rule.d.ts +148 -0
  597. package/dist/scope-rule.d.ts.map +1 -0
  598. package/dist/scope-rule.js +121 -0
  599. package/dist/scope-rule.js.map +1 -0
  600. package/dist/self-repo-id.d.ts +18 -0
  601. package/dist/self-repo-id.d.ts.map +1 -0
  602. package/dist/self-repo-id.js +70 -0
  603. package/dist/self-repo-id.js.map +1 -0
  604. package/dist/serve-cmd.d.ts +115 -0
  605. package/dist/serve-cmd.d.ts.map +1 -0
  606. package/dist/serve-cmd.js +505 -0
  607. package/dist/serve-cmd.js.map +1 -0
  608. package/dist/serve.d.ts +167 -0
  609. package/dist/serve.d.ts.map +1 -0
  610. package/dist/serve.js +336 -0
  611. package/dist/serve.js.map +1 -0
  612. package/dist/server-client.d.ts +766 -0
  613. package/dist/server-client.d.ts.map +1 -0
  614. package/dist/server-client.js +475 -0
  615. package/dist/server-client.js.map +1 -0
  616. package/dist/session-adapter-runtime.d.ts +195 -0
  617. package/dist/session-adapter-runtime.d.ts.map +1 -0
  618. package/dist/session-adapter-runtime.js +373 -0
  619. package/dist/session-adapter-runtime.js.map +1 -0
  620. package/dist/session-checkpoint-runtime.d.ts +62 -0
  621. package/dist/session-checkpoint-runtime.d.ts.map +1 -0
  622. package/dist/session-checkpoint-runtime.js +268 -0
  623. package/dist/session-checkpoint-runtime.js.map +1 -0
  624. package/dist/session-control-transport.d.ts +106 -0
  625. package/dist/session-control-transport.d.ts.map +1 -0
  626. package/dist/session-control-transport.js +232 -0
  627. package/dist/session-control-transport.js.map +1 -0
  628. package/dist/session-observation-store.d.ts +98 -0
  629. package/dist/session-observation-store.d.ts.map +1 -0
  630. package/dist/session-observation-store.js +155 -0
  631. package/dist/session-observation-store.js.map +1 -0
  632. package/dist/session-observe-runtime.d.ts +123 -0
  633. package/dist/session-observe-runtime.d.ts.map +1 -0
  634. package/dist/session-observe-runtime.js +317 -0
  635. package/dist/session-observe-runtime.js.map +1 -0
  636. package/dist/session-store.d.ts +98 -0
  637. package/dist/session-store.d.ts.map +1 -0
  638. package/dist/session-store.js +116 -0
  639. package/dist/session-store.js.map +1 -0
  640. package/dist/sessions-cmd.d.ts +202 -0
  641. package/dist/sessions-cmd.d.ts.map +1 -0
  642. package/dist/sessions-cmd.js +609 -0
  643. package/dist/sessions-cmd.js.map +1 -0
  644. package/dist/settings-overlay.d.ts +53 -0
  645. package/dist/settings-overlay.d.ts.map +1 -0
  646. package/dist/settings-overlay.js +175 -0
  647. package/dist/settings-overlay.js.map +1 -0
  648. package/dist/setup-prompt.d.ts +34 -0
  649. package/dist/setup-prompt.d.ts.map +1 -0
  650. package/dist/setup-prompt.js +92 -0
  651. package/dist/setup-prompt.js.map +1 -0
  652. package/dist/setup.d.ts +103 -0
  653. package/dist/setup.d.ts.map +1 -0
  654. package/dist/setup.js +283 -0
  655. package/dist/setup.js.map +1 -0
  656. package/dist/shared-grants.d.ts +164 -0
  657. package/dist/shared-grants.d.ts.map +1 -0
  658. package/dist/shared-grants.js +242 -0
  659. package/dist/shared-grants.js.map +1 -0
  660. package/dist/signals.d.ts +55 -0
  661. package/dist/signals.d.ts.map +1 -0
  662. package/dist/signals.js +85 -0
  663. package/dist/signals.js.map +1 -0
  664. package/dist/source-cmd.d.ts +201 -0
  665. package/dist/source-cmd.d.ts.map +1 -0
  666. package/dist/source-cmd.js +684 -0
  667. package/dist/source-cmd.js.map +1 -0
  668. package/dist/source-verdict.d.ts +99 -0
  669. package/dist/source-verdict.d.ts.map +1 -0
  670. package/dist/source-verdict.js +182 -0
  671. package/dist/source-verdict.js.map +1 -0
  672. package/dist/spend-ledger.d.ts +350 -0
  673. package/dist/spend-ledger.d.ts.map +1 -0
  674. package/dist/spend-ledger.js +546 -0
  675. package/dist/spend-ledger.js.map +1 -0
  676. package/dist/stale-run-sweep.d.ts +79 -0
  677. package/dist/stale-run-sweep.d.ts.map +1 -0
  678. package/dist/stale-run-sweep.js +116 -0
  679. package/dist/stale-run-sweep.js.map +1 -0
  680. package/dist/start-attempts.d.ts +385 -0
  681. package/dist/start-attempts.d.ts.map +1 -0
  682. package/dist/start-attempts.js +613 -0
  683. package/dist/start-attempts.js.map +1 -0
  684. package/dist/status-cmd.d.ts +28 -0
  685. package/dist/status-cmd.d.ts.map +1 -0
  686. package/dist/status-cmd.js +116 -0
  687. package/dist/status-cmd.js.map +1 -0
  688. package/dist/stop-follow-up.d.ts +107 -0
  689. package/dist/stop-follow-up.d.ts.map +1 -0
  690. package/dist/stop-follow-up.js +172 -0
  691. package/dist/stop-follow-up.js.map +1 -0
  692. package/dist/surface-lease.d.ts +118 -0
  693. package/dist/surface-lease.d.ts.map +1 -0
  694. package/dist/surface-lease.js +485 -0
  695. package/dist/surface-lease.js.map +1 -0
  696. package/dist/sync.d.ts +54 -0
  697. package/dist/sync.d.ts.map +1 -0
  698. package/dist/sync.js +93 -0
  699. package/dist/sync.js.map +1 -0
  700. package/dist/syncing-ledger.d.ts +45 -0
  701. package/dist/syncing-ledger.d.ts.map +1 -0
  702. package/dist/syncing-ledger.js +53 -0
  703. package/dist/syncing-ledger.js.map +1 -0
  704. package/dist/temp-fixtures.d.ts +68 -0
  705. package/dist/temp-fixtures.d.ts.map +1 -0
  706. package/dist/temp-fixtures.js +38 -0
  707. package/dist/temp-fixtures.js.map +1 -0
  708. package/dist/token-window.d.ts +84 -0
  709. package/dist/token-window.d.ts.map +1 -0
  710. package/dist/token-window.js +143 -0
  711. package/dist/token-window.js.map +1 -0
  712. package/dist/tool-bridge.d.ts +177 -0
  713. package/dist/tool-bridge.d.ts.map +1 -0
  714. package/dist/tool-bridge.js +329 -0
  715. package/dist/tool-bridge.js.map +1 -0
  716. package/dist/tool-call-record.d.ts +197 -0
  717. package/dist/tool-call-record.d.ts.map +1 -0
  718. package/dist/tool-call-record.js +276 -0
  719. package/dist/tool-call-record.js.map +1 -0
  720. package/dist/tool-protocol.d.ts +135 -0
  721. package/dist/tool-protocol.d.ts.map +1 -0
  722. package/dist/tool-protocol.js +104 -0
  723. package/dist/tool-protocol.js.map +1 -0
  724. package/dist/tool-worker.d.ts +3 -0
  725. package/dist/tool-worker.d.ts.map +1 -0
  726. package/dist/tool-worker.js +478 -0
  727. package/dist/tool-worker.js.map +1 -0
  728. package/dist/toolchain-mirror.d.ts +86 -0
  729. package/dist/toolchain-mirror.d.ts.map +1 -0
  730. package/dist/toolchain-mirror.js +307 -0
  731. package/dist/toolchain-mirror.js.map +1 -0
  732. package/dist/trusted-git.d.ts +243 -0
  733. package/dist/trusted-git.d.ts.map +1 -0
  734. package/dist/trusted-git.js +920 -0
  735. package/dist/trusted-git.js.map +1 -0
  736. package/dist/ui.d.ts +76 -0
  737. package/dist/ui.d.ts.map +1 -0
  738. package/dist/ui.js +118 -0
  739. package/dist/ui.js.map +1 -0
  740. package/dist/untrusted-exec.d.ts +275 -0
  741. package/dist/untrusted-exec.d.ts.map +1 -0
  742. package/dist/untrusted-exec.js +479 -0
  743. package/dist/untrusted-exec.js.map +1 -0
  744. package/dist/untrusted-gate.d.ts +73 -0
  745. package/dist/untrusted-gate.d.ts.map +1 -0
  746. package/dist/untrusted-gate.js +226 -0
  747. package/dist/untrusted-gate.js.map +1 -0
  748. package/dist/uploader.d.ts +153 -0
  749. package/dist/uploader.d.ts.map +1 -0
  750. package/dist/uploader.js +204 -0
  751. package/dist/uploader.js.map +1 -0
  752. package/dist/verifier.d.ts +66 -0
  753. package/dist/verifier.d.ts.map +1 -0
  754. package/dist/verifier.js +170 -0
  755. package/dist/verifier.js.map +1 -0
  756. package/dist/verify-apply.d.ts +26 -0
  757. package/dist/verify-apply.d.ts.map +1 -0
  758. package/dist/verify-apply.js +36 -0
  759. package/dist/verify-apply.js.map +1 -0
  760. package/dist/verify-cmd.d.ts +44 -0
  761. package/dist/verify-cmd.d.ts.map +1 -0
  762. package/dist/verify-cmd.js +125 -0
  763. package/dist/verify-cmd.js.map +1 -0
  764. package/dist/verify-pass.d.ts +73 -0
  765. package/dist/verify-pass.d.ts.map +1 -0
  766. package/dist/verify-pass.js +103 -0
  767. package/dist/verify-pass.js.map +1 -0
  768. package/dist/welcome.d.ts +43 -0
  769. package/dist/welcome.d.ts.map +1 -0
  770. package/dist/welcome.js +116 -0
  771. package/dist/welcome.js.map +1 -0
  772. package/dist/workspace-provisioner.d.ts +65 -0
  773. package/dist/workspace-provisioner.d.ts.map +1 -0
  774. package/dist/workspace-provisioner.js +66 -0
  775. package/dist/workspace-provisioner.js.map +1 -0
  776. package/dist/workspace-quarantine.d.ts +64 -0
  777. package/dist/workspace-quarantine.d.ts.map +1 -0
  778. package/dist/workspace-quarantine.js +156 -0
  779. package/dist/workspace-quarantine.js.map +1 -0
  780. package/dist/workspace-residue-sweep.d.ts +113 -0
  781. package/dist/workspace-residue-sweep.d.ts.map +1 -0
  782. package/dist/workspace-residue-sweep.js +158 -0
  783. package/dist/workspace-residue-sweep.js.map +1 -0
  784. package/dist/workspace.d.ts +639 -0
  785. package/dist/workspace.d.ts.map +1 -0
  786. package/dist/workspace.js +2026 -0
  787. package/dist/workspace.js.map +1 -0
  788. package/package.json +52 -4
  789. package/win/CredProbe.cs +64 -0
  790. package/win/FakeClaude.cs +56 -0
  791. package/win/HandleProbe.cs +116 -0
  792. package/win/TokenProbe.cs +53 -0
  793. package/win/appcontainer.ps1 +500 -0
package/dist/daemon.js ADDED
@@ -0,0 +1,601 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Daemon = exports.DEFAULT_AUTONOMY_POLL_MS = exports.DEFAULT_STALE_POLL_MS = exports.DEFAULT_GOAL_POLL_MS = exports.DEFAULT_COMMAND_POLL_MS = exports.DEFAULT_FLUSH_MS = exports.MAX_HEARTBEAT_MS = exports.MIN_HEARTBEAT_MS = exports.DEFAULT_HEARTBEAT_MS = void 0;
4
+ exports.heartbeatCadenceMs = heartbeatCadenceMs;
5
+ const uploader_1 = require("./uploader");
6
+ const server_client_1 = require("./server-client");
7
+ /** Boolean handlers predate dispositions; true was "done" and false was "leave it". */
8
+ function decisionOf(result) {
9
+ if (result === true)
10
+ return { disposition: 'done' };
11
+ if (result === false)
12
+ return { disposition: 'retry' };
13
+ if (typeof result === 'string')
14
+ return { disposition: result };
15
+ return { disposition: 'refused', reason: result.reason };
16
+ }
17
+ exports.DEFAULT_HEARTBEAT_MS = 15_000;
18
+ /**
19
+ * Bounds on a cadence the SERVER proposes.
20
+ *
21
+ * The floor stops a malformed or hostile `refreshS` turning the loop into a
22
+ * spin — `tick` is the MINIMUM of every cadence, so a zero here would busy-wait
23
+ * the whole daemon, not just the heartbeat. The ceiling is a sanity limit; a
24
+ * server that wants an hour between beats has almost certainly sent nonsense.
25
+ */
26
+ exports.MIN_HEARTBEAT_MS = 2_000;
27
+ exports.MAX_HEARTBEAT_MS = 300_000;
28
+ /**
29
+ * How often to beat: what the operator configured, else what the server asked
30
+ * for, else the built-in default.
31
+ *
32
+ * 🔴 THE SERVER PUBLISHES THIS CADENCE ON PURPOSE AND NOTHING WAS READING IT.
33
+ * `MachinesService.heartbeat` returns `{ ttlS, refreshS }` and says why in its
34
+ * own words: "the cadence is server-owned, so tuning the TTL never requires
35
+ * shipping a new CLI." That property was FALSE. The daemon paced on
36
+ * `DEFAULT_HEARTBEAT_MS` and discarded the response — it could not have used
37
+ * `refreshS`, because `ServerClient` typed the reply `{ ok, nextBeatS? }` and
38
+ * BOTH of those fields were invented. Found by driving the real client against
39
+ * a real server (`daemon-client-flagship.e2e.spec.ts`).
40
+ *
41
+ * ⚠️ TODAY THIS CHANGES NOTHING, AND THAT IS THE UNCOMFORTABLE PART. The server
42
+ * says `PRESENCE_REFRESH_S = 15` and this file said `15_000`, so the two agreed
43
+ * — by coincidence, as two hardcoded constants written independently in two
44
+ * trees. The failure was asymmetric and waiting: RAISING the server's TTL is
45
+ * harmless, but LOWERING it (say to 21s, refresh 7s) leaves a CLI beating every
46
+ * 15s against a 21s window, and every machine in the fleet flickers offline for
47
+ * a reason nothing in the CLI could explain.
48
+ *
49
+ * The operator's own `--heartbeat-ms` still wins: a person who pinned a cadence
50
+ * on this machine outranks a suggestion from the other end of the wire.
51
+ */
52
+ function heartbeatCadenceMs(configured, serverRefreshS) {
53
+ if (configured !== undefined)
54
+ return configured;
55
+ if (typeof serverRefreshS !== 'number' || !Number.isFinite(serverRefreshS)) {
56
+ return exports.DEFAULT_HEARTBEAT_MS;
57
+ }
58
+ const ms = Math.round(serverRefreshS * 1000);
59
+ if (ms <= 0)
60
+ return exports.DEFAULT_HEARTBEAT_MS;
61
+ return Math.min(exports.MAX_HEARTBEAT_MS, Math.max(exports.MIN_HEARTBEAT_MS, ms));
62
+ }
63
+ exports.DEFAULT_FLUSH_MS = 5_000;
64
+ /** Fast enough that a tap on a phone feels immediate, slow enough to be free. */
65
+ exports.DEFAULT_COMMAND_POLL_MS = 3_000;
66
+ /**
67
+ * Goal intent changes when a person types, not when the loop runs, so this is
68
+ * slow on purpose. Nothing reads the mirror in this phase; refreshing it faster
69
+ * would spend requests on a file with no consumer.
70
+ */
71
+ exports.DEFAULT_GOAL_POLL_MS = 30_000;
72
+ /**
73
+ * How often a dead run is looked for.
74
+ *
75
+ * Slow on purpose. It reads a lease file and, at most, writes one ending for a
76
+ * process that is already gone — there is nothing to be gained by asking often,
77
+ * and a run that ends normally writes its own ending within milliseconds. The
78
+ * cost of being late is that something waiting on a CRASHED run waits up to
79
+ * this long, which is a minute, once, for a case that should be rare.
80
+ */
81
+ exports.DEFAULT_STALE_POLL_MS = 60_000;
82
+ /**
83
+ * How often a controller gets a turn.
84
+ *
85
+ * Ten seconds, chosen against the cadences already here rather than picked: the
86
+ * command poll is 3s because a person is waiting for their tap to land, the
87
+ * heartbeat 15s, the goal pull 30s, the stale sweep 60s. Nobody is waiting on
88
+ * an autonomous Start — the person authorized it and went to bed — so it sits
89
+ * between the ones that serve a live tap and the ones that sweep.
90
+ *
91
+ * It also bounds the cost of the one thing a tick can do that is not free. A
92
+ * tick that launches a Start waits for the child's settle window (750ms) before
93
+ * returning, so at this cadence the controller can occupy at most about seven
94
+ * per cent of one daemon's time, and only on the ticks that actually launch.
95
+ */
96
+ exports.DEFAULT_AUTONOMY_POLL_MS = 10_000;
97
+ class Daemon {
98
+ deps;
99
+ uploader;
100
+ running = false;
101
+ online = false;
102
+ lastBeatAt = null;
103
+ missedBeats = 0;
104
+ delivered = 0;
105
+ /** Whether the server-kept-fewer-than-it-was-sent line has been said. */
106
+ unackedReported = false;
107
+ /** Commands already reported as left-queued, so a retry loop says so once. */
108
+ retried = new Set();
109
+ /**
110
+ * Whether the current outage has been mentioned.
111
+ *
112
+ * Not `online`, which starts false: keying the message off a true→false
113
+ * transition means a daemon that never connects in the first place says
114
+ * nothing at all, which is the one case where the user most needs telling.
115
+ */
116
+ outageReported = false;
117
+ /**
118
+ * The refresh interval the server last asked for, in seconds; null until a
119
+ * heartbeat has succeeded. Read through `heartbeatCadenceMs`, never directly.
120
+ */
121
+ serverRefreshS = null;
122
+ /** Set when the server refuses the credential; retrying cannot fix that. */
123
+ revoked = false;
124
+ /** Whether the buffer overflow has been mentioned; see `enqueue`. */
125
+ overflowReported = false;
126
+ /** Whether the catching-up line has been said for the current backlog. */
127
+ replayReported = false;
128
+ /** Whether the ledger-unreadable line has been said for the current outage. */
129
+ replayFailureReported = false;
130
+ goalFailureReported = false;
131
+ constructor(deps) {
132
+ this.deps = deps;
133
+ const transport = {
134
+ post: (projectId, events) => deps.client.postEvents(projectId, events),
135
+ };
136
+ this.uploader = new uploader_1.EventUploader(deps.projectId, transport, undefined, deps.bufferLimit ?? uploader_1.DEFAULT_BUFFER_LIMIT);
137
+ }
138
+ /** Queue an event for the next flush. Called from the ledger append path. */
139
+ enqueue(event) {
140
+ this.uploader.enqueue(event);
141
+ // Said once, on the transition into overflow. This is the append path of a
142
+ // run that may last hours: a line per dropped event would be a second,
143
+ // louder way of running out of resources.
144
+ if (!this.overflowReported && this.uploader.dropped() > 0) {
145
+ this.overflowReported = true;
146
+ this.deps.log('daemon : the upload buffer is full — the oldest events are being dropped.');
147
+ this.deps.log(' Your phone will show a gap; the ledger on this machine is complete.');
148
+ }
149
+ }
150
+ /**
151
+ * Hand the uploader whatever the ledger holds and the cursor does not cover.
152
+ *
153
+ * Asked on every flush tick, not once. This used to latch itself off the
154
+ * first time a pass found nothing to send — and the ordinary case is that the
155
+ * very first pass finds nothing, because the daemon is started before any run
156
+ * exists. So it replayed zero on its first tick, closed the latch, and never
157
+ * looked at the ledger again for the rest of its life. A run that died an
158
+ * hour later left its tail on disk with nothing that would ever look at it:
159
+ * exactly the failure replay was written to close, put back by the
160
+ * optimisation meant to make replay cheap.
161
+ *
162
+ * **"Nothing to send now" and "nothing will ever need sending again" are not
163
+ * the same statement, and only the first is something a pass can prove.**
164
+ *
165
+ * Being cheap is the supplier's job, not this method's — `makeLedgerReplay`
166
+ * skips the read entirely while the ledger cannot have grown, which costs a
167
+ * stat rather than a parse of the whole file.
168
+ */
169
+ async replayOnce() {
170
+ if (this.revoked || !this.deps.replay)
171
+ return;
172
+ // Not while a previous batch is still unsent. The skip filter is driven by
173
+ // the *durable* head, and that cannot advance until a flush succeeds — so
174
+ // every event this pass found last time is still above it and would be
175
+ // handed over again, and again. Five minutes offline is sixty copies of the
176
+ // same backlog, and the buffer sheds its oldest to make room for them: it
177
+ // would throw away the beginning of the history it is restoring in order to
178
+ // store duplicates of the middle. On the healthy path the flush below
179
+ // empties the buffer every tick, so this costs nothing.
180
+ if (this.uploader.pending() > 0)
181
+ return;
182
+ try {
183
+ const r = await this.deps.replay({
184
+ enqueue: (e) => this.enqueue(e),
185
+ durableHead: (runId) => this.uploader.durableHead(runId),
186
+ });
187
+ if (r.replayed === 0) {
188
+ // A catch-up that finished. Re-arm the notice so the *next* backlog —
189
+ // the run that dies in an hour — announces itself too, instead of going
190
+ // out in silence because an earlier one used the line up.
191
+ this.replayReported = false;
192
+ return;
193
+ }
194
+ if (!this.replayReported) {
195
+ this.replayReported = true;
196
+ this.deps.log(`daemon : sending ${r.replayed} event(s) a previous run never delivered.`);
197
+ }
198
+ if (r.damaged > 0) {
199
+ this.deps.log(`daemon : ${r.damaged} ledger line(s) were too damaged to send.`);
200
+ }
201
+ // Said apart from damage: nothing is torn, and the answer is a newer
202
+ // looply rather than a repair.
203
+ if ((r.fromNewerBuild ?? 0) > 0) {
204
+ this.deps.log(`daemon : ${r.fromNewerBuild} ledger line(s) were written by a newer build and cannot be sent from here.`);
205
+ }
206
+ }
207
+ catch (e) {
208
+ // Replay is a repair, not a duty: a ledger that cannot be read must not
209
+ // stop the daemon doing everything else it is for. But it must not stop
210
+ // replay either. A file that could not be read this second — a lock, an
211
+ // exhausted fd table, a scanner holding it open — is very often readable
212
+ // the next, and latching off on one transient error is the same permanent
213
+ // blindness this method was just fixed for, wearing a different hat.
214
+ // Said once per outage, like every other repeating condition here.
215
+ if (!this.replayFailureReported) {
216
+ this.replayFailureReported = true;
217
+ this.deps.log(`daemon : could not replay the ledger — ${e.message}`);
218
+ }
219
+ }
220
+ }
221
+ /** Revocation is terminal: retrying a revoked token cannot ever succeed. */
222
+ markRevoked() {
223
+ if (this.revoked)
224
+ return;
225
+ this.revoked = true;
226
+ this.online = false;
227
+ this.deps.log("daemon : this machine's access was revoked. The run continues locally,");
228
+ this.deps.log(' but nothing will reach your phone until you run `looply pair`.');
229
+ }
230
+ status() {
231
+ return {
232
+ online: this.online,
233
+ lastBeatAt: this.lastBeatAt,
234
+ missedBeats: this.missedBeats,
235
+ buffered: this.uploader.pending(),
236
+ delivered: this.delivered,
237
+ dropped: this.uploader.dropped(),
238
+ unacked: this.uploader.unacked(),
239
+ };
240
+ }
241
+ /**
242
+ * One heartbeat.
243
+ *
244
+ * Presence is a TTL key on the server, so missing a beat is what makes a
245
+ * machine read as offline. A failure here is logged once on the transition
246
+ * rather than every tick — an hour offline should not be an hour of identical
247
+ * log lines nobody reads.
248
+ */
249
+ async beat() {
250
+ if (this.revoked)
251
+ return false;
252
+ try {
253
+ const reply = await this.deps.client.heartbeat(this.deps.machineId, this.deps.cliVersion);
254
+ // ⚠️ GUARDED, NOT DESTRUCTURED. Several test doubles predate the corrected
255
+ // type and answer `true` or `{ ok: true }`; a daemon that threw on an
256
+ // unexpected heartbeat reply would turn a cosmetic mismatch into an
257
+ // outage. An absent cadence simply leaves the previous one standing.
258
+ const refreshS = reply?.refreshS;
259
+ if (typeof refreshS === 'number' && Number.isFinite(refreshS)) {
260
+ this.serverRefreshS = refreshS;
261
+ }
262
+ if (this.outageReported)
263
+ this.deps.log('daemon : back online');
264
+ this.online = true;
265
+ this.outageReported = false;
266
+ this.lastBeatAt = this.deps.now();
267
+ this.missedBeats = 0;
268
+ return true;
269
+ }
270
+ catch (e) {
271
+ if (e instanceof server_client_1.ServerError && e.isAuth) {
272
+ this.markRevoked();
273
+ return false;
274
+ }
275
+ this.missedBeats += 1;
276
+ if (!this.outageReported) {
277
+ this.deps.log('daemon : lost the server — buffering locally, will catch up');
278
+ this.outageReported = true;
279
+ }
280
+ this.online = false;
281
+ return false;
282
+ }
283
+ }
284
+ /**
285
+ * Give a dead run its ending, if one is owed.
286
+ *
287
+ * Never throws into the loop. A recovery that failed will be tried again on
288
+ * the next sweep, and a daemon that died over a lease file it could not read
289
+ * would have turned a recoverable condition into an outage.
290
+ */
291
+ /**
292
+ * Give the controller one turn.
293
+ *
294
+ * Errors are logged and swallowed, exactly as the stale sweep's are: this
295
+ * would otherwise be the first job in the loop capable of rejecting
296
+ * `Daemon.run()`, and a daemon that dies because one grant's record was
297
+ * briefly unreadable would take the heartbeat, the command poll and every
298
+ * other project's work down with it.
299
+ *
300
+ * There is no retry here. The next cadence is the retry, and a tight catch
301
+ * loop would turn a server outage into a spin.
302
+ */
303
+ async runAutonomyTick() {
304
+ if (this.revoked)
305
+ return;
306
+ try {
307
+ await this.deps.autonomyTick?.();
308
+ }
309
+ catch (e) {
310
+ this.deps.log(`autonomy: could not take a turn (${e.message})`);
311
+ }
312
+ }
313
+ /** See {@link DaemonDeps.coordinatorTick}. Caught like every other job. */
314
+ async runCoordinatorTick() {
315
+ if (this.revoked)
316
+ return;
317
+ try {
318
+ await this.deps.coordinatorTick?.();
319
+ }
320
+ catch (e) {
321
+ this.deps.log(`coord : could not take a turn (${e.message})`);
322
+ }
323
+ }
324
+ async sweepStaleRun() {
325
+ if (this.revoked)
326
+ return;
327
+ try {
328
+ await this.deps.recoverStaleRun?.();
329
+ }
330
+ catch (e) {
331
+ this.deps.log(`recover: could not check for a dead run (${e.message})`);
332
+ }
333
+ }
334
+ /**
335
+ * Refresh the local copy of the server's goals.
336
+ *
337
+ * Strictly a mirror: read the server's answer, write it down, and nothing
338
+ * else. It does not touch the queue, it does not start a run, and it does not
339
+ * call an agent — a goal is not read to decide what to do until a later phase,
340
+ * and this method existing is not that phase beginning.
341
+ *
342
+ * A failure keeps whatever the mirror already holds. Erasing a good copy
343
+ * because the server is briefly away would make an outage worse than it is,
344
+ * and the file's whole purpose is to be the answer when the server is not
345
+ * there to give one. Offline is already reported by the heartbeat, so this
346
+ * says nothing per tick.
347
+ */
348
+ async pullGoals() {
349
+ const store = this.deps.goals;
350
+ if (this.revoked || !store)
351
+ return null;
352
+ let goals;
353
+ try {
354
+ const r = await this.deps.client.projectGoals(this.deps.projectId);
355
+ // A 200 is not an answer. `ServerClient.request` returns the raw text when
356
+ // a body is not JSON and returns any parsed JSON unchecked, so a captive
357
+ // portal, a proxy interstitial or a CDN error page all arrive here as a
358
+ // successful response — and `r.goals ?? []` would turn every one of them
359
+ // into a wholesale erase of the mirror. That is the precise moment the
360
+ // file exists for. `pollCommands` uses the same `?? []` idiom safely
361
+ // because an empty command list is inert; here the value REPLACES durable
362
+ // state, so the envelope has to be checked before it is allowed to.
363
+ const body = r;
364
+ if (typeof body !== 'object' || body === null || !Array.isArray(body.goals)) {
365
+ this.reportGoalFailure('the server answered with something that is not a goal list');
366
+ return null;
367
+ }
368
+ goals = body.goals;
369
+ }
370
+ catch (e) {
371
+ if (e instanceof server_client_1.ServerError && e.isAuth) {
372
+ this.markRevoked();
373
+ return null;
374
+ }
375
+ // Offline is already reported by the heartbeat. Everything else is NOT:
376
+ // the heartbeat is a different endpoint with a different authorization
377
+ // path, so a project deleted out from under this daemon, or a 500 on this
378
+ // route alone, would otherwise retry every thirty seconds in total silence
379
+ // for the machine's whole life. Said once, like `beat` and `replayOnce`.
380
+ if (!(e instanceof server_client_1.ServerError && e.isOffline)) {
381
+ this.reportGoalFailure(e.message);
382
+ }
383
+ return null;
384
+ }
385
+ try {
386
+ await store.replace(goals);
387
+ }
388
+ catch (e) {
389
+ // A mirror that cannot be written is a degraded cache, never a stopped
390
+ // daemon: the goals are safe on the server either way.
391
+ this.deps.log(`goals : could not write the mirror (${e.message})`);
392
+ return null;
393
+ }
394
+ this.goalFailureReported = false;
395
+ return goals.length;
396
+ }
397
+ /** Report a goal-refresh failure once per outage, not once per tick. */
398
+ reportGoalFailure(message) {
399
+ if (this.goalFailureReported)
400
+ return;
401
+ this.goalFailureReported = true;
402
+ this.deps.log(`goals : could not refresh the mirror — ${message}`);
403
+ }
404
+ /**
405
+ * Collect and carry out whatever the phone queued.
406
+ *
407
+ * A command is acked only once the handler says it was carried out. Acking on
408
+ * receipt would mean a command lost to a crash between pop and execution is
409
+ * gone forever, and the person who tapped Stop would never learn it did not
410
+ * happen.
411
+ */
412
+ async pollCommands() {
413
+ if (this.revoked || !this.deps.onCommand)
414
+ return 0;
415
+ let commands;
416
+ try {
417
+ const r = await this.deps.client.popCommands(this.deps.machineId);
418
+ commands = r.commands ?? [];
419
+ }
420
+ catch (e) {
421
+ if (e instanceof server_client_1.ServerError && e.isAuth) {
422
+ this.markRevoked();
423
+ return 0;
424
+ }
425
+ // Offline is already reported by the heartbeat; saying it twice per tick
426
+ // would bury everything else in the log.
427
+ return 0;
428
+ }
429
+ let done = 0;
430
+ for (const command of commands) {
431
+ let decided = { disposition: 'retry' };
432
+ try {
433
+ decided = decisionOf(await this.deps.onCommand(command));
434
+ }
435
+ catch (e) {
436
+ // Left as `retry`, and deliberately WITHOUT the thrown message as a
437
+ // reason: a handler that threw did not decide anything, and turning an
438
+ // exception into a client-visible terminal refusal is how a transient
439
+ // fault becomes a permanent-looking answer.
440
+ this.deps.log(`daemon : ${command.kind} failed — ${e.message}`);
441
+ }
442
+ const { disposition } = decided;
443
+ if (disposition === 'retry') {
444
+ // Left unacked on purpose so the next poll offers it again. Said once
445
+ // per command rather than per poll: a command that cannot be carried
446
+ // out is now genuinely retried every three seconds, and logging each
447
+ // attempt would turn one stuck instruction into a wall of text.
448
+ if (!this.retried.has(command.id)) {
449
+ this.retried.add(command.id);
450
+ this.deps.log(`daemon : ${command.kind} could not be carried out — leaving it queued`);
451
+ }
452
+ continue;
453
+ }
454
+ try {
455
+ // The reason travels with the ack, or not at all — and a `done` cannot
456
+ // carry one, because `decided.reason` is only ever set on a refusal.
457
+ // Passed as a third argument only when there IS one, so an ack with
458
+ // nothing to explain is the same call it has always been rather than
459
+ // one trailing an explicit `undefined`.
460
+ await (decided.reason === undefined
461
+ ? this.deps.client.ackCommand(command.id, disposition)
462
+ : this.deps.client.ackCommand(command.id, disposition, decided.reason));
463
+ if (disposition === 'done')
464
+ done += 1;
465
+ }
466
+ catch {
467
+ // Carried out but unacked: it will be handed over again. Handlers are
468
+ // expected to be idempotent for exactly this reason.
469
+ this.deps.log(`daemon : ${command.kind} done but not acknowledged — it may repeat`);
470
+ }
471
+ }
472
+ return done;
473
+ }
474
+ /** Ship whatever is buffered. Retained on failure; never dropped. */
475
+ async flush() {
476
+ if (this.revoked)
477
+ return;
478
+ const r = await this.uploader.flush();
479
+ this.delivered += r.delivered;
480
+ // Written after the ack, never before: a cursor ahead of what the server
481
+ // holds is the one failure mode worse than no cursor, because replay then
482
+ // skips events nothing will ever send again. `durableCursors` is a gapless
483
+ // prefix, not the server's max-seq — see the field it comes from.
484
+ await this.deps.cursors?.advance(this.uploader.durableCursors()).catch(() => undefined);
485
+ if (r.error && this.online) {
486
+ this.deps.log(`daemon : upload failed (${r.error}) — ${r.buffered} events kept for the next try`);
487
+ }
488
+ // Said once, like the overflow above. A server that accepts a batch and
489
+ // stores none of it answers 200, so without this the only symptom is a
490
+ // phone that never moves — which reads as "looply is broken" rather than
491
+ // "these two are disagreeing about what this project is called".
492
+ if (!this.unackedReported && r.unacked) {
493
+ this.unackedReported = true;
494
+ this.deps.log(`daemon : the server kept fewer events than it was sent (${r.unacked} unaccounted).`);
495
+ this.deps.log(' Your phone will show a gap; the ledger on this machine is complete.');
496
+ }
497
+ }
498
+ /**
499
+ * Run until stopped.
500
+ *
501
+ * Heartbeat and flush share one clock rather than running two timers, so a
502
+ * slow server cannot let them drift into overlapping and doubling the load on
503
+ * a machine that is already struggling to reach it.
504
+ */
505
+ async run() {
506
+ let heartbeatMs = heartbeatCadenceMs(this.deps.heartbeatMs, this.serverRefreshS);
507
+ const flushMs = this.deps.flushMs ?? exports.DEFAULT_FLUSH_MS;
508
+ const commandMs = this.deps.commandPollMs ?? exports.DEFAULT_COMMAND_POLL_MS;
509
+ const goalMs = this.deps.goalPollMs ?? exports.DEFAULT_GOAL_POLL_MS;
510
+ const staleMs = this.deps.stalePollMs ?? exports.DEFAULT_STALE_POLL_MS;
511
+ const autonomyMs = this.deps.autonomyPollMs ?? exports.DEFAULT_AUTONOMY_POLL_MS;
512
+ // Every cadence is in the min. Left out, a cadence smaller than the others
513
+ // would silently never be honoured — the loop would sleep past it every
514
+ // time and the dep would be a lie.
515
+ let tick = Math.min(heartbeatMs, flushMs, commandMs, goalMs, staleMs, autonomyMs);
516
+ this.running = true;
517
+ let lastHeartbeat = 0;
518
+ let lastFlush = 0;
519
+ let lastCommand = 0;
520
+ let lastGoals = 0;
521
+ let lastStale = 0;
522
+ let lastAutonomy = 0;
523
+ let lastCoordinator = 0;
524
+ // What a previous process already got through, so replay does not re-send
525
+ // a night's ledger every time the daemon starts.
526
+ const known = this.deps.cursors?.all();
527
+ if (known)
528
+ this.uploader.prime(known);
529
+ while (this.running && !this.deps.stopRequested?.()) {
530
+ const now = this.deps.now();
531
+ if (now - lastHeartbeat >= heartbeatMs) {
532
+ lastHeartbeat = now;
533
+ await this.beat();
534
+ // 🔴 `tick` IS RECOMPUTED WITH IT, AND LEAVING THAT OUT WOULD BE THE
535
+ // EXACT BUG THE COMMENT ABOVE WARNS OF. `tick` is the minimum of every
536
+ // cadence; a heartbeat that became FASTER than the old minimum would be
537
+ // slept straight past, every time, and the new cadence would be a lie.
538
+ const proposed = heartbeatCadenceMs(this.deps.heartbeatMs, this.serverRefreshS);
539
+ if (proposed !== heartbeatMs) {
540
+ this.deps.log(`daemon : heartbeat cadence now ${Math.round(proposed / 1000)}s (server)`);
541
+ heartbeatMs = proposed;
542
+ tick = Math.min(heartbeatMs, flushMs, commandMs, goalMs, staleMs, autonomyMs);
543
+ }
544
+ }
545
+ if (now - lastCommand >= commandMs) {
546
+ lastCommand = now;
547
+ await this.pollCommands();
548
+ }
549
+ if (this.deps.goals && now - lastGoals >= goalMs) {
550
+ lastGoals = now;
551
+ await this.pullGoals();
552
+ }
553
+ if (this.deps.recoverStaleRun && now - lastStale >= staleMs) {
554
+ lastStale = now;
555
+ await this.sweepStaleRun();
556
+ }
557
+ // AFTER the stale sweep, on purpose. A run killed outright never writes
558
+ // its own ending; recovery writes it on the run's behalf. Ticking first
559
+ // would ask "has this run ended?" of a ledger that has not been repaired
560
+ // yet, and the honest answer then is "no" — so the controller would wait
561
+ // a whole cadence for a fact that was already available.
562
+ if (this.deps.autonomyTick && now - lastAutonomy >= autonomyMs) {
563
+ lastAutonomy = now;
564
+ await this.runAutonomyTick();
565
+ }
566
+ /**
567
+ * ⚠️ AFTER THE AUTONOMY TICK, ON THE SAME CADENCE, AND FOR THE SAME
568
+ * REASON THE AUTONOMY TICK SITS AFTER THE STALE SWEEP: a scheduler asked
569
+ * "what is running?" of a ledger that has not been repaired yet gets a
570
+ * stale answer, and the honest one was already available.
571
+ */
572
+ if (this.deps.coordinatorTick && now - lastCoordinator >= autonomyMs) {
573
+ lastCoordinator = now;
574
+ await this.runCoordinatorTick();
575
+ }
576
+ if (now - lastFlush >= flushMs) {
577
+ lastFlush = now;
578
+ // Before the flush, so anything a dead process left behind goes out in
579
+ // the same pass as whatever is live. Bounded per pass: a machine that
580
+ // was offline all night has a very long ledger, and pouring it in at
581
+ // once would overflow the buffer and shed the beginning of the very
582
+ // history being restored. The next tick continues where this stopped.
583
+ await this.replayOnce();
584
+ await this.flush();
585
+ }
586
+ if (this.revoked)
587
+ break;
588
+ await this.deps.sleep(tick);
589
+ }
590
+ // One last flush on the way out: a graceful stop should not strand the
591
+ // events from the round that just finished.
592
+ await this.flush();
593
+ this.running = false;
594
+ return this.status();
595
+ }
596
+ stop() {
597
+ this.running = false;
598
+ }
599
+ }
600
+ exports.Daemon = Daemon;
601
+ //# sourceMappingURL=daemon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daemon.js","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":"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"}