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,80 @@
1
+ import { type CombinedVerdict, type CrossRepoNeed } from '@looply/core';
2
+ import { type CompatibleRecord } from './compatible-sets';
3
+ /**
4
+ * `looply repos` — THE CONSUMER D7 SAYS THIS MUST HAVE.
5
+ *
6
+ * 🔴 *"Do not reduce this to a manifest writer with no consumer."* A recorded
7
+ * compatible-revision set that nothing ever asks about is a log line pretending
8
+ * to be a safeguard. This is the asking: it reads what was accepted, reads where
9
+ * the repositories actually are now, and says whether the set still holds.
10
+ *
11
+ * Three verbs, and the middle one is the whole feature:
12
+ *
13
+ * looply repos what is true now
14
+ * looply repos --accept write down the revisions as compatible
15
+ * looply repos --published <id> one repository published; the rest remain
16
+ *
17
+ * ⚠️ IT PUBLISHES NOTHING ITSELF, and that is deliberate. Publication across
18
+ * repositories is not atomic and this does not pretend otherwise: it records
19
+ * that a step happened and says what is left, so an interruption leaves a
20
+ * resumable state rather than a mystery.
21
+ */
22
+ export declare const REPOS_USAGE: string;
23
+ export interface ReposDeps {
24
+ /** Declared identities, from `repos:` in the config. */
25
+ declared(): readonly {
26
+ id: string;
27
+ path: string;
28
+ }[];
29
+ /**
30
+ * This project's own declared identity, worked out from the paths. Optional:
31
+ * a caller that omits it gets no circularity check rather than a wrong one.
32
+ */
33
+ self?(): string | null;
34
+ /**
35
+ * What this project waits for another repository to publish, from
36
+ * `cross_repo_needs:`. Absent and empty mean the same: nothing is waited for.
37
+ */
38
+ needs?(): readonly CrossRepoNeed[];
39
+ /**
40
+ * Where a repository is now.
41
+ *
42
+ * ⚠️ NULL, NEVER A GUESS. An unreadable repository must reach
43
+ * `combinedAcceptance` as absent so it answers `unmeasurable`; inventing a sha
44
+ * here would turn "I could not look" into "it has drifted".
45
+ */
46
+ revisionOf(repo: {
47
+ id: string;
48
+ path: string;
49
+ }): Promise<{
50
+ sha: string;
51
+ from: string;
52
+ } | null>;
53
+ records(): Promise<CompatibleRecord[]>;
54
+ append(record: CompatibleRecord): Promise<void>;
55
+ now(): string;
56
+ newId(): string;
57
+ out(line: string): void;
58
+ err(line: string): void;
59
+ }
60
+ export declare const EXIT_OK = 0;
61
+ export declare const EXIT_REFUSED = 3;
62
+ export declare const EXIT_USAGE = 2;
63
+ /**
64
+ * 🔴 NOTHING WAS ESTABLISHED, AND A SCRIPT MUST NOT READ IT AS A REFUSAL.
65
+ *
66
+ * A repository that could not be read has not drifted — nobody knows — and the
67
+ * two call for opposite things: a refusal is answered by fixing the drift, and
68
+ * this is answered by looking again. `sessions-cmd.ts` keeps the same fourth
69
+ * code for the same reason, in its own words: "a script that retried a refusal
70
+ * would be wrong and a script that ignored an unmeasurable would be worse".
71
+ */
72
+ export declare const EXIT_UNMEASURABLE = 4;
73
+ export declare function reposCommand(argv: readonly string[], deps: ReposDeps): Promise<number>;
74
+ /**
75
+ * ⚠️ `partial` IS NOT A FAILURE and must not exit non-zero. It is the expected
76
+ * middle of a publication that cannot be atomic, and a script that treats it as
77
+ * an error would stop exactly where it should carry on to the next repository.
78
+ */
79
+ export declare function verdictExit(v: CombinedVerdict): number;
80
+ //# sourceMappingURL=repos-cmd.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repos-cmd.d.ts","sourceRoot":"","sources":["../src/repos-cmd.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,eAAe,EACpB,KAAK,aAAa,EAEnB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAqC,KAAK,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE7F;;;;;;;;;;;;;;;;;;GAkBG;AAEH,eAAO,MAAM,WAAW,QAIZ,CAAC;AAEb,MAAM,WAAW,SAAS;IACxB,wDAAwD;IACxD,QAAQ,IAAI,SAAS;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACpD;;;OAGG;IACH,IAAI,CAAC,IAAI,MAAM,GAAG,IAAI,CAAC;IACvB;;;OAGG;IACH,KAAK,CAAC,IAAI,SAAS,aAAa,EAAE,CAAC;IACnC;;;;;;OAMG;IACH,UAAU,CAAC,IAAI,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC;IAC9F,OAAO,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;IACvC,MAAM,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,GAAG,IAAI,MAAM,CAAC;IACd,KAAK,IAAI,MAAM,CAAC;IAChB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,eAAO,MAAM,OAAO,IAAI,CAAC;AACzB,eAAO,MAAM,YAAY,IAAI,CAAC;AAC9B,eAAO,MAAM,UAAU,IAAI,CAAC;AAC5B;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB,IAAI,CAAC;AAEnC,wBAAsB,YAAY,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CA0M5F;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,eAAe,GAAG,MAAM,CAEtD"}
@@ -0,0 +1,240 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EXIT_UNMEASURABLE = exports.EXIT_USAGE = exports.EXIT_REFUSED = exports.EXIT_OK = exports.REPOS_USAGE = void 0;
4
+ exports.reposCommand = reposCommand;
5
+ exports.verdictExit = verdictExit;
6
+ const core_1 = require("@looply/core");
7
+ const compatible_sets_1 = require("./compatible-sets");
8
+ /**
9
+ * `looply repos` — THE CONSUMER D7 SAYS THIS MUST HAVE.
10
+ *
11
+ * 🔴 *"Do not reduce this to a manifest writer with no consumer."* A recorded
12
+ * compatible-revision set that nothing ever asks about is a log line pretending
13
+ * to be a safeguard. This is the asking: it reads what was accepted, reads where
14
+ * the repositories actually are now, and says whether the set still holds.
15
+ *
16
+ * Three verbs, and the middle one is the whole feature:
17
+ *
18
+ * looply repos what is true now
19
+ * looply repos --accept write down the revisions as compatible
20
+ * looply repos --published <id> one repository published; the rest remain
21
+ *
22
+ * ⚠️ IT PUBLISHES NOTHING ITSELF, and that is deliberate. Publication across
23
+ * repositories is not atomic and this does not pretend otherwise: it records
24
+ * that a step happened and says what is left, so an interruption leaves a
25
+ * resumable state rather than a mystery.
26
+ */
27
+ exports.REPOS_USAGE = [
28
+ 'looply repos where each declared repository is, and whether the accepted set still holds',
29
+ 'looply repos --accept record the current revisions as a compatible set',
30
+ 'looply repos --published <repo> record that one repository published the newest set',
31
+ ].join('\n');
32
+ exports.EXIT_OK = 0;
33
+ exports.EXIT_REFUSED = 3;
34
+ exports.EXIT_USAGE = 2;
35
+ /**
36
+ * 🔴 NOTHING WAS ESTABLISHED, AND A SCRIPT MUST NOT READ IT AS A REFUSAL.
37
+ *
38
+ * A repository that could not be read has not drifted — nobody knows — and the
39
+ * two call for opposite things: a refusal is answered by fixing the drift, and
40
+ * this is answered by looking again. `sessions-cmd.ts` keeps the same fourth
41
+ * code for the same reason, in its own words: "a script that retried a refusal
42
+ * would be wrong and a script that ignored an unmeasurable would be worse".
43
+ */
44
+ exports.EXIT_UNMEASURABLE = 4;
45
+ async function reposCommand(argv, deps) {
46
+ /**
47
+ * 🔴 THE ARGUMENTS ARE CHECKED BEFORE ANYTHING IS READ OR WRITTEN. Asked for
48
+ * both verbs at once, the first shape of this took the `--accept` branch and
49
+ * WROTE A SET — so `looply repos --published --accept`, which is a person
50
+ * mistyping one command, silently accepted a new compatible set instead of
51
+ * refusing. Two verbs is not a preference to resolve; it is a sentence with
52
+ * two meanings, and the only safe reading is neither.
53
+ */
54
+ if (argv.includes('--accept') && argv.includes('--published')) {
55
+ deps.err(`looply repos: --accept and --published are two different things to do. Pick one.\n\n${exports.REPOS_USAGE}`);
56
+ return exports.EXIT_USAGE;
57
+ }
58
+ /**
59
+ * 🔴 AN ARGUMENT THIS DOES NOT KNOW IS A REFUSAL, NOT A SHRUG. Ignoring it
60
+ * meant `looply repos --acept` — one missing letter — printed a perfectly
61
+ * true status page and exited 0, so somebody who meant to accept a set walked
62
+ * away believing there was nothing to do. That is the same silent no-op twice
63
+ * more over, and the fix is to refuse the whole class rather than each case.
64
+ */
65
+ const unknown = [];
66
+ for (let i = 0; i < argv.length; i += 1) {
67
+ if (argv[i] === '--accept')
68
+ continue;
69
+ // Whatever follows `--published` is its value; whether it names a real
70
+ // repository is a question for later, with the declarations in hand.
71
+ if (argv[i] === '--published') {
72
+ i += 1;
73
+ continue;
74
+ }
75
+ unknown.push(argv[i]);
76
+ }
77
+ if (unknown.length > 0) {
78
+ deps.err(`looply repos: ${unknown.join(', ')} — no idea what that means.\n\n${exports.REPOS_USAGE}`);
79
+ return exports.EXIT_USAGE;
80
+ }
81
+ const declared = deps.declared();
82
+ if (declared.length === 0) {
83
+ deps.err('looply repos: this project declares no other repositories. Add `repos:` to .looply/config.yaml ' +
84
+ '— each entry an id and a local path.');
85
+ return exports.EXIT_USAGE;
86
+ }
87
+ /** Read once and shared by every verb: three questions about one moment. */
88
+ const now = [];
89
+ const unreadable = [];
90
+ const shown = new Map();
91
+ for (const r of declared) {
92
+ const at = await deps.revisionOf(r);
93
+ if (at === null) {
94
+ unreadable.push(r.id);
95
+ continue;
96
+ }
97
+ now.push({ repo: r.id, sha: at.sha });
98
+ shown.set(r.id, at.from);
99
+ }
100
+ if (argv.includes('--accept')) {
101
+ if (unreadable.length > 0) {
102
+ deps.err(`looply repos --accept: refusing — ${unreadable.join(', ')} could not be read, and a set that omits a ` +
103
+ 'declared repository is a set nobody can check');
104
+ return exports.EXIT_REFUSED;
105
+ }
106
+ const setId = deps.newId();
107
+ await deps.append({ id: setId, kind: 'accepted', setId, at: deps.now(), revisions: now });
108
+ deps.out(`repos: accepted ${setId} — ${now.map((r) => `${r.repo}@${r.sha.slice(0, 7)}`).join(', ')}`);
109
+ deps.out(' nothing is published yet. `looply repos --published <repo>` records each step.');
110
+ return exports.EXIT_OK;
111
+ }
112
+ const records = await deps.records();
113
+ const setId = (0, compatible_sets_1.newestSetId)(records);
114
+ const publishAt = argv.indexOf('--published');
115
+ if (setId === null) {
116
+ /**
117
+ * ⚠️ ASKED TO RECORD A PUBLICATION WITH NOTHING ACCEPTED, THIS SAYS SO.
118
+ * Falling through to the status report below would print a perfectly true
119
+ * page and exit 0 — and the person who asked to record a step would have no
120
+ * way to tell that nothing was recorded.
121
+ */
122
+ if (publishAt >= 0) {
123
+ deps.err('looply repos --published: refusing — nothing has been accepted as compatible yet, so there is no set to ' +
124
+ 'publish against. `looply repos --accept` first.');
125
+ return exports.EXIT_REFUSED;
126
+ }
127
+ deps.out('repos: no compatible set has been accepted yet.');
128
+ for (const r of declared) {
129
+ deps.out(` ${r.id.padEnd(16)} ${shown.get(r.id) ?? 'could not be read'}`);
130
+ }
131
+ deps.out(' `looply repos --accept` writes the current revisions down as compatible.');
132
+ return exports.EXIT_OK;
133
+ }
134
+ if (publishAt >= 0) {
135
+ const repo = argv[publishAt + 1];
136
+ if (repo === undefined || repo.startsWith('--')) {
137
+ deps.err(`looply repos --published: which repository?\n\n${exports.REPOS_USAGE}`);
138
+ return exports.EXIT_USAGE;
139
+ }
140
+ const before = (0, compatible_sets_1.setFrom)(records, setId);
141
+ if (before === null) {
142
+ deps.err(`looply repos --published: ${setId} has no acceptance on record`);
143
+ return exports.EXIT_REFUSED;
144
+ }
145
+ /**
146
+ * 🔴 THE DECISION IS `publicationRuling`, NOT THIS FUNCTION, AND §6.D IS
147
+ * WHY. The charter asks for a RUN to drive this same workflow, and a run
148
+ * that wrote its own lines would be a second implementation of these
149
+ * refusals — the one that forgets the drift check is the one that writes
150
+ * down a compatible pair that does not exist. A behaviour with two callers
151
+ * and one implementation cannot drift between them.
152
+ *
153
+ * Every refusal that used to live here still happens, in the same order,
154
+ * and is now shared: drift before anything is recorded, a repository this
155
+ * project does not declare, and one declared after the set was accepted.
156
+ */
157
+ const ruling = (0, core_1.publicationRuling)({
158
+ declared: declared.map((d) => d.id),
159
+ set: before,
160
+ current: new Map(now.map((r) => [r.repo, r.sha])),
161
+ repo,
162
+ });
163
+ if (ruling.kind === 'refused' || ruling.kind === 'unmeasurable') {
164
+ deps.err(`looply repos --published: ${(0, core_1.describePublicationRuling)(ruling)}`);
165
+ return ruling.kind === 'unmeasurable' ? exports.EXIT_UNMEASURABLE : exports.EXIT_REFUSED;
166
+ }
167
+ if (ruling.kind === 'already') {
168
+ deps.out(`repos: ${(0, core_1.describePublicationRuling)(ruling)}`);
169
+ return exports.EXIT_OK;
170
+ }
171
+ await deps.append({ id: (0, compatible_sets_1.publishedId)(setId, repo), kind: 'published', setId, at: deps.now(), repo });
172
+ deps.out(`repos: ${(0, core_1.describePublicationRuling)(ruling)}`);
173
+ }
174
+ const after = (0, compatible_sets_1.setFrom)(await deps.records(), setId);
175
+ if (after === null) {
176
+ deps.err(`looply repos: ${setId} has no acceptance on record`);
177
+ return exports.EXIT_REFUSED;
178
+ }
179
+ const verdict = (0, core_1.combinedAcceptance)({
180
+ declared: declared.map((d) => d.id),
181
+ set: after,
182
+ current: new Map(now.map((r) => [r.repo, r.sha])),
183
+ });
184
+ deps.out(`repos: ${setId} accepted ${after.at}`);
185
+ for (const r of declared) {
186
+ const named = after.revisions.find((x) => x.repo === r.id);
187
+ const isAt = now.find((x) => x.repo === r.id);
188
+ const mark = after.published.includes(r.id) ? 'published' : 'to publish';
189
+ deps.out(` ${r.id.padEnd(16)} ${(named === undefined ? 'not in the set' : named.sha.slice(0, 7)).padEnd(16)} ` +
190
+ `now ${(isAt === undefined ? 'unreadable' : isAt.sha.slice(0, 7)).padEnd(12)} ${mark}`);
191
+ }
192
+ const said = (0, core_1.describeCombined)(verdict);
193
+ deps.out(said === null ? ` COMPLETE — every declared repository published this set and is still at it` : ` ${said}`);
194
+ /**
195
+ * 🔴 AND WHAT THIS PROJECT IS STILL WAITING FOR, which is a different question
196
+ * from whether the set holds.
197
+ *
198
+ * `combinedAcceptance` answers "is this convergence finished". A need answers
199
+ * "may I start" — and the two come apart in both directions: a PARTIAL set can
200
+ * already satisfy a need whose repository happens to be one of the published
201
+ * ones, and a COMPLETE set satisfies a need for a repository it never named at
202
+ * all only by accident. So the needs are asked separately and reported
203
+ * separately.
204
+ *
205
+ * ⚠️ IT DOES NOT CHANGE THE EXIT CODE. The verdict is about the set; a need is
206
+ * about this project's own readiness, and a script driving publication must
207
+ * not stop because some unrelated dependency is outstanding. The line is
208
+ * information, and `crossRepoReady` is what a caller asks when it wants the
209
+ * answer as a decision.
210
+ */
211
+ const needs = deps.needs?.() ?? [];
212
+ if (needs.length > 0) {
213
+ const blockers = (0, core_1.crossRepoBlockedBy)({
214
+ needs,
215
+ declared: declared.map((d) => d.id),
216
+ self: deps.self?.() ?? null,
217
+ set: after,
218
+ current: new Map(now.map((r) => [r.repo, r.sha])),
219
+ });
220
+ const waiting = (0, core_1.describeCrossRepoBlockers)(blockers);
221
+ if (waiting === null) {
222
+ deps.out(` needs: all ${needs.length} met — every repository this project waits on has published`);
223
+ }
224
+ else {
225
+ deps.out(` needs: ${waiting}`);
226
+ for (const b of blockers)
227
+ deps.out(` ${b.repo.padEnd(16)} ${b.reason.padEnd(12)} ${b.what}`);
228
+ }
229
+ }
230
+ return verdictExit(verdict);
231
+ }
232
+ /**
233
+ * ⚠️ `partial` IS NOT A FAILURE and must not exit non-zero. It is the expected
234
+ * middle of a publication that cannot be atomic, and a script that treats it as
235
+ * an error would stop exactly where it should carry on to the next repository.
236
+ */
237
+ function verdictExit(v) {
238
+ return v.kind === 'complete' || v.kind === 'partial' ? exports.EXIT_OK : exports.EXIT_REFUSED;
239
+ }
240
+ //# sourceMappingURL=repos-cmd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repos-cmd.js","sourceRoot":"","sources":["../src/repos-cmd.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,93 @@
1
+ /**
2
+ * WHAT A CLIENT SENDS, AND WHETHER THE ROUTE READS IT.
3
+ *
4
+ * ─────────────────────────────────────────────────────────────────────────────
5
+ * 🔴 THE OTHER HALF OF THE BOUNDARY, AND IT HAS ALREADY COST US ONCE.
6
+ *
7
+ * `@looply/sdk`'s `decideApproval` sent `version` where the route reads
8
+ * `expectedVersion`. It would have 400'd on every call — on the path that spends
9
+ * a person's authorisation — and nothing could see it: the body is `unknown` on
10
+ * the wire, so no type on either side disagrees.
11
+ *
12
+ * Path parity checks the PATH. The declared-shape check reads the RESPONSE. A
13
+ * field a client sends that no route reads is the third case, and it is the one
14
+ * with the worst failure mode of the three, because the two outcomes are a 400
15
+ * (loud) and being silently ignored (a setting that never applies, a note that
16
+ * never saves, a version guard that never guards).
17
+ *
18
+ * ⚠️ THIS READS SOURCE, NOT TYPES. It is a small honest parser: it reports what
19
+ * it cannot read rather than passing over it, because a checker that silently
20
+ * skips is how a fifth of a corpus disappears under a confident summary line.
21
+ */
22
+ export interface RouteBody {
23
+ /** `POST`, `PATCH`, … */
24
+ method: string;
25
+ /** Path with `:params` left in, e.g. `/v1/projects/:id/approvals/:approvalId`. */
26
+ path: string;
27
+ /** Keys the handler reads off the body — `body?.expectedVersion` → `expectedVersion`. */
28
+ reads: string[];
29
+ /**
30
+ * Does the handler hand the WHOLE body somewhere instead of picking fields?
31
+ *
32
+ * 🔴 THE DIFFERENCE BETWEEN "READS NOTHING" AND "UNREADABLE". A handler that
33
+ * forwards `body` wholesale reads no named key, and treating that as "reads
34
+ * nothing" would flag every field a client sends to it. Reported, not guessed.
35
+ */
36
+ wholesale: boolean;
37
+ handler: string;
38
+ }
39
+ /** `@Controller('v1')` → `v1`. */
40
+ export declare function controllerPrefix(source: string): string;
41
+ export declare function routeBodies(source: string): RouteBody[];
42
+ export interface SentBody {
43
+ /** The client method the call sits in. */
44
+ caller: string;
45
+ method: string;
46
+ /** Path with `${...}` interpolations replaced by `:param`, to match a route. */
47
+ path: string;
48
+ /**
49
+ * The path literal exactly as written, before normalisation.
50
+ *
51
+ * Kept because a caller may need to assert something about the SOURCE rather
52
+ * than the route — e.g. that no query string was ever written into a path
53
+ * literal. Asserting that on the normalised value would only prove a
54
+ * `replace` had run, which it always has.
55
+ */
56
+ rawPath: string;
57
+ /** Keys the client puts in the body. */
58
+ sends: string[];
59
+ /**
60
+ * Could the body be read at all?
61
+ *
62
+ * 🔴 FALSE IS NOT "SENDS NOTHING". A body built from a spread, a helper call
63
+ * or a variable this cannot resolve is UNREAD, and reporting it as empty would
64
+ * turn an unchecked call into a passing one.
65
+ */
66
+ readable: boolean;
67
+ raw: string;
68
+ }
69
+ /**
70
+ * Blanks comments, preserving LENGTH and NEWLINES.
71
+ *
72
+ * 🔴 ONE PARSER, USED BY BOTH HALVES OF THIS FILE. The client half stripped
73
+ * comments and the ROUTE half did not, so prose became evidence: a doc comment
74
+ * mentioning a field produced a phantom `body?.x` read, and a commented-out
75
+ * `@Post(...)` produced a phantom ROUTE. It failed in both directions at once --
76
+ * excusing a field the handler never reads, and inventing one it does.
77
+ *
78
+ * ⚠️ IT IS STRING-AWARE, WHICH A REGEX CANNOT BE. `'https://x'` contains `//`
79
+ * and a naive line-comment regex deletes the rest of that line -- taking
80
+ * any real `body?.x` on it with it. Quotes, double quotes, template literals and
81
+ * backslash escapes are copied through untouched.
82
+ *
83
+ * Length and newlines are preserved because callers index into the result:
84
+ * decorator offsets, `lastIndexOf`, and the line-based handler-name scan all
85
+ * stay valid, so stripping is invisible to everything except the text it removes.
86
+ *
87
+ * Known limit, stated rather than hidden: a STRING whose contents look like a
88
+ * read (`'body?.kind'`) is preserved, because it is data and this cannot tell
89
+ * data from code. No such string exists in the controllers today.
90
+ */
91
+ export declare function stripComments(text: string): string;
92
+ export declare function sentBodies(source: string): SentBody[];
93
+ //# sourceMappingURL=request-body-shape.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request-body-shape.d.ts","sourceRoot":"","sources":["../src/request-body-shape.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,MAAM,WAAW,SAAS;IACxB,yBAAyB;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,kFAAkF;IAClF,IAAI,EAAE,MAAM,CAAC;IACb,yFAAyF;IACzF,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB;;;;;;OAMG;IACH,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAID,kCAAkC;AAClC,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAMvD;AAQD,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,CAsCvD;AAID,MAAM,WAAW,QAAQ;IACvB,0CAA0C;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,gFAAgF;IAChF,IAAI,EAAE,MAAM,CAAC;IACb;;;;;;;OAOG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB,wCAAwC;IACxC,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB;;;;;;OAMG;IACH,QAAQ,EAAE,OAAO,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;CACb;AA+ID;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAoDlD;AAuCD,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,EAAE,CAuDrD"}