@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,389 @@
|
|
|
1
|
+
import { type CheckoutId, type CockpitId, type EnvironmentDiagnostic, type EnvironmentObservation, type HolderId, type ExecutionStep, type ExecutionFence, type StackId } from './contract.js';
|
|
2
|
+
import { type ExecuteProbeOutcome, type FencedExecutionTermination } from '../environment-exec/execute.js';
|
|
3
|
+
import { type SkippedStateNamespace, type StateNamespace, type StateRecord, type StateResult, type StateTransactionOptions } from './state.js';
|
|
4
|
+
export declare const observationDeclarations: readonly [{
|
|
5
|
+
readonly id: 'claim-state';
|
|
6
|
+
readonly owner: "environment-claims";
|
|
7
|
+
readonly postures: readonly ["environment"];
|
|
8
|
+
readonly stages: readonly [{
|
|
9
|
+
readonly stage: 'bootstrap';
|
|
10
|
+
readonly disposition: 'not-applicable';
|
|
11
|
+
readonly reason: 'claims do not exist before the first seed';
|
|
12
|
+
}, {
|
|
13
|
+
readonly stage: 'steady';
|
|
14
|
+
readonly disposition: 'required';
|
|
15
|
+
}];
|
|
16
|
+
readonly code: "CLAIM_STATE_UNHEALTHY";
|
|
17
|
+
readonly isIssued: typeof isClaimObservation;
|
|
18
|
+
readonly issuedAt: typeof observationIssuedAt;
|
|
19
|
+
}];
|
|
20
|
+
declare function isClaimObservation(value: unknown): value is EnvironmentObservation;
|
|
21
|
+
declare function observationIssuedAt(value: unknown): number | undefined;
|
|
22
|
+
export declare function observeClaimState(input: {
|
|
23
|
+
readonly namespace: StateNamespace;
|
|
24
|
+
readonly stackId: StackId;
|
|
25
|
+
readonly observedAt: string;
|
|
26
|
+
}): Promise<EnvironmentObservation>;
|
|
27
|
+
interface ClaimHolder {
|
|
28
|
+
readonly holderId: HolderId;
|
|
29
|
+
readonly checkoutId: CheckoutId;
|
|
30
|
+
readonly claimedAt: string;
|
|
31
|
+
readonly pid?: number;
|
|
32
|
+
readonly processStart?: string;
|
|
33
|
+
}
|
|
34
|
+
export interface PortLeaseRecord {
|
|
35
|
+
readonly offset: number;
|
|
36
|
+
readonly ports: Readonly<Record<string, number>>;
|
|
37
|
+
readonly released: boolean;
|
|
38
|
+
readonly declaration: {
|
|
39
|
+
readonly step: number;
|
|
40
|
+
readonly count: number;
|
|
41
|
+
readonly bases: Readonly<Record<string, number>>;
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
export interface CoordinationRecord {
|
|
45
|
+
readonly holders: readonly ClaimHolder[];
|
|
46
|
+
readonly lease: PortLeaseRecord | null;
|
|
47
|
+
readonly lastReleasedHolder: HolderId | null;
|
|
48
|
+
readonly drain?: DrainReservation | null;
|
|
49
|
+
}
|
|
50
|
+
type DrainPurpose = 'sleep' | 'down' | 'reset';
|
|
51
|
+
type DrainAction = {
|
|
52
|
+
readonly stage: 'runtime-stop';
|
|
53
|
+
readonly targetId: string;
|
|
54
|
+
readonly validForMs: number;
|
|
55
|
+
} | {
|
|
56
|
+
readonly stage: 'reclaim';
|
|
57
|
+
readonly targetId: string;
|
|
58
|
+
readonly validForMs: number;
|
|
59
|
+
readonly targetCommitment: DrainTargetCommitment;
|
|
60
|
+
};
|
|
61
|
+
export interface DrainTargetCommitment {
|
|
62
|
+
readonly format: 'cockpit-reclaim-target/v1';
|
|
63
|
+
readonly sha256: string;
|
|
64
|
+
readonly body: string;
|
|
65
|
+
}
|
|
66
|
+
export interface DrainReservationRequest {
|
|
67
|
+
readonly purpose: DrainPurpose;
|
|
68
|
+
readonly stackId: StackId;
|
|
69
|
+
readonly holderId: HolderId;
|
|
70
|
+
readonly requesterId: HolderId;
|
|
71
|
+
readonly configSha256: string;
|
|
72
|
+
readonly planDigest: string;
|
|
73
|
+
readonly operationBasis: string;
|
|
74
|
+
readonly generation: string;
|
|
75
|
+
readonly targetIds: readonly string[];
|
|
76
|
+
readonly actions: readonly DrainAction[];
|
|
77
|
+
readonly expectedCoordinationRevision: number;
|
|
78
|
+
}
|
|
79
|
+
export interface DrainReservation extends DrainReservationRequest {
|
|
80
|
+
readonly coordinationRevision: number;
|
|
81
|
+
readonly reservedAt: string;
|
|
82
|
+
readonly reservationId: string;
|
|
83
|
+
readonly completedActionCount: number;
|
|
84
|
+
readonly progressRevision: number;
|
|
85
|
+
readonly attempt: DrainAttempt | null;
|
|
86
|
+
}
|
|
87
|
+
interface DrainAttempt {
|
|
88
|
+
readonly attemptId: string;
|
|
89
|
+
readonly reservationId: string;
|
|
90
|
+
readonly purpose: DrainPurpose;
|
|
91
|
+
readonly targetIds: readonly string[];
|
|
92
|
+
readonly generation: string;
|
|
93
|
+
readonly actionIndex: number;
|
|
94
|
+
readonly currentTarget: string;
|
|
95
|
+
readonly currentStage: DrainAction['stage'];
|
|
96
|
+
readonly committedRevision: number;
|
|
97
|
+
readonly committedAt: string;
|
|
98
|
+
readonly validThrough: string;
|
|
99
|
+
readonly status: 'active' | 'failed';
|
|
100
|
+
readonly failedRevision: number | null;
|
|
101
|
+
readonly failedAt: string | null;
|
|
102
|
+
}
|
|
103
|
+
interface FailedReclaimRecoveryTarget {
|
|
104
|
+
readonly targetId: string;
|
|
105
|
+
readonly targetCommitment: DrainTargetCommitment;
|
|
106
|
+
}
|
|
107
|
+
export interface FailedReclaimRecovery {
|
|
108
|
+
readonly purpose: 'down' | 'reset';
|
|
109
|
+
readonly stackId: StackId;
|
|
110
|
+
readonly configSha256: string;
|
|
111
|
+
readonly planDigest: string;
|
|
112
|
+
readonly freshAfter: string;
|
|
113
|
+
readonly completed: readonly FailedReclaimRecoveryTarget[];
|
|
114
|
+
readonly current: FailedReclaimRecoveryTarget;
|
|
115
|
+
readonly pending: readonly FailedReclaimRecoveryTarget[];
|
|
116
|
+
}
|
|
117
|
+
/** An attempt the claims owner committed, and the execution fence its one step runs under. */
|
|
118
|
+
export interface ReservedDrainAttempt {
|
|
119
|
+
readonly reservation: DrainReservation;
|
|
120
|
+
readonly attempt: DrainAttempt;
|
|
121
|
+
readonly fence: ExecutionFence;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* What a drain step settled to, for `commitDrainOutcome` to publish. The publication admits it only
|
|
125
|
+
* while the coordination record still holds its exact active attempt, so it publishes at most once.
|
|
126
|
+
*/
|
|
127
|
+
export type DrainOutcome = {
|
|
128
|
+
readonly kind: 'success';
|
|
129
|
+
readonly reservation: DrainReservation;
|
|
130
|
+
readonly fact: RuntimeStopped | ReclaimCompleted;
|
|
131
|
+
} | {
|
|
132
|
+
readonly kind: 'failure';
|
|
133
|
+
readonly reservation: DrainReservation;
|
|
134
|
+
readonly failedAt: string;
|
|
135
|
+
};
|
|
136
|
+
/**
|
|
137
|
+
* The reclaim attempt a removal ran under and the record it was planned from. The next plan matches
|
|
138
|
+
* it against the record the removal's outcome published; `failedAt` is set when the removal never started.
|
|
139
|
+
*/
|
|
140
|
+
export interface ReclaimDrainStep {
|
|
141
|
+
readonly planningRecord: StateRecord;
|
|
142
|
+
readonly reservation: DrainReservation;
|
|
143
|
+
readonly failedAt: string | null;
|
|
144
|
+
}
|
|
145
|
+
export interface RuntimeStopped {
|
|
146
|
+
readonly purpose: DrainPurpose;
|
|
147
|
+
readonly stackId: StackId;
|
|
148
|
+
readonly configSha256: string;
|
|
149
|
+
readonly planDigest: string;
|
|
150
|
+
readonly operationBasis: string;
|
|
151
|
+
readonly coordinationRevision: number;
|
|
152
|
+
readonly reservationId: string;
|
|
153
|
+
readonly reservedAt: string;
|
|
154
|
+
readonly generation: string;
|
|
155
|
+
readonly attemptId: string;
|
|
156
|
+
readonly attemptRevision: number;
|
|
157
|
+
readonly attemptCommittedAt: string;
|
|
158
|
+
readonly validThrough: string;
|
|
159
|
+
readonly actionIndex: number;
|
|
160
|
+
readonly currentTarget: string;
|
|
161
|
+
readonly currentStage: DrainAction['stage'];
|
|
162
|
+
readonly observedAt: string;
|
|
163
|
+
}
|
|
164
|
+
export interface ReclaimCompleted extends RuntimeStopped {
|
|
165
|
+
readonly remainingTargetIds: readonly string[];
|
|
166
|
+
}
|
|
167
|
+
type ClaimMutationRefusal = {
|
|
168
|
+
readonly kind: 'refusal';
|
|
169
|
+
readonly diagnostics: readonly EnvironmentDiagnostic[];
|
|
170
|
+
};
|
|
171
|
+
type ReleaseClaimResult = {
|
|
172
|
+
readonly kind: 'complete';
|
|
173
|
+
readonly change: 'released' | 'unchanged';
|
|
174
|
+
readonly decision: 'stop' | 'retain';
|
|
175
|
+
readonly remaining: readonly HolderId[];
|
|
176
|
+
} | ClaimMutationRefusal;
|
|
177
|
+
export interface HolderProcess {
|
|
178
|
+
readonly pid?: number;
|
|
179
|
+
readonly processStart?: string;
|
|
180
|
+
}
|
|
181
|
+
export type ProcessStartObservation = {
|
|
182
|
+
readonly state: 'absent';
|
|
183
|
+
} | {
|
|
184
|
+
readonly state: 'present';
|
|
185
|
+
readonly start: string;
|
|
186
|
+
} | {
|
|
187
|
+
readonly state: 'unknown';
|
|
188
|
+
readonly reason: string;
|
|
189
|
+
};
|
|
190
|
+
/** What observing a process reads from this machine; production binds it with `processHost`. */
|
|
191
|
+
export interface ProcessHost {
|
|
192
|
+
readonly platform: NodeJS.Platform;
|
|
193
|
+
/** Whether the pid exists, by signal 0; anything short of proof of absence is `live` or `unavailable`. */
|
|
194
|
+
readonly presence: (pid: number) => Promise<'live' | 'absent' | 'unavailable'>;
|
|
195
|
+
/** `ps -o lstart=` for the pid under a fixed locale and zone. */
|
|
196
|
+
readonly psStart: (pid: number) => Promise<{
|
|
197
|
+
readonly kind: 'complete';
|
|
198
|
+
readonly text: string;
|
|
199
|
+
} | {
|
|
200
|
+
readonly kind: 'failed';
|
|
201
|
+
readonly reason: string;
|
|
202
|
+
}>;
|
|
203
|
+
/** A file's UTF-8 text; rejects with the read's errno error. */
|
|
204
|
+
readonly readFile: (path: string) => Promise<string>;
|
|
205
|
+
}
|
|
206
|
+
/** A start identity as `observeProcessStart` reports it: `lstart:<timestamp>` or `proc:<boot id>:<ticks>`. */
|
|
207
|
+
export declare function isProcessStart(value: unknown): value is string;
|
|
208
|
+
/**
|
|
209
|
+
* Whether an observation proves gone the process recorded with `processStart`. A gone pid proves it
|
|
210
|
+
* whether or not a start was recorded, since reuse can only make a dead process look alive; a start
|
|
211
|
+
* identity decides only against one read the same way.
|
|
212
|
+
*/
|
|
213
|
+
export declare function isProcessGone(processStart: string | undefined, observed: ProcessStartObservation): boolean;
|
|
214
|
+
export declare function observeProcessStart(pid: number, host: ProcessHost): Promise<ProcessStartObservation>;
|
|
215
|
+
/** The production `ProcessHost`: signal 0 and ps cross the executor, and /proc is read directly. */
|
|
216
|
+
export declare function processHost(execute: (step: ExecutionStep) => Promise<ExecuteProbeOutcome>): ProcessHost;
|
|
217
|
+
export declare function liveHolderMessage(holders: readonly ClaimHolder[]): string;
|
|
218
|
+
type ReleaseDeadSessionHoldersResult = {
|
|
219
|
+
readonly kind: 'complete';
|
|
220
|
+
readonly released: readonly ClaimHolder[];
|
|
221
|
+
} | ClaimMutationRefusal;
|
|
222
|
+
/**
|
|
223
|
+
* Remove the holds of `cockpit session` wrappers whose process is gone. A session killed with
|
|
224
|
+
* SIGKILL, a crash or a closed terminal never runs its closing `sleep`, and its hold then made
|
|
225
|
+
* `down`, `reset` and `sleep` refuse forever while naming a session nobody could end. When every
|
|
226
|
+
* holder is dead, the requesting holder takes the stack over in the same transaction: the stack is
|
|
227
|
+
* still running, and a lease no holder retains reads as a stopped stack whose ports are free.
|
|
228
|
+
*/
|
|
229
|
+
export declare function releaseDeadSessionHolders(input: {
|
|
230
|
+
readonly namespace: StateNamespace;
|
|
231
|
+
readonly stackId: StackId;
|
|
232
|
+
readonly successor: {
|
|
233
|
+
readonly holderId: HolderId;
|
|
234
|
+
readonly checkoutId: CheckoutId;
|
|
235
|
+
} & HolderProcess;
|
|
236
|
+
readonly now: string;
|
|
237
|
+
readonly observe: (pid: number) => Promise<ProcessStartObservation>;
|
|
238
|
+
}): Promise<ReleaseDeadSessionHoldersResult>;
|
|
239
|
+
export type ActiveStackInventoryResult = {
|
|
240
|
+
readonly kind: 'complete';
|
|
241
|
+
readonly value: readonly {
|
|
242
|
+
readonly stackId: StackId;
|
|
243
|
+
readonly record: CoordinationRecord;
|
|
244
|
+
}[];
|
|
245
|
+
} | ClaimMutationRefusal;
|
|
246
|
+
export declare function readActiveStackInventory(namespace: StateNamespace, options?: Pick<StateTransactionOptions, 'observeHolder'>): Promise<ActiveStackInventoryResult>;
|
|
247
|
+
export declare function readRootPortInventory(namespace: StateNamespace, options?: Pick<StateTransactionOptions, 'observeHolder'>): Promise<{
|
|
248
|
+
readonly kind: 'complete';
|
|
249
|
+
readonly value: readonly {
|
|
250
|
+
cockpitId: CockpitId;
|
|
251
|
+
stackId: StackId;
|
|
252
|
+
record: CoordinationRecord;
|
|
253
|
+
}[];
|
|
254
|
+
readonly skipped: readonly SkippedStateNamespace[];
|
|
255
|
+
} | ClaimMutationRefusal>;
|
|
256
|
+
export declare function decodeCoordinationRecord(record: StateRecord | null, stackId: StackId): CoordinationRecord | undefined;
|
|
257
|
+
export declare function addCoordinationHolder(value: CoordinationRecord, holder: {
|
|
258
|
+
readonly holderId: HolderId;
|
|
259
|
+
readonly checkoutId: CheckoutId;
|
|
260
|
+
} & HolderProcess, now: string): {
|
|
261
|
+
readonly value: CoordinationRecord;
|
|
262
|
+
readonly change: 'acquired' | 'unchanged';
|
|
263
|
+
} | undefined;
|
|
264
|
+
export declare function removeExactCoordinationHolder(value: CoordinationRecord, holderId: HolderId): CoordinationRecord | undefined;
|
|
265
|
+
export declare function coordinationStateRecord(namespace: StateNamespace, stackId: StackId, current: StateRecord | null, now: string, value: CoordinationRecord): StateRecord;
|
|
266
|
+
export declare function isDrainActive(value: CoordinationRecord): boolean;
|
|
267
|
+
type DrainReservationResult = {
|
|
268
|
+
readonly kind: 'complete';
|
|
269
|
+
readonly reservation: DrainReservation;
|
|
270
|
+
} | ClaimMutationRefusal;
|
|
271
|
+
export declare function reserveDrain(input: {
|
|
272
|
+
readonly namespace: StateNamespace;
|
|
273
|
+
readonly request: DrainReservationRequest;
|
|
274
|
+
}): Promise<DrainReservationResult>;
|
|
275
|
+
export type DrainAttemptResult = ({
|
|
276
|
+
readonly kind: 'complete';
|
|
277
|
+
} & ReservedDrainAttempt) | ClaimMutationRefusal;
|
|
278
|
+
/**
|
|
279
|
+
* Commits the next attempt of a reservation: its first try, or a retry of the action whose try was
|
|
280
|
+
* published as failed. The commit admits only the exact persisted reservation at the revision it
|
|
281
|
+
* names, so two holders of one reservation cannot both start an attempt.
|
|
282
|
+
*/
|
|
283
|
+
export declare function reserveDrainAttempt(input: {
|
|
284
|
+
readonly namespace: StateNamespace;
|
|
285
|
+
readonly reservation: DrainReservation;
|
|
286
|
+
}): Promise<DrainAttemptResult>;
|
|
287
|
+
/**
|
|
288
|
+
* Binds an active reclaim attempt to the coordination record its removal was planned from. Undefined
|
|
289
|
+
* when that record does not directly precede the attempt, so a plan never runs under another try.
|
|
290
|
+
*/
|
|
291
|
+
export declare function reclaimDrainStep(input: {
|
|
292
|
+
readonly planningRecord: StateRecord;
|
|
293
|
+
readonly reservation: DrainReservation;
|
|
294
|
+
}): ReclaimDrainStep | undefined;
|
|
295
|
+
/** The coordination value the outcome publishes over `record`, or undefined when it no longer applies. */
|
|
296
|
+
export declare function reduceDrainOutcome(input: {
|
|
297
|
+
readonly outcome: DrainOutcome;
|
|
298
|
+
readonly record: StateRecord;
|
|
299
|
+
}): CoordinationRecord | undefined;
|
|
300
|
+
/**
|
|
301
|
+
* Publishes a settled drain outcome to the coordination record. The publication admits it only while
|
|
302
|
+
* the record holds the outcome's exact active attempt, so an outcome publishes at most once.
|
|
303
|
+
*/
|
|
304
|
+
export declare function commitDrainOutcome(input: {
|
|
305
|
+
readonly outcome: DrainOutcome;
|
|
306
|
+
readonly namespace: StateNamespace;
|
|
307
|
+
readonly stackId: StackId;
|
|
308
|
+
readonly beforePublish?: StateTransactionOptions['beforePublish'];
|
|
309
|
+
}): Promise<StateResult<StateRecord> | ClaimMutationRefusal>;
|
|
310
|
+
/**
|
|
311
|
+
* Whether `record` is the one the step's outcome published: its removal progressed, or (for a step
|
|
312
|
+
* that never started) its failure was recorded. Anything else is unmatched.
|
|
313
|
+
*/
|
|
314
|
+
export declare function matchReclaimDrainContinuation(input: {
|
|
315
|
+
readonly continuation: ReclaimDrainStep | null;
|
|
316
|
+
readonly record: StateRecord;
|
|
317
|
+
}): 'progressed' | 'failed' | 'unmatched';
|
|
318
|
+
type SleepDrainRecoveryInspection = {
|
|
319
|
+
readonly kind: 'none';
|
|
320
|
+
} | {
|
|
321
|
+
readonly kind: 'repairable';
|
|
322
|
+
readonly fence: ExecutionFence;
|
|
323
|
+
readonly record: StateRecord;
|
|
324
|
+
} | {
|
|
325
|
+
readonly kind: 'recoverable';
|
|
326
|
+
readonly generation: string;
|
|
327
|
+
readonly runtimeStopValidForMs: number;
|
|
328
|
+
/** The record inspected; recovery acts only while the stored record is still exactly this one. */
|
|
329
|
+
readonly record: StateRecord;
|
|
330
|
+
} | ClaimMutationRefusal;
|
|
331
|
+
type DestructiveDrainRecoveryInspection = {
|
|
332
|
+
readonly kind: 'none';
|
|
333
|
+
} | {
|
|
334
|
+
readonly kind: 'repairable';
|
|
335
|
+
readonly fence: ExecutionFence;
|
|
336
|
+
readonly record: StateRecord;
|
|
337
|
+
} | {
|
|
338
|
+
readonly kind: 'recoverable';
|
|
339
|
+
readonly request: DrainReservationRequest;
|
|
340
|
+
} | ClaimMutationRefusal;
|
|
341
|
+
/**
|
|
342
|
+
* Records an interrupted attempt as failed once the executor's termination is proven for its fence.
|
|
343
|
+
* The record must still be exactly the one inspected, so a concurrent change is never overwritten.
|
|
344
|
+
*/
|
|
345
|
+
export declare function settleInterruptedDrainRepair(input: {
|
|
346
|
+
readonly namespace: StateNamespace;
|
|
347
|
+
readonly record: StateRecord;
|
|
348
|
+
readonly evidence: FencedExecutionTermination;
|
|
349
|
+
}): Promise<StateResult<StateRecord> | ClaimMutationRefusal>;
|
|
350
|
+
export declare function inspectDestructiveDrainRecovery(input: {
|
|
351
|
+
readonly namespace: StateNamespace;
|
|
352
|
+
readonly stackId: StackId;
|
|
353
|
+
readonly holderId: HolderId;
|
|
354
|
+
readonly purpose: 'down' | 'reset';
|
|
355
|
+
}): Promise<DestructiveDrainRecoveryInspection>;
|
|
356
|
+
export declare function inspectSleepDrainRecovery(input: {
|
|
357
|
+
readonly namespace: StateNamespace;
|
|
358
|
+
readonly stackId: StackId;
|
|
359
|
+
readonly holderId: HolderId;
|
|
360
|
+
}): Promise<SleepDrainRecoveryInspection>;
|
|
361
|
+
/**
|
|
362
|
+
* Resumes a persisted sleep drain from fresh planning evidence. The stored record must still be the
|
|
363
|
+
* one inspected and the fresh request must name its revision and the same work.
|
|
364
|
+
*/
|
|
365
|
+
export declare function recoverSleepDrainReservation(input: {
|
|
366
|
+
readonly namespace: StateNamespace;
|
|
367
|
+
readonly record: StateRecord;
|
|
368
|
+
readonly request: DrainReservationRequest;
|
|
369
|
+
}): Promise<DrainReservationResult>;
|
|
370
|
+
export declare function recoverDrainReservation(input: {
|
|
371
|
+
readonly namespace: StateNamespace;
|
|
372
|
+
readonly request: DrainReservationRequest;
|
|
373
|
+
}): Promise<DrainReservationResult>;
|
|
374
|
+
/**
|
|
375
|
+
* The committed targets of a recovered reservation whose reclaim try failed, read from the record
|
|
376
|
+
* that published that failure. Undefined for any other reservation or record.
|
|
377
|
+
*/
|
|
378
|
+
export declare function inspectFailedReclaimRecovery(input: {
|
|
379
|
+
readonly reservation: DrainReservation;
|
|
380
|
+
readonly record: StateRecord;
|
|
381
|
+
}): FailedReclaimRecovery | undefined;
|
|
382
|
+
export declare function releaseClaim(input: {
|
|
383
|
+
readonly namespace: StateNamespace;
|
|
384
|
+
readonly stackId: StackId;
|
|
385
|
+
readonly requesterId: HolderId;
|
|
386
|
+
readonly holderId: HolderId;
|
|
387
|
+
readonly now: string;
|
|
388
|
+
}): Promise<ReleaseClaimResult>;
|
|
389
|
+
export {};
|