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
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.vectorFor = vectorFor;
4
+ exports.observationFor = observationFor;
5
+ const core_1 = require("@looply/core");
6
+ const core_2 = require("@looply/core");
7
+ /**
8
+ * The achievement facts, read off the queue.
9
+ *
10
+ * `done` is the only state that means an item was actually finished — the
11
+ * others are all "not yet" of one kind or another, and `workLeft` is the
12
+ * repository's own reading of what a set of them amounts to.
13
+ */
14
+ function vectorFor(goalId, goalVersion, pursuit, passingGates = []) {
15
+ const done = pursuit.items.filter((i) => i.state === 'done').map((i) => i.id);
16
+ const outcome = (0, core_2.workLeft)(pursuit.items);
17
+ return {
18
+ goalId,
19
+ goalVersion,
20
+ verifiedItemIds: done,
21
+ /**
22
+ * How many are still workable. `none` and `finished` and `stalled` all mean
23
+ * nothing more will happen without a person, so they are zero — three words
24
+ * for the same number here, and the distinction between them is somebody
25
+ * else's decision.
26
+ */
27
+ workRemaining: outcome === 'working' ? pursuit.items.filter(isUnfinished).length : 0,
28
+ provenCriteria: [],
29
+ /**
30
+ * ⚠️ SORTED AND DE-DUPLICATED, so the fingerprint is about WHICH gates
31
+ * passed and not about the order a runner happened to report them in.
32
+ */
33
+ passingGates: [...new Set(passingGates)].sort(),
34
+ planRevision: pursuit.planRevision,
35
+ };
36
+ }
37
+ /** The states that are "not finished yet" rather than "finished" or "given up". */
38
+ function isUnfinished(item) {
39
+ return item.state === 'ready' || item.state === 'draft' || item.state === 'verifying';
40
+ }
41
+ /**
42
+ * One observation, or null when this attempt is not the model's to answer for.
43
+ *
44
+ * Null is the common case in a quiet daemon and is not a failure: a tick that
45
+ * held, an approval nobody has answered, a recovery carrying one authority
46
+ * forward. None of those is an attempt that achieved nothing — they are attempts
47
+ * that never happened.
48
+ */
49
+ function observationFor(facts) {
50
+ if (!(0, core_1.countsTowardSafety)(facts.excluded))
51
+ return null;
52
+ return {
53
+ goalId: facts.goalId,
54
+ goalVersion: facts.goalVersion,
55
+ ordinal: facts.ordinal,
56
+ outcome: facts.outcome,
57
+ progressFingerprint: (0, core_1.progressFingerprint)(vectorFor(facts.goalId, facts.goalVersion, facts.pursuit,
58
+ /**
59
+ * ⚠️ THE HIGH-WATER MARK, NOT THIS ROUND'S SET. See `gatesEverPassed`:
60
+ * the raw set lets one flaky step change the fingerprint every round,
61
+ * which makes three identical fingerprints impossible and switches all
62
+ * four detectors off for a pursuit that is genuinely stuck.
63
+ *
64
+ * The union only ever grows, so a step passing for the FIRST time is
65
+ * progress and a step flapping is not.
66
+ */
67
+ [...(facts.gatesEverPassed ?? []), ...(facts.passingGates ?? [])])),
68
+ treeFingerprint: facts.treeFingerprint,
69
+ failureSignature: facts.failureSignature,
70
+ actionFingerprint: facts.actionFingerprint,
71
+ // TRACE. Carried so a person can find the run; excluded from every digest.
72
+ runId: facts.runId,
73
+ observedAt: facts.at,
74
+ };
75
+ }
76
+ //# sourceMappingURL=loop-safety-observer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loop-safety-observer.js","sourceRoot":"","sources":["../src/loop-safety-observer.ts"],"names":[],"mappings":";;AA2EA,8BA2BC;AAwED,wCA+BC;AA7MD,uCAOsB;AACtB,uCAAmD;AA4DnD;;;;;;GAMG;AACH,SAAgB,SAAS,CACvB,MAAc,EACd,WAAmB,EACnB,OAAqB,EACrB,eAAkC,EAAE;IAEpC,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC9E,MAAM,OAAO,GAAG,IAAA,eAAQ,EAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACxC,OAAO;QACL,MAAM;QACN,WAAW;QACX,eAAe,EAAE,IAAI;QACrB;;;;;WAKG;QACH,aAAa,EAAE,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACpF,cAAc,EAAE,EAAE;QAClB;;;WAGG;QACH,YAAY,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,EAAE;QAC/C,YAAY,EAAE,OAAO,CAAC,YAAY;KACnC,CAAC;AACJ,CAAC;AAED,mFAAmF;AACnF,SAAS,YAAY,CAAC,IAAU;IAC9B,OAAO,IAAI,CAAC,KAAK,KAAK,OAAO,IAAI,IAAI,CAAC,KAAK,KAAK,OAAO,IAAI,IAAI,CAAC,KAAK,KAAK,WAAW,CAAC;AACxF,CAAC;AA2DD;;;;;;;GAOG;AACH,SAAgB,cAAc,CAAC,KAAmB;IAChD,IAAI,CAAC,IAAA,yBAAkB,EAAC,KAAK,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IACrD,OAAO;QACL,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,mBAAmB,EAAE,IAAA,0BAAmB,EACtC,SAAS,CACP,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,OAAO;QACb;;;;;;;;WAQG;QACH,CAAC,GAAG,CAAC,KAAK,CAAC,eAAe,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,CAClE,CACF;QACD,eAAe,EAAE,KAAK,CAAC,eAAe;QACtC,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;QACxC,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;QAC1C,2EAA2E;QAC3E,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,UAAU,EAAE,KAAK,CAAC,EAAE;KACrB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,339 @@
1
+ import { type LoopSafetyVerdict, type SafetyHoldKind, type SafetyObservation } from '@looply/core';
2
+ import type { LedgerFs } from './ledger-store';
3
+ import type { AttemptFs } from './start-attempts';
4
+ /**
5
+ * WHAT AUTONOMY HAS ACHIEVED, WRITTEN DOWN SO A RESTART CANNOT FORGET IT.
6
+ *
7
+ * ─────────────────────────────────────────────────────────────────────────────
8
+ * THE GAP THIS FILLS
9
+ *
10
+ * Nothing in this repository recorded what a Start ACHIEVED. `finishStart`
11
+ * closes an ordinal with no outcome payload at all — the receipts prove a Start
12
+ * was spent, the launch records prove a child began, and the refusal marks say
13
+ * why one did not. None of them says whether the work moved the Goal, so no
14
+ * detector could have existed before this file.
15
+ *
16
+ * ─────────────────────────────────────────────────────────────────────────────
17
+ * WHY IT IS NOT IN `control.json`
18
+ *
19
+ * 🔴 A DIRECT `looply run` ERASES CONTROL STATE. `consumeControlOnStart` is true
20
+ * for a hand-typed run, so the first thing such a run does is consume a person's
21
+ * pause. A safety hold stored there would be cleared as a SIDE EFFECT of typing
22
+ * the command the hold exists to prevent — which is not a hold at all.
23
+ *
24
+ * So this is its own file, written by the same temp-then-rename contract every
25
+ * other store here uses, and the override that clears an incident is an
26
+ * exclusive create rather than a field somebody can rewrite.
27
+ *
28
+ * ─────────────────────────────────────────────────────────────────────────────
29
+ * BOUNDED, BECAUSE A DURABLE HISTORY THAT GROWS IS A DEFECT WITH A DELAY
30
+ *
31
+ * `MAX_SAFETY_OBSERVATIONS` is the whole window; the widest detector looks at
32
+ * four. A file that grew for every attempt would arrive months later on
33
+ * somebody else's machine, and by then nobody would know why.
34
+ */
35
+ export type SafetyStoreState = 'ok' | 'unreadable';
36
+ /**
37
+ * A safety hold, once derived, is a fact about this machine.
38
+ *
39
+ * ⚠️ IT HAS NO `expiresAt` AND NO `clear()`. A hold must not disappear because
40
+ * the daemon restarted, because time passed, or because a model asked nicely —
41
+ * only a person's explicit Start ends one, and that is recorded rather than
42
+ * erased so the audit survives.
43
+ */
44
+ export interface LoopSafetyIncident {
45
+ readonly id: string;
46
+ readonly goalId: string;
47
+ readonly goalVersion: number;
48
+ readonly kind: SafetyHoldKind;
49
+ readonly because: string;
50
+ readonly evidence: readonly string[];
51
+ /** ISO. TRACE — a person reads it; nothing decides on it. */
52
+ readonly triggeredAt: string;
53
+ /** The Start that spent this incident's one retry, if one has. */
54
+ readonly overriddenByStartId?: string;
55
+ }
56
+ export declare class LoopSafetyStore {
57
+ private readonly stateDir;
58
+ /**
59
+ * ⚠️ `readDir` IS OPTIONAL, so every existing fake still satisfies this.
60
+ * A store that cannot list the ordinal claims simply falls back to deriving
61
+ * the next attempt number from the observations, which is what it did
62
+ * before — weaker, and never wrong in a direction that loses a hold.
63
+ */
64
+ private readonly fs;
65
+ private readonly now;
66
+ private readonly migrate?;
67
+ /** Distinguishes two writes from ONE process; the pid distinguishes processes. */
68
+ private static writes;
69
+ private observations;
70
+ private incidents;
71
+ private state;
72
+ private opened;
73
+ /**
74
+ * ⚠️ `migrate` RUNS BEFORE ANY READ, AND ITS REFUSAL LEAVES THE STORE
75
+ * UNREADABLE — which is a REFUSAL TO START, not a silent pass.
76
+ *
77
+ * The history's home moved out of the repository (see `rails-home.ts`). During
78
+ * a move, "I could not read the old history" and "there is no old history"
79
+ * look the same, and this store must never confuse them: an empty history
80
+ * discharges every hold it holds. A `repeated_failure` hold raised an hour ago
81
+ * would vanish, the run it was stopping would start, and nothing would say why.
82
+ *
83
+ * Omitted, there is no migration and nothing changes.
84
+ */
85
+ constructor(stateDir: string,
86
+ /**
87
+ * ⚠️ `readDir` IS OPTIONAL, so every existing fake still satisfies this.
88
+ * A store that cannot list the ordinal claims simply falls back to deriving
89
+ * the next attempt number from the observations, which is what it did
90
+ * before — weaker, and never wrong in a direction that loses a hold.
91
+ */
92
+ fs: LedgerFs & Pick<AttemptFs, 'createExclusive'> & {
93
+ readDir?(path: string): Promise<string[]>;
94
+ }, now?: () => number, migrate?: (() => Promise<{
95
+ ok: boolean;
96
+ because?: string;
97
+ }>) | undefined);
98
+ private get path();
99
+ /**
100
+ * The append-only history of attempts.
101
+ *
102
+ * 🔴 A SEPARATE FILE FROM THE INCIDENTS, AND APPEND-ONLY, BECAUSE A REWRITE
103
+ * LOSES A CONCURRENT WRITER'S WORK. Two writers for one goal on one machine is
104
+ * ordinary — the run recording what it achieved, and the Start gate spending a
105
+ * retry — and a whole-document rewrite meant whichever loaded first clobbered
106
+ * the other. For the spent retry that was survivable (the marker file is the
107
+ * authority). For an OBSERVATION it was not: a shorter history holds LATER, so
108
+ * the machine keeps working, which is the direction that costs a person money.
109
+ *
110
+ * The shape is `ledger-store.ts`'s, deliberately: events appended as JSONL,
111
+ * never rewritten, with the small mutable thing kept as a projection beside
112
+ * it. ⚠️ NOT `command-receipts.ts` — that one rewrites its whole document too,
113
+ * and an earlier draft of this file's own handoff cited it as the append-only
114
+ * precedent. It is not one.
115
+ *
116
+ * NEVER COMPACT THIS FILE. `ledger-store` says the same of its own events and
117
+ * for the same reason: a compaction is a rewrite, and a concurrent append
118
+ * during one is exactly the loss this change exists to prevent.
119
+ *
120
+ * ⚠️ THE COST THIS TRADE BUYS, STATED PLAINLY RATHER THAN LEFT TO BE FOUND.
121
+ * The whole file is read and parsed on every observation, because the verdict
122
+ * must be a fact about the machine rather than about one process. So the read
123
+ * grows with the machine's LIFETIME, not with its current workload: one record
124
+ * per attempt, forever, re-parsed each time.
125
+ *
126
+ * That is affordable at the scale this runs at — attempts are minutes apart
127
+ * and bounded by the very brake this file feeds — and it is the honest
128
+ * successor to the limit it replaced, not the absence of one. If a machine
129
+ * ever accumulates enough attempts for this to matter, the answer is a second
130
+ * ledger file rolled by date with the old one left in place, NOT a compaction
131
+ * of this one.
132
+ */
133
+ private get eventsPath();
134
+ /** Where an override's exclusive-create claim lives. One file per incident. */
135
+ /**
136
+ * Where incidents are written now: APPEND-ONLY, one per line.
137
+ *
138
+ * 🔴 `persist()` REWROTE THE WHOLE DOCUMENT from an `open()`-time snapshot,
139
+ * and Phase 1 turned that into a hold-erasing race. Moving this file to the
140
+ * project state directory is what lets a hold raised in one workspace be seen
141
+ * in another — and the same change put two concurrent writers on it. Two runs
142
+ * raising holds for two different pursuits each wrote a document without the
143
+ * other's incident, so one brake vanished. Unlike an override, nothing
144
+ * recovers it.
145
+ *
146
+ * Observations were made append-only long ago for exactly this reason.
147
+ * Incidents simply never were, because until Phase 1 there could not be two
148
+ * writers.
149
+ */
150
+ private get incidentsPath();
151
+ /** A short unique token for an incident id. Filename-safe by construction. */
152
+ private incidentToken;
153
+ private overridePath;
154
+ /** Read what is on disk. Never throws: an unreadable file is a state, not a crash. */
155
+ open(): Promise<SafetyStoreState>;
156
+ status(): SafetyStoreState;
157
+ /**
158
+ * The active incident for a pursuit, or null.
159
+ *
160
+ * ⚠️ AN UNREADABLE FILE ANSWERS `null`, AND THAT IS DELIBERATE — but it is
161
+ * NOT the same as failing open. The caller (`autonomy-tick`) treats an
162
+ * unreadable store as a hold in its own right, because a machine that cannot
163
+ * read its safety history must not spend a night on the assumption that it is
164
+ * empty. Deciding that here would hide it inside a getter.
165
+ */
166
+ /**
167
+ * Whether this store could read its history.
168
+ *
169
+ * 🔴 EXPOSED BECAUSE THE RULE ABOVE HAD A SECOND CALLER THAT DID NOT KNOW IT.
170
+ * `activeIncident` answers null on an unreadable file and says, correctly,
171
+ * that deciding there "would hide it inside a getter" — but that only works
172
+ * while every caller applies the rule. `autonomy-tick` did; the coordinator's
173
+ * `holdsFor` did not, and returned NO HOLDS for an unreadable history, which
174
+ * `decideSchedule` reads as "nothing is held" and answers with `start`.
175
+ *
176
+ * `open()` already returns this; a store that has been opened elsewhere had
177
+ * no way to be asked again.
178
+ */
179
+ readable(): boolean;
180
+ activeIncident(goalId: string, goalVersion: number): LoopSafetyIncident | null;
181
+ /** Every incident ever derived for this pursuit, newest last. History, not state. */
182
+ history(goalId: string): readonly LoopSafetyIncident[];
183
+ observationsFor(goalId: string): readonly SafetyObservation[];
184
+ /**
185
+ * The number to give the next attempt for this pursuit.
186
+ *
187
+ * ⚠️ NOT `observationsFor(...).length + 1`, WHICH IS WHAT THIS REPLACED. The
188
+ * history is bounded at `MAX_SAFETY_OBSERVATIONS`, so a count SATURATES: past
189
+ * sixteen attempts every one of them is numbered seventeen, and the evidence
190
+ * a person reads to understand why their machine stopped becomes three
191
+ * identical lines. No detector reads the ordinal, so nothing went wrong — it
192
+ * was only unreadable, which is the kind of defect a test suite never has an
193
+ * opinion about.
194
+ *
195
+ * Counting on from the LAST one survives trimming, because trimming keeps the
196
+ * newest. It restarts at one for a pursuit with no history, which is correct:
197
+ * a person who has never seen this Goal run should be shown attempt one.
198
+ */
199
+ nextOrdinalFor(goalId: string): number;
200
+ /**
201
+ * The largest attempt number anybody has already claimed for this goal, or 0.
202
+ *
203
+ * ⚠️ CLAIMS, NOT OBSERVATIONS. See `mintOrdinal`. An unreadable directory
204
+ * answers 0, which makes the caller fall back to the observation-derived
205
+ * start — the same answer it had before, rather than a refusal.
206
+ */
207
+ private highestClaim;
208
+ /** Where an ordinal's exclusive-create claim lives. One file per attempt. */
209
+ private ordinalPath;
210
+ /**
211
+ * TAKE THE NEXT ATTEMPT NUMBER, EXCLUSIVELY.
212
+ *
213
+ * 🔴 `nextOrdinalFor` IS A READ, AND TWO RUNS READ THE SAME ANSWER.
214
+ *
215
+ * It derives the next number from the last observation on disk. That was
216
+ * sound while one run owned one checkout. With N workspaces two runs on one
217
+ * goal start within the same second, both read "the last attempt was 3", and
218
+ * both record attempt 4 — so the evidence a person is shown to explain why
219
+ * their machine stopped contains two different attempt fours and no five.
220
+ * `MAX_SAME_FAILURE_REPEATS` still fires correctly, because no detector reads
221
+ * the ordinal; what breaks is the only part of a hold a person can act on.
222
+ *
223
+ * ⚠️ THE SAME PRIMITIVE THE OVERRIDE MARKER USES, three files away: the
224
+ * filesystem arbitrates, never a read-then-write, because the two claimants
225
+ * may be two processes. On EEXIST the candidate simply advances — losing a
226
+ * race means somebody else has that number, which is exactly the information
227
+ * needed to pick the next one.
228
+ *
229
+ * ⚠️ GAPS ARE FINE, DUPLICATES ARE NOT. A run that mints 4 and then crashes
230
+ * burns 4, and the next attempt is 5. Nothing counts ordinals — the history's
231
+ * length is what detectors read — so a gap costs a person nothing, while a
232
+ * duplicate costs them the ability to tell two attempts apart.
233
+ */
234
+ mintOrdinal(goalId: string): Promise<number>;
235
+ /**
236
+ * Record what one attempt achieved, and say whether that makes it unsafe to
237
+ * continue.
238
+ *
239
+ * The verdict is computed from what is now on disk rather than from the
240
+ * caller's belief, so a caller that forgets to persist cannot produce a
241
+ * verdict about a history that does not exist.
242
+ */
243
+ observe(o: SafetyObservation): Promise<LoopSafetyVerdict>;
244
+ /**
245
+ * Write down that autonomy has stopped, and why.
246
+ *
247
+ * Idempotent on the pursuit: a second derivation while one is already active
248
+ * returns the existing incident rather than stacking. Two holds for one
249
+ * stuck condition would need two overrides to clear, and a person would have
250
+ * to press the button twice for reasons nobody could explain.
251
+ */
252
+ raise(input: {
253
+ goalId: string;
254
+ goalVersion: number;
255
+ kind: SafetyHoldKind;
256
+ because: string;
257
+ evidence: readonly string[];
258
+ }): Promise<LoopSafetyIncident | null>;
259
+ /**
260
+ * A PERSON SPENDS AN INCIDENT'S ONE RETRY.
261
+ *
262
+ * 🔴 EXCLUSIVE CREATE, AND NOTHING ELSE. Two Starts arriving together must not
263
+ * both believe they may proceed, and the filesystem is what arbitrates —
264
+ * never a read-then-write, and never an in-memory flag, because the two Starts
265
+ * may be two processes. The same Start asking twice gets the same answer, so
266
+ * a dropped response cannot cost a person their retry.
267
+ *
268
+ * ⚠️ ONE RETRY, NOT "SAFETY OFF". The incident is marked as spent rather than
269
+ * deleted, and the observation history is left exactly where it is. If the
270
+ * authorised Run also achieves nothing, the detectors see the whole history
271
+ * and raise a NEW incident — which is the difference between a person saying
272
+ * "try once more" and a person disabling a brake.
273
+ */
274
+ override(incidentId: string, startId: string): Promise<{
275
+ ok: true;
276
+ incident: LoopSafetyIncident;
277
+ } | {
278
+ ok: false;
279
+ because: string;
280
+ }>;
281
+ /**
282
+ * Read the attempt history from the append-only ledger.
283
+ *
284
+ * Bounded IN MEMORY rather than on disk: the file is never rewritten, so the
285
+ * only place a bound can be applied without a rewrite is here. `carried` is
286
+ * whatever an older build left in the document, and goes first because it is
287
+ * older than anything in the ledger.
288
+ *
289
+ * 🔴 A BAD LINE IS SKIPPED, NOT FATAL — and that is the opposite of how this
290
+ * class treats a bad INCIDENTS document, deliberately. A torn final line is
291
+ * what a crash mid-append leaves, and it costs one observation, which is the
292
+ * bounded loss this design already accepts. Refusing to read the history over
293
+ * it would report NO active incident and so discharge every hold on the
294
+ * machine, which is the one direction that must never fail open. The
295
+ * incidents document still fails closed; it is what holds are made of.
296
+ */
297
+ private loadObservations;
298
+ /**
299
+ * Mark every incident whose retry has already been taken.
300
+ *
301
+ * 🔴 THE MARKER FILE IS THE AUTHORITY; THE FIELD IS A CACHE. `persist()`
302
+ * rewrites the whole document, so a writer that loaded before another
303
+ * writer's write clobbers it — and the daemon spending a retry while a run
304
+ * records what it achieved is not an exotic interleaving, it is what happens
305
+ * every time somebody presses Start as a run ends. The field really is lost
306
+ * there; it is measured in `loop-safety-race.spec.ts`.
307
+ *
308
+ * What cannot be lost is `loop-safety-overrides/<id>`, because it is written
309
+ * with an exclusive create and never rewritten. So the document is believed
310
+ * about WHAT was raised, and the marker files about WHICH retries are spent.
311
+ * Reading them here keeps `activeIncident` synchronous for its callers.
312
+ *
313
+ * Bounded by the incident count rather than by anything a person can grow: a
314
+ * pursuit has one active incident at a time, and only unspent ones are asked
315
+ * about.
316
+ */
317
+ /**
318
+ * Fold the append-only incident log over whatever the legacy document held.
319
+ *
320
+ * A malformed line is SKIPPED rather than fatal: an append can be torn by a
321
+ * crash mid-write, and discarding every hold on the strength of one truncated
322
+ * last line would be the fail-open this whole file exists to prevent.
323
+ */
324
+ private loadIncidents;
325
+ private foldInSpentRetries;
326
+ private readOverride;
327
+ private persist;
328
+ }
329
+ /**
330
+ * The real filesystem, in the shape this store needs.
331
+ *
332
+ * `createExclusive` is the whole argument for a separate factory: it is the one
333
+ * operation that must be atomic against another PROCESS, and it is spelled with
334
+ * the `wx` flag rather than a read-then-write for exactly that reason.
335
+ */
336
+ export declare const nodeSafetyFs: LedgerFs & Pick<AttemptFs, 'createExclusive'> & {
337
+ readDir(path: string): Promise<string[]>;
338
+ };
339
+ //# sourceMappingURL=loop-safety-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loop-safety-store.d.ts","sourceRoot":"","sources":["../src/loop-safety-store.ts"],"names":[],"mappings":"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"}