@agent-teams/docs-protocol-agent-teams 0.0.0 → 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 +50 -0
- package/README.md +27 -2
- package/assets/catalog.json +1 -1
- package/assets/history/sha256-8711dbd6109740857c69462d218071818317a62949f08ecf8abdc6d6b736321f/caller.yml +14 -0
- package/assets/history/sha256-f8da49344c3b0e9f31235de2826b1b9b392afb84515ace6af4fb5fe580e3a714/caller.yml +14 -0
- package/assets/transition-catalog.json +1 -1
- package/dist/composition/qualification-cli.d.ts.map +1 -1
- package/dist/composition/qualification-cli.js +19 -3
- package/dist/composition/qualification-cli.js.map +1 -1
- package/dist/consumer-integration/adapters/cohort-v2-authority-validator.d.ts +5 -0
- package/dist/consumer-integration/adapters/cohort-v2-authority-validator.d.ts.map +1 -0
- package/dist/consumer-integration/adapters/cohort-v2-authority-validator.js +361 -0
- package/dist/consumer-integration/adapters/cohort-v2-authority-validator.js.map +1 -0
- package/dist/consumer-integration/adapters/consumer-integration-schema-validator.d.ts +1 -0
- package/dist/consumer-integration/adapters/consumer-integration-schema-validator.d.ts.map +1 -1
- package/dist/consumer-integration/adapters/consumer-integration-schema-validator.js +22 -4
- package/dist/consumer-integration/adapters/consumer-integration-schema-validator.js.map +1 -1
- package/dist/consumer-integration/adapters/consumer-upgrade-file-projectors.d.ts +40 -1
- package/dist/consumer-integration/adapters/consumer-upgrade-file-projectors.d.ts.map +1 -1
- package/dist/consumer-integration/adapters/consumer-upgrade-file-projectors.js +227 -0
- package/dist/consumer-integration/adapters/consumer-upgrade-file-projectors.js.map +1 -1
- package/dist/consumer-integration/adapters/github-cohort-authority-reader.d.ts +17 -5
- package/dist/consumer-integration/adapters/github-cohort-authority-reader.d.ts.map +1 -1
- package/dist/consumer-integration/adapters/github-cohort-authority-reader.js +123 -16
- package/dist/consumer-integration/adapters/github-cohort-authority-reader.js.map +1 -1
- package/dist/consumer-integration/adapters/node-consumer-integration-repository.d.ts +2 -1
- package/dist/consumer-integration/adapters/node-consumer-integration-repository.d.ts.map +1 -1
- package/dist/consumer-integration/adapters/node-consumer-integration-repository.js +55 -16
- package/dist/consumer-integration/adapters/node-consumer-integration-repository.js.map +1 -1
- package/dist/consumer-integration/adapters/node-consumer-restoration-evidence.d.ts +38 -0
- package/dist/consumer-integration/adapters/node-consumer-restoration-evidence.d.ts.map +1 -0
- package/dist/consumer-integration/adapters/node-consumer-restoration-evidence.js +177 -0
- package/dist/consumer-integration/adapters/node-consumer-restoration-evidence.js.map +1 -0
- package/dist/consumer-integration/adapters/node-consumer-restoration-finalization.d.ts +10 -0
- package/dist/consumer-integration/adapters/node-consumer-restoration-finalization.d.ts.map +1 -0
- package/dist/consumer-integration/adapters/node-consumer-restoration-finalization.js +95 -0
- package/dist/consumer-integration/adapters/node-consumer-restoration-finalization.js.map +1 -0
- package/dist/consumer-integration/adapters/node-consumer-restoration-lock.d.ts +3 -0
- package/dist/consumer-integration/adapters/node-consumer-restoration-lock.d.ts.map +1 -0
- package/dist/consumer-integration/adapters/node-consumer-restoration-lock.js +104 -0
- package/dist/consumer-integration/adapters/node-consumer-restoration-lock.js.map +1 -0
- package/dist/consumer-integration/adapters/node-consumer-restoration-scope.d.ts +9 -0
- package/dist/consumer-integration/adapters/node-consumer-restoration-scope.d.ts.map +1 -0
- package/dist/consumer-integration/adapters/node-consumer-restoration-scope.js +71 -0
- package/dist/consumer-integration/adapters/node-consumer-restoration-scope.js.map +1 -0
- package/dist/consumer-integration/adapters/node-consumer-restoration-selection.d.ts +9 -0
- package/dist/consumer-integration/adapters/node-consumer-restoration-selection.d.ts.map +1 -0
- package/dist/consumer-integration/adapters/node-consumer-restoration-selection.js +35 -0
- package/dist/consumer-integration/adapters/node-consumer-restoration-selection.js.map +1 -0
- package/dist/consumer-integration/adapters/node-consumer-restoration.d.ts +12 -0
- package/dist/consumer-integration/adapters/node-consumer-restoration.d.ts.map +1 -0
- package/dist/consumer-integration/adapters/node-consumer-restoration.js +102 -0
- package/dist/consumer-integration/adapters/node-consumer-restoration.js.map +1 -0
- package/dist/consumer-integration/adapters/node-consumer-upgrade-sandbox.d.ts +33 -5
- package/dist/consumer-integration/adapters/node-consumer-upgrade-sandbox.d.ts.map +1 -1
- package/dist/consumer-integration/adapters/node-consumer-upgrade-sandbox.js +111 -106
- package/dist/consumer-integration/adapters/node-consumer-upgrade-sandbox.js.map +1 -1
- package/dist/consumer-integration/adapters/node-consumer-upgrade-source-proof.d.ts +20 -0
- package/dist/consumer-integration/adapters/node-consumer-upgrade-source-proof.d.ts.map +1 -0
- package/dist/consumer-integration/adapters/node-consumer-upgrade-source-proof.js +89 -0
- package/dist/consumer-integration/adapters/node-consumer-upgrade-source-proof.js.map +1 -0
- package/dist/consumer-integration/adapters/node-consumer-upgrade-target.d.ts +11 -0
- package/dist/consumer-integration/adapters/node-consumer-upgrade-target.d.ts.map +1 -0
- package/dist/consumer-integration/adapters/node-consumer-upgrade-target.js +60 -0
- package/dist/consumer-integration/adapters/node-consumer-upgrade-target.js.map +1 -0
- package/dist/consumer-integration/adapters/pnpm-lockfile-policy-v1.d.ts +1 -1
- package/dist/consumer-integration/adapters/pnpm-lockfile-policy-v1.d.ts.map +1 -1
- package/dist/consumer-integration/adapters/pnpm-lockfile-policy-v1.js +2 -3
- package/dist/consumer-integration/adapters/pnpm-lockfile-policy-v1.js.map +1 -1
- package/dist/consumer-integration/adapters/pnpm-lockfile-validator-v1.d.ts +19 -0
- package/dist/consumer-integration/adapters/pnpm-lockfile-validator-v1.d.ts.map +1 -1
- package/dist/consumer-integration/adapters/pnpm-lockfile-validator-v1.js +184 -44
- package/dist/consumer-integration/adapters/pnpm-lockfile-validator-v1.js.map +1 -1
- package/dist/consumer-integration/adapters/pnpm-lockfile-validator-v2.d.ts +4 -0
- package/dist/consumer-integration/adapters/pnpm-lockfile-validator-v2.d.ts.map +1 -0
- package/dist/consumer-integration/adapters/pnpm-lockfile-validator-v2.js +64 -0
- package/dist/consumer-integration/adapters/pnpm-lockfile-validator-v2.js.map +1 -0
- package/dist/consumer-integration/adapters/pnpm-manifest-adapter-v1.d.ts +19 -2
- package/dist/consumer-integration/adapters/pnpm-manifest-adapter-v1.d.ts.map +1 -1
- package/dist/consumer-integration/adapters/pnpm-manifest-adapter-v1.js +65 -18
- package/dist/consumer-integration/adapters/pnpm-manifest-adapter-v1.js.map +1 -1
- package/dist/consumer-integration/adapters/pnpm-manifest-adapter-v2.d.ts +13 -0
- package/dist/consumer-integration/adapters/pnpm-manifest-adapter-v2.d.ts.map +1 -0
- package/dist/consumer-integration/adapters/pnpm-manifest-adapter-v2.js +37 -0
- package/dist/consumer-integration/adapters/pnpm-manifest-adapter-v2.js.map +1 -0
- package/dist/consumer-integration/adapters/pnpm-runtime-closure-v1.d.ts +7 -0
- package/dist/consumer-integration/adapters/pnpm-runtime-closure-v1.d.ts.map +1 -1
- package/dist/consumer-integration/adapters/pnpm-runtime-closure-v1.js +12 -3
- package/dist/consumer-integration/adapters/pnpm-runtime-closure-v1.js.map +1 -1
- package/dist/consumer-integration/adapters/pnpm-runtime-closure-v2.d.ts +3 -0
- package/dist/consumer-integration/adapters/pnpm-runtime-closure-v2.d.ts.map +1 -0
- package/dist/consumer-integration/adapters/pnpm-runtime-closure-v2.js +11 -0
- package/dist/consumer-integration/adapters/pnpm-runtime-closure-v2.js.map +1 -0
- package/dist/consumer-integration/application/model/consumer-restoration.d.ts +76 -0
- package/dist/consumer-integration/application/model/consumer-restoration.d.ts.map +1 -0
- package/dist/consumer-integration/application/model/consumer-restoration.js +2 -0
- package/dist/consumer-integration/application/model/consumer-restoration.js.map +1 -0
- package/dist/consumer-integration/application/policies/consumer-integration-assets.d.ts +19 -3
- package/dist/consumer-integration/application/policies/consumer-integration-assets.d.ts.map +1 -1
- package/dist/consumer-integration/application/policies/consumer-integration-assets.js +38 -4
- package/dist/consumer-integration/application/policies/consumer-integration-assets.js.map +1 -1
- package/dist/consumer-integration/application/policies/consumer-integration-desired-state.d.ts +3 -1
- package/dist/consumer-integration/application/policies/consumer-integration-desired-state.d.ts.map +1 -1
- package/dist/consumer-integration/application/policies/consumer-integration-desired-state.js +87 -0
- package/dist/consumer-integration/application/policies/consumer-integration-desired-state.js.map +1 -1
- package/dist/consumer-integration/application/policies/consumer-restoration-proof.d.ts +12 -0
- package/dist/consumer-integration/application/policies/consumer-restoration-proof.d.ts.map +1 -0
- package/dist/consumer-integration/application/policies/consumer-restoration-proof.js +123 -0
- package/dist/consumer-integration/application/policies/consumer-restoration-proof.js.map +1 -0
- package/dist/consumer-integration/application/policies/qualified-docs-cohort-v2.d.ts +13 -0
- package/dist/consumer-integration/application/policies/qualified-docs-cohort-v2.d.ts.map +1 -0
- package/dist/consumer-integration/application/policies/qualified-docs-cohort-v2.js +38 -0
- package/dist/consumer-integration/application/policies/qualified-docs-cohort-v2.js.map +1 -0
- package/dist/consumer-integration/application/ports/consumer-integration-lifecycle.d.ts +3 -2
- package/dist/consumer-integration/application/ports/consumer-integration-lifecycle.d.ts.map +1 -1
- package/dist/consumer-integration/application/ports/consumer-integration-planners.d.ts +4 -4
- package/dist/consumer-integration/application/ports/consumer-integration-planners.d.ts.map +1 -1
- package/dist/consumer-integration/application/ports/consumer-restoration.d.ts +24 -0
- package/dist/consumer-integration/application/ports/consumer-restoration.d.ts.map +1 -0
- package/dist/consumer-integration/application/ports/consumer-restoration.js +2 -0
- package/dist/consumer-integration/application/ports/consumer-restoration.js.map +1 -0
- package/dist/consumer-integration/application/ports/consumer-upgrade.d.ts +44 -6
- package/dist/consumer-integration/application/ports/consumer-upgrade.d.ts.map +1 -1
- package/dist/consumer-integration/application/use-cases/compile-consumer-integration-v3.d.ts +39 -0
- package/dist/consumer-integration/application/use-cases/compile-consumer-integration-v3.d.ts.map +1 -0
- package/dist/consumer-integration/application/use-cases/compile-consumer-integration-v3.js +284 -0
- package/dist/consumer-integration/application/use-cases/compile-consumer-integration-v3.js.map +1 -0
- package/dist/consumer-integration/application/use-cases/plan-consumer-integration.d.ts +2 -2
- package/dist/consumer-integration/application/use-cases/plan-consumer-integration.d.ts.map +1 -1
- package/dist/consumer-integration/application/use-cases/plan-consumer-integration.js +23 -153
- package/dist/consumer-integration/application/use-cases/plan-consumer-integration.js.map +1 -1
- package/dist/consumer-integration/application/use-cases/run-consumer-integration.d.ts.map +1 -1
- package/dist/consumer-integration/application/use-cases/run-consumer-integration.js +10 -6
- package/dist/consumer-integration/application/use-cases/run-consumer-integration.js.map +1 -1
- package/dist/consumer-integration/application/use-cases/upgrade-consumer-integration.d.ts +11 -3
- package/dist/consumer-integration/application/use-cases/upgrade-consumer-integration.d.ts.map +1 -1
- package/dist/consumer-integration/application/use-cases/upgrade-consumer-integration.js +188 -39
- package/dist/consumer-integration/application/use-cases/upgrade-consumer-integration.js.map +1 -1
- package/dist/consumer-integration/composition/consumer-integration-cli.d.ts.map +1 -1
- package/dist/consumer-integration/composition/consumer-integration-cli.js +85 -15
- package/dist/consumer-integration/composition/consumer-integration-cli.js.map +1 -1
- package/dist/consumer-integration/composition/consumer-integration-planner.d.ts +6 -2
- package/dist/consumer-integration/composition/consumer-integration-planner.d.ts.map +1 -1
- package/dist/consumer-integration/composition/consumer-integration-planner.js +40 -3
- package/dist/consumer-integration/composition/consumer-integration-planner.js.map +1 -1
- package/dist/consumer-integration/composition/node-consumer-integration.d.ts +12 -0
- package/dist/consumer-integration/composition/node-consumer-integration.d.ts.map +1 -1
- package/dist/consumer-integration/composition/node-consumer-integration.js +17 -1
- package/dist/consumer-integration/composition/node-consumer-integration.js.map +1 -1
- package/dist/consumer-integration/composition/qualification-v3-boundary.d.ts +20 -0
- package/dist/consumer-integration/composition/qualification-v3-boundary.d.ts.map +1 -0
- package/dist/consumer-integration/composition/qualification-v3-boundary.js +29 -0
- package/dist/consumer-integration/composition/qualification-v3-boundary.js.map +1 -0
- package/dist/consumer-integration/domain/model.d.ts +61 -0
- package/dist/consumer-integration/domain/model.d.ts.map +1 -1
- package/dist/consumer-integration/generated/canonical-assets.d.ts +3 -2
- package/dist/consumer-integration/generated/canonical-assets.d.ts.map +1 -1
- package/dist/consumer-integration/generated/canonical-assets.js +3 -2
- package/dist/consumer-integration/generated/canonical-assets.js.map +1 -1
- package/dist/consumer-integration/index.d.ts +3 -1
- package/dist/consumer-integration/index.d.ts.map +1 -1
- package/dist/consumer-integration/index.js +1 -0
- package/dist/consumer-integration/index.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/qualification/index.d.ts +6 -0
- package/dist/qualification/index.d.ts.map +1 -1
- package/dist/qualification/index.js +3 -0
- package/dist/qualification/index.js.map +1 -1
- package/dist/qualification/qualification-v3-authority.d.ts +14 -0
- package/dist/qualification/qualification-v3-authority.d.ts.map +1 -0
- package/dist/qualification/qualification-v3-authority.js +5 -0
- package/dist/qualification/qualification-v3-authority.js.map +1 -0
- package/dist/qualification/qualification-v3-observer.d.ts +7 -0
- package/dist/qualification/qualification-v3-observer.d.ts.map +1 -0
- package/dist/qualification/qualification-v3-observer.js +22 -0
- package/dist/qualification/qualification-v3-observer.js.map +1 -0
- package/dist/qualification/qualification-v3-runner.d.ts +7 -0
- package/dist/qualification/qualification-v3-runner.d.ts.map +1 -0
- package/dist/qualification/qualification-v3-runner.js +95 -0
- package/dist/qualification/qualification-v3-runner.js.map +1 -0
- package/dist/qualification/v3-contract.d.ts +58 -0
- package/dist/qualification/v3-contract.d.ts.map +1 -0
- package/dist/qualification/v3-contract.js +2 -0
- package/dist/qualification/v3-contract.js.map +1 -0
- package/package.json +3 -3
- package/schemas/docs-consumer-integration-profile/v3.schema.json +68 -0
- package/schemas/docs-consumer-managed-state/v2.schema.json +120 -0
- package/schemas/docs-consumer-restoration-execution/v1.schema.json +124 -0
- package/schemas/docs-consumer-upgrade-execution/v1.schema.json +39 -3
- package/schemas/docs-protocol-qualification-receipt/v3.schema.json +118 -0
- package/schemas/qualified-docs-cohort/v2.schema.json +149 -0
- package/skills/docs/SKILL.md +8 -6
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { isNode, parseDocument, visit } from "yaml";
|
|
2
|
+
import { requireRestoration, restorationJson } from "../application/policies/consumer-restoration-proof.js";
|
|
3
|
+
import { assertQualifiedPnpmLockfileV1 } from "./pnpm-lockfile-validator-v1.js";
|
|
4
|
+
import { assertQualifiedPnpmLockfileV2 } from "./pnpm-lockfile-validator-v2.js";
|
|
5
|
+
const managedRoots = new Set(["@agent-teams/docs-protocol", "@agent-teams/engineering-foundation", "@agent-teams/docs-protocol-agent-teams"]);
|
|
6
|
+
const sections = ["dependencies", "devDependencies", "optionalDependencies"];
|
|
7
|
+
function record(value) {
|
|
8
|
+
requireRestoration(value !== null && typeof value === "object" && !Array.isArray(value), "invalid lock mapping.");
|
|
9
|
+
return value;
|
|
10
|
+
}
|
|
11
|
+
function parse(bytes) {
|
|
12
|
+
const document = parseDocument(new TextDecoder("utf-8", { fatal: true }).decode(bytes), { uniqueKeys: true });
|
|
13
|
+
requireRestoration(document.errors.length === 0, "invalid lock YAML.");
|
|
14
|
+
const comments = [document.commentBefore, document.comment].filter((value) => typeof value === "string");
|
|
15
|
+
visit(document, (_key, node) => {
|
|
16
|
+
if (!isNode(node)) {
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
for (const value of [node.commentBefore, node.comment]) {
|
|
20
|
+
if (typeof value === "string") {
|
|
21
|
+
comments.push(value);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
return { value: record(document.toJS({ maxAliasCount: 0 })), comments: comments.toSorted() };
|
|
26
|
+
}
|
|
27
|
+
function snapshotLocator(lock, name, version) {
|
|
28
|
+
// pnpm stores a foreign alias resolution as its target locator, including any peer context.
|
|
29
|
+
return Object.hasOwn(record(lock["snapshots"]), version) ? version : `${name}@${version}`;
|
|
30
|
+
}
|
|
31
|
+
function closure(lock, roots) {
|
|
32
|
+
const snapshots = record(lock["snapshots"]);
|
|
33
|
+
const visited = new Set();
|
|
34
|
+
const pending = [...roots];
|
|
35
|
+
while (pending.length > 0) {
|
|
36
|
+
const key = pending.pop();
|
|
37
|
+
if (visited.has(key)) {
|
|
38
|
+
continue;
|
|
39
|
+
}
|
|
40
|
+
requireRestoration(visited.size < 8192, "lock scope exceeds bounded graph.");
|
|
41
|
+
// Unrelated workspace/link dependencies remain verbatim in their importer.
|
|
42
|
+
if (!Object.hasOwn(snapshots, key)) {
|
|
43
|
+
continue;
|
|
44
|
+
}
|
|
45
|
+
visited.add(key);
|
|
46
|
+
const snapshot = record(snapshots[key]);
|
|
47
|
+
for (const section of ["dependencies", "optionalDependencies"]) {
|
|
48
|
+
for (const [name, version] of Object.entries(record(snapshot[section] ?? {}))) {
|
|
49
|
+
requireRestoration(typeof version === "string", "invalid lock resolution.");
|
|
50
|
+
pending.push(snapshotLocator(lock, name, version));
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return visited;
|
|
55
|
+
}
|
|
56
|
+
function nonOwnedProjection(lock) {
|
|
57
|
+
const copy = structuredClone(lock);
|
|
58
|
+
const importers = record(copy["importers"]);
|
|
59
|
+
const owned = [];
|
|
60
|
+
const foreign = [];
|
|
61
|
+
for (const [path, rawImporter] of Object.entries(importers)) {
|
|
62
|
+
const importer = record(rawImporter);
|
|
63
|
+
for (const section of sections) {
|
|
64
|
+
const entries = record(importer[section] ?? {});
|
|
65
|
+
for (const [name, value] of Object.entries(entries)) {
|
|
66
|
+
const binding = record(value);
|
|
67
|
+
requireRestoration(typeof binding["version"] === "string", "invalid importer resolution.");
|
|
68
|
+
const isOwned = path === "." && section === "devDependencies" && managedRoots.has(name);
|
|
69
|
+
(isOwned ? owned : foreign).push(snapshotLocator(lock, name, binding["version"]));
|
|
70
|
+
if (isOwned) {
|
|
71
|
+
delete entries[name];
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
// pnpm removes empty dependency sections; normalize only this structural difference.
|
|
75
|
+
if (Object.keys(entries).length === 0) {
|
|
76
|
+
delete importer[section];
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
const managed = closure(lock, owned);
|
|
81
|
+
const preserved = closure(lock, foreign);
|
|
82
|
+
const preservedPackages = new Set([...preserved].map((key) => key.split("(", 1)[0]));
|
|
83
|
+
const snapshots = record(copy["snapshots"]);
|
|
84
|
+
const packages = record(copy["packages"]);
|
|
85
|
+
for (const key of managed) {
|
|
86
|
+
if (!preserved.has(key)) {
|
|
87
|
+
delete snapshots[key];
|
|
88
|
+
}
|
|
89
|
+
const physical = key.split("(", 1)[0];
|
|
90
|
+
if (!preservedPackages.has(physical)) {
|
|
91
|
+
delete packages[physical];
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
return copy;
|
|
95
|
+
}
|
|
96
|
+
export function assertRestorationLockScope(before, after, source, target) {
|
|
97
|
+
// Existing qualification validates exact coordinates, registry provenance, edges and closure digests.
|
|
98
|
+
assertQualifiedPnpmLockfileV1(before, source);
|
|
99
|
+
assertQualifiedPnpmLockfileV2(after, target);
|
|
100
|
+
const sourceLock = parse(before), targetLock = parse(after);
|
|
101
|
+
requireRestoration(restorationJson(sourceLock.comments) === restorationJson(targetLock.comments), "lock migration changes consumer comments.");
|
|
102
|
+
requireRestoration(restorationJson(nonOwnedProjection(sourceLock.value)) === restorationJson(nonOwnedProjection(targetLock.value)), "lock migration changes non-owned policy, importers, dependencies or package graphs.");
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=node-consumer-restoration-lock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-consumer-restoration-lock.js","sourceRoot":"","sources":["../../../src/consumer-integration/adapters/node-consumer-restoration-lock.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { KnownFileTransactionPlanV1 } from "@agent-teams/repository-mutation";
|
|
2
|
+
import type { ConsumerIntegrationDesiredStateV1, QualifiedDocsCohortBindingV2 } from "../domain/model.js";
|
|
3
|
+
export declare function assertRestorationManagedEffects(input: {
|
|
4
|
+
readonly current: ConsumerIntegrationDesiredStateV1;
|
|
5
|
+
readonly target: QualifiedDocsCohortBindingV2;
|
|
6
|
+
readonly plan: KnownFileTransactionPlanV1;
|
|
7
|
+
readonly originals: ReadonlyMap<string, Buffer>;
|
|
8
|
+
}): Promise<void>;
|
|
9
|
+
//# sourceMappingURL=node-consumer-restoration-scope.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-consumer-restoration-scope.d.ts","sourceRoot":"","sources":["../../../src/consumer-integration/adapters/node-consumer-restoration-scope.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,kCAAkC,CAAC;AACnF,OAAO,KAAK,EAAE,iCAAiC,EAAqC,4BAA4B,EAAE,MAAM,oBAAoB,CAAC;AAc7I,wBAAsB,+BAA+B,CAAC,KAAK,EAAE;IAC3D,QAAQ,CAAC,OAAO,EAAE,iCAAiC,CAAC;IACpD,QAAQ,CAAC,MAAM,EAAE,4BAA4B,CAAC;IAC9C,QAAQ,CAAC,IAAI,EAAE,0BAA0B,CAAC;IAC1C,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjD,GAAG,OAAO,CAAC,IAAI,CAAC,CA4DhB"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { requireRestoration, restorationJson } from "../application/policies/consumer-restoration-proof.js";
|
|
2
|
+
import { CANONICAL_DOCS_SKILL_V2, canonicalCallerWorkflow, canonicalDocsScriptsDigest, canonicalManagedRoute, canonicalManagedState, describeCanonicalConsumerAssets, digestBytes } from "../application/policies/consumer-integration-assets.js";
|
|
3
|
+
import { projectConsumerUpgradeFiles } from "./consumer-upgrade-file-projectors.js";
|
|
4
|
+
import { planAgentsRouteV1 } from "./agents-route-adapter-v1.js";
|
|
5
|
+
import { planPnpmManifestV2 } from "./pnpm-manifest-adapter-v2.js";
|
|
6
|
+
import { assertRestorationLockScope } from "./node-consumer-restoration-lock.js";
|
|
7
|
+
import { parseJsonRecord } from "./strict-json-record.js";
|
|
8
|
+
import { INTEGRATION_PROFILE_PATH } from "./node-consumer-repository-files.js";
|
|
9
|
+
// Git bytes and deterministic managed projections own scope, never a caller's Plan or receipt.
|
|
10
|
+
export async function assertRestorationManagedEffects(input) {
|
|
11
|
+
const { current, target, plan, originals } = input;
|
|
12
|
+
const original = (path) => {
|
|
13
|
+
const bytes = originals.get(path);
|
|
14
|
+
requireRestoration(bytes !== undefined, `original managed file is missing: ${path}.`);
|
|
15
|
+
return bytes;
|
|
16
|
+
};
|
|
17
|
+
// Canonical evidence sorts object keys; JSON profile rendering retains the forward key order.
|
|
18
|
+
// Accept that order only after proving the entire candidate Cohort equals independent authority.
|
|
19
|
+
const profileOperation = plan.operations.find(({ path }) => path === INTEGRATION_PROFILE_PATH);
|
|
20
|
+
requireRestoration(profileOperation !== undefined, "migration lacks its profile replacement.");
|
|
21
|
+
const profileTarget = parseJsonRecord(Buffer.from(profileOperation.postimage.contentBase64, "base64").toString("utf8"))["cohort"];
|
|
22
|
+
requireRestoration(restorationJson(profileTarget) === restorationJson(target), "profile target differs from selected authority.");
|
|
23
|
+
const workspace = originals.get("pnpm-workspace.yaml");
|
|
24
|
+
const projected = await projectConsumerUpgradeFiles({
|
|
25
|
+
current, authority: { repository: "agent-teams-ai/.github", path: "governance/docs-qualified-cohorts.json", revision: "1".repeat(40), cohort: profileTarget },
|
|
26
|
+
manifest: original("package.json"), profile: original(INTEGRATION_PROFILE_PATH),
|
|
27
|
+
...(workspace === undefined ? {} : { workspace })
|
|
28
|
+
});
|
|
29
|
+
const desired = parseJsonRecord(Buffer.from(projected.profile).toString("utf8"));
|
|
30
|
+
const assets = describeCanonicalConsumerAssets(target);
|
|
31
|
+
requireRestoration(restorationJson(assets) === restorationJson(target.assets), "target assets differ from retained controller projections.");
|
|
32
|
+
const routeDigest = digestBytes(Buffer.from(canonicalManagedRoute(current.skillPath)));
|
|
33
|
+
const scriptsDigest = canonicalDocsScriptsDigest(current.profilePath);
|
|
34
|
+
const sourceState = canonicalManagedState(current, {
|
|
35
|
+
...current.cohort.assets, agentsRouteDigest: routeDigest, docsScriptsDigest: scriptsDigest
|
|
36
|
+
});
|
|
37
|
+
requireRestoration(digestBytes(original(current.skillPath)) === current.cohort.assets.skillDigest &&
|
|
38
|
+
digestBytes(original(current.callerWorkflowPath)) === current.cohort.assets.callerWorkflowDigest &&
|
|
39
|
+
original(current.managedStatePath).equals(Buffer.from(sourceState)), "source whole-file managed assets are not exact.");
|
|
40
|
+
const route = planAgentsRouteV1({ observation: { state: "file", bytes: original("AGENTS.md"), mode: 0o644 }, skillPath: current.skillPath });
|
|
41
|
+
const manifest = planPnpmManifestV2({ observation: { state: "file", bytes: projected.manifest, mode: 0o644 }, profilePath: current.profilePath, cohort: target });
|
|
42
|
+
requireRestoration(route.issues.length === 0 && manifest.issues.length === 0, "managed field projection is conflicted.");
|
|
43
|
+
const expected = new Map([
|
|
44
|
+
[INTEGRATION_PROFILE_PATH, projected.profile], ["package.json", manifest.postimage ?? projected.manifest],
|
|
45
|
+
["AGENTS.md", route.postimage ?? original("AGENTS.md")],
|
|
46
|
+
[current.skillPath, Buffer.from(CANONICAL_DOCS_SKILL_V2)],
|
|
47
|
+
[current.callerWorkflowPath, Buffer.from(canonicalCallerWorkflow(target))],
|
|
48
|
+
[current.managedStatePath, Buffer.from(canonicalManagedState(desired, {
|
|
49
|
+
...assets, agentsRouteDigest: routeDigest, docsScriptsDigest: scriptsDigest
|
|
50
|
+
}))]
|
|
51
|
+
]);
|
|
52
|
+
if (projected.targetWorkspace !== undefined) {
|
|
53
|
+
expected.set("pnpm-workspace.yaml", projected.targetWorkspace);
|
|
54
|
+
}
|
|
55
|
+
const lock = plan.operations.find(({ path }) => path === "pnpm-lock.yaml");
|
|
56
|
+
requireRestoration(lock !== undefined, "migration lacks its lock replacement.");
|
|
57
|
+
const targetLock = Buffer.from(lock.postimage.contentBase64, "base64");
|
|
58
|
+
assertRestorationLockScope(original("pnpm-lock.yaml"), targetLock, current, desired);
|
|
59
|
+
expected.set("pnpm-lock.yaml", targetLock);
|
|
60
|
+
const paths = [...expected].filter(([path, bytes]) => !original(path).equals(Buffer.from(bytes))).map(([path]) => path).toSorted();
|
|
61
|
+
requireRestoration(restorationJson(paths) === restorationJson(plan.operations.map(({ path }) => path).toSorted()), "Plan paths differ from the exact deterministic managed effects.");
|
|
62
|
+
for (const operation of plan.operations) {
|
|
63
|
+
requireRestoration(operation.precondition.state === "known-file" &&
|
|
64
|
+
operation.precondition.acceptedPreimages[0].mode === operation.postimage.mode &&
|
|
65
|
+
Buffer.from(operation.postimage.contentBase64, "base64").equals(Buffer.from(expected.get(operation.path))), `Plan exceeds managed field/block ownership at ${operation.path}.`);
|
|
66
|
+
}
|
|
67
|
+
const oldPin = parseJsonRecord(original("package.json").toString("utf8"))["packageManager"];
|
|
68
|
+
const newPin = parseJsonRecord(Buffer.from(expected.get("package.json")).toString("utf8"))["packageManager"];
|
|
69
|
+
requireRestoration(typeof oldPin === "string" && oldPin === newPin, "migration must preserve the real packageManager pin.");
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=node-consumer-restoration-scope.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-consumer-restoration-scope.js","sourceRoot":"","sources":["../../../src/consumer-integration/adapters/node-consumer-restoration-scope.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ConsumerRestorationIntent, ConsumerRestorationOptions, ConsumerRestorationPreparation } from "../application/model/consumer-restoration.js";
|
|
2
|
+
export declare function readRestorationEvidence(root: string, path: string, required?: boolean): Promise<import("../index.js").ConsumerIntegrationFileObservation>;
|
|
3
|
+
export declare function readRestorationPreparation(root: string, path: string, expect: string): Promise<ConsumerRestorationPreparation>;
|
|
4
|
+
export declare function readSelectedRestorationProof(root: string, options: Pick<ConsumerRestorationOptions, "proofPath" | "expect">): Promise<{
|
|
5
|
+
proof: import("../application/model/consumer-restoration.js").ConsumerRestorationProof;
|
|
6
|
+
digest: `sha256:${string}`;
|
|
7
|
+
}>;
|
|
8
|
+
export declare function assertRestorationBinding(root: string, proof: ConsumerRestorationIntent): Promise<import("../index.js").ConsumerIntegrationDesiredStateV1>;
|
|
9
|
+
//# sourceMappingURL=node-consumer-restoration-selection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-consumer-restoration-selection.d.ts","sourceRoot":"","sources":["../../../src/consumer-integration/adapters/node-consumer-restoration-selection.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,yBAAyB,EAAE,0BAA0B,EAAE,8BAA8B,EAAE,MAAM,8CAA8C,CAAC;AAW1J,wBAAsB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,UAAO,qEAGxF;AAED,wBAAsB,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,8BAA8B,CAAC,CAIpI;AAED,wBAAsB,4BAA4B,CAAC,IAAI,EAAE,MAAM,EAC7D,OAAO,EAAE,IAAI,CAAC,0BAA0B,EAAE,WAAW,GAAG,QAAQ,CAAC;;;GAOlE;AAED,wBAAsB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,yBAAyB,oEAe5F"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { basename, dirname } from "node:path";
|
|
2
|
+
import { inspectKnownFileTransactionBarrier, sha256Bytes } from "@agent-teams/repository-mutation";
|
|
3
|
+
import { MAXIMUM_RESTORATION_PROOF_BYTES, parseConsumerRestorationPreparation, parseConsumerRestorationProof, requireRestoration, restorationJson } from "../application/policies/consumer-restoration-proof.js";
|
|
4
|
+
import { assertRestorationPlanSource, externalRestorationPath, historicalRestorationProfile, restorationArtifacts, restorationConsumer, restorationGit } from "./node-consumer-restoration-evidence.js";
|
|
5
|
+
import { readStableConsumerFile } from "./node-consumer-repository-files.js";
|
|
6
|
+
export async function readRestorationEvidence(root, path, required = true) {
|
|
7
|
+
const selected = await externalRestorationPath(path, root);
|
|
8
|
+
return readStableConsumerFile(dirname(selected), basename(selected), MAXIMUM_RESTORATION_PROOF_BYTES, required);
|
|
9
|
+
}
|
|
10
|
+
export async function readRestorationPreparation(root, path, expect) {
|
|
11
|
+
const file = await readRestorationEvidence(root, path);
|
|
12
|
+
requireRestoration(file.state === "file", "preparation is missing.");
|
|
13
|
+
return parseConsumerRestorationPreparation(file.bytes, expect);
|
|
14
|
+
}
|
|
15
|
+
export async function readSelectedRestorationProof(root, options) {
|
|
16
|
+
const file = await readRestorationEvidence(root, options.proofPath);
|
|
17
|
+
requireRestoration(file.state === "file", "proof is missing.");
|
|
18
|
+
const proof = parseConsumerRestorationProof(file.bytes, options.expect);
|
|
19
|
+
const digest = sha256Bytes(file.bytes);
|
|
20
|
+
requireRestoration(proof.proofPath === options.proofPath, "final proof destination differs from the explicit retained path.");
|
|
21
|
+
return { proof, digest };
|
|
22
|
+
}
|
|
23
|
+
export async function assertRestorationBinding(root, proof) {
|
|
24
|
+
requireRestoration(restorationJson(await restorationConsumer(root, proof.consumer.repository)) === restorationJson(proof.consumer), "proof belongs to another consumer.");
|
|
25
|
+
requireRestoration(restorationJson(await restorationArtifacts(root)) === restorationJson({ controller: proof.controller, kernel: proof.kernel }), "retain the exact recorded controller and kernel package versions AND builds.");
|
|
26
|
+
requireRestoration((await inspectKnownFileTransactionBarrier({ consumerRoot: root })).state === "idle", "active transaction requires exact kernel recovery first.");
|
|
27
|
+
const source = await historicalRestorationProfile(root, proof.sourceRevision);
|
|
28
|
+
requireRestoration(restorationJson(source.cohort) === restorationJson(proof.sourceCohort) &&
|
|
29
|
+
restorationJson(source.repository) === restorationJson(proof.consumer.repository) &&
|
|
30
|
+
(await restorationGit(root, ["rev-parse", "HEAD"])).toString().trim() === proof.sourceRevision &&
|
|
31
|
+
(await restorationGit(root, ["rev-parse", `${proof.sourceRevision}^{tree}`])).toString().trim() === proof.sourceTree, "historical source binding changed.");
|
|
32
|
+
await assertRestorationPlanSource(root, proof.sourceRevision, source, proof.plan, proof.targetCohort);
|
|
33
|
+
return source;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=node-consumer-restoration-selection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-consumer-restoration-selection.js","sourceRoot":"","sources":["../../../src/consumer-integration/adapters/node-consumer-restoration-selection.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { applyKnownFileTransaction } from "@agent-teams/repository-mutation";
|
|
2
|
+
import type { ConsumerRestorationExecution, ConsumerRestorationOptions, ConsumerRestorationProof } from "../application/model/consumer-restoration.js";
|
|
3
|
+
import type { ConsumerRestorationAuthorityReader, ConsumerRestorationRecorder } from "../application/ports/consumer-restoration.js";
|
|
4
|
+
import type { ConsumerUpgradeSandboxPort } from "../application/ports/consumer-upgrade.js";
|
|
5
|
+
export declare function consumerRestorationRecorder(authority: ConsumerRestorationAuthorityReader): ConsumerRestorationRecorder;
|
|
6
|
+
export declare function assertRestorationAuthority(reader: ConsumerRestorationAuthorityReader, proof: Pick<ConsumerRestorationProof, "sourceCohort" | "targetCohort" | "consumer">): Promise<void>;
|
|
7
|
+
export declare function restoreNodeConsumerIntegration(options: ConsumerRestorationOptions, ports: {
|
|
8
|
+
readonly authority: ConsumerRestorationAuthorityReader;
|
|
9
|
+
readonly sandbox: ConsumerUpgradeSandboxPort;
|
|
10
|
+
readonly apply?: typeof applyKnownFileTransaction;
|
|
11
|
+
}): Promise<ConsumerRestorationExecution>;
|
|
12
|
+
//# sourceMappingURL=node-consumer-restoration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-consumer-restoration.d.ts","sourceRoot":"","sources":["../../../src/consumer-integration/adapters/node-consumer-restoration.ts"],"names":[],"mappings":"AACA,OAAO,EACL,yBAAyB,EAC1B,MAAM,kCAAkC,CAAC;AAI1C,OAAO,KAAK,EAAE,4BAA4B,EAAE,0BAA0B,EAAE,wBAAwB,EAAE,MAAM,8CAA8C,CAAC;AACvJ,OAAO,KAAK,EAAE,kCAAkC,EAAE,2BAA2B,EAAE,MAAM,8CAA8C,CAAC;AACpI,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,0CAA0C,CAAC;AAc3F,wBAAgB,2BAA2B,CAAC,SAAS,EAAE,kCAAkC,GAAG,2BAA2B,CA+BtH;AAUD,wBAAsB,0BAA0B,CAAC,MAAM,EAAE,kCAAkC,EACzF,KAAK,EAAE,IAAI,CAAC,wBAAwB,EAAE,cAAc,GAAG,cAAc,GAAG,UAAU,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAcpG;AAED,wBAAsB,8BAA8B,CAAC,OAAO,EAAE,0BAA0B,EAAE,KAAK,EAAE;IAC/F,QAAQ,CAAC,SAAS,EAAE,kCAAkC,CAAC;IACvD,QAAQ,CAAC,OAAO,EAAE,0BAA0B,CAAC;IAC7C,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,yBAAyB,CAAC;CACnD,GAAG,OAAO,CAAC,4BAA4B,CAAC,CAqCxC"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { lstat } from "node:fs/promises";
|
|
2
|
+
import { applyKnownFileTransaction, inspectKnownFileTransactionBarrier, sha256Bytes } from "@agent-teams/repository-mutation";
|
|
3
|
+
import { acquireMutationLease, claimMutation, observeMutationState, releaseMutationLease } from "@agent-teams/repository-mutation/node";
|
|
4
|
+
import { assertFullyReplacedReceipt, inverseRestorationPlan, parseConsumerRestorationPreparation, requireRestoration, restorationJson } from "../application/policies/consumer-restoration-proof.js";
|
|
5
|
+
import { assertRestorationImages, assertRestorationPlanSource, externalRestorationPath, historicalRestorationProfile, restorationArtifacts, restorationConsumer, restorationGit, restorationInventory, retainRestorationProof } from "./node-consumer-restoration-evidence.js";
|
|
6
|
+
import { nodeConsumerIntegrationInputReader } from "./node-consumer-integration-repository.js";
|
|
7
|
+
import { assertRestorationBinding, readSelectedRestorationProof } from "./node-consumer-restoration-selection.js";
|
|
8
|
+
import { canonicalConsumerRoot } from "./node-consumer-repository-files.js";
|
|
9
|
+
export function consumerRestorationRecorder(authority) {
|
|
10
|
+
return { prepare: async (options) => {
|
|
11
|
+
const consumer = await restorationConsumer(options.consumerRoot, options.current.repository);
|
|
12
|
+
const path = await externalRestorationPath(options.proofPath, consumer.root);
|
|
13
|
+
const exists = await lstat(path).then(() => true, (error) => {
|
|
14
|
+
if (error.code === "ENOENT") {
|
|
15
|
+
return false;
|
|
16
|
+
}
|
|
17
|
+
throw error;
|
|
18
|
+
});
|
|
19
|
+
requireRestoration(!exists, "proof destination already exists; preserve it.");
|
|
20
|
+
requireRestoration((await restorationGit(consumer.root, ["rev-parse", "HEAD"])).toString().trim() === options.sourceRevision &&
|
|
21
|
+
(await restorationGit(consumer.root, ["diff", "--no-ext-diff", "--no-textconv", options.sourceRevision, "--"])).length === 0, "restorable upgrade requires the exact unchanged source commit.");
|
|
22
|
+
const current = await historicalRestorationProfile(consumer.root, options.sourceRevision);
|
|
23
|
+
requireRestoration(restorationJson(current) === restorationJson(options.current), "source profile changed.");
|
|
24
|
+
inverseRestorationPlan(options.plan);
|
|
25
|
+
await assertRestorationPlanSource(consumer.root, options.sourceRevision, current, options.plan, options.target);
|
|
26
|
+
const pending = {
|
|
27
|
+
schemaVersion: 1, protocol: "agent-teams.managed-v1-restoration-preparation/v1",
|
|
28
|
+
sourceGeneration: 1, targetGeneration: 2, consumer, initialProofPath: path,
|
|
29
|
+
sourceRevision: options.sourceRevision,
|
|
30
|
+
sourceTree: (await restorationGit(consumer.root, ["rev-parse", `${options.sourceRevision}^{tree}`])).toString().trim(),
|
|
31
|
+
sourceInventoryDigest: await restorationInventory(consumer.root),
|
|
32
|
+
sourceCohort: current.cohort, targetCohort: options.target,
|
|
33
|
+
...await restorationArtifacts(consumer.root), plan: options.plan
|
|
34
|
+
};
|
|
35
|
+
await assertRestorationAuthority(authority, pending);
|
|
36
|
+
await assertRestorationImages(consumer.root, pending, true);
|
|
37
|
+
const bytes = Buffer.from(`${restorationJson(pending)}\n`);
|
|
38
|
+
parseConsumerRestorationPreparation(bytes, sha256Bytes(bytes));
|
|
39
|
+
return retainRestorationProof(await externalRestorationPath(`${path}.prepared`, consumer.root), pending);
|
|
40
|
+
} };
|
|
41
|
+
}
|
|
42
|
+
function isCentralRestorationAuthority(value) {
|
|
43
|
+
return value.repository === "agent-teams-ai/.github" && value.path === "governance/docs-qualified-cohorts.json";
|
|
44
|
+
}
|
|
45
|
+
function assertRestoreGenerations(source, target) {
|
|
46
|
+
requireRestoration(source === 2 && target === 1, "restore requires explicit source generation 2 and target generation 1.");
|
|
47
|
+
}
|
|
48
|
+
export async function assertRestorationAuthority(reader, proof) {
|
|
49
|
+
const authority = await reader.readRestoration({
|
|
50
|
+
source: proof.targetCohort, origin: proof.sourceCohort, repository: proof.consumer.repository
|
|
51
|
+
});
|
|
52
|
+
requireRestoration(authority.source.revision === authority.target.revision &&
|
|
53
|
+
isCentralRestorationAuthority(authority.source) && isCentralRestorationAuthority(authority.target) &&
|
|
54
|
+
/^(?!0{40}$)[0-9a-f]{40}$/u.test(authority.source.revision) &&
|
|
55
|
+
restorationJson(authority.source.cohort) === restorationJson(proof.targetCohort) &&
|
|
56
|
+
restorationJson(authority.target.cohort) === restorationJson(proof.sourceCohort) &&
|
|
57
|
+
proof.targetCohort.rollbackTo.includes(proof.sourceCohort.cohortId) &&
|
|
58
|
+
proof.targetCohort.upgradeFrom.includes(proof.sourceCohort.cohortId) &&
|
|
59
|
+
Date.parse(proof.sourceCohort.eligibleAfter) <= Date.now() &&
|
|
60
|
+
Date.parse(proof.targetCohort.eligibleAfter) <= Date.now(), "fresh protected authority must authorize the exact qualified original rollback edge.");
|
|
61
|
+
}
|
|
62
|
+
export async function restoreNodeConsumerIntegration(options, ports) {
|
|
63
|
+
assertRestoreGenerations(options.sourceGeneration, options.targetGeneration);
|
|
64
|
+
const root = await canonicalConsumerRoot(options.consumerRoot);
|
|
65
|
+
const { proof, digest } = await readSelectedRestorationProof(root, options);
|
|
66
|
+
requireRestoration(options.from === proof.targetCohort.cohortId && options.to === proof.sourceCohort.cohortId, "command must name the exact recorded source and target Cohorts.");
|
|
67
|
+
const source = await assertRestorationBinding(root, proof);
|
|
68
|
+
const inverse = inverseRestorationPlan(proof.plan);
|
|
69
|
+
let receipt;
|
|
70
|
+
const lease = await acquireMutationLease(root);
|
|
71
|
+
try {
|
|
72
|
+
await assertRestorationImages(root, proof, options.activationOnly === true);
|
|
73
|
+
const observed = await nodeConsumerIntegrationInputReader.read({ consumerRoot: root });
|
|
74
|
+
requireRestoration(restorationJson(observed.desired.cohort) ===
|
|
75
|
+
restorationJson(options.activationOnly === true ? proof.sourceCohort : proof.targetCohort), "current Cohort is stale or mixed.");
|
|
76
|
+
await assertRestorationAuthority(ports.authority, proof);
|
|
77
|
+
await assertRestorationImages(root, proof, options.activationOnly === true);
|
|
78
|
+
if (options.activationOnly !== true) {
|
|
79
|
+
const claim = await claimMutation(lease, await observeMutationState(lease), {
|
|
80
|
+
kind: "apply-known-file", planDigest: inverse.planDigest,
|
|
81
|
+
ownerArtifact: proof.kernel, kernelArtifact: proof.kernel
|
|
82
|
+
});
|
|
83
|
+
receipt = await (ports.apply ?? applyKnownFileTransaction)({ consumerRoot: root, plan: inverse, claim });
|
|
84
|
+
assertFullyReplacedReceipt(inverse, receipt);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
finally {
|
|
88
|
+
await releaseMutationLease(lease);
|
|
89
|
+
}
|
|
90
|
+
// The historical CLI requires an idle kernel barrier. No success is emitted before it passes.
|
|
91
|
+
await assertRestorationImages(root, proof, true);
|
|
92
|
+
await ports.sandbox.restoreAndVerifyV1({ consumerRoot: root, current: source });
|
|
93
|
+
await assertRestorationImages(root, proof, true);
|
|
94
|
+
requireRestoration((await inspectKnownFileTransactionBarrier({ consumerRoot: root })).state === "idle", "transaction appeared during historical activation.");
|
|
95
|
+
return {
|
|
96
|
+
schemaVersion: 1, command: "consumer.restore",
|
|
97
|
+
outcome: options.activationOnly === true ? "activated-v1" : "restored",
|
|
98
|
+
issues: [], proofDigest: digest, inversePlanDigest: inverse.planDigest,
|
|
99
|
+
...(receipt === undefined ? {} : { receipt })
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=node-consumer-restoration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-consumer-restoration.js","sourceRoot":"","sources":["../../../src/consumer-integration/adapters/node-consumer-restoration.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,19 +1,47 @@
|
|
|
1
|
-
import type { ConsumerUpgradeSandboxPort, PreparedConsumerUpgradeV1 } from "../application/ports/consumer-upgrade.js";
|
|
2
|
-
import type { ConsumerIntegrationDesiredStateV1, ConsumerUpgradeAuthorityV1 } from "../domain/model.js";
|
|
1
|
+
import type { ConsumerUpgradeManagedPreimagesV2, ConsumerUpgradeSandboxPort, PreparedConsumerUpgradeV1 } from "../application/ports/consumer-upgrade.js";
|
|
2
|
+
import type { ConsumerIntegrationDesiredStateV1, ConsumerIntegrationDesiredStateV3, ConsumerIntegrationSnapshot, ConsumerUpgradeAuthorityV1, ConsumerUpgradeAuthorityV2 } from "../domain/model.js";
|
|
3
3
|
export declare class NodeConsumerUpgradeSandbox implements ConsumerUpgradeSandboxPort {
|
|
4
|
-
|
|
4
|
+
private prepareGeneration;
|
|
5
|
+
prepareV1(options: {
|
|
5
6
|
readonly authority: ConsumerUpgradeAuthorityV1;
|
|
6
7
|
readonly consumerRoot: string;
|
|
7
8
|
readonly current: ConsumerIntegrationDesiredStateV1;
|
|
9
|
+
readonly expectedSourceRevision: string;
|
|
10
|
+
readonly expectedSourceSnapshot: ConsumerIntegrationSnapshot;
|
|
8
11
|
}): Promise<PreparedConsumerUpgradeV1>;
|
|
9
|
-
|
|
12
|
+
prepareV2(options: {
|
|
13
|
+
readonly authority: ConsumerUpgradeAuthorityV2;
|
|
14
|
+
readonly consumerRoot: string;
|
|
15
|
+
readonly current: ConsumerIntegrationDesiredStateV3;
|
|
16
|
+
readonly expectedSourceRevision: string;
|
|
17
|
+
readonly expectedSourceSnapshot: ConsumerIntegrationSnapshot;
|
|
18
|
+
readonly managedPreimages: ConsumerUpgradeManagedPreimagesV2;
|
|
19
|
+
}): Promise<PreparedConsumerUpgradeV1>;
|
|
20
|
+
prepareV1ToV2(options: {
|
|
21
|
+
readonly authority: ConsumerUpgradeAuthorityV2;
|
|
22
|
+
readonly consumerRoot: string;
|
|
23
|
+
readonly current: ConsumerIntegrationDesiredStateV1;
|
|
24
|
+
readonly expectedSourceRevision: string;
|
|
25
|
+
readonly expectedSourceSnapshot: ConsumerIntegrationSnapshot;
|
|
26
|
+
}): Promise<PreparedConsumerUpgradeV1>;
|
|
27
|
+
private activateAndVerifyGeneration;
|
|
28
|
+
activateAndVerifyV1(options: {
|
|
10
29
|
readonly authority: ConsumerUpgradeAuthorityV1;
|
|
11
30
|
readonly consumerRoot: string;
|
|
12
31
|
}): Promise<void>;
|
|
13
|
-
|
|
32
|
+
activateAndVerifyV2(options: {
|
|
33
|
+
readonly authority: ConsumerUpgradeAuthorityV2;
|
|
34
|
+
readonly consumerRoot: string;
|
|
35
|
+
}): Promise<void>;
|
|
36
|
+
private restoreAndVerifyGeneration;
|
|
37
|
+
restoreAndVerifyV1(options: {
|
|
14
38
|
readonly consumerRoot: string;
|
|
15
39
|
readonly current: ConsumerIntegrationDesiredStateV1;
|
|
16
40
|
}): Promise<void>;
|
|
41
|
+
restoreAndVerifyV2(options: {
|
|
42
|
+
readonly consumerRoot: string;
|
|
43
|
+
readonly current: ConsumerIntegrationDesiredStateV3;
|
|
44
|
+
}): Promise<void>;
|
|
17
45
|
}
|
|
18
46
|
export declare const nodeConsumerUpgradeSandbox: ConsumerUpgradeSandboxPort;
|
|
19
47
|
//# sourceMappingURL=node-consumer-upgrade-sandbox.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node-consumer-upgrade-sandbox.d.ts","sourceRoot":"","sources":["../../../src/consumer-integration/adapters/node-consumer-upgrade-sandbox.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"node-consumer-upgrade-sandbox.d.ts","sourceRoot":"","sources":["../../../src/consumer-integration/adapters/node-consumer-upgrade-sandbox.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EACV,iCAAiC,EACjC,0BAA0B,EAC1B,yBAAyB,EAC1B,MAAM,0CAA0C,CAAC;AAClD,OAAO,KAAK,EACV,iCAAiC,EACjC,iCAAiC,EACjC,2BAA2B,EAC3B,0BAA0B,EAC1B,0BAA0B,EAC3B,MAAM,oBAAoB,CAAC;AAoO5B,qBAAa,0BAA2B,YAAW,0BAA0B;YAC7D,iBAAiB;IAiIxB,SAAS,CAAC,OAAO,EAAE;QACxB,QAAQ,CAAC,SAAS,EAAE,0BAA0B,CAAC;QAC/C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;QAC9B,QAAQ,CAAC,OAAO,EAAE,iCAAiC,CAAC;QACpD,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;QACxC,QAAQ,CAAC,sBAAsB,EAAE,2BAA2B,CAAC;KAC9D,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAErC;IAEM,SAAS,CAAC,OAAO,EAAE;QACxB,QAAQ,CAAC,SAAS,EAAE,0BAA0B,CAAC;QAC/C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;QAC9B,QAAQ,CAAC,OAAO,EAAE,iCAAiC,CAAC;QACpD,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;QACxC,QAAQ,CAAC,sBAAsB,EAAE,2BAA2B,CAAC;QAC7D,QAAQ,CAAC,gBAAgB,EAAE,iCAAiC,CAAC;KAC9D,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAErC;IAEM,aAAa,CAAC,OAAO,EAAE;QAC5B,QAAQ,CAAC,SAAS,EAAE,0BAA0B,CAAC;QAC/C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;QAC9B,QAAQ,CAAC,OAAO,EAAE,iCAAiC,CAAC;QACpD,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;QACxC,QAAQ,CAAC,sBAAsB,EAAE,2BAA2B,CAAC;KAC9D,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAErC;YAEa,2BAA2B;IAQlC,mBAAmB,CAAC,OAAO,EAAE;QAClC,QAAQ,CAAC,SAAS,EAAE,0BAA0B,CAAC;QAC/C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;KAC/B,GAAG,OAAO,CAAC,IAAI,CAAC,CAEhB;IAEM,mBAAmB,CAAC,OAAO,EAAE;QAClC,QAAQ,CAAC,SAAS,EAAE,0BAA0B,CAAC;QAC/C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;KAC/B,GAAG,OAAO,CAAC,IAAI,CAAC,CAEhB;YAEa,0BAA0B;IAYjC,kBAAkB,CAAC,OAAO,EAAE;QACjC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;QAC9B,QAAQ,CAAC,OAAO,EAAE,iCAAiC,CAAC;KACrD,GAAG,OAAO,CAAC,IAAI,CAAC,CAEhB;IAEY,kBAAkB,CAAC,OAAO,EAAE;QACvC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;QAC9B,QAAQ,CAAC,OAAO,EAAE,iCAAiC,CAAC;KACrD,GAAG,OAAO,CAAC,IAAI,CAAC,CAIhB;CACF;AAED,eAAO,MAAM,0BAA0B,EAAE,0BACQ,CAAC"}
|