@agent-teams/docs-protocol-agent-teams 0.0.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 +5 -0
- package/LICENSE +201 -0
- package/README.md +24 -0
- package/assets/catalog.json +1 -0
- package/assets/docs-protocol.yml +14 -0
- package/assets/history/sha256-097df9fe1b90ab45f73389c8b69736f8a54d4199b09536d586222b5a7f0fbb09/caller.yml +13 -0
- package/assets/history/sha256-3e53262efc8a530b532380dac21d876456473d3b88aba20889a1d24823bf3a1b/caller.yml +14 -0
- package/assets/history/sha256-51d3f02a352ce2c3b0a4068a86b6899a57ab54b0a876c468e3fb3e536519caca/caller.yml +14 -0
- package/assets/history/sha256-641265ef9ecff59c16482fdae1bc8fc56002b5a4a1ee34b102438d0ca08a86a3/skill.md +29 -0
- package/assets/history/sha256-7907195753506e4b0f0e89eb3f6e495bacbd79e9b9913c9f60fc4a07dffb22e5/caller.yml +14 -0
- package/assets/history/sha256-7b31cd257532247f64c55a014dc926c601e4d742176cfb8513b6b0d8ab48213e/skill.md +28 -0
- package/assets/history/sha256-d697c5c7c9bcfccfc006fcf7e4d4cc8e7c629f9689781b9b0b50f30d82bc019e/caller.yml +14 -0
- package/assets/history/sha256-f21dc19277a4ba24bcef90a7071c9cf50adf144769f42d6f74ff4eac9ef117cf/caller.yml +14 -0
- package/assets/history/sha256-fd633c3c6337e5cfe51a9f36989bb654381634c5ab4add9e4da71fe40ab4e0dd/caller.yml +14 -0
- package/assets/transition-catalog.json +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +4 -0
- package/dist/cli.js.map +1 -0
- package/dist/composition/managed-cli-input.d.ts +11 -0
- package/dist/composition/managed-cli-input.d.ts.map +1 -0
- package/dist/composition/managed-cli-input.js +52 -0
- package/dist/composition/managed-cli-input.js.map +1 -0
- package/dist/composition/managed-cli.d.ts +2 -0
- package/dist/composition/managed-cli.d.ts.map +1 -0
- package/dist/composition/managed-cli.js +17 -0
- package/dist/composition/managed-cli.js.map +1 -0
- package/dist/composition/qualification-cli.d.ts +2 -0
- package/dist/composition/qualification-cli.d.ts.map +1 -0
- package/dist/composition/qualification-cli.js +119 -0
- package/dist/composition/qualification-cli.js.map +1 -0
- package/dist/consumer-integration/adapters/agents-route-adapter-v1.d.ts +10 -0
- package/dist/consumer-integration/adapters/agents-route-adapter-v1.d.ts.map +1 -0
- package/dist/consumer-integration/adapters/agents-route-adapter-v1.js +99 -0
- package/dist/consumer-integration/adapters/agents-route-adapter-v1.js.map +1 -0
- package/dist/consumer-integration/adapters/bounded-repository-topology.d.ts +8 -0
- package/dist/consumer-integration/adapters/bounded-repository-topology.d.ts.map +1 -0
- package/dist/consumer-integration/adapters/bounded-repository-topology.js +80 -0
- package/dist/consumer-integration/adapters/bounded-repository-topology.js.map +1 -0
- package/dist/consumer-integration/adapters/consumer-integration-node-error.d.ts +5 -0
- package/dist/consumer-integration/adapters/consumer-integration-node-error.d.ts.map +1 -0
- package/dist/consumer-integration/adapters/consumer-integration-node-error.js +9 -0
- package/dist/consumer-integration/adapters/consumer-integration-node-error.js.map +1 -0
- package/dist/consumer-integration/adapters/consumer-integration-schema-validator.d.ts +4 -0
- package/dist/consumer-integration/adapters/consumer-integration-schema-validator.d.ts.map +1 -0
- package/dist/consumer-integration/adapters/consumer-integration-schema-validator.js +51 -0
- package/dist/consumer-integration/adapters/consumer-integration-schema-validator.js.map +1 -0
- package/dist/consumer-integration/adapters/consumer-upgrade-file-projectors.d.ts +21 -0
- package/dist/consumer-integration/adapters/consumer-upgrade-file-projectors.d.ts.map +1 -0
- package/dist/consumer-integration/adapters/consumer-upgrade-file-projectors.js +145 -0
- package/dist/consumer-integration/adapters/consumer-upgrade-file-projectors.js.map +1 -0
- package/dist/consumer-integration/adapters/foundation-known-file-transaction.d.ts +3 -0
- package/dist/consumer-integration/adapters/foundation-known-file-transaction.d.ts.map +1 -0
- package/dist/consumer-integration/adapters/foundation-known-file-transaction.js +7 -0
- package/dist/consumer-integration/adapters/foundation-known-file-transaction.js.map +1 -0
- package/dist/consumer-integration/adapters/github-cohort-authority-reader.d.ts +21 -0
- package/dist/consumer-integration/adapters/github-cohort-authority-reader.d.ts.map +1 -0
- package/dist/consumer-integration/adapters/github-cohort-authority-reader.js +215 -0
- package/dist/consumer-integration/adapters/github-cohort-authority-reader.js.map +1 -0
- package/dist/consumer-integration/adapters/node-consumer-integration-repository.d.ts +13 -0
- package/dist/consumer-integration/adapters/node-consumer-integration-repository.d.ts.map +1 -0
- package/dist/consumer-integration/adapters/node-consumer-integration-repository.js +213 -0
- package/dist/consumer-integration/adapters/node-consumer-integration-repository.js.map +1 -0
- package/dist/consumer-integration/adapters/node-consumer-repository-files.d.ts +11 -0
- package/dist/consumer-integration/adapters/node-consumer-repository-files.d.ts.map +1 -0
- package/dist/consumer-integration/adapters/node-consumer-repository-files.js +81 -0
- package/dist/consumer-integration/adapters/node-consumer-repository-files.js.map +1 -0
- package/dist/consumer-integration/adapters/node-consumer-upgrade-sandbox.d.ts +19 -0
- package/dist/consumer-integration/adapters/node-consumer-upgrade-sandbox.d.ts.map +1 -0
- package/dist/consumer-integration/adapters/node-consumer-upgrade-sandbox.js +307 -0
- package/dist/consumer-integration/adapters/node-consumer-upgrade-sandbox.js.map +1 -0
- package/dist/consumer-integration/adapters/package-consumer-asset-catalog.d.ts +5 -0
- package/dist/consumer-integration/adapters/package-consumer-asset-catalog.d.ts.map +1 -0
- package/dist/consumer-integration/adapters/package-consumer-asset-catalog.js +150 -0
- package/dist/consumer-integration/adapters/package-consumer-asset-catalog.js.map +1 -0
- package/dist/consumer-integration/adapters/pnpm-lockfile-policy-v1.d.ts +3 -0
- package/dist/consumer-integration/adapters/pnpm-lockfile-policy-v1.d.ts.map +1 -0
- package/dist/consumer-integration/adapters/pnpm-lockfile-policy-v1.js +37 -0
- package/dist/consumer-integration/adapters/pnpm-lockfile-policy-v1.js.map +1 -0
- package/dist/consumer-integration/adapters/pnpm-lockfile-validator-v1.d.ts +3 -0
- package/dist/consumer-integration/adapters/pnpm-lockfile-validator-v1.d.ts.map +1 -0
- package/dist/consumer-integration/adapters/pnpm-lockfile-validator-v1.js +120 -0
- package/dist/consumer-integration/adapters/pnpm-lockfile-validator-v1.js.map +1 -0
- package/dist/consumer-integration/adapters/pnpm-manifest-adapter-v1.d.ts +15 -0
- package/dist/consumer-integration/adapters/pnpm-manifest-adapter-v1.d.ts.map +1 -0
- package/dist/consumer-integration/adapters/pnpm-manifest-adapter-v1.js +189 -0
- package/dist/consumer-integration/adapters/pnpm-manifest-adapter-v1.js.map +1 -0
- package/dist/consumer-integration/adapters/pnpm-runtime-closure-v1.d.ts +8 -0
- package/dist/consumer-integration/adapters/pnpm-runtime-closure-v1.d.ts.map +1 -0
- package/dist/consumer-integration/adapters/pnpm-runtime-closure-v1.js +245 -0
- package/dist/consumer-integration/adapters/pnpm-runtime-closure-v1.js.map +1 -0
- package/dist/consumer-integration/adapters/strict-json-record.d.ts +3 -0
- package/dist/consumer-integration/adapters/strict-json-record.d.ts.map +1 -0
- package/dist/consumer-integration/adapters/strict-json-record.js +27 -0
- package/dist/consumer-integration/adapters/strict-json-record.js.map +1 -0
- package/dist/consumer-integration/application/model/consumer-integration-execution.d.ts +11 -0
- package/dist/consumer-integration/application/model/consumer-integration-execution.d.ts.map +1 -0
- package/dist/consumer-integration/application/model/consumer-integration-execution.js +2 -0
- package/dist/consumer-integration/application/model/consumer-integration-execution.js.map +1 -0
- package/dist/consumer-integration/application/model/consumer-upgrade-execution.d.ts +18 -0
- package/dist/consumer-integration/application/model/consumer-upgrade-execution.d.ts.map +1 -0
- package/dist/consumer-integration/application/model/consumer-upgrade-execution.js +2 -0
- package/dist/consumer-integration/application/model/consumer-upgrade-execution.js.map +1 -0
- package/dist/consumer-integration/application/policies/consumer-integration-assets.d.ts +58 -0
- package/dist/consumer-integration/application/policies/consumer-integration-assets.d.ts.map +1 -0
- package/dist/consumer-integration/application/policies/consumer-integration-assets.js +154 -0
- package/dist/consumer-integration/application/policies/consumer-integration-assets.js.map +1 -0
- package/dist/consumer-integration/application/policies/consumer-integration-authority-guards.d.ts +4 -0
- package/dist/consumer-integration/application/policies/consumer-integration-authority-guards.d.ts.map +1 -0
- package/dist/consumer-integration/application/policies/consumer-integration-authority-guards.js +23 -0
- package/dist/consumer-integration/application/policies/consumer-integration-authority-guards.js.map +1 -0
- package/dist/consumer-integration/application/policies/consumer-integration-desired-state.d.ts +4 -0
- package/dist/consumer-integration/application/policies/consumer-integration-desired-state.d.ts.map +1 -0
- package/dist/consumer-integration/application/policies/consumer-integration-desired-state.js +153 -0
- package/dist/consumer-integration/application/policies/consumer-integration-desired-state.js.map +1 -0
- package/dist/consumer-integration/application/policies/consumer-integration-prior-cohort.d.ts +14 -0
- package/dist/consumer-integration/application/policies/consumer-integration-prior-cohort.d.ts.map +1 -0
- package/dist/consumer-integration/application/policies/consumer-integration-prior-cohort.js +186 -0
- package/dist/consumer-integration/application/policies/consumer-integration-prior-cohort.js.map +1 -0
- package/dist/consumer-integration/application/ports/consumer-integration-lifecycle.d.ts +31 -0
- package/dist/consumer-integration/application/ports/consumer-integration-lifecycle.d.ts.map +1 -0
- package/dist/consumer-integration/application/ports/consumer-integration-lifecycle.js +2 -0
- package/dist/consumer-integration/application/ports/consumer-integration-lifecycle.js.map +1 -0
- package/dist/consumer-integration/application/ports/consumer-integration-planners.d.ts +35 -0
- package/dist/consumer-integration/application/ports/consumer-integration-planners.d.ts.map +1 -0
- package/dist/consumer-integration/application/ports/consumer-integration-planners.js +2 -0
- package/dist/consumer-integration/application/ports/consumer-integration-planners.js.map +1 -0
- package/dist/consumer-integration/application/ports/consumer-upgrade.d.ts +28 -0
- package/dist/consumer-integration/application/ports/consumer-upgrade.d.ts.map +1 -0
- package/dist/consumer-integration/application/ports/consumer-upgrade.js +2 -0
- package/dist/consumer-integration/application/ports/consumer-upgrade.js.map +1 -0
- package/dist/consumer-integration/application/use-cases/plan-consumer-integration.d.ts +15 -0
- package/dist/consumer-integration/application/use-cases/plan-consumer-integration.d.ts.map +1 -0
- package/dist/consumer-integration/application/use-cases/plan-consumer-integration.js +350 -0
- package/dist/consumer-integration/application/use-cases/plan-consumer-integration.js.map +1 -0
- package/dist/consumer-integration/application/use-cases/run-consumer-integration.d.ts +29 -0
- package/dist/consumer-integration/application/use-cases/run-consumer-integration.d.ts.map +1 -0
- package/dist/consumer-integration/application/use-cases/run-consumer-integration.js +139 -0
- package/dist/consumer-integration/application/use-cases/run-consumer-integration.js.map +1 -0
- package/dist/consumer-integration/application/use-cases/upgrade-consumer-integration.d.ts +13 -0
- package/dist/consumer-integration/application/use-cases/upgrade-consumer-integration.d.ts.map +1 -0
- package/dist/consumer-integration/application/use-cases/upgrade-consumer-integration.js +134 -0
- package/dist/consumer-integration/application/use-cases/upgrade-consumer-integration.js.map +1 -0
- package/dist/consumer-integration/composition/consumer-integration-cli.d.ts +3 -0
- package/dist/consumer-integration/composition/consumer-integration-cli.d.ts.map +1 -0
- package/dist/consumer-integration/composition/consumer-integration-cli.js +241 -0
- package/dist/consumer-integration/composition/consumer-integration-cli.js.map +1 -0
- package/dist/consumer-integration/composition/consumer-integration-planner.d.ts +19 -0
- package/dist/consumer-integration/composition/consumer-integration-planner.d.ts.map +1 -0
- package/dist/consumer-integration/composition/consumer-integration-planner.js +14 -0
- package/dist/consumer-integration/composition/consumer-integration-planner.js.map +1 -0
- package/dist/consumer-integration/composition/node-consumer-integration.d.ts +26 -0
- package/dist/consumer-integration/composition/node-consumer-integration.d.ts.map +1 -0
- package/dist/consumer-integration/composition/node-consumer-integration.js +38 -0
- package/dist/consumer-integration/composition/node-consumer-integration.js.map +1 -0
- package/dist/consumer-integration/domain/model.d.ts +111 -0
- package/dist/consumer-integration/domain/model.d.ts.map +1 -0
- package/dist/consumer-integration/domain/model.js +2 -0
- package/dist/consumer-integration/domain/model.js.map +1 -0
- package/dist/consumer-integration/generated/canonical-assets.d.ts +5 -0
- package/dist/consumer-integration/generated/canonical-assets.d.ts.map +1 -0
- package/dist/consumer-integration/generated/canonical-assets.js +6 -0
- package/dist/consumer-integration/generated/canonical-assets.js.map +1 -0
- package/dist/consumer-integration/index.d.ts +12 -0
- package/dist/consumer-integration/index.d.ts.map +1 -0
- package/dist/consumer-integration/index.js +7 -0
- package/dist/consumer-integration/index.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/dist/qualification/index.d.ts +3 -0
- package/dist/qualification/index.d.ts.map +1 -0
- package/dist/qualification/index.js +2 -0
- package/dist/qualification/index.js.map +1 -0
- package/dist/qualification/managed-command-envelope-validator.d.ts +14 -0
- package/dist/qualification/managed-command-envelope-validator.d.ts.map +1 -0
- package/dist/qualification/managed-command-envelope-validator.js +33 -0
- package/dist/qualification/managed-command-envelope-validator.js.map +1 -0
- package/dist/qualification/qualification-v2-runner.d.ts +4 -0
- package/dist/qualification/qualification-v2-runner.d.ts.map +1 -0
- package/dist/qualification/qualification-v2-runner.js +344 -0
- package/dist/qualification/qualification-v2-runner.js.map +1 -0
- package/dist/qualification/v2-contract.d.ts +91 -0
- package/dist/qualification/v2-contract.d.ts.map +1 -0
- package/dist/qualification/v2-contract.js +2 -0
- package/dist/qualification/v2-contract.js.map +1 -0
- package/package.json +66 -0
- package/schemas/docs-consumer-integration-execution/v1.schema.json +29 -0
- package/schemas/docs-consumer-integration-plan/v1.schema.json +63 -0
- package/schemas/docs-consumer-integration-profile/v1.schema.json +110 -0
- package/schemas/docs-consumer-integration-profile/v2.schema.json +283 -0
- package/schemas/docs-consumer-managed-state/v1.schema.json +99 -0
- package/schemas/docs-consumer-upgrade-execution/v1.schema.json +44 -0
- package/schemas/docs-protocol-command-envelope/v1.schema.json +239 -0
- package/schemas/docs-protocol-command-envelope/v2.schema.json +285 -0
- package/schemas/docs-protocol-command-envelope/v3.schema.json +529 -0
- package/schemas/docs-protocol-profile/v1.schema.json +46 -0
- package/schemas/docs-protocol-profile/v2.schema.json +46 -0
- package/schemas/docs-protocol-qualification/v2.schema.json +78 -0
- package/schemas/docs-protocol-qualification-receipt/v2.schema.json +113 -0
- package/schemas/qualified-docs-cohort/v1.schema.json +96 -0
- package/skills/docs/SKILL.md +29 -0
|
@@ -0,0 +1,344 @@
|
|
|
1
|
+
import { constants } from "node:fs";
|
|
2
|
+
import { cp, lstat, mkdir, mkdtemp, open, readFile, realpath, rm, symlink, writeFile } from "node:fs/promises";
|
|
3
|
+
import { tmpdir } from "node:os";
|
|
4
|
+
import { dirname, join, relative, resolve as resolvePath, sep } from "node:path";
|
|
5
|
+
import { fileURLToPath } from "node:url";
|
|
6
|
+
import { Ajv2020 } from "ajv/dist/2020.js";
|
|
7
|
+
import { docsCheckV2, docsDoctorV2, docsFindV2, docsInfoV2, docsNewV2, docsRecoverV2 } from "@agent-teams/docs-protocol";
|
|
8
|
+
import { applyReachability, bootstrapQualificationInstallation, changedPaths, digest, documentResult, fileSnapshot, interruptAndRecover, isQualificationEvidenceExcludedPath, portableQualificationSkill, qualificationEvidencePolicy, readContainedBoundedFile, requireSuccess, signalOption, snapshot } from "@agent-teams/docs-protocol/qualification";
|
|
9
|
+
import { assertConsumerIntegrationProfileSchema } from "../consumer-integration/adapters/consumer-integration-schema-validator.js";
|
|
10
|
+
import { checkConsumerIntegration } from "../consumer-integration/index.js";
|
|
11
|
+
function canonicalJson(value) {
|
|
12
|
+
if (Array.isArray(value)) {
|
|
13
|
+
return `[${value.map(canonicalJson).join(",")}]`;
|
|
14
|
+
}
|
|
15
|
+
if (value !== null && typeof value === "object") {
|
|
16
|
+
return `{${Object.entries(value).toSorted(([left], [right]) => Buffer.compare(Buffer.from(left), Buffer.from(right)))
|
|
17
|
+
.map(([key, entry]) => `${JSON.stringify(key)}:${canonicalJson(entry)}`).join(",")}}`;
|
|
18
|
+
}
|
|
19
|
+
return JSON.stringify(value);
|
|
20
|
+
}
|
|
21
|
+
async function readQualificationContractV2(root, path) {
|
|
22
|
+
const source = await readContainedBoundedFile(root, path, "Qualification contract");
|
|
23
|
+
const value = JSON.parse(source.bytes.toString("utf8"));
|
|
24
|
+
if (value.schemaVersion === 1) {
|
|
25
|
+
throw new Error("DOCS_QUALIFICATION_V1_MIGRATION_REQUIRED: replace fixtureRoot/tests/pins/paths/gate with schemaVersion 2 scenarios; managed integration owns package and route authority.");
|
|
26
|
+
}
|
|
27
|
+
const schema = JSON.parse(await readFile(new URL("../../schemas/docs-protocol-qualification/v2.schema.json", import.meta.url), "utf8"));
|
|
28
|
+
const validate = new Ajv2020({ allErrors: true, strict: true }).compile(schema);
|
|
29
|
+
if (!validate(value)) {
|
|
30
|
+
const details = (validate.errors ?? []).slice(0, 8).map(({ instancePath, message }) => `${instancePath || "/"} ${message ?? "is invalid"}`).join("; ");
|
|
31
|
+
throw new TypeError(`docs-protocol-qualification/v2 validation failed: ${details}`);
|
|
32
|
+
}
|
|
33
|
+
return Object.freeze({
|
|
34
|
+
contract: value,
|
|
35
|
+
evidence: Object.freeze({ path: source.path, digest: source.digest })
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
async function copyDisposableConsumer(sourceRoot, consumerRoot, policy) {
|
|
39
|
+
await cp(sourceRoot, consumerRoot, {
|
|
40
|
+
recursive: true,
|
|
41
|
+
errorOnExist: true,
|
|
42
|
+
force: false,
|
|
43
|
+
dereference: false,
|
|
44
|
+
async filter(source) {
|
|
45
|
+
const repositoryPath = relative(sourceRoot, source).split(sep).join("/");
|
|
46
|
+
if (repositoryPath === "") {
|
|
47
|
+
return true;
|
|
48
|
+
}
|
|
49
|
+
const metadata = await lstat(source);
|
|
50
|
+
const entryKind = metadata.isDirectory() ? "directory"
|
|
51
|
+
: metadata.isFile() ? "file"
|
|
52
|
+
: metadata.isSymbolicLink() ? "symbolic-link"
|
|
53
|
+
: "other";
|
|
54
|
+
return !await isQualificationEvidenceExcludedPath(sourceRoot, repositoryPath, policy, "source", entryKind);
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
async function bootstrapManagedQualificationInstallation(consumerRoot, rewriteManifest) {
|
|
59
|
+
const portable = await bootstrapQualificationInstallation(consumerRoot, rewriteManifest);
|
|
60
|
+
const adapterManifestPath = fileURLToPath(new URL("../../package.json", import.meta.url));
|
|
61
|
+
const [adapterManifest, consumerManifestSource] = await Promise.all([
|
|
62
|
+
readFile(adapterManifestPath, "utf8").then((source) => JSON.parse(source)),
|
|
63
|
+
readFile(join(consumerRoot, "package.json"), "utf8")
|
|
64
|
+
]);
|
|
65
|
+
const consumerManifest = JSON.parse(consumerManifestSource);
|
|
66
|
+
const existingDevDependencies = typeof consumerManifest["devDependencies"] === "object" &&
|
|
67
|
+
consumerManifest["devDependencies"] !== null
|
|
68
|
+
? consumerManifest["devDependencies"]
|
|
69
|
+
: {};
|
|
70
|
+
if (rewriteManifest) {
|
|
71
|
+
await writeFile(join(consumerRoot, "package.json"), `${JSON.stringify({
|
|
72
|
+
...consumerManifest,
|
|
73
|
+
devDependencies: {
|
|
74
|
+
...existingDevDependencies,
|
|
75
|
+
"@agent-teams/docs-protocol-agent-teams": adapterManifest.version
|
|
76
|
+
}
|
|
77
|
+
}, null, 2)}\n`, "utf8");
|
|
78
|
+
}
|
|
79
|
+
else if (existingDevDependencies["@agent-teams/docs-protocol-agent-teams"] !== adapterManifest.version) {
|
|
80
|
+
throw new Error("Managed qualification requires the exact executing Agent Teams adapter in devDependencies.");
|
|
81
|
+
}
|
|
82
|
+
const scope = join(consumerRoot, "node_modules", "@agent-teams");
|
|
83
|
+
await mkdir(scope, { recursive: true });
|
|
84
|
+
await symlink(dirname(adapterManifestPath), join(scope, "docs-protocol-agent-teams"), process.platform === "win32" ? "junction" : "dir");
|
|
85
|
+
return Object.freeze({
|
|
86
|
+
...portable,
|
|
87
|
+
adapterVersion: adapterManifest.version
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
export async function overlayLocalDevelopmentSkill(consumerRoot, skillPath, enabled) {
|
|
91
|
+
if (!enabled) {
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
const target = join(consumerRoot, skillPath);
|
|
95
|
+
const canonicalSkill = portableQualificationSkill();
|
|
96
|
+
let handle;
|
|
97
|
+
try {
|
|
98
|
+
handle = await open(target, constants.O_WRONLY |
|
|
99
|
+
(process.platform === "win32" ? 0 : constants.O_NOFOLLOW));
|
|
100
|
+
const [opened, named] = await Promise.all([
|
|
101
|
+
handle.stat({ bigint: true }),
|
|
102
|
+
lstat(target, { bigint: true })
|
|
103
|
+
]);
|
|
104
|
+
if (!opened.isFile() || opened.nlink !== 1n || !named.isFile() || named.isSymbolicLink() ||
|
|
105
|
+
opened.dev !== named.dev || opened.ino !== named.ino || opened.birthtimeNs !== named.birthtimeNs) {
|
|
106
|
+
throw new Error("unsafe Skill target");
|
|
107
|
+
}
|
|
108
|
+
await handle.truncate(0);
|
|
109
|
+
await handle.writeFile(canonicalSkill);
|
|
110
|
+
const written = await handle.stat({ bigint: true });
|
|
111
|
+
if (!written.isFile() || written.nlink !== 1n || written.dev !== opened.dev || written.ino !== opened.ino ||
|
|
112
|
+
written.birthtimeNs !== opened.birthtimeNs || written.size !== BigInt(canonicalSkill.byteLength)) {
|
|
113
|
+
throw new Error("unstable Skill target");
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
catch (cause) {
|
|
117
|
+
throw new Error("Local-development qualification Skill target must be one stable, non-hardlinked regular file.", { cause });
|
|
118
|
+
}
|
|
119
|
+
finally {
|
|
120
|
+
await handle?.close();
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
function scenarioRequest(scenario, consumerRoot, profilePath, signal) {
|
|
124
|
+
return {
|
|
125
|
+
consumerRoot,
|
|
126
|
+
profilePath,
|
|
127
|
+
intent: {
|
|
128
|
+
type: scenario.type,
|
|
129
|
+
id: scenario.intent.id,
|
|
130
|
+
title: scenario.intent.title,
|
|
131
|
+
owner: scenario.intent.owner,
|
|
132
|
+
summary: scenario.intent.summary,
|
|
133
|
+
...(scenario.intent.slug === undefined ? {} : { slug: scenario.intent.slug }),
|
|
134
|
+
...(scenario.intent.destination === undefined ? {} : { destination: scenario.intent.destination })
|
|
135
|
+
},
|
|
136
|
+
...(scenario.intent.related === undefined ? {} : { related: scenario.intent.related }),
|
|
137
|
+
...(scenario.intent.blockedBy === undefined ? {} : { blockedBy: scenario.intent.blockedBy }),
|
|
138
|
+
...(scenario.intent.codeAnchors === undefined ? {} : { codeAnchors: scenario.intent.codeAnchors }),
|
|
139
|
+
...(scenario.intent.metadata === undefined ? {} : { additionalMetadata: scenario.intent.metadata }),
|
|
140
|
+
...(signal === undefined ? {} : { signal })
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
function assertExpectedScenario(scenario, result) {
|
|
144
|
+
if (result.documentPath !== scenario.expected.documentPath) {
|
|
145
|
+
throw new Error(`Qualification scenario ${scenario.id} path mismatch: ${result.documentPath}.`);
|
|
146
|
+
}
|
|
147
|
+
if (canonicalJson(result.reachability) !== canonicalJson(scenario.expected.reachability)) {
|
|
148
|
+
throw new Error(`Qualification scenario ${scenario.id} reachability mismatch.`);
|
|
149
|
+
}
|
|
150
|
+
if (scenario.expected.goldenDigest !== undefined && result.compiled.document.digest !== scenario.expected.goldenDigest) {
|
|
151
|
+
throw new Error(`Qualification scenario ${scenario.id} golden digest mismatch.`);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
function assertScenarioCoverage(contract, declaredTypes) {
|
|
155
|
+
const scenarioTypes = contract.scenarios.map(({ type }) => type);
|
|
156
|
+
if (new Set(contract.scenarios.map(({ id }) => id)).size !== contract.scenarios.length ||
|
|
157
|
+
new Set(scenarioTypes).size !== scenarioTypes.length || canonicalJson(scenarioTypes.toSorted()) !== canonicalJson(declaredTypes.toSorted())) {
|
|
158
|
+
throw new Error(`Qualification scenarios must cover every authorable type exactly once; expected ${declaredTypes.join(", ")}.`);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
async function assertManagedIntegrationAuthority(integration) {
|
|
162
|
+
await assertConsumerIntegrationProfileSchema(integration);
|
|
163
|
+
if (integration.schemaVersion !== 2 || integration.qualification === undefined) {
|
|
164
|
+
throw new Error("DOCS_QUALIFICATION_V1_MIGRATION_REQUIRED: managed integration schemaVersion 2 with qualification authority is required.");
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
async function assertReleasedIntegrationCurrent(sourceRoot, integrationPath) {
|
|
168
|
+
const managed = await checkConsumerIntegration({
|
|
169
|
+
consumerRoot: sourceRoot,
|
|
170
|
+
integrationProfilePath: integrationPath
|
|
171
|
+
});
|
|
172
|
+
if (managed.outcome !== "current") {
|
|
173
|
+
throw new Error(`Released-cohort qualification requires a current exact managed integration: ${JSON.stringify(managed.issues)}.`);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
async function qualifyScenarios(input) {
|
|
177
|
+
const receipts = [];
|
|
178
|
+
for (const [index, scenario] of input.contract.scenarios.entries()) {
|
|
179
|
+
const scenarioBase = scenarioRequest(scenario, input.base.consumerRoot, input.base.profilePath, input.base.signal);
|
|
180
|
+
const beforePreview = await fileSnapshot(input.base.consumerRoot, input.evidencePolicy);
|
|
181
|
+
const preview = await input.protocol.newDocumentV2({ ...scenarioBase, apply: false });
|
|
182
|
+
const previewResult = documentResult(preview);
|
|
183
|
+
if (changedPaths(beforePreview, await fileSnapshot(input.base.consumerRoot, input.evidencePolicy)).length !== 0) {
|
|
184
|
+
throw new Error(`Qualification scenario ${scenario.id} preview mutated the disposable consumer.`);
|
|
185
|
+
}
|
|
186
|
+
assertExpectedScenario(scenario, previewResult);
|
|
187
|
+
if (scenario.expected.goldenFile !== undefined) {
|
|
188
|
+
const golden = await readContainedBoundedFile(input.base.consumerRoot, scenario.expected.goldenFile, `Qualification scenario ${scenario.id} golden file`);
|
|
189
|
+
if (golden.bytes.toString("utf8") !== previewResult.compiled.document.content) {
|
|
190
|
+
throw new Error(`Qualification scenario ${scenario.id} golden file mismatch.`);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
if (index === 0) {
|
|
194
|
+
await interruptAndRecover({
|
|
195
|
+
base: scenarioBase,
|
|
196
|
+
consumerRoot: input.base.consumerRoot,
|
|
197
|
+
previewResult,
|
|
198
|
+
profilePath: input.base.profilePath,
|
|
199
|
+
protocol: input.protocol
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
else {
|
|
203
|
+
const applied = await input.protocol.newDocumentV2({ ...scenarioBase, apply: true });
|
|
204
|
+
const appliedResult = documentResult(applied);
|
|
205
|
+
if (appliedResult.planDigest !== previewResult.planDigest || appliedResult.compiled.document.content !== previewResult.compiled.document.content) {
|
|
206
|
+
throw new Error(`Qualification scenario ${scenario.id} preview/apply parity mismatch.`);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
const actual = await readFile(join(input.base.consumerRoot, previewResult.documentPath), "utf8");
|
|
210
|
+
if (actual !== previewResult.compiled.document.content) {
|
|
211
|
+
throw new Error(`Qualification scenario ${scenario.id} materialized bytes differ from preview.`);
|
|
212
|
+
}
|
|
213
|
+
await applyReachability(input.base.consumerRoot, previewResult.reachability);
|
|
214
|
+
requireSuccess(`check after ${scenario.id}`, await input.protocol.checkV2(input.base));
|
|
215
|
+
receipts.push({
|
|
216
|
+
id: scenario.id,
|
|
217
|
+
type: scenario.type,
|
|
218
|
+
documentPath: previewResult.documentPath,
|
|
219
|
+
outputDigest: previewResult.compiled.document.digest
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
return Object.freeze(receipts.map((receipt) => Object.freeze(receipt)));
|
|
223
|
+
}
|
|
224
|
+
async function collectEvidence(input) {
|
|
225
|
+
const [profile, skill, packageManifest, lockfile, executingModule] = await Promise.all([
|
|
226
|
+
readContainedBoundedFile(input.consumerRoot, input.integration.profilePath, "Docs Protocol profile"),
|
|
227
|
+
readContainedBoundedFile(input.consumerRoot, input.integration.skillPath, "Documentation Skill"),
|
|
228
|
+
readContainedBoundedFile(input.consumerRoot, "package.json", "Package manifest"),
|
|
229
|
+
readContainedBoundedFile(input.consumerRoot, "pnpm-lock.yaml", "pnpm lockfile", 64 * 1024 * 1024),
|
|
230
|
+
readFile(fileURLToPath(import.meta.url))
|
|
231
|
+
]);
|
|
232
|
+
return {
|
|
233
|
+
executingModule,
|
|
234
|
+
lockfileDigest: lockfile.digest,
|
|
235
|
+
packageManifestDigest: packageManifest.digest,
|
|
236
|
+
profile: { path: profile.path, digest: profile.digest },
|
|
237
|
+
skill: { path: skill.path, digest: skill.digest }
|
|
238
|
+
};
|
|
239
|
+
}
|
|
240
|
+
export async function runDocsProtocolQualificationV2(request) {
|
|
241
|
+
const sourceRoot = await realpath(resolvePath(request.consumerRoot));
|
|
242
|
+
const integrationPath = request.integrationPath ?? "architecture/foundation/docs-consumer-integration.json";
|
|
243
|
+
const integrationFile = await readContainedBoundedFile(sourceRoot, integrationPath, "Managed integration profile");
|
|
244
|
+
const integration = JSON.parse(integrationFile.bytes.toString("utf8"));
|
|
245
|
+
await assertManagedIntegrationAuthority(integration);
|
|
246
|
+
const qualifiedIntegration = integration;
|
|
247
|
+
const evidencePolicy = qualificationEvidencePolicy(qualifiedIntegration.governedDocsRoots ?? []);
|
|
248
|
+
const before = await snapshot(sourceRoot, evidencePolicy);
|
|
249
|
+
const qualification = await readQualificationContractV2(sourceRoot, qualifiedIntegration.qualification.contractPath);
|
|
250
|
+
if (request.localDevelopment !== true) {
|
|
251
|
+
await assertReleasedIntegrationCurrent(sourceRoot, integrationPath);
|
|
252
|
+
}
|
|
253
|
+
const temporary = await realpath(await mkdtemp(join(tmpdir(), "atd-q2-")));
|
|
254
|
+
const consumerRoot = join(temporary, "consumer");
|
|
255
|
+
try {
|
|
256
|
+
request.signal?.throwIfAborted();
|
|
257
|
+
await copyDisposableConsumer(sourceRoot, consumerRoot, evidencePolicy);
|
|
258
|
+
const executingPackages = await bootstrapManagedQualificationInstallation(consumerRoot, request.localDevelopment === true);
|
|
259
|
+
await overlayLocalDevelopmentSkill(consumerRoot, qualifiedIntegration.skillPath, request.localDevelopment === true);
|
|
260
|
+
const manifest = JSON.parse(await readFile(join(consumerRoot, "package.json"), "utf8"));
|
|
261
|
+
if (typeof manifest.scripts?.["docs:protocol:check"] !== "string") {
|
|
262
|
+
throw new Error(`Managed qualification gate ${qualifiedIntegration.qualification.gateCommand} must resolve to a package script; it is never executed by qualification.`);
|
|
263
|
+
}
|
|
264
|
+
const protocol = {
|
|
265
|
+
checkV2: docsCheckV2,
|
|
266
|
+
doctorV2: docsDoctorV2,
|
|
267
|
+
findV2: docsFindV2,
|
|
268
|
+
infoV2: docsInfoV2,
|
|
269
|
+
newDocumentV2: docsNewV2,
|
|
270
|
+
recoverV2: docsRecoverV2
|
|
271
|
+
};
|
|
272
|
+
const base = { consumerRoot, profilePath: qualifiedIntegration.profilePath, ...signalOption(request.signal) };
|
|
273
|
+
const info = await protocol.infoV2(base);
|
|
274
|
+
requireSuccess("info", info);
|
|
275
|
+
const infoResult = info.envelope.result;
|
|
276
|
+
assertScenarioCoverage(qualification.contract, infoResult.types.map(({ type }) => type));
|
|
277
|
+
requireSuccess("find", await protocol.findV2({ ...base, query: {} }));
|
|
278
|
+
requireSuccess("check", await protocol.checkV2(base));
|
|
279
|
+
const initialDoctor = await protocol.doctorV2(base);
|
|
280
|
+
requireSuccess("doctor", initialDoctor);
|
|
281
|
+
const idleRecovery = await protocol.recoverV2(base);
|
|
282
|
+
requireSuccess("recover", idleRecovery);
|
|
283
|
+
if (idleRecovery.envelope.result.transactionState !== "no-pending-transaction") {
|
|
284
|
+
throw new Error("Qualification recover did not prove the initial idle state.");
|
|
285
|
+
}
|
|
286
|
+
const receipts = await qualifyScenarios({ base, contract: qualification.contract, evidencePolicy, protocol });
|
|
287
|
+
requireSuccess("doctor", await protocol.doctorV2(base));
|
|
288
|
+
requireSuccess("recover", await protocol.recoverV2(base));
|
|
289
|
+
if (await snapshot(sourceRoot, evidencePolicy) !== before) {
|
|
290
|
+
throw new Error("Qualification modified its source consumer.");
|
|
291
|
+
}
|
|
292
|
+
const evidence = await collectEvidence({
|
|
293
|
+
consumerRoot,
|
|
294
|
+
integration: qualifiedIntegration
|
|
295
|
+
});
|
|
296
|
+
const environment = initialDoctor.envelope.result.environment;
|
|
297
|
+
if (request.localDevelopment !== true &&
|
|
298
|
+
executingPackages.docsVersion !== qualifiedIntegration.cohort.packages.docsProtocol.version) {
|
|
299
|
+
throw new Error("Released-cohort qualification execution identity does not match the exact cohort package versions.");
|
|
300
|
+
}
|
|
301
|
+
const hasGolden = qualification.contract.scenarios.some(({ expected }) => expected.goldenFile !== undefined || expected.goldenDigest !== undefined);
|
|
302
|
+
const body = Object.freeze({
|
|
303
|
+
schemaVersion: 2,
|
|
304
|
+
cohortAdmissible: request.localDevelopment !== true,
|
|
305
|
+
evidenceClass: request.localDevelopment === true ? "local-development" : "released-cohort",
|
|
306
|
+
projectId: infoResult.projectId,
|
|
307
|
+
scenarios: receipts,
|
|
308
|
+
checks: Object.freeze([
|
|
309
|
+
"info", "find", "check", "doctor", "recover", "preview", "apply", "path", "reachability",
|
|
310
|
+
...(hasGolden ? ["golden"] : []),
|
|
311
|
+
"source-unchanged"
|
|
312
|
+
]),
|
|
313
|
+
derived: Object.freeze({
|
|
314
|
+
contractPath: qualifiedIntegration.qualification.contractPath,
|
|
315
|
+
gateCommand: qualifiedIntegration.qualification.gateCommand,
|
|
316
|
+
packageVersions: Object.freeze({
|
|
317
|
+
docsProtocol: qualifiedIntegration.cohort.packages.docsProtocol.version,
|
|
318
|
+
engineeringFoundation: qualifiedIntegration.cohort.packages.engineeringFoundation.version
|
|
319
|
+
}),
|
|
320
|
+
profilePath: qualifiedIntegration.profilePath
|
|
321
|
+
}),
|
|
322
|
+
evidence: Object.freeze({
|
|
323
|
+
sourceDigest: before,
|
|
324
|
+
integration: Object.freeze({ path: integrationPath, digest: integrationFile.digest }),
|
|
325
|
+
contract: qualification.evidence,
|
|
326
|
+
profile: Object.freeze(evidence.profile),
|
|
327
|
+
skill: Object.freeze(evidence.skill),
|
|
328
|
+
packageManifestDigest: evidence.packageManifestDigest,
|
|
329
|
+
lockfileDigest: evidence.lockfileDigest,
|
|
330
|
+
executingDocsProtocol: Object.freeze({ version: executingPackages.docsVersion, buildDigest: digest(evidence.executingModule) }),
|
|
331
|
+
executingFoundation: Object.freeze({
|
|
332
|
+
version: environment.installedFoundationVersion,
|
|
333
|
+
buildIdentity: environment.installedFoundationBuildIdentity
|
|
334
|
+
}),
|
|
335
|
+
cohort: Object.freeze({ ...qualifiedIntegration.cohort })
|
|
336
|
+
})
|
|
337
|
+
});
|
|
338
|
+
return Object.freeze({ ...body, receiptDigest: digest(canonicalJson(body)) });
|
|
339
|
+
}
|
|
340
|
+
finally {
|
|
341
|
+
await rm(temporary, { recursive: true, force: true });
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
//# sourceMappingURL=qualification-v2-runner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"qualification-v2-runner.js","sourceRoot":"","sources":["../../src/qualification/qualification-v2-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import type { DocumentJsonValue } from "@agent-teams/docs-protocol/qualification";
|
|
2
|
+
export interface DocsProtocolQualificationScenarioV2 {
|
|
3
|
+
readonly id: string;
|
|
4
|
+
readonly type: string;
|
|
5
|
+
readonly intent: {
|
|
6
|
+
readonly id: string;
|
|
7
|
+
readonly title: string;
|
|
8
|
+
readonly owner: string;
|
|
9
|
+
readonly summary: string;
|
|
10
|
+
readonly slug?: string;
|
|
11
|
+
readonly destination?: string;
|
|
12
|
+
readonly related?: readonly string[];
|
|
13
|
+
readonly blockedBy?: readonly string[];
|
|
14
|
+
readonly codeAnchors?: readonly {
|
|
15
|
+
readonly enforcement: "advisory" | "required";
|
|
16
|
+
readonly pattern: string;
|
|
17
|
+
}[];
|
|
18
|
+
readonly metadata?: Readonly<Record<string, DocumentJsonValue>>;
|
|
19
|
+
};
|
|
20
|
+
readonly expected: {
|
|
21
|
+
readonly documentPath: string;
|
|
22
|
+
readonly metadataStorage: "frontmatter";
|
|
23
|
+
readonly reachability: unknown;
|
|
24
|
+
readonly goldenFile?: string;
|
|
25
|
+
readonly goldenDigest?: `sha256:${string}`;
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
export interface DocsProtocolQualificationContractV2 {
|
|
29
|
+
readonly schemaVersion: 2;
|
|
30
|
+
readonly scenarios: readonly DocsProtocolQualificationScenarioV2[];
|
|
31
|
+
}
|
|
32
|
+
export interface DocsProtocolQualificationV2Request {
|
|
33
|
+
readonly consumerRoot: string;
|
|
34
|
+
readonly integrationPath?: string;
|
|
35
|
+
readonly localDevelopment?: boolean;
|
|
36
|
+
readonly signal?: AbortSignal;
|
|
37
|
+
}
|
|
38
|
+
export interface DocsProtocolQualificationReceiptV2 {
|
|
39
|
+
readonly schemaVersion: 2;
|
|
40
|
+
readonly receiptDigest: `sha256:${string}`;
|
|
41
|
+
readonly cohortAdmissible: boolean;
|
|
42
|
+
readonly evidenceClass: "local-development" | "released-cohort";
|
|
43
|
+
readonly projectId: string;
|
|
44
|
+
readonly scenarios: readonly {
|
|
45
|
+
readonly id: string;
|
|
46
|
+
readonly type: string;
|
|
47
|
+
readonly documentPath: string;
|
|
48
|
+
readonly outputDigest: string;
|
|
49
|
+
}[];
|
|
50
|
+
readonly checks: readonly ("info" | "find" | "check" | "doctor" | "recover" | "preview" | "apply" | "path" | "reachability" | "golden" | "source-unchanged")[];
|
|
51
|
+
readonly derived: {
|
|
52
|
+
readonly contractPath: string;
|
|
53
|
+
readonly gateCommand: string;
|
|
54
|
+
readonly packageVersions: {
|
|
55
|
+
readonly docsProtocol: string;
|
|
56
|
+
readonly engineeringFoundation: string;
|
|
57
|
+
};
|
|
58
|
+
readonly profilePath: string;
|
|
59
|
+
};
|
|
60
|
+
readonly evidence: {
|
|
61
|
+
readonly sourceDigest: `sha256:${string}`;
|
|
62
|
+
readonly integration: {
|
|
63
|
+
readonly path: string;
|
|
64
|
+
readonly digest: `sha256:${string}`;
|
|
65
|
+
};
|
|
66
|
+
readonly contract: {
|
|
67
|
+
readonly path: string;
|
|
68
|
+
readonly digest: `sha256:${string}`;
|
|
69
|
+
};
|
|
70
|
+
readonly profile: {
|
|
71
|
+
readonly path: string;
|
|
72
|
+
readonly digest: `sha256:${string}`;
|
|
73
|
+
};
|
|
74
|
+
readonly skill: {
|
|
75
|
+
readonly path: string;
|
|
76
|
+
readonly digest: `sha256:${string}`;
|
|
77
|
+
};
|
|
78
|
+
readonly packageManifestDigest: `sha256:${string}`;
|
|
79
|
+
readonly lockfileDigest: `sha256:${string}`;
|
|
80
|
+
readonly executingDocsProtocol: {
|
|
81
|
+
readonly version: string;
|
|
82
|
+
readonly buildDigest: `sha256:${string}`;
|
|
83
|
+
};
|
|
84
|
+
readonly executingFoundation: {
|
|
85
|
+
readonly version: string;
|
|
86
|
+
readonly buildIdentity: `sha256:${string}`;
|
|
87
|
+
};
|
|
88
|
+
readonly cohort: Readonly<Record<string, unknown>>;
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=v2-contract.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v2-contract.d.ts","sourceRoot":"","sources":["../../src/qualification/v2-contract.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v2-contract.js","sourceRoot":"","sources":["../../src/qualification/v2-contract.ts"],"names":[],"mappings":""}
|
package/package.json
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
{
|
|
2
|
+
"bin": {
|
|
3
|
+
"agent-teams-docs-managed": "./dist/cli.js"
|
|
4
|
+
},
|
|
5
|
+
"bugs": {
|
|
6
|
+
"url": "https://github.com/agent-teams-ai/engineering-foundation/issues"
|
|
7
|
+
},
|
|
8
|
+
"dependencies": {
|
|
9
|
+
"@agent-teams/docs-protocol": "0.4.1",
|
|
10
|
+
"@agent-teams/repository-mutation": "0.0.0",
|
|
11
|
+
"ajv": "8.20.0",
|
|
12
|
+
"jsonc-parser": "3.3.1",
|
|
13
|
+
"yaml": "2.9.0"
|
|
14
|
+
},
|
|
15
|
+
"description": "Agent Teams managed integration adapter for the portable Docs Protocol.",
|
|
16
|
+
"devDependencies": {
|
|
17
|
+
"@types/node": "24.13.3",
|
|
18
|
+
"typescript": "7.0.2"
|
|
19
|
+
},
|
|
20
|
+
"engines": {
|
|
21
|
+
"node": ">=24.18.0 <25",
|
|
22
|
+
"pnpm": ">=11.17.0 <12"
|
|
23
|
+
},
|
|
24
|
+
"exports": {
|
|
25
|
+
".": {
|
|
26
|
+
"types": "./dist/index.d.ts",
|
|
27
|
+
"import": "./dist/index.js"
|
|
28
|
+
},
|
|
29
|
+
"./qualification": {
|
|
30
|
+
"types": "./dist/qualification/index.d.ts",
|
|
31
|
+
"import": "./dist/qualification/index.js"
|
|
32
|
+
},
|
|
33
|
+
"./schemas/*": "./schemas/*",
|
|
34
|
+
"./package.json": "./package.json"
|
|
35
|
+
},
|
|
36
|
+
"files": [
|
|
37
|
+
"dist",
|
|
38
|
+
"schemas",
|
|
39
|
+
"skills/docs/SKILL.md",
|
|
40
|
+
"assets",
|
|
41
|
+
"README.md",
|
|
42
|
+
"CHANGELOG.md"
|
|
43
|
+
],
|
|
44
|
+
"homepage": "https://github.com/agent-teams-ai/engineering-foundation#readme",
|
|
45
|
+
"license": "Apache-2.0",
|
|
46
|
+
"name": "@agent-teams/docs-protocol-agent-teams",
|
|
47
|
+
"publishConfig": {
|
|
48
|
+
"access": "public",
|
|
49
|
+
"provenance": true,
|
|
50
|
+
"registry": "https://registry.npmjs.org/"
|
|
51
|
+
},
|
|
52
|
+
"repository": {
|
|
53
|
+
"type": "git",
|
|
54
|
+
"url": "git+https://github.com/agent-teams-ai/engineering-foundation.git",
|
|
55
|
+
"directory": "packages/docs-protocol-agent-teams"
|
|
56
|
+
},
|
|
57
|
+
"scripts": {
|
|
58
|
+
"assets:generate": "node scripts/generate-consumer-assets.mjs --write",
|
|
59
|
+
"assets:check": "node scripts/generate-consumer-assets.mjs",
|
|
60
|
+
"build": "pnpm assets:check && tsc --build tsconfig.json --pretty false",
|
|
61
|
+
"test": "pnpm build && node --test tests/*.test.mjs"
|
|
62
|
+
},
|
|
63
|
+
"sideEffects": false,
|
|
64
|
+
"type": "module",
|
|
65
|
+
"version": "0.0.0"
|
|
66
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://agent-teams.ai/schemas/docs-consumer-integration-execution/v1",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"additionalProperties": false,
|
|
6
|
+
"required": ["schemaVersion", "command", "outcome", "issues"],
|
|
7
|
+
"properties": {
|
|
8
|
+
"schemaVersion": { "const": 1 },
|
|
9
|
+
"command": { "enum": ["consumer.apply", "consumer.check", "consumer.plan", "consumer.recover"] },
|
|
10
|
+
"outcome": { "enum": ["applied", "blocked", "change-required", "current", "recovered"] },
|
|
11
|
+
"issues": {
|
|
12
|
+
"type": "array",
|
|
13
|
+
"maxItems": 64,
|
|
14
|
+
"items": {
|
|
15
|
+
"type": "object",
|
|
16
|
+
"additionalProperties": false,
|
|
17
|
+
"required": ["code", "severity", "subject", "message"],
|
|
18
|
+
"properties": {
|
|
19
|
+
"code": { "type": "string", "pattern": "^[A-Z0-9_]+$", "maxLength": 128 },
|
|
20
|
+
"severity": { "enum": ["error", "warning"] },
|
|
21
|
+
"subject": { "type": "string", "maxLength": 2048 },
|
|
22
|
+
"message": { "type": "string", "maxLength": 4096 }
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
"plan": { "$ref": "https://agent-teams.ai/schemas/docs-consumer-integration-plan/v1" },
|
|
27
|
+
"receipt": { "$ref": "https://agent-teams.ai/schemas/known-file-transaction-receipt/v1" }
|
|
28
|
+
}
|
|
29
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://agent-teams.ai/schemas/docs-consumer-integration-plan/v1",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"additionalProperties": false,
|
|
6
|
+
"required": ["schemaVersion", "cohortId", "repository", "planDigest", "outcome", "assets", "issues"],
|
|
7
|
+
"properties": {
|
|
8
|
+
"schemaVersion": { "const": 1 },
|
|
9
|
+
"cohortId": { "type": "string", "pattern": "^[a-z0-9]+(?:[._-][a-z0-9]+)*$" },
|
|
10
|
+
"repository": { "$ref": "#/$defs/repository" },
|
|
11
|
+
"planDigest": { "$ref": "#/$defs/sha256" },
|
|
12
|
+
"outcome": { "enum": ["blocked", "change-required", "current"] },
|
|
13
|
+
"assets": {
|
|
14
|
+
"type": "array",
|
|
15
|
+
"minItems": 5,
|
|
16
|
+
"maxItems": 5,
|
|
17
|
+
"items": { "$ref": "#/$defs/asset" }
|
|
18
|
+
},
|
|
19
|
+
"issues": {
|
|
20
|
+
"type": "array",
|
|
21
|
+
"maxItems": 64,
|
|
22
|
+
"items": { "$ref": "#/$defs/issue" }
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
"$defs": {
|
|
26
|
+
"sha256": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" },
|
|
27
|
+
"repository": {
|
|
28
|
+
"type": "object",
|
|
29
|
+
"additionalProperties": false,
|
|
30
|
+
"required": ["provider", "id", "nameWithOwner"],
|
|
31
|
+
"properties": {
|
|
32
|
+
"provider": { "const": "github" },
|
|
33
|
+
"id": { "type": "string", "pattern": "^[1-9][0-9]*$" },
|
|
34
|
+
"nameWithOwner": { "type": "string", "pattern": "^[A-Za-z0-9_.-]+/[A-Za-z0-9_.-]+$" }
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
"asset": {
|
|
38
|
+
"type": "object",
|
|
39
|
+
"additionalProperties": false,
|
|
40
|
+
"required": ["id", "path", "ownership", "state", "expectedDigest", "action"],
|
|
41
|
+
"properties": {
|
|
42
|
+
"id": { "enum": ["agents-route", "caller-workflow", "managed-state", "package-manifest", "skill"] },
|
|
43
|
+
"path": { "type": "string", "minLength": 1, "maxLength": 1024 },
|
|
44
|
+
"ownership": { "enum": ["full-bytes", "partial-fields", "managed-block"] },
|
|
45
|
+
"state": { "enum": ["absent", "exact-current", "known-prior", "partial-adoption", "outdated-cohort", "unknown-modified", "conflict", "unsupported"] },
|
|
46
|
+
"currentDigest": { "$ref": "#/$defs/sha256" },
|
|
47
|
+
"expectedDigest": { "$ref": "#/$defs/sha256" },
|
|
48
|
+
"action": { "enum": ["create", "none", "replace", "blocked"] }
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
"issue": {
|
|
52
|
+
"type": "object",
|
|
53
|
+
"additionalProperties": false,
|
|
54
|
+
"required": ["code", "severity", "subject", "message"],
|
|
55
|
+
"properties": {
|
|
56
|
+
"code": { "type": "string", "pattern": "^[A-Z0-9_]+$", "maxLength": 128 },
|
|
57
|
+
"severity": { "enum": ["error", "warning"] },
|
|
58
|
+
"subject": { "type": "string", "maxLength": 2048 },
|
|
59
|
+
"message": { "type": "string", "maxLength": 4096 }
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|