@agent-teams/docs-protocol-agent-teams 0.0.0 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +36 -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.map +1 -1
- package/dist/consumer-integration/adapters/consumer-integration-schema-validator.js +18 -3
- 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 +7 -4
- package/dist/consumer-integration/adapters/github-cohort-authority-reader.d.ts.map +1 -1
- package/dist/consumer-integration/adapters/github-cohort-authority-reader.js +100 -14
- package/dist/consumer-integration/adapters/github-cohort-authority-reader.js.map +1 -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 +54 -15
- package/dist/consumer-integration/adapters/node-consumer-integration-repository.js.map +1 -1
- 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 +107 -104
- 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 +55 -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/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/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-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 +1 -0
- 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 +163 -36
- 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 +8 -3
- 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 +6 -0
- package/dist/consumer-integration/composition/node-consumer-integration.d.ts.map +1 -1
- package/dist/consumer-integration/composition/node-consumer-integration.js +3 -0
- 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-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,361 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { QUALIFIED_DOCS_COHORT_V2_PACKAGES } from "../application/policies/qualified-docs-cohort-v2.js";
|
|
3
|
+
import { ConsumerIntegrationNodeError } from "./consumer-integration-node-error.js";
|
|
4
|
+
const GIT_SHA = /^(?!0{40}$)[0-9a-f]{40}$/u;
|
|
5
|
+
const SHA256 = /^sha256:(?!0{64}$)[0-9a-f]{64}$/u;
|
|
6
|
+
const PACKAGE_VERSION = /^[0-9]+\.[0-9]+\.[0-9]+(?:-[0-9A-Za-z]+(?:[.-][0-9A-Za-z]+)*)?$/u;
|
|
7
|
+
const PACKAGE_INTEGRITY = /^sha512-[A-Za-z0-9+/]{86}==$/u;
|
|
8
|
+
const TIMESTAMP = /^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}(?:\.[0-9]{3})?Z$/u;
|
|
9
|
+
const AUTHORITY_PATH = /^(?!\/)(?!.*\\)(?!.*(?:^|\/)\.{1,2}(?:\/|$))[^/]+(?:\/[^/]+)*$/u;
|
|
10
|
+
const AUTHORITY_REPOSITORY = /^agent-teams-ai\/[A-Za-z0-9_.-]+$/u;
|
|
11
|
+
const ADAPTER_PACKAGE = "@agent-teams/docs-protocol-agent-teams";
|
|
12
|
+
const V2_SCHEMA = Object.freeze({
|
|
13
|
+
consumer_integration: 3,
|
|
14
|
+
managed_state: 2,
|
|
15
|
+
docs_protocol: 1,
|
|
16
|
+
qualification_receipt: 3,
|
|
17
|
+
foundation_plan: 1,
|
|
18
|
+
foundation_journal: 1,
|
|
19
|
+
foundation_receipt: 1,
|
|
20
|
+
foundation_envelope: 5
|
|
21
|
+
});
|
|
22
|
+
const V2_DEPENDENCY_EDGES = Object.freeze([
|
|
23
|
+
["@agent-teams/document-authoring", "@agent-teams/repository-mutation"],
|
|
24
|
+
["@agent-teams/docs-protocol", "@agent-teams/document-authoring"],
|
|
25
|
+
["@agent-teams/docs-protocol", "@agent-teams/repository-mutation"],
|
|
26
|
+
["@agent-teams/docs-protocol-agent-teams", "@agent-teams/docs-protocol"],
|
|
27
|
+
["@agent-teams/docs-protocol-agent-teams", "@agent-teams/repository-mutation"],
|
|
28
|
+
["@agent-teams/engineering-foundation", "@agent-teams/document-authoring"],
|
|
29
|
+
["@agent-teams/engineering-foundation", "@agent-teams/repository-mutation"]
|
|
30
|
+
]);
|
|
31
|
+
const PACKAGE_KEYS = [
|
|
32
|
+
"name", "role", "version", "integrity", "registry", "published_at", "provenance"
|
|
33
|
+
];
|
|
34
|
+
const PROVENANCE_KEYS = [
|
|
35
|
+
"source_repository", "source_repository_id", "source_workflow", "source_commit",
|
|
36
|
+
"workflow_run_id", "workflow_run_attempt", "registry_attestation_url", "workflow_run_url",
|
|
37
|
+
"signature_verified"
|
|
38
|
+
];
|
|
39
|
+
const LIFECYCLE_STATES = new Set([
|
|
40
|
+
"PUBLISHED_UNQUALIFIED", "VERIFIED", "COOLDOWN", "QUALIFIED", "CANARY", "RECOMMENDED",
|
|
41
|
+
"SUPERSEDED", "SUPPORT_ENDED", "SUSPENDED", "WITHDRAWN"
|
|
42
|
+
]);
|
|
43
|
+
function invalid(message) {
|
|
44
|
+
throw new ConsumerIntegrationNodeError("DOCS_CONSUMER_AUTHORITY_INVALID", message);
|
|
45
|
+
}
|
|
46
|
+
function record(value, subject) {
|
|
47
|
+
if (typeof value !== "object" || value === null || Array.isArray(value) ||
|
|
48
|
+
Object.getPrototypeOf(value) !== Object.prototype) {
|
|
49
|
+
invalid(`${subject} must be one plain object.`);
|
|
50
|
+
}
|
|
51
|
+
return value;
|
|
52
|
+
}
|
|
53
|
+
function array(value, subject) {
|
|
54
|
+
if (!Array.isArray(value) || value.length > 4096) {
|
|
55
|
+
invalid(`${subject} must be one bounded array.`);
|
|
56
|
+
}
|
|
57
|
+
return value;
|
|
58
|
+
}
|
|
59
|
+
function hasExactKeys(value, keys) {
|
|
60
|
+
return Object.keys(value).toSorted().join("\u0000") === [...keys].toSorted().join("\u0000");
|
|
61
|
+
}
|
|
62
|
+
function assertPattern(value, pattern, subject) {
|
|
63
|
+
if (typeof value !== "string" || !pattern.test(value)) {
|
|
64
|
+
invalid(`${subject} is invalid.`);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
function assertPositiveInteger(value, subject) {
|
|
68
|
+
if (!Number.isSafeInteger(value) || Number(value) < 1) {
|
|
69
|
+
invalid(`${subject} must be one positive safe integer.`);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
function assertPath(value, subject) {
|
|
73
|
+
if (typeof value !== "string" || value.length > 1024 || !AUTHORITY_PATH.test(value)) {
|
|
74
|
+
invalid(`${subject} must be one bounded repository-relative path.`);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
function assertReferences(value, subject) {
|
|
78
|
+
const references = array(value, subject);
|
|
79
|
+
if (references.length < 1 || references.length > 64 ||
|
|
80
|
+
references.some((entry) => typeof entry !== "string" || entry.length < 1 ||
|
|
81
|
+
entry.length > 2048) || new Set(references).size !== references.length) {
|
|
82
|
+
invalid(`${subject} must contain 1-64 unique bounded references.`);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
function assertProvenance(value, packageName, version) {
|
|
86
|
+
const provenance = record(value, `${packageName} provenance`);
|
|
87
|
+
if (!hasExactKeys(provenance, PROVENANCE_KEYS) ||
|
|
88
|
+
provenance["source_repository"] !== "agent-teams-ai/engineering-foundation" ||
|
|
89
|
+
provenance["source_repository_id"] !== 1_316_243_988 ||
|
|
90
|
+
provenance["signature_verified"] !== true) {
|
|
91
|
+
invalid(`${packageName} provenance must match the closed current authority identity.`);
|
|
92
|
+
}
|
|
93
|
+
assertPath(provenance["source_workflow"], `${packageName} source workflow`);
|
|
94
|
+
assertPattern(provenance["source_commit"], GIT_SHA, `${packageName} source commit`);
|
|
95
|
+
assertPositiveInteger(provenance["workflow_run_id"], `${packageName} workflow run ID`);
|
|
96
|
+
assertPositiveInteger(provenance["workflow_run_attempt"], `${packageName} run attempt`);
|
|
97
|
+
const runId = provenance["workflow_run_id"];
|
|
98
|
+
if (provenance["registry_attestation_url"] !==
|
|
99
|
+
`https://registry.npmjs.org/-/npm/v1/attestations/${packageName.replaceAll("/", "%2f")}@${version}` || provenance["workflow_run_url"] !==
|
|
100
|
+
`https://github.com/agent-teams-ai/engineering-foundation/actions/runs/${runId}`) {
|
|
101
|
+
invalid(`${packageName} provenance URLs must bind its package release and workflow run.`);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
function assertPackages(source) {
|
|
105
|
+
const entries = array(source["packages"], "Cohort packages");
|
|
106
|
+
if (entries.length !== QUALIFIED_DOCS_COHORT_V2_PACKAGES.length) {
|
|
107
|
+
invalid("Qualified Cohort v2 must select exactly its five canonical packages.");
|
|
108
|
+
}
|
|
109
|
+
entries.forEach((value, index) => {
|
|
110
|
+
const coordinate = record(value, "Cohort package");
|
|
111
|
+
const expected = QUALIFIED_DOCS_COHORT_V2_PACKAGES[index];
|
|
112
|
+
if (!hasExactKeys(coordinate, PACKAGE_KEYS) || coordinate["name"] !== expected.name ||
|
|
113
|
+
coordinate["role"] !== (expected.direct ? "direct" : "transitive") ||
|
|
114
|
+
coordinate["registry"] !== "https://registry.npmjs.org/") {
|
|
115
|
+
invalid("Qualified Cohort v2 package order, identity, role, and keys must be exact.");
|
|
116
|
+
}
|
|
117
|
+
assertPattern(coordinate["version"], PACKAGE_VERSION, `${expected.name} version`);
|
|
118
|
+
assertPattern(coordinate["integrity"], PACKAGE_INTEGRITY, `${expected.name} integrity`);
|
|
119
|
+
assertPattern(coordinate["published_at"], TIMESTAMP, `${expected.name} published timestamp`);
|
|
120
|
+
assertProvenance(coordinate["provenance"], expected.name, coordinate["version"]);
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
function assertWorkflow(value) {
|
|
124
|
+
const workflow = record(value, "Cohort reusable workflow");
|
|
125
|
+
if (!hasExactKeys(workflow, [
|
|
126
|
+
"repository", "repository_id", "path", "revision", "blob_sha"
|
|
127
|
+
]) || workflow["repository"] !== "agent-teams-ai/.github" ||
|
|
128
|
+
workflow["repository_id"] !== 1_316_243_981 ||
|
|
129
|
+
workflow["path"] !== ".github/workflows/docs-protocol-check.yml") {
|
|
130
|
+
invalid("Qualified Cohort v2 reusable workflow authority must match its exact identity.");
|
|
131
|
+
}
|
|
132
|
+
assertPattern(workflow["revision"], GIT_SHA, "Workflow revision");
|
|
133
|
+
assertPattern(workflow["blob_sha"], GIT_SHA, "Workflow blob SHA");
|
|
134
|
+
}
|
|
135
|
+
function assertAsset(value, subject, caller) {
|
|
136
|
+
const asset = record(value, subject);
|
|
137
|
+
const keys = caller
|
|
138
|
+
? ["package", "path", "digest", "rendered_digest"]
|
|
139
|
+
: ["package", "path", "digest"];
|
|
140
|
+
if (!hasExactKeys(asset, keys) || asset["package"] !== ADAPTER_PACKAGE) {
|
|
141
|
+
invalid(`${subject} must match its closed adapter-package asset shape.`);
|
|
142
|
+
}
|
|
143
|
+
assertPath(asset["path"], `${subject} path`);
|
|
144
|
+
assertPattern(asset["digest"], SHA256, `${subject} digest`);
|
|
145
|
+
if (caller) {
|
|
146
|
+
assertPattern(asset["rendered_digest"], SHA256, `${subject} rendered digest`);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
function assertAssets(value) {
|
|
150
|
+
const assets = record(value, "Cohort assets");
|
|
151
|
+
if (!hasExactKeys(assets, [
|
|
152
|
+
"skill", "caller_workflow", "asset_catalog", "transition_catalog"
|
|
153
|
+
])) {
|
|
154
|
+
invalid("Qualified Cohort v2 assets must match the closed four-entry shape.");
|
|
155
|
+
}
|
|
156
|
+
assertAsset(assets["skill"], "Cohort Skill asset", false);
|
|
157
|
+
assertAsset(assets["caller_workflow"], "Cohort caller workflow asset", true);
|
|
158
|
+
assertAsset(assets["asset_catalog"], "Cohort asset catalog", false);
|
|
159
|
+
assertAsset(assets["transition_catalog"], "Cohort transition catalog", false);
|
|
160
|
+
}
|
|
161
|
+
function assertRuntime(value) {
|
|
162
|
+
const runtime = record(value, "Cohort runtime");
|
|
163
|
+
const applyPlatforms = runtime["apply_platforms"];
|
|
164
|
+
const checkPlatforms = runtime["check_plan_platforms"];
|
|
165
|
+
if (!hasExactKeys(runtime, ["node", "pnpm", "apply_platforms", "check_plan_platforms"]) ||
|
|
166
|
+
runtime["node"] !== ">=24.18.0 <25" || runtime["pnpm"] !== ">=11.17.0 <12" ||
|
|
167
|
+
!Array.isArray(applyPlatforms) || applyPlatforms.join("\u0000") !== "linux\u0000macos" ||
|
|
168
|
+
!Array.isArray(checkPlatforms) ||
|
|
169
|
+
checkPlatforms.join("\u0000") !== "linux\u0000macos\u0000windows") {
|
|
170
|
+
invalid("Qualified Cohort v2 runtime must match the exact current platform contract.");
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
function assertRuntimeClosure(value) {
|
|
174
|
+
const closure = record(value, "Cohort runtime closure");
|
|
175
|
+
if (!hasExactKeys(closure, [
|
|
176
|
+
"schema_version", "domain", "package_manager", "lockfile_version", "package_count",
|
|
177
|
+
"projection_path", "digest"
|
|
178
|
+
]) || closure["schema_version"] !== 2 ||
|
|
179
|
+
closure["domain"] !== "agent-teams.docs-runtime-closure/v2" ||
|
|
180
|
+
closure["package_manager"] !== "pnpm@11.20.0" || closure["lockfile_version"] !== "9.0" ||
|
|
181
|
+
!Number.isSafeInteger(closure["package_count"]) || Number(closure["package_count"]) < 5 ||
|
|
182
|
+
Number(closure["package_count"]) > 2048) {
|
|
183
|
+
invalid("Qualified Cohort v2 runtime closure must match the closed current contract.");
|
|
184
|
+
}
|
|
185
|
+
assertPattern(closure["digest"], SHA256, "Runtime closure digest");
|
|
186
|
+
if (closure["projection_path"] !== `governance/docs-runtime-closures/sha256-${closure["digest"].slice("sha256:".length)}.json`) {
|
|
187
|
+
invalid("Qualified Cohort v2 runtime closure path must bind its digest.");
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
function assertCanaryRepositories(value) {
|
|
191
|
+
const canaries = array(value, "Cohort canary repositories");
|
|
192
|
+
if (canaries.length < 1 || canaries.length > 32) {
|
|
193
|
+
invalid("Qualified Cohort v2 must contain 1-32 canary repositories.");
|
|
194
|
+
}
|
|
195
|
+
canaries.forEach((entry) => {
|
|
196
|
+
const canary = record(entry, "Cohort canary repository");
|
|
197
|
+
if (!hasExactKeys(canary, ["repository_id", "repository"])) {
|
|
198
|
+
invalid("Qualified Cohort v2 canary repository keys must be exact.");
|
|
199
|
+
}
|
|
200
|
+
assertPositiveInteger(canary["repository_id"], "Canary repository ID");
|
|
201
|
+
assertPattern(canary["repository"], AUTHORITY_REPOSITORY, "Canary repository");
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
function assertSchemasAndEdges(source) {
|
|
205
|
+
const schemas = record(source["schemas"], "Cohort schemas");
|
|
206
|
+
const edges = array(source["dependency_edges"], "Cohort dependency edges");
|
|
207
|
+
if (!hasExactKeys(schemas, Object.keys(V2_SCHEMA)) ||
|
|
208
|
+
Object.entries(V2_SCHEMA).some(([key, value]) => schemas[key] !== value)) {
|
|
209
|
+
invalid("Qualified Cohort v2 schemas must match the exact authority shape.");
|
|
210
|
+
}
|
|
211
|
+
if (edges.length !== V2_DEPENDENCY_EDGES.length || edges.some((value, index) => {
|
|
212
|
+
const edge = record(value, "Cohort dependency edge");
|
|
213
|
+
return !hasExactKeys(edge, ["from", "to"]) ||
|
|
214
|
+
edge["from"] !== V2_DEPENDENCY_EDGES[index]?.[0] ||
|
|
215
|
+
edge["to"] !== V2_DEPENDENCY_EDGES[index]?.[1];
|
|
216
|
+
})) {
|
|
217
|
+
invalid("Qualified Cohort v2 dependency edges must match the canonical package graph.");
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
/** Validates every nested field admitted from the current raw Cohort v2 authority. */
|
|
221
|
+
export function assertCohortAuthorityV2(source) {
|
|
222
|
+
assertSchemasAndEdges(source);
|
|
223
|
+
assertPackages(source);
|
|
224
|
+
assertWorkflow(source["reusable_workflow"]);
|
|
225
|
+
assertAssets(source["assets"]);
|
|
226
|
+
assertRuntime(source["runtime"]);
|
|
227
|
+
assertRuntimeClosure(source["runtime_closure"]);
|
|
228
|
+
assertCanaryRepositories(source["canary_repositories"]);
|
|
229
|
+
assertReferences(source["evidence_references"], "Cohort evidence references");
|
|
230
|
+
if (array(source["upgrade_from"], "Cohort upgrade origins").length < 1) {
|
|
231
|
+
invalid("Qualified Cohort v2 must name at least one upgrade origin.");
|
|
232
|
+
}
|
|
233
|
+
assertDigest(source, "record_digest", "agent-teams.docs-qualified-cohort/v2");
|
|
234
|
+
}
|
|
235
|
+
function canonicalJson(value) {
|
|
236
|
+
if (value === null || typeof value === "boolean" || typeof value === "string") {
|
|
237
|
+
return JSON.stringify(value);
|
|
238
|
+
}
|
|
239
|
+
if (typeof value === "number" && Number.isSafeInteger(value)) {
|
|
240
|
+
return JSON.stringify(value);
|
|
241
|
+
}
|
|
242
|
+
if (Array.isArray(value)) {
|
|
243
|
+
return `[${value.map(canonicalJson).join(",")}]`;
|
|
244
|
+
}
|
|
245
|
+
const object = record(value, "Cohort canonical JSON");
|
|
246
|
+
return `{${Object.keys(object).toSorted().map((key) => `${JSON.stringify(key)}:${canonicalJson(object[key])}`).join(",")}}`;
|
|
247
|
+
}
|
|
248
|
+
function assertDigest(value, key, domain) {
|
|
249
|
+
const body = Object.fromEntries(Object.entries(value).filter(([name]) => name !== key));
|
|
250
|
+
const expected = `sha256:${createHash("sha256").update(canonicalJson({ domain, body })).digest("hex")}`;
|
|
251
|
+
if (value[key] !== expected) {
|
|
252
|
+
invalid(`Cohort ${key} does not bind its canonical body.`);
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
function assertCanaryBindings(event, source, qualifiedDigest) {
|
|
256
|
+
const declared = array(source["canary_repositories"], "Declared canaries")
|
|
257
|
+
.map((entry) => record(entry, "Declared canary"));
|
|
258
|
+
const evidence = array(event["canary_evidence"], "Canary evidence")
|
|
259
|
+
.map((entry) => record(entry, "Canary evidence"));
|
|
260
|
+
const ids = declared.map((entry) => entry["repository_id"]);
|
|
261
|
+
const names = declared.map((entry) => entry["repository"]);
|
|
262
|
+
if (new Set(ids).size !== ids.length || new Set(names).size !== names.length ||
|
|
263
|
+
evidence.length !== declared.length ||
|
|
264
|
+
new Set(evidence.map((entry) => entry["repository_id"])).size !== evidence.length) {
|
|
265
|
+
invalid("CANARY evidence must cover the exact unique declared repository set.");
|
|
266
|
+
}
|
|
267
|
+
for (const entry of evidence) {
|
|
268
|
+
const match = declared.find((candidate) => candidate["repository_id"] === entry["repository_id"]);
|
|
269
|
+
if (match === undefined || match["repository"] !== entry["repository"] ||
|
|
270
|
+
entry["observed_cohort_id"] !== source["cohort_id"] ||
|
|
271
|
+
entry["observed_record_digest"] !== source["record_digest"] ||
|
|
272
|
+
qualifiedDigest === undefined || entry["observed_event_digest"] !== qualifiedDigest) {
|
|
273
|
+
invalid("CANARY evidence must bind its declared repository, Cohort, record and QUALIFIED event.");
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
/** Global chain integrity precedes selection; only selected v2 evidence is authorized here. */
|
|
278
|
+
export function assertCohortEventChainV2(values, source) {
|
|
279
|
+
let previousDigest = null;
|
|
280
|
+
let qualifiedDigest;
|
|
281
|
+
for (const [index, value] of values.entries()) {
|
|
282
|
+
const event = record(value, "Cohort lifecycle event");
|
|
283
|
+
if (event["sequence"] !== index + 1 || event["previous_event_digest"] !== previousDigest) {
|
|
284
|
+
invalid("Cohort event sequence and predecessor must form one contiguous global chain.");
|
|
285
|
+
}
|
|
286
|
+
assertDigest(event, "event_digest", "agent-teams.docs-qualified-cohort-event/v1");
|
|
287
|
+
previousDigest = event["event_digest"];
|
|
288
|
+
if (event["cohort_id"] !== source["cohort_id"]) {
|
|
289
|
+
continue;
|
|
290
|
+
}
|
|
291
|
+
assertLifecycleEventV2(event);
|
|
292
|
+
if (event["state"] === "QUALIFIED") {
|
|
293
|
+
qualifiedDigest = event["event_digest"];
|
|
294
|
+
}
|
|
295
|
+
if (event["state"] === "CANARY") {
|
|
296
|
+
assertCanaryBindings(event, source, qualifiedDigest);
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
function assertCanaryEvidence(value) {
|
|
301
|
+
const evidence = record(value, "Cohort canary evidence");
|
|
302
|
+
if (!hasExactKeys(evidence, [
|
|
303
|
+
"repository_id", "repository", "merge_revision", "observed_cohort_id",
|
|
304
|
+
"observed_record_digest", "observed_event_digest", "required_context", "integration_id",
|
|
305
|
+
"conclusion", "check_run_id", "check_run_url", "workflow_run_id", "workflow_id",
|
|
306
|
+
"caller_workflow_path", "caller_workflow_digest"
|
|
307
|
+
]) || evidence["conclusion"] !== "success") {
|
|
308
|
+
invalid("Qualified Cohort v2 canary evidence must match its closed current shape.");
|
|
309
|
+
}
|
|
310
|
+
for (const [key, subject] of [
|
|
311
|
+
["repository_id", "repository ID"], ["integration_id", "integration ID"],
|
|
312
|
+
["check_run_id", "check run ID"], ["workflow_run_id", "workflow run ID"],
|
|
313
|
+
["workflow_id", "workflow ID"]
|
|
314
|
+
]) {
|
|
315
|
+
assertPositiveInteger(evidence[key], `Canary evidence ${subject}`);
|
|
316
|
+
}
|
|
317
|
+
assertPattern(evidence["repository"], AUTHORITY_REPOSITORY, "Canary evidence repository");
|
|
318
|
+
assertPattern(evidence["merge_revision"], GIT_SHA, "Canary evidence merge revision");
|
|
319
|
+
assertPattern(evidence["observed_record_digest"], SHA256, "Observed record digest");
|
|
320
|
+
assertPattern(evidence["observed_event_digest"], SHA256, "Observed event digest");
|
|
321
|
+
assertPattern(evidence["caller_workflow_digest"], SHA256, "Caller workflow digest");
|
|
322
|
+
if (typeof evidence["observed_cohort_id"] !== "string" ||
|
|
323
|
+
!/^[a-z0-9]+(?:[._-][a-z0-9]+)*$/u.test(evidence["observed_cohort_id"]) ||
|
|
324
|
+
typeof evidence["required_context"] !== "string" ||
|
|
325
|
+
evidence["required_context"].length < 1 || evidence["required_context"].length > 256 ||
|
|
326
|
+
typeof evidence["check_run_url"] !== "string" ||
|
|
327
|
+
!/^https:\/\/github\.com\/agent-teams-ai\/[A-Za-z0-9_.-]+\/actions\/runs\/[1-9][0-9]+(?:\/job\/[1-9][0-9]+)?$/u
|
|
328
|
+
.test(evidence["check_run_url"]) || typeof evidence["caller_workflow_path"] !== "string" ||
|
|
329
|
+
!/^\.github\/workflows\/[^/]+\.ya?ml$/u.test(evidence["caller_workflow_path"])) {
|
|
330
|
+
invalid("Qualified Cohort v2 canary evidence contains invalid bounded references.");
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
/** Validates selected lifecycle state before it can authorize a Cohort v2 projection. */
|
|
334
|
+
function assertLifecycleEventV2(event) {
|
|
335
|
+
if (!hasExactKeys(event, [
|
|
336
|
+
"sequence", "cohort_id", "state", "effective_at", "support_until",
|
|
337
|
+
"evidence_references", "canary_evidence", "previous_event_digest", "event_digest"
|
|
338
|
+
]) || !LIFECYCLE_STATES.has(event["state"])) {
|
|
339
|
+
invalid("Qualified Cohort v2 lifecycle events must match the closed current shape.");
|
|
340
|
+
}
|
|
341
|
+
assertPositiveInteger(event["sequence"], "Cohort lifecycle sequence");
|
|
342
|
+
assertPattern(event["effective_at"], TIMESTAMP, "Cohort lifecycle effective timestamp");
|
|
343
|
+
assertPattern(event["event_digest"], SHA256, "Cohort lifecycle event digest");
|
|
344
|
+
if (event["previous_event_digest"] !== null) {
|
|
345
|
+
assertPattern(event["previous_event_digest"], SHA256, "Previous lifecycle event digest");
|
|
346
|
+
}
|
|
347
|
+
assertReferences(event["evidence_references"], "Cohort lifecycle evidence references");
|
|
348
|
+
const canaryEvidence = array(event["canary_evidence"], "Cohort canary evidence");
|
|
349
|
+
if (canaryEvidence.length > 32 ||
|
|
350
|
+
(event["state"] === "CANARY" ? canaryEvidence.length < 1 : canaryEvidence.length !== 0)) {
|
|
351
|
+
invalid("Cohort lifecycle canary evidence does not match its state.");
|
|
352
|
+
}
|
|
353
|
+
canaryEvidence.forEach(assertCanaryEvidence);
|
|
354
|
+
if (event["state"] === "SUPERSEDED") {
|
|
355
|
+
assertPattern(event["support_until"], TIMESTAMP, "Cohort lifecycle support timestamp");
|
|
356
|
+
}
|
|
357
|
+
else if (event["support_until"] !== null) {
|
|
358
|
+
invalid("Only a SUPERSEDED Cohort lifecycle event may set support_until.");
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
//# sourceMappingURL=cohort-v2-authority-validator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cohort-v2-authority-validator.js","sourceRoot":"","sources":["../../../src/consumer-integration/adapters/cohort-v2-authority-validator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consumer-integration-schema-validator.d.ts","sourceRoot":"","sources":["../../../src/consumer-integration/adapters/consumer-integration-schema-validator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"consumer-integration-schema-validator.d.ts","sourceRoot":"","sources":["../../../src/consumer-integration/adapters/consumer-integration-schema-validator.ts"],"names":[],"mappings":"AAoEA,wBAAgB,sCAAsC,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBpF;AAED,wBAAgB,wCAAwC,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAEtF;AAED,wBAAgB,oCAAoC,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAElF"}
|
|
@@ -16,9 +16,15 @@ async function validator(id) {
|
|
|
16
16
|
ajv.addSchema(JSON.parse(plan));
|
|
17
17
|
ajv.addSchema(JSON.parse(mutationReceipt));
|
|
18
18
|
}
|
|
19
|
+
if (id === "docs-consumer-integration-profile-v3") {
|
|
20
|
+
const cohort = JSON.parse(await readFile(new URL("../../../schemas/qualified-docs-cohort/v2.schema.json", import.meta.url), "utf8"));
|
|
21
|
+
ajv.addSchema(cohort);
|
|
22
|
+
}
|
|
19
23
|
const schemaUrl = new URL(id === "docs-consumer-integration-profile-v2"
|
|
20
24
|
? "../../../schemas/docs-consumer-integration-profile/v2.schema.json"
|
|
21
|
-
:
|
|
25
|
+
: id === "docs-consumer-integration-profile-v3"
|
|
26
|
+
? "../../../schemas/docs-consumer-integration-profile/v3.schema.json"
|
|
27
|
+
: `../../../schemas/${id}/v1.schema.json`, import.meta.url);
|
|
22
28
|
return ajv.compile(JSON.parse(await readFile(schemaUrl, "utf8")));
|
|
23
29
|
})();
|
|
24
30
|
validators.set(id, loading);
|
|
@@ -34,13 +40,22 @@ async function assertSchema(id, value) {
|
|
|
34
40
|
.map(({ instancePath, message }) => `${instancePath || "/"} ${message ?? "is invalid"}`)
|
|
35
41
|
.join("; ")
|
|
36
42
|
.slice(0, 1000);
|
|
37
|
-
throw new TypeError(`${id}${
|
|
43
|
+
throw new TypeError(`${id}${/-v[23]$/u.test(id) ? "" : "/v1"} validation failed: ${problems}`);
|
|
38
44
|
}
|
|
39
45
|
export function assertConsumerIntegrationProfileSchema(value) {
|
|
40
46
|
const version = typeof value === "object" && value !== null && "schemaVersion" in value
|
|
41
47
|
? value.schemaVersion
|
|
42
48
|
: undefined;
|
|
43
|
-
|
|
49
|
+
if (version === 1) {
|
|
50
|
+
return assertSchema("docs-consumer-integration-profile", value);
|
|
51
|
+
}
|
|
52
|
+
if (version === 2) {
|
|
53
|
+
return assertSchema("docs-consumer-integration-profile-v2", value);
|
|
54
|
+
}
|
|
55
|
+
if (version === 3) {
|
|
56
|
+
return assertSchema("docs-consumer-integration-profile-v3", value);
|
|
57
|
+
}
|
|
58
|
+
return Promise.reject(new TypeError("docs-consumer-integration-profile schemaVersion must be exactly 1, 2, or 3."));
|
|
44
59
|
}
|
|
45
60
|
export function assertConsumerIntegrationExecutionSchema(value) {
|
|
46
61
|
return assertSchema("docs-consumer-integration-execution", value);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consumer-integration-schema-validator.js","sourceRoot":"","sources":["../../../src/consumer-integration/adapters/consumer-integration-schema-validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EAAE,OAAO,EAAyB,MAAM,kBAAkB,CAAC;AAElE,MAAM,UAAU,GAAG,IAAI,GAAG,EAAqC,CAAC;
|
|
1
|
+
{"version":3,"file":"consumer-integration-schema-validator.js","sourceRoot":"","sources":["../../../src/consumer-integration/adapters/consumer-integration-schema-validator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,12 @@
|
|
|
1
|
-
import type { QualifiedDocsCohortBindingV1 } from "../domain/model.js";
|
|
1
|
+
import type { ConsumerIntegrationDesiredStateV1, ConsumerIntegrationDesiredStateV3, ConsumerUpgradeAuthorityV1, ConsumerUpgradeAuthorityV2, QualifiedDocsCohortBindingV1, QualifiedDocsCohortBindingV2 } from "../domain/model.js";
|
|
2
2
|
export declare function projectConsumerIntegrationProfileV1(input: {
|
|
3
3
|
readonly bytes: Uint8Array;
|
|
4
4
|
readonly cohort: QualifiedDocsCohortBindingV1;
|
|
5
5
|
}): Promise<Uint8Array>;
|
|
6
|
+
export declare function projectConsumerIntegrationProfileV3(input: {
|
|
7
|
+
readonly bytes: Uint8Array;
|
|
8
|
+
readonly cohort: QualifiedDocsCohortBindingV2;
|
|
9
|
+
}): Promise<Uint8Array>;
|
|
6
10
|
export declare function projectPnpmWorkspaceCohortExclusionsV1(input: {
|
|
7
11
|
readonly bytes: Uint8Array;
|
|
8
12
|
readonly cohort: QualifiedDocsCohortBindingV1;
|
|
@@ -18,4 +22,39 @@ export declare function projectPnpmWorkspaceMigrationExclusionsV1(input: {
|
|
|
18
22
|
readonly source: QualifiedDocsCohortBindingV1;
|
|
19
23
|
readonly target: QualifiedDocsCohortBindingV1;
|
|
20
24
|
}): Uint8Array;
|
|
25
|
+
export declare function projectPnpmWorkspaceCohortExclusionsV2(input: {
|
|
26
|
+
readonly bytes: Uint8Array;
|
|
27
|
+
readonly cohort: QualifiedDocsCohortBindingV2;
|
|
28
|
+
}): Uint8Array;
|
|
29
|
+
export declare function projectPnpmWorkspaceMigrationExclusionsV2(input: {
|
|
30
|
+
readonly bytes: Uint8Array;
|
|
31
|
+
readonly source: QualifiedDocsCohortBindingV2;
|
|
32
|
+
readonly target: QualifiedDocsCohortBindingV2;
|
|
33
|
+
}): Uint8Array;
|
|
34
|
+
export type ConsumerUpgradeFileProjectionInput = {
|
|
35
|
+
readonly authority: ConsumerUpgradeAuthorityV2;
|
|
36
|
+
readonly current: ConsumerIntegrationDesiredStateV1;
|
|
37
|
+
readonly manifest: Uint8Array;
|
|
38
|
+
readonly profile: Uint8Array;
|
|
39
|
+
readonly workspace?: Uint8Array;
|
|
40
|
+
} | {
|
|
41
|
+
readonly authority: ConsumerUpgradeAuthorityV1;
|
|
42
|
+
readonly current: ConsumerIntegrationDesiredStateV1;
|
|
43
|
+
readonly manifest: Uint8Array;
|
|
44
|
+
readonly profile: Uint8Array;
|
|
45
|
+
readonly workspace?: Uint8Array;
|
|
46
|
+
} | {
|
|
47
|
+
readonly authority: ConsumerUpgradeAuthorityV2;
|
|
48
|
+
readonly current: ConsumerIntegrationDesiredStateV3;
|
|
49
|
+
readonly manifest: Uint8Array;
|
|
50
|
+
readonly profile: Uint8Array;
|
|
51
|
+
readonly workspace?: Uint8Array;
|
|
52
|
+
};
|
|
53
|
+
export interface ConsumerUpgradeFileProjection {
|
|
54
|
+
readonly manifest: Uint8Array;
|
|
55
|
+
readonly migrationWorkspace?: Uint8Array;
|
|
56
|
+
readonly profile: Uint8Array;
|
|
57
|
+
readonly targetWorkspace?: Uint8Array;
|
|
58
|
+
}
|
|
59
|
+
export declare function projectConsumerUpgradeFiles(input: ConsumerUpgradeFileProjectionInput): Promise<ConsumerUpgradeFileProjection>;
|
|
21
60
|
//# sourceMappingURL=consumer-upgrade-file-projectors.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consumer-upgrade-file-projectors.d.ts","sourceRoot":"","sources":["../../../src/consumer-integration/adapters/consumer-upgrade-file-projectors.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,4BAA4B,EAC7B,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"consumer-upgrade-file-projectors.d.ts","sourceRoot":"","sources":["../../../src/consumer-integration/adapters/consumer-upgrade-file-projectors.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,iCAAiC,EACjC,iCAAiC,EACjC,0BAA0B,EAC1B,0BAA0B,EAC1B,4BAA4B,EAC5B,4BAA4B,EAC7B,MAAM,oBAAoB,CAAC;AAuC5B,wBAAsB,mCAAmC,CAAC,KAAK,EAAE;IAC/D,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,4BAA4B,CAAC;CAC/C,GAAG,OAAO,CAAC,UAAU,CAAC,CAWtB;AAED,wBAAsB,mCAAmC,CAAC,KAAK,EAAE;IAC/D,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,4BAA4B,CAAC;CAC/C,GAAG,OAAO,CAAC,UAAU,CAAC,CAiBtB;AAkED,wBAAgB,sCAAsC,CAAC,KAAK,EAAE;IAC5D,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,4BAA4B,CAAC;CAC/C,GAAG,UAAU,CAwCb;AAED;;;;;GAKG;AACH,wBAAgB,yCAAyC,CAAC,KAAK,EAAE;IAC/D,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,4BAA4B,CAAC;IAC9C,QAAQ,CAAC,MAAM,EAAE,4BAA4B,CAAC;CAC/C,GAAG,UAAU,CAsBb;AAgDD,wBAAgB,sCAAsC,CAAC,KAAK,EAAE;IAC5D,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,4BAA4B,CAAC;CAC/C,GAAG,UAAU,CAKb;AAED,wBAAgB,yCAAyC,CAAC,KAAK,EAAE;IAC/D,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,4BAA4B,CAAC;IAC9C,QAAQ,CAAC,MAAM,EAAE,4BAA4B,CAAC;CAC/C,GAAG,UAAU,CAsBb;AA6BD,MAAM,MAAM,kCAAkC,GAC1C;IACE,QAAQ,CAAC,SAAS,EAAE,0BAA0B,CAAC;IAC/C,QAAQ,CAAC,OAAO,EAAE,iCAAiC,CAAC;IACpD,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAC7B,QAAQ,CAAC,SAAS,CAAC,EAAE,UAAU,CAAC;CACjC,GACD;IACE,QAAQ,CAAC,SAAS,EAAE,0BAA0B,CAAC;IAC/C,QAAQ,CAAC,OAAO,EAAE,iCAAiC,CAAC;IACpD,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAC7B,QAAQ,CAAC,SAAS,CAAC,EAAE,UAAU,CAAC;CACjC,GACD;IACE,QAAQ,CAAC,SAAS,EAAE,0BAA0B,CAAC;IAC/C,QAAQ,CAAC,OAAO,EAAE,iCAAiC,CAAC;IACpD,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAC7B,QAAQ,CAAC,SAAS,CAAC,EAAE,UAAU,CAAC;CACjC,CAAC;AAEN,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC;IAC9B,QAAQ,CAAC,kBAAkB,CAAC,EAAE,UAAU,CAAC;IACzC,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAC7B,QAAQ,CAAC,eAAe,CAAC,EAAE,UAAU,CAAC;CACvC;AAED,wBAAsB,2BAA2B,CAC/C,KAAK,EAAE,kCAAkC,GACxC,OAAO,CAAC,6BAA6B,CAAC,CAgFxC"}
|