@b00dea/cockpit 0.0.0-stage → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +375 -0
- package/LICENSE +21 -0
- package/README.md +22 -2
- package/bin/cockpit.mjs +33 -0
- package/cockpit.schema.json +2574 -0
- package/dist/autonomy.d.ts +44 -0
- package/dist/autonomy.js +156 -0
- package/dist/bounded-read.d.ts +14 -0
- package/dist/bounded-read.js +42 -0
- package/dist/browser/commands.d.ts +62 -0
- package/dist/browser/commands.js +349 -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 +117 -0
- package/dist/browser/runtime.js +183 -0
- package/dist/browser/surfaces.d.ts +141 -0
- package/dist/browser/surfaces.js +556 -0
- package/dist/browser/ui-gate.d.ts +15 -0
- package/dist/browser/ui-gate.js +18 -0
- package/dist/cli-guard.d.ts +5 -0
- package/dist/cli-guard.js +71 -0
- package/dist/cli-main.d.ts +139 -0
- package/dist/cli-main.js +1405 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.js +16 -0
- package/dist/command-table.d.ts +113 -0
- package/dist/command-table.js +512 -0
- package/dist/config/load.d.ts +171 -0
- package/dist/config/load.js +345 -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/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 +335 -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/destructive.d.ts +6 -0
- package/dist/environment/application/destructive.js +425 -0
- package/dist/environment/application/doctor.d.ts +89 -0
- package/dist/environment/application/doctor.js +235 -0
- package/dist/environment/application/guard.d.ts +43 -0
- package/dist/environment/application/guard.js +622 -0
- package/dist/environment/application/health.d.ts +134 -0
- package/dist/environment/application/health.js +379 -0
- package/dist/environment/application/lifecycle-context.d.ts +228 -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 +201 -0
- package/dist/environment/application/lifecycle.d.ts +17 -0
- package/dist/environment/application/lifecycle.js +729 -0
- package/dist/environment/application/logs.d.ts +45 -0
- package/dist/environment/application/logs.js +127 -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/claims.d.ts +389 -0
- package/dist/environment/claims.js +1709 -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 +117 -0
- package/dist/environment/compose-topology.js +413 -0
- package/dist/environment/contract.d.ts +489 -0
- package/dist/environment/contract.js +761 -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 +26 -0
- package/dist/environment/executable.js +167 -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 +189 -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 +276 -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 +484 -0
- package/dist/environment/generated-application/shared.js +349 -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 +389 -0
- package/dist/environment/generated-application/surfaces.d.ts +3 -0
- package/dist/environment/generated-application/surfaces.js +699 -0
- package/dist/environment/generated-application/sync.d.ts +6 -0
- package/dist/environment/generated-application/sync.js +109 -0
- package/dist/environment/git-observation.d.ts +183 -0
- package/dist/environment/git-observation.js +544 -0
- package/dist/environment/health-composition.d.ts +11 -0
- package/dist/environment/health-composition.js +628 -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 +308 -0
- package/dist/environment/init-application.js +697 -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 +29 -0
- package/dist/environment/lifecycle-composition.js +675 -0
- package/dist/environment/lifecycle-stage.d.ts +115 -0
- package/dist/environment/lifecycle-stage.js +398 -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/observations.d.ts +46 -0
- package/dist/environment/observations.js +344 -0
- package/dist/environment/operator-application.d.ts +50 -0
- package/dist/environment/operator-application.js +155 -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/read-composition.d.ts +27 -0
- package/dist/environment/read-composition.js +352 -0
- package/dist/environment/readiness-composition.d.ts +38 -0
- package/dist/environment/readiness-composition.js +130 -0
- package/dist/environment/reclaim.d.ts +333 -0
- package/dist/environment/reclaim.js +1835 -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 +505 -0
- package/dist/environment/runtime.js +2335 -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/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-instructions.d.ts +33 -0
- package/dist/environment/sibling-instructions.js +224 -0
- package/dist/environment/sibling-registration.d.ts +45 -0
- package/dist/environment/sibling-registration.js +538 -0
- package/dist/environment/state.d.ts +371 -0
- package/dist/environment/state.js +2013 -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 +96 -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 +102 -0
- package/dist/environment-exec/execute.js +1175 -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 +275 -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/evaluator.d.ts +113 -0
- package/dist/guards/evaluator.js +1226 -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 +40 -0
- package/dist/guards/local-identity.js +123 -0
- package/dist/guards/policy-pin.d.ts +13 -0
- package/dist/guards/policy-pin.js +175 -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 +40 -0
- package/dist/init/command.js +310 -0
- package/dist/init/derive.d.ts +51 -0
- package/dist/init/derive.js +715 -0
- package/dist/init/draft.d.ts +138 -0
- package/dist/init/draft.js +1205 -0
- package/dist/init/render.d.ts +35 -0
- package/dist/init/render.js +82 -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/schema-json.d.ts +1 -0
- package/dist/schema-json.js +177 -0
- package/dist/schema.d.ts +1322 -0
- package/dist/schema.js +934 -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 +180 -0
- package/dist/surfaces/harness-registry.js +117 -0
- package/dist/surfaces/mcp.d.ts +95 -0
- package/dist/surfaces/mcp.js +186 -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 +681 -0
- package/dist/surfaces/render.d.ts +118 -0
- package/dist/surfaces/render.js +633 -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 +512 -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/verdict.d.ts +29 -0
- package/dist/testing/verdict.js +62 -0
- package/dist/work-orders/application.d.ts +99 -0
- package/dist/work-orders/application.js +383 -0
- package/dist/work-orders/composition.d.ts +124 -0
- package/dist/work-orders/composition.js +1010 -0
- package/dist/work-orders/contract.d.ts +61 -0
- package/dist/work-orders/contract.js +122 -0
- package/dist/work-orders/store.d.ts +158 -0
- package/dist/work-orders/store.js +197 -0
- package/docs/README.md +65 -0
- package/docs/architecture.md +136 -0
- package/docs/capability-matrix.md +50 -0
- package/docs/cli-reference.md +599 -0
- package/docs/command-list.md +51 -0
- package/docs/compose-patterns.md +99 -0
- package/docs/concepts.md +171 -0
- package/docs/configuration-essentials.md +172 -0
- package/docs/configuration-reference.md +621 -0
- package/docs/environment.md +760 -0
- package/docs/extending.md +43 -0
- package/docs/faq.md +111 -0
- package/docs/getting-started.md +608 -0
- package/docs/harness-surfaces.md +433 -0
- package/docs/joining-a-team.md +76 -0
- package/docs/release-policy.md +49 -0
- package/docs/safety-and-autonomy.md +419 -0
- package/docs/troubleshooting.md +361 -0
- package/docs/tutorial.md +170 -0
- package/docs/work-and-browser.md +254 -0
- package/libexec/browser-operation.cjs +186 -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 +54 -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 +61 -0
- package/surfaces/skills/procedures/fix.md +81 -0
- package/surfaces/skills/procedures/setup.md +379 -0
- package/surfaces/skills/procedures/work.md +105 -0
|
@@ -0,0 +1,333 @@
|
|
|
1
|
+
import type { ExecuteProbeOutcome } from '../environment-exec/execute.js';
|
|
2
|
+
import { type DrainOutcome, type DrainReservation, type ReclaimDrainStep, type ReservedDrainAttempt, type DrainTargetCommitment } from './claims.js';
|
|
3
|
+
import { type CockpitId, type EnvironmentDiagnostic, type ExecutionFence, type ExecutionReceipt, type ExecutionStep, type FilesystemAncestorIdentity, type StackId } from './contract.js';
|
|
4
|
+
import type { ResolvedExecutable } from './executable.js';
|
|
5
|
+
import { type StateAddress, type StateRecord } from './state.js';
|
|
6
|
+
type Executor = (step: ExecutionStep) => Promise<ExecuteProbeOutcome>;
|
|
7
|
+
export interface DockerSelection {
|
|
8
|
+
readonly context: string;
|
|
9
|
+
readonly endpoint: string;
|
|
10
|
+
}
|
|
11
|
+
/** One complete discovery of a stack's runtime resources, as `discoverReclaim` observed it. */
|
|
12
|
+
export interface ReclaimDiscovery extends ReclaimDiscoverySnapshot {
|
|
13
|
+
readonly startedAt: string;
|
|
14
|
+
readonly stackId: StackId;
|
|
15
|
+
readonly selection: DockerSelection;
|
|
16
|
+
}
|
|
17
|
+
/** What a person or the planner itself approved: the digest, and the discovery it was read from. */
|
|
18
|
+
export interface ReclaimConsent {
|
|
19
|
+
readonly digest: string;
|
|
20
|
+
readonly observedAt: string;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* The remaining committed target set of a drain after one action, carried from that action's plan
|
|
24
|
+
* to the next. `drain` is the attempt the action ran under, which the next plan matches against
|
|
25
|
+
* the record its outcome published; null until the action runs.
|
|
26
|
+
*/
|
|
27
|
+
export interface ReclaimContinuation {
|
|
28
|
+
readonly purpose: 'down' | 'reset';
|
|
29
|
+
readonly digest: string;
|
|
30
|
+
readonly completedTargetId: string;
|
|
31
|
+
readonly runtimeDigest: string;
|
|
32
|
+
readonly targetIds: readonly string[];
|
|
33
|
+
readonly removedTargetIds: readonly string[];
|
|
34
|
+
readonly targetIdentities: readonly ReclaimTargetIdentity[];
|
|
35
|
+
/** A discovery that plans the next action must start no earlier than this. */
|
|
36
|
+
readonly freshAfter: string;
|
|
37
|
+
readonly drain: ReclaimDrainStep | null;
|
|
38
|
+
}
|
|
39
|
+
/** The one removal a plan permits, executed only by `executeReclaimAction` under a reserved attempt. */
|
|
40
|
+
export interface PlannedReclaimAction {
|
|
41
|
+
readonly stackId: StackId;
|
|
42
|
+
readonly configSha256: string;
|
|
43
|
+
/** Null when the interrupted target is already absent and only its removal is recorded. */
|
|
44
|
+
readonly step: ExecutionStep | null;
|
|
45
|
+
readonly coordinationRecord: StateRecord;
|
|
46
|
+
readonly continuation: ReclaimContinuation;
|
|
47
|
+
readonly observedAt: string;
|
|
48
|
+
/** For an absent target: the actionable target ids a later discovery still shows. */
|
|
49
|
+
readonly remainingTargets?: (discovery: ReclaimDiscovery) => Promise<readonly string[] | undefined>;
|
|
50
|
+
}
|
|
51
|
+
export type ReclaimTargetIdentity = ResetVolumeTargetIdentity | TeardownRuntimeTargetIdentity | PathTargetIdentity;
|
|
52
|
+
interface ResetVolumeTargetIdentity {
|
|
53
|
+
readonly medium: 'runtime';
|
|
54
|
+
readonly scope: 'reset-volume';
|
|
55
|
+
readonly targetId: string;
|
|
56
|
+
readonly kind: 'volume';
|
|
57
|
+
readonly declaration: string;
|
|
58
|
+
readonly runtimeId: string;
|
|
59
|
+
readonly name: string;
|
|
60
|
+
readonly labels: Readonly<Record<string, string>>;
|
|
61
|
+
readonly generation: string;
|
|
62
|
+
}
|
|
63
|
+
interface TeardownRuntimeTargetIdentity {
|
|
64
|
+
readonly medium: 'runtime';
|
|
65
|
+
readonly scope: 'teardown-runtime';
|
|
66
|
+
readonly targetId: string;
|
|
67
|
+
readonly kind: Exclude<ReclaimResourceKind, 'cache'>;
|
|
68
|
+
readonly runtimeId: string;
|
|
69
|
+
readonly name: string;
|
|
70
|
+
readonly labels: Readonly<Record<string, string>>;
|
|
71
|
+
readonly referenced: boolean;
|
|
72
|
+
readonly dataBearing: boolean | null;
|
|
73
|
+
readonly generation: string | null;
|
|
74
|
+
}
|
|
75
|
+
interface PathTargetIdentity {
|
|
76
|
+
readonly medium: 'path';
|
|
77
|
+
readonly targetId: string;
|
|
78
|
+
readonly kind: 'host-path' | 'cache';
|
|
79
|
+
readonly declaration: string;
|
|
80
|
+
readonly root: string;
|
|
81
|
+
readonly path: string;
|
|
82
|
+
readonly type: 'directory' | 'file';
|
|
83
|
+
readonly dev: number;
|
|
84
|
+
readonly ino: number;
|
|
85
|
+
readonly birthtimeNs: string;
|
|
86
|
+
readonly ancestors: readonly FilesystemAncestorIdentity[];
|
|
87
|
+
}
|
|
88
|
+
export type ReclaimResourceKind = 'container' | 'network' | 'volume' | 'image' | 'build-cache' | 'cache';
|
|
89
|
+
export type OwnershipEvidence = 'current' | 'stale-config' | 'foreign' | 'unknown' | 'malformed' | 'partial' | 'unlabelled';
|
|
90
|
+
export type Reversibility = 'runtime' | 'regenerable-cache' | 'data-bearing';
|
|
91
|
+
export type ReclaimAction = 'teardown' | 'reclaim' | 'reset-required' | 'report-only';
|
|
92
|
+
export interface ReclaimResource {
|
|
93
|
+
readonly id: string;
|
|
94
|
+
readonly name: string;
|
|
95
|
+
readonly kind: ReclaimResourceKind;
|
|
96
|
+
readonly labels: Readonly<Record<string, string>>;
|
|
97
|
+
readonly referenced: boolean;
|
|
98
|
+
readonly bytes: number | null;
|
|
99
|
+
readonly dataBearing?: boolean;
|
|
100
|
+
readonly generation?: string;
|
|
101
|
+
}
|
|
102
|
+
export interface ReclaimDiscoverySnapshot {
|
|
103
|
+
readonly observedAt: string;
|
|
104
|
+
readonly producer: 'runtime-resource-discovery';
|
|
105
|
+
readonly resources: readonly ReclaimResource[];
|
|
106
|
+
}
|
|
107
|
+
export interface ClassifiedReclaimResource extends ReclaimResource {
|
|
108
|
+
readonly ownership: OwnershipEvidence;
|
|
109
|
+
readonly reversibility: Reversibility;
|
|
110
|
+
readonly action: ReclaimAction;
|
|
111
|
+
readonly evidence: readonly string[];
|
|
112
|
+
readonly reason: string;
|
|
113
|
+
readonly suggestion?: {
|
|
114
|
+
readonly command: string;
|
|
115
|
+
readonly risk: string;
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
export interface ClassifyReclaimInput {
|
|
119
|
+
readonly stackId: StackId;
|
|
120
|
+
readonly cockpitId: CockpitId;
|
|
121
|
+
readonly configSha256: string;
|
|
122
|
+
readonly coordinationRecord: StateRecord | null;
|
|
123
|
+
readonly declaredCacheIds: readonly string[];
|
|
124
|
+
readonly discovery: ReclaimDiscoverySnapshot;
|
|
125
|
+
}
|
|
126
|
+
export type ReclaimResult = {
|
|
127
|
+
readonly kind: 'complete';
|
|
128
|
+
readonly noop: boolean;
|
|
129
|
+
readonly resources: readonly ClassifiedReclaimResource[];
|
|
130
|
+
} | {
|
|
131
|
+
readonly kind: 'refusal';
|
|
132
|
+
readonly diagnostics: readonly EnvironmentDiagnostic[];
|
|
133
|
+
};
|
|
134
|
+
export declare function classifyReclaim(rawInput: ClassifyReclaimInput): ReclaimResult;
|
|
135
|
+
export interface KeptTeardownResource {
|
|
136
|
+
readonly kind: ReclaimResourceKind;
|
|
137
|
+
readonly id: string;
|
|
138
|
+
readonly name: string;
|
|
139
|
+
readonly reason: string;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* The resources a finished `down` leaves behind although this stack's labels and coordinated state
|
|
143
|
+
* show they are its own, each with the reason teardown may not remove it. Volumes are left out:
|
|
144
|
+
* `down` keeps data by design, and only `reset` deletes it.
|
|
145
|
+
*/
|
|
146
|
+
export declare function keptTeardownResources(input: ClassifyReclaimInput): readonly KeptTeardownResource[] | undefined;
|
|
147
|
+
/**
|
|
148
|
+
* Name an inspection chunk that the per-object budget cannot hold, so the operator learns which
|
|
149
|
+
* resources to look at instead of a generic unobservable precondition.
|
|
150
|
+
*/
|
|
151
|
+
export declare function inspectionOverflow(step: ExecutionStep, outcome: ExecuteProbeOutcome): string | undefined;
|
|
152
|
+
export interface ReclaimDiscoveryInput {
|
|
153
|
+
readonly executable: ResolvedExecutable;
|
|
154
|
+
readonly cwd: string;
|
|
155
|
+
readonly env: Readonly<Record<string, string>>;
|
|
156
|
+
readonly stackId: StackId;
|
|
157
|
+
readonly cockpitId: CockpitId;
|
|
158
|
+
readonly timeoutMs: number;
|
|
159
|
+
readonly context: string;
|
|
160
|
+
/** A local DOCKER_HOST, selected through Docker's `default` context, which reports it exactly. */
|
|
161
|
+
readonly host?: string;
|
|
162
|
+
}
|
|
163
|
+
type DiscoveryRefusal = {
|
|
164
|
+
readonly kind: 'refusal';
|
|
165
|
+
readonly diagnostics: readonly EnvironmentDiagnostic[];
|
|
166
|
+
};
|
|
167
|
+
/**
|
|
168
|
+
* Lists and inspects this stack's runtime resources on the selected Docker context. Discovery
|
|
169
|
+
* lists resources and then inspects what it listed, and a listed resource can vanish in between,
|
|
170
|
+
* as Compose replacing one of this stack's containers does; the round then fails closed on an id
|
|
171
|
+
* that no longer exists, and inside a reserved drain that left the attempt for repair. One more
|
|
172
|
+
* complete round covers that race without admitting partial evidence.
|
|
173
|
+
*/
|
|
174
|
+
export declare function discoverReclaim(input: ReclaimDiscoveryInput, execute: Executor): Promise<ReclaimDiscovery | DiscoveryRefusal | undefined>;
|
|
175
|
+
export interface ResetTargetInput {
|
|
176
|
+
readonly kind: 'container' | 'volume' | 'host-path';
|
|
177
|
+
readonly identity: string;
|
|
178
|
+
readonly declaration: string;
|
|
179
|
+
readonly labels?: Readonly<Record<string, string>>;
|
|
180
|
+
}
|
|
181
|
+
interface HostPathDeclaration {
|
|
182
|
+
readonly root: string;
|
|
183
|
+
readonly path: string;
|
|
184
|
+
readonly declaration: string;
|
|
185
|
+
}
|
|
186
|
+
export interface DependencyCacheDeclaration {
|
|
187
|
+
readonly cacheId: string;
|
|
188
|
+
readonly root: string;
|
|
189
|
+
readonly path: string;
|
|
190
|
+
}
|
|
191
|
+
export interface PlanResetInput extends ClassifyReclaimInput {
|
|
192
|
+
readonly discovery: ReclaimDiscovery;
|
|
193
|
+
readonly expectedCoordinationRevision: number;
|
|
194
|
+
readonly requesterHolderId: string | null;
|
|
195
|
+
/** Compose volume keys, matched within `composeProject`; Docker's volume name is not one. */
|
|
196
|
+
readonly resettableVolumes: readonly string[];
|
|
197
|
+
readonly composeProject: string;
|
|
198
|
+
readonly generatedHostPaths: readonly HostPathDeclaration[];
|
|
199
|
+
readonly runtimeExecutable: ResolvedExecutable;
|
|
200
|
+
readonly pathExecutable: ResolvedExecutable;
|
|
201
|
+
readonly cwd: string;
|
|
202
|
+
readonly env: Readonly<Record<string, string>>;
|
|
203
|
+
readonly timeoutMs: number;
|
|
204
|
+
readonly confirmationDigest?: string;
|
|
205
|
+
readonly consent?: ReclaimConsent;
|
|
206
|
+
readonly coordinationAddress?: StateAddress;
|
|
207
|
+
readonly continuation?: ReclaimContinuation;
|
|
208
|
+
/** A recovered reservation whose reclaim try failed, which plans its remaining committed targets. */
|
|
209
|
+
readonly recoveredReservation?: DrainReservation;
|
|
210
|
+
readonly operatorApproval?: ResetPreview;
|
|
211
|
+
}
|
|
212
|
+
export interface ResetPreview {
|
|
213
|
+
readonly kind: 'preview';
|
|
214
|
+
readonly digest: string;
|
|
215
|
+
readonly coordinationRevision: number;
|
|
216
|
+
readonly targets: readonly ResetTargetInput[];
|
|
217
|
+
readonly noop: boolean;
|
|
218
|
+
readonly consent: ReclaimConsent;
|
|
219
|
+
/** The exact targets the digest commits, which the drain reservation records. */
|
|
220
|
+
readonly envelope: ReclaimTargetEnvelope;
|
|
221
|
+
}
|
|
222
|
+
export type ResetPlanResult = {
|
|
223
|
+
readonly kind: 'complete';
|
|
224
|
+
readonly action: PlannedReclaimAction | null;
|
|
225
|
+
readonly remaining: number;
|
|
226
|
+
readonly noop: boolean;
|
|
227
|
+
readonly digest: string;
|
|
228
|
+
readonly envelope: ReclaimTargetEnvelope;
|
|
229
|
+
} | {
|
|
230
|
+
readonly kind: 'refusal';
|
|
231
|
+
readonly diagnostics: readonly EnvironmentDiagnostic[];
|
|
232
|
+
};
|
|
233
|
+
export interface PlanTeardownInput extends ClassifyReclaimInput {
|
|
234
|
+
readonly discovery: ReclaimDiscovery;
|
|
235
|
+
readonly executable: ResolvedExecutable;
|
|
236
|
+
readonly cwd: string;
|
|
237
|
+
readonly env: Readonly<Record<string, string>>;
|
|
238
|
+
readonly timeoutMs: number;
|
|
239
|
+
readonly dependencyCaches?: readonly DependencyCacheDeclaration[];
|
|
240
|
+
readonly pathExecutable?: ResolvedExecutable;
|
|
241
|
+
readonly expectedDiscoveryDigest?: string;
|
|
242
|
+
readonly consent?: ReclaimConsent;
|
|
243
|
+
readonly continuation?: ReclaimContinuation;
|
|
244
|
+
readonly coordinationAddress?: StateAddress;
|
|
245
|
+
/** A recovered reservation whose reclaim try failed, which plans its remaining committed targets. */
|
|
246
|
+
readonly recoveredReservation?: DrainReservation;
|
|
247
|
+
}
|
|
248
|
+
export type TeardownPlanResult = {
|
|
249
|
+
readonly kind: 'complete';
|
|
250
|
+
readonly action: PlannedReclaimAction | null;
|
|
251
|
+
readonly remaining: number;
|
|
252
|
+
readonly noop: boolean;
|
|
253
|
+
readonly discoveryDigest: string;
|
|
254
|
+
readonly byteAccounting: {
|
|
255
|
+
readonly observed: ByteClasses;
|
|
256
|
+
readonly reclaimable: ByteClasses;
|
|
257
|
+
readonly action: {
|
|
258
|
+
readonly resourceId: string;
|
|
259
|
+
readonly observedBytes: number | null;
|
|
260
|
+
} | null;
|
|
261
|
+
readonly actuallyReclaimed: number | null;
|
|
262
|
+
};
|
|
263
|
+
readonly consent: ReclaimConsent | null;
|
|
264
|
+
readonly envelope: ReclaimTargetEnvelope;
|
|
265
|
+
} | {
|
|
266
|
+
readonly kind: 'refusal';
|
|
267
|
+
readonly diagnostics: readonly EnvironmentDiagnostic[];
|
|
268
|
+
};
|
|
269
|
+
export declare function planReset(input: PlanResetInput): Promise<ResetPreview | ResetPlanResult>;
|
|
270
|
+
type ByteClasses = Readonly<Record<'orphans' | 'images' | 'buildCache' | 'staleNetworks', number | null>>;
|
|
271
|
+
export declare function planTeardown(input: PlanTeardownInput): Promise<TeardownPlanResult>;
|
|
272
|
+
export interface ReclaimTargetCommitment extends DrainTargetCommitment {
|
|
273
|
+
readonly targetId: string;
|
|
274
|
+
}
|
|
275
|
+
export interface ReclaimTargetEnvelope {
|
|
276
|
+
readonly purpose: 'reset' | 'down';
|
|
277
|
+
readonly stackId: StackId;
|
|
278
|
+
readonly configSha256: string;
|
|
279
|
+
readonly planDigest: string;
|
|
280
|
+
readonly commitments: readonly ReclaimTargetCommitment[];
|
|
281
|
+
}
|
|
282
|
+
/** A removal the attempt admitted, with the attempt it ran under and what it observed. */
|
|
283
|
+
export interface ExecutedReclaimAction {
|
|
284
|
+
readonly action: PlannedReclaimAction;
|
|
285
|
+
readonly reservation: DrainReservation;
|
|
286
|
+
readonly attempt: NonNullable<DrainReservation['attempt']>;
|
|
287
|
+
readonly drain: ReclaimDrainStep;
|
|
288
|
+
/** Null for an already-absent target, which runs nothing. */
|
|
289
|
+
readonly receipt: ExecutionReceipt | null;
|
|
290
|
+
readonly fence: ExecutionFence | null;
|
|
291
|
+
}
|
|
292
|
+
export type ReclaimActionExecution = {
|
|
293
|
+
readonly kind: 'executed';
|
|
294
|
+
readonly executed: ExecutedReclaimAction;
|
|
295
|
+
}
|
|
296
|
+
/** The removal provably never started; its failure is settled and ready to publish, and the same target may be retried. */
|
|
297
|
+
| {
|
|
298
|
+
readonly kind: 'not-started';
|
|
299
|
+
readonly code: Extract<ExecuteProbeOutcome, {
|
|
300
|
+
kind: 'refusal';
|
|
301
|
+
}>['code'];
|
|
302
|
+
readonly outcome: DrainOutcome;
|
|
303
|
+
readonly fence: ExecutionFence;
|
|
304
|
+
readonly continuation: ReclaimContinuation;
|
|
305
|
+
} | {
|
|
306
|
+
readonly kind: 'unavailable';
|
|
307
|
+
};
|
|
308
|
+
/**
|
|
309
|
+
* Runs the planned removal under the reserved attempt: the attempt must name exactly this target
|
|
310
|
+
* of the committed target set, and the step runs fenced to the attempt's validity window.
|
|
311
|
+
*/
|
|
312
|
+
export declare function executeReclaimAction(input: {
|
|
313
|
+
readonly action: PlannedReclaimAction;
|
|
314
|
+
readonly attempt: ReservedDrainAttempt;
|
|
315
|
+
readonly execute: Executor;
|
|
316
|
+
}): Promise<ReclaimActionExecution>;
|
|
317
|
+
export type ReconcileReclaimActionResult = {
|
|
318
|
+
readonly kind: 'complete';
|
|
319
|
+
readonly outcome: DrainOutcome;
|
|
320
|
+
readonly continuation: ReclaimContinuation | null;
|
|
321
|
+
} | {
|
|
322
|
+
readonly kind: 'refusal';
|
|
323
|
+
readonly diagnostics: readonly EnvironmentDiagnostic[];
|
|
324
|
+
};
|
|
325
|
+
/**
|
|
326
|
+
* Settles an executed removal from a discovery read after it: every completed target must be
|
|
327
|
+
* absent and every remaining committed target unchanged, or the attempt stays for repair.
|
|
328
|
+
*/
|
|
329
|
+
export declare function reconcileReclaimAction(input: {
|
|
330
|
+
readonly executed: ExecutedReclaimAction;
|
|
331
|
+
readonly discovery: ReclaimDiscovery;
|
|
332
|
+
}): Promise<ReconcileReclaimActionResult>;
|
|
333
|
+
export {};
|