@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.
- package/CHANGELOG.md +474 -0
- package/LICENSE +21 -0
- package/README.md +25 -2
- package/bin/cockpit.mjs +33 -0
- package/cockpit.schema.json +2644 -0
- package/dist/autonomy.d.ts +45 -0
- package/dist/autonomy.js +173 -0
- package/dist/bounded-read.d.ts +14 -0
- package/dist/bounded-read.js +42 -0
- package/dist/browser/commands.d.ts +117 -0
- package/dist/browser/commands.js +453 -0
- package/dist/browser/package-paths.d.ts +1 -0
- package/dist/browser/package-paths.js +6 -0
- package/dist/browser/proxy.d.ts +22 -0
- package/dist/browser/proxy.js +37 -0
- package/dist/browser/runtime.d.ts +118 -0
- package/dist/browser/runtime.js +186 -0
- package/dist/browser/surfaces.d.ts +141 -0
- package/dist/browser/surfaces.js +561 -0
- package/dist/browser/ui-gate.d.ts +15 -0
- package/dist/browser/ui-gate.js +18 -0
- package/dist/canonical-json.d.ts +2 -0
- package/dist/canonical-json.js +5 -0
- package/dist/cli-guard.d.ts +5 -0
- package/dist/cli-guard.js +71 -0
- package/dist/cli-main.d.ts +176 -0
- package/dist/cli-main.js +1584 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.js +16 -0
- package/dist/command-table.d.ts +121 -0
- package/dist/command-table.js +664 -0
- package/dist/config/load.d.ts +183 -0
- package/dist/config/load.js +367 -0
- package/dist/config/sibling-toml.d.ts +48 -0
- package/dist/config/sibling-toml.js +160 -0
- package/dist/config/surface-tools-toml.d.ts +9 -0
- package/dist/config/surface-tools-toml.js +37 -0
- package/dist/config/unconfirmed-toml.d.ts +9 -0
- package/dist/config/unconfirmed-toml.js +29 -0
- package/dist/config/verified-write.d.ts +43 -0
- package/dist/config/verified-write.js +89 -0
- package/dist/diagnostics.d.ts +26 -0
- package/dist/diagnostics.js +344 -0
- package/dist/docs/check.d.ts +16 -0
- package/dist/docs/check.js +197 -0
- package/dist/docs/decision-record.d.ts +34 -0
- package/dist/docs/decision-record.js +135 -0
- package/dist/docs/decisions.d.ts +16 -0
- package/dist/docs/decisions.js +103 -0
- package/dist/docs/markdown.d.ts +36 -0
- package/dist/docs/markdown.js +88 -0
- package/dist/docs/references.d.ts +32 -0
- package/dist/docs/references.js +148 -0
- package/dist/emit.d.ts +22 -0
- package/dist/emit.js +43 -0
- package/dist/entrypoint-kinds.d.ts +3 -0
- package/dist/entrypoint-kinds.js +11 -0
- package/dist/environment/application/confirm.d.ts +35 -0
- package/dist/environment/application/confirm.js +122 -0
- package/dist/environment/application/destructive.d.ts +6 -0
- package/dist/environment/application/destructive.js +429 -0
- package/dist/environment/application/doctor.d.ts +94 -0
- package/dist/environment/application/doctor.js +247 -0
- package/dist/environment/application/guard.d.ts +49 -0
- package/dist/environment/application/guard.js +677 -0
- package/dist/environment/application/health.d.ts +143 -0
- package/dist/environment/application/health.js +385 -0
- package/dist/environment/application/lifecycle-context.d.ts +235 -0
- package/dist/environment/application/lifecycle-context.js +154 -0
- package/dist/environment/application/lifecycle-state.d.ts +25 -0
- package/dist/environment/application/lifecycle-state.js +202 -0
- package/dist/environment/application/lifecycle.d.ts +18 -0
- package/dist/environment/application/lifecycle.js +737 -0
- package/dist/environment/application/logs.d.ts +45 -0
- package/dist/environment/application/logs.js +127 -0
- package/dist/environment/application/services.d.ts +60 -0
- package/dist/environment/application/services.js +89 -0
- package/dist/environment/application/setup.d.ts +129 -0
- package/dist/environment/application/setup.js +741 -0
- package/dist/environment/application/shared.d.ts +11 -0
- package/dist/environment/application/shared.js +61 -0
- package/dist/environment/application/siblings.d.ts +43 -0
- package/dist/environment/application/siblings.js +269 -0
- package/dist/environment/claims.d.ts +389 -0
- package/dist/environment/claims.js +1701 -0
- package/dist/environment/codex-hook-trust.d.ts +11 -0
- package/dist/environment/codex-hook-trust.js +185 -0
- package/dist/environment/compose-environment.d.ts +1 -0
- package/dist/environment/compose-environment.js +6 -0
- package/dist/environment/compose-ownership.d.ts +21 -0
- package/dist/environment/compose-ownership.js +117 -0
- package/dist/environment/compose-topology.d.ts +125 -0
- package/dist/environment/compose-topology.js +490 -0
- package/dist/environment/contract.d.ts +522 -0
- package/dist/environment/contract.js +794 -0
- package/dist/environment/declaration.d.ts +14 -0
- package/dist/environment/declaration.js +39 -0
- package/dist/environment/destructive-composition.d.ts +29 -0
- package/dist/environment/destructive-composition.js +333 -0
- package/dist/environment/docker-daemon.d.ts +30 -0
- package/dist/environment/docker-daemon.js +78 -0
- package/dist/environment/docker-endpoint.d.ts +10 -0
- package/dist/environment/docker-endpoint.js +19 -0
- package/dist/environment/env-schema-observation.d.ts +46 -0
- package/dist/environment/env-schema-observation.js +241 -0
- package/dist/environment/evidence.d.ts +136 -0
- package/dist/environment/evidence.js +437 -0
- package/dist/environment/executable.d.ts +38 -0
- package/dist/environment/executable.js +190 -0
- package/dist/environment/generated-application/authorities.d.ts +5 -0
- package/dist/environment/generated-application/authorities.js +61 -0
- package/dist/environment/generated-application/bootstrap-skill.d.ts +16 -0
- package/dist/environment/generated-application/bootstrap-skill.js +328 -0
- package/dist/environment/generated-application/check.d.ts +13 -0
- package/dist/environment/generated-application/check.js +191 -0
- package/dist/environment/generated-application/custom-surface.d.ts +26 -0
- package/dist/environment/generated-application/custom-surface.js +289 -0
- package/dist/environment/generated-application/prepare.d.ts +29 -0
- package/dist/environment/generated-application/prepare.js +278 -0
- package/dist/environment/generated-application/publication.d.ts +33 -0
- package/dist/environment/generated-application/publication.js +547 -0
- package/dist/environment/generated-application/shared.d.ts +492 -0
- package/dist/environment/generated-application/shared.js +354 -0
- package/dist/environment/generated-application/surface-observation.d.ts +4 -0
- package/dist/environment/generated-application/surface-observation.js +69 -0
- package/dist/environment/generated-application/surface-outputs.d.ts +71 -0
- package/dist/environment/generated-application/surface-outputs.js +400 -0
- package/dist/environment/generated-application/surfaces.d.ts +3 -0
- package/dist/environment/generated-application/surfaces.js +704 -0
- package/dist/environment/generated-application/sync.d.ts +6 -0
- package/dist/environment/generated-application/sync.js +124 -0
- package/dist/environment/git-observation.d.ts +202 -0
- package/dist/environment/git-observation.js +553 -0
- package/dist/environment/health-composition.d.ts +12 -0
- package/dist/environment/health-composition.js +645 -0
- package/dist/environment/host-observation.d.ts +56 -0
- package/dist/environment/host-observation.js +52 -0
- package/dist/environment/identity.d.ts +48 -0
- package/dist/environment/identity.js +85 -0
- package/dist/environment/init-application.d.ts +333 -0
- package/dist/environment/init-application.js +726 -0
- package/dist/environment/install-policy-observation.d.ts +71 -0
- package/dist/environment/install-policy-observation.js +284 -0
- package/dist/environment/install-policy.d.ts +48 -0
- package/dist/environment/install-policy.js +96 -0
- package/dist/environment/instance.d.ts +33 -0
- package/dist/environment/instance.js +122 -0
- package/dist/environment/instruction-pointer.d.ts +19 -0
- package/dist/environment/instruction-pointer.js +144 -0
- package/dist/environment/lifecycle-composition.d.ts +31 -0
- package/dist/environment/lifecycle-composition.js +742 -0
- package/dist/environment/lifecycle-stage.d.ts +120 -0
- package/dist/environment/lifecycle-stage.js +408 -0
- package/dist/environment/lifecycle.d.ts +75 -0
- package/dist/environment/lifecycle.js +354 -0
- package/dist/environment/logs.d.ts +132 -0
- package/dist/environment/logs.js +519 -0
- package/dist/environment/map-limit.d.ts +2 -0
- package/dist/environment/map-limit.js +13 -0
- package/dist/environment/mcp-observation.d.ts +9 -0
- package/dist/environment/mcp-observation.js +46 -0
- package/dist/environment/observations.d.ts +46 -0
- package/dist/environment/observations.js +346 -0
- package/dist/environment/operator-application.d.ts +79 -0
- package/dist/environment/operator-application.js +197 -0
- package/dist/environment/ports.d.ts +182 -0
- package/dist/environment/ports.js +1205 -0
- package/dist/environment/posture-observation.d.ts +68 -0
- package/dist/environment/posture-observation.js +253 -0
- package/dist/environment/presence.d.ts +4 -0
- package/dist/environment/presence.js +26 -0
- package/dist/environment/read-composition.d.ts +32 -0
- package/dist/environment/read-composition.js +397 -0
- package/dist/environment/readiness-composition.d.ts +57 -0
- package/dist/environment/readiness-composition.js +151 -0
- package/dist/environment/reclaim.d.ts +370 -0
- package/dist/environment/reclaim.js +1940 -0
- package/dist/environment/repository-identity.d.ts +13 -0
- package/dist/environment/repository-identity.js +108 -0
- package/dist/environment/runtime-measurement-record.d.ts +38 -0
- package/dist/environment/runtime-measurement-record.js +111 -0
- package/dist/environment/runtime-measurement.d.ts +27 -0
- package/dist/environment/runtime-measurement.js +224 -0
- package/dist/environment/runtime-probe-residue.d.ts +43 -0
- package/dist/environment/runtime-probe-residue.js +148 -0
- package/dist/environment/runtime-probe.d.ts +72 -0
- package/dist/environment/runtime-probe.js +725 -0
- package/dist/environment/runtime.d.ts +551 -0
- package/dist/environment/runtime.js +2405 -0
- package/dist/environment/seed.d.ts +16 -0
- package/dist/environment/seed.js +43 -0
- package/dist/environment/selftest-application.d.ts +86 -0
- package/dist/environment/selftest-application.js +713 -0
- package/dist/environment/sensitive.d.ts +3 -0
- package/dist/environment/sensitive.js +48 -0
- package/dist/environment/served-checkout-grants.d.ts +53 -0
- package/dist/environment/served-checkout-grants.js +182 -0
- package/dist/environment/setup-observation.d.ts +62 -0
- package/dist/environment/setup-observation.js +1473 -0
- package/dist/environment/setup.d.ts +43 -0
- package/dist/environment/setup.js +176 -0
- package/dist/environment/sibling-checkouts.d.ts +119 -0
- package/dist/environment/sibling-checkouts.js +254 -0
- package/dist/environment/sibling-instructions.d.ts +33 -0
- package/dist/environment/sibling-instructions.js +224 -0
- package/dist/environment/sibling-observation.d.ts +27 -0
- package/dist/environment/sibling-observation.js +45 -0
- package/dist/environment/sibling-pull.d.ts +23 -0
- package/dist/environment/sibling-pull.js +95 -0
- package/dist/environment/sibling-registration.d.ts +45 -0
- package/dist/environment/sibling-registration.js +538 -0
- package/dist/environment/stack-inputs.d.ts +18 -0
- package/dist/environment/stack-inputs.js +210 -0
- package/dist/environment/stack-inventory-prune.d.ts +31 -0
- package/dist/environment/stack-inventory-prune.js +129 -0
- package/dist/environment/stack-inventory-report.d.ts +44 -0
- package/dist/environment/stack-inventory-report.js +78 -0
- package/dist/environment/stack-inventory.d.ts +94 -0
- package/dist/environment/stack-inventory.js +418 -0
- package/dist/environment/state.d.ts +410 -0
- package/dist/environment/state.js +2153 -0
- package/dist/environment/templates.d.ts +140 -0
- package/dist/environment/templates.js +685 -0
- package/dist/environment/tool-registration.d.ts +9 -0
- package/dist/environment/tool-registration.js +92 -0
- package/dist/environment/upgrade-application.d.ts +19 -0
- package/dist/environment/upgrade-application.js +175 -0
- package/dist/environment-exec/execute.d.ts +105 -0
- package/dist/environment-exec/execute.js +1179 -0
- package/dist/environment-exec/libexec-program.d.ts +6 -0
- package/dist/environment-exec/libexec-program.js +22 -0
- package/dist/environment-exec/verified-digest.d.ts +4 -0
- package/dist/environment-exec/verified-digest.js +16 -0
- package/dist/exact-keys.d.ts +7 -0
- package/dist/exact-keys.js +15 -0
- package/dist/fix-catalogue.d.ts +32 -0
- package/dist/fix-catalogue.js +60 -0
- package/dist/freshness.d.ts +29 -0
- package/dist/freshness.js +75 -0
- package/dist/generated-environment/adopt.d.ts +16 -0
- package/dist/generated-environment/adopt.js +271 -0
- package/dist/generated-environment/command.d.ts +47 -0
- package/dist/generated-environment/command.js +75 -0
- package/dist/generated-environment/transaction.d.ts +186 -0
- package/dist/generated-environment/transaction.js +1770 -0
- package/dist/grading/evaluate.d.ts +71 -0
- package/dist/grading/evaluate.js +403 -0
- package/dist/grading/grade.d.ts +33 -0
- package/dist/grading/grade.js +57 -0
- package/dist/guards/answer-confirmation.d.ts +41 -0
- package/dist/guards/answer-confirmation.js +109 -0
- package/dist/guards/evaluator.d.ts +130 -0
- package/dist/guards/evaluator.js +1258 -0
- package/dist/guards/harness-adapter.d.ts +17 -0
- package/dist/guards/harness-adapter.js +57 -0
- package/dist/guards/host.d.ts +8 -0
- package/dist/guards/host.js +10 -0
- package/dist/guards/invocation-parser.d.ts +66 -0
- package/dist/guards/invocation-parser.js +595 -0
- package/dist/guards/local-identity.d.ts +44 -0
- package/dist/guards/local-identity.js +129 -0
- package/dist/guards/policy-change.d.ts +43 -0
- package/dist/guards/policy-change.js +159 -0
- package/dist/guards/policy-pin.d.ts +13 -0
- package/dist/guards/policy-pin.js +177 -0
- package/dist/guards/protected-locations.d.ts +62 -0
- package/dist/guards/protected-locations.js +461 -0
- package/dist/guards/read-only.d.ts +37 -0
- package/dist/guards/read-only.js +315 -0
- package/dist/init/command.d.ts +41 -0
- package/dist/init/command.js +330 -0
- package/dist/init/derive.d.ts +53 -0
- package/dist/init/derive.js +819 -0
- package/dist/init/draft.d.ts +140 -0
- package/dist/init/draft.js +1228 -0
- package/dist/init/render.d.ts +47 -0
- package/dist/init/render.js +104 -0
- package/dist/init/scaffold.d.ts +53 -0
- package/dist/init/scaffold.js +121 -0
- package/dist/invocation.d.ts +13 -0
- package/dist/invocation.js +20 -0
- package/dist/package-metadata.d.ts +9 -0
- package/dist/package-metadata.js +19 -0
- package/dist/readiness.d.ts +53 -0
- package/dist/readiness.js +88 -0
- package/dist/references/named.d.ts +24 -0
- package/dist/references/named.js +27 -0
- package/dist/refusal.d.ts +15 -0
- package/dist/refusal.js +7 -0
- package/dist/registry-derivation.d.ts +31 -0
- package/dist/registry-derivation.js +32 -0
- package/dist/registry-resolve/command.d.ts +47 -0
- package/dist/registry-resolve/command.js +226 -0
- package/dist/registry-resolve/registry.d.ts +68 -0
- package/dist/registry-resolve/registry.js +292 -0
- package/dist/registry-resolve/render-shell.d.ts +18 -0
- package/dist/registry-resolve/render-shell.js +36 -0
- package/dist/repair.d.ts +29 -0
- package/dist/repair.js +8 -0
- package/dist/repository-path.d.ts +9 -0
- package/dist/repository-path.js +16 -0
- package/dist/schema-json.d.ts +1 -0
- package/dist/schema-json.js +177 -0
- package/dist/schema.d.ts +1289 -0
- package/dist/schema.js +985 -0
- package/dist/setup/command.d.ts +4 -0
- package/dist/setup/command.js +4 -0
- package/dist/sha256.d.ts +1 -0
- package/dist/sha256.js +4 -0
- package/dist/surfaces/adoption.d.ts +41 -0
- package/dist/surfaces/adoption.js +217 -0
- package/dist/surfaces/consumer-instructions.d.ts +20 -0
- package/dist/surfaces/consumer-instructions.js +43 -0
- package/dist/surfaces/contract.d.ts +42 -0
- package/dist/surfaces/contract.js +169 -0
- package/dist/surfaces/core-declarations.d.ts +24 -0
- package/dist/surfaces/core-declarations.js +79 -0
- package/dist/surfaces/development-markers.d.ts +1 -0
- package/dist/surfaces/development-markers.js +18 -0
- package/dist/surfaces/generator-adapter.d.ts +71 -0
- package/dist/surfaces/generator-adapter.js +809 -0
- package/dist/surfaces/harness-registry.d.ts +260 -0
- package/dist/surfaces/harness-registry.js +146 -0
- package/dist/surfaces/mcp.d.ts +145 -0
- package/dist/surfaces/mcp.js +349 -0
- package/dist/surfaces/merge.d.ts +30 -0
- package/dist/surfaces/merge.js +105 -0
- package/dist/surfaces/ownership.d.ts +190 -0
- package/dist/surfaces/ownership.js +795 -0
- package/dist/surfaces/projection.d.ts +136 -0
- package/dist/surfaces/projection.js +716 -0
- package/dist/surfaces/render.d.ts +79 -0
- package/dist/surfaces/render.js +636 -0
- package/dist/surfaces/restrictions.d.ts +130 -0
- package/dist/surfaces/restrictions.js +447 -0
- package/dist/surfaces/selftest.d.ts +162 -0
- package/dist/surfaces/selftest.js +393 -0
- package/dist/surfaces/skill-contract.d.ts +85 -0
- package/dist/surfaces/skill-contract.js +449 -0
- package/dist/surfaces/sync.d.ts +57 -0
- package/dist/surfaces/sync.js +164 -0
- package/dist/team-metadata.d.ts +41 -0
- package/dist/team-metadata.js +513 -0
- package/dist/testing/gates.d.ts +91 -0
- package/dist/testing/gates.js +182 -0
- package/dist/testing/hooks.d.ts +59 -0
- package/dist/testing/hooks.js +139 -0
- package/dist/testing/test-protection.d.ts +34 -0
- package/dist/testing/test-protection.js +137 -0
- package/dist/testing/verdict.d.ts +29 -0
- package/dist/testing/verdict.js +62 -0
- package/dist/testing/weakening.d.ts +15 -0
- package/dist/testing/weakening.js +30 -0
- package/dist/work-orders/application-closure.d.ts +7 -0
- package/dist/work-orders/application-closure.js +76 -0
- package/dist/work-orders/application-context.d.ts +162 -0
- package/dist/work-orders/application-context.js +137 -0
- package/dist/work-orders/application-decisions.d.ts +27 -0
- package/dist/work-orders/application-decisions.js +121 -0
- package/dist/work-orders/application-grading.d.ts +11 -0
- package/dist/work-orders/application-grading.js +212 -0
- package/dist/work-orders/application.d.ts +6 -0
- package/dist/work-orders/application.js +223 -0
- package/dist/work-orders/composition.d.ts +101 -0
- package/dist/work-orders/composition.js +1202 -0
- package/dist/work-orders/contract.d.ts +77 -0
- package/dist/work-orders/contract.js +140 -0
- package/dist/work-orders/decisions.d.ts +23 -0
- package/dist/work-orders/decisions.js +55 -0
- package/dist/work-orders/store.d.ts +207 -0
- package/dist/work-orders/store.js +291 -0
- package/docs/README.md +68 -0
- package/docs/architecture.md +136 -0
- package/docs/capability-matrix.md +58 -0
- package/docs/cli-reference.md +807 -0
- package/docs/command-list.md +62 -0
- package/docs/compose-patterns.md +99 -0
- package/docs/concepts.md +173 -0
- package/docs/configuration-essentials.md +177 -0
- package/docs/configuration-reference.md +636 -0
- package/docs/docs-check.md +76 -0
- package/docs/environment.md +948 -0
- package/docs/extending.md +43 -0
- package/docs/faq.md +113 -0
- package/docs/getting-started.md +692 -0
- package/docs/harness-surfaces.md +500 -0
- package/docs/joining-a-team.md +76 -0
- package/docs/release-policy.md +49 -0
- package/docs/safety-and-autonomy.md +463 -0
- package/docs/troubleshooting.md +382 -0
- package/docs/tutorial.md +171 -0
- package/docs/work-and-browser.md +420 -0
- package/libexec/browser-operation.cjs +270 -0
- package/libexec/fence-marker.cjs +101 -0
- package/libexec/fence-marker.d.cts +24 -0
- package/libexec/fenced-group-runner.cjs +77 -0
- package/libexec/fenced-supervisor.cjs +137 -0
- package/libexec/generated-filesystem.cjs +731 -0
- package/libexec/install-filesystem.cjs +225 -0
- package/libexec/rulesync-generator.NOTICE.md +1112 -0
- package/libexec/rulesync-generator.cjs +743 -0
- package/libexec/surface-generator-worker.cjs +266 -0
- package/libexec/surface-output-reader.cjs +99 -0
- package/libexec/surface-scratch-cleanup.cjs +14 -0
- package/libexec/validate-harness-evidence.d.mts +183 -0
- package/libexec/validate-harness-evidence.mjs +1312 -0
- package/package.json +74 -4
- package/surfaces/README.md +33 -0
- package/surfaces/agents/evaluator.agent.md +76 -0
- package/surfaces/guards/bash-guard.sh +48 -0
- package/surfaces/guards/claude.adapter.json +25 -0
- package/surfaces/guards/codex.adapter.json +24 -0
- package/surfaces/guards/opencode.adapter.json +25 -0
- package/surfaces/references/browser.md +63 -0
- package/surfaces/references/test-data-and-personas.md +84 -0
- package/surfaces/references/testing-tiers.md +11 -0
- package/surfaces/skills/cockpit-browser.skill.md +59 -0
- package/surfaces/skills/cockpit-explain.skill.md +32 -0
- package/surfaces/skills/cockpit-fix.skill.md +37 -0
- package/surfaces/skills/cockpit-setup.skill.md +39 -0
- package/surfaces/skills/cockpit-work.skill.md +34 -0
- package/surfaces/skills/collection.json +5 -0
- package/surfaces/skills/procedures/explain.md +66 -0
- package/surfaces/skills/procedures/fix.md +95 -0
- package/surfaces/skills/procedures/setup.md +452 -0
- package/surfaces/skills/procedures/work.md +134 -0
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { type GeneratedEnvironmentCommandAdapters, type GeneratedEnvironmentCommandOutcome, type GeneratedEnvironmentRepairAuthority, type GeneratedEnvironmentSyncInput } from './shared.js';
|
|
2
|
+
export declare function syncGeneratedEnvironment(input: GeneratedEnvironmentSyncInput, adapterOverrides?: Partial<GeneratedEnvironmentCommandAdapters>): Promise<GeneratedEnvironmentCommandOutcome>;
|
|
3
|
+
export declare function syncTeamGeneratedEnvironment(input: GeneratedEnvironmentSyncInput, adapterOverrides?: Partial<GeneratedEnvironmentCommandAdapters>): Promise<GeneratedEnvironmentCommandOutcome>;
|
|
4
|
+
export declare function applyGeneratedEnvironmentRepair(authority: GeneratedEnvironmentRepairAuthority, options?: Readonly<{
|
|
5
|
+
dryRun?: boolean;
|
|
6
|
+
}>): Promise<GeneratedEnvironmentCommandOutcome>;
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { prepareTeamMetadata, applyTeamMetadata } from '../../team-metadata.js';
|
|
2
|
+
import { basename } from 'node:path';
|
|
3
|
+
import { GUARD_LOCAL_PATHS, writeCockpitLocalFiles, writeGuardLocalIdentity } from '../../guards/local-identity.js';
|
|
4
|
+
import { portablePublicationPaths, authorizePublicationPlan, runPublicationPlan } from '../../generated-environment/transaction.js';
|
|
5
|
+
import { refusalOutcome as refuse } from '../../refusal.js';
|
|
6
|
+
import { readBoundedInput } from '../../config/load.js';
|
|
7
|
+
import { complete, mergedAdapters, overrideChangedRefusal, ownRecord, sha256, } from './shared.js';
|
|
8
|
+
import { syncCommandInput } from './prepare.js';
|
|
9
|
+
import { inputSourcesCurrent, ownedInputOverlap, preparePublication } from './publication.js';
|
|
10
|
+
import { checkCanonicalGeneratedEnvironment, issueRepairAuthority, issuedRepairs } from './check.js';
|
|
11
|
+
import { openCodeGrantFile } from './surface-outputs.js';
|
|
12
|
+
import { readSiblingCheckouts } from '../sibling-checkouts.js';
|
|
13
|
+
import { openCodeGrantDirectory, openCodePatternUnsafe } from '../served-checkout-grants.js';
|
|
14
|
+
async function prepareGeneratedEnvironmentSync(input, adapterOverrides, metadataChanges = []) {
|
|
15
|
+
const request = syncCommandInput(input);
|
|
16
|
+
if (!request)
|
|
17
|
+
return refuse('GENERATED_INPUT_INVALID', 'generated environment command input is invalid', 'generated-environment');
|
|
18
|
+
const adapters = mergedAdapters(adapterOverrides);
|
|
19
|
+
const publication = await preparePublication(request, adapters);
|
|
20
|
+
if ('status' in publication)
|
|
21
|
+
return publication;
|
|
22
|
+
if ('refusal' in publication)
|
|
23
|
+
return publication.refusal;
|
|
24
|
+
if (metadataChanges.length > 0) {
|
|
25
|
+
const generatedPaths = [...new Set([
|
|
26
|
+
...publication.prepared.owned.map(row => row.path),
|
|
27
|
+
...publication.prepared.surfaces.map(row => row.path),
|
|
28
|
+
...(publication.ownership.kind === 'complete' ? publication.ownership.manifest.entries.map(row => row.path) : []),
|
|
29
|
+
])];
|
|
30
|
+
const destination = metadataChanges.find(change => generatedPaths.some(path => path === change.path || path.startsWith(`${change.path}/`))
|
|
31
|
+
|| !portablePublicationPaths([...generatedPaths, change.path]));
|
|
32
|
+
if (destination)
|
|
33
|
+
return refuse('TEAM_METADATA_UNAVAILABLE', 'a pending team metadata write overlaps a generated destination; move the generated output to a separate path, then run npx --no cockpit sync --config <your cockpit.toml> again', destination.path);
|
|
34
|
+
const overlap = await ownedInputOverlap(publication.prepared, metadataChanges);
|
|
35
|
+
if (overlap.kind === 'invalid' || overlap.path)
|
|
36
|
+
return refuse('TEAM_METADATA_UNAVAILABLE', 'pending team metadata writes overlap an authenticated input or its identity could not be checked; move the input to a separate file, update its declaration, then run npx --no cockpit sync --config <your cockpit.toml> again', overlap.kind === 'complete' ? overlap.path : 'team-metadata');
|
|
37
|
+
}
|
|
38
|
+
const authority = issueRepairAuthority({ prepared: publication.prepared, plan: publication.plan, adapters });
|
|
39
|
+
return { kind: 'complete', authority, dryRun: request.dryRun === true };
|
|
40
|
+
}
|
|
41
|
+
export async function syncGeneratedEnvironment(input, adapterOverrides = {}) {
|
|
42
|
+
const prepared = await prepareGeneratedEnvironmentSync(input, adapterOverrides);
|
|
43
|
+
return prepared.kind === 'refusal' ? prepared : applyGeneratedEnvironmentRepair(prepared.authority, { dryRun: prepared.dryRun });
|
|
44
|
+
}
|
|
45
|
+
export async function syncTeamGeneratedEnvironment(input, adapterOverrides = {}) {
|
|
46
|
+
const request = syncCommandInput(input);
|
|
47
|
+
if (!request)
|
|
48
|
+
return refuse('GENERATED_INPUT_INVALID', 'generated environment command input is invalid', 'generated-environment');
|
|
49
|
+
const metadata = await prepareTeamMetadata(request.configPath);
|
|
50
|
+
if (metadata.kind === 'refusal')
|
|
51
|
+
return refuse(metadata.code, metadata.message, metadata.target, metadata.fix);
|
|
52
|
+
const prepared = await prepareGeneratedEnvironmentSync(request, adapterOverrides, metadata.authority.changes);
|
|
53
|
+
if (prepared.kind === 'refusal')
|
|
54
|
+
return prepared;
|
|
55
|
+
if (!prepared.dryRun) {
|
|
56
|
+
const record = issuedRepairs.get(prepared.authority);
|
|
57
|
+
const approved = await authorizePublicationPlan(record.plan, record.adapters);
|
|
58
|
+
if (approved !== true)
|
|
59
|
+
return approved;
|
|
60
|
+
const applied = await applyTeamMetadata(metadata.authority);
|
|
61
|
+
if (applied.kind === 'refusal')
|
|
62
|
+
return refuse(applied.code, applied.message, applied.target);
|
|
63
|
+
}
|
|
64
|
+
const outcome = await applyGeneratedEnvironmentRepair(prepared.authority, { dryRun: prepared.dryRun });
|
|
65
|
+
return outcome.kind === 'refusal' ? outcome : { ...outcome,
|
|
66
|
+
result: { ...outcome.result, changes: [...metadata.authority.changes, ...outcome.result.changes] } };
|
|
67
|
+
}
|
|
68
|
+
export async function applyGeneratedEnvironmentRepair(authority, options = {}) {
|
|
69
|
+
const settings = ownRecord(options);
|
|
70
|
+
if (!settings || Object.keys(settings).some(key => key !== 'dryRun')
|
|
71
|
+
|| settings.dryRun !== undefined && typeof settings.dryRun !== 'boolean')
|
|
72
|
+
return refuse('GENERATED_INPUT_INVALID', 'repair publication options are invalid', 'generated-environment');
|
|
73
|
+
const record = issuedRepairs.get(authority);
|
|
74
|
+
if (!record)
|
|
75
|
+
return refuse('GENERATED_PUBLICATION_FAILED', 'repair authority is unknown or already consumed', 'generated-environment');
|
|
76
|
+
issuedRepairs.delete(authority);
|
|
77
|
+
const { prepared, adapters } = record;
|
|
78
|
+
const changedOriginal = prepared.changedOverrideOriginals[0];
|
|
79
|
+
if (changedOriginal && settings.dryRun !== true)
|
|
80
|
+
return overrideChangedRefusal(changedOriginal);
|
|
81
|
+
const outcome = await runPublicationPlan(record.plan, {
|
|
82
|
+
...adapters,
|
|
83
|
+
dryRun: settings.dryRun === true,
|
|
84
|
+
revalidate: async (deadline, stage) => {
|
|
85
|
+
const source = await adapters.observeSource(prepared.configPath);
|
|
86
|
+
if (source.state !== 'available' || source.sha256 !== prepared.sourceSha256)
|
|
87
|
+
return refuse('GENERATED_SOURCE_CHANGED', 'the configuration changed before generated files could be published', 'generated-environment');
|
|
88
|
+
if (stage === 'after-publish') {
|
|
89
|
+
const checked = await checkCanonicalGeneratedEnvironment({ configPath: prepared.configPath }, prepared, adapters);
|
|
90
|
+
return checked.kind === 'complete' ? true : checked;
|
|
91
|
+
}
|
|
92
|
+
if (!await inputSourcesCurrent(prepared, adapters, deadline))
|
|
93
|
+
return refuse('GENERATED_SOURCE_CHANGED', 'a generated input changed before publication', stage === 'before-stage' ? prepared.configSource.path : 'generated-environment');
|
|
94
|
+
return true;
|
|
95
|
+
},
|
|
96
|
+
});
|
|
97
|
+
if (outcome.kind === 'refusal')
|
|
98
|
+
return outcome;
|
|
99
|
+
if (prepared.guardHandler && settings.dryRun !== true) {
|
|
100
|
+
// The guard compares a later edit with exactly the text this identity names, so it is read
|
|
101
|
+
// again and must still be that text.
|
|
102
|
+
const configRead = await readBoundedInput(prepared.configPath);
|
|
103
|
+
if (configRead.kind !== 'complete' || sha256(configRead.bytes) !== prepared.guardHandler.configSha256)
|
|
104
|
+
return refuse('GENERATED_SOURCE_CHANGED', 'the configuration changed after generated files were published, so the guard identity was not recorded; the guard refuses every agent tool call until it is', prepared.configSource.path, 'run `npx --no cockpit sync --config <your cockpit.toml>` again');
|
|
105
|
+
const local = await writeGuardLocalIdentity(prepared.root, prepared.guardHandler, configRead.bytes.toString('utf8'));
|
|
106
|
+
if (local.kind === 'refusal')
|
|
107
|
+
return refuse('GENERATED_PUBLICATION_FAILED', `the committed guard files were published, but ${local.message}; the guard refuses every agent tool call until it exists`, GUARD_LOCAL_PATHS.identity, 'fix the path, then run `npx --no cockpit sync --config <your cockpit.toml>` again in a terminal');
|
|
108
|
+
}
|
|
109
|
+
if (prepared.openCodeGrantRoots.length > 0 && settings.dryRun !== true) {
|
|
110
|
+
// A checkout `use` serves from outside the declared one is what OpenCode is granted, as `use` wrote it.
|
|
111
|
+
const recorded = await readSiblingCheckouts(prepared.root);
|
|
112
|
+
if (recorded.kind !== 'complete')
|
|
113
|
+
return refuse(recorded.diagnostic.code, `the committed OpenCode settings were published, but its grants were not written: ${recorded.diagnostic.message}`, recorded.diagnostic.target, recorded.diagnostic.fix);
|
|
114
|
+
const grants = prepared.openCodeGrantRoots.map(row => ({ name: basename(openCodeGrantFile(row.slug)),
|
|
115
|
+
bytes: openCodeGrantDirectory(row.root, Object.hasOwn(recorded.checkouts, row.slug) ? recorded.checkouts[row.slug] : undefined) }));
|
|
116
|
+
const unsafe = grants.map(row => openCodePatternUnsafe(row.bytes)).find(reason => reason !== undefined);
|
|
117
|
+
if (unsafe)
|
|
118
|
+
return refuse('GENERATED_PUBLICATION_FAILED', `the committed OpenCode settings were published, but its grants were not written: ${unsafe}`, GUARD_LOCAL_PATHS.directory, 'serve the sibling from a checkout at a plain path with `npx --no cockpit use`, then run sync again');
|
|
119
|
+
const local = await writeCockpitLocalFiles(prepared.root, grants);
|
|
120
|
+
if (local.kind === 'refusal')
|
|
121
|
+
return refuse('GENERATED_PUBLICATION_FAILED', `the committed OpenCode settings were published, but ${local.message}; OpenCode refuses to start until it exists`, GUARD_LOCAL_PATHS.directory, 'fix the path, then run `npx --no cockpit sync --config <your cockpit.toml>` again in a terminal');
|
|
122
|
+
}
|
|
123
|
+
return complete('sync', prepared, settings.dryRun === true, outcome.changes, settings.dryRun ? outcome.staleRemoval : undefined);
|
|
124
|
+
}
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
import type { ExecuteProbeOutcome } from '../environment-exec/execute.js';
|
|
2
|
+
import { ENVIRONMENT_CODES, type CheckoutId, type EnvironmentDiagnostic, type EnvironmentObservation, type ExecutionStep, type StackId } from './contract.js';
|
|
3
|
+
import { type ResolvedExecutable } from './executable.js';
|
|
4
|
+
import { type RuntimeTopologyEvidence } from './runtime.js';
|
|
5
|
+
import { type SetupCheckoutProjection } from './setup-observation.js';
|
|
6
|
+
export declare const observationDeclarations: readonly [{
|
|
7
|
+
readonly id: 'git-working-tree';
|
|
8
|
+
readonly owner: "git-observation";
|
|
9
|
+
readonly postures: readonly ["environment"];
|
|
10
|
+
readonly stages: readonly [{
|
|
11
|
+
readonly stage: 'bootstrap';
|
|
12
|
+
readonly disposition: 'required';
|
|
13
|
+
}, {
|
|
14
|
+
readonly stage: 'steady';
|
|
15
|
+
readonly disposition: 'required';
|
|
16
|
+
}];
|
|
17
|
+
readonly code: "GIT_STATE_UNHEALTHY";
|
|
18
|
+
readonly isIssued: typeof isGitObservation;
|
|
19
|
+
readonly issuedAt: typeof observationIssuedAt;
|
|
20
|
+
}, {
|
|
21
|
+
readonly id: 'git-adjacency';
|
|
22
|
+
readonly owner: "git-observation";
|
|
23
|
+
readonly postures: readonly ["environment"];
|
|
24
|
+
readonly stages: readonly [{
|
|
25
|
+
readonly stage: 'bootstrap';
|
|
26
|
+
readonly disposition: 'required';
|
|
27
|
+
}, {
|
|
28
|
+
readonly stage: 'steady';
|
|
29
|
+
readonly disposition: 'required';
|
|
30
|
+
}];
|
|
31
|
+
readonly code: "CHECKOUT_ADJACENCY_UNHEALTHY";
|
|
32
|
+
readonly isIssued: typeof isGitObservation;
|
|
33
|
+
readonly issuedAt: typeof observationIssuedAt;
|
|
34
|
+
}, {
|
|
35
|
+
readonly id: 'running-checkout';
|
|
36
|
+
readonly owner: "git-observation";
|
|
37
|
+
readonly postures: readonly ["running-stack"];
|
|
38
|
+
readonly stages: readonly [{
|
|
39
|
+
readonly stage: 'bootstrap';
|
|
40
|
+
readonly disposition: 'not-applicable';
|
|
41
|
+
readonly reason: 'no running checkout exists before the first seed';
|
|
42
|
+
}, {
|
|
43
|
+
readonly stage: 'steady';
|
|
44
|
+
readonly disposition: 'required';
|
|
45
|
+
}];
|
|
46
|
+
readonly code: "RUNNING_CHECKOUT_MISMATCH";
|
|
47
|
+
readonly isIssued: typeof isGitObservation;
|
|
48
|
+
readonly issuedAt: typeof observationIssuedAt;
|
|
49
|
+
}];
|
|
50
|
+
declare function isGitObservation(value: unknown): value is EnvironmentObservation;
|
|
51
|
+
declare function observationIssuedAt(value: unknown): number | undefined;
|
|
52
|
+
interface GitObservationEvidence {
|
|
53
|
+
readonly revision: string | null;
|
|
54
|
+
readonly branch: string;
|
|
55
|
+
readonly upstream: string | null;
|
|
56
|
+
readonly ahead: number;
|
|
57
|
+
readonly behind: number;
|
|
58
|
+
readonly trackedDirtyCount: number;
|
|
59
|
+
readonly untrackedCount: number;
|
|
60
|
+
readonly workingTree: 'clean' | 'dirty' | 'untracked' | 'dirty-and-untracked';
|
|
61
|
+
readonly adjacency: 'aligned' | 'ahead' | 'behind' | 'diverged' | 'untracked-upstream' | 'upstream-gone';
|
|
62
|
+
}
|
|
63
|
+
type GitObservationResult = {
|
|
64
|
+
readonly kind: 'complete';
|
|
65
|
+
readonly evidence: GitObservationEvidence;
|
|
66
|
+
readonly observations: readonly EnvironmentObservation[];
|
|
67
|
+
} | {
|
|
68
|
+
readonly kind: 'unavailable';
|
|
69
|
+
readonly reason: string;
|
|
70
|
+
};
|
|
71
|
+
export declare function createGitObservationStep(input: {
|
|
72
|
+
readonly executable: ResolvedExecutable;
|
|
73
|
+
readonly checkoutRoot: string;
|
|
74
|
+
readonly env: Readonly<Record<string, string>>;
|
|
75
|
+
readonly timeoutMs: number;
|
|
76
|
+
readonly stackId: StackId;
|
|
77
|
+
readonly source: string;
|
|
78
|
+
readonly checkoutId: CheckoutId;
|
|
79
|
+
}): ExecutionStep | undefined;
|
|
80
|
+
export type GitBranchStatus = Readonly<{
|
|
81
|
+
kind: 'complete';
|
|
82
|
+
/** An object name, or `(initial)` while HEAD is unborn. */
|
|
83
|
+
revision: string;
|
|
84
|
+
/** The branch name, or `(detached)` on a detached HEAD. */
|
|
85
|
+
branch: string;
|
|
86
|
+
upstream: string | null;
|
|
87
|
+
ahead: number;
|
|
88
|
+
behind: number;
|
|
89
|
+
/** False when Git names an upstream it cannot count against, because the upstream ref is gone. */
|
|
90
|
+
adjacencyReported: boolean;
|
|
91
|
+
trackedDirtyCount: number;
|
|
92
|
+
untrackedCount: number;
|
|
93
|
+
}>;
|
|
94
|
+
/** `git status --porcelain=v2 --branch` output as numbers and names, or why it cannot be read as such. */
|
|
95
|
+
export declare function parseGitBranchStatus(source: string): GitBranchStatus | Readonly<{
|
|
96
|
+
kind: 'unavailable';
|
|
97
|
+
reason: string;
|
|
98
|
+
}>;
|
|
99
|
+
export declare function decodeGitObservation(bytes: Buffer, context: {
|
|
100
|
+
readonly stackId: StackId;
|
|
101
|
+
readonly observedAt: string;
|
|
102
|
+
readonly source: string;
|
|
103
|
+
readonly checkoutRoot: string;
|
|
104
|
+
}): GitObservationResult;
|
|
105
|
+
export declare function observeGit(step: ExecutionStep, outcome: ExecuteProbeOutcome, context: {
|
|
106
|
+
readonly stackId: StackId;
|
|
107
|
+
readonly checkoutId: CheckoutId;
|
|
108
|
+
readonly source: string;
|
|
109
|
+
}): GitObservationResult;
|
|
110
|
+
type AcquirePosture = 'auto' | 'manual' | 'none';
|
|
111
|
+
type ComparisonRemoteCode = typeof ENVIRONMENT_CODES.GIT_COMPARISON_REMOTE_MISMATCH;
|
|
112
|
+
export type ComparisonRemoteResult = Readonly<{
|
|
113
|
+
kind: 'complete';
|
|
114
|
+
code: ComparisonRemoteCode;
|
|
115
|
+
state: 'match';
|
|
116
|
+
remoteName: string;
|
|
117
|
+
}> | Readonly<{
|
|
118
|
+
kind: 'complete';
|
|
119
|
+
code: ComparisonRemoteCode;
|
|
120
|
+
state: 'mismatch';
|
|
121
|
+
remoteName: string;
|
|
122
|
+
reason: string;
|
|
123
|
+
}> | Readonly<{
|
|
124
|
+
kind: 'not-applicable';
|
|
125
|
+
code: ComparisonRemoteCode;
|
|
126
|
+
reason: string;
|
|
127
|
+
}> | Readonly<{
|
|
128
|
+
kind: 'unavailable';
|
|
129
|
+
code: ComparisonRemoteCode;
|
|
130
|
+
reason: string;
|
|
131
|
+
remoteName?: string;
|
|
132
|
+
}>;
|
|
133
|
+
type ComparisonRemoteRefStage = Readonly<{
|
|
134
|
+
kind: 'probe';
|
|
135
|
+
step: ExecutionStep;
|
|
136
|
+
}> | Extract<ComparisonRemoteResult, {
|
|
137
|
+
kind: 'not-applicable' | 'unavailable';
|
|
138
|
+
}>;
|
|
139
|
+
type ComparisonRemoteUrlStage = Readonly<{
|
|
140
|
+
kind: 'probe';
|
|
141
|
+
step: ExecutionStep;
|
|
142
|
+
remoteName: string;
|
|
143
|
+
}> | Extract<ComparisonRemoteResult, {
|
|
144
|
+
kind: 'unavailable';
|
|
145
|
+
}>;
|
|
146
|
+
type ComparisonRemoteRevalidationStage = Readonly<{
|
|
147
|
+
kind: 'probe';
|
|
148
|
+
step: ExecutionStep;
|
|
149
|
+
remoteName: string;
|
|
150
|
+
}> | Extract<ComparisonRemoteResult, {
|
|
151
|
+
kind: 'unavailable';
|
|
152
|
+
}>;
|
|
153
|
+
export declare function createComparisonRemoteRefStep(input: {
|
|
154
|
+
readonly executable: ResolvedExecutable;
|
|
155
|
+
readonly checkoutRoot: string;
|
|
156
|
+
readonly env: Readonly<Record<string, string>>;
|
|
157
|
+
readonly timeoutMs: number;
|
|
158
|
+
readonly stackId: StackId;
|
|
159
|
+
readonly checkoutId: CheckoutId;
|
|
160
|
+
readonly source: string;
|
|
161
|
+
readonly sibling: string;
|
|
162
|
+
readonly acquire: AcquirePosture;
|
|
163
|
+
readonly declaredRemote?: string;
|
|
164
|
+
readonly git?: GitObservationResult;
|
|
165
|
+
}): ComparisonRemoteRefStage;
|
|
166
|
+
export declare function observeComparisonRemoteRef(stage: ComparisonRemoteRefStage, outcome: ExecuteProbeOutcome): ComparisonRemoteUrlStage;
|
|
167
|
+
export declare function observeComparisonRemoteUrl(stage: ComparisonRemoteUrlStage, outcome: ExecuteProbeOutcome): ComparisonRemoteRevalidationStage;
|
|
168
|
+
export declare function observeComparisonRemoteRevalidation(stage: ComparisonRemoteRevalidationStage, outcome: ExecuteProbeOutcome): ComparisonRemoteResult;
|
|
169
|
+
type RunningCheckoutObservationResult = {
|
|
170
|
+
readonly kind: 'complete';
|
|
171
|
+
readonly observation: EnvironmentObservation;
|
|
172
|
+
} | {
|
|
173
|
+
readonly kind: 'unavailable';
|
|
174
|
+
readonly reason: string;
|
|
175
|
+
};
|
|
176
|
+
export declare function observeRunningCheckout(topology: RuntimeTopologyEvidence, checkoutProjection: SetupCheckoutProjection, runtimeSha256: string, observedAt: string): RunningCheckoutObservationResult;
|
|
177
|
+
/**
|
|
178
|
+
* Why a Git step that exited non-zero failed: the directory is in no repository, or Git refused to
|
|
179
|
+
* read the repository. A refusal names the cause and its remedy; ownership is a trust decision about
|
|
180
|
+
* another user's files, so its remedy goes through a person.
|
|
181
|
+
*/
|
|
182
|
+
export declare function gitRepositoryRefusal(stderr: Buffer): Readonly<{
|
|
183
|
+
kind: 'not-a-repository';
|
|
184
|
+
}> | Readonly<{
|
|
185
|
+
kind: 'refused';
|
|
186
|
+
reason: string;
|
|
187
|
+
fix: string;
|
|
188
|
+
}>;
|
|
189
|
+
/**
|
|
190
|
+
* Secret-shaped files a repository commits. The guard keeps agents from reading them, which
|
|
191
|
+
* protects the session but not the history: every clone already holds the values, and nothing
|
|
192
|
+
* told the person so. Reports paths only.
|
|
193
|
+
*/
|
|
194
|
+
export declare function inspectTrackedSecretFiles(input: {
|
|
195
|
+
readonly executable: ResolvedExecutable;
|
|
196
|
+
readonly repositories: readonly Readonly<{
|
|
197
|
+
slug: string;
|
|
198
|
+
root: string;
|
|
199
|
+
}>[];
|
|
200
|
+
readonly timeoutMs: number;
|
|
201
|
+
}, execute: (step: ExecutionStep) => Promise<ExecuteProbeOutcome>): Promise<readonly EnvironmentDiagnostic[]>;
|
|
202
|
+
export {};
|