@clossys/launcher 0.3.0 → 0.4.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/README.md +1328 -60
- package/contracts/conversation-contract.md +2 -1
- package/contracts/product-ci-workflow.yml +74 -0
- package/contracts/repository-inventory.json +53 -0
- package/dist/admission-fixture.d.ts +168 -0
- package/dist/admission-fixture.d.ts.map +1 -0
- package/dist/admission-fixture.js +453 -0
- package/dist/admission-fixture.js.map +1 -0
- package/dist/admission.d.ts +124 -0
- package/dist/admission.d.ts.map +1 -0
- package/dist/admission.js +799 -0
- package/dist/admission.js.map +1 -0
- package/dist/agents-guide.d.ts +9 -0
- package/dist/agents-guide.d.ts.map +1 -0
- package/dist/agents-guide.js +26 -0
- package/dist/agents-guide.js.map +1 -0
- package/dist/apply-command-options.check.d.ts +12 -0
- package/dist/apply-command-options.check.d.ts.map +1 -0
- package/dist/apply-command-options.check.js +20 -0
- package/dist/apply-command-options.check.js.map +1 -0
- package/dist/apply-plan-cli.d.ts +39 -1
- package/dist/apply-plan-cli.d.ts.map +1 -1
- package/dist/apply-plan-cli.js +432 -15
- package/dist/apply-plan-cli.js.map +1 -1
- package/dist/apply-plan.d.ts +46 -59
- package/dist/apply-plan.d.ts.map +1 -1
- package/dist/apply-plan.js +112 -97
- package/dist/apply-plan.js.map +1 -1
- package/dist/apply-step-fixture.d.ts +87 -0
- package/dist/apply-step-fixture.d.ts.map +1 -0
- package/dist/apply-step-fixture.js +199 -0
- package/dist/apply-step-fixture.js.map +1 -0
- package/dist/apply-store.d.ts +93 -0
- package/dist/apply-store.d.ts.map +1 -0
- package/dist/apply-store.js +625 -0
- package/dist/apply-store.js.map +1 -0
- package/dist/approval-sheet.d.ts +21 -0
- package/dist/approval-sheet.d.ts.map +1 -0
- package/dist/approval-sheet.js +157 -0
- package/dist/approval-sheet.js.map +1 -0
- package/dist/body-command.d.ts +42 -0
- package/dist/body-command.d.ts.map +1 -0
- package/dist/body-command.js +143 -0
- package/dist/body-command.js.map +1 -0
- package/dist/change-set-contract.d.ts +381 -0
- package/dist/change-set-contract.d.ts.map +1 -0
- package/dist/change-set-contract.js +738 -0
- package/dist/change-set-contract.js.map +1 -0
- package/dist/change-set-digest.d.ts +28 -0
- package/dist/change-set-digest.d.ts.map +1 -0
- package/dist/change-set-digest.js +65 -0
- package/dist/change-set-digest.js.map +1 -0
- package/dist/check-cli.d.ts.map +1 -1
- package/dist/check-cli.js +14 -3
- package/dist/check-cli.js.map +1 -1
- package/dist/cli.d.ts +17 -6
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +84 -23
- package/dist/cli.js.map +1 -1
- package/dist/core.d.ts +79 -22
- package/dist/core.d.ts.map +1 -1
- package/dist/core.js +843 -268
- package/dist/core.js.map +1 -1
- package/dist/dry-materialize.d.ts +63 -0
- package/dist/dry-materialize.d.ts.map +1 -0
- package/dist/dry-materialize.js +330 -0
- package/dist/dry-materialize.js.map +1 -0
- package/dist/generated/contract-schema.generated.d.ts +97 -0
- package/dist/generated/contract-schema.generated.d.ts.map +1 -0
- package/dist/generated/contract-schema.generated.js +496 -0
- package/dist/generated/contract-schema.generated.js.map +1 -0
- package/dist/generated/package-scope.generated.d.ts +6 -0
- package/dist/generated/package-scope.generated.d.ts.map +1 -0
- package/dist/generated/package-scope.generated.js +10 -0
- package/dist/generated/package-scope.generated.js.map +1 -0
- package/dist/generated/plan-contracts.generated.d.ts +3 -0
- package/dist/generated/plan-contracts.generated.d.ts.map +1 -0
- package/dist/generated/plan-contracts.generated.js +2840 -0
- package/dist/generated/plan-contracts.generated.js.map +1 -0
- package/dist/host.d.ts.map +1 -1
- package/dist/host.js +11 -0
- package/dist/host.js.map +1 -1
- package/dist/identity.d.ts +15 -0
- package/dist/identity.d.ts.map +1 -0
- package/dist/identity.js +48 -0
- package/dist/identity.js.map +1 -0
- package/dist/index.d.ts +34 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -2
- package/dist/index.js.map +1 -1
- package/dist/inventory-adoption.d.ts +24 -5
- package/dist/inventory-adoption.d.ts.map +1 -1
- package/dist/inventory-adoption.js +70 -25
- package/dist/inventory-adoption.js.map +1 -1
- package/dist/inventory-choice.d.ts +40 -0
- package/dist/inventory-choice.d.ts.map +1 -0
- package/dist/inventory-choice.js +156 -0
- package/dist/inventory-choice.js.map +1 -0
- package/dist/inventory-contract.d.ts +89 -0
- package/dist/inventory-contract.d.ts.map +1 -0
- package/dist/inventory-contract.js +121 -0
- package/dist/inventory-contract.js.map +1 -0
- package/dist/key-editor.d.ts +30 -0
- package/dist/key-editor.d.ts.map +1 -0
- package/dist/key-editor.js +445 -0
- package/dist/key-editor.js.map +1 -0
- package/dist/ledger-contract.d.ts +187 -0
- package/dist/ledger-contract.d.ts.map +1 -0
- package/dist/ledger-contract.js +532 -0
- package/dist/ledger-contract.js.map +1 -0
- package/dist/ledger-trust.d.ts +90 -0
- package/dist/ledger-trust.d.ts.map +1 -0
- package/dist/ledger-trust.js +198 -0
- package/dist/ledger-trust.js.map +1 -0
- package/dist/lockfile-invariants.d.ts +48 -0
- package/dist/lockfile-invariants.d.ts.map +1 -0
- package/dist/lockfile-invariants.js +375 -0
- package/dist/lockfile-invariants.js.map +1 -0
- package/dist/lockfile-readers.d.ts +72 -0
- package/dist/lockfile-readers.d.ts.map +1 -0
- package/dist/lockfile-readers.js +713 -0
- package/dist/lockfile-readers.js.map +1 -0
- package/dist/lockfile-regen.d.ts +106 -0
- package/dist/lockfile-regen.d.ts.map +1 -0
- package/dist/lockfile-regen.js +760 -0
- package/dist/lockfile-regen.js.map +1 -0
- package/dist/lockfile-tool-env.d.ts +29 -0
- package/dist/lockfile-tool-env.d.ts.map +1 -0
- package/dist/lockfile-tool-env.js +111 -0
- package/dist/lockfile-tool-env.js.map +1 -0
- package/dist/materialize.d.ts +113 -0
- package/dist/materialize.d.ts.map +1 -0
- package/dist/materialize.js +840 -0
- package/dist/materialize.js.map +1 -0
- package/dist/observe-repository.d.ts +90 -0
- package/dist/observe-repository.d.ts.map +1 -0
- package/dist/observe-repository.js +1367 -0
- package/dist/observe-repository.js.map +1 -0
- package/dist/plan-bundle-setup-fixture.d.ts +68 -0
- package/dist/plan-bundle-setup-fixture.d.ts.map +1 -0
- package/dist/plan-bundle-setup-fixture.js +167 -0
- package/dist/plan-bundle-setup-fixture.js.map +1 -0
- package/dist/plan-bundle.d.ts +250 -0
- package/dist/plan-bundle.d.ts.map +1 -0
- package/dist/plan-bundle.js +827 -0
- package/dist/plan-bundle.js.map +1 -0
- package/dist/plan-command.d.ts +29 -0
- package/dist/plan-command.d.ts.map +1 -0
- package/dist/plan-command.js +493 -0
- package/dist/plan-command.js.map +1 -0
- package/dist/plan-contract.d.ts +153 -0
- package/dist/plan-contract.d.ts.map +1 -0
- package/dist/plan-contract.js +61 -0
- package/dist/plan-contract.js.map +1 -0
- package/dist/plan-digest.d.ts +25 -0
- package/dist/plan-digest.d.ts.map +1 -0
- package/dist/plan-digest.js +106 -0
- package/dist/plan-digest.js.map +1 -0
- package/dist/plan-rules.d.ts +23 -0
- package/dist/plan-rules.d.ts.map +1 -0
- package/dist/plan-rules.js +177 -0
- package/dist/plan-rules.js.map +1 -0
- package/dist/planned-bundle.d.ts +20 -0
- package/dist/planned-bundle.d.ts.map +1 -0
- package/dist/planned-bundle.js +191 -0
- package/dist/planned-bundle.js.map +1 -0
- package/dist/product-repository.d.ts +4 -0
- package/dist/product-repository.d.ts.map +1 -1
- package/dist/product-repository.js +9 -1
- package/dist/product-repository.js.map +1 -1
- package/dist/provenance-gate.d.ts +48 -0
- package/dist/provenance-gate.d.ts.map +1 -0
- package/dist/provenance-gate.js +324 -0
- package/dist/provenance-gate.js.map +1 -0
- package/dist/pull-request-body.d.ts +45 -0
- package/dist/pull-request-body.d.ts.map +1 -0
- package/dist/pull-request-body.js +232 -0
- package/dist/pull-request-body.js.map +1 -0
- package/dist/registry-snapshot.d.ts +141 -0
- package/dist/registry-snapshot.d.ts.map +1 -0
- package/dist/registry-snapshot.js +483 -0
- package/dist/registry-snapshot.js.map +1 -0
- package/dist/release-age-edit.d.ts +52 -0
- package/dist/release-age-edit.d.ts.map +1 -0
- package/dist/release-age-edit.js +413 -0
- package/dist/release-age-edit.js.map +1 -0
- package/dist/root-entries.d.ts +36 -0
- package/dist/root-entries.d.ts.map +1 -0
- package/dist/root-entries.js +80 -0
- package/dist/root-entries.js.map +1 -0
- package/dist/setup-template-scripts.d.ts +34 -0
- package/dist/setup-template-scripts.d.ts.map +1 -0
- package/dist/setup-template-scripts.js +557 -0
- package/dist/setup-template-scripts.js.map +1 -0
- package/dist/setup-templates.d.ts +54 -0
- package/dist/setup-templates.d.ts.map +1 -0
- package/dist/setup-templates.js +427 -0
- package/dist/setup-templates.js.map +1 -0
- package/dist/skills.d.ts +34 -1
- package/dist/skills.d.ts.map +1 -1
- package/dist/skills.js +129 -17
- package/dist/skills.js.map +1 -1
- package/dist/status.d.ts +63 -0
- package/dist/status.d.ts.map +1 -0
- package/dist/status.js +539 -0
- package/dist/status.js.map +1 -0
- package/dist/types.d.ts +151 -13
- package/dist/types.d.ts.map +1 -1
- package/package.json +4 -5
- package/skeleton/README.md +14 -9
- package/skeleton/package.json +2 -1
- package/skill/SKILL.md +20 -16
- package/skill-catalogue/advisor/SKILL.md +100 -11
- package/skill-catalogue/architect/SKILL.md +2 -13
- package/skill-catalogue/bouncer/SKILL.md +2 -13
- package/skill-catalogue/builder/SKILL.md +2 -13
- package/skill-catalogue/butler/SKILL.md +2 -13
- package/skill-catalogue/controller/SKILL.md +2 -13
- package/skill-catalogue/customer/SKILL.md +4 -13
- package/skill-catalogue/designer/SKILL.md +9 -14
- package/skill-catalogue/giver/SKILL.md +2 -13
- package/skill-catalogue/influencer/SKILL.md +2 -13
- package/skill-catalogue/inspector/SKILL.md +2 -13
- package/skill-catalogue/integrator/SKILL.md +2 -13
- package/skill-catalogue/keeper/SKILL.md +2 -13
- package/skill-catalogue/launcher/SKILL.md +20 -16
- package/skill-catalogue/locksmith/SKILL.md +2 -13
- package/skill-catalogue/messenger/SKILL.md +2 -13
- package/skill-catalogue/observer/SKILL.md +2 -13
- package/skill-catalogue/publisher/SKILL.md +11 -17
- package/skill-catalogue/starter/SKILL.md +3 -13
- package/skill-catalogue/strategist/SKILL.md +14 -17
- package/skill-catalogue/writer/SKILL.md +7 -14
- package/src/admission-fixture.ts +572 -0
- package/src/admission.ts +816 -0
- package/src/agents-guide.ts +29 -0
- package/src/apply-command-options.check.ts +27 -0
- package/src/apply-plan-cli.ts +454 -14
- package/src/apply-plan.ts +112 -124
- package/src/apply-step-fixture.ts +236 -0
- package/src/apply-store.ts +584 -0
- package/src/approval-sheet.ts +164 -0
- package/src/body-command.ts +162 -0
- package/src/change-set-contract.ts +937 -0
- package/src/change-set-digest.ts +70 -0
- package/src/check-cli.ts +14 -3
- package/src/cli.ts +90 -22
- package/src/core.ts +973 -275
- package/src/dry-materialize.ts +353 -0
- package/src/generated/contract-schema.generated.ts +520 -0
- package/src/generated/package-scope.generated.ts +10 -0
- package/src/generated/plan-contracts.generated.ts +2840 -0
- package/src/host.ts +10 -0
- package/src/identity.ts +51 -0
- package/src/index.ts +72 -3
- package/src/inventory-adoption.ts +107 -29
- package/src/inventory-choice.ts +172 -0
- package/src/inventory-contract.ts +166 -0
- package/src/key-editor.ts +446 -0
- package/src/ledger-contract.ts +637 -0
- package/src/ledger-trust.ts +267 -0
- package/src/lockfile-invariants.ts +421 -0
- package/src/lockfile-readers.ts +749 -0
- package/src/lockfile-regen.ts +851 -0
- package/src/lockfile-tool-env.ts +131 -0
- package/src/materialize.ts +886 -0
- package/src/observe-repository.ts +1365 -0
- package/src/plan-bundle-setup-fixture.ts +200 -0
- package/src/plan-bundle.ts +964 -0
- package/src/plan-command.ts +509 -0
- package/src/plan-contract.ts +179 -0
- package/src/plan-digest.ts +102 -0
- package/src/plan-rules.ts +188 -0
- package/src/planned-bundle.ts +211 -0
- package/src/product-repository.ts +10 -1
- package/src/provenance-gate.ts +352 -0
- package/src/pull-request-body.ts +261 -0
- package/src/registry-snapshot.ts +534 -0
- package/src/release-age-edit.ts +430 -0
- package/src/root-entries.ts +81 -0
- package/src/setup-template-scripts.ts +571 -0
- package/src/setup-templates.ts +471 -0
- package/src/skills.ts +161 -18
- package/src/status.ts +557 -0
- package/src/types.ts +148 -13
- package/CHANGELOG.md +0 -131
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plan-bundle.js","sourceRoot":"","sources":["../src/plan-bundle.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { ReadinessRunner } from "./admission.js";
|
|
2
|
+
import type { DryMaterializePorts } from "./dry-materialize.js";
|
|
3
|
+
import type { RepositoryObservationPorts } from "./observe-repository.js";
|
|
4
|
+
export declare const PLAN_USAGE = "Usage: launcher-apply-plan plan [--help]\n\nRun in the hub. Computes the apply bundle for the plan file in the working\ntree, reports whether that file is the one committed at HEAD, and prints the\napproval sheet: the bundle and plan digests, whether the plan is committed, the\nmode, the execution authorization, the line to approve, one row for each item of each\nrepository's change set, and every item deferred, refused or skipped.\n\nReads, in the hub: clossys/advisor/plan.json and brief.json, the composed\n.agents/skills/clossys-<role>/SKILL.md of each staffed role and of the Advisor\nvoice, the stored change sets, the inventory, the exact @clossys/advisor and\n@clossys/integrator versions in package.json with their lockfile integrity,\nand the execution authorization committed in\nclossys/advisor/assessment-input.json. Observes the committed default branch\nof each staffed repository's clone, a sibling directory of the hub, and\nnever writes in a clone.\n\nA repository whose change set changes a lockfile and is otherwise satisfied is\ndry-materialized: its committed tree and its change set are written into a\ntemporary directory (never the clone), the lockfile is regenerated there with\ninstall scripts off (V6), and, only when that passes, the hub's installed\n@clossys/integrator provenance check runs on that same tree (V9). The\ntemporary directory is removed before the command ends. A tool that changes\nanything but the lockfile, a submodule, a link that leaves the tree, or an\noversized tree is refused, and no rule names a path, an id or tool output.\n\nWhen the plan file is the one committed at an attached HEAD and that committed\nplan carries an approval for this plan digest, the mode is planned: for each\nrepository the hub decides the binding from what it holds (the approved\nbundle, the stored change sets, the base ledger and tree), and runs its own\nadvisor-execution-readiness for a set that installs packages. A repository is\nplanned only when every check V1 to V9 is satisfied and an approval binds its\nchange set; one the hub refuses is violated (V3, exit 1) or indeterminate\n(exit 2), with a fixed rule, and is never bound. With no such approval the mode\nis report, the checks are as above, and nothing is run for readiness. A\nreport never replaces the stored planned bundle of the same digest: that\nrefusal is \"store-failed\".\n\nWrites only under clossys/.state/apply/: each change set, then the bundle.\nThe sheet holds ids and digests only, never plan or brief text. This\ncomputes and records no approval: the approval is the plan's decision, made\nin the hub, for the subject digest the sheet names. The digests and the change\nsets do not depend on the mode. Nor does the sheet, except its Mode line and,\nunder \"Checks not satisfied\", the V3 row of a repository the hub refuses (and\nthe V9 row of a set that changes a lockfile, when the dry tree ran no\nprovenance check), which only planned mode adds.\n\nEvery refusal is a fixed word and names nothing from the files it read. A\nrefusal before anything is stored ends \"; nothing was stored\"; \"store-failed\"\nand an unexpected failure do not, because some sets may already be stored.\n\nExit codes: 0 = every repository is satisfied, 1 = a repository is violated,\n2 = an input could not be read, the planner refused, or a repository is\nindeterminate. A bundle that was computed is stored and printed whatever the\nexit code.";
|
|
5
|
+
export interface PlanCommandOptions {
|
|
6
|
+
/** The hub root; the process's cwd by default. */
|
|
7
|
+
readonly cwd?: string;
|
|
8
|
+
/** The instant the bundle is computed at; the wall clock by default. */
|
|
9
|
+
readonly now?: () => Date;
|
|
10
|
+
/** How a repository's node id and visibility are read; read-only `gh api` by default. */
|
|
11
|
+
readonly ports?: RepositoryObservationPorts;
|
|
12
|
+
/** This package's version, the producer of every set; read from this package's manifest by default. */
|
|
13
|
+
readonly producerVersion?: string;
|
|
14
|
+
/** Where the sheet goes; standard output by default. */
|
|
15
|
+
readonly stdout?: (text: string) => void;
|
|
16
|
+
/** Where a refusal goes, one line; standard error by default. */
|
|
17
|
+
readonly stderr?: (line: string) => void;
|
|
18
|
+
/** How the package manager and the hub's provenance check are launched for the dry tree; the real runners by default. Not reachable from a CLI. */
|
|
19
|
+
readonly spawn?: Pick<DryMaterializePorts, "lockfileSpawn" | "provenanceSpawn">;
|
|
20
|
+
/** How advisor-execution-readiness is run for a set that installs packages in planned mode; the hub's own bin by default. Not reachable from a CLI. */
|
|
21
|
+
readonly runReadiness?: ReadinessRunner;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* The `plan` subcommand. Never throws: every refusal prints one line naming a
|
|
25
|
+
* fixed reason and returns 2, and nothing is written unless a bundle was
|
|
26
|
+
* computed and its sheet rendered.
|
|
27
|
+
*/
|
|
28
|
+
export declare function planMain(argv: readonly string[], options?: PlanCommandOptions): Promise<number>;
|
|
29
|
+
//# sourceMappingURL=plan-command.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plan-command.d.ts","sourceRoot":"","sources":["../src/plan-command.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAQtD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAOhE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AAM1E,eAAO,MAAM,UAAU,63GAsDZ,CAAC;AAEZ,MAAM,WAAW,kBAAkB;IACjC,kDAAkD;IAClD,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,wEAAwE;IACxE,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,yFAAyF;IACzF,QAAQ,CAAC,KAAK,CAAC,EAAE,0BAA0B,CAAC;IAC5C,uGAAuG;IACvG,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,wDAAwD;IACxD,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,iEAAiE;IACjE,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,mJAAmJ;IACnJ,QAAQ,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,mBAAmB,EAAE,eAAe,GAAG,iBAAiB,CAAC,CAAC;IAChF,uJAAuJ;IACvJ,QAAQ,CAAC,YAAY,CAAC,EAAE,eAAe,CAAC;CACzC;AAyTD;;;;GAIG;AACH,wBAAsB,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,MAAM,CAAC,CA8EzG"}
|
|
@@ -0,0 +1,493 @@
|
|
|
1
|
+
// `launcher-apply-plan plan` (issue #1178, step 2): the command that runs the
|
|
2
|
+
// pure planner. It reads the hub -- the plan, the brief, the composed skills,
|
|
3
|
+
// the change-set store, the inventory, the engine pins and the execution
|
|
4
|
+
// authorization -- and observes each staffed clone's committed default
|
|
5
|
+
// branch, hands all of it to planApplyBundle(), stores the change sets and
|
|
6
|
+
// then the bundle, and prints the approval sheet.
|
|
7
|
+
//
|
|
8
|
+
// It writes only under clossys/.state/apply/ in the hub, through the store
|
|
9
|
+
// (which refuses a symbolic link in that path), and writes nothing in any
|
|
10
|
+
// clone. It computes and records no approval: no option carries one. The
|
|
11
|
+
// bundle is a report unless the hub's committed plan is approved for this plan
|
|
12
|
+
// digest; then it is planned, and each set's binding is decided from the hub,
|
|
13
|
+
// by admission (planned-bundle.ts). Every refusal is a fixed token that echoes
|
|
14
|
+
// no plan, brief, skill or repository text.
|
|
15
|
+
import { spawnSync } from "node:child_process";
|
|
16
|
+
import { lstatSync, readFileSync, realpathSync } from "node:fs";
|
|
17
|
+
import { dirname, join, resolve, sep } from "node:path";
|
|
18
|
+
import { renderApprovalSheet, ApprovalSheetError } from "./approval-sheet.js";
|
|
19
|
+
import { listStoredChangeSets, storeApplyBundle, storeChangeSet } from "./apply-store.js";
|
|
20
|
+
import { ID_TOKEN, skillPath } from "./change-set-contract.js";
|
|
21
|
+
import { ADVISOR_PACKAGE, INTEGRATOR_PACKAGE, WORKSPACE_INVENTORY_REL, readInventoryRepositories } from "./core.js";
|
|
22
|
+
import { readContractDocument } from "./generated/contract-schema.generated.js";
|
|
23
|
+
import { dryMaterializeBundle } from "./dry-materialize.js";
|
|
24
|
+
import { createNodeHost } from "./host.js";
|
|
25
|
+
import { sameRepository } from "./identity.js";
|
|
26
|
+
import { isUnreadable, readLockfile } from "./lockfile-readers.js";
|
|
27
|
+
import { observeRepository } from "./observe-repository.js";
|
|
28
|
+
import { plannedBundle } from "./planned-bundle.js";
|
|
29
|
+
import { planApplyBundle } from "./plan-bundle.js";
|
|
30
|
+
import { validateAdvisorPlan, validateEngagementBrief } from "./plan-contract.js";
|
|
31
|
+
export const PLAN_USAGE = `Usage: launcher-apply-plan plan [--help]
|
|
32
|
+
|
|
33
|
+
Run in the hub. Computes the apply bundle for the plan file in the working
|
|
34
|
+
tree, reports whether that file is the one committed at HEAD, and prints the
|
|
35
|
+
approval sheet: the bundle and plan digests, whether the plan is committed, the
|
|
36
|
+
mode, the execution authorization, the line to approve, one row for each item of each
|
|
37
|
+
repository's change set, and every item deferred, refused or skipped.
|
|
38
|
+
|
|
39
|
+
Reads, in the hub: clossys/advisor/plan.json and brief.json, the composed
|
|
40
|
+
.agents/skills/clossys-<role>/SKILL.md of each staffed role and of the Advisor
|
|
41
|
+
voice, the stored change sets, the inventory, the exact @clossys/advisor and
|
|
42
|
+
@clossys/integrator versions in package.json with their lockfile integrity,
|
|
43
|
+
and the execution authorization committed in
|
|
44
|
+
clossys/advisor/assessment-input.json. Observes the committed default branch
|
|
45
|
+
of each staffed repository's clone, a sibling directory of the hub, and
|
|
46
|
+
never writes in a clone.
|
|
47
|
+
|
|
48
|
+
A repository whose change set changes a lockfile and is otherwise satisfied is
|
|
49
|
+
dry-materialized: its committed tree and its change set are written into a
|
|
50
|
+
temporary directory (never the clone), the lockfile is regenerated there with
|
|
51
|
+
install scripts off (V6), and, only when that passes, the hub's installed
|
|
52
|
+
@clossys/integrator provenance check runs on that same tree (V9). The
|
|
53
|
+
temporary directory is removed before the command ends. A tool that changes
|
|
54
|
+
anything but the lockfile, a submodule, a link that leaves the tree, or an
|
|
55
|
+
oversized tree is refused, and no rule names a path, an id or tool output.
|
|
56
|
+
|
|
57
|
+
When the plan file is the one committed at an attached HEAD and that committed
|
|
58
|
+
plan carries an approval for this plan digest, the mode is planned: for each
|
|
59
|
+
repository the hub decides the binding from what it holds (the approved
|
|
60
|
+
bundle, the stored change sets, the base ledger and tree), and runs its own
|
|
61
|
+
advisor-execution-readiness for a set that installs packages. A repository is
|
|
62
|
+
planned only when every check V1 to V9 is satisfied and an approval binds its
|
|
63
|
+
change set; one the hub refuses is violated (V3, exit 1) or indeterminate
|
|
64
|
+
(exit 2), with a fixed rule, and is never bound. With no such approval the mode
|
|
65
|
+
is report, the checks are as above, and nothing is run for readiness. A
|
|
66
|
+
report never replaces the stored planned bundle of the same digest: that
|
|
67
|
+
refusal is "store-failed".
|
|
68
|
+
|
|
69
|
+
Writes only under clossys/.state/apply/: each change set, then the bundle.
|
|
70
|
+
The sheet holds ids and digests only, never plan or brief text. This
|
|
71
|
+
computes and records no approval: the approval is the plan's decision, made
|
|
72
|
+
in the hub, for the subject digest the sheet names. The digests and the change
|
|
73
|
+
sets do not depend on the mode. Nor does the sheet, except its Mode line and,
|
|
74
|
+
under "Checks not satisfied", the V3 row of a repository the hub refuses (and
|
|
75
|
+
the V9 row of a set that changes a lockfile, when the dry tree ran no
|
|
76
|
+
provenance check), which only planned mode adds.
|
|
77
|
+
|
|
78
|
+
Every refusal is a fixed word and names nothing from the files it read. A
|
|
79
|
+
refusal before anything is stored ends "; nothing was stored"; "store-failed"
|
|
80
|
+
and an unexpected failure do not, because some sets may already be stored.
|
|
81
|
+
|
|
82
|
+
Exit codes: 0 = every repository is satisfied, 1 = a repository is violated,
|
|
83
|
+
2 = an input could not be read, the planner refused, or a repository is
|
|
84
|
+
indeterminate. A bundle that was computed is stored and printed whatever the
|
|
85
|
+
exit code.`;
|
|
86
|
+
class PlanRefused extends Error {
|
|
87
|
+
token;
|
|
88
|
+
constructor(token) {
|
|
89
|
+
super(token);
|
|
90
|
+
this.token = token;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
function refuse(token) {
|
|
94
|
+
throw new PlanRefused(token);
|
|
95
|
+
}
|
|
96
|
+
const PLAN_REL = "clossys/advisor/plan.json";
|
|
97
|
+
const BRIEF_REL = "clossys/advisor/brief.json";
|
|
98
|
+
const ASSESSMENT_REL = "clossys/advisor/assessment-input.json";
|
|
99
|
+
const ADVISOR_VOICE = "advisor";
|
|
100
|
+
const EXACT_VERSION = /^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-[0-9A-Za-z.-]+)?$/u;
|
|
101
|
+
const INTEGRITY = /^sha512-[A-Za-z0-9+/]{86}==$/u;
|
|
102
|
+
const OBJECT_ID = /^(?:[0-9a-f]{40}|[0-9a-f]{64})$/u;
|
|
103
|
+
const VISIBILITIES = ["private", "internal", "public"];
|
|
104
|
+
const isRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
|
|
105
|
+
// ---------------------------------------------------------------------------
|
|
106
|
+
// reading the hub
|
|
107
|
+
/** Reads a regular file below the hub, never through a symbolic link; the bytes, or null. */
|
|
108
|
+
function readHubFile(hub, rel) {
|
|
109
|
+
try {
|
|
110
|
+
const path = join(hub, rel);
|
|
111
|
+
if (!lstatSync(path).isFile())
|
|
112
|
+
return null;
|
|
113
|
+
const real = realpathSync(path);
|
|
114
|
+
if (!real.startsWith(`${hub}${sep}`))
|
|
115
|
+
return null;
|
|
116
|
+
return readFileSync(path);
|
|
117
|
+
}
|
|
118
|
+
catch {
|
|
119
|
+
return null;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
function readStrictJson(bytes) {
|
|
123
|
+
return readContractDocument(bytes);
|
|
124
|
+
}
|
|
125
|
+
const DROPPED_GIT_ENV = [
|
|
126
|
+
"GIT_DIR",
|
|
127
|
+
"GIT_WORK_TREE",
|
|
128
|
+
"GIT_INDEX_FILE",
|
|
129
|
+
"GIT_OBJECT_DIRECTORY",
|
|
130
|
+
"GIT_ALTERNATE_OBJECT_DIRECTORIES",
|
|
131
|
+
"GIT_COMMON_DIR",
|
|
132
|
+
"GIT_NAMESPACE",
|
|
133
|
+
"GIT_PREFIX",
|
|
134
|
+
"GIT_SHALLOW_FILE",
|
|
135
|
+
"GIT_GRAFT_FILE",
|
|
136
|
+
];
|
|
137
|
+
function runGit(cwd, args) {
|
|
138
|
+
const env = { ...process.env };
|
|
139
|
+
for (const name of DROPPED_GIT_ENV)
|
|
140
|
+
delete env[name];
|
|
141
|
+
env.GIT_LITERAL_PATHSPECS = "1";
|
|
142
|
+
env.GIT_TERMINAL_PROMPT = "0";
|
|
143
|
+
env.GIT_OPTIONAL_LOCKS = "0";
|
|
144
|
+
const run = spawnSync("git", ["--no-replace-objects", ...args], { cwd, env, stdio: ["ignore", "pipe", "ignore"], maxBuffer: 64 * 1024 * 1024 });
|
|
145
|
+
if (run.error !== undefined || run.stdout === null || run.stdout === undefined)
|
|
146
|
+
return { status: null, stdout: Buffer.alloc(0) };
|
|
147
|
+
return { status: run.status, stdout: run.stdout };
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* The bytes of a regular, non-executable file at `rel` in the tree of the
|
|
151
|
+
* hub's HEAD, or null. HEAD must be attached to a branch, the path must be one
|
|
152
|
+
* blob of mode 100644 (a symbolic link is refused), and the read goes through
|
|
153
|
+
* the blob's object id, so the working tree is never consulted.
|
|
154
|
+
*/
|
|
155
|
+
function readCommittedBlob(hub, rel) {
|
|
156
|
+
const head = runGit(hub, ["symbolic-ref", "-q", "HEAD"]);
|
|
157
|
+
if (head.status !== 0 || !head.stdout.toString("utf8").trim().startsWith("refs/heads/"))
|
|
158
|
+
return null;
|
|
159
|
+
const listed = runGit(hub, ["ls-tree", "-z", "HEAD", "--", rel]);
|
|
160
|
+
if (listed.status !== 0)
|
|
161
|
+
return null;
|
|
162
|
+
const records = listed.stdout.toString("utf8").split("\0").filter((record) => record !== "");
|
|
163
|
+
if (records.length !== 1)
|
|
164
|
+
return null;
|
|
165
|
+
const record = records[0];
|
|
166
|
+
const tab = record.indexOf("\t");
|
|
167
|
+
if (tab === -1 || record.slice(tab + 1) !== rel)
|
|
168
|
+
return null;
|
|
169
|
+
const [mode, type, oid, ...rest] = record.slice(0, tab).split(" ");
|
|
170
|
+
if (mode !== "100644" || type !== "blob" || oid === undefined || rest.length > 0 || !OBJECT_ID.test(oid))
|
|
171
|
+
return null;
|
|
172
|
+
const blob = runGit(hub, ["cat-file", "blob", oid]);
|
|
173
|
+
return blob.status === 0 ? blob.stdout : null;
|
|
174
|
+
}
|
|
175
|
+
/** The hub inventory's repository ids, read through readHubFile (no link, nothing outside the hub); an absent file lists none. */
|
|
176
|
+
function readInventory(hub) {
|
|
177
|
+
const path = join(hub, WORKSPACE_INVENTORY_REL);
|
|
178
|
+
try {
|
|
179
|
+
if (lstatSync(path, { throwIfNoEntry: false }) === undefined)
|
|
180
|
+
return [];
|
|
181
|
+
}
|
|
182
|
+
catch {
|
|
183
|
+
return refuse("inventory-unreadable");
|
|
184
|
+
}
|
|
185
|
+
if (readHubFile(hub, WORKSPACE_INVENTORY_REL) === null)
|
|
186
|
+
return refuse("inventory-unreadable");
|
|
187
|
+
try {
|
|
188
|
+
return readInventoryRepositories(createNodeHost(hub), path, "the hub inventory");
|
|
189
|
+
}
|
|
190
|
+
catch {
|
|
191
|
+
return refuse("inventory-unreadable");
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
function readPlan(hub) {
|
|
195
|
+
const bytes = readHubFile(hub, PLAN_REL);
|
|
196
|
+
if (bytes === null)
|
|
197
|
+
return refuse("plan-unreadable");
|
|
198
|
+
let document;
|
|
199
|
+
try {
|
|
200
|
+
document = readStrictJson(bytes);
|
|
201
|
+
}
|
|
202
|
+
catch {
|
|
203
|
+
return refuse("plan-unreadable");
|
|
204
|
+
}
|
|
205
|
+
if (!validateAdvisorPlan(document).valid)
|
|
206
|
+
return refuse("plan-invalid");
|
|
207
|
+
return { plan: document, bytes };
|
|
208
|
+
}
|
|
209
|
+
function readBrief(hub) {
|
|
210
|
+
const bytes = readHubFile(hub, BRIEF_REL);
|
|
211
|
+
if (bytes === null)
|
|
212
|
+
return refuse("brief-unreadable");
|
|
213
|
+
let document;
|
|
214
|
+
try {
|
|
215
|
+
document = readStrictJson(bytes);
|
|
216
|
+
}
|
|
217
|
+
catch {
|
|
218
|
+
return refuse("brief-unreadable");
|
|
219
|
+
}
|
|
220
|
+
if (!validateEngagementBrief(document).valid)
|
|
221
|
+
return refuse("brief-invalid");
|
|
222
|
+
return document;
|
|
223
|
+
}
|
|
224
|
+
/** The composed skill of every staffed role, and of the Advisor voice, as UTF-8 text. */
|
|
225
|
+
function readSkills(hub, plan) {
|
|
226
|
+
const roles = [...new Set([...(plan.staffing ?? []).flatMap((entry) => entry.roles), ADVISOR_VOICE])];
|
|
227
|
+
const decoder = new TextDecoder("utf-8", { fatal: true });
|
|
228
|
+
return roles.map((role) => {
|
|
229
|
+
if (!ID_TOKEN.test(role))
|
|
230
|
+
return refuse("skill-unreadable");
|
|
231
|
+
const bytes = readHubFile(hub, skillPath(role));
|
|
232
|
+
if (bytes === null)
|
|
233
|
+
return refuse("skill-unreadable");
|
|
234
|
+
try {
|
|
235
|
+
return { role, content: decoder.decode(bytes) };
|
|
236
|
+
}
|
|
237
|
+
catch {
|
|
238
|
+
return refuse("skill-unreadable");
|
|
239
|
+
}
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* The hub's pin of one engine package: the exact version its package.json
|
|
244
|
+
* names, and the integrity the hub's lockfile resolves that version to.
|
|
245
|
+
*/
|
|
246
|
+
function readPin(manifest, lockfile, name) {
|
|
247
|
+
if (isUnreadable(lockfile))
|
|
248
|
+
return refuse("engine-pin-unreadable");
|
|
249
|
+
const buckets = ["dependencies", "devDependencies"].map((bucket) => manifest[bucket]).filter((bucket) => bucket !== undefined);
|
|
250
|
+
const declared = buckets.flatMap((bucket) => (isRecord(bucket) && Object.hasOwn(bucket, name) ? [bucket[name]] : []));
|
|
251
|
+
if (declared.length !== 1)
|
|
252
|
+
return refuse("engine-pin-unreadable");
|
|
253
|
+
const version = declared[0];
|
|
254
|
+
if (typeof version !== "string" || !EXACT_VERSION.test(version))
|
|
255
|
+
return refuse("engine-pin-unreadable");
|
|
256
|
+
const resolved = lockfile.root.filter((entry) => entry.name === name && !entry.link);
|
|
257
|
+
if (resolved.length !== 1 || resolved[0].version !== version)
|
|
258
|
+
return refuse("engine-pin-unreadable");
|
|
259
|
+
const integrity = resolved[0].integrity;
|
|
260
|
+
if (integrity === null || !INTEGRITY.test(integrity))
|
|
261
|
+
return refuse("engine-pin-unreadable");
|
|
262
|
+
return { name, version, integrity };
|
|
263
|
+
}
|
|
264
|
+
function readPins(hub) {
|
|
265
|
+
const manifestBytes = readHubFile(hub, "package.json");
|
|
266
|
+
if (manifestBytes === null)
|
|
267
|
+
return refuse("engine-pin-unreadable");
|
|
268
|
+
let manifest;
|
|
269
|
+
try {
|
|
270
|
+
manifest = readStrictJson(manifestBytes);
|
|
271
|
+
}
|
|
272
|
+
catch {
|
|
273
|
+
return refuse("engine-pin-unreadable");
|
|
274
|
+
}
|
|
275
|
+
if (!isRecord(manifest))
|
|
276
|
+
return refuse("engine-pin-unreadable");
|
|
277
|
+
const candidates = [
|
|
278
|
+
{ format: "npm", rel: "package-lock.json" },
|
|
279
|
+
{ format: "pnpm", rel: "pnpm-lock.yaml" },
|
|
280
|
+
];
|
|
281
|
+
const present = candidates.flatMap((candidate) => {
|
|
282
|
+
const bytes = readHubFile(hub, candidate.rel);
|
|
283
|
+
return bytes === null ? [] : [{ format: candidate.format, bytes }];
|
|
284
|
+
});
|
|
285
|
+
if (present.length !== 1)
|
|
286
|
+
return refuse("engine-pin-unreadable");
|
|
287
|
+
let text;
|
|
288
|
+
try {
|
|
289
|
+
text = new TextDecoder("utf-8", { fatal: true }).decode(present[0].bytes);
|
|
290
|
+
}
|
|
291
|
+
catch {
|
|
292
|
+
return refuse("engine-pin-unreadable");
|
|
293
|
+
}
|
|
294
|
+
const lockfile = readLockfile(present[0].format, text);
|
|
295
|
+
return { engine: readPin(manifest, lockfile, ADVISOR_PACKAGE), integrator: readPin(manifest, lockfile, INTEGRATOR_PACKAGE) };
|
|
296
|
+
}
|
|
297
|
+
/**
|
|
298
|
+
* The execution authorization committed at the hub's HEAD, or null when there
|
|
299
|
+
* is no committed assessment or it holds no `engagement.executionAuthorization`.
|
|
300
|
+
* Only the two fields the bundle records are judged: a value that is present
|
|
301
|
+
* and is not an object holding a string `planDigest` and `expiresAt` refuses.
|
|
302
|
+
* Whether it permits the plan's acts is the planner's V3 check, and admission's.
|
|
303
|
+
*/
|
|
304
|
+
function readAuthorization(hub) {
|
|
305
|
+
const bytes = readCommittedBlob(hub, ASSESSMENT_REL);
|
|
306
|
+
if (bytes === null)
|
|
307
|
+
return null;
|
|
308
|
+
let document;
|
|
309
|
+
try {
|
|
310
|
+
document = readStrictJson(bytes);
|
|
311
|
+
}
|
|
312
|
+
catch {
|
|
313
|
+
return refuse("authorization-malformed");
|
|
314
|
+
}
|
|
315
|
+
if (!isRecord(document))
|
|
316
|
+
return refuse("authorization-malformed");
|
|
317
|
+
const engagement = document.engagement;
|
|
318
|
+
if (engagement === undefined)
|
|
319
|
+
return null;
|
|
320
|
+
if (!isRecord(engagement))
|
|
321
|
+
return refuse("authorization-malformed");
|
|
322
|
+
const authorization = engagement.executionAuthorization;
|
|
323
|
+
if (authorization === undefined)
|
|
324
|
+
return null;
|
|
325
|
+
if (!isRecord(authorization) || typeof authorization.planDigest !== "string" || typeof authorization.expiresAt !== "string")
|
|
326
|
+
return refuse("authorization-malformed");
|
|
327
|
+
return { planDigest: authorization.planDigest, expiresAt: authorization.expiresAt };
|
|
328
|
+
}
|
|
329
|
+
function readProducerVersion(options) {
|
|
330
|
+
if (options.producerVersion !== undefined)
|
|
331
|
+
return options.producerVersion;
|
|
332
|
+
try {
|
|
333
|
+
const manifest = JSON.parse(readFileSync(new URL("../package.json", import.meta.url), "utf8"));
|
|
334
|
+
if (isRecord(manifest) && typeof manifest.version === "string" && manifest.version !== "")
|
|
335
|
+
return manifest.version;
|
|
336
|
+
}
|
|
337
|
+
catch {
|
|
338
|
+
/* handled below */
|
|
339
|
+
}
|
|
340
|
+
return refuse("producer-unreadable");
|
|
341
|
+
}
|
|
342
|
+
// ---------------------------------------------------------------------------
|
|
343
|
+
// observing the clones
|
|
344
|
+
function ghApi(id, field) {
|
|
345
|
+
const run = spawnSync("gh", ["api", `repos/${id}`, "--jq", field], { encoding: "utf8", stdio: ["ignore", "pipe", "ignore"], timeout: 60_000 });
|
|
346
|
+
if (run.status !== 0)
|
|
347
|
+
throw new Error("gh api failed");
|
|
348
|
+
return run.stdout.trim();
|
|
349
|
+
}
|
|
350
|
+
const DEFAULT_PORTS = {
|
|
351
|
+
nodeId: (id) => {
|
|
352
|
+
if (!id.includes("/"))
|
|
353
|
+
throw new Error("no owner");
|
|
354
|
+
return ghApi(id, ".node_id");
|
|
355
|
+
},
|
|
356
|
+
visibility: (id) => {
|
|
357
|
+
if (!id.includes("/"))
|
|
358
|
+
throw new Error("no owner");
|
|
359
|
+
const visibility = ghApi(id, ".visibility");
|
|
360
|
+
if (!VISIBILITIES.includes(visibility))
|
|
361
|
+
throw new Error("unknown visibility");
|
|
362
|
+
return visibility;
|
|
363
|
+
},
|
|
364
|
+
};
|
|
365
|
+
/** The sibling directory of the hub that holds a repository's clone. */
|
|
366
|
+
const cloneOf = (hub, id) => resolve(dirname(hub), id.slice(id.indexOf("/") + 1));
|
|
367
|
+
async function observeStaffed(hub, plan, inventory, ports) {
|
|
368
|
+
const observations = [];
|
|
369
|
+
const seen = new Set();
|
|
370
|
+
for (const entry of plan.staffing ?? []) {
|
|
371
|
+
const id = entry.repository;
|
|
372
|
+
if (seen.has(id))
|
|
373
|
+
continue;
|
|
374
|
+
seen.add(id);
|
|
375
|
+
if (!inventory.some((listed) => sameRepository(listed, id))) {
|
|
376
|
+
observations.push({ id, skipped: "not-in-inventory", verdict: "indeterminate" });
|
|
377
|
+
continue;
|
|
378
|
+
}
|
|
379
|
+
observations.push(await observeRepository({ id, clone: cloneOf(hub, id), ports }));
|
|
380
|
+
}
|
|
381
|
+
return observations;
|
|
382
|
+
}
|
|
383
|
+
// ---------------------------------------------------------------------------
|
|
384
|
+
// the command
|
|
385
|
+
function exitCodeOf(bundle) {
|
|
386
|
+
const verdicts = bundle.repositories.map((entry) => entry.verdict);
|
|
387
|
+
if (verdicts.includes("violated"))
|
|
388
|
+
return 1;
|
|
389
|
+
return verdicts.includes("indeterminate") ? 2 : 0;
|
|
390
|
+
}
|
|
391
|
+
function store(hub, result) {
|
|
392
|
+
try {
|
|
393
|
+
for (const set of result.changeSets)
|
|
394
|
+
storeChangeSet(hub, set);
|
|
395
|
+
storeApplyBundle(hub, result.bundle);
|
|
396
|
+
}
|
|
397
|
+
catch {
|
|
398
|
+
refuse("store-failed");
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
/**
|
|
402
|
+
* The `plan` subcommand. Never throws: every refusal prints one line naming a
|
|
403
|
+
* fixed reason and returns 2, and nothing is written unless a bundle was
|
|
404
|
+
* computed and its sheet rendered.
|
|
405
|
+
*/
|
|
406
|
+
export async function planMain(argv, options = {}) {
|
|
407
|
+
const stdout = options.stdout ?? ((text) => void process.stdout.write(text));
|
|
408
|
+
const stderr = options.stderr ?? ((line) => console.error(line));
|
|
409
|
+
try {
|
|
410
|
+
if (argv.length === 1 && (argv[0] === "--help" || argv[0] === "-h")) {
|
|
411
|
+
stdout(`${PLAN_USAGE}\n`);
|
|
412
|
+
return 0;
|
|
413
|
+
}
|
|
414
|
+
if (argv.length !== 0)
|
|
415
|
+
return refuse("usage");
|
|
416
|
+
let hub;
|
|
417
|
+
try {
|
|
418
|
+
hub = realpathSync(options.cwd ?? process.cwd());
|
|
419
|
+
}
|
|
420
|
+
catch {
|
|
421
|
+
return refuse("hub-unreadable");
|
|
422
|
+
}
|
|
423
|
+
const { plan, bytes: planBytes } = readPlan(hub);
|
|
424
|
+
const hubBrief = readBrief(hub);
|
|
425
|
+
const skills = readSkills(hub, plan);
|
|
426
|
+
let heldChangeSets;
|
|
427
|
+
try {
|
|
428
|
+
heldChangeSets = listStoredChangeSets(hub);
|
|
429
|
+
}
|
|
430
|
+
catch {
|
|
431
|
+
return refuse("store-unreadable");
|
|
432
|
+
}
|
|
433
|
+
const inventory = readInventory(hub);
|
|
434
|
+
const { engine, integrator } = readPins(hub);
|
|
435
|
+
const authorization = readAuthorization(hub);
|
|
436
|
+
const committedPlan = readCommittedBlob(hub, PLAN_REL);
|
|
437
|
+
const planCommitted = committedPlan !== null && committedPlan.equals(planBytes);
|
|
438
|
+
const producerVersion = readProducerVersion(options);
|
|
439
|
+
const repositories = await observeStaffed(hub, plan, inventory, options.ports ?? DEFAULT_PORTS);
|
|
440
|
+
const computedAt = (options.now ?? (() => new Date()))().toISOString();
|
|
441
|
+
let result;
|
|
442
|
+
try {
|
|
443
|
+
result = planApplyBundle({
|
|
444
|
+
plan,
|
|
445
|
+
hubBrief,
|
|
446
|
+
repositories,
|
|
447
|
+
skills,
|
|
448
|
+
producer: { name: "@clossys/launcher", version: producerVersion },
|
|
449
|
+
engine,
|
|
450
|
+
integrator,
|
|
451
|
+
planCommitted,
|
|
452
|
+
authorization,
|
|
453
|
+
computedAt,
|
|
454
|
+
heldChangeSets,
|
|
455
|
+
});
|
|
456
|
+
}
|
|
457
|
+
catch {
|
|
458
|
+
return refuse("planner-refused");
|
|
459
|
+
}
|
|
460
|
+
// The part of V6 the planner cannot run, and V9: on a temporary tree, never in a clone.
|
|
461
|
+
try {
|
|
462
|
+
result = await dryMaterializeBundle(result, { hub, cloneFor: (id) => cloneOf(hub, id), now: options.now ?? (() => new Date()), ports: { lockfileSpawn: options.spawn?.lockfileSpawn, provenanceSpawn: options.spawn?.provenanceSpawn } });
|
|
463
|
+
}
|
|
464
|
+
catch {
|
|
465
|
+
return refuse("planner-refused");
|
|
466
|
+
}
|
|
467
|
+
// An approval that binds exactly what was planned: only from the hub's committed, approved plan, only through admission.
|
|
468
|
+
try {
|
|
469
|
+
result = await plannedBundle(result, { hub, cloneFor: (id) => cloneOf(hub, id), heldChangeSets, now: options.now ?? (() => new Date()), runReadiness: options.runReadiness });
|
|
470
|
+
}
|
|
471
|
+
catch {
|
|
472
|
+
return refuse("planner-refused");
|
|
473
|
+
}
|
|
474
|
+
let sheet;
|
|
475
|
+
try {
|
|
476
|
+
sheet = renderApprovalSheet({ bundle: result.bundle, changeSets: result.changeSets });
|
|
477
|
+
}
|
|
478
|
+
catch (cause) {
|
|
479
|
+
if (cause instanceof ApprovalSheetError)
|
|
480
|
+
return refuse("sheet-refused");
|
|
481
|
+
throw cause;
|
|
482
|
+
}
|
|
483
|
+
store(hub, result);
|
|
484
|
+
stdout(sheet);
|
|
485
|
+
return exitCodeOf(result.bundle);
|
|
486
|
+
}
|
|
487
|
+
catch (cause) {
|
|
488
|
+
const token = cause instanceof PlanRefused ? cause.token : "failed";
|
|
489
|
+
stderr(`launcher-apply-plan plan: ${token}${token === "store-failed" ? "" : "; nothing was stored"}`);
|
|
490
|
+
return 2;
|
|
491
|
+
}
|
|
492
|
+
}
|
|
493
|
+
//# sourceMappingURL=plan-command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plan-command.js","sourceRoot":"","sources":["../src/plan-command.ts"],"names":[],"mappings":"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"}
|