@b00dea/cockpit 0.0.0-stage → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (426) hide show
  1. package/CHANGELOG.md +474 -0
  2. package/LICENSE +21 -0
  3. package/README.md +25 -2
  4. package/bin/cockpit.mjs +33 -0
  5. package/cockpit.schema.json +2644 -0
  6. package/dist/autonomy.d.ts +45 -0
  7. package/dist/autonomy.js +173 -0
  8. package/dist/bounded-read.d.ts +14 -0
  9. package/dist/bounded-read.js +42 -0
  10. package/dist/browser/commands.d.ts +117 -0
  11. package/dist/browser/commands.js +453 -0
  12. package/dist/browser/package-paths.d.ts +1 -0
  13. package/dist/browser/package-paths.js +6 -0
  14. package/dist/browser/proxy.d.ts +22 -0
  15. package/dist/browser/proxy.js +37 -0
  16. package/dist/browser/runtime.d.ts +118 -0
  17. package/dist/browser/runtime.js +186 -0
  18. package/dist/browser/surfaces.d.ts +141 -0
  19. package/dist/browser/surfaces.js +561 -0
  20. package/dist/browser/ui-gate.d.ts +15 -0
  21. package/dist/browser/ui-gate.js +18 -0
  22. package/dist/canonical-json.d.ts +2 -0
  23. package/dist/canonical-json.js +5 -0
  24. package/dist/cli-guard.d.ts +5 -0
  25. package/dist/cli-guard.js +71 -0
  26. package/dist/cli-main.d.ts +176 -0
  27. package/dist/cli-main.js +1584 -0
  28. package/dist/cli.d.ts +3 -0
  29. package/dist/cli.js +16 -0
  30. package/dist/command-table.d.ts +121 -0
  31. package/dist/command-table.js +664 -0
  32. package/dist/config/load.d.ts +183 -0
  33. package/dist/config/load.js +367 -0
  34. package/dist/config/sibling-toml.d.ts +48 -0
  35. package/dist/config/sibling-toml.js +160 -0
  36. package/dist/config/surface-tools-toml.d.ts +9 -0
  37. package/dist/config/surface-tools-toml.js +37 -0
  38. package/dist/config/unconfirmed-toml.d.ts +9 -0
  39. package/dist/config/unconfirmed-toml.js +29 -0
  40. package/dist/config/verified-write.d.ts +43 -0
  41. package/dist/config/verified-write.js +89 -0
  42. package/dist/diagnostics.d.ts +26 -0
  43. package/dist/diagnostics.js +344 -0
  44. package/dist/docs/check.d.ts +16 -0
  45. package/dist/docs/check.js +197 -0
  46. package/dist/docs/decision-record.d.ts +34 -0
  47. package/dist/docs/decision-record.js +135 -0
  48. package/dist/docs/decisions.d.ts +16 -0
  49. package/dist/docs/decisions.js +103 -0
  50. package/dist/docs/markdown.d.ts +36 -0
  51. package/dist/docs/markdown.js +88 -0
  52. package/dist/docs/references.d.ts +32 -0
  53. package/dist/docs/references.js +148 -0
  54. package/dist/emit.d.ts +22 -0
  55. package/dist/emit.js +43 -0
  56. package/dist/entrypoint-kinds.d.ts +3 -0
  57. package/dist/entrypoint-kinds.js +11 -0
  58. package/dist/environment/application/confirm.d.ts +35 -0
  59. package/dist/environment/application/confirm.js +122 -0
  60. package/dist/environment/application/destructive.d.ts +6 -0
  61. package/dist/environment/application/destructive.js +429 -0
  62. package/dist/environment/application/doctor.d.ts +94 -0
  63. package/dist/environment/application/doctor.js +247 -0
  64. package/dist/environment/application/guard.d.ts +49 -0
  65. package/dist/environment/application/guard.js +677 -0
  66. package/dist/environment/application/health.d.ts +143 -0
  67. package/dist/environment/application/health.js +385 -0
  68. package/dist/environment/application/lifecycle-context.d.ts +235 -0
  69. package/dist/environment/application/lifecycle-context.js +154 -0
  70. package/dist/environment/application/lifecycle-state.d.ts +25 -0
  71. package/dist/environment/application/lifecycle-state.js +202 -0
  72. package/dist/environment/application/lifecycle.d.ts +18 -0
  73. package/dist/environment/application/lifecycle.js +737 -0
  74. package/dist/environment/application/logs.d.ts +45 -0
  75. package/dist/environment/application/logs.js +127 -0
  76. package/dist/environment/application/services.d.ts +60 -0
  77. package/dist/environment/application/services.js +89 -0
  78. package/dist/environment/application/setup.d.ts +129 -0
  79. package/dist/environment/application/setup.js +741 -0
  80. package/dist/environment/application/shared.d.ts +11 -0
  81. package/dist/environment/application/shared.js +61 -0
  82. package/dist/environment/application/siblings.d.ts +43 -0
  83. package/dist/environment/application/siblings.js +269 -0
  84. package/dist/environment/claims.d.ts +389 -0
  85. package/dist/environment/claims.js +1701 -0
  86. package/dist/environment/codex-hook-trust.d.ts +11 -0
  87. package/dist/environment/codex-hook-trust.js +185 -0
  88. package/dist/environment/compose-environment.d.ts +1 -0
  89. package/dist/environment/compose-environment.js +6 -0
  90. package/dist/environment/compose-ownership.d.ts +21 -0
  91. package/dist/environment/compose-ownership.js +117 -0
  92. package/dist/environment/compose-topology.d.ts +125 -0
  93. package/dist/environment/compose-topology.js +490 -0
  94. package/dist/environment/contract.d.ts +522 -0
  95. package/dist/environment/contract.js +794 -0
  96. package/dist/environment/declaration.d.ts +14 -0
  97. package/dist/environment/declaration.js +39 -0
  98. package/dist/environment/destructive-composition.d.ts +29 -0
  99. package/dist/environment/destructive-composition.js +333 -0
  100. package/dist/environment/docker-daemon.d.ts +30 -0
  101. package/dist/environment/docker-daemon.js +78 -0
  102. package/dist/environment/docker-endpoint.d.ts +10 -0
  103. package/dist/environment/docker-endpoint.js +19 -0
  104. package/dist/environment/env-schema-observation.d.ts +46 -0
  105. package/dist/environment/env-schema-observation.js +241 -0
  106. package/dist/environment/evidence.d.ts +136 -0
  107. package/dist/environment/evidence.js +437 -0
  108. package/dist/environment/executable.d.ts +38 -0
  109. package/dist/environment/executable.js +190 -0
  110. package/dist/environment/generated-application/authorities.d.ts +5 -0
  111. package/dist/environment/generated-application/authorities.js +61 -0
  112. package/dist/environment/generated-application/bootstrap-skill.d.ts +16 -0
  113. package/dist/environment/generated-application/bootstrap-skill.js +328 -0
  114. package/dist/environment/generated-application/check.d.ts +13 -0
  115. package/dist/environment/generated-application/check.js +191 -0
  116. package/dist/environment/generated-application/custom-surface.d.ts +26 -0
  117. package/dist/environment/generated-application/custom-surface.js +289 -0
  118. package/dist/environment/generated-application/prepare.d.ts +29 -0
  119. package/dist/environment/generated-application/prepare.js +278 -0
  120. package/dist/environment/generated-application/publication.d.ts +33 -0
  121. package/dist/environment/generated-application/publication.js +547 -0
  122. package/dist/environment/generated-application/shared.d.ts +492 -0
  123. package/dist/environment/generated-application/shared.js +354 -0
  124. package/dist/environment/generated-application/surface-observation.d.ts +4 -0
  125. package/dist/environment/generated-application/surface-observation.js +69 -0
  126. package/dist/environment/generated-application/surface-outputs.d.ts +71 -0
  127. package/dist/environment/generated-application/surface-outputs.js +400 -0
  128. package/dist/environment/generated-application/surfaces.d.ts +3 -0
  129. package/dist/environment/generated-application/surfaces.js +704 -0
  130. package/dist/environment/generated-application/sync.d.ts +6 -0
  131. package/dist/environment/generated-application/sync.js +124 -0
  132. package/dist/environment/git-observation.d.ts +202 -0
  133. package/dist/environment/git-observation.js +553 -0
  134. package/dist/environment/health-composition.d.ts +12 -0
  135. package/dist/environment/health-composition.js +645 -0
  136. package/dist/environment/host-observation.d.ts +56 -0
  137. package/dist/environment/host-observation.js +52 -0
  138. package/dist/environment/identity.d.ts +48 -0
  139. package/dist/environment/identity.js +85 -0
  140. package/dist/environment/init-application.d.ts +333 -0
  141. package/dist/environment/init-application.js +726 -0
  142. package/dist/environment/install-policy-observation.d.ts +71 -0
  143. package/dist/environment/install-policy-observation.js +284 -0
  144. package/dist/environment/install-policy.d.ts +48 -0
  145. package/dist/environment/install-policy.js +96 -0
  146. package/dist/environment/instance.d.ts +33 -0
  147. package/dist/environment/instance.js +122 -0
  148. package/dist/environment/instruction-pointer.d.ts +19 -0
  149. package/dist/environment/instruction-pointer.js +144 -0
  150. package/dist/environment/lifecycle-composition.d.ts +31 -0
  151. package/dist/environment/lifecycle-composition.js +742 -0
  152. package/dist/environment/lifecycle-stage.d.ts +120 -0
  153. package/dist/environment/lifecycle-stage.js +408 -0
  154. package/dist/environment/lifecycle.d.ts +75 -0
  155. package/dist/environment/lifecycle.js +354 -0
  156. package/dist/environment/logs.d.ts +132 -0
  157. package/dist/environment/logs.js +519 -0
  158. package/dist/environment/map-limit.d.ts +2 -0
  159. package/dist/environment/map-limit.js +13 -0
  160. package/dist/environment/mcp-observation.d.ts +9 -0
  161. package/dist/environment/mcp-observation.js +46 -0
  162. package/dist/environment/observations.d.ts +46 -0
  163. package/dist/environment/observations.js +346 -0
  164. package/dist/environment/operator-application.d.ts +79 -0
  165. package/dist/environment/operator-application.js +197 -0
  166. package/dist/environment/ports.d.ts +182 -0
  167. package/dist/environment/ports.js +1205 -0
  168. package/dist/environment/posture-observation.d.ts +68 -0
  169. package/dist/environment/posture-observation.js +253 -0
  170. package/dist/environment/presence.d.ts +4 -0
  171. package/dist/environment/presence.js +26 -0
  172. package/dist/environment/read-composition.d.ts +32 -0
  173. package/dist/environment/read-composition.js +397 -0
  174. package/dist/environment/readiness-composition.d.ts +57 -0
  175. package/dist/environment/readiness-composition.js +151 -0
  176. package/dist/environment/reclaim.d.ts +370 -0
  177. package/dist/environment/reclaim.js +1940 -0
  178. package/dist/environment/repository-identity.d.ts +13 -0
  179. package/dist/environment/repository-identity.js +108 -0
  180. package/dist/environment/runtime-measurement-record.d.ts +38 -0
  181. package/dist/environment/runtime-measurement-record.js +111 -0
  182. package/dist/environment/runtime-measurement.d.ts +27 -0
  183. package/dist/environment/runtime-measurement.js +224 -0
  184. package/dist/environment/runtime-probe-residue.d.ts +43 -0
  185. package/dist/environment/runtime-probe-residue.js +148 -0
  186. package/dist/environment/runtime-probe.d.ts +72 -0
  187. package/dist/environment/runtime-probe.js +725 -0
  188. package/dist/environment/runtime.d.ts +551 -0
  189. package/dist/environment/runtime.js +2405 -0
  190. package/dist/environment/seed.d.ts +16 -0
  191. package/dist/environment/seed.js +43 -0
  192. package/dist/environment/selftest-application.d.ts +86 -0
  193. package/dist/environment/selftest-application.js +713 -0
  194. package/dist/environment/sensitive.d.ts +3 -0
  195. package/dist/environment/sensitive.js +48 -0
  196. package/dist/environment/served-checkout-grants.d.ts +53 -0
  197. package/dist/environment/served-checkout-grants.js +182 -0
  198. package/dist/environment/setup-observation.d.ts +62 -0
  199. package/dist/environment/setup-observation.js +1473 -0
  200. package/dist/environment/setup.d.ts +43 -0
  201. package/dist/environment/setup.js +176 -0
  202. package/dist/environment/sibling-checkouts.d.ts +119 -0
  203. package/dist/environment/sibling-checkouts.js +254 -0
  204. package/dist/environment/sibling-instructions.d.ts +33 -0
  205. package/dist/environment/sibling-instructions.js +224 -0
  206. package/dist/environment/sibling-observation.d.ts +27 -0
  207. package/dist/environment/sibling-observation.js +45 -0
  208. package/dist/environment/sibling-pull.d.ts +23 -0
  209. package/dist/environment/sibling-pull.js +95 -0
  210. package/dist/environment/sibling-registration.d.ts +45 -0
  211. package/dist/environment/sibling-registration.js +538 -0
  212. package/dist/environment/stack-inputs.d.ts +18 -0
  213. package/dist/environment/stack-inputs.js +210 -0
  214. package/dist/environment/stack-inventory-prune.d.ts +31 -0
  215. package/dist/environment/stack-inventory-prune.js +129 -0
  216. package/dist/environment/stack-inventory-report.d.ts +44 -0
  217. package/dist/environment/stack-inventory-report.js +78 -0
  218. package/dist/environment/stack-inventory.d.ts +94 -0
  219. package/dist/environment/stack-inventory.js +418 -0
  220. package/dist/environment/state.d.ts +410 -0
  221. package/dist/environment/state.js +2153 -0
  222. package/dist/environment/templates.d.ts +140 -0
  223. package/dist/environment/templates.js +685 -0
  224. package/dist/environment/tool-registration.d.ts +9 -0
  225. package/dist/environment/tool-registration.js +92 -0
  226. package/dist/environment/upgrade-application.d.ts +19 -0
  227. package/dist/environment/upgrade-application.js +175 -0
  228. package/dist/environment-exec/execute.d.ts +105 -0
  229. package/dist/environment-exec/execute.js +1179 -0
  230. package/dist/environment-exec/libexec-program.d.ts +6 -0
  231. package/dist/environment-exec/libexec-program.js +22 -0
  232. package/dist/environment-exec/verified-digest.d.ts +4 -0
  233. package/dist/environment-exec/verified-digest.js +16 -0
  234. package/dist/exact-keys.d.ts +7 -0
  235. package/dist/exact-keys.js +15 -0
  236. package/dist/fix-catalogue.d.ts +32 -0
  237. package/dist/fix-catalogue.js +60 -0
  238. package/dist/freshness.d.ts +29 -0
  239. package/dist/freshness.js +75 -0
  240. package/dist/generated-environment/adopt.d.ts +16 -0
  241. package/dist/generated-environment/adopt.js +271 -0
  242. package/dist/generated-environment/command.d.ts +47 -0
  243. package/dist/generated-environment/command.js +75 -0
  244. package/dist/generated-environment/transaction.d.ts +186 -0
  245. package/dist/generated-environment/transaction.js +1770 -0
  246. package/dist/grading/evaluate.d.ts +71 -0
  247. package/dist/grading/evaluate.js +403 -0
  248. package/dist/grading/grade.d.ts +33 -0
  249. package/dist/grading/grade.js +57 -0
  250. package/dist/guards/answer-confirmation.d.ts +41 -0
  251. package/dist/guards/answer-confirmation.js +109 -0
  252. package/dist/guards/evaluator.d.ts +130 -0
  253. package/dist/guards/evaluator.js +1258 -0
  254. package/dist/guards/harness-adapter.d.ts +17 -0
  255. package/dist/guards/harness-adapter.js +57 -0
  256. package/dist/guards/host.d.ts +8 -0
  257. package/dist/guards/host.js +10 -0
  258. package/dist/guards/invocation-parser.d.ts +66 -0
  259. package/dist/guards/invocation-parser.js +595 -0
  260. package/dist/guards/local-identity.d.ts +44 -0
  261. package/dist/guards/local-identity.js +129 -0
  262. package/dist/guards/policy-change.d.ts +43 -0
  263. package/dist/guards/policy-change.js +159 -0
  264. package/dist/guards/policy-pin.d.ts +13 -0
  265. package/dist/guards/policy-pin.js +177 -0
  266. package/dist/guards/protected-locations.d.ts +62 -0
  267. package/dist/guards/protected-locations.js +461 -0
  268. package/dist/guards/read-only.d.ts +37 -0
  269. package/dist/guards/read-only.js +315 -0
  270. package/dist/init/command.d.ts +41 -0
  271. package/dist/init/command.js +330 -0
  272. package/dist/init/derive.d.ts +53 -0
  273. package/dist/init/derive.js +819 -0
  274. package/dist/init/draft.d.ts +140 -0
  275. package/dist/init/draft.js +1228 -0
  276. package/dist/init/render.d.ts +47 -0
  277. package/dist/init/render.js +104 -0
  278. package/dist/init/scaffold.d.ts +53 -0
  279. package/dist/init/scaffold.js +121 -0
  280. package/dist/invocation.d.ts +13 -0
  281. package/dist/invocation.js +20 -0
  282. package/dist/package-metadata.d.ts +9 -0
  283. package/dist/package-metadata.js +19 -0
  284. package/dist/readiness.d.ts +53 -0
  285. package/dist/readiness.js +88 -0
  286. package/dist/references/named.d.ts +24 -0
  287. package/dist/references/named.js +27 -0
  288. package/dist/refusal.d.ts +15 -0
  289. package/dist/refusal.js +7 -0
  290. package/dist/registry-derivation.d.ts +31 -0
  291. package/dist/registry-derivation.js +32 -0
  292. package/dist/registry-resolve/command.d.ts +47 -0
  293. package/dist/registry-resolve/command.js +226 -0
  294. package/dist/registry-resolve/registry.d.ts +68 -0
  295. package/dist/registry-resolve/registry.js +292 -0
  296. package/dist/registry-resolve/render-shell.d.ts +18 -0
  297. package/dist/registry-resolve/render-shell.js +36 -0
  298. package/dist/repair.d.ts +29 -0
  299. package/dist/repair.js +8 -0
  300. package/dist/repository-path.d.ts +9 -0
  301. package/dist/repository-path.js +16 -0
  302. package/dist/schema-json.d.ts +1 -0
  303. package/dist/schema-json.js +177 -0
  304. package/dist/schema.d.ts +1289 -0
  305. package/dist/schema.js +985 -0
  306. package/dist/setup/command.d.ts +4 -0
  307. package/dist/setup/command.js +4 -0
  308. package/dist/sha256.d.ts +1 -0
  309. package/dist/sha256.js +4 -0
  310. package/dist/surfaces/adoption.d.ts +41 -0
  311. package/dist/surfaces/adoption.js +217 -0
  312. package/dist/surfaces/consumer-instructions.d.ts +20 -0
  313. package/dist/surfaces/consumer-instructions.js +43 -0
  314. package/dist/surfaces/contract.d.ts +42 -0
  315. package/dist/surfaces/contract.js +169 -0
  316. package/dist/surfaces/core-declarations.d.ts +24 -0
  317. package/dist/surfaces/core-declarations.js +79 -0
  318. package/dist/surfaces/development-markers.d.ts +1 -0
  319. package/dist/surfaces/development-markers.js +18 -0
  320. package/dist/surfaces/generator-adapter.d.ts +71 -0
  321. package/dist/surfaces/generator-adapter.js +809 -0
  322. package/dist/surfaces/harness-registry.d.ts +260 -0
  323. package/dist/surfaces/harness-registry.js +146 -0
  324. package/dist/surfaces/mcp.d.ts +145 -0
  325. package/dist/surfaces/mcp.js +349 -0
  326. package/dist/surfaces/merge.d.ts +30 -0
  327. package/dist/surfaces/merge.js +105 -0
  328. package/dist/surfaces/ownership.d.ts +190 -0
  329. package/dist/surfaces/ownership.js +795 -0
  330. package/dist/surfaces/projection.d.ts +136 -0
  331. package/dist/surfaces/projection.js +716 -0
  332. package/dist/surfaces/render.d.ts +79 -0
  333. package/dist/surfaces/render.js +636 -0
  334. package/dist/surfaces/restrictions.d.ts +130 -0
  335. package/dist/surfaces/restrictions.js +447 -0
  336. package/dist/surfaces/selftest.d.ts +162 -0
  337. package/dist/surfaces/selftest.js +393 -0
  338. package/dist/surfaces/skill-contract.d.ts +85 -0
  339. package/dist/surfaces/skill-contract.js +449 -0
  340. package/dist/surfaces/sync.d.ts +57 -0
  341. package/dist/surfaces/sync.js +164 -0
  342. package/dist/team-metadata.d.ts +41 -0
  343. package/dist/team-metadata.js +513 -0
  344. package/dist/testing/gates.d.ts +91 -0
  345. package/dist/testing/gates.js +182 -0
  346. package/dist/testing/hooks.d.ts +59 -0
  347. package/dist/testing/hooks.js +139 -0
  348. package/dist/testing/test-protection.d.ts +34 -0
  349. package/dist/testing/test-protection.js +137 -0
  350. package/dist/testing/verdict.d.ts +29 -0
  351. package/dist/testing/verdict.js +62 -0
  352. package/dist/testing/weakening.d.ts +15 -0
  353. package/dist/testing/weakening.js +30 -0
  354. package/dist/work-orders/application-closure.d.ts +7 -0
  355. package/dist/work-orders/application-closure.js +76 -0
  356. package/dist/work-orders/application-context.d.ts +162 -0
  357. package/dist/work-orders/application-context.js +137 -0
  358. package/dist/work-orders/application-decisions.d.ts +27 -0
  359. package/dist/work-orders/application-decisions.js +121 -0
  360. package/dist/work-orders/application-grading.d.ts +11 -0
  361. package/dist/work-orders/application-grading.js +212 -0
  362. package/dist/work-orders/application.d.ts +6 -0
  363. package/dist/work-orders/application.js +223 -0
  364. package/dist/work-orders/composition.d.ts +101 -0
  365. package/dist/work-orders/composition.js +1202 -0
  366. package/dist/work-orders/contract.d.ts +77 -0
  367. package/dist/work-orders/contract.js +140 -0
  368. package/dist/work-orders/decisions.d.ts +23 -0
  369. package/dist/work-orders/decisions.js +55 -0
  370. package/dist/work-orders/store.d.ts +207 -0
  371. package/dist/work-orders/store.js +291 -0
  372. package/docs/README.md +68 -0
  373. package/docs/architecture.md +136 -0
  374. package/docs/capability-matrix.md +58 -0
  375. package/docs/cli-reference.md +807 -0
  376. package/docs/command-list.md +62 -0
  377. package/docs/compose-patterns.md +99 -0
  378. package/docs/concepts.md +173 -0
  379. package/docs/configuration-essentials.md +177 -0
  380. package/docs/configuration-reference.md +636 -0
  381. package/docs/docs-check.md +76 -0
  382. package/docs/environment.md +948 -0
  383. package/docs/extending.md +43 -0
  384. package/docs/faq.md +113 -0
  385. package/docs/getting-started.md +692 -0
  386. package/docs/harness-surfaces.md +500 -0
  387. package/docs/joining-a-team.md +76 -0
  388. package/docs/release-policy.md +49 -0
  389. package/docs/safety-and-autonomy.md +463 -0
  390. package/docs/troubleshooting.md +382 -0
  391. package/docs/tutorial.md +171 -0
  392. package/docs/work-and-browser.md +420 -0
  393. package/libexec/browser-operation.cjs +270 -0
  394. package/libexec/fence-marker.cjs +101 -0
  395. package/libexec/fence-marker.d.cts +24 -0
  396. package/libexec/fenced-group-runner.cjs +77 -0
  397. package/libexec/fenced-supervisor.cjs +137 -0
  398. package/libexec/generated-filesystem.cjs +731 -0
  399. package/libexec/install-filesystem.cjs +225 -0
  400. package/libexec/rulesync-generator.NOTICE.md +1112 -0
  401. package/libexec/rulesync-generator.cjs +743 -0
  402. package/libexec/surface-generator-worker.cjs +266 -0
  403. package/libexec/surface-output-reader.cjs +99 -0
  404. package/libexec/surface-scratch-cleanup.cjs +14 -0
  405. package/libexec/validate-harness-evidence.d.mts +183 -0
  406. package/libexec/validate-harness-evidence.mjs +1312 -0
  407. package/package.json +74 -4
  408. package/surfaces/README.md +33 -0
  409. package/surfaces/agents/evaluator.agent.md +76 -0
  410. package/surfaces/guards/bash-guard.sh +48 -0
  411. package/surfaces/guards/claude.adapter.json +25 -0
  412. package/surfaces/guards/codex.adapter.json +24 -0
  413. package/surfaces/guards/opencode.adapter.json +25 -0
  414. package/surfaces/references/browser.md +63 -0
  415. package/surfaces/references/test-data-and-personas.md +84 -0
  416. package/surfaces/references/testing-tiers.md +11 -0
  417. package/surfaces/skills/cockpit-browser.skill.md +59 -0
  418. package/surfaces/skills/cockpit-explain.skill.md +32 -0
  419. package/surfaces/skills/cockpit-fix.skill.md +37 -0
  420. package/surfaces/skills/cockpit-setup.skill.md +39 -0
  421. package/surfaces/skills/cockpit-work.skill.md +34 -0
  422. package/surfaces/skills/collection.json +5 -0
  423. package/surfaces/skills/procedures/explain.md +66 -0
  424. package/surfaces/skills/procedures/fix.md +95 -0
  425. package/surfaces/skills/procedures/setup.md +452 -0
  426. package/surfaces/skills/procedures/work.md +134 -0
@@ -0,0 +1,45 @@
1
+ import type { ExecuteProbeOutcome } from '../../environment-exec/execute.js';
2
+ import { type EnvironmentCommandOutcome, type EnvironmentDiagnostic, type ExecutionStep } from '../contract.js';
3
+ import type { RuntimeAdapterAuthority } from '../runtime.js';
4
+ import { type LogRecord, type LogRequest, type RestartWindow } from '../logs.js';
5
+ export interface LogsCommandInput {
6
+ readonly configPath: string;
7
+ readonly service: string;
8
+ readonly since: string;
9
+ readonly tail: number;
10
+ readonly follow: boolean;
11
+ readonly json: boolean;
12
+ }
13
+ export type LogRequestBase = Omit<LogRequest, 'since' | 'tail' | 'follow'>;
14
+ export interface LogObservation {
15
+ readonly ownComposeAuthority?: Extract<RuntimeAdapterAuthority, {
16
+ ownComposeFiles: true;
17
+ }>;
18
+ readonly request: LogRequestBase;
19
+ readonly restart?: RestartWindow;
20
+ }
21
+ export interface LogsCommandAdapters {
22
+ readonly observe: (input: {
23
+ readonly configPath: string;
24
+ readonly service: string;
25
+ }) => Promise<LogObservation>;
26
+ readonly execute: (step: ExecutionStep, options: {
27
+ readonly signal?: AbortSignal;
28
+ }) => Promise<ExecuteProbeOutcome>;
29
+ readonly signal?: AbortSignal;
30
+ }
31
+ export type LogsCommandResult = EnvironmentCommandOutcome<Readonly<{
32
+ readonly json: boolean;
33
+ readonly records: readonly LogRecord[];
34
+ readonly truncated: boolean;
35
+ }>> | Readonly<{
36
+ kind: 'cancelled';
37
+ status: 130;
38
+ diagnostics: readonly EnvironmentDiagnostic[];
39
+ result: Readonly<{
40
+ json: boolean;
41
+ records: readonly LogRecord[];
42
+ truncated: boolean;
43
+ }>;
44
+ }>;
45
+ export declare function runLogs(input: LogsCommandInput, adapters: LogsCommandAdapters): Promise<LogsCommandResult>;
@@ -0,0 +1,127 @@
1
+ import { ENVIRONMENT_CODES, errorCause } from '../contract.js';
2
+ import { DeclarationRefusalError } from '../declaration.js';
3
+ import { collectLogs, planLogs } from '../logs.js';
4
+ import { applicationDiagnostic } from './health.js';
5
+ import { ownDataValues } from './shared.js';
6
+ function logsRefusal(code, message) {
7
+ return {
8
+ kind: 'refusal', status: 2, result: null,
9
+ diagnostics: [applicationDiagnostic(code, message, 'logs')],
10
+ };
11
+ }
12
+ const logRequestBaseKeys = Object.freeze([
13
+ 'runtime', 'executable', 'cwd', 'stackId', 'configSha256', 'batchId', 'containerId',
14
+ 'runtimeVersion', 'composeVersion', 'projectName', 'composeFiles', 'services', 'service',
15
+ 'timeoutMs', 'outputLimitBytes', 'env',
16
+ ]);
17
+ const logService = /^[a-z0-9][a-z0-9_.-]{0,127}$/;
18
+ const relativeLogSince = /^\d+(?:\.\d+)?[smhd]$/;
19
+ const absoluteLogSince = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})(?:\.(\d{1,9}))?(Z|([+-])(\d{2}):(\d{2}))$/;
20
+ function validAbsoluteLogSince(value) {
21
+ const match = absoluteLogSince.exec(value);
22
+ if (!match)
23
+ return false;
24
+ const [year, month, day, hour, minute, second] = match.slice(1, 7).map(Number);
25
+ const calendar = new Date(`${match[1]}-${match[2]}-${match[3]}T${match[4]}:${match[5]}:${match[6]}Z`);
26
+ if (Number.isNaN(calendar.valueOf()) || calendar.getUTCFullYear() !== year || calendar.getUTCMonth() + 1 !== month
27
+ || calendar.getUTCDate() !== day || calendar.getUTCHours() !== hour || calendar.getUTCMinutes() !== minute
28
+ || calendar.getUTCSeconds() !== second)
29
+ return false;
30
+ const offsetHour = match[8] === 'Z' ? 0 : Number(match[10]);
31
+ const offsetMinute = match[8] === 'Z' ? 0 : Number(match[11]);
32
+ return offsetHour <= 14 && offsetMinute <= 59 && (offsetHour !== 14 || offsetMinute === 0)
33
+ && Number.isFinite(Date.parse(value));
34
+ }
35
+ function validPublicLogOptions(service, since, tail) {
36
+ return logService.test(service) && since.length <= 64
37
+ && (relativeLogSince.test(since) || validAbsoluteLogSince(since))
38
+ && Number.isInteger(tail) && tail >= 1 && tail <= 10_000;
39
+ }
40
+ function logsCancelled(json) {
41
+ return {
42
+ kind: 'cancelled', status: 130, diagnostics: [],
43
+ result: { json, records: [], truncated: false },
44
+ };
45
+ }
46
+ function logsTruncated(service, shown, step) {
47
+ return [{
48
+ severity: 'warning',
49
+ code: 'LOGS_TRUNCATED',
50
+ message: `the logs of service ${service} exceeded the output limit of ${step.stdoutLimitBytes} bytes of stdout and ${step.stderrLimitBytes} of stderr, so only the newest ${shown} record${shown === 1 ? '' : 's'} are shown and older records in the requested range are not`,
51
+ target: 'logs',
52
+ fix: 'lower --tail to the number of recent records you need, or read the older records from the container runtime directly',
53
+ }];
54
+ }
55
+ export async function runLogs(input, adapters) {
56
+ let captured;
57
+ let signal;
58
+ let observe;
59
+ let execute;
60
+ try {
61
+ captured = ownDataValues(input, ['configPath', 'service', 'since', 'tail', 'follow', 'json']);
62
+ signal = adapters.signal;
63
+ observe = adapters.observe;
64
+ execute = adapters.execute;
65
+ }
66
+ catch (error) {
67
+ return logsRefusal(ENVIRONMENT_CODES.EVIDENCE_UNAVAILABLE, `log request must be readable: ${errorCause(error)}`);
68
+ }
69
+ const configPath = captured?.configPath;
70
+ const service = captured?.service;
71
+ const since = captured?.since;
72
+ const tail = captured?.tail;
73
+ const follow = captured?.follow;
74
+ const json = captured?.json;
75
+ if (typeof configPath !== 'string' || typeof service !== 'string' || typeof since !== 'string'
76
+ || typeof tail !== 'number' || typeof follow !== 'boolean' || typeof json !== 'boolean'
77
+ || typeof observe !== 'function' || typeof execute !== 'function') {
78
+ return logsRefusal(ENVIRONMENT_CODES.EVIDENCE_UNAVAILABLE, 'log request must contain exact public options');
79
+ }
80
+ if (!validPublicLogOptions(service, since, tail)) {
81
+ return logsRefusal(ENVIRONMENT_CODES.EVIDENCE_UNAVAILABLE, 'log service, time range, and tail must be valid and bounded');
82
+ }
83
+ if (follow && signal === undefined) {
84
+ return logsRefusal(ENVIRONMENT_CODES.EVIDENCE_UNAVAILABLE, 'follow logs require a cancellation signal');
85
+ }
86
+ if (signal?.aborted)
87
+ return logsCancelled(json);
88
+ let observation;
89
+ try {
90
+ observation = await observe({ configPath, service });
91
+ }
92
+ catch (error) {
93
+ if (signal?.aborted)
94
+ return logsCancelled(json);
95
+ if (error instanceof DeclarationRefusalError)
96
+ return { kind: 'refusal', status: 2, result: null,
97
+ diagnostics: [error.diagnostic] };
98
+ return logsRefusal(ENVIRONMENT_CODES.EVIDENCE_UNAVAILABLE, `log observation is unavailable for service ${service}: ${errorCause(error)}`);
99
+ }
100
+ if (signal?.aborted)
101
+ return logsCancelled(json);
102
+ const observed = ownDataValues(observation, ['request'], ['restart', 'ownComposeAuthority']);
103
+ const request = ownDataValues(observed?.request, logRequestBaseKeys, ['restartBatches']);
104
+ if (!request || request.service !== service) {
105
+ return logsRefusal(ENVIRONMENT_CODES.EVIDENCE_UNAVAILABLE, `log observation does not match service ${service}`);
106
+ }
107
+ const resolvedRequest = { ...request, since, tail, follow };
108
+ const plan = planLogs(resolvedRequest, observed?.ownComposeAuthority);
109
+ if (plan.kind !== 'planned')
110
+ return logsRefusal(plan.code, plan.reason);
111
+ let collected;
112
+ try {
113
+ collected = await collectLogs(plan, execute, signal, observed?.restart);
114
+ }
115
+ catch (error) {
116
+ return logsRefusal(ENVIRONMENT_CODES.EVIDENCE_UNAVAILABLE, `log collection failed for service ${service}: ${errorCause(error)}`);
117
+ }
118
+ if (collected.kind === 'unavailable') {
119
+ return logsRefusal(collected.code, `the logs of service ${service} are unavailable: ${collected.reason}`);
120
+ }
121
+ const diagnostics = collected.truncated
122
+ ? logsTruncated(service, collected.records.length, plan.step) : [];
123
+ const result = { json, records: collected.records, truncated: collected.truncated };
124
+ if (collected.kind === 'cancelled')
125
+ return { kind: 'cancelled', status: 130, diagnostics, result };
126
+ return { kind: 'complete', status: 0, diagnostics, result };
127
+ }
@@ -0,0 +1,60 @@
1
+ import type { ExecuteProbeOutcome, ForegroundProcessInput, ForegroundProcessOutcome } from '../../environment-exec/execute.js';
2
+ import { type EnvironmentCommandOutcome, type EnvironmentDiagnostic, type ExecutionStep, type LifecycleProgress } from '../contract.js';
3
+ import { type RuntimeServiceState, type RuntimeTopologyEvidence } from '../runtime.js';
4
+ export interface ServiceObservation {
5
+ readonly topology: RuntimeTopologyEvidence;
6
+ readonly completedServices: LifecycleProgress['completedServices'];
7
+ /** Records the container a rebuild put in place of the one the stack was started with. */
8
+ readonly recordContainer: (service: string, containerId: string) => Promise<readonly EnvironmentDiagnostic[]>;
9
+ }
10
+ export interface ServiceCommandAdapters {
11
+ readonly observe: (input: {
12
+ readonly configPath: string;
13
+ }) => Promise<ServiceObservation>;
14
+ readonly execute: (step: ExecutionStep) => Promise<ExecuteProbeOutcome>;
15
+ readonly executeForeground: (input: ForegroundProcessInput) => Promise<ForegroundProcessOutcome>;
16
+ }
17
+ export declare function runServicePs(input: Readonly<{
18
+ configPath: string;
19
+ }>, adapters: ServiceCommandAdapters): Promise<EnvironmentCommandOutcome<Readonly<{
20
+ services: readonly RuntimeServiceState[];
21
+ }>>>;
22
+ /**
23
+ * `restart` restarts the container in place; `rebuild` builds the service's image and replaces its
24
+ * container, for a change baked into the image. Both then wait for the service as `up` does and
25
+ * report its logs when it does not become healthy.
26
+ */
27
+ export declare function runServiceRestart(input: Readonly<{
28
+ configPath: string;
29
+ service: string;
30
+ verb: 'restart' | 'rebuild';
31
+ }>, adapters: ServiceCommandAdapters): Promise<EnvironmentCommandOutcome<Readonly<{
32
+ service: string;
33
+ containerId: string;
34
+ change: 'restarted' | 'rebuilt';
35
+ }>>>;
36
+ type ServiceExecResult = Readonly<{
37
+ kind: 'complete';
38
+ status: number;
39
+ diagnostics: readonly EnvironmentDiagnostic[];
40
+ result: Readonly<{
41
+ exitCode: number;
42
+ signal: NodeJS.Signals | null;
43
+ }>;
44
+ }> | Readonly<{
45
+ kind: 'refusal';
46
+ status: number;
47
+ diagnostics: readonly EnvironmentDiagnostic[];
48
+ result: null;
49
+ }>;
50
+ /**
51
+ * Runs a command inside one service's container in the foreground. A command that exits nonzero
52
+ * is the command's answer, not a cockpit failure, so its status passes through as `session` does.
53
+ */
54
+ export declare function runServiceExec(input: Readonly<{
55
+ configPath: string;
56
+ service: string;
57
+ argv: readonly [string, ...string[]];
58
+ tty: boolean;
59
+ }>, adapters: ServiceCommandAdapters): Promise<ServiceExecResult>;
60
+ export {};
@@ -0,0 +1,89 @@
1
+ // One-service verbs on this checkout's own running stack: `ps`, `restart`, `rebuild` and `exec`. Each
2
+ // reaches the stack through the topology its runtime readiness authenticated, so the agent never names
3
+ // the hashed Compose project, its files or its profiles, and every step is one the runtime owner plans.
4
+ import { constants as osConstants } from 'node:os';
5
+ import { cockpitCommand } from '../../fix-catalogue.js';
6
+ import { ENVIRONMENT_CODES, errorCause, forwardedRefusal } from '../contract.js';
7
+ import { DeclarationRefusalError, serviceNotDeclared } from '../declaration.js';
8
+ import { admitRuntimeServiceHealth, observeRuntimeServiceStates, planRuntimeServiceExec, restartRuntimeService, startRuntimeService, } from '../runtime.js';
9
+ import { collectFailureLogs } from './lifecycle.js';
10
+ import { lifecycleRefusal } from './shared.js';
11
+ async function observeStack(verb, configPath, adapters, service) {
12
+ let observed;
13
+ try {
14
+ observed = await adapters.observe({ configPath });
15
+ }
16
+ catch (error) {
17
+ if (error instanceof DeclarationRefusalError)
18
+ return forwardedRefusal([error.diagnostic]);
19
+ return lifecycleRefusal(ENVIRONMENT_CODES.EVIDENCE_UNAVAILABLE, `${verb} could not reach this checkout's running stack: ${errorCause(error)}`, verb, `start the stack with ${cockpitCommand('up', { config: configPath })}, then rerun ${verb}`);
20
+ }
21
+ const declared = observed.topology.services.map(({ id }) => id);
22
+ if (service !== undefined && !declared.includes(service)) {
23
+ return forwardedRefusal([serviceNotDeclared(service, declared)]);
24
+ }
25
+ return observed;
26
+ }
27
+ export async function runServicePs(input, adapters) {
28
+ const observed = await observeStack('ps', input.configPath, adapters);
29
+ if ('kind' in observed)
30
+ return observed;
31
+ const states = await observeRuntimeServiceStates({ topology: observed.topology, execute: adapters.execute });
32
+ if (states.kind !== 'complete')
33
+ return lifecycleRefusal(ENVIRONMENT_CODES.EVIDENCE_UNAVAILABLE, `the stack's service states are unavailable: ${states.reason}`, 'ps');
34
+ return { kind: 'complete', status: 0, diagnostics: [], result: { services: states.services } };
35
+ }
36
+ /**
37
+ * `restart` restarts the container in place; `rebuild` builds the service's image and replaces its
38
+ * container, for a change baked into the image. Both then wait for the service as `up` does and
39
+ * report its logs when it does not become healthy.
40
+ */
41
+ export async function runServiceRestart(input, adapters) {
42
+ const observed = await observeStack(input.verb, input.configPath, adapters, input.service);
43
+ if ('kind' in observed)
44
+ return observed;
45
+ const run = { topology: observed.topology, service: input.service, execute: adapters.execute };
46
+ const outcome = input.verb === 'rebuild' ? await startRuntimeService({ ...run, rebuild: true }) : await restartRuntimeService(run);
47
+ const evidence = outcome.kind === 'observed' ? admitRuntimeServiceHealth(outcome.observation) : undefined;
48
+ if (!evidence) {
49
+ const logs = await collectFailureLogs(outcome.kind === 'observed' ? outcome.observation
50
+ : outcome.kind === 'failure' ? outcome.logs : undefined, input.service, adapters);
51
+ return forwardedRefusal([
52
+ { severity: 'error', code: ENVIRONMENT_CODES.LIFECYCLE_EVIDENCE_INVALID, target: input.service,
53
+ message: `service ${input.service} did not become healthy after ${input.verb}`,
54
+ fix: `fix the error in the log excerpt, then rerun ${input.verb}` },
55
+ ...logs
56
+ ]);
57
+ }
58
+ const recorded = observed.completedServices.find(({ service }) => service === input.service);
59
+ if (recorded && recorded.containerId !== evidence.containerId) {
60
+ const refused = await observed.recordContainer(input.service, evidence.containerId);
61
+ if (refused.length > 0)
62
+ return forwardedRefusal(refused);
63
+ }
64
+ return { kind: 'complete', status: 0, diagnostics: [],
65
+ result: { service: input.service, containerId: evidence.containerId, change: input.verb === 'rebuild' ? 'rebuilt' : 'restarted' } };
66
+ }
67
+ /**
68
+ * Runs a command inside one service's container in the foreground. A command that exits nonzero
69
+ * is the command's answer, not a cockpit failure, so its status passes through as `session` does.
70
+ */
71
+ export async function runServiceExec(input, adapters) {
72
+ const observed = await observeStack('exec', input.configPath, adapters, input.service);
73
+ if ('kind' in observed)
74
+ return observed;
75
+ const planned = planRuntimeServiceExec({ topology: observed.topology, service: input.service, argv: input.argv, tty: input.tty });
76
+ if (!planned)
77
+ return lifecycleRefusal(ENVIRONMENT_CODES.EVIDENCE_UNAVAILABLE, `the command for service ${input.service} could not be planned from the stack's topology`, input.service);
78
+ const child = await adapters.executeForeground(planned);
79
+ if (child.kind === 'refusal')
80
+ return { kind: 'refusal', status: child.code === ENVIRONMENT_CODES.EXECUTION_ABORTED ? 130 : 2, result: null,
81
+ diagnostics: [{ severity: 'error', code: child.code, target: input.service,
82
+ message: `the command in service ${input.service} could not be run to completion` }] };
83
+ const signalNumber = child.signal ? osConstants.signals[child.signal] : undefined;
84
+ const status = signalNumber !== undefined ? 128 + signalNumber : child.exitCode;
85
+ return { kind: 'complete', status, diagnostics: status === 0 ? [] : [{
86
+ severity: 'error', code: ENVIRONMENT_CODES.EXECUTION_STEP_FAILED, target: input.service,
87
+ message: `the command in service ${input.service} ${child.signal ? `was terminated by ${child.signal}` : `exited with status ${child.exitCode}`}`,
88
+ }], result: { exitCode: child.exitCode, signal: child.signal } };
89
+ }
@@ -0,0 +1,129 @@
1
+ import type { ExecutePlanOutcome } from '../../environment-exec/execute.js';
2
+ import { type CheckoutId, type ConfigSourceSnapshot, type EnvironmentCommandOutcome, type ExecutionPlan, type EnvironmentDiagnostic, type HolderId, type SetupExecutionEvidence, type SetupRefusalEvidence, type SourceProvenance, type StackId } from '../contract.js';
3
+ import { type SetupObservation, type SetupResult } from '../setup.js';
4
+ import type { InstructionPointerResult } from '../instruction-pointer.js';
5
+ import type { SiblingInstructionFilesResult } from '../sibling-instructions.js';
6
+ import { type ResolvedExecutable } from '../executable.js';
7
+ import type { InstallPolicy, Sibling } from '../../schema.js';
8
+ import { type StateNamespace } from '../state.js';
9
+ import type { LifecycleHistoryTransition } from '../lifecycle-stage.js';
10
+ import type { EnvironmentSeedPlan, EnvironmentSeedResult } from '../templates.js';
11
+ import type { InstallPolicyLockfileObservation, InstallPolicyProjection } from '../install-policy-observation.js';
12
+ import type { InstallPolicyResolution, ResolvedInstallPolicyBinding } from '../install-policy.js';
13
+ import { type EnvironmentIgnoreRefusal, type ConsumedSetupCheckoutObservation, type SetupCheckoutProjection } from '../setup-observation.js';
14
+ import type { LoadedConfigProjection } from '../../config/load.js';
15
+ export interface SetupCommandInput {
16
+ configPath: string;
17
+ writeInstructionPointers?: boolean;
18
+ writeInstructionFiles?: boolean;
19
+ env?: Readonly<Record<string, string | undefined>>;
20
+ gitExecutable?: ResolvedExecutable;
21
+ }
22
+ export interface SetupCommandResult {
23
+ source: SourceProvenance;
24
+ siblings: readonly SetupResult[];
25
+ environmentFiles?: readonly Extract<EnvironmentSeedResult, {
26
+ kind: 'created' | 'unchanged';
27
+ }>[];
28
+ installPolicies?: readonly ResolvedInstallPolicyBinding[];
29
+ }
30
+ export interface SetupRunContext {
31
+ readonly source: SourceProvenance;
32
+ readonly mainCheckoutPath: string;
33
+ readonly siblingsRoot: string;
34
+ readonly siblings: readonly Sibling[];
35
+ readonly policyCatalog: readonly InstallPolicy[];
36
+ readonly env: Readonly<Record<string, string>>;
37
+ readonly gitExecutable: ResolvedExecutable;
38
+ readonly namespace: StateNamespace;
39
+ readonly stackId: StackId;
40
+ readonly holderId: HolderId;
41
+ readonly writeInstructionPointers: boolean;
42
+ readonly writeInstructionFiles: boolean;
43
+ }
44
+ export interface SetupRunContextInput {
45
+ readonly checkout: SetupCheckoutProjection;
46
+ readonly configuration: LoadedConfigProjection;
47
+ readonly env: Readonly<Record<string, string>>;
48
+ readonly gitExecutable: ResolvedExecutable;
49
+ readonly namespace: StateNamespace;
50
+ readonly observedAt: string;
51
+ readonly currentCheckoutPath: string;
52
+ readonly mainCheckoutPath: string;
53
+ readonly cockpitId: ConsumedSetupCheckoutObservation['cockpitId'];
54
+ readonly checkoutId: CheckoutId;
55
+ readonly stackId: StackId;
56
+ readonly holderId: HolderId;
57
+ readonly sessionId: string;
58
+ readonly writeInstructionPointers?: boolean;
59
+ readonly writeInstructionFiles?: boolean;
60
+ }
61
+ export declare function issueSetupRunContext(input: SetupRunContextInput): EnvironmentCommandOutcome<SetupRunContext>;
62
+ interface SiblingOperationInput {
63
+ readonly context: SetupRunContext;
64
+ readonly siblingIndex: number;
65
+ readonly sibling: Sibling;
66
+ }
67
+ interface TimedSiblingOperationInput extends SiblingOperationInput {
68
+ readonly observedAt: string;
69
+ }
70
+ export interface SetupCommandAdapters {
71
+ load(input: SetupCommandInput): Promise<EnvironmentCommandOutcome<SetupRunContext>>;
72
+ observedAt(): string;
73
+ observeGit(input: SiblingOperationInput): Promise<SetupObservation>;
74
+ planGit(input: SiblingOperationInput & {
75
+ readonly observation: SetupObservation;
76
+ }): Promise<EnvironmentCommandOutcome<SetupResult>>;
77
+ syncInstructionPointer?(input: Readonly<{
78
+ cockpitRoot: string;
79
+ siblingRoot: string;
80
+ write: boolean;
81
+ }>): Promise<InstructionPointerResult>;
82
+ syncInstructionFiles(input: Readonly<{
83
+ siblingRoot: string;
84
+ write: boolean;
85
+ }>): Promise<SiblingInstructionFilesResult>;
86
+ execute(plan: ExecutionPlan): Promise<ExecutePlanOutcome>;
87
+ observeSource(path: string): Promise<ConfigSourceSnapshot>;
88
+ recordStarted(input: Pick<SetupRunContext, 'namespace' | 'stackId' | 'holderId'> & {
89
+ readonly observedAt: string;
90
+ }): Promise<LifecycleHistoryTransition>;
91
+ withIgnore<T>(input: TimedSiblingOperationInput & {
92
+ readonly environmentFileIndex: number;
93
+ readonly environmentFile: NonNullable<Sibling['environment_files']>[number];
94
+ }, use: () => T extends PromiseLike<unknown> ? never : T): Promise<(T extends PromiseLike<unknown> ? never : T) | EnvironmentIgnoreRefusal | undefined>;
95
+ planSeed(input: SiblingOperationInput & {
96
+ readonly environmentFileIndex: number;
97
+ readonly environmentFile: NonNullable<Sibling['environment_files']>[number];
98
+ }): Promise<EnvironmentSeedPlan>;
99
+ seed(plan: EnvironmentSeedPlan): EnvironmentSeedResult;
100
+ observePolicy(input: TimedSiblingOperationInput & {
101
+ readonly checkoutRoot: string;
102
+ readonly checkoutId: CheckoutId;
103
+ }): Promise<InstallPolicyLockfileObservation>;
104
+ withPolicy<T>(observation: InstallPolicyLockfileObservation, input: TimedSiblingOperationInput & {
105
+ readonly checkoutRoot: string;
106
+ readonly checkoutId: CheckoutId;
107
+ }, use: (projection: InstallPolicyProjection) => T extends PromiseLike<unknown> ? never : T): Promise<(T extends PromiseLike<unknown> ? never : T) | undefined>;
108
+ resolvePolicy(input: SiblingOperationInput & {
109
+ readonly checkoutRoot: string;
110
+ readonly checkoutId: CheckoutId;
111
+ readonly projection?: InstallPolicyProjection;
112
+ }): InstallPolicyResolution;
113
+ }
114
+ export interface SetupApplicationResult extends SetupCommandResult {
115
+ execution?: SetupExecutionEvidence;
116
+ }
117
+ export type SetupApplicationOutcome = Exclude<EnvironmentCommandOutcome<SetupApplicationResult>, {
118
+ kind: 'refusal';
119
+ }> | {
120
+ kind: 'refusal';
121
+ status: 2;
122
+ diagnostics: readonly EnvironmentDiagnostic[];
123
+ result: null;
124
+ evidence?: SetupRefusalEvidence;
125
+ plan?: never;
126
+ };
127
+ export declare function setupEnvironment(input?: Readonly<Record<string, string | undefined>>): Readonly<Record<string, string>> | undefined;
128
+ export declare function runSetup(input: SetupCommandInput, adapters: SetupCommandAdapters): Promise<SetupApplicationOutcome>;
129
+ export {};