looply-cli 0.0.0-stage → 0.2.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 (785) 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 +2719 -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/server-client.d.ts +766 -0
  605. package/dist/server-client.d.ts.map +1 -0
  606. package/dist/server-client.js +475 -0
  607. package/dist/server-client.js.map +1 -0
  608. package/dist/session-adapter-runtime.d.ts +195 -0
  609. package/dist/session-adapter-runtime.d.ts.map +1 -0
  610. package/dist/session-adapter-runtime.js +373 -0
  611. package/dist/session-adapter-runtime.js.map +1 -0
  612. package/dist/session-checkpoint-runtime.d.ts +62 -0
  613. package/dist/session-checkpoint-runtime.d.ts.map +1 -0
  614. package/dist/session-checkpoint-runtime.js +268 -0
  615. package/dist/session-checkpoint-runtime.js.map +1 -0
  616. package/dist/session-control-transport.d.ts +106 -0
  617. package/dist/session-control-transport.d.ts.map +1 -0
  618. package/dist/session-control-transport.js +232 -0
  619. package/dist/session-control-transport.js.map +1 -0
  620. package/dist/session-observation-store.d.ts +98 -0
  621. package/dist/session-observation-store.d.ts.map +1 -0
  622. package/dist/session-observation-store.js +155 -0
  623. package/dist/session-observation-store.js.map +1 -0
  624. package/dist/session-observe-runtime.d.ts +123 -0
  625. package/dist/session-observe-runtime.d.ts.map +1 -0
  626. package/dist/session-observe-runtime.js +317 -0
  627. package/dist/session-observe-runtime.js.map +1 -0
  628. package/dist/session-store.d.ts +98 -0
  629. package/dist/session-store.d.ts.map +1 -0
  630. package/dist/session-store.js +116 -0
  631. package/dist/session-store.js.map +1 -0
  632. package/dist/sessions-cmd.d.ts +202 -0
  633. package/dist/sessions-cmd.d.ts.map +1 -0
  634. package/dist/sessions-cmd.js +609 -0
  635. package/dist/sessions-cmd.js.map +1 -0
  636. package/dist/settings-overlay.d.ts +53 -0
  637. package/dist/settings-overlay.d.ts.map +1 -0
  638. package/dist/settings-overlay.js +175 -0
  639. package/dist/settings-overlay.js.map +1 -0
  640. package/dist/setup-prompt.d.ts +34 -0
  641. package/dist/setup-prompt.d.ts.map +1 -0
  642. package/dist/setup-prompt.js +92 -0
  643. package/dist/setup-prompt.js.map +1 -0
  644. package/dist/setup.d.ts +103 -0
  645. package/dist/setup.d.ts.map +1 -0
  646. package/dist/setup.js +283 -0
  647. package/dist/setup.js.map +1 -0
  648. package/dist/shared-grants.d.ts +164 -0
  649. package/dist/shared-grants.d.ts.map +1 -0
  650. package/dist/shared-grants.js +242 -0
  651. package/dist/shared-grants.js.map +1 -0
  652. package/dist/signals.d.ts +55 -0
  653. package/dist/signals.d.ts.map +1 -0
  654. package/dist/signals.js +85 -0
  655. package/dist/signals.js.map +1 -0
  656. package/dist/source-cmd.d.ts +201 -0
  657. package/dist/source-cmd.d.ts.map +1 -0
  658. package/dist/source-cmd.js +684 -0
  659. package/dist/source-cmd.js.map +1 -0
  660. package/dist/source-verdict.d.ts +99 -0
  661. package/dist/source-verdict.d.ts.map +1 -0
  662. package/dist/source-verdict.js +182 -0
  663. package/dist/source-verdict.js.map +1 -0
  664. package/dist/spend-ledger.d.ts +350 -0
  665. package/dist/spend-ledger.d.ts.map +1 -0
  666. package/dist/spend-ledger.js +546 -0
  667. package/dist/spend-ledger.js.map +1 -0
  668. package/dist/stale-run-sweep.d.ts +79 -0
  669. package/dist/stale-run-sweep.d.ts.map +1 -0
  670. package/dist/stale-run-sweep.js +116 -0
  671. package/dist/stale-run-sweep.js.map +1 -0
  672. package/dist/start-attempts.d.ts +385 -0
  673. package/dist/start-attempts.d.ts.map +1 -0
  674. package/dist/start-attempts.js +613 -0
  675. package/dist/start-attempts.js.map +1 -0
  676. package/dist/status-cmd.d.ts +28 -0
  677. package/dist/status-cmd.d.ts.map +1 -0
  678. package/dist/status-cmd.js +116 -0
  679. package/dist/status-cmd.js.map +1 -0
  680. package/dist/stop-follow-up.d.ts +107 -0
  681. package/dist/stop-follow-up.d.ts.map +1 -0
  682. package/dist/stop-follow-up.js +172 -0
  683. package/dist/stop-follow-up.js.map +1 -0
  684. package/dist/surface-lease.d.ts +118 -0
  685. package/dist/surface-lease.d.ts.map +1 -0
  686. package/dist/surface-lease.js +485 -0
  687. package/dist/surface-lease.js.map +1 -0
  688. package/dist/sync.d.ts +54 -0
  689. package/dist/sync.d.ts.map +1 -0
  690. package/dist/sync.js +93 -0
  691. package/dist/sync.js.map +1 -0
  692. package/dist/syncing-ledger.d.ts +45 -0
  693. package/dist/syncing-ledger.d.ts.map +1 -0
  694. package/dist/syncing-ledger.js +53 -0
  695. package/dist/syncing-ledger.js.map +1 -0
  696. package/dist/temp-fixtures.d.ts +68 -0
  697. package/dist/temp-fixtures.d.ts.map +1 -0
  698. package/dist/temp-fixtures.js +38 -0
  699. package/dist/temp-fixtures.js.map +1 -0
  700. package/dist/token-window.d.ts +84 -0
  701. package/dist/token-window.d.ts.map +1 -0
  702. package/dist/token-window.js +143 -0
  703. package/dist/token-window.js.map +1 -0
  704. package/dist/tool-bridge.d.ts +177 -0
  705. package/dist/tool-bridge.d.ts.map +1 -0
  706. package/dist/tool-bridge.js +329 -0
  707. package/dist/tool-bridge.js.map +1 -0
  708. package/dist/tool-call-record.d.ts +197 -0
  709. package/dist/tool-call-record.d.ts.map +1 -0
  710. package/dist/tool-call-record.js +276 -0
  711. package/dist/tool-call-record.js.map +1 -0
  712. package/dist/tool-protocol.d.ts +135 -0
  713. package/dist/tool-protocol.d.ts.map +1 -0
  714. package/dist/tool-protocol.js +104 -0
  715. package/dist/tool-protocol.js.map +1 -0
  716. package/dist/tool-worker.d.ts +3 -0
  717. package/dist/tool-worker.d.ts.map +1 -0
  718. package/dist/tool-worker.js +478 -0
  719. package/dist/tool-worker.js.map +1 -0
  720. package/dist/toolchain-mirror.d.ts +86 -0
  721. package/dist/toolchain-mirror.d.ts.map +1 -0
  722. package/dist/toolchain-mirror.js +307 -0
  723. package/dist/toolchain-mirror.js.map +1 -0
  724. package/dist/trusted-git.d.ts +243 -0
  725. package/dist/trusted-git.d.ts.map +1 -0
  726. package/dist/trusted-git.js +920 -0
  727. package/dist/trusted-git.js.map +1 -0
  728. package/dist/ui.d.ts +76 -0
  729. package/dist/ui.d.ts.map +1 -0
  730. package/dist/ui.js +118 -0
  731. package/dist/ui.js.map +1 -0
  732. package/dist/untrusted-exec.d.ts +275 -0
  733. package/dist/untrusted-exec.d.ts.map +1 -0
  734. package/dist/untrusted-exec.js +479 -0
  735. package/dist/untrusted-exec.js.map +1 -0
  736. package/dist/untrusted-gate.d.ts +73 -0
  737. package/dist/untrusted-gate.d.ts.map +1 -0
  738. package/dist/untrusted-gate.js +226 -0
  739. package/dist/untrusted-gate.js.map +1 -0
  740. package/dist/uploader.d.ts +153 -0
  741. package/dist/uploader.d.ts.map +1 -0
  742. package/dist/uploader.js +204 -0
  743. package/dist/uploader.js.map +1 -0
  744. package/dist/verifier.d.ts +66 -0
  745. package/dist/verifier.d.ts.map +1 -0
  746. package/dist/verifier.js +170 -0
  747. package/dist/verifier.js.map +1 -0
  748. package/dist/verify-apply.d.ts +26 -0
  749. package/dist/verify-apply.d.ts.map +1 -0
  750. package/dist/verify-apply.js +36 -0
  751. package/dist/verify-apply.js.map +1 -0
  752. package/dist/verify-cmd.d.ts +44 -0
  753. package/dist/verify-cmd.d.ts.map +1 -0
  754. package/dist/verify-cmd.js +125 -0
  755. package/dist/verify-cmd.js.map +1 -0
  756. package/dist/verify-pass.d.ts +73 -0
  757. package/dist/verify-pass.d.ts.map +1 -0
  758. package/dist/verify-pass.js +103 -0
  759. package/dist/verify-pass.js.map +1 -0
  760. package/dist/welcome.d.ts +43 -0
  761. package/dist/welcome.d.ts.map +1 -0
  762. package/dist/welcome.js +116 -0
  763. package/dist/welcome.js.map +1 -0
  764. package/dist/workspace-provisioner.d.ts +65 -0
  765. package/dist/workspace-provisioner.d.ts.map +1 -0
  766. package/dist/workspace-provisioner.js +66 -0
  767. package/dist/workspace-provisioner.js.map +1 -0
  768. package/dist/workspace-quarantine.d.ts +64 -0
  769. package/dist/workspace-quarantine.d.ts.map +1 -0
  770. package/dist/workspace-quarantine.js +156 -0
  771. package/dist/workspace-quarantine.js.map +1 -0
  772. package/dist/workspace-residue-sweep.d.ts +113 -0
  773. package/dist/workspace-residue-sweep.d.ts.map +1 -0
  774. package/dist/workspace-residue-sweep.js +158 -0
  775. package/dist/workspace-residue-sweep.js.map +1 -0
  776. package/dist/workspace.d.ts +639 -0
  777. package/dist/workspace.d.ts.map +1 -0
  778. package/dist/workspace.js +2026 -0
  779. package/dist/workspace.js.map +1 -0
  780. package/package.json +54 -6
  781. package/win/CredProbe.cs +64 -0
  782. package/win/FakeClaude.cs +56 -0
  783. package/win/HandleProbe.cs +116 -0
  784. package/win/TokenProbe.cs +53 -0
  785. package/win/appcontainer.ps1 +500 -0
@@ -0,0 +1,576 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.scopedQueue = scopedQueue;
4
+ exports.resolveGoalBinding = resolveGoalBinding;
5
+ exports.splitGoalWork = splitGoalWork;
6
+ exports.currentCompilerPlanExists = currentCompilerPlanExists;
7
+ exports.currentPlanRevision = currentPlanRevision;
8
+ exports.decideCompile = decideCompile;
9
+ exports.contradictingItems = contradictingItems;
10
+ exports.stillTheAuthority = stillTheAuthority;
11
+ exports.materialiseGoalPlan = materialiseGoalPlan;
12
+ exports.adoptGoalItems = adoptGoalItems;
13
+ exports.releaseGoalItems = releaseGoalItems;
14
+ exports.nodeGoalReleaser = nodeGoalReleaser;
15
+ const core_1 = require("@looply/core");
16
+ const goal_compile_1 = require("./goal-compile");
17
+ const queue_store_1 = require("./queue-store");
18
+ /**
19
+ * The same queue, showing only what this run owns.
20
+ *
21
+ * `list()` is filtered and NOTHING else is. That asymmetry is the whole design:
22
+ * `list()` is how work is chosen, so scoping it is what stops two runs picking
23
+ * the same item — but `get()` and `update()` are how work already in hand is
24
+ * read back and written, and scoping those would make a run unable to finish an
25
+ * item whose ownership changed underneath it. A run that cannot write down what
26
+ * it just did is worse than one that sees an item it will not pick.
27
+ *
28
+ * The filter is symmetric: a goal run sees only its own items, and an unbound
29
+ * run sees only unowned ones. The second half matters as much as the first —
30
+ * without it, a hand-typed `looply run` would quietly pick up work a goal is in
31
+ * the middle of.
32
+ */
33
+ function scopedQueue(queue, scope) {
34
+ if (scope === null) {
35
+ // Still wrapped, not returned as-is: an unbound run must be hidden from
36
+ // goal-owned work too, and returning the raw store here is exactly the
37
+ // asymmetry that would leave one direction unguarded.
38
+ return {
39
+ list: () => queue.list().filter((i) => (0, core_1.isEligibleFor)(i, null)),
40
+ get: (id) => queue.get(id),
41
+ update: (id, v, patch) => queue.update(id, v, patch),
42
+ };
43
+ }
44
+ return {
45
+ list: () => queue.list().filter((i) => (0, core_1.isEligibleFor)(i, scope)),
46
+ get: (id) => queue.get(id),
47
+ update: (id, v, patch) => queue.update(id, v, patch),
48
+ };
49
+ }
50
+ /**
51
+ * Resolve the goal a Start named, refreshing the local mirror only if it must.
52
+ *
53
+ * The happy path is deliberately OFFLINE. The daemon pulls goals on its own
54
+ * cadence, so by the time it spawns a run the mirror almost always already
55
+ * holds the version the phone was looking at — and a run that phoned home
56
+ * before it could begin would make the server a dependency of doing any work at
57
+ * all, which is the opposite of what this product is.
58
+ *
59
+ * The version is what makes that safe. It is not a freshness heuristic: the
60
+ * server stamped it at the moment the command was created, so an exact match
61
+ * proves the mirror holds the very goal the person tapped Start on, whatever
62
+ * has happened since.
63
+ */
64
+ async function resolveGoalBinding(deps) {
65
+ const { goalId, goalVersion, mirror, projectId } = deps;
66
+ if (goalId === undefined || goalVersion === undefined)
67
+ return { kind: 'unbound' };
68
+ const first = mirror.get(goalId);
69
+ if (first !== null) {
70
+ if (first.version === goalVersion)
71
+ return check(first, projectId);
72
+ if (first.version > goalVersion) {
73
+ // This machine is AHEAD of the Start. Goal versions only ever go up, so a
74
+ // command naming 7 against a mirror holding 8 is describing a past that
75
+ // cannot come back — and no server is needed to know it. Refused
76
+ // terminally rather than retried: the old answer was an hour of pointless
77
+ // three-second retries for a command that could never become current.
78
+ return {
79
+ kind: 'refused',
80
+ reason: `goal ${goalId} has moved on since that Start was made (version ${first.version}, not ${goalVersion}) — start it again`,
81
+ lapse: 'superseded',
82
+ };
83
+ }
84
+ }
85
+ // Not mirrored here, or mirrored BEHIND what the phone saw. Both are answered
86
+ // the same way: ask, once. Being behind is the machine's problem, not the
87
+ // command's, so it stays retryable.
88
+ if (!deps.refresh) {
89
+ return {
90
+ kind: 'retry',
91
+ reason: first === null
92
+ ? `goal ${goalId} is not known here yet, and this machine is not paired to ask`
93
+ : `goal ${goalId} is at version ${first.version} here but the phone saw ${goalVersion}, and this machine is not paired to ask`,
94
+ };
95
+ }
96
+ if ((await deps.refresh()) === 'unreachable') {
97
+ // Retryable, NOT refused. The next attempt may well reach the server, and
98
+ // turning a network blip into a dead command would lose the person's tap.
99
+ return { kind: 'retry', reason: `could not reach the server to check goal ${goalId}` };
100
+ }
101
+ const second = mirror.get(goalId);
102
+ if (second === null) {
103
+ // The server was asked and does not have it. Nothing about waiting will
104
+ // change that.
105
+ return { kind: 'refused', reason: `there is no goal ${goalId} in this project`, lapse: 'gone' };
106
+ }
107
+ if (second.version !== goalVersion) {
108
+ // The goal moved on between the tap and now. Acting on it would carry out
109
+ // an instruction against wording nobody approved, so the phone has to ask
110
+ // again with what it can now see.
111
+ return {
112
+ kind: 'refused',
113
+ reason: `goal ${goalId} has changed since that Start was made (version ${second.version}, not ${goalVersion}) — start it again`,
114
+ lapse: 'superseded',
115
+ };
116
+ }
117
+ return check(second, projectId);
118
+ }
119
+ function check(goal, projectId) {
120
+ if (goal.projectId !== projectId) {
121
+ // A mirror holding another project's goal is a paired-machine mix-up, not a
122
+ // transient one. Running it here would work this tree against a goal
123
+ // written about a different repository.
124
+ return { kind: 'refused', reason: `goal ${goal.id} belongs to another project`, lapse: 'gone' };
125
+ }
126
+ if (goal.state !== 'active') {
127
+ // Version match and state are independent: a goal can be abandoned without
128
+ // its wording changing, so the stamp alone does not prove it may run.
129
+ return {
130
+ kind: 'refused',
131
+ reason: `goal ${goal.id} is ${goal.state} — only an active goal can be worked on`,
132
+ lapse: goal.state === 'abandoned' ? 'abandoned' : 'gone',
133
+ };
134
+ }
135
+ return { kind: 'bound', goal };
136
+ }
137
+ function splitGoalWork(items, scope) {
138
+ const split = {
139
+ currentPlan: [],
140
+ manual: [],
141
+ olderPlans: [],
142
+ unknownPlans: [],
143
+ forged: [],
144
+ newerPlans: [],
145
+ };
146
+ for (const item of items) {
147
+ switch ((0, core_1.classifyForScope)(item, scope)) {
148
+ case 'current-plan':
149
+ split.currentPlan.push(item);
150
+ break;
151
+ case 'manual':
152
+ split.manual.push(item);
153
+ break;
154
+ case 'older-plan':
155
+ split.olderPlans.push(item);
156
+ break;
157
+ case 'unknown-plan':
158
+ split.unknownPlans.push(item);
159
+ break;
160
+ case 'forged-provenance':
161
+ split.forged.push(item);
162
+ break;
163
+ case 'newer-plan':
164
+ split.newerPlans.push(item);
165
+ break;
166
+ /**
167
+ * REVISIONS BUCKET WITH THEIR VERSIONS, because they are the same facts
168
+ * one level down.
169
+ *
170
+ * These two cases used to fall through into nothing, which was harmless
171
+ * only while a run selected with a revision-BLIND scope — no item could
172
+ * ever classify as either. Making selection revision-aware turns that
173
+ * silence into a hole: an older revision would vanish from `olderPlans`
174
+ * and a newer one from `newerPlans`, so `decideCompile` would stop seeing
175
+ * the contradiction it exists to catch.
176
+ */
177
+ case 'older-revision':
178
+ split.olderPlans.push(item);
179
+ break;
180
+ case 'newer-revision':
181
+ split.newerPlans.push(item);
182
+ break;
183
+ case 'unowned':
184
+ case 'not-ours':
185
+ break;
186
+ }
187
+ }
188
+ return split;
189
+ }
190
+ /**
191
+ * Has the compiler already produced a plan for THIS version of this goal?
192
+ *
193
+ * Counts `current-plan` and nothing else. Not manual work, which a person
194
+ * provided rather than the compiler planning it; not an earlier plan, whose
195
+ * counting was the original defect; and not a provenance-unknown legacy item,
196
+ * because "some compiler once made this" is not evidence that THIS version has
197
+ * a plan — treating it as such would leave an amended goal unable to compile
198
+ * for ever, which is the same defect wearing a different hat.
199
+ *
200
+ * Existence, not usability: a finished current plan still exists, and that is
201
+ * what stops a second one being compiled for the same version.
202
+ */
203
+ function currentCompilerPlanExists(items, scope) {
204
+ return splitGoalWork(items, scope).currentPlan.length > 0;
205
+ }
206
+ /**
207
+ * How many plans this goal version has had, read back off the queue.
208
+ *
209
+ * THE ONLY HOME THAT FAILS CLOSED, and the reason is that it is not a separate
210
+ * fact at all — it is a property of the rows themselves. queue.json has writers
211
+ * that do not hold the lease, so a stale one can rename its own snapshot over
212
+ * the file; but when it does, the revision number and the plan it counts go in
213
+ * the SAME rename. The next Start then sees the earlier revision and
214
+ * re-materialises that one, which is a retry. It can never see a later revision
215
+ * than the work that survives, so a clobber cannot skip a budget forward.
216
+ *
217
+ * Counted over the goal's own compiled rows at this VERSION, whatever revision
218
+ * they belong to — deliberately NOT through `scopedQueue`, which hides earlier
219
+ * revisions and would therefore forget they ever happened. `releaseOnAbandon`
220
+ * keeps `closed` rows owned, so the marker each revision leaves behind survives
221
+ * an abandonment that frees everything still workable.
222
+ *
223
+ * Zero means this version has had no plan yet. An absent revision reads as 1,
224
+ * which is what every plan compiled before revisions existed is.
225
+ */
226
+ function currentPlanRevision(items, goalId, goalVersion) {
227
+ let highest = 0;
228
+ for (const item of items) {
229
+ if ((item.goalId ?? null) !== goalId)
230
+ continue;
231
+ if (item.source !== core_1.COMPILER_SOURCE)
232
+ continue;
233
+ if (item.compiledForGoalVersion !== goalVersion)
234
+ continue;
235
+ const revision = (0, core_1.planRevisionOf)(item);
236
+ if (revision > highest)
237
+ highest = revision;
238
+ }
239
+ return highest;
240
+ }
241
+ /**
242
+ * Should this run compile a plan for the goal version it is bound to?
243
+ *
244
+ * THE ONE AUTHORITY. It existed twice before — once in `run-cmd`, once
245
+ * re-implemented in the exercise that claims to prove `run-cmd` — and the two
246
+ * had already drifted apart: the copy used `nothing scoped-visible at all`,
247
+ * which answers CASE 7 (an older plan kept, the person's own work now finished,
248
+ * no plan for this version) with "do not compile" while the real composition
249
+ * root compiles. A test written against the copy would have proved the opposite
250
+ * of the behaviour it was named after and passed. Two predicates for one
251
+ * question is the defect; this is the fix, and the exercise now calls it.
252
+ *
253
+ * The order is the argument:
254
+ *
255
+ * unbound a run with no goal never compiles — there is no intent to
256
+ * compile FROM.
257
+ * contradicted the queue holds a plan for a LATER version, which is
258
+ * durable evidence this run's authority is stale. `run-cmd`
259
+ * refuses terminally before ever reaching here; this is the
260
+ * second lock, so that removing the first cannot silently
261
+ * turn a contradiction into a fresh plan.
262
+ * plan-exists this version has already had one. EXISTENCE, not progress:
263
+ * a finished or stalled plan still counts, and that is what
264
+ * makes same-version replanning impossible in this phase.
265
+ * work-in-progress something eligible can still move — work a person
266
+ * supplied by hand, or this version's own plan — so get on
267
+ * with it rather than planning around it.
268
+ *
269
+ * `eligible` must be the VERSION-AWARE set (a `scopedQueue` listing), never the
270
+ * raw queue: counting an older plan's items as "work in progress" is how an
271
+ * amended goal would never get a plan of its own.
272
+ */
273
+ function decideCompile(split, eligible, scope) {
274
+ if (scope === null)
275
+ return { compile: false, because: 'unbound' };
276
+ if (split.newerPlans.length)
277
+ return { compile: false, because: 'contradicted' };
278
+ if (split.currentPlan.length)
279
+ return { compile: false, because: 'plan-exists' };
280
+ // Spelt out rather than folded into the return, because which `workLeft`
281
+ // answers permit a compile is the whole anti-loop rule: `finished` and
282
+ // `stalled` and `none` all permit one, and only for a version with no plan.
283
+ if ((0, core_1.workLeft)(eligible) === 'working')
284
+ return { compile: false, because: 'work-in-progress' };
285
+ return { compile: true };
286
+ }
287
+ /**
288
+ * Durable evidence that this run must not act under.
289
+ *
290
+ * Returned as the offending items rather than a boolean so the refusal can say
291
+ * which ones and at what version, which is the only useful thing to tell
292
+ * somebody whose queue has been rewritten underneath them.
293
+ */
294
+ function contradictingItems(items, scope) {
295
+ return items.filter((i) => (0, core_1.contradictsScope)((0, core_1.classifyForScope)(i, scope)));
296
+ }
297
+ /**
298
+ * Whether this row is the receipt a plan revision leaves, rather than work.
299
+ *
300
+ * Structural, not a flag: the id is derived from the goal, the version and the
301
+ * revision, so a row can only be a receipt by ALREADY having the id a receipt
302
+ * for those exact fields would have. Nothing can claim the exemption by
303
+ * asserting it.
304
+ */
305
+ function isPlanReceipt(item, goalId) {
306
+ const version = item.compiledForGoalVersion;
307
+ const revision = item.compiledForPlanRevision;
308
+ if (item.state !== 'closed' || version === undefined || revision === undefined)
309
+ return false;
310
+ return item.id === (0, goal_compile_1.planMarkerId)(goalId, version, revision);
311
+ }
312
+ function stillTheAuthority(fresh, goalId, boundVersion,
313
+ /**
314
+ * The wording this run was BOUND to, when the caller still has it.
315
+ *
316
+ * ⚠️ OPTIONAL, AND ABSENT MEANS ABSENT. Three of the four places that refuse
317
+ * a superseded goal hold only one of the two texts — a Start carries an id
318
+ * and a number, and a queue's contradicting rows carry a version — so they
319
+ * genuinely cannot answer "which part changed" and are not asked to pretend.
320
+ * Given nothing, this says exactly what it said before.
321
+ */
322
+ boundText) {
323
+ // Could not find out. NOT "the goal moved" — that would be a terminal
324
+ // refusal, told to a person, about a file that was briefly busy.
325
+ if (!fresh.ok)
326
+ return { ok: false, reason: fresh.because, lapse: 'unreadable', unknown: true };
327
+ const now = fresh.goals.find((g) => g.id === goalId) ?? null;
328
+ if (now === null)
329
+ return { ok: false, reason: 'it is no longer known on this machine', lapse: 'gone' };
330
+ if (now.version > boundVersion) {
331
+ /**
332
+ * WHAT MOVED, AND NOT ONLY THAT IT MOVED (the audit's C-05).
333
+ *
334
+ * The numbers were the whole sentence: a person was told their Start was
335
+ * refused because the goal is at 8 and they named 7, and left to find out
336
+ * for themselves whether the words they care about are among what changed.
337
+ * Both texts are in hand here whenever the caller has the binding — which
338
+ * is the case after a compile, the ten-minute window where this fires most
339
+ * — so the comparison is made rather than left to the reader.
340
+ *
341
+ * ⚠️ ADDED TO THE REASON, NOT TO THE SHAPE. `AuthorityLapse` gains no
342
+ * member, no branch changes its verdict, and nothing newly refuses: the
343
+ * four quarantines refuse exactly what they refused before. One sentence
344
+ * is read in four places — the first-plan compile note and three adaptive
345
+ * decisions — so saying more here says more in all of them, with no new
346
+ * path to keep in step.
347
+ */
348
+ const said = boundText === undefined ? '' : (0, core_1.describeWordingChange)((0, core_1.wordingChange)(boundText, now.text));
349
+ return { ok: false, reason: `it has moved on to version ${now.version}${said}`, lapse: 'superseded' };
350
+ }
351
+ if (now.version < boundVersion) {
352
+ // Behind what this Start is bound to. Not authority to act under: a mirror
353
+ // that went backwards is a mirror something rewrote, and writing here would
354
+ // be putting work behind the authority. A G@8 Start can never become a G@9
355
+ // one either — this only ever refuses, never re-binds.
356
+ return { ok: false, reason: `this machine’s copy has gone back to version ${now.version}`, lapse: 'behind' };
357
+ }
358
+ if (now.state !== 'active') {
359
+ // `abandoned` is the only non-active state a bound goal reaches in practice;
360
+ // `draft` would mean the server un-chose it, which is equally not authority.
361
+ return { ok: false, reason: `it is ${now.state}`, lapse: now.state === 'abandoned' ? 'abandoned' : 'gone' };
362
+ }
363
+ return { ok: true };
364
+ }
365
+ /**
366
+ * Write a compiled plan into the queue, as one durable batch.
367
+ *
368
+ * The choke point for the ownership invariant, and the only reason this is a
369
+ * function rather than a call to `insertAll` at the call site: EVERY item a
370
+ * compilation produces must be born owned by the goal it was compiled for, and
371
+ * this is where that is enforced rather than hoped for.
372
+ *
373
+ * The invariant is forced by selection, not chosen. `scopedQueue` filters
374
+ * symmetrically: an unowned compiled item would be invisible to the very run
375
+ * that compiled it, and visible to an unbound run that knows nothing about the
376
+ * goal. So an item arriving here without the right owner is a bug in the caller,
377
+ * and refusing the WHOLE batch is the only safe answer — a partial plan is a
378
+ * shape nobody asked for.
379
+ *
380
+ * Idempotent through `insertAll`: an id already in the queue is skipped, so a
381
+ * retry after a crash lands only what is missing, and a retry after a complete
382
+ * write lands nothing. That works precisely because compiled ids are derived
383
+ * from the goal, its version and the step, rather than minted per attempt.
384
+ */
385
+ async function materialiseGoalPlan(queue, goalId, items) {
386
+ for (const item of items) {
387
+ if ((item.goalId ?? null) !== goalId) {
388
+ return {
389
+ ok: false,
390
+ problem: `compiled item ${item.id} is not owned by goal ${goalId} — refusing the whole plan`,
391
+ };
392
+ }
393
+ if (item.state !== 'draft' && !isPlanReceipt(item, goalId)) {
394
+ // Nothing in this system is born pickable. A compiled step is a claim
395
+ // that some work is worth doing; the verify pass is what turns a claim
396
+ // into something a round may pick.
397
+ //
398
+ // The one exception is the row a revision leaves to say it happened. It
399
+ // is born `closed`, which is STRICTER than draft rather than looser —
400
+ // nothing picks it, nothing verifies it, and it can never be `done` — and
401
+ // it is recognised by recomputing its own derived id from its own fields,
402
+ // so a hand-written closed row cannot pass as one.
403
+ return { ok: false, problem: `compiled item ${item.id} is born ${item.state}, not draft` };
404
+ }
405
+ }
406
+ const written = await queue.insertAll(items);
407
+ if (!written.ok) {
408
+ // The only failure `insertAll` reports is one id twice in one batch, which
409
+ // the compiler already collapses. Reaching this means a caller built the
410
+ // batch some other way.
411
+ return { ok: false, problem: `the plan names item ${written.id} twice` };
412
+ }
413
+ return { ok: true, created: written.inserted.length, alreadyThere: written.alreadyPresent.length };
414
+ }
415
+ /**
416
+ * Hand a set of items to a goal, all of them or none.
417
+ *
418
+ * One durable write, because the alternative — `update` per item — can be
419
+ * interrupted halfway and leave a goal owning some of what the phone named and
420
+ * not the rest, with nothing recording which. A caller retrying that has no way
421
+ * to tell a partial adoption from a fresh one.
422
+ *
423
+ * Every refusal names the item. Adoption is a deliberate act performed from a
424
+ * screen where the person can see the item, so "one of these is wrong" is not a
425
+ * useful answer.
426
+ */
427
+ async function adoptGoalItems(queue, goalId, itemIds) {
428
+ const patches = [];
429
+ let alreadyOwned = 0;
430
+ for (const id of itemIds) {
431
+ const item = queue.get(id);
432
+ if (item === undefined)
433
+ return { ok: false, problem: `no item ${id} here` };
434
+ const owner = item.goalId ?? null;
435
+ if (owner === goalId) {
436
+ // Already ours. Counted rather than patched, so a redelivered start-run
437
+ // adopting the same set is a no-op instead of a version bump that would
438
+ // invalidate anything holding a copy.
439
+ alreadyOwned += 1;
440
+ continue;
441
+ }
442
+ if (owner !== null) {
443
+ // A transfer, not an adoption. Refused rather than performed: the other
444
+ // goal may have a run working this very item, and taking it silently is
445
+ // how two runs end up editing one item's code. Letting it go from the
446
+ // first goal is an explicit act with its own command.
447
+ return { ok: false, problem: `item ${id} belongs to goal ${owner} — let it go from there first` };
448
+ }
449
+ if (item.state === 'in_progress') {
450
+ // Unowned and in progress means a run without a goal is working it right
451
+ // now. Adopting it would move it out of that run's view mid-round.
452
+ return { ok: false, problem: `item ${id} is being worked on right now` };
453
+ }
454
+ patches.push({ id, expectedVersion: item.version, patch: { goalId } });
455
+ }
456
+ const written = await queue.patchAll(patches);
457
+ if (!written.ok)
458
+ return { ok: false, problem: describeBatchFailure(written) };
459
+ return { ok: true, adopted: written.items.length, alreadyOwned };
460
+ }
461
+ /**
462
+ * Let go of everything a goal owns that can still be worked.
463
+ *
464
+ * Takes no item ids, deliberately. The phone that abandons a goal does not know
465
+ * what that goal came to own — items are adopted over a whole evening, and a
466
+ * list assembled by a client is a list that is already stale. The instruction is
467
+ * "let this goal's work go"; the machine that holds the queue decides what that
468
+ * means, item by item, from {@link releaseOnAbandon}.
469
+ *
470
+ * Idempotent: running it twice releases nothing the second time, because there
471
+ * is nothing left owned that is releasable.
472
+ */
473
+ async function releaseGoalItems(queue, goalId) {
474
+ const patches = [];
475
+ let heldByARun = 0;
476
+ let keptAsRecord = 0;
477
+ for (const item of queue.list()) {
478
+ if ((item.goalId ?? null) !== goalId)
479
+ continue;
480
+ const decision = (0, core_1.releaseOnAbandon)(item.state);
481
+ if (decision === 'held-by-a-run') {
482
+ heldByARun += 1;
483
+ continue;
484
+ }
485
+ if (decision === 'keeps-its-record') {
486
+ keptAsRecord += 1;
487
+ continue;
488
+ }
489
+ // Explicit null, not a deleted key. Both read as unowned, but a reader
490
+ // comparing two queue files should be able to see that something happened.
491
+ patches.push({ id: item.id, expectedVersion: item.version, patch: { goalId: null } });
492
+ }
493
+ const written = await queue.patchAll(patches);
494
+ if (!written.ok) {
495
+ // Every id and version came from a synchronous pass over the store's own
496
+ // map a moment ago, with no await in between, so there is no interleaving
497
+ // that could make one stale. Reachable only through a bug in this file.
498
+ throw new Error(`release: the queue refused a batch it produced itself — ${describeBatchFailure(written)}`);
499
+ }
500
+ return { released: written.items.length, heldByARun, keptAsRecord };
501
+ }
502
+ /**
503
+ * The real one, over the queue on disk.
504
+ *
505
+ * Two things here are load-bearing, and both were learned from a race that
506
+ * reached a state neither command's contract described.
507
+ *
508
+ * FIRST, it TAKES the tree rather than merely looking at it. The daemon and the
509
+ * run are separate processes over one `queue.json`; a check followed by a write
510
+ * leaves a window in which the run can take the lease and adopt in between, and
511
+ * the release then completes against a queue that no longer describes reality.
512
+ * The lease is already an exclusive create — the only mutual exclusion in this
513
+ * system — so the release holds it for the few milliseconds it writes, exactly
514
+ * as a run does. A `LeaseHeldError` is the busy answer, and it arrives from the
515
+ * filesystem rather than from a check that can go stale.
516
+ *
517
+ * SECOND, it writes the abandonment into the local goal mirror. Releasing the
518
+ * items is not enough on its own: a Start bound to G@7 that is still in flight,
519
+ * or that arrives later on a machine whose mirror is behind and offline, would
520
+ * resolve against `active` and adopt the very items this just freed — into a
521
+ * goal nobody is pursuing, with the one-shot release already acked and gone.
522
+ * The release IS this machine being told the goal was let go, so it remembers.
523
+ * That is not instant revocation and it does not need the server: a machine
524
+ * that has not heard still starts, exactly as before. It only refuses once it
525
+ * has carried the release out itself.
526
+ */
527
+ function nodeGoalReleaser(stateDir, fs, leases, cliVersion,
528
+ /** The mirror to record the abandonment in. Absent in tests that do not keep one. */
529
+ goals) {
530
+ return {
531
+ async release(goalId, goalVersion) {
532
+ let token;
533
+ try {
534
+ token = (await leases.acquire({
535
+ // Honest about what is holding the tree and why. A release holds it
536
+ // for a single write, so this is unlikely ever to be seen — but a
537
+ // lease nobody can explain is worse than a wordy one.
538
+ runId: `release-${goalId}`,
539
+ branch: '(letting a goal go)',
540
+ baseBranch: '(letting a goal go)',
541
+ cliVersion,
542
+ })).token;
543
+ }
544
+ catch {
545
+ // Held by a live run, or not decidable. Both wait: the cost of being
546
+ // wrong is a lost round of work, and waiting costs only time.
547
+ return { busy: 'the working tree is busy — the release waits for it' };
548
+ }
549
+ try {
550
+ const queue = new queue_store_1.QueueStore(stateDir, fs);
551
+ await queue.open();
552
+ const outcome = await releaseGoalItems(queue, goalId);
553
+ // AFTER the items, so a crash between the two leaves the mirror still
554
+ // saying `active` and the release still deliverable — which retries
555
+ // correctly. The other order would leave a goal marked abandoned here
556
+ // with its work never freed and the command about to be acked.
557
+ await goals?.markAbandoned(goalId, goalVersion);
558
+ return outcome;
559
+ }
560
+ finally {
561
+ await leases.release(token);
562
+ }
563
+ },
564
+ };
565
+ }
566
+ function describeBatchFailure(r) {
567
+ switch (r.reason) {
568
+ case 'duplicate-id':
569
+ return 'the same item was named twice';
570
+ case 'not-found':
571
+ return `no item ${r.id} here`;
572
+ case 'stale-version':
573
+ return `item ${r.id} changed underneath this (now at version ${r.currentVersion})`;
574
+ }
575
+ }
576
+ //# sourceMappingURL=goal-ownership.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"goal-ownership.js","sourceRoot":"","sources":["../src/goal-ownership.ts"],"names":[],"mappings":"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"}