@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.
Files changed (195) hide show
  1. package/CHANGELOG.md +50 -0
  2. package/README.md +27 -2
  3. package/assets/catalog.json +1 -1
  4. package/assets/history/sha256-8711dbd6109740857c69462d218071818317a62949f08ecf8abdc6d6b736321f/caller.yml +14 -0
  5. package/assets/history/sha256-f8da49344c3b0e9f31235de2826b1b9b392afb84515ace6af4fb5fe580e3a714/caller.yml +14 -0
  6. package/assets/transition-catalog.json +1 -1
  7. package/dist/composition/qualification-cli.d.ts.map +1 -1
  8. package/dist/composition/qualification-cli.js +19 -3
  9. package/dist/composition/qualification-cli.js.map +1 -1
  10. package/dist/consumer-integration/adapters/cohort-v2-authority-validator.d.ts +5 -0
  11. package/dist/consumer-integration/adapters/cohort-v2-authority-validator.d.ts.map +1 -0
  12. package/dist/consumer-integration/adapters/cohort-v2-authority-validator.js +361 -0
  13. package/dist/consumer-integration/adapters/cohort-v2-authority-validator.js.map +1 -0
  14. package/dist/consumer-integration/adapters/consumer-integration-schema-validator.d.ts +1 -0
  15. package/dist/consumer-integration/adapters/consumer-integration-schema-validator.d.ts.map +1 -1
  16. package/dist/consumer-integration/adapters/consumer-integration-schema-validator.js +22 -4
  17. package/dist/consumer-integration/adapters/consumer-integration-schema-validator.js.map +1 -1
  18. package/dist/consumer-integration/adapters/consumer-upgrade-file-projectors.d.ts +40 -1
  19. package/dist/consumer-integration/adapters/consumer-upgrade-file-projectors.d.ts.map +1 -1
  20. package/dist/consumer-integration/adapters/consumer-upgrade-file-projectors.js +227 -0
  21. package/dist/consumer-integration/adapters/consumer-upgrade-file-projectors.js.map +1 -1
  22. package/dist/consumer-integration/adapters/github-cohort-authority-reader.d.ts +17 -5
  23. package/dist/consumer-integration/adapters/github-cohort-authority-reader.d.ts.map +1 -1
  24. package/dist/consumer-integration/adapters/github-cohort-authority-reader.js +123 -16
  25. package/dist/consumer-integration/adapters/github-cohort-authority-reader.js.map +1 -1
  26. package/dist/consumer-integration/adapters/node-consumer-integration-repository.d.ts +2 -1
  27. package/dist/consumer-integration/adapters/node-consumer-integration-repository.d.ts.map +1 -1
  28. package/dist/consumer-integration/adapters/node-consumer-integration-repository.js +55 -16
  29. package/dist/consumer-integration/adapters/node-consumer-integration-repository.js.map +1 -1
  30. package/dist/consumer-integration/adapters/node-consumer-restoration-evidence.d.ts +38 -0
  31. package/dist/consumer-integration/adapters/node-consumer-restoration-evidence.d.ts.map +1 -0
  32. package/dist/consumer-integration/adapters/node-consumer-restoration-evidence.js +177 -0
  33. package/dist/consumer-integration/adapters/node-consumer-restoration-evidence.js.map +1 -0
  34. package/dist/consumer-integration/adapters/node-consumer-restoration-finalization.d.ts +10 -0
  35. package/dist/consumer-integration/adapters/node-consumer-restoration-finalization.d.ts.map +1 -0
  36. package/dist/consumer-integration/adapters/node-consumer-restoration-finalization.js +95 -0
  37. package/dist/consumer-integration/adapters/node-consumer-restoration-finalization.js.map +1 -0
  38. package/dist/consumer-integration/adapters/node-consumer-restoration-lock.d.ts +3 -0
  39. package/dist/consumer-integration/adapters/node-consumer-restoration-lock.d.ts.map +1 -0
  40. package/dist/consumer-integration/adapters/node-consumer-restoration-lock.js +104 -0
  41. package/dist/consumer-integration/adapters/node-consumer-restoration-lock.js.map +1 -0
  42. package/dist/consumer-integration/adapters/node-consumer-restoration-scope.d.ts +9 -0
  43. package/dist/consumer-integration/adapters/node-consumer-restoration-scope.d.ts.map +1 -0
  44. package/dist/consumer-integration/adapters/node-consumer-restoration-scope.js +71 -0
  45. package/dist/consumer-integration/adapters/node-consumer-restoration-scope.js.map +1 -0
  46. package/dist/consumer-integration/adapters/node-consumer-restoration-selection.d.ts +9 -0
  47. package/dist/consumer-integration/adapters/node-consumer-restoration-selection.d.ts.map +1 -0
  48. package/dist/consumer-integration/adapters/node-consumer-restoration-selection.js +35 -0
  49. package/dist/consumer-integration/adapters/node-consumer-restoration-selection.js.map +1 -0
  50. package/dist/consumer-integration/adapters/node-consumer-restoration.d.ts +12 -0
  51. package/dist/consumer-integration/adapters/node-consumer-restoration.d.ts.map +1 -0
  52. package/dist/consumer-integration/adapters/node-consumer-restoration.js +102 -0
  53. package/dist/consumer-integration/adapters/node-consumer-restoration.js.map +1 -0
  54. package/dist/consumer-integration/adapters/node-consumer-upgrade-sandbox.d.ts +33 -5
  55. package/dist/consumer-integration/adapters/node-consumer-upgrade-sandbox.d.ts.map +1 -1
  56. package/dist/consumer-integration/adapters/node-consumer-upgrade-sandbox.js +111 -106
  57. package/dist/consumer-integration/adapters/node-consumer-upgrade-sandbox.js.map +1 -1
  58. package/dist/consumer-integration/adapters/node-consumer-upgrade-source-proof.d.ts +20 -0
  59. package/dist/consumer-integration/adapters/node-consumer-upgrade-source-proof.d.ts.map +1 -0
  60. package/dist/consumer-integration/adapters/node-consumer-upgrade-source-proof.js +89 -0
  61. package/dist/consumer-integration/adapters/node-consumer-upgrade-source-proof.js.map +1 -0
  62. package/dist/consumer-integration/adapters/node-consumer-upgrade-target.d.ts +11 -0
  63. package/dist/consumer-integration/adapters/node-consumer-upgrade-target.d.ts.map +1 -0
  64. package/dist/consumer-integration/adapters/node-consumer-upgrade-target.js +60 -0
  65. package/dist/consumer-integration/adapters/node-consumer-upgrade-target.js.map +1 -0
  66. package/dist/consumer-integration/adapters/pnpm-lockfile-policy-v1.d.ts +1 -1
  67. package/dist/consumer-integration/adapters/pnpm-lockfile-policy-v1.d.ts.map +1 -1
  68. package/dist/consumer-integration/adapters/pnpm-lockfile-policy-v1.js +2 -3
  69. package/dist/consumer-integration/adapters/pnpm-lockfile-policy-v1.js.map +1 -1
  70. package/dist/consumer-integration/adapters/pnpm-lockfile-validator-v1.d.ts +19 -0
  71. package/dist/consumer-integration/adapters/pnpm-lockfile-validator-v1.d.ts.map +1 -1
  72. package/dist/consumer-integration/adapters/pnpm-lockfile-validator-v1.js +184 -44
  73. package/dist/consumer-integration/adapters/pnpm-lockfile-validator-v1.js.map +1 -1
  74. package/dist/consumer-integration/adapters/pnpm-lockfile-validator-v2.d.ts +4 -0
  75. package/dist/consumer-integration/adapters/pnpm-lockfile-validator-v2.d.ts.map +1 -0
  76. package/dist/consumer-integration/adapters/pnpm-lockfile-validator-v2.js +64 -0
  77. package/dist/consumer-integration/adapters/pnpm-lockfile-validator-v2.js.map +1 -0
  78. package/dist/consumer-integration/adapters/pnpm-manifest-adapter-v1.d.ts +19 -2
  79. package/dist/consumer-integration/adapters/pnpm-manifest-adapter-v1.d.ts.map +1 -1
  80. package/dist/consumer-integration/adapters/pnpm-manifest-adapter-v1.js +65 -18
  81. package/dist/consumer-integration/adapters/pnpm-manifest-adapter-v1.js.map +1 -1
  82. package/dist/consumer-integration/adapters/pnpm-manifest-adapter-v2.d.ts +13 -0
  83. package/dist/consumer-integration/adapters/pnpm-manifest-adapter-v2.d.ts.map +1 -0
  84. package/dist/consumer-integration/adapters/pnpm-manifest-adapter-v2.js +37 -0
  85. package/dist/consumer-integration/adapters/pnpm-manifest-adapter-v2.js.map +1 -0
  86. package/dist/consumer-integration/adapters/pnpm-runtime-closure-v1.d.ts +7 -0
  87. package/dist/consumer-integration/adapters/pnpm-runtime-closure-v1.d.ts.map +1 -1
  88. package/dist/consumer-integration/adapters/pnpm-runtime-closure-v1.js +12 -3
  89. package/dist/consumer-integration/adapters/pnpm-runtime-closure-v1.js.map +1 -1
  90. package/dist/consumer-integration/adapters/pnpm-runtime-closure-v2.d.ts +3 -0
  91. package/dist/consumer-integration/adapters/pnpm-runtime-closure-v2.d.ts.map +1 -0
  92. package/dist/consumer-integration/adapters/pnpm-runtime-closure-v2.js +11 -0
  93. package/dist/consumer-integration/adapters/pnpm-runtime-closure-v2.js.map +1 -0
  94. package/dist/consumer-integration/application/model/consumer-restoration.d.ts +76 -0
  95. package/dist/consumer-integration/application/model/consumer-restoration.d.ts.map +1 -0
  96. package/dist/consumer-integration/application/model/consumer-restoration.js +2 -0
  97. package/dist/consumer-integration/application/model/consumer-restoration.js.map +1 -0
  98. package/dist/consumer-integration/application/policies/consumer-integration-assets.d.ts +19 -3
  99. package/dist/consumer-integration/application/policies/consumer-integration-assets.d.ts.map +1 -1
  100. package/dist/consumer-integration/application/policies/consumer-integration-assets.js +38 -4
  101. package/dist/consumer-integration/application/policies/consumer-integration-assets.js.map +1 -1
  102. package/dist/consumer-integration/application/policies/consumer-integration-desired-state.d.ts +3 -1
  103. package/dist/consumer-integration/application/policies/consumer-integration-desired-state.d.ts.map +1 -1
  104. package/dist/consumer-integration/application/policies/consumer-integration-desired-state.js +87 -0
  105. package/dist/consumer-integration/application/policies/consumer-integration-desired-state.js.map +1 -1
  106. package/dist/consumer-integration/application/policies/consumer-restoration-proof.d.ts +12 -0
  107. package/dist/consumer-integration/application/policies/consumer-restoration-proof.d.ts.map +1 -0
  108. package/dist/consumer-integration/application/policies/consumer-restoration-proof.js +123 -0
  109. package/dist/consumer-integration/application/policies/consumer-restoration-proof.js.map +1 -0
  110. package/dist/consumer-integration/application/policies/qualified-docs-cohort-v2.d.ts +13 -0
  111. package/dist/consumer-integration/application/policies/qualified-docs-cohort-v2.d.ts.map +1 -0
  112. package/dist/consumer-integration/application/policies/qualified-docs-cohort-v2.js +38 -0
  113. package/dist/consumer-integration/application/policies/qualified-docs-cohort-v2.js.map +1 -0
  114. package/dist/consumer-integration/application/ports/consumer-integration-lifecycle.d.ts +3 -2
  115. package/dist/consumer-integration/application/ports/consumer-integration-lifecycle.d.ts.map +1 -1
  116. package/dist/consumer-integration/application/ports/consumer-integration-planners.d.ts +4 -4
  117. package/dist/consumer-integration/application/ports/consumer-integration-planners.d.ts.map +1 -1
  118. package/dist/consumer-integration/application/ports/consumer-restoration.d.ts +24 -0
  119. package/dist/consumer-integration/application/ports/consumer-restoration.d.ts.map +1 -0
  120. package/dist/consumer-integration/application/ports/consumer-restoration.js +2 -0
  121. package/dist/consumer-integration/application/ports/consumer-restoration.js.map +1 -0
  122. package/dist/consumer-integration/application/ports/consumer-upgrade.d.ts +44 -6
  123. package/dist/consumer-integration/application/ports/consumer-upgrade.d.ts.map +1 -1
  124. package/dist/consumer-integration/application/use-cases/compile-consumer-integration-v3.d.ts +39 -0
  125. package/dist/consumer-integration/application/use-cases/compile-consumer-integration-v3.d.ts.map +1 -0
  126. package/dist/consumer-integration/application/use-cases/compile-consumer-integration-v3.js +284 -0
  127. package/dist/consumer-integration/application/use-cases/compile-consumer-integration-v3.js.map +1 -0
  128. package/dist/consumer-integration/application/use-cases/plan-consumer-integration.d.ts +2 -2
  129. package/dist/consumer-integration/application/use-cases/plan-consumer-integration.d.ts.map +1 -1
  130. package/dist/consumer-integration/application/use-cases/plan-consumer-integration.js +23 -153
  131. package/dist/consumer-integration/application/use-cases/plan-consumer-integration.js.map +1 -1
  132. package/dist/consumer-integration/application/use-cases/run-consumer-integration.d.ts.map +1 -1
  133. package/dist/consumer-integration/application/use-cases/run-consumer-integration.js +10 -6
  134. package/dist/consumer-integration/application/use-cases/run-consumer-integration.js.map +1 -1
  135. package/dist/consumer-integration/application/use-cases/upgrade-consumer-integration.d.ts +11 -3
  136. package/dist/consumer-integration/application/use-cases/upgrade-consumer-integration.d.ts.map +1 -1
  137. package/dist/consumer-integration/application/use-cases/upgrade-consumer-integration.js +188 -39
  138. package/dist/consumer-integration/application/use-cases/upgrade-consumer-integration.js.map +1 -1
  139. package/dist/consumer-integration/composition/consumer-integration-cli.d.ts.map +1 -1
  140. package/dist/consumer-integration/composition/consumer-integration-cli.js +85 -15
  141. package/dist/consumer-integration/composition/consumer-integration-cli.js.map +1 -1
  142. package/dist/consumer-integration/composition/consumer-integration-planner.d.ts +6 -2
  143. package/dist/consumer-integration/composition/consumer-integration-planner.d.ts.map +1 -1
  144. package/dist/consumer-integration/composition/consumer-integration-planner.js +40 -3
  145. package/dist/consumer-integration/composition/consumer-integration-planner.js.map +1 -1
  146. package/dist/consumer-integration/composition/node-consumer-integration.d.ts +12 -0
  147. package/dist/consumer-integration/composition/node-consumer-integration.d.ts.map +1 -1
  148. package/dist/consumer-integration/composition/node-consumer-integration.js +17 -1
  149. package/dist/consumer-integration/composition/node-consumer-integration.js.map +1 -1
  150. package/dist/consumer-integration/composition/qualification-v3-boundary.d.ts +20 -0
  151. package/dist/consumer-integration/composition/qualification-v3-boundary.d.ts.map +1 -0
  152. package/dist/consumer-integration/composition/qualification-v3-boundary.js +29 -0
  153. package/dist/consumer-integration/composition/qualification-v3-boundary.js.map +1 -0
  154. package/dist/consumer-integration/domain/model.d.ts +61 -0
  155. package/dist/consumer-integration/domain/model.d.ts.map +1 -1
  156. package/dist/consumer-integration/generated/canonical-assets.d.ts +3 -2
  157. package/dist/consumer-integration/generated/canonical-assets.d.ts.map +1 -1
  158. package/dist/consumer-integration/generated/canonical-assets.js +3 -2
  159. package/dist/consumer-integration/generated/canonical-assets.js.map +1 -1
  160. package/dist/consumer-integration/index.d.ts +3 -1
  161. package/dist/consumer-integration/index.d.ts.map +1 -1
  162. package/dist/consumer-integration/index.js +1 -0
  163. package/dist/consumer-integration/index.js.map +1 -1
  164. package/dist/index.d.ts +2 -1
  165. package/dist/index.d.ts.map +1 -1
  166. package/dist/index.js +1 -1
  167. package/dist/index.js.map +1 -1
  168. package/dist/qualification/index.d.ts +6 -0
  169. package/dist/qualification/index.d.ts.map +1 -1
  170. package/dist/qualification/index.js +3 -0
  171. package/dist/qualification/index.js.map +1 -1
  172. package/dist/qualification/qualification-v3-authority.d.ts +14 -0
  173. package/dist/qualification/qualification-v3-authority.d.ts.map +1 -0
  174. package/dist/qualification/qualification-v3-authority.js +5 -0
  175. package/dist/qualification/qualification-v3-authority.js.map +1 -0
  176. package/dist/qualification/qualification-v3-observer.d.ts +7 -0
  177. package/dist/qualification/qualification-v3-observer.d.ts.map +1 -0
  178. package/dist/qualification/qualification-v3-observer.js +22 -0
  179. package/dist/qualification/qualification-v3-observer.js.map +1 -0
  180. package/dist/qualification/qualification-v3-runner.d.ts +7 -0
  181. package/dist/qualification/qualification-v3-runner.d.ts.map +1 -0
  182. package/dist/qualification/qualification-v3-runner.js +95 -0
  183. package/dist/qualification/qualification-v3-runner.js.map +1 -0
  184. package/dist/qualification/v3-contract.d.ts +58 -0
  185. package/dist/qualification/v3-contract.d.ts.map +1 -0
  186. package/dist/qualification/v3-contract.js +2 -0
  187. package/dist/qualification/v3-contract.js.map +1 -0
  188. package/package.json +3 -3
  189. package/schemas/docs-consumer-integration-profile/v3.schema.json +68 -0
  190. package/schemas/docs-consumer-managed-state/v2.schema.json +120 -0
  191. package/schemas/docs-consumer-restoration-execution/v1.schema.json +124 -0
  192. package/schemas/docs-consumer-upgrade-execution/v1.schema.json +39 -3
  193. package/schemas/docs-protocol-qualification-receipt/v3.schema.json +118 -0
  194. package/schemas/qualified-docs-cohort/v2.schema.json +149 -0
  195. package/skills/docs/SKILL.md +8 -6
@@ -0,0 +1,95 @@
1
+ import { createHash } from "node:crypto";
2
+ import { QUALIFIED_DOCS_COHORT_V2_PACKAGES } from "../consumer-integration/composition/qualification-v3-boundary.js";
3
+ import { observeDocsProtocolQualificationV3Lockfile } from "./qualification-v3-observer.js";
4
+ const NONZERO_SHA256 = /^sha256:(?!0{64}$)[0-9a-f]{64}$/u;
5
+ const PACKAGE_KEYS = QUALIFIED_DOCS_COHORT_V2_PACKAGES.map(({ key }) => key);
6
+ const CHECKS = Object.freeze([
7
+ "profile-v3",
8
+ "cohort-v2",
9
+ "five-package-closure",
10
+ "exact-package-versions",
11
+ "exact-package-integrities",
12
+ "schema-bindings-3-2-1",
13
+ "runtime-closure-digest"
14
+ ]);
15
+ function canonicalJson(value) {
16
+ if (Array.isArray(value)) {
17
+ return `[${value.map(canonicalJson).join(",")}]`;
18
+ }
19
+ if (value !== null && typeof value === "object") {
20
+ return `{${Object.entries(value)
21
+ .toSorted(([left], [right]) => Buffer.compare(Buffer.from(left), Buffer.from(right)))
22
+ .map(([key, entry]) => `${JSON.stringify(key)}:${canonicalJson(entry)}`).join(",")}}`;
23
+ }
24
+ return JSON.stringify(value);
25
+ }
26
+ function digest(value) {
27
+ return `sha256:${createHash("sha256").update(canonicalJson(value)).digest("hex")}`;
28
+ }
29
+ function hasExactKeys(value, keys) {
30
+ return Object.keys(value).toSorted().join("\u0000") === [...keys].toSorted().join("\u0000");
31
+ }
32
+ function assertEvidenceShape(evidence) {
33
+ if (!hasExactKeys(evidence, ["packages", "schemas", "runtimeClosureDigest"]) ||
34
+ !hasExactKeys(evidence.packages, PACKAGE_KEYS) ||
35
+ !hasExactKeys(evidence.schemas, ["consumerIntegration", "managedState", "docsProtocol"]) ||
36
+ !NONZERO_SHA256.test(evidence.runtimeClosureDigest)) {
37
+ throw new TypeError("Qualification v3 evidence is invalid or incomplete.");
38
+ }
39
+ for (const { key } of QUALIFIED_DOCS_COHORT_V2_PACKAGES) {
40
+ if (!hasExactKeys(evidence.packages[key], ["version", "integrity"])) {
41
+ throw new TypeError(`Qualification v3 package evidence for ${key} is invalid.`);
42
+ }
43
+ }
44
+ }
45
+ /**
46
+ * Admits only explicit profile-v3 evidence for the closed five-package Cohort v2.
47
+ * Collection/execution belongs to the disposable public-registry canary lane.
48
+ */
49
+ export function runDocsProtocolQualificationV3(request) {
50
+ const lockfileObservation = observeDocsProtocolQualificationV3Lockfile(request);
51
+ assertEvidenceShape(request.evidence);
52
+ const { cohort } = request.profile;
53
+ for (const { key, name } of QUALIFIED_DOCS_COHORT_V2_PACKAGES) {
54
+ const expected = cohort.packages[key];
55
+ const observed = request.evidence.packages[key];
56
+ if (observed.version !== expected.version) {
57
+ throw new Error(`Qualification v3 version mismatch for ${name}.`);
58
+ }
59
+ if (observed.integrity !== expected.integrity) {
60
+ throw new Error(`Qualification v3 integrity mismatch for ${name}.`);
61
+ }
62
+ }
63
+ if (request.evidence.schemas.consumerIntegration !== 3 ||
64
+ request.evidence.schemas.managedState !== 2 ||
65
+ request.evidence.schemas.docsProtocol !== 1) {
66
+ throw new Error("Qualification v3 requires exact schema bindings 3/2/1.");
67
+ }
68
+ if (request.evidence.runtimeClosureDigest !== cohort.runtime.runtimeClosureDigest) {
69
+ throw new Error("Qualification v3 runtime closure digest mismatch.");
70
+ }
71
+ if (lockfileObservation.runtimeClosureDigest !== cohort.runtime.runtimeClosureDigest) {
72
+ throw new Error("Qualification v3 lockfile runtime closure digest mismatch.");
73
+ }
74
+ const body = Object.freeze({
75
+ schemaVersion: 3,
76
+ cohortAdmissible: true,
77
+ profileSchemaVersion: 3,
78
+ cohort: Object.freeze({
79
+ schemaVersion: 2,
80
+ cohortId: cohort.cohortId,
81
+ recordDigest: cohort.recordDigest,
82
+ qualificationEventDigest: cohort.qualificationEventDigest
83
+ }),
84
+ packages: Object.freeze(QUALIFIED_DOCS_COHORT_V2_PACKAGES.map(({ key, name }) => Object.freeze({ key, name, ...cohort.packages[key] }))),
85
+ schemas: Object.freeze({
86
+ consumerIntegration: 3,
87
+ managedState: 2,
88
+ docsProtocol: 1
89
+ }),
90
+ runtime: Object.freeze({ runtimeClosureDigest: cohort.runtime.runtimeClosureDigest }),
91
+ checks: CHECKS
92
+ });
93
+ return Object.freeze({ ...body, receiptDigest: digest(body) });
94
+ }
95
+ //# sourceMappingURL=qualification-v3-runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qualification-v3-runner.js","sourceRoot":"","sources":["../../src/qualification/qualification-v3-runner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ import type { ConsumerIntegrationDesiredStateV3, QualifiedDocsCohortBindingV2 } from "../consumer-integration/composition/qualification-v3-boundary.js";
2
+ export type DocsProtocolQualificationCheckV3 = "profile-v3" | "cohort-v2" | "five-package-closure" | "exact-package-versions" | "exact-package-integrities" | "schema-bindings-3-2-1" | "runtime-closure-digest";
3
+ export type DocsProtocolQualificationPackageKeyV3 = keyof QualifiedDocsCohortBindingV2["packages"];
4
+ export interface DocsProtocolQualificationObservedPackageV3 {
5
+ readonly version: string;
6
+ readonly integrity: `sha512-${string}`;
7
+ }
8
+ /** Evidence observed by the release/canary lane, never inferred from installation shape. */
9
+ export interface DocsProtocolQualificationEvidenceV3 {
10
+ readonly packages: Readonly<Record<DocsProtocolQualificationPackageKeyV3, DocsProtocolQualificationObservedPackageV3>>;
11
+ readonly schemas: {
12
+ readonly consumerIntegration: number;
13
+ readonly managedState: number;
14
+ readonly docsProtocol: number;
15
+ };
16
+ readonly runtimeClosureDigest: `sha256:${string}`;
17
+ }
18
+ export interface DocsProtocolQualificationV3Request {
19
+ readonly profile: ConsumerIntegrationDesiredStateV3;
20
+ readonly evidence: DocsProtocolQualificationEvidenceV3;
21
+ readonly lockfileBytes: Uint8Array;
22
+ }
23
+ export interface DocsProtocolQualificationLockfileObservationV3Request {
24
+ readonly profile: ConsumerIntegrationDesiredStateV3;
25
+ readonly lockfileBytes: Uint8Array;
26
+ }
27
+ export interface DocsProtocolQualificationLockfileObservationV3 {
28
+ readonly runtimeClosureDigest: `sha256:${string}`;
29
+ }
30
+ export interface DocsProtocolQualificationPackageReceiptV3 {
31
+ readonly key: DocsProtocolQualificationPackageKeyV3;
32
+ readonly name: `@agent-teams/${string}`;
33
+ readonly version: string;
34
+ readonly integrity: `sha512-${string}`;
35
+ }
36
+ export interface DocsProtocolQualificationReceiptV3 {
37
+ readonly schemaVersion: 3;
38
+ readonly receiptDigest: `sha256:${string}`;
39
+ readonly cohortAdmissible: true;
40
+ readonly profileSchemaVersion: 3;
41
+ readonly cohort: {
42
+ readonly schemaVersion: 2;
43
+ readonly cohortId: string;
44
+ readonly recordDigest: `sha256:${string}`;
45
+ readonly qualificationEventDigest: `sha256:${string}`;
46
+ };
47
+ readonly packages: readonly DocsProtocolQualificationPackageReceiptV3[];
48
+ readonly schemas: {
49
+ readonly consumerIntegration: 3;
50
+ readonly managedState: 2;
51
+ readonly docsProtocol: 1;
52
+ };
53
+ readonly runtime: {
54
+ readonly runtimeClosureDigest: `sha256:${string}`;
55
+ };
56
+ readonly checks: readonly DocsProtocolQualificationCheckV3[];
57
+ }
58
+ //# sourceMappingURL=v3-contract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v3-contract.d.ts","sourceRoot":"","sources":["../../src/qualification/v3-contract.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iCAAiC,EACjC,4BAA4B,EAC7B,MAAM,kEAAkE,CAAC;AAE1E,MAAM,MAAM,gCAAgC,GACxC,YAAY,GACZ,WAAW,GACX,sBAAsB,GACtB,wBAAwB,GACxB,2BAA2B,GAC3B,uBAAuB,GACvB,wBAAwB,CAAC;AAE7B,MAAM,MAAM,qCAAqC,GAC/C,MAAM,4BAA4B,CAAC,UAAU,CAAC,CAAC;AAEjD,MAAM,WAAW,0CAA0C;IACzD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,UAAU,MAAM,EAAE,CAAC;CACxC;AAED,4FAA4F;AAC5F,MAAM,WAAW,mCAAmC;IAClD,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAChC,qCAAqC,EACrC,0CAA0C,CAC3C,CAAC,CAAC;IACH,QAAQ,CAAC,OAAO,EAAE;QAChB,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;QACrC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;QAC9B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;KAC/B,CAAC;IACF,QAAQ,CAAC,oBAAoB,EAAE,UAAU,MAAM,EAAE,CAAC;CACnD;AAED,MAAM,WAAW,kCAAkC;IACjD,QAAQ,CAAC,OAAO,EAAE,iCAAiC,CAAC;IACpD,QAAQ,CAAC,QAAQ,EAAE,mCAAmC,CAAC;IACvD,QAAQ,CAAC,aAAa,EAAE,UAAU,CAAC;CACpC;AAED,MAAM,WAAW,qDAAqD;IACpE,QAAQ,CAAC,OAAO,EAAE,iCAAiC,CAAC;IACpD,QAAQ,CAAC,aAAa,EAAE,UAAU,CAAC;CACpC;AAED,MAAM,WAAW,8CAA8C;IAC7D,QAAQ,CAAC,oBAAoB,EAAE,UAAU,MAAM,EAAE,CAAC;CACnD;AAED,MAAM,WAAW,yCAAyC;IACxD,QAAQ,CAAC,GAAG,EAAE,qCAAqC,CAAC;IACpD,QAAQ,CAAC,IAAI,EAAE,gBAAgB,MAAM,EAAE,CAAC;IACxC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,UAAU,MAAM,EAAE,CAAC;CACxC;AAED,MAAM,WAAW,kCAAkC;IACjD,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC;IAC1B,QAAQ,CAAC,aAAa,EAAE,UAAU,MAAM,EAAE,CAAC;IAC3C,QAAQ,CAAC,gBAAgB,EAAE,IAAI,CAAC;IAChC,QAAQ,CAAC,oBAAoB,EAAE,CAAC,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE;QACf,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC;QAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,YAAY,EAAE,UAAU,MAAM,EAAE,CAAC;QAC1C,QAAQ,CAAC,wBAAwB,EAAE,UAAU,MAAM,EAAE,CAAC;KACvD,CAAC;IACF,QAAQ,CAAC,QAAQ,EAAE,SAAS,yCAAyC,EAAE,CAAC;IACxE,QAAQ,CAAC,OAAO,EAAE;QAChB,QAAQ,CAAC,mBAAmB,EAAE,CAAC,CAAC;QAChC,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC;QACzB,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC;KAC1B,CAAC;IACF,QAAQ,CAAC,OAAO,EAAE;QAChB,QAAQ,CAAC,oBAAoB,EAAE,UAAU,MAAM,EAAE,CAAC;KACnD,CAAC;IACF,QAAQ,CAAC,MAAM,EAAE,SAAS,gCAAgC,EAAE,CAAC;CAC9D"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=v3-contract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v3-contract.js","sourceRoot":"","sources":["../../src/qualification/v3-contract.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -6,8 +6,8 @@
6
6
  "url": "https://github.com/agent-teams-ai/engineering-foundation/issues"
7
7
  },
8
8
  "dependencies": {
9
- "@agent-teams/docs-protocol": "0.4.1",
10
- "@agent-teams/repository-mutation": "0.0.0",
9
+ "@agent-teams/docs-protocol": "0.5.1",
10
+ "@agent-teams/repository-mutation": "0.1.1",
11
11
  "ajv": "8.20.0",
12
12
  "jsonc-parser": "3.3.1",
13
13
  "yaml": "2.9.0"
@@ -62,5 +62,5 @@
62
62
  },
63
63
  "sideEffects": false,
64
64
  "type": "module",
65
- "version": "0.0.0"
65
+ "version": "0.1.1"
66
66
  }
@@ -0,0 +1,68 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://agent-teams.ai/schemas/docs-consumer-integration-profile/v3",
4
+ "type": "object",
5
+ "additionalProperties": false,
6
+ "required": [
7
+ "schemaVersion",
8
+ "repository",
9
+ "integrationRoot",
10
+ "packageManager",
11
+ "profilePath",
12
+ "skillPath",
13
+ "callerWorkflowPath",
14
+ "managedStatePath",
15
+ "cohort",
16
+ "qualification"
17
+ ],
18
+ "properties": {
19
+ "schemaVersion": { "const": 3 },
20
+ "repository": {
21
+ "type": "object",
22
+ "additionalProperties": false,
23
+ "required": ["provider", "id", "nameWithOwner"],
24
+ "properties": {
25
+ "provider": { "const": "github" },
26
+ "id": { "type": "string", "pattern": "^[1-9][0-9]*$" },
27
+ "nameWithOwner": {
28
+ "type": "string",
29
+ "pattern": "^[A-Za-z0-9_.-]+/[A-Za-z0-9_.-]+$"
30
+ }
31
+ }
32
+ },
33
+ "integrationRoot": { "const": "." },
34
+ "packageManager": { "const": "pnpm" },
35
+ "profilePath": { "const": "architecture/foundation/docs-protocol.yaml" },
36
+ "skillPath": { "const": ".agents/skills/docs-authoring/SKILL.md" },
37
+ "callerWorkflowPath": { "const": ".github/workflows/docs-protocol.yml" },
38
+ "managedStatePath": {
39
+ "const": "architecture/foundation/docs-protocol-managed-state.json"
40
+ },
41
+ "qualification": {
42
+ "type": "object",
43
+ "additionalProperties": false,
44
+ "required": ["contractPath", "gateCommand"],
45
+ "properties": {
46
+ "contractPath": {
47
+ "const": "architecture/foundation/docs-protocol-qualification.json"
48
+ },
49
+ "gateCommand": { "const": "pnpm docs:protocol:check" }
50
+ }
51
+ },
52
+ "governedDocsRoots": {
53
+ "type": "array",
54
+ "minItems": 1,
55
+ "maxItems": 32,
56
+ "uniqueItems": true,
57
+ "items": {
58
+ "type": "string",
59
+ "minLength": 1,
60
+ "maxLength": 512,
61
+ "pattern": "^(?!.*(?:^|/)\\.{1,2}(?:/|$))[A-Za-z0-9._@-]{1,255}(?:/[A-Za-z0-9._@-]{1,255})*$"
62
+ }
63
+ },
64
+ "cohort": {
65
+ "$ref": "https://agent-teams.ai/schemas/qualified-docs-cohort/v2#/$defs/cohortBinding"
66
+ }
67
+ }
68
+ }
@@ -0,0 +1,120 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://agent-teams.ai/schemas/docs-consumer-managed-state/v2",
4
+ "type": "object",
5
+ "additionalProperties": false,
6
+ "required": [
7
+ "schemaVersion",
8
+ "cohortId",
9
+ "cohortAuthority",
10
+ "repository",
11
+ "packages",
12
+ "schemas",
13
+ "runtime",
14
+ "profilePath",
15
+ "skillPath",
16
+ "callerWorkflowPath",
17
+ "managedStatePath",
18
+ "assets",
19
+ "stateDigest"
20
+ ],
21
+ "properties": {
22
+ "schemaVersion": { "const": 2 },
23
+ "cohortId": {
24
+ "type": "string",
25
+ "pattern": "^[a-z0-9]+(?:[._-][a-z0-9]+)*$"
26
+ },
27
+ "cohortAuthority": {
28
+ "type": "object",
29
+ "additionalProperties": false,
30
+ "required": [
31
+ "channel",
32
+ "recordDigest",
33
+ "qualificationEventDigest",
34
+ "eligibleAfter",
35
+ "upgradeFrom",
36
+ "rollbackTo"
37
+ ],
38
+ "properties": {
39
+ "channel": { "enum": ["rc", "stable"] },
40
+ "recordDigest": {
41
+ "$ref": "https://agent-teams.ai/schemas/qualified-docs-cohort/v2#/$defs/nonzeroSha256"
42
+ },
43
+ "qualificationEventDigest": {
44
+ "$ref": "https://agent-teams.ai/schemas/qualified-docs-cohort/v2#/$defs/nonzeroSha256"
45
+ },
46
+ "eligibleAfter": {
47
+ "type": "string",
48
+ "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z$"
49
+ },
50
+ "upgradeFrom": {
51
+ "$ref": "https://agent-teams.ai/schemas/qualified-docs-cohort/v2#/$defs/cohortIds"
52
+ },
53
+ "rollbackTo": {
54
+ "$ref": "https://agent-teams.ai/schemas/qualified-docs-cohort/v2#/$defs/cohortIds"
55
+ }
56
+ }
57
+ },
58
+ "repository": {
59
+ "type": "object",
60
+ "additionalProperties": false,
61
+ "required": ["provider", "id", "nameWithOwner"],
62
+ "properties": {
63
+ "provider": { "const": "github" },
64
+ "id": { "type": "string", "pattern": "^[1-9][0-9]*$" },
65
+ "nameWithOwner": {
66
+ "type": "string",
67
+ "pattern": "^[A-Za-z0-9_.-]+/[A-Za-z0-9_.-]+$"
68
+ }
69
+ }
70
+ },
71
+ "packages": {
72
+ "$ref": "https://agent-teams.ai/schemas/qualified-docs-cohort/v2#/$defs/cohortCore/properties/packages"
73
+ },
74
+ "schemas": {
75
+ "$ref": "https://agent-teams.ai/schemas/qualified-docs-cohort/v2#/$defs/cohortCore/properties/schemas"
76
+ },
77
+ "runtime": {
78
+ "$ref": "https://agent-teams.ai/schemas/qualified-docs-cohort/v2#/$defs/cohortCore/properties/runtime"
79
+ },
80
+ "profilePath": { "type": "string", "minLength": 1 },
81
+ "skillPath": { "type": "string", "minLength": 1 },
82
+ "callerWorkflowPath": { "type": "string", "minLength": 1 },
83
+ "managedStatePath": { "type": "string", "minLength": 1 },
84
+ "assets": {
85
+ "type": "object",
86
+ "additionalProperties": false,
87
+ "required": [
88
+ "skillDigest",
89
+ "callerWorkflowDigest",
90
+ "assetCatalogDigest",
91
+ "transitionCatalogDigest",
92
+ "agentsRouteDigest",
93
+ "docsScriptsDigest"
94
+ ],
95
+ "properties": {
96
+ "skillDigest": {
97
+ "$ref": "https://agent-teams.ai/schemas/qualified-docs-cohort/v2#/$defs/nonzeroSha256"
98
+ },
99
+ "callerWorkflowDigest": {
100
+ "$ref": "https://agent-teams.ai/schemas/qualified-docs-cohort/v2#/$defs/nonzeroSha256"
101
+ },
102
+ "assetCatalogDigest": {
103
+ "$ref": "https://agent-teams.ai/schemas/qualified-docs-cohort/v2#/$defs/nonzeroSha256"
104
+ },
105
+ "transitionCatalogDigest": {
106
+ "$ref": "https://agent-teams.ai/schemas/qualified-docs-cohort/v2#/$defs/nonzeroSha256"
107
+ },
108
+ "agentsRouteDigest": {
109
+ "$ref": "https://agent-teams.ai/schemas/qualified-docs-cohort/v2#/$defs/nonzeroSha256"
110
+ },
111
+ "docsScriptsDigest": {
112
+ "$ref": "https://agent-teams.ai/schemas/qualified-docs-cohort/v2#/$defs/nonzeroSha256"
113
+ }
114
+ }
115
+ },
116
+ "stateDigest": {
117
+ "$ref": "https://agent-teams.ai/schemas/qualified-docs-cohort/v2#/$defs/nonzeroSha256"
118
+ }
119
+ }
120
+ }
@@ -0,0 +1,124 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://agent-teams.ai/schemas/docs-consumer-restoration-execution/v1",
4
+ "type": "object",
5
+ "additionalProperties": false,
6
+ "required": [
7
+ "schemaVersion",
8
+ "command",
9
+ "outcome",
10
+ "issues"
11
+ ],
12
+ "properties": {
13
+ "schemaVersion": {
14
+ "const": 1
15
+ },
16
+ "command": {
17
+ "const": "consumer.restore"
18
+ },
19
+ "outcome": {
20
+ "enum": [
21
+ "blocked",
22
+ "restored",
23
+ "activated-v1"
24
+ ]
25
+ },
26
+ "issues": {
27
+ "type": "array",
28
+ "maxItems": 64,
29
+ "items": {
30
+ "type": "object",
31
+ "additionalProperties": false,
32
+ "required": [
33
+ "code",
34
+ "severity",
35
+ "subject",
36
+ "message"
37
+ ],
38
+ "properties": {
39
+ "code": {
40
+ "type": "string",
41
+ "pattern": "^[A-Z0-9_]+$",
42
+ "maxLength": 128
43
+ },
44
+ "severity": {
45
+ "enum": [
46
+ "error",
47
+ "warning"
48
+ ]
49
+ },
50
+ "subject": {
51
+ "type": "string",
52
+ "maxLength": 2048
53
+ },
54
+ "message": {
55
+ "type": "string",
56
+ "maxLength": 4096
57
+ }
58
+ }
59
+ }
60
+ },
61
+ "receipt": {
62
+ "$ref": "https://agent-teams.ai/schemas/known-file-transaction-receipt/v1"
63
+ },
64
+ "proofDigest": {
65
+ "$ref": "#/$defs/sha256"
66
+ },
67
+ "inversePlanDigest": {
68
+ "$ref": "#/$defs/sha256"
69
+ }
70
+ },
71
+ "$defs": {
72
+ "sha256": {
73
+ "type": "string",
74
+ "pattern": "^sha256:[0-9a-f]{64}$"
75
+ }
76
+ },
77
+ "allOf": [
78
+ {
79
+ "if": {
80
+ "properties": {
81
+ "outcome": {
82
+ "enum": [
83
+ "restored",
84
+ "activated-v1"
85
+ ]
86
+ }
87
+ }
88
+ },
89
+ "then": {
90
+ "required": [
91
+ "proofDigest",
92
+ "inversePlanDigest"
93
+ ],
94
+ "properties": {
95
+ "proofDigest": {
96
+ "$ref": "#/$defs/sha256"
97
+ },
98
+ "inversePlanDigest": {
99
+ "$ref": "#/$defs/sha256"
100
+ }
101
+ }
102
+ }
103
+ },
104
+ {
105
+ "if": {
106
+ "properties": {
107
+ "outcome": {
108
+ "const": "restored"
109
+ }
110
+ }
111
+ },
112
+ "then": {
113
+ "required": [
114
+ "receipt"
115
+ ],
116
+ "properties": {
117
+ "receipt": {
118
+ "$ref": "https://agent-teams.ai/schemas/known-file-transaction-receipt/v1"
119
+ }
120
+ }
121
+ }
122
+ }
123
+ ]
124
+ }
@@ -6,8 +6,8 @@
6
6
  "required": ["schemaVersion", "command", "outcome", "issues"],
7
7
  "properties": {
8
8
  "schemaVersion": { "const": 1 },
9
- "command": { "const": "consumer.upgrade" },
10
- "outcome": { "enum": ["blocked", "current", "upgraded"] },
9
+ "command": { "enum": ["consumer.upgrade", "consumer.finalize"] },
10
+ "outcome": { "enum": ["blocked", "current", "upgraded", "prepared"] },
11
11
  "issues": {
12
12
  "type": "array",
13
13
  "maxItems": 64,
@@ -36,9 +36,45 @@
36
36
  "qualificationEventDigest": { "$ref": "#/$defs/sha256" }
37
37
  }
38
38
  },
39
+ "restoration": { "$ref": "#/$defs/retained" },
40
+ "preparation": { "$ref": "#/$defs/retained" },
39
41
  "receipt": { "$ref": "https://agent-teams.ai/schemas/known-file-transaction-receipt/v1" }
40
42
  },
41
43
  "$defs": {
44
+ "retained": {
45
+ "type": "object", "additionalProperties": false, "required": ["path", "digest"],
46
+ "properties": {
47
+ "path": { "type": "string", "minLength": 1, "maxLength": 4096 },
48
+ "digest": { "$ref": "#/$defs/sha256" }
49
+ }
50
+ },
42
51
  "sha256": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" }
43
- }
52
+ },
53
+ "allOf": [
54
+ {
55
+ "if": { "properties": { "outcome": { "const": "prepared" } } },
56
+ "then": {
57
+ "required": ["preparation"],
58
+ "properties": {
59
+ "command": { "const": "consumer.upgrade" },
60
+ "preparation": { "$ref": "#/$defs/retained" },
61
+ "receipt": false, "restoration": false
62
+ }
63
+ }
64
+ },
65
+ {
66
+ "if": { "properties": { "command": { "const": "consumer.finalize" } } },
67
+ "then": {
68
+ "properties": { "outcome": { "enum": ["blocked", "upgraded"] }, "preparation": false },
69
+ "if": { "properties": { "outcome": { "const": "upgraded" } } },
70
+ "then": {
71
+ "required": ["receipt", "restoration"],
72
+ "properties": {
73
+ "receipt": { "$ref": "https://agent-teams.ai/schemas/known-file-transaction-receipt/v1" },
74
+ "restoration": { "$ref": "#/$defs/retained" }
75
+ }
76
+ }
77
+ }
78
+ }
79
+ ]
44
80
  }