@agent-teams/engineering-foundation 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +20 -15
- package/dist/capabilities/workspace-dependency-declarations/adapters/outbound/pnpm-workspace/pnpm-workspace-reader.d.ts +6 -0
- package/dist/capabilities/workspace-dependency-declarations/adapters/outbound/pnpm-workspace/pnpm-workspace-reader.d.ts.map +1 -0
- package/dist/capabilities/workspace-dependency-declarations/adapters/outbound/pnpm-workspace/pnpm-workspace-reader.js +199 -0
- package/dist/capabilities/workspace-dependency-declarations/adapters/outbound/pnpm-workspace/pnpm-workspace-reader.js.map +1 -0
- package/dist/capabilities/workspace-dependency-declarations/application/model/workspace-snapshot.d.ts +27 -0
- package/dist/capabilities/workspace-dependency-declarations/application/model/workspace-snapshot.d.ts.map +1 -0
- package/dist/capabilities/workspace-dependency-declarations/application/model/workspace-snapshot.js +7 -0
- package/dist/capabilities/workspace-dependency-declarations/application/model/workspace-snapshot.js.map +1 -0
- package/dist/capabilities/workspace-dependency-declarations/application/policies/evaluate-workspace-dependencies.d.ts +5 -0
- package/dist/capabilities/workspace-dependency-declarations/application/policies/evaluate-workspace-dependencies.d.ts.map +1 -0
- package/dist/capabilities/workspace-dependency-declarations/application/policies/evaluate-workspace-dependencies.js +219 -0
- package/dist/capabilities/workspace-dependency-declarations/application/policies/evaluate-workspace-dependencies.js.map +1 -0
- package/dist/capabilities/workspace-dependency-declarations/application/ports/workspace-reader.d.ts +5 -0
- package/dist/capabilities/workspace-dependency-declarations/application/ports/workspace-reader.d.ts.map +1 -0
- package/dist/capabilities/workspace-dependency-declarations/application/ports/workspace-reader.js +2 -0
- package/dist/capabilities/workspace-dependency-declarations/application/ports/workspace-reader.js.map +1 -0
- package/dist/capabilities/workspace-dependency-declarations/application/rules.d.ts +26 -0
- package/dist/capabilities/workspace-dependency-declarations/application/rules.d.ts.map +1 -0
- package/dist/capabilities/workspace-dependency-declarations/application/rules.js +28 -0
- package/dist/capabilities/workspace-dependency-declarations/application/rules.js.map +1 -0
- package/dist/capabilities/workspace-dependency-declarations/contract/config.d.ts +19 -0
- package/dist/capabilities/workspace-dependency-declarations/contract/config.d.ts.map +1 -0
- package/dist/capabilities/workspace-dependency-declarations/contract/config.js +10 -0
- package/dist/capabilities/workspace-dependency-declarations/contract/config.js.map +1 -0
- package/dist/capabilities/workspace-dependency-declarations/module.d.ts +3 -0
- package/dist/capabilities/workspace-dependency-declarations/module.d.ts.map +1 -0
- package/dist/capabilities/workspace-dependency-declarations/module.js +45 -0
- package/dist/capabilities/workspace-dependency-declarations/module.js.map +1 -0
- package/dist/capability-runtime.d.ts +34 -0
- package/dist/capability-runtime.d.ts.map +1 -0
- package/dist/capability-runtime.js +86 -0
- package/dist/capability-runtime.js.map +1 -0
- package/dist/check-contract.d.ts +56 -0
- package/dist/check-contract.d.ts.map +1 -0
- package/dist/check-contract.js +2 -0
- package/dist/check-contract.js.map +1 -0
- package/dist/check-runner.d.ts +11 -0
- package/dist/check-runner.d.ts.map +1 -0
- package/dist/check-runner.js +70 -0
- package/dist/check-runner.js.map +1 -0
- package/dist/cli.js +73 -8
- package/dist/cli.js.map +1 -1
- package/dist/composition/capability-registry.d.ts +3 -0
- package/dist/composition/capability-registry.d.ts.map +1 -0
- package/dist/composition/capability-registry.js +6 -0
- package/dist/composition/capability-registry.js.map +1 -0
- package/dist/foundation-config.d.ts +15 -0
- package/dist/foundation-config.d.ts.map +1 -0
- package/dist/foundation-config.js +10 -0
- package/dist/foundation-config.js.map +1 -0
- package/dist/index.d.ts +0 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -1
- package/dist/index.js.map +1 -1
- package/dist/local-mode/consumer-policy.d.ts +0 -1
- package/dist/local-mode/consumer-policy.d.ts.map +1 -1
- package/dist/local-mode/consumer-policy.js +1 -4
- package/dist/local-mode/consumer-policy.js.map +1 -1
- package/dist/local-mode/inspection.d.ts +1 -1
- package/dist/local-mode/inspection.d.ts.map +1 -1
- package/dist/local-mode/inspection.js +1 -1
- package/dist/local-mode/inspection.js.map +1 -1
- package/dist/local-mode/service.js +2 -1
- package/dist/local-mode/service.js.map +1 -1
- package/dist/package-self-check.d.ts.map +1 -1
- package/dist/package-self-check.js +11 -4
- package/dist/package-self-check.js.map +1 -1
- package/dist/report-renderer.d.ts +3 -0
- package/dist/report-renderer.d.ts.map +1 -0
- package/dist/report-renderer.js +31 -0
- package/dist/report-renderer.js.map +1 -0
- package/dist/schema-catalog.d.ts +7 -0
- package/dist/schema-catalog.d.ts.map +1 -0
- package/dist/schema-catalog.js +58 -0
- package/dist/schema-catalog.js.map +1 -0
- package/dist/semantic-version.d.ts +2 -0
- package/dist/semantic-version.d.ts.map +1 -0
- package/dist/semantic-version.js +5 -0
- package/dist/semantic-version.js.map +1 -0
- package/dist/strict-yaml.d.ts +6 -0
- package/dist/strict-yaml.d.ts.map +1 -0
- package/dist/strict-yaml.js +99 -0
- package/dist/strict-yaml.js.map +1 -0
- package/package.json +6 -1
- package/presets/oxlint/base.json +39 -0
- package/presets/oxlint/node.json +8 -0
- package/presets/typescript/base.json +17 -0
- package/presets/typescript/node.json +9 -0
- package/schemas/foundation-check-report/v1.schema.json +138 -0
- package/schemas/foundation-config/v1.schema.json +49 -0
- package/schemas/workspace-dependency-declarations/v1.schema.json +61 -0
- package/dist/config.d.ts +0 -18
- package/dist/config.d.ts.map +0 -1
- package/dist/config.js +0 -106
- package/dist/config.js.map +0 -1
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
const documentation = "https://github.com/agent-teams-ai/engineering-foundation/blob/main/docs/reference/workspace-dependency-declarations.md";
|
|
2
|
+
function rule(suffix, rationale, remediation, requiresArchitectureReview = false) {
|
|
3
|
+
return Object.freeze({
|
|
4
|
+
id: `workspace.dependency-declarations.${suffix}`,
|
|
5
|
+
rationale,
|
|
6
|
+
severity: "error",
|
|
7
|
+
remediation,
|
|
8
|
+
documentation,
|
|
9
|
+
requiresArchitectureReview
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
export const RULES = Object.freeze({
|
|
13
|
+
catalogModeNotStrict: rule("catalog-mode-not-strict", "Strict catalog mode prevents undeclared dependency versions from bypassing the central version source.", "Set catalogMode: strict in pnpm-workspace.yaml."),
|
|
14
|
+
catalogReferenceMissing: rule("catalog-reference-missing", "Every catalog reference must resolve to a declared catalog entry.", "Add the dependency to the referenced catalog or correct the catalog reference."),
|
|
15
|
+
catalogVersionNotExact: rule("catalog-version-not-exact", "Exact catalog versions keep installs and automated upgrades reproducible.", "Replace the catalog range or tag with an exact semantic version."),
|
|
16
|
+
dependencyDeclaredMultipleTimes: rule("dependency-declared-multiple-times", "A package dependency must have one unambiguous dependency role.", "Keep the dependency in exactly one dependency section."),
|
|
17
|
+
developmentOnlyPackageBundled: rule("development-only-package-bundled", "Engineering tooling must never be bundled into production artifacts.", "Remove the development-only package from bundleDependencies and bundledDependencies."),
|
|
18
|
+
developmentOnlyPackageInRuntimeSection: rule("development-only-package-in-runtime-section", "Engineering tooling is a development dependency and cannot become a production runtime dependency.", "Move the package to devDependencies and remove all runtime declarations."),
|
|
19
|
+
exactRegistryDevelopmentOnlyPackageVersionNotExact: rule("exact-registry-development-only-package-version-not-exact", "Foundation tooling upgrades must be explicit and reviewable.", "Pin the development-only package to an exact registry version."),
|
|
20
|
+
duplicateWorkspacePackageName: rule("duplicate-workspace-package-name", "Workspace package names are stable identities and must be unique.", "Rename one package and update its consumers.", true),
|
|
21
|
+
externalVersionNotCataloged: rule("external-version-not-cataloged", "External dependency versions belong to the workspace catalog.", "Move the exact version to pnpm-workspace.yaml and use catalog: in package.json."),
|
|
22
|
+
internalDependencyWithoutWorkspaceProtocol: rule("internal-dependency-without-workspace-protocol", "The workspace protocol proves that an internal dependency resolves to a local package.", "Use a workspace: specifier for the internal package dependency."),
|
|
23
|
+
packageManagerNotExact: rule("package-manager-not-exact", "An exact package-manager version keeps workspace semantics reproducible.", "Pin packageManager to an exact pnpm semantic version."),
|
|
24
|
+
reservedScopePackageNotInWorkspace: rule("reserved-scope-package-not-in-workspace", "A reserved organization scope cannot silently resolve to an unrelated registry package.", "Add the package to this workspace or remove the reserved-scope dependency.", true),
|
|
25
|
+
workspacePackageNameMissing: rule("workspace-package-name-missing", "Every workspace package needs a stable package identity.", "Add a non-empty name to the package manifest.")
|
|
26
|
+
});
|
|
27
|
+
export const RULES_BY_ID = new Map(Object.values(RULES).map((metadata) => [metadata.id, metadata]));
|
|
28
|
+
//# sourceMappingURL=rules.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rules.js","sourceRoot":"","sources":["../../../../src/capabilities/workspace-dependency-declarations/application/rules.ts"],"names":[],"mappings":"AAWA,MAAM,aAAa,GACjB,wHAAwH,CAAC;AAE3H,SAAS,IAAI,CACX,MAAc,EACd,SAAiB,EACjB,WAAmB,EACnB,0BAA0B,GAAG,KAAK;IAElC,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,EAAE,EAAE,qCAAqC,MAAM,EAAE;QACjD,SAAS;QACT,QAAQ,EAAE,OAAO;QACjB,WAAW;QACX,aAAa;QACb,0BAA0B;KAC3B,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;IACjC,oBAAoB,EAAE,IAAI,CACxB,yBAAyB,EACzB,wGAAwG,EACxG,iDAAiD,CAClD;IACD,uBAAuB,EAAE,IAAI,CAC3B,2BAA2B,EAC3B,mEAAmE,EACnE,gFAAgF,CACjF;IACD,sBAAsB,EAAE,IAAI,CAC1B,2BAA2B,EAC3B,2EAA2E,EAC3E,kEAAkE,CACnE;IACD,+BAA+B,EAAE,IAAI,CACnC,oCAAoC,EACpC,iEAAiE,EACjE,wDAAwD,CACzD;IACD,6BAA6B,EAAE,IAAI,CACjC,kCAAkC,EAClC,sEAAsE,EACtE,sFAAsF,CACvF;IACD,sCAAsC,EAAE,IAAI,CAC1C,6CAA6C,EAC7C,oGAAoG,EACpG,0EAA0E,CAC3E;IACD,kDAAkD,EAAE,IAAI,CACtD,2DAA2D,EAC3D,8DAA8D,EAC9D,gEAAgE,CACjE;IACD,6BAA6B,EAAE,IAAI,CACjC,kCAAkC,EAClC,mEAAmE,EACnE,8CAA8C,EAC9C,IAAI,CACL;IACD,2BAA2B,EAAE,IAAI,CAC/B,gCAAgC,EAChC,+DAA+D,EAC/D,iFAAiF,CAClF;IACD,0CAA0C,EAAE,IAAI,CAC9C,gDAAgD,EAChD,wFAAwF,EACxF,iEAAiE,CAClE;IACD,sBAAsB,EAAE,IAAI,CAC1B,2BAA2B,EAC3B,0EAA0E,EAC1E,uDAAuD,CACxD;IACD,kCAAkC,EAAE,IAAI,CACtC,yCAAyC,EACzC,yFAAyF,EACzF,4EAA4E,EAC5E,IAAI,CACL;IACD,2BAA2B,EAAE,IAAI,CAC/B,gCAAgC,EAChC,0DAA0D,EAC1D,+CAA+C,CAChD;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,WAAW,GAAsC,IAAI,GAAG,CACnE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC,CAChE,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export declare const CAPABILITY_ID: "workspace.dependency-declarations";
|
|
2
|
+
export declare const CAPABILITY_CONFIG_SCHEMA_VERSION: 1;
|
|
3
|
+
export interface WorkspaceDependencyDeclarationsConfig {
|
|
4
|
+
readonly schemaVersion: typeof CAPABILITY_CONFIG_SCHEMA_VERSION;
|
|
5
|
+
readonly packageManager: {
|
|
6
|
+
readonly kind: "pnpm";
|
|
7
|
+
readonly workspaceManifest: "pnpm-workspace.yaml";
|
|
8
|
+
};
|
|
9
|
+
readonly policies: {
|
|
10
|
+
readonly externalDependencies: "catalog";
|
|
11
|
+
readonly catalogVersions: "exact";
|
|
12
|
+
readonly internalDependencies: "workspace-protocol";
|
|
13
|
+
readonly reservedScopes: readonly string[];
|
|
14
|
+
readonly developmentOnlyPackages: readonly string[];
|
|
15
|
+
readonly exactRegistryDevelopmentOnlyPackages: readonly string[];
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
export declare function loadCapabilityConfig(consumerRoot: string, configPath: string, signal?: AbortSignal): Promise<WorkspaceDependencyDeclarationsConfig>;
|
|
19
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/workspace-dependency-declarations/contract/config.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,aAAa,EAAG,mCAA4C,CAAC;AAC1E,eAAO,MAAM,gCAAgC,EAAG,CAAU,CAAC;AAE3D,MAAM,WAAW,qCAAqC;IACpD,QAAQ,CAAC,aAAa,EAAE,OAAO,gCAAgC,CAAC;IAChE,QAAQ,CAAC,cAAc,EAAE;QACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,iBAAiB,EAAE,qBAAqB,CAAC;KACnD,CAAC;IACF,QAAQ,CAAC,QAAQ,EAAE;QACjB,QAAQ,CAAC,oBAAoB,EAAE,SAAS,CAAC;QACzC,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;QAClC,QAAQ,CAAC,oBAAoB,EAAE,oBAAoB,CAAC;QACpD,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;QAC3C,QAAQ,CAAC,uBAAuB,EAAE,SAAS,MAAM,EAAE,CAAC;QACpD,QAAQ,CAAC,oCAAoC,EAAE,SAAS,MAAM,EAAE,CAAC;KAClE,CAAC;CACH;AAED,wBAAsB,oBAAoB,CACxC,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,qCAAqC,CAAC,CAahD"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { assertSchema } from "../../../schema-catalog.js";
|
|
2
|
+
import { loadStrictYamlFile } from "../../../strict-yaml.js";
|
|
3
|
+
export const CAPABILITY_ID = "workspace.dependency-declarations";
|
|
4
|
+
export const CAPABILITY_CONFIG_SCHEMA_VERSION = 1;
|
|
5
|
+
export async function loadCapabilityConfig(consumerRoot, configPath, signal) {
|
|
6
|
+
const input = await loadStrictYamlFile(consumerRoot, configPath, "workspace-dependency-declarations-config", signal);
|
|
7
|
+
await assertSchema("workspace-dependency-declarations/v1", input, "workspace-dependency-declarations-config");
|
|
8
|
+
return input;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../src/capabilities/workspace-dependency-declarations/contract/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,MAAM,CAAC,MAAM,aAAa,GAAG,mCAA4C,CAAC;AAC1E,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAU,CAAC;AAkB3D,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,YAAoB,EACpB,UAAkB,EAClB,MAAoB;IAEpB,MAAM,KAAK,GAAG,MAAM,kBAAkB,CACpC,YAAY,EACZ,UAAU,EACV,0CAA0C,EAC1C,MAAM,CACP,CAAC;IACF,MAAM,YAAY,CAChB,sCAAsC,EACtC,KAAK,EACL,0CAA0C,CAC3C,CAAC;IACF,OAAO,KAA8C,CAAC;AACxD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../src/capabilities/workspace-dependency-declarations/module.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,oBAAoB,EAE1B,MAAM,6BAA6B,CAAC;AASrC,wBAAgB,+CAA+C,IAAI,oBAAoB,CA6CtF"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { CapabilityInputError, capabilityReport } from "../../capability-runtime.js";
|
|
2
|
+
import { PnpmWorkspaceReader } from "./adapters/outbound/pnpm-workspace/pnpm-workspace-reader.js";
|
|
3
|
+
import { CAPABILITY_CONFIG_SCHEMA_VERSION, CAPABILITY_ID, loadCapabilityConfig } from "./contract/config.js";
|
|
4
|
+
import { evaluateWorkspaceDependencies } from "./application/policies/evaluate-workspace-dependencies.js";
|
|
5
|
+
export function createWorkspaceDependencyDeclarationsCapability() {
|
|
6
|
+
const workspaceReader = new PnpmWorkspaceReader();
|
|
7
|
+
return Object.freeze({
|
|
8
|
+
id: CAPABILITY_ID,
|
|
9
|
+
configSchemaVersion: CAPABILITY_CONFIG_SCHEMA_VERSION,
|
|
10
|
+
async run(invocation) {
|
|
11
|
+
try {
|
|
12
|
+
const config = await loadCapabilityConfig(invocation.consumerRoot, invocation.configPath, invocation.signal);
|
|
13
|
+
const snapshot = await workspaceReader.read(invocation.consumerRoot, invocation.signal);
|
|
14
|
+
return capabilityReport({
|
|
15
|
+
capabilityId: CAPABILITY_ID,
|
|
16
|
+
capabilityConfigSchemaVersion: CAPABILITY_CONFIG_SCHEMA_VERSION,
|
|
17
|
+
diagnostics: evaluateWorkspaceDependencies(snapshot, config)
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
catch (error) {
|
|
21
|
+
if (error instanceof CapabilityInputError) {
|
|
22
|
+
const cancelled = error.problem.code === "EXECUTION_CANCELLED";
|
|
23
|
+
return capabilityReport({
|
|
24
|
+
capabilityId: CAPABILITY_ID,
|
|
25
|
+
capabilityConfigSchemaVersion: CAPABILITY_CONFIG_SCHEMA_VERSION,
|
|
26
|
+
outcome: cancelled ? "cancelled" : "invalid-input",
|
|
27
|
+
problem: error.problem
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
return capabilityReport({
|
|
31
|
+
capabilityId: CAPABILITY_ID,
|
|
32
|
+
capabilityConfigSchemaVersion: CAPABILITY_CONFIG_SCHEMA_VERSION,
|
|
33
|
+
outcome: "failed",
|
|
34
|
+
problem: {
|
|
35
|
+
code: "CAPABILITY_EXECUTION_FAILED",
|
|
36
|
+
message: "Capability execution failed.",
|
|
37
|
+
phase: "capability-execution",
|
|
38
|
+
retryable: false
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module.js","sourceRoot":"","sources":["../../../src/capabilities/workspace-dependency-declarations/module.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAGjB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,mBAAmB,EAAE,MAAM,6DAA6D,CAAC;AAClG,OAAO,EACL,gCAAgC,EAChC,aAAa,EACb,oBAAoB,EACrB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,6BAA6B,EAAE,MAAM,2DAA2D,CAAC;AAE1G,MAAM,UAAU,+CAA+C;IAC7D,MAAM,eAAe,GAAG,IAAI,mBAAmB,EAAE,CAAC;IAClD,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,EAAE,EAAE,aAAa;QACjB,mBAAmB,EAAE,gCAAgC;QACrD,KAAK,CAAC,GAAG,CAAC,UAAgC;YACxC,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,oBAAoB,CACvC,UAAU,CAAC,YAAY,EACvB,UAAU,CAAC,UAAU,EACrB,UAAU,CAAC,MAAM,CAClB,CAAC;gBACF,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,IAAI,CACzC,UAAU,CAAC,YAAY,EACvB,UAAU,CAAC,MAAM,CAClB,CAAC;gBACF,OAAO,gBAAgB,CAAC;oBACtB,YAAY,EAAE,aAAa;oBAC3B,6BAA6B,EAAE,gCAAgC;oBAC/D,WAAW,EAAE,6BAA6B,CAAC,QAAQ,EAAE,MAAM,CAAC;iBAC7D,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,KAAK,YAAY,oBAAoB,EAAE,CAAC;oBAC1C,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,qBAAqB,CAAC;oBAC/D,OAAO,gBAAgB,CAAC;wBACtB,YAAY,EAAE,aAAa;wBAC3B,6BAA6B,EAAE,gCAAgC;wBAC/D,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,eAAe;wBAClD,OAAO,EAAE,KAAK,CAAC,OAAO;qBACvB,CAAC,CAAC;gBACL,CAAC;gBACD,OAAO,gBAAgB,CAAC;oBACtB,YAAY,EAAE,aAAa;oBAC3B,6BAA6B,EAAE,gCAAgC;oBAC/D,OAAO,EAAE,QAAQ;oBACjB,OAAO,EAAE;wBACP,IAAI,EAAE,6BAA6B;wBACnC,OAAO,EAAE,8BAA8B;wBACvC,KAAK,EAAE,sBAAsB;wBAC7B,SAAS,EAAE,KAAK;qBACjB;iBACF,CAAC,CAAC;YACL,CAAC;QACH,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { CapabilityReport, DiagnosticSummary, FoundationCheckReport, FoundationDiagnostic, FoundationOutcome, FoundationProblem } from "./check-contract.js";
|
|
2
|
+
export declare const OUTCOME_PRECEDENCE: Readonly<Record<FoundationOutcome, number>>;
|
|
3
|
+
export declare class CapabilityInputError extends Error {
|
|
4
|
+
readonly problem: FoundationProblem;
|
|
5
|
+
constructor(problem: FoundationProblem, options?: ErrorOptions);
|
|
6
|
+
}
|
|
7
|
+
export interface CapabilityInvocation {
|
|
8
|
+
readonly consumerRoot: string;
|
|
9
|
+
readonly configPath: string;
|
|
10
|
+
readonly signal?: AbortSignal;
|
|
11
|
+
}
|
|
12
|
+
export interface CapabilityDefinition {
|
|
13
|
+
readonly id: string;
|
|
14
|
+
readonly configSchemaVersion: number;
|
|
15
|
+
readonly run: (invocation: CapabilityInvocation) => Promise<CapabilityReport>;
|
|
16
|
+
}
|
|
17
|
+
export declare function emptySummary(): DiagnosticSummary;
|
|
18
|
+
export declare function summarizeDiagnostics(diagnostics: readonly FoundationDiagnostic[]): DiagnosticSummary;
|
|
19
|
+
export declare function sortDiagnostics(diagnostics: readonly FoundationDiagnostic[]): readonly FoundationDiagnostic[];
|
|
20
|
+
export declare function capabilityReport(input: {
|
|
21
|
+
readonly capabilityId: string;
|
|
22
|
+
readonly capabilityConfigSchemaVersion: number;
|
|
23
|
+
readonly diagnostics?: readonly FoundationDiagnostic[];
|
|
24
|
+
readonly problem?: FoundationProblem;
|
|
25
|
+
readonly outcome?: FoundationOutcome;
|
|
26
|
+
}): CapabilityReport;
|
|
27
|
+
export declare function foundationReport(input: {
|
|
28
|
+
readonly foundationVersion: string;
|
|
29
|
+
readonly capabilities?: readonly CapabilityReport[];
|
|
30
|
+
readonly problem?: FoundationProblem;
|
|
31
|
+
readonly outcome?: FoundationOutcome;
|
|
32
|
+
}): FoundationCheckReport;
|
|
33
|
+
export declare function exitCodeForOutcome(outcome: FoundationOutcome): number;
|
|
34
|
+
//# sourceMappingURL=capability-runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capability-runtime.d.ts","sourceRoot":"","sources":["../src/capability-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,qBAAqB,CAAC;AAG7B,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CAAC,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAM1E,CAAC;AAEF,qBAAa,oBAAqB,SAAQ,KAAK;IAC7C,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;IAEpC,YAAY,OAAO,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,YAAY,EAI7D;CACF;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;CAC/B;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,GAAG,EAAE,CAAC,UAAU,EAAE,oBAAoB,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;CAC/E;AAED,wBAAgB,YAAY,IAAI,iBAAiB,CAEhD;AAED,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,SAAS,oBAAoB,EAAE,GAC3C,iBAAiB,CASnB;AAED,wBAAgB,eAAe,CAC7B,WAAW,EAAE,SAAS,oBAAoB,EAAE,GAC3C,SAAS,oBAAoB,EAAE,CAYjC;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE;IACtC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,6BAA6B,EAAE,MAAM,CAAC;IAC/C,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACvD,QAAQ,CAAC,OAAO,CAAC,EAAE,iBAAiB,CAAC;IACrC,QAAQ,CAAC,OAAO,CAAC,EAAE,iBAAiB,CAAC;CACtC,GAAG,gBAAgB,CAYnB;AAYD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE;IACtC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACpD,QAAQ,CAAC,OAAO,CAAC,EAAE,iBAAiB,CAAC;IACrC,QAAQ,CAAC,OAAO,CAAC,EAAE,iBAAiB,CAAC;CACtC,GAAG,qBAAqB,CAsBxB;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,CAarE"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { FOUNDATION_REPORT_SCHEMA_VERSION } from "./check-contract.js";
|
|
2
|
+
export const OUTCOME_PRECEDENCE = {
|
|
3
|
+
passed: 0,
|
|
4
|
+
violations: 1,
|
|
5
|
+
"invalid-input": 2,
|
|
6
|
+
failed: 3,
|
|
7
|
+
cancelled: 4
|
|
8
|
+
};
|
|
9
|
+
export class CapabilityInputError extends Error {
|
|
10
|
+
problem;
|
|
11
|
+
constructor(problem, options) {
|
|
12
|
+
super(problem.message, options);
|
|
13
|
+
this.name = "CapabilityInputError";
|
|
14
|
+
this.problem = problem;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
export function emptySummary() {
|
|
18
|
+
return { errors: 0, warnings: 0, infos: 0 };
|
|
19
|
+
}
|
|
20
|
+
export function summarizeDiagnostics(diagnostics) {
|
|
21
|
+
return diagnostics.reduce((summary, diagnostic) => ({
|
|
22
|
+
errors: summary.errors + (diagnostic.severity === "error" ? 1 : 0),
|
|
23
|
+
warnings: summary.warnings + (diagnostic.severity === "warning" ? 1 : 0),
|
|
24
|
+
infos: summary.infos + (diagnostic.severity === "info" ? 1 : 0)
|
|
25
|
+
}), emptySummary());
|
|
26
|
+
}
|
|
27
|
+
export function sortDiagnostics(diagnostics) {
|
|
28
|
+
return diagnostics.toSorted((left, right) => {
|
|
29
|
+
const leftStart = left.location.start;
|
|
30
|
+
const rightStart = right.location.start;
|
|
31
|
+
return (left.ruleId.localeCompare(right.ruleId) ||
|
|
32
|
+
left.subject.localeCompare(right.subject) ||
|
|
33
|
+
left.location.path.localeCompare(right.location.path) ||
|
|
34
|
+
(leftStart?.line ?? 0) - (rightStart?.line ?? 0) ||
|
|
35
|
+
(leftStart?.column ?? 0) - (rightStart?.column ?? 0));
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
export function capabilityReport(input) {
|
|
39
|
+
const diagnostics = sortDiagnostics(input.diagnostics ?? []);
|
|
40
|
+
const outcome = input.outcome ?? (diagnostics.length === 0 ? "passed" : "violations");
|
|
41
|
+
return {
|
|
42
|
+
capabilityId: input.capabilityId,
|
|
43
|
+
capabilityConfigSchemaVersion: input.capabilityConfigSchemaVersion,
|
|
44
|
+
outcome,
|
|
45
|
+
summary: summarizeDiagnostics(diagnostics),
|
|
46
|
+
diagnostics,
|
|
47
|
+
...(input.problem === undefined ? {} : { problem: input.problem })
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
function highestOutcome(outcomes) {
|
|
51
|
+
return outcomes.reduce((highest, outcome) => OUTCOME_PRECEDENCE[outcome] > OUTCOME_PRECEDENCE[highest]
|
|
52
|
+
? outcome
|
|
53
|
+
: highest, "passed");
|
|
54
|
+
}
|
|
55
|
+
export function foundationReport(input) {
|
|
56
|
+
const capabilities = (input.capabilities ?? []).toSorted((left, right) => left.capabilityId.localeCompare(right.capabilityId));
|
|
57
|
+
const summary = capabilities.reduce((total, report) => ({
|
|
58
|
+
errors: total.errors + report.summary.errors,
|
|
59
|
+
warnings: total.warnings + report.summary.warnings,
|
|
60
|
+
infos: total.infos + report.summary.infos
|
|
61
|
+
}), emptySummary());
|
|
62
|
+
return {
|
|
63
|
+
reportSchemaVersion: FOUNDATION_REPORT_SCHEMA_VERSION,
|
|
64
|
+
foundationVersion: input.foundationVersion,
|
|
65
|
+
coverage: "full",
|
|
66
|
+
outcome: input.outcome ?? highestOutcome(capabilities.map((report) => report.outcome)),
|
|
67
|
+
summary,
|
|
68
|
+
capabilities,
|
|
69
|
+
...(input.problem === undefined ? {} : { problem: input.problem })
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
export function exitCodeForOutcome(outcome) {
|
|
73
|
+
switch (outcome) {
|
|
74
|
+
case "passed":
|
|
75
|
+
return 0;
|
|
76
|
+
case "violations":
|
|
77
|
+
return 1;
|
|
78
|
+
case "invalid-input":
|
|
79
|
+
return 2;
|
|
80
|
+
case "failed":
|
|
81
|
+
return 3;
|
|
82
|
+
case "cancelled":
|
|
83
|
+
return 130;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=capability-runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capability-runtime.js","sourceRoot":"","sources":["../src/capability-runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
export declare const FOUNDATION_REPORT_SCHEMA_VERSION: 1;
|
|
2
|
+
export type FoundationOutcome = "passed" | "violations" | "invalid-input" | "failed" | "cancelled";
|
|
3
|
+
export type DiagnosticSeverity = "error" | "warning" | "info";
|
|
4
|
+
export interface DiagnosticPosition {
|
|
5
|
+
readonly line: number;
|
|
6
|
+
readonly column: number;
|
|
7
|
+
}
|
|
8
|
+
export interface DiagnosticLocation {
|
|
9
|
+
readonly path: string;
|
|
10
|
+
readonly start?: DiagnosticPosition;
|
|
11
|
+
readonly end?: DiagnosticPosition;
|
|
12
|
+
}
|
|
13
|
+
export interface DiagnosticEvidence {
|
|
14
|
+
readonly kind: string;
|
|
15
|
+
readonly value: string;
|
|
16
|
+
}
|
|
17
|
+
export interface FoundationDiagnostic {
|
|
18
|
+
readonly ruleId: string;
|
|
19
|
+
readonly severity: DiagnosticSeverity;
|
|
20
|
+
readonly subject: string;
|
|
21
|
+
readonly message: string;
|
|
22
|
+
readonly location: DiagnosticLocation;
|
|
23
|
+
readonly relatedLocations: readonly DiagnosticLocation[];
|
|
24
|
+
readonly evidence: readonly DiagnosticEvidence[];
|
|
25
|
+
readonly remediation: string;
|
|
26
|
+
readonly requiresArchitectureReview: boolean;
|
|
27
|
+
}
|
|
28
|
+
export interface FoundationProblem {
|
|
29
|
+
readonly code: string;
|
|
30
|
+
readonly message: string;
|
|
31
|
+
readonly phase: string;
|
|
32
|
+
readonly retryable: boolean;
|
|
33
|
+
}
|
|
34
|
+
export interface DiagnosticSummary {
|
|
35
|
+
readonly errors: number;
|
|
36
|
+
readonly warnings: number;
|
|
37
|
+
readonly infos: number;
|
|
38
|
+
}
|
|
39
|
+
export interface CapabilityReport {
|
|
40
|
+
readonly capabilityId: string;
|
|
41
|
+
readonly capabilityConfigSchemaVersion: number;
|
|
42
|
+
readonly outcome: FoundationOutcome;
|
|
43
|
+
readonly summary: DiagnosticSummary;
|
|
44
|
+
readonly diagnostics: readonly FoundationDiagnostic[];
|
|
45
|
+
readonly problem?: FoundationProblem;
|
|
46
|
+
}
|
|
47
|
+
export interface FoundationCheckReport {
|
|
48
|
+
readonly reportSchemaVersion: typeof FOUNDATION_REPORT_SCHEMA_VERSION;
|
|
49
|
+
readonly foundationVersion: string;
|
|
50
|
+
readonly coverage: "full";
|
|
51
|
+
readonly outcome: FoundationOutcome;
|
|
52
|
+
readonly summary: DiagnosticSummary;
|
|
53
|
+
readonly capabilities: readonly CapabilityReport[];
|
|
54
|
+
readonly problem?: FoundationProblem;
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=check-contract.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-contract.d.ts","sourceRoot":"","sources":["../src/check-contract.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gCAAgC,EAAG,CAAU,CAAC;AAE3D,MAAM,MAAM,iBAAiB,GACzB,QAAQ,GACR,YAAY,GACZ,eAAe,GACf,QAAQ,GACR,WAAW,CAAC;AAEhB,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AAE9D,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,CAAC,EAAE,kBAAkB,CAAC;IACpC,QAAQ,CAAC,GAAG,CAAC,EAAE,kBAAkB,CAAC;CACnC;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAC;IACtC,QAAQ,CAAC,gBAAgB,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACzD,QAAQ,CAAC,QAAQ,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACjD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,0BAA0B,EAAE,OAAO,CAAC;CAC9C;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,6BAA6B,EAAE,MAAM,CAAC;IAC/C,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;IACpC,QAAQ,CAAC,WAAW,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACtD,QAAQ,CAAC,OAAO,CAAC,EAAE,iBAAiB,CAAC;CACtC;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,mBAAmB,EAAE,OAAO,gCAAgC,CAAC;IACtE,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;IACpC,QAAQ,CAAC,YAAY,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACnD,QAAQ,CAAC,OAAO,CAAC,EAAE,iBAAiB,CAAC;CACtC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-contract.js","sourceRoot":"","sources":["../src/check-contract.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAU,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { FoundationCheckReport } from "./check-contract.js";
|
|
2
|
+
export interface FoundationCheckInvocation {
|
|
3
|
+
readonly consumerRoot: string;
|
|
4
|
+
readonly foundationVersion: string;
|
|
5
|
+
readonly capabilityId?: string;
|
|
6
|
+
readonly signal?: AbortSignal;
|
|
7
|
+
}
|
|
8
|
+
export declare function runFoundationCheck(invocation: FoundationCheckInvocation): Promise<FoundationCheckReport>;
|
|
9
|
+
export declare function supportedCapabilityIds(): readonly string[];
|
|
10
|
+
export declare function defaultCapabilityId(): string;
|
|
11
|
+
//# sourceMappingURL=check-runner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-runner.d.ts","sourceRoot":"","sources":["../src/check-runner.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAOjE,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;CAC/B;AA0BD,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,yBAAyB,GACpC,OAAO,CAAC,qBAAqB,CAAC,CA6ChC;AAED,wBAAgB,sBAAsB,IAAI,SAAS,MAAM,EAAE,CAE1D;AAED,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { CapabilityInputError, foundationReport } from "./capability-runtime.js";
|
|
2
|
+
import { CAPABILITY_REGISTRY } from "./composition/capability-registry.js";
|
|
3
|
+
import { loadFoundationConfig, WORKSPACE_DEPENDENCY_DECLARATIONS_CAPABILITY } from "./foundation-config.js";
|
|
4
|
+
function rootProblemReport(foundationVersion, error) {
|
|
5
|
+
if (error instanceof CapabilityInputError) {
|
|
6
|
+
const cancelled = error.problem.code === "EXECUTION_CANCELLED";
|
|
7
|
+
return foundationReport({
|
|
8
|
+
foundationVersion,
|
|
9
|
+
outcome: cancelled ? "cancelled" : "invalid-input",
|
|
10
|
+
problem: error.problem
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
return foundationReport({
|
|
14
|
+
foundationVersion,
|
|
15
|
+
outcome: "failed",
|
|
16
|
+
problem: {
|
|
17
|
+
code: "FOUNDATION_CHECK_FAILED",
|
|
18
|
+
message: "Foundation check failed before capability execution.",
|
|
19
|
+
phase: "foundation-check",
|
|
20
|
+
retryable: false
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
export async function runFoundationCheck(invocation) {
|
|
25
|
+
try {
|
|
26
|
+
const config = await loadFoundationConfig(invocation.consumerRoot, invocation.signal);
|
|
27
|
+
const declared = Object.entries(config.capabilities);
|
|
28
|
+
const selected = invocation.capabilityId === undefined
|
|
29
|
+
? declared
|
|
30
|
+
: declared.filter(([id]) => id === invocation.capabilityId);
|
|
31
|
+
if (invocation.capabilityId !== undefined && selected.length === 0) {
|
|
32
|
+
throw new CapabilityInputError({
|
|
33
|
+
code: "CAPABILITY_NOT_DECLARED",
|
|
34
|
+
message: `Capability is not declared by the consumer: ${invocation.capabilityId}.`,
|
|
35
|
+
phase: "capability-selection",
|
|
36
|
+
retryable: false
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
const reports = await Promise.all(selected.map(async ([id, capabilityConfig]) => {
|
|
40
|
+
const capability = CAPABILITY_REGISTRY.get(id);
|
|
41
|
+
if (capability === undefined) {
|
|
42
|
+
throw new CapabilityInputError({
|
|
43
|
+
code: "CAPABILITY_UNSUPPORTED",
|
|
44
|
+
message: `Capability is not supported by this foundation version: ${id}.`,
|
|
45
|
+
phase: "capability-selection",
|
|
46
|
+
retryable: false
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
return capability.run({
|
|
50
|
+
consumerRoot: invocation.consumerRoot,
|
|
51
|
+
configPath: capabilityConfig.configPath,
|
|
52
|
+
...(invocation.signal === undefined ? {} : { signal: invocation.signal })
|
|
53
|
+
});
|
|
54
|
+
}));
|
|
55
|
+
return foundationReport({
|
|
56
|
+
foundationVersion: invocation.foundationVersion,
|
|
57
|
+
capabilities: reports
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
catch (error) {
|
|
61
|
+
return rootProblemReport(invocation.foundationVersion, error);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
export function supportedCapabilityIds() {
|
|
65
|
+
return [...CAPABILITY_REGISTRY.keys()].toSorted();
|
|
66
|
+
}
|
|
67
|
+
export function defaultCapabilityId() {
|
|
68
|
+
return WORKSPACE_DEPENDENCY_DECLARATIONS_CAPABILITY;
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=check-runner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-runner.js","sourceRoot":"","sources":["../src/check-runner.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EACjB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,EACL,oBAAoB,EACpB,4CAA4C,EAC7C,MAAM,wBAAwB,CAAC;AAShC,SAAS,iBAAiB,CACxB,iBAAyB,EACzB,KAAc;IAEd,IAAI,KAAK,YAAY,oBAAoB,EAAE,CAAC;QAC1C,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,qBAAqB,CAAC;QAC/D,OAAO,gBAAgB,CAAC;YACtB,iBAAiB;YACjB,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,eAAe;YAClD,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC,CAAC;IACL,CAAC;IACD,OAAO,gBAAgB,CAAC;QACtB,iBAAiB;QACjB,OAAO,EAAE,QAAQ;QACjB,OAAO,EAAE;YACP,IAAI,EAAE,yBAAyB;YAC/B,OAAO,EAAE,sDAAsD;YAC/D,KAAK,EAAE,kBAAkB;YACzB,SAAS,EAAE,KAAK;SACjB;KACF,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,UAAqC;IAErC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,oBAAoB,CACvC,UAAU,CAAC,YAAY,EACvB,UAAU,CAAC,MAAM,CAClB,CAAC;QACF,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QACrD,MAAM,QAAQ,GACZ,UAAU,CAAC,YAAY,KAAK,SAAS;YACnC,CAAC,CAAC,QAAQ;YACV,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,UAAU,CAAC,YAAY,CAAC,CAAC;QAChE,IAAI,UAAU,CAAC,YAAY,KAAK,SAAS,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnE,MAAM,IAAI,oBAAoB,CAAC;gBAC7B,IAAI,EAAE,yBAAyB;gBAC/B,OAAO,EAAE,+CAA+C,UAAU,CAAC,YAAY,GAAG;gBAClF,KAAK,EAAE,sBAAsB;gBAC7B,SAAS,EAAE,KAAK;aACjB,CAAC,CAAC;QACL,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,gBAAgB,CAAC,EAAE,EAAE;YAC5C,MAAM,UAAU,GAAG,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC/C,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;gBAC7B,MAAM,IAAI,oBAAoB,CAAC;oBAC7B,IAAI,EAAE,wBAAwB;oBAC9B,OAAO,EAAE,2DAA2D,EAAE,GAAG;oBACzE,KAAK,EAAE,sBAAsB;oBAC7B,SAAS,EAAE,KAAK;iBACjB,CAAC,CAAC;YACL,CAAC;YACD,OAAO,UAAU,CAAC,GAAG,CAAC;gBACpB,YAAY,EAAE,UAAU,CAAC,YAAY;gBACrC,UAAU,EAAE,gBAAgB,CAAC,UAAU;gBACvC,GAAG,CAAC,UAAU,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC;aAC1E,CAAC,CAAC;QACL,CAAC,CAAC,CACH,CAAC;QACF,OAAO,gBAAgB,CAAC;YACtB,iBAAiB,EAAE,UAAU,CAAC,iBAAiB;YAC/C,YAAY,EAAE,OAAO;SACtB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,iBAAiB,CAAC,UAAU,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;IAChE,CAAC;AACH,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,OAAO,CAAC,GAAG,mBAAmB,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,OAAO,4CAA4C,CAAC;AACtD,CAAC"}
|
package/dist/cli.js
CHANGED
|
@@ -2,14 +2,19 @@
|
|
|
2
2
|
import { readFile } from "node:fs/promises";
|
|
3
3
|
import { dirname, resolve } from "node:path";
|
|
4
4
|
import { fileURLToPath } from "node:url";
|
|
5
|
+
import { exitCodeForOutcome } from "./capability-runtime.js";
|
|
6
|
+
import { runFoundationCheck } from "./check-runner.js";
|
|
7
|
+
import { RULES_BY_ID } from "./capabilities/workspace-dependency-declarations/application/rules.js";
|
|
5
8
|
import { FoundationError } from "./errors.js";
|
|
6
9
|
import { NodeProcessRunner } from "./local-mode/process-runner.js";
|
|
7
10
|
import { FoundationLocalModeService } from "./local-mode/service.js";
|
|
8
11
|
import { inspectFoundationPackage } from "./package-self-check.js";
|
|
12
|
+
import { renderFoundationReportText } from "./report-renderer.js";
|
|
13
|
+
import { isFoundationSchemaId, readFoundationSchema } from "./schema-catalog.js";
|
|
9
14
|
function parseArguments(args) {
|
|
10
15
|
const positional = [];
|
|
11
16
|
let consumerRoot = process.cwd();
|
|
12
|
-
let
|
|
17
|
+
let format = "text";
|
|
13
18
|
for (let index = 1; index < args.length; index += 1) {
|
|
14
19
|
const value = args[index];
|
|
15
20
|
if (value === "--consumer") {
|
|
@@ -21,7 +26,18 @@ function parseArguments(args) {
|
|
|
21
26
|
index += 1;
|
|
22
27
|
}
|
|
23
28
|
else if (value === "--json") {
|
|
24
|
-
|
|
29
|
+
format = "json";
|
|
30
|
+
}
|
|
31
|
+
else if (value === "--format") {
|
|
32
|
+
const candidate = args[index + 1];
|
|
33
|
+
if (candidate !== "json" && candidate !== "text") {
|
|
34
|
+
throw new FoundationError("CONSUMER_INVALID", "--format requires json or text.");
|
|
35
|
+
}
|
|
36
|
+
format = candidate;
|
|
37
|
+
index += 1;
|
|
38
|
+
}
|
|
39
|
+
else if (value === "--") {
|
|
40
|
+
continue;
|
|
25
41
|
}
|
|
26
42
|
else if (value !== undefined) {
|
|
27
43
|
positional.push(value);
|
|
@@ -31,7 +47,7 @@ function parseArguments(args) {
|
|
|
31
47
|
command: args[0] ?? "help",
|
|
32
48
|
positional,
|
|
33
49
|
consumerRoot,
|
|
34
|
-
|
|
50
|
+
format
|
|
35
51
|
};
|
|
36
52
|
}
|
|
37
53
|
function printStatus(status, json) {
|
|
@@ -83,6 +99,9 @@ function printDevOnlyStatus(status, json) {
|
|
|
83
99
|
}
|
|
84
100
|
function printHelp() {
|
|
85
101
|
process.stdout.write(`Usage:
|
|
102
|
+
agent-teams-foundation check [capability] [--consumer <path>] [--format text|json]
|
|
103
|
+
agent-teams-foundation explain <rule-id> [--format text|json]
|
|
104
|
+
agent-teams-foundation schema <schema-id>
|
|
86
105
|
agent-teams-foundation attach <path> [--consumer <path>]
|
|
87
106
|
agent-teams-foundation status [--consumer <path>] [--json]
|
|
88
107
|
agent-teams-foundation detach [--consumer <path>] [--json]
|
|
@@ -102,6 +121,7 @@ async function packageVersion() {
|
|
|
102
121
|
}
|
|
103
122
|
async function main() {
|
|
104
123
|
const parsed = parseArguments(process.argv.slice(2));
|
|
124
|
+
const json = parsed.format === "json";
|
|
105
125
|
const service = new FoundationLocalModeService({
|
|
106
126
|
runner: new NodeProcessRunner()
|
|
107
127
|
});
|
|
@@ -112,19 +132,56 @@ async function main() {
|
|
|
112
132
|
throw new FoundationError("PACKAGE_INVALID", "attach requires a foundation repository or package path.");
|
|
113
133
|
}
|
|
114
134
|
const result = await service.attach(parsed.consumerRoot, target);
|
|
115
|
-
printStatus(result.status,
|
|
135
|
+
printStatus(result.status, json);
|
|
116
136
|
break;
|
|
117
137
|
}
|
|
118
138
|
case "assert-dev-only": {
|
|
119
|
-
printDevOnlyStatus(await service.assertDevOnly(parsed.consumerRoot),
|
|
139
|
+
printDevOnlyStatus(await service.assertDevOnly(parsed.consumerRoot), json);
|
|
120
140
|
break;
|
|
121
141
|
}
|
|
122
142
|
case "assert-registry": {
|
|
123
|
-
printStatus(await service.assertRegistry(parsed.consumerRoot),
|
|
143
|
+
printStatus(await service.assertRegistry(parsed.consumerRoot), json);
|
|
124
144
|
break;
|
|
125
145
|
}
|
|
126
146
|
case "detach": {
|
|
127
|
-
printStatus(await service.detach(parsed.consumerRoot),
|
|
147
|
+
printStatus(await service.detach(parsed.consumerRoot), json);
|
|
148
|
+
break;
|
|
149
|
+
}
|
|
150
|
+
case "check": {
|
|
151
|
+
const controller = new AbortController();
|
|
152
|
+
const cancel = () => controller.abort();
|
|
153
|
+
process.once("SIGINT", cancel);
|
|
154
|
+
try {
|
|
155
|
+
const report = await runFoundationCheck({
|
|
156
|
+
consumerRoot: parsed.consumerRoot,
|
|
157
|
+
foundationVersion: await packageVersion(),
|
|
158
|
+
...(parsed.positional[0] === undefined
|
|
159
|
+
? {}
|
|
160
|
+
: { capabilityId: parsed.positional[0] }),
|
|
161
|
+
signal: controller.signal
|
|
162
|
+
});
|
|
163
|
+
process.stdout.write(json
|
|
164
|
+
? `${JSON.stringify(report, null, 2)}\n`
|
|
165
|
+
: renderFoundationReportText(report));
|
|
166
|
+
process.exitCode = exitCodeForOutcome(report.outcome);
|
|
167
|
+
}
|
|
168
|
+
finally {
|
|
169
|
+
process.removeListener("SIGINT", cancel);
|
|
170
|
+
}
|
|
171
|
+
break;
|
|
172
|
+
}
|
|
173
|
+
case "explain": {
|
|
174
|
+
const ruleId = parsed.positional[0];
|
|
175
|
+
if (ruleId === undefined) {
|
|
176
|
+
throw new FoundationError("CONSUMER_INVALID", "explain requires a rule ID.");
|
|
177
|
+
}
|
|
178
|
+
const metadata = RULES_BY_ID.get(ruleId);
|
|
179
|
+
if (metadata === undefined) {
|
|
180
|
+
throw new FoundationError("CONSUMER_INVALID", `Unknown rule ID: ${ruleId}.`);
|
|
181
|
+
}
|
|
182
|
+
process.stdout.write(json
|
|
183
|
+
? `${JSON.stringify(metadata, null, 2)}\n`
|
|
184
|
+
: `${metadata.id}\n${metadata.rationale}\nFix: ${metadata.remediation}\nDocs: ${metadata.documentation}\n`);
|
|
128
185
|
break;
|
|
129
186
|
}
|
|
130
187
|
case "help":
|
|
@@ -135,7 +192,7 @@ async function main() {
|
|
|
135
192
|
}
|
|
136
193
|
case "status": {
|
|
137
194
|
const status = await service.status(parsed.consumerRoot);
|
|
138
|
-
printStatus(status,
|
|
195
|
+
printStatus(status, json);
|
|
139
196
|
if (status.mode === "INVALID") {
|
|
140
197
|
process.exitCode = 1;
|
|
141
198
|
}
|
|
@@ -147,6 +204,14 @@ async function main() {
|
|
|
147
204
|
process.stdout.write(`${JSON.stringify(result, null, 2)}\n`);
|
|
148
205
|
break;
|
|
149
206
|
}
|
|
207
|
+
case "schema": {
|
|
208
|
+
const schemaId = parsed.positional[0];
|
|
209
|
+
if (schemaId === undefined || !isFoundationSchemaId(schemaId)) {
|
|
210
|
+
throw new FoundationError("CONSUMER_INVALID", `Unknown schema ID: ${schemaId ?? "missing"}.`);
|
|
211
|
+
}
|
|
212
|
+
process.stdout.write(await readFoundationSchema(schemaId));
|
|
213
|
+
break;
|
|
214
|
+
}
|
|
150
215
|
case "version":
|
|
151
216
|
case "--version":
|
|
152
217
|
case "-v": {
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AAKrE,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,uEAAuE,CAAC;AACpG,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AAKrE,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACrB,MAAM,qBAAqB,CAAC;AAW7B,SAAS,cAAc,CAAC,IAAuB;IAC7C,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,IAAI,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IACjC,IAAI,MAAM,GAAiB,MAAM,CAAC;IAElC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACpD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1B,IAAI,KAAK,KAAK,YAAY,EAAE,CAAC;YAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YAClC,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;gBAC5B,MAAM,IAAI,eAAe,CACvB,kBAAkB,EAClB,6BAA6B,CAC9B,CAAC;YACJ,CAAC;YACD,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;YAClC,KAAK,IAAI,CAAC,CAAC;QACb,CAAC;aAAM,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,MAAM,GAAG,MAAM,CAAC;QAClB,CAAC;aAAM,IAAI,KAAK,KAAK,UAAU,EAAE,CAAC;YAChC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YAClC,IAAI,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;gBACjD,MAAM,IAAI,eAAe,CACvB,kBAAkB,EAClB,iCAAiC,CAClC,CAAC;YACJ,CAAC;YACD,MAAM,GAAG,SAAS,CAAC;YACnB,KAAK,IAAI,CAAC,CAAC;QACb,CAAC;aAAM,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YAC1B,SAAS;QACX,CAAC;aAAM,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YAC/B,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAED,OAAO;QACL,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,MAAM;QAC1B,UAAU;QACV,YAAY;QACZ,MAAM;KACP,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,MAAwB,EAAE,IAAa;IAC1D,IAAI,IAAI,EAAE,CAAC;QACT,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QAC7D,OAAO;IACT,CAAC;IAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC;IAC1D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,MAAM,CAAC,YAAY,IAAI,CAAC,CAAC;IAC3D,IAAI,MAAM,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;QACxC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,MAAM,CAAC,cAAc,IAAI,CAAC,CAAC;IACvE,CAAC;IACD,IAAI,MAAM,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,MAAM,CAAC,gBAAgB,IAAI,CAAC,CAAC;IAC1E,CAAC;IACD,IAAI,MAAM,CAAC,oBAAoB,KAAK,SAAS,EAAE,CAAC;QAC9C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,MAAM,CAAC,oBAAoB,IAAI,CAAC,CAAC;IAC3E,CAAC;IACD,IAAI,MAAM,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;QACtC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,MAAM,CAAC,YAAY,IAAI,CAAC,CAAC;IAC7D,CAAC;IACD,IAAI,MAAM,CAAC,kBAAkB,KAAK,SAAS,EAAE,CAAC;QAC5C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,MAAM,CAAC,kBAAkB,IAAI,CAAC,CAAC;IACzE,CAAC;IACD,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QACnC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,MAAM,CAAC,SAAS,CAAC,SAAS,IAAI,CAAC,CAAC;QACzE,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,mBAAmB,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAChE,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;QACzC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,MAAM,CAAC,eAAe,IAAI,CAAC,CAAC;IACtE,CAAC;IACD,IAAI,MAAM,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;QACxC,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,kBAAkB,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAC3D,CAAC;IACJ,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC;IAC5C,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CACzB,MAA+B,EAC/B,IAAa;IAEb,IAAI,IAAI,EAAE,CAAC;QACT,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QAC7D,OAAO;IACT,CAAC;IACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;IACjE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,MAAM,CAAC,YAAY,IAAI,CAAC,CAAC;IAC3D,IAAI,MAAM,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;QACxC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,MAAM,CAAC,cAAc,IAAI,CAAC,CAAC;IACvE,CAAC;AACH,CAAC;AAED,SAAS,SAAS;IAChB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;;;;;;;;;;;CAWtB,CAAC,CAAC;AACH,CAAC;AAED,KAAK,UAAU,cAAc;IAC3B,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACrE,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CACzB,MAAM,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CACpC,CAAC;IAC3B,IAAI,OAAO,QAAQ,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzC,MAAM,IAAI,eAAe,CACvB,iBAAiB,EACjB,4CAA4C,CAC7C,CAAC;IACJ,CAAC;IACD,OAAO,QAAQ,CAAC,OAAO,CAAC;AAC1B,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACrD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC;IACtC,MAAM,OAAO,GAAG,IAAI,0BAA0B,CAAC;QAC7C,MAAM,EAAE,IAAI,iBAAiB,EAAE;KAChC,CAAC,CAAC;IAEH,QAAQ,MAAM,CAAC,OAAO,EAAE,CAAC;QACvB,KAAK,QAAQ,EAAE,CAAC;YACd,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YACpC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,MAAM,IAAI,eAAe,CACvB,iBAAiB,EACjB,0DAA0D,CAC3D,CAAC;YACJ,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;YACjE,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YACjC,MAAM;QACR,CAAC;QACD,KAAK,iBAAiB,EAAE,CAAC;YACvB,kBAAkB,CAChB,MAAM,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,YAAY,CAAC,EAChD,IAAI,CACL,CAAC;YACF,MAAM;QACR,CAAC;QACD,KAAK,iBAAiB,EAAE,CAAC;YACvB,WAAW,CACT,MAAM,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,YAAY,CAAC,EACjD,IAAI,CACL,CAAC;YACF,MAAM;QACR,CAAC;QACD,KAAK,QAAQ,EAAE,CAAC;YACd,WAAW,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,CAAC;YAC7D,MAAM;QACR,CAAC;QACD,KAAK,OAAO,EAAE,CAAC;YACb,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;YACzC,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YACxC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC/B,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC;oBACtC,YAAY,EAAE,MAAM,CAAC,YAAY;oBACjC,iBAAiB,EAAE,MAAM,cAAc,EAAE;oBACzC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,SAAS;wBACpC,CAAC,CAAC,EAAE;wBACJ,CAAC,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC3C,MAAM,EAAE,UAAU,CAAC,MAAM;iBAC1B,CAAC,CAAC;gBACH,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,IAAI;oBACF,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI;oBACxC,CAAC,CAAC,0BAA0B,CAAC,MAAM,CAAC,CACvC,CAAC;gBACF,OAAO,CAAC,QAAQ,GAAG,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACxD,CAAC;oBAAS,CAAC;gBACT,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC3C,CAAC;YACD,MAAM;QACR,CAAC;QACD,KAAK,SAAS,EAAE,CAAC;YACf,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YACpC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,MAAM,IAAI,eAAe,CAAC,kBAAkB,EAAE,6BAA6B,CAAC,CAAC;YAC/E,CAAC;YACD,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACzC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC3B,MAAM,IAAI,eAAe,CAAC,kBAAkB,EAAE,oBAAoB,MAAM,GAAG,CAAC,CAAC;YAC/E,CAAC;YACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,IAAI;gBACF,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI;gBAC1C,CAAC,CAAC,GAAG,QAAQ,CAAC,EAAE,KAAK,QAAQ,CAAC,SAAS,UAAU,QAAQ,CAAC,WAAW,WAAW,QAAQ,CAAC,aAAa,IAAI,CAC7G,CAAC;YACF,MAAM;QACR,CAAC;QACD,KAAK,MAAM,CAAC;QACZ,KAAK,QAAQ,CAAC;QACd,KAAK,IAAI,EAAE,CAAC;YACV,SAAS,EAAE,CAAC;YACZ,MAAM;QACR,CAAC;QACD,KAAK,QAAQ,EAAE,CAAC;YACd,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YACzD,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC1B,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC9B,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACvB,CAAC;YACD,MAAM;QACR,CAAC;QACD,KAAK,YAAY,EAAE,CAAC;YAClB,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACrE,MAAM,MAAM,GAAG,MAAM,wBAAwB,CAAC,WAAW,CAAC,CAAC;YAC3D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;YAC7D,MAAM;QACR,CAAC;QACD,KAAK,QAAQ,EAAE,CAAC;YACd,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YACtC,IAAI,QAAQ,KAAK,SAAS,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC9D,MAAM,IAAI,eAAe,CACvB,kBAAkB,EAClB,sBAAsB,QAAQ,IAAI,SAAS,GAAG,CAC/C,CAAC;YACJ,CAAC;YACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC3D,MAAM;QACR,CAAC;QACD,KAAK,SAAS,CAAC;QACf,KAAK,WAAW,CAAC;QACjB,KAAK,IAAI,EAAE,CAAC;YACV,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,cAAc,EAAE,IAAI,CAAC,CAAC;YACpD,MAAM;QACR,CAAC;QACD,SAAS,CAAC;YACR,MAAM,IAAI,eAAe,CACvB,kBAAkB,EAClB,oBAAoB,MAAM,CAAC,OAAO,GAAG,CACtC,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC;AAED,IAAI,CAAC;IACH,MAAM,IAAI,EAAE,CAAC;AACf,CAAC;AAAC,OAAO,KAAK,EAAE,CAAC;IACf,IAAI,KAAK,YAAY,eAAe,EAAE,CAAC;QACrC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;IAC5D,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,eAAe,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAC1E,CAAC;IACJ,CAAC;IACD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC"}
|