@adhamalkhaja/seyola-runtime 0.11.4
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/LICENSE +56 -0
- package/README.md +87 -0
- package/dist/adapters/claude-code-local/index.d.ts +60 -0
- package/dist/adapters/claude-code-local/index.d.ts.map +1 -0
- package/dist/adapters/claude-code-local/index.js +270 -0
- package/dist/adapters/claude-code-local/index.js.map +1 -0
- package/dist/bundle/index.d.ts +60 -0
- package/dist/bundle/index.d.ts.map +1 -0
- package/dist/bundle/index.js +989 -0
- package/dist/bundle/index.js.map +1 -0
- package/dist/cli/index.d.ts +12 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +207 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/compile-plan/budgets.d.ts +23 -0
- package/dist/compile-plan/budgets.d.ts.map +1 -0
- package/dist/compile-plan/budgets.js +55 -0
- package/dist/compile-plan/budgets.js.map +1 -0
- package/dist/compile-plan/graph.d.ts +40 -0
- package/dist/compile-plan/graph.d.ts.map +1 -0
- package/dist/compile-plan/graph.js +114 -0
- package/dist/compile-plan/graph.js.map +1 -0
- package/dist/compile-plan/index.d.ts +28 -0
- package/dist/compile-plan/index.d.ts.map +1 -0
- package/dist/compile-plan/index.js +423 -0
- package/dist/compile-plan/index.js.map +1 -0
- package/dist/compile-plan/registries.d.ts +35 -0
- package/dist/compile-plan/registries.d.ts.map +1 -0
- package/dist/compile-plan/registries.js +81 -0
- package/dist/compile-plan/registries.js.map +1 -0
- package/dist/compile-plan/resolver.d.ts +24 -0
- package/dist/compile-plan/resolver.d.ts.map +1 -0
- package/dist/compile-plan/resolver.js +57 -0
- package/dist/compile-plan/resolver.js.map +1 -0
- package/dist/compile-plan/types.d.ts +192 -0
- package/dist/compile-plan/types.d.ts.map +1 -0
- package/dist/compile-plan/types.js +7 -0
- package/dist/compile-plan/types.js.map +1 -0
- package/dist/doctor/index.d.ts +43 -0
- package/dist/doctor/index.d.ts.map +1 -0
- package/dist/doctor/index.js +224 -0
- package/dist/doctor/index.js.map +1 -0
- package/dist/init/index.d.ts +53 -0
- package/dist/init/index.d.ts.map +1 -0
- package/dist/init/index.js +414 -0
- package/dist/init/index.js.map +1 -0
- package/dist/lib/ajvSetup.d.ts +30 -0
- package/dist/lib/ajvSetup.d.ts.map +1 -0
- package/dist/lib/ajvSetup.js +44 -0
- package/dist/lib/ajvSetup.js.map +1 -0
- package/dist/lib/loadJson.d.ts +21 -0
- package/dist/lib/loadJson.d.ts.map +1 -0
- package/dist/lib/loadJson.js +43 -0
- package/dist/lib/loadJson.js.map +1 -0
- package/dist/lib/loadYaml.d.ts +18 -0
- package/dist/lib/loadYaml.d.ts.map +1 -0
- package/dist/lib/loadYaml.js +41 -0
- package/dist/lib/loadYaml.js.map +1 -0
- package/dist/lib/paths.d.ts +22 -0
- package/dist/lib/paths.d.ts.map +1 -0
- package/dist/lib/paths.js +61 -0
- package/dist/lib/paths.js.map +1 -0
- package/dist/run-plan/index.d.ts +17 -0
- package/dist/run-plan/index.d.ts.map +1 -0
- package/dist/run-plan/index.js +235 -0
- package/dist/run-plan/index.js.map +1 -0
- package/dist/run-plan/types.d.ts +53 -0
- package/dist/run-plan/types.d.ts.map +1 -0
- package/dist/run-plan/types.js +6 -0
- package/dist/run-plan/types.js.map +1 -0
- package/dist/run-step/contextPacket.d.ts +39 -0
- package/dist/run-step/contextPacket.d.ts.map +1 -0
- package/dist/run-step/contextPacket.js +213 -0
- package/dist/run-step/contextPacket.js.map +1 -0
- package/dist/run-step/derivation.d.ts +41 -0
- package/dist/run-step/derivation.d.ts.map +1 -0
- package/dist/run-step/derivation.js +61 -0
- package/dist/run-step/derivation.js.map +1 -0
- package/dist/run-step/effectExecutor.d.ts +42 -0
- package/dist/run-step/effectExecutor.d.ts.map +1 -0
- package/dist/run-step/effectExecutor.js +297 -0
- package/dist/run-step/effectExecutor.js.map +1 -0
- package/dist/run-step/formatExecutor.d.ts +34 -0
- package/dist/run-step/formatExecutor.d.ts.map +1 -0
- package/dist/run-step/formatExecutor.js +329 -0
- package/dist/run-step/formatExecutor.js.map +1 -0
- package/dist/run-step/index.d.ts +23 -0
- package/dist/run-step/index.d.ts.map +1 -0
- package/dist/run-step/index.js +627 -0
- package/dist/run-step/index.js.map +1 -0
- package/dist/run-step/inputResolver.d.ts +48 -0
- package/dist/run-step/inputResolver.d.ts.map +1 -0
- package/dist/run-step/inputResolver.js +268 -0
- package/dist/run-step/inputResolver.js.map +1 -0
- package/dist/run-step/types.d.ts +123 -0
- package/dist/run-step/types.d.ts.map +1 -0
- package/dist/run-step/types.js +6 -0
- package/dist/run-step/types.js.map +1 -0
- package/dist/validate-pack/checks/capabilitiesRegistry.d.ts +3 -0
- package/dist/validate-pack/checks/capabilitiesRegistry.d.ts.map +1 -0
- package/dist/validate-pack/checks/capabilitiesRegistry.js +83 -0
- package/dist/validate-pack/checks/capabilitiesRegistry.js.map +1 -0
- package/dist/validate-pack/checks/contextPolicies.d.ts +3 -0
- package/dist/validate-pack/checks/contextPolicies.d.ts.map +1 -0
- package/dist/validate-pack/checks/contextPolicies.js +40 -0
- package/dist/validate-pack/checks/contextPolicies.js.map +1 -0
- package/dist/validate-pack/checks/mvkExamples.d.ts +10 -0
- package/dist/validate-pack/checks/mvkExamples.d.ts.map +1 -0
- package/dist/validate-pack/checks/mvkExamples.js +77 -0
- package/dist/validate-pack/checks/mvkExamples.js.map +1 -0
- package/dist/validate-pack/checks/requiredFiles.d.ts +3 -0
- package/dist/validate-pack/checks/requiredFiles.d.ts.map +1 -0
- package/dist/validate-pack/checks/requiredFiles.js +35 -0
- package/dist/validate-pack/checks/requiredFiles.js.map +1 -0
- package/dist/validate-pack/checks/resolutionPolicy.d.ts +3 -0
- package/dist/validate-pack/checks/resolutionPolicy.d.ts.map +1 -0
- package/dist/validate-pack/checks/resolutionPolicy.js +88 -0
- package/dist/validate-pack/checks/resolutionPolicy.js.map +1 -0
- package/dist/validate-pack/checks/schemas.d.ts +16 -0
- package/dist/validate-pack/checks/schemas.d.ts.map +1 -0
- package/dist/validate-pack/checks/schemas.js +70 -0
- package/dist/validate-pack/checks/schemas.js.map +1 -0
- package/dist/validate-pack/index.d.ts +25 -0
- package/dist/validate-pack/index.d.ts.map +1 -0
- package/dist/validate-pack/index.js +95 -0
- package/dist/validate-pack/index.js.map +1 -0
- package/dist/validate-pack/reporting.d.ts +6 -0
- package/dist/validate-pack/reporting.d.ts.map +1 -0
- package/dist/validate-pack/reporting.js +40 -0
- package/dist/validate-pack/reporting.js.map +1 -0
- package/dist/validate-pack/types.d.ts +34 -0
- package/dist/validate-pack/types.d.ts.map +1 -0
- package/dist/validate-pack/types.js +8 -0
- package/dist/validate-pack/types.js.map +1 -0
- package/package.json +54 -0
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { resolvePackPath } from "../../lib/paths.js";
|
|
2
|
+
import { loadJson } from "../../lib/loadJson.js";
|
|
3
|
+
const VALIDATOR = "contextPolicies";
|
|
4
|
+
const POLICIES_FILE = ".context/policies.json";
|
|
5
|
+
const REQUIRED_TOP_LEVEL_KEYS = [
|
|
6
|
+
"default_policy",
|
|
7
|
+
"budget_rules",
|
|
8
|
+
"cache_strategy",
|
|
9
|
+
"progressive_disclosure",
|
|
10
|
+
"context_rot_prevention",
|
|
11
|
+
];
|
|
12
|
+
export function checkContextPolicies(packRoot) {
|
|
13
|
+
const errors = [];
|
|
14
|
+
const warnings = [];
|
|
15
|
+
const abs = resolvePackPath(packRoot, POLICIES_FILE);
|
|
16
|
+
const loaded = loadJson(abs);
|
|
17
|
+
if (!loaded.ok) {
|
|
18
|
+
errors.push({
|
|
19
|
+
severity: "error",
|
|
20
|
+
code: loaded.code,
|
|
21
|
+
message: `Cannot load context policies: ${loaded.message}`,
|
|
22
|
+
path: abs,
|
|
23
|
+
validator: VALIDATOR,
|
|
24
|
+
});
|
|
25
|
+
return { validator: VALIDATOR, errors, warnings };
|
|
26
|
+
}
|
|
27
|
+
for (const key of REQUIRED_TOP_LEVEL_KEYS) {
|
|
28
|
+
if (!(key in loaded.data)) {
|
|
29
|
+
errors.push({
|
|
30
|
+
severity: "error",
|
|
31
|
+
code: "missing_required_field",
|
|
32
|
+
message: `Context policies missing required top-level field: ${key}`,
|
|
33
|
+
path: abs,
|
|
34
|
+
validator: VALIDATOR,
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return { validator: VALIDATOR, errors, warnings };
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=contextPolicies.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contextPolicies.js","sourceRoot":"","sources":["../../../src/validate-pack/checks/contextPolicies.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAGjD,MAAM,SAAS,GAAG,iBAAiB,CAAC;AACpC,MAAM,aAAa,GAAG,wBAAwB,CAAC;AAE/C,MAAM,uBAAuB,GAAG;IAC9B,gBAAgB;IAChB,cAAc;IACd,gBAAgB;IAChB,wBAAwB;IACxB,wBAAwB;CACzB,CAAC;AAUF,MAAM,UAAU,oBAAoB,CAAC,QAAgB;IACnD,MAAM,MAAM,GAAY,EAAE,CAAC;IAC3B,MAAM,QAAQ,GAAY,EAAE,CAAC;IAC7B,MAAM,GAAG,GAAG,eAAe,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IAErD,MAAM,MAAM,GAAG,QAAQ,CAAuB,GAAG,CAAC,CAAC;IACnD,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACf,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,OAAO;YACjB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,OAAO,EAAE,iCAAiC,MAAM,CAAC,OAAO,EAAE;YAC1D,IAAI,EAAE,GAAG;YACT,SAAS,EAAE,SAAS;SACrB,CAAC,CAAC;QACH,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IACpD,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,uBAAuB,EAAE,CAAC;QAC1C,IAAI,CAAC,CAAC,GAAG,IAAK,MAAM,CAAC,IAAgC,CAAC,EAAE,CAAC;YACvD,MAAM,CAAC,IAAI,CAAC;gBACV,QAAQ,EAAE,OAAO;gBACjB,IAAI,EAAE,wBAAwB;gBAC9B,OAAO,EAAE,sDAAsD,GAAG,EAAE;gBACpE,IAAI,EAAE,GAAG;gBACT,SAAS,EAAE,SAAS;aACrB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AACpD,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { CheckResult } from "../types.js";
|
|
2
|
+
import type { CompiledSchemas } from "./schemas.js";
|
|
3
|
+
/**
|
|
4
|
+
* Validates every TaskSpec and WorkPlan example in .harness/examples/
|
|
5
|
+
* against its respective schema. If the directory does not exist or is
|
|
6
|
+
* empty, the check passes silently — trimmed alpha bundles legitimately
|
|
7
|
+
* ship no examples.
|
|
8
|
+
*/
|
|
9
|
+
export declare function checkMvkExamples(packRoot: string, compiled: CompiledSchemas): CheckResult;
|
|
10
|
+
//# sourceMappingURL=mvkExamples.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mvkExamples.d.ts","sourceRoot":"","sources":["../../../src/validate-pack/checks/mvkExamples.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,WAAW,EAAS,MAAM,aAAa,CAAC;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAIpD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,GAAG,WAAW,CAwCzF"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { existsSync, readdirSync } from "node:fs";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { resolvePackPath } from "../../lib/paths.js";
|
|
4
|
+
import { loadYaml } from "../../lib/loadYaml.js";
|
|
5
|
+
import { formatAjvErrors } from "../../lib/ajvSetup.js";
|
|
6
|
+
const VALIDATOR = "mvkExamples";
|
|
7
|
+
/**
|
|
8
|
+
* Validates every TaskSpec and WorkPlan example in .harness/examples/
|
|
9
|
+
* against its respective schema. If the directory does not exist or is
|
|
10
|
+
* empty, the check passes silently — trimmed alpha bundles legitimately
|
|
11
|
+
* ship no examples.
|
|
12
|
+
*/
|
|
13
|
+
export function checkMvkExamples(packRoot, compiled) {
|
|
14
|
+
const errors = [];
|
|
15
|
+
const warnings = [];
|
|
16
|
+
const examplesDir = resolvePackPath(packRoot, ".harness/examples");
|
|
17
|
+
if (!existsSync(examplesDir)) {
|
|
18
|
+
return { validator: VALIDATOR, errors, warnings };
|
|
19
|
+
}
|
|
20
|
+
const entries = readdirSync(examplesDir, { withFileTypes: true })
|
|
21
|
+
.filter((e) => e.isFile())
|
|
22
|
+
.map((e) => e.name);
|
|
23
|
+
if (compiled.taskSpec) {
|
|
24
|
+
for (const name of entries.filter((n) => n.endsWith(".task.yaml") || n.endsWith(".task.yml"))) {
|
|
25
|
+
runExample(packRoot, join(".harness/examples", name), compiled.taskSpec, "task-spec", errors);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
else if (entries.some((n) => n.endsWith(".task.yaml") || n.endsWith(".task.yml"))) {
|
|
29
|
+
errors.push({
|
|
30
|
+
severity: "error",
|
|
31
|
+
code: "schema_unavailable",
|
|
32
|
+
message: "Cannot validate TaskSpec example(s): task-spec schema did not compile.",
|
|
33
|
+
validator: VALIDATOR,
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
if (compiled.workPlan) {
|
|
37
|
+
for (const name of entries.filter((n) => n.endsWith(".plan.yaml") || n.endsWith(".plan.yml"))) {
|
|
38
|
+
runExample(packRoot, join(".harness/examples", name), compiled.workPlan, "work-plan", errors);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
else if (entries.some((n) => n.endsWith(".plan.yaml") || n.endsWith(".plan.yml"))) {
|
|
42
|
+
errors.push({
|
|
43
|
+
severity: "error",
|
|
44
|
+
code: "schema_unavailable",
|
|
45
|
+
message: "Cannot validate WorkPlan example(s): work-plan schema did not compile.",
|
|
46
|
+
validator: VALIDATOR,
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
return { validator: VALIDATOR, errors, warnings };
|
|
50
|
+
}
|
|
51
|
+
function runExample(packRoot, rel, validate, schemaLabel, errors) {
|
|
52
|
+
const abs = resolvePackPath(packRoot, rel);
|
|
53
|
+
const loaded = loadYaml(abs);
|
|
54
|
+
if (!loaded.ok) {
|
|
55
|
+
errors.push({
|
|
56
|
+
severity: "error",
|
|
57
|
+
code: loaded.code,
|
|
58
|
+
message: `Cannot load ${schemaLabel} example ${rel}: ${loaded.message}`,
|
|
59
|
+
path: abs,
|
|
60
|
+
validator: VALIDATOR,
|
|
61
|
+
});
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
const valid = validate(loaded.data);
|
|
65
|
+
if (!valid) {
|
|
66
|
+
const messages = formatAjvErrors(validate.errors);
|
|
67
|
+
errors.push({
|
|
68
|
+
severity: "error",
|
|
69
|
+
code: "schema_validation_failed",
|
|
70
|
+
message: `MVK example ${rel} failed validation against ${schemaLabel} schema: ${messages.join("; ")}`,
|
|
71
|
+
path: abs,
|
|
72
|
+
validator: VALIDATOR,
|
|
73
|
+
details: { errors: messages },
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=mvkExamples.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mvkExamples.js","sourceRoot":"","sources":["../../../src/validate-pack/checks/mvkExamples.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"requiredFiles.d.ts","sourceRoot":"","sources":["../../../src/validate-pack/checks/requiredFiles.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAS,MAAM,aAAa,CAAC;AAItD,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,CAiChE"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { existsSync } from "node:fs";
|
|
2
|
+
import { resolvePackPath, REQUIRED_PACK_FILES, REQUIRED_SHAPE_CONTRACTS } from "../../lib/paths.js";
|
|
3
|
+
const VALIDATOR = "requiredFiles";
|
|
4
|
+
export function checkRequiredFiles(packRoot) {
|
|
5
|
+
const errors = [];
|
|
6
|
+
const warnings = [];
|
|
7
|
+
for (const rel of REQUIRED_PACK_FILES) {
|
|
8
|
+
const abs = resolvePackPath(packRoot, rel);
|
|
9
|
+
if (!existsSync(abs)) {
|
|
10
|
+
errors.push({
|
|
11
|
+
severity: "error",
|
|
12
|
+
code: "missing_required_file",
|
|
13
|
+
message: `Required pack file is missing: ${rel}`,
|
|
14
|
+
path: abs,
|
|
15
|
+
validator: VALIDATOR,
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
for (const rel of REQUIRED_SHAPE_CONTRACTS) {
|
|
20
|
+
const abs = resolvePackPath(packRoot, rel);
|
|
21
|
+
if (!existsSync(abs)) {
|
|
22
|
+
// Shape contracts other than the four MVK shapes are stubbed in v1.8.0.
|
|
23
|
+
// Treat the four MVK shapes as required.
|
|
24
|
+
errors.push({
|
|
25
|
+
severity: "error",
|
|
26
|
+
code: "missing_shape_contract",
|
|
27
|
+
message: `MVK shape contract missing: ${rel}`,
|
|
28
|
+
path: abs,
|
|
29
|
+
validator: VALIDATOR,
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return { validator: VALIDATOR, errors, warnings };
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=requiredFiles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"requiredFiles.js","sourceRoot":"","sources":["../../../src/validate-pack/checks/requiredFiles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAGpG,MAAM,SAAS,GAAG,eAAe,CAAC;AAElC,MAAM,UAAU,kBAAkB,CAAC,QAAgB;IACjD,MAAM,MAAM,GAAY,EAAE,CAAC;IAC3B,MAAM,QAAQ,GAAY,EAAE,CAAC;IAE7B,KAAK,MAAM,GAAG,IAAI,mBAAmB,EAAE,CAAC;QACtC,MAAM,GAAG,GAAG,eAAe,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAC3C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACrB,MAAM,CAAC,IAAI,CAAC;gBACV,QAAQ,EAAE,OAAO;gBACjB,IAAI,EAAE,uBAAuB;gBAC7B,OAAO,EAAE,kCAAkC,GAAG,EAAE;gBAChD,IAAI,EAAE,GAAG;gBACT,SAAS,EAAE,SAAS;aACrB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,wBAAwB,EAAE,CAAC;QAC3C,MAAM,GAAG,GAAG,eAAe,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAC3C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACrB,wEAAwE;YACxE,yCAAyC;YACzC,MAAM,CAAC,IAAI,CAAC;gBACV,QAAQ,EAAE,OAAO;gBACjB,IAAI,EAAE,wBAAwB;gBAC9B,OAAO,EAAE,+BAA+B,GAAG,EAAE;gBAC7C,IAAI,EAAE,GAAG;gBACT,SAAS,EAAE,SAAS;aACrB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AACpD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolutionPolicy.d.ts","sourceRoot":"","sources":["../../../src/validate-pack/checks/resolutionPolicy.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAS,MAAM,aAAa,CAAC;AAwBtD,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,CAyEnE"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { resolvePackPath } from "../../lib/paths.js";
|
|
2
|
+
import { loadJson } from "../../lib/loadJson.js";
|
|
3
|
+
const VALIDATOR = "resolutionPolicy";
|
|
4
|
+
const POLICY_FILE = ".composer/resolution-policy.json";
|
|
5
|
+
/**
|
|
6
|
+
* The 8 levels MUST appear in this exact order in resolution_order.
|
|
7
|
+
* V2.1 §19 + .composer/resolution-policy.json.
|
|
8
|
+
*/
|
|
9
|
+
const EXPECTED_LEVELS = [
|
|
10
|
+
"explicit_fully_qualified",
|
|
11
|
+
"runtime_override",
|
|
12
|
+
"member_namespace",
|
|
13
|
+
"creator_namespace",
|
|
14
|
+
"pack_namespace",
|
|
15
|
+
"universal_namespace",
|
|
16
|
+
"skill_default",
|
|
17
|
+
"fail_unresolved",
|
|
18
|
+
];
|
|
19
|
+
export function checkResolutionPolicy(packRoot) {
|
|
20
|
+
const errors = [];
|
|
21
|
+
const warnings = [];
|
|
22
|
+
const abs = resolvePackPath(packRoot, POLICY_FILE);
|
|
23
|
+
const loaded = loadJson(abs);
|
|
24
|
+
if (!loaded.ok) {
|
|
25
|
+
errors.push({
|
|
26
|
+
severity: "error",
|
|
27
|
+
code: loaded.code,
|
|
28
|
+
message: `Cannot load resolution policy: ${loaded.message}`,
|
|
29
|
+
path: abs,
|
|
30
|
+
validator: VALIDATOR,
|
|
31
|
+
});
|
|
32
|
+
return { validator: VALIDATOR, errors, warnings };
|
|
33
|
+
}
|
|
34
|
+
const order = loaded.data.resolution_order;
|
|
35
|
+
if (!Array.isArray(order)) {
|
|
36
|
+
errors.push({
|
|
37
|
+
severity: "error",
|
|
38
|
+
code: "missing_resolution_order",
|
|
39
|
+
message: "Resolution policy missing required resolution_order array.",
|
|
40
|
+
path: abs,
|
|
41
|
+
validator: VALIDATOR,
|
|
42
|
+
});
|
|
43
|
+
return { validator: VALIDATOR, errors, warnings };
|
|
44
|
+
}
|
|
45
|
+
if (order.length !== 8) {
|
|
46
|
+
errors.push({
|
|
47
|
+
severity: "error",
|
|
48
|
+
code: "wrong_resolution_order_length",
|
|
49
|
+
message: `resolution_order must have exactly 8 entries; found ${order.length}.`,
|
|
50
|
+
path: abs,
|
|
51
|
+
validator: VALIDATOR,
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
for (let i = 0; i < EXPECTED_LEVELS.length; i++) {
|
|
55
|
+
const expected = EXPECTED_LEVELS[i];
|
|
56
|
+
const entry = order[i];
|
|
57
|
+
if (!entry) {
|
|
58
|
+
errors.push({
|
|
59
|
+
severity: "error",
|
|
60
|
+
code: "missing_resolution_level",
|
|
61
|
+
message: `resolution_order[${i}] missing; expected level '${expected}'.`,
|
|
62
|
+
path: abs,
|
|
63
|
+
validator: VALIDATOR,
|
|
64
|
+
});
|
|
65
|
+
continue;
|
|
66
|
+
}
|
|
67
|
+
if (entry.level !== expected) {
|
|
68
|
+
errors.push({
|
|
69
|
+
severity: "error",
|
|
70
|
+
code: "wrong_resolution_level",
|
|
71
|
+
message: `resolution_order[${i}].level expected '${expected}', got '${entry.level ?? "(missing)"}'.`,
|
|
72
|
+
path: abs,
|
|
73
|
+
validator: VALIDATOR,
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
if (entry.step !== i + 1) {
|
|
77
|
+
errors.push({
|
|
78
|
+
severity: "error",
|
|
79
|
+
code: "wrong_resolution_step",
|
|
80
|
+
message: `resolution_order[${i}].step expected ${i + 1}, got ${entry.step ?? "(missing)"}.`,
|
|
81
|
+
path: abs,
|
|
82
|
+
validator: VALIDATOR,
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return { validator: VALIDATOR, errors, warnings };
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=resolutionPolicy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolutionPolicy.js","sourceRoot":"","sources":["../../../src/validate-pack/checks/resolutionPolicy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { ValidateFunction } from "ajv";
|
|
2
|
+
import type { CheckResult } from "../types.js";
|
|
3
|
+
export interface CompiledSchemas {
|
|
4
|
+
taskSpec?: ValidateFunction;
|
|
5
|
+
workPlan?: ValidateFunction;
|
|
6
|
+
contextPacket?: ValidateFunction;
|
|
7
|
+
structuredResult?: ValidateFunction;
|
|
8
|
+
bindingRecord?: ValidateFunction;
|
|
9
|
+
resolutionError?: ValidateFunction;
|
|
10
|
+
composerIndex?: ValidateFunction;
|
|
11
|
+
}
|
|
12
|
+
export interface SchemasCheckOutcome extends CheckResult {
|
|
13
|
+
compiled: CompiledSchemas;
|
|
14
|
+
}
|
|
15
|
+
export declare function checkSchemas(packRoot: string): SchemasCheckOutcome;
|
|
16
|
+
//# sourceMappingURL=schemas.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../../src/validate-pack/checks/schemas.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,KAAK,CAAC;AAC5C,OAAO,KAAK,EAAE,WAAW,EAAS,MAAM,aAAa,CAAC;AAetD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,aAAa,CAAC,EAAE,gBAAgB,CAAC;IACjC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,aAAa,CAAC,EAAE,gBAAgB,CAAC;IACjC,eAAe,CAAC,EAAE,gBAAgB,CAAC;IACnC,aAAa,CAAC,EAAE,gBAAgB,CAAC;CAClC;AAED,MAAM,WAAW,mBAAoB,SAAQ,WAAW;IACtD,QAAQ,EAAE,eAAe,CAAC;CAC3B;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,mBAAmB,CA4DlE"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { resolvePackPath } from "../../lib/paths.js";
|
|
2
|
+
import { loadJson } from "../../lib/loadJson.js";
|
|
3
|
+
import { makeAjv, compileSchema } from "../../lib/ajvSetup.js";
|
|
4
|
+
const VALIDATOR = "schemas";
|
|
5
|
+
const HARNESS_SCHEMAS = [
|
|
6
|
+
".harness/schemas/task-spec.schema.json",
|
|
7
|
+
".harness/schemas/work-plan.schema.json",
|
|
8
|
+
".harness/schemas/context-packet.schema.json",
|
|
9
|
+
".harness/schemas/structured-result.schema.json",
|
|
10
|
+
".harness/schemas/binding-record.schema.json",
|
|
11
|
+
".harness/schemas/resolution-error.schema.json",
|
|
12
|
+
];
|
|
13
|
+
const COMPOSER_SCHEMAS = [".composer/index.schema.json"];
|
|
14
|
+
export function checkSchemas(packRoot) {
|
|
15
|
+
const errors = [];
|
|
16
|
+
const warnings = [];
|
|
17
|
+
const compiled = {};
|
|
18
|
+
const ajv = makeAjv();
|
|
19
|
+
const allSchemas = [...HARNESS_SCHEMAS, ...COMPOSER_SCHEMAS];
|
|
20
|
+
for (const rel of allSchemas) {
|
|
21
|
+
const abs = resolvePackPath(packRoot, rel);
|
|
22
|
+
const loaded = loadJson(abs);
|
|
23
|
+
if (!loaded.ok) {
|
|
24
|
+
errors.push({
|
|
25
|
+
severity: "error",
|
|
26
|
+
code: loaded.code,
|
|
27
|
+
message: `Cannot load schema ${rel}: ${loaded.message}`,
|
|
28
|
+
path: abs,
|
|
29
|
+
validator: VALIDATOR,
|
|
30
|
+
});
|
|
31
|
+
continue;
|
|
32
|
+
}
|
|
33
|
+
const result = compileSchema(ajv, loaded.data);
|
|
34
|
+
if (!result.ok) {
|
|
35
|
+
errors.push({
|
|
36
|
+
severity: "error",
|
|
37
|
+
code: "schema_compile_failed",
|
|
38
|
+
message: `Failed to compile schema ${rel}: ${result.message}`,
|
|
39
|
+
path: abs,
|
|
40
|
+
validator: VALIDATOR,
|
|
41
|
+
});
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
44
|
+
switch (rel) {
|
|
45
|
+
case ".harness/schemas/task-spec.schema.json":
|
|
46
|
+
compiled.taskSpec = result.validate;
|
|
47
|
+
break;
|
|
48
|
+
case ".harness/schemas/work-plan.schema.json":
|
|
49
|
+
compiled.workPlan = result.validate;
|
|
50
|
+
break;
|
|
51
|
+
case ".harness/schemas/context-packet.schema.json":
|
|
52
|
+
compiled.contextPacket = result.validate;
|
|
53
|
+
break;
|
|
54
|
+
case ".harness/schemas/structured-result.schema.json":
|
|
55
|
+
compiled.structuredResult = result.validate;
|
|
56
|
+
break;
|
|
57
|
+
case ".harness/schemas/binding-record.schema.json":
|
|
58
|
+
compiled.bindingRecord = result.validate;
|
|
59
|
+
break;
|
|
60
|
+
case ".harness/schemas/resolution-error.schema.json":
|
|
61
|
+
compiled.resolutionError = result.validate;
|
|
62
|
+
break;
|
|
63
|
+
case ".composer/index.schema.json":
|
|
64
|
+
compiled.composerIndex = result.validate;
|
|
65
|
+
break;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return { validator: VALIDATOR, errors, warnings, compiled };
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=schemas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../../src/validate-pack/checks/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAI/D,MAAM,SAAS,GAAG,SAAS,CAAC;AAE5B,MAAM,eAAe,GAAG;IACtB,wCAAwC;IACxC,wCAAwC;IACxC,6CAA6C;IAC7C,gDAAgD;IAChD,6CAA6C;IAC7C,+CAA+C;CAChD,CAAC;AAEF,MAAM,gBAAgB,GAAG,CAAC,6BAA6B,CAAC,CAAC;AAgBzD,MAAM,UAAU,YAAY,CAAC,QAAgB;IAC3C,MAAM,MAAM,GAAY,EAAE,CAAC;IAC3B,MAAM,QAAQ,GAAY,EAAE,CAAC;IAC7B,MAAM,QAAQ,GAAoB,EAAE,CAAC;IACrC,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;IAEtB,MAAM,UAAU,GAAG,CAAC,GAAG,eAAe,EAAE,GAAG,gBAAgB,CAAC,CAAC;IAE7D,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,MAAM,GAAG,GAAG,eAAe,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAC3C,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC;gBACV,QAAQ,EAAE,OAAO;gBACjB,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,OAAO,EAAE,sBAAsB,GAAG,KAAK,MAAM,CAAC,OAAO,EAAE;gBACvD,IAAI,EAAE,GAAG;gBACT,SAAS,EAAE,SAAS;aACrB,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QAED,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC;gBACV,QAAQ,EAAE,OAAO;gBACjB,IAAI,EAAE,uBAAuB;gBAC7B,OAAO,EAAE,4BAA4B,GAAG,KAAK,MAAM,CAAC,OAAO,EAAE;gBAC7D,IAAI,EAAE,GAAG;gBACT,SAAS,EAAE,SAAS;aACrB,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QAED,QAAQ,GAAG,EAAE,CAAC;YACZ,KAAK,wCAAwC;gBAC3C,QAAQ,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;gBACpC,MAAM;YACR,KAAK,wCAAwC;gBAC3C,QAAQ,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;gBACpC,MAAM;YACR,KAAK,6CAA6C;gBAChD,QAAQ,CAAC,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC;gBACzC,MAAM;YACR,KAAK,gDAAgD;gBACnD,QAAQ,CAAC,gBAAgB,GAAG,MAAM,CAAC,QAAQ,CAAC;gBAC5C,MAAM;YACR,KAAK,6CAA6C;gBAChD,QAAQ,CAAC,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC;gBACzC,MAAM;YACR,KAAK,+CAA+C;gBAClD,QAAQ,CAAC,eAAe,GAAG,MAAM,CAAC,QAAQ,CAAC;gBAC3C,MAAM;YACR,KAAK,6BAA6B;gBAChC,QAAQ,CAAC,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC;gBACzC,MAAM;QACV,CAAC;IACH,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AAC9D,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Milestone 1 entry point — validate-pack.
|
|
3
|
+
*
|
|
4
|
+
* Walks the seyola-paid pack at the given root and runs six checks:
|
|
5
|
+
* 1. requiredFiles
|
|
6
|
+
* 2. schemas
|
|
7
|
+
* 3. mvkExamples (depends on schemas)
|
|
8
|
+
* 4. contextPolicies
|
|
9
|
+
* 5. resolutionPolicy
|
|
10
|
+
* 6. capabilitiesRegistry
|
|
11
|
+
*
|
|
12
|
+
* Exits 0 when only warnings are present (e.g., known MVK gaps).
|
|
13
|
+
* Exits 1 on any error.
|
|
14
|
+
*/
|
|
15
|
+
import type { ValidatePackReport } from "./types.js";
|
|
16
|
+
export interface ValidatePackArgs {
|
|
17
|
+
packPath: string;
|
|
18
|
+
json?: boolean;
|
|
19
|
+
}
|
|
20
|
+
export interface ValidatePackResult {
|
|
21
|
+
exitCode: 0 | 1;
|
|
22
|
+
report: ValidatePackReport;
|
|
23
|
+
}
|
|
24
|
+
export declare function validatePack(args: ValidatePackArgs): Promise<ValidatePackResult>;
|
|
25
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/validate-pack/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAWH,OAAO,KAAK,EAAsB,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEzE,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC;IAChB,MAAM,EAAE,kBAAkB,CAAC;CAC5B;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAyDtF"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Milestone 1 entry point — validate-pack.
|
|
3
|
+
*
|
|
4
|
+
* Walks the seyola-paid pack at the given root and runs six checks:
|
|
5
|
+
* 1. requiredFiles
|
|
6
|
+
* 2. schemas
|
|
7
|
+
* 3. mvkExamples (depends on schemas)
|
|
8
|
+
* 4. contextPolicies
|
|
9
|
+
* 5. resolutionPolicy
|
|
10
|
+
* 6. capabilitiesRegistry
|
|
11
|
+
*
|
|
12
|
+
* Exits 0 when only warnings are present (e.g., known MVK gaps).
|
|
13
|
+
* Exits 1 on any error.
|
|
14
|
+
*/
|
|
15
|
+
import { resolve } from "node:path";
|
|
16
|
+
import { existsSync } from "node:fs";
|
|
17
|
+
import { checkRequiredFiles } from "./checks/requiredFiles.js";
|
|
18
|
+
import { checkSchemas } from "./checks/schemas.js";
|
|
19
|
+
import { checkMvkExamples } from "./checks/mvkExamples.js";
|
|
20
|
+
import { checkContextPolicies } from "./checks/contextPolicies.js";
|
|
21
|
+
import { checkResolutionPolicy } from "./checks/resolutionPolicy.js";
|
|
22
|
+
import { checkCapabilitiesRegistry } from "./checks/capabilitiesRegistry.js";
|
|
23
|
+
import { printHumanReport, printJsonReport } from "./reporting.js";
|
|
24
|
+
export async function validatePack(args) {
|
|
25
|
+
const start = Date.now();
|
|
26
|
+
const packAbsolute = resolve(args.packPath);
|
|
27
|
+
const errors = [];
|
|
28
|
+
const warnings = [];
|
|
29
|
+
const passedChecks = [];
|
|
30
|
+
const failedChecks = [];
|
|
31
|
+
if (!existsSync(packAbsolute)) {
|
|
32
|
+
const issue = {
|
|
33
|
+
severity: "error",
|
|
34
|
+
code: "pack_root_not_found",
|
|
35
|
+
message: `Pack root does not exist: ${packAbsolute}`,
|
|
36
|
+
path: packAbsolute,
|
|
37
|
+
validator: "preflight",
|
|
38
|
+
};
|
|
39
|
+
errors.push(issue);
|
|
40
|
+
return finalize({ packPath: args.packPath, packAbsolute, errors, warnings, passedChecks, failedChecks: ["preflight"], start, json: args.json });
|
|
41
|
+
}
|
|
42
|
+
const checkResults = [];
|
|
43
|
+
// 1. Required files.
|
|
44
|
+
const requiredFiles = checkRequiredFiles(packAbsolute);
|
|
45
|
+
checkResults.push(requiredFiles);
|
|
46
|
+
// 2. Schemas (load + compile).
|
|
47
|
+
const schemas = checkSchemas(packAbsolute);
|
|
48
|
+
checkResults.push({ validator: schemas.validator, errors: schemas.errors, warnings: schemas.warnings });
|
|
49
|
+
// 3. MVK examples (only if schemas compiled).
|
|
50
|
+
const mvk = checkMvkExamples(packAbsolute, schemas.compiled);
|
|
51
|
+
checkResults.push(mvk);
|
|
52
|
+
// 4. Context policies.
|
|
53
|
+
const contextPolicies = checkContextPolicies(packAbsolute);
|
|
54
|
+
checkResults.push(contextPolicies);
|
|
55
|
+
// 5. Resolution policy (8-step order).
|
|
56
|
+
const resolutionPolicy = checkResolutionPolicy(packAbsolute);
|
|
57
|
+
checkResults.push(resolutionPolicy);
|
|
58
|
+
// 6. Capabilities registry (seeded + gap warnings).
|
|
59
|
+
const capabilitiesRegistry = checkCapabilitiesRegistry(packAbsolute);
|
|
60
|
+
checkResults.push(capabilitiesRegistry);
|
|
61
|
+
for (const result of checkResults) {
|
|
62
|
+
errors.push(...result.errors);
|
|
63
|
+
warnings.push(...result.warnings);
|
|
64
|
+
if (result.errors.length === 0) {
|
|
65
|
+
passedChecks.push(result.validator);
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
failedChecks.push(result.validator);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return finalize({ packPath: args.packPath, packAbsolute, errors, warnings, passedChecks, failedChecks, start, json: args.json });
|
|
72
|
+
}
|
|
73
|
+
function finalize(args) {
|
|
74
|
+
const report = {
|
|
75
|
+
packPath: args.packPath,
|
|
76
|
+
packAbsolutePath: args.packAbsolute,
|
|
77
|
+
passedChecks: args.passedChecks,
|
|
78
|
+
failedChecks: args.failedChecks,
|
|
79
|
+
errors: args.errors,
|
|
80
|
+
warnings: args.warnings,
|
|
81
|
+
summary: {
|
|
82
|
+
errorCount: args.errors.length,
|
|
83
|
+
warningCount: args.warnings.length,
|
|
84
|
+
durationMs: Date.now() - args.start,
|
|
85
|
+
},
|
|
86
|
+
};
|
|
87
|
+
if (args.json) {
|
|
88
|
+
printJsonReport(report);
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
printHumanReport(report);
|
|
92
|
+
}
|
|
93
|
+
return { exitCode: report.errors.length === 0 ? 0 : 1, report };
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/validate-pack/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { ValidatePackReport } from "./types.js";
|
|
2
|
+
/** Pretty-prints a validate-pack report to stderr. Returns nothing. */
|
|
3
|
+
export declare function printHumanReport(report: ValidatePackReport): void;
|
|
4
|
+
/** Emits the report as a single JSON object on stdout. */
|
|
5
|
+
export declare function printJsonReport(report: ValidatePackReport): void;
|
|
6
|
+
//# sourceMappingURL=reporting.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reporting.d.ts","sourceRoot":"","sources":["../../src/validate-pack/reporting.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAS,MAAM,YAAY,CAAC;AAE5D,uEAAuE;AACvE,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI,CAgCjE;AAQD,0DAA0D;AAC1D,wBAAgB,eAAe,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI,CAEhE"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/** Pretty-prints a validate-pack report to stderr. Returns nothing. */
|
|
2
|
+
export function printHumanReport(report) {
|
|
3
|
+
const errors = report.errors.length;
|
|
4
|
+
const warnings = report.warnings.length;
|
|
5
|
+
const headline = errors === 0
|
|
6
|
+
? `validate-pack PASSED with ${warnings} warning${warnings === 1 ? "" : "s"} (${report.summary.durationMs}ms)`
|
|
7
|
+
: `validate-pack FAILED — ${errors} error${errors === 1 ? "" : "s"}, ${warnings} warning${warnings === 1 ? "" : "s"} (${report.summary.durationMs}ms)`;
|
|
8
|
+
process.stderr.write(`\n${headline}\n`);
|
|
9
|
+
process.stderr.write(`Pack: ${report.packAbsolutePath}\n\n`);
|
|
10
|
+
if (report.errors.length > 0) {
|
|
11
|
+
process.stderr.write("ERRORS:\n");
|
|
12
|
+
for (const issue of report.errors) {
|
|
13
|
+
process.stderr.write(formatIssue(issue) + "\n");
|
|
14
|
+
}
|
|
15
|
+
process.stderr.write("\n");
|
|
16
|
+
}
|
|
17
|
+
if (report.warnings.length > 0) {
|
|
18
|
+
process.stderr.write("WARNINGS:\n");
|
|
19
|
+
for (const issue of report.warnings) {
|
|
20
|
+
process.stderr.write(formatIssue(issue) + "\n");
|
|
21
|
+
}
|
|
22
|
+
process.stderr.write("\n");
|
|
23
|
+
}
|
|
24
|
+
if (report.passedChecks.length > 0) {
|
|
25
|
+
process.stderr.write(`Checks passed: ${report.passedChecks.join(", ")}\n`);
|
|
26
|
+
}
|
|
27
|
+
if (report.failedChecks.length > 0) {
|
|
28
|
+
process.stderr.write(`Checks failed: ${report.failedChecks.join(", ")}\n`);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
function formatIssue(issue) {
|
|
32
|
+
const validator = issue.validator ? `[${issue.validator}] ` : "";
|
|
33
|
+
const path = issue.path ? `\n at ${issue.path}` : "";
|
|
34
|
+
return ` ${validator}${issue.code}: ${issue.message}${path}`;
|
|
35
|
+
}
|
|
36
|
+
/** Emits the report as a single JSON object on stdout. */
|
|
37
|
+
export function printJsonReport(report) {
|
|
38
|
+
process.stdout.write(JSON.stringify(report, null, 2) + "\n");
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=reporting.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reporting.js","sourceRoot":"","sources":["../../src/validate-pack/reporting.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared types for validate-pack output.
|
|
3
|
+
*
|
|
4
|
+
* Issues are either errors (block exit 0) or warnings (allowed). The CLI
|
|
5
|
+
* surfaces both; the exit code only reflects errors.
|
|
6
|
+
*/
|
|
7
|
+
export type Severity = "error" | "warning";
|
|
8
|
+
export interface Issue {
|
|
9
|
+
severity: Severity;
|
|
10
|
+
code: string;
|
|
11
|
+
message: string;
|
|
12
|
+
path?: string;
|
|
13
|
+
validator?: string;
|
|
14
|
+
details?: Record<string, unknown>;
|
|
15
|
+
}
|
|
16
|
+
export interface CheckResult {
|
|
17
|
+
validator: string;
|
|
18
|
+
errors: Issue[];
|
|
19
|
+
warnings: Issue[];
|
|
20
|
+
}
|
|
21
|
+
export interface ValidatePackReport {
|
|
22
|
+
packPath: string;
|
|
23
|
+
packAbsolutePath: string;
|
|
24
|
+
passedChecks: string[];
|
|
25
|
+
failedChecks: string[];
|
|
26
|
+
errors: Issue[];
|
|
27
|
+
warnings: Issue[];
|
|
28
|
+
summary: {
|
|
29
|
+
errorCount: number;
|
|
30
|
+
warningCount: number;
|
|
31
|
+
durationMs: number;
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/validate-pack/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;AAE3C,MAAM,WAAW,KAAK;IACpB,QAAQ,EAAE,QAAQ,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,QAAQ,EAAE,KAAK,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,QAAQ,EAAE,KAAK,EAAE,CAAC;IAClB,OAAO,EAAE;QACP,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,MAAM,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;CACH"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/validate-pack/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|