@tacuchi/agent-workflow-cli 20.26.0 → 21.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -1
- package/dist/adapters/node-file-system.js +3 -0
- package/dist/adapters/node-file-system.js.map +1 -1
- package/dist/application/capability/compose.js +161 -0
- package/dist/application/capability/compose.js.map +1 -0
- package/dist/application/capability/descriptor-loader.js +109 -0
- package/dist/application/capability/descriptor-loader.js.map +1 -0
- package/dist/application/capability/design-handler.js +299 -0
- package/dist/application/capability/design-handler.js.map +1 -0
- package/dist/application/capability/dispatcher.js +312 -0
- package/dist/application/capability/dispatcher.js.map +1 -0
- package/dist/application/capability/durable-effect.js +220 -0
- package/dist/application/capability/durable-effect.js.map +1 -0
- package/dist/application/capability/installed-inventory.js +168 -0
- package/dist/application/capability/installed-inventory.js.map +1 -0
- package/dist/application/capability/readiness.js +204 -0
- package/dist/application/capability/readiness.js.map +1 -0
- package/dist/application/capability/resolution.js +264 -0
- package/dist/application/capability/resolution.js.map +1 -0
- package/dist/application/capability/wrapper.js +187 -0
- package/dist/application/capability/wrapper.js.map +1 -0
- package/dist/application/context/manifest.js +11 -5
- package/dist/application/context/manifest.js.map +1 -1
- package/dist/application/context/measure.js +5 -2
- package/dist/application/context/measure.js.map +1 -1
- package/dist/application/context/plan-service.js +6 -6
- package/dist/application/context/plan-service.js.map +1 -1
- package/dist/application/design/design-bundle-service.js +148 -0
- package/dist/application/design/design-bundle-service.js.map +1 -0
- package/dist/application/design/design-gate-service.js +246 -0
- package/dist/application/design/design-gate-service.js.map +1 -0
- package/dist/application/design/design-graph-service.js +85 -0
- package/dist/application/design/design-graph-service.js.map +1 -0
- package/dist/application/design/design-index-service.js +132 -0
- package/dist/application/design/design-index-service.js.map +1 -0
- package/dist/application/design/design-proposal-service.js +69 -0
- package/dist/application/design/design-proposal-service.js.map +1 -0
- package/dist/application/design/design-publish-service.js +756 -0
- package/dist/application/design/design-publish-service.js.map +1 -0
- package/dist/application/design/design-record-service.js +100 -0
- package/dist/application/design/design-record-service.js.map +1 -0
- package/dist/application/design/design-resolver-service.js +165 -0
- package/dist/application/design/design-resolver-service.js.map +1 -0
- package/dist/application/flow/advance.js +533 -0
- package/dist/application/flow/advance.js.map +1 -0
- package/dist/application/flow/flow-service.js +65 -0
- package/dist/application/flow/flow-service.js.map +1 -0
- package/dist/application/flow/run-projection.js +80 -0
- package/dist/application/flow/run-projection.js.map +1 -0
- package/dist/application/flow/run-state-service.js +107 -0
- package/dist/application/flow/run-state-service.js.map +1 -0
- package/dist/application/flow/submit.js +423 -0
- package/dist/application/flow/submit.js.map +1 -0
- package/dist/application/resume-service.js +46 -14
- package/dist/application/resume-service.js.map +1 -1
- package/dist/application/self/install-skill.js +11 -0
- package/dist/application/self/install-skill.js.map +1 -1
- package/dist/application/self/uninstall.js +21 -0
- package/dist/application/self/uninstall.js.map +1 -1
- package/dist/application/semantic-operation/protocol.js +18 -12
- package/dist/application/semantic-operation/protocol.js.map +1 -1
- package/dist/application/semantic-operation/publish.js +56 -9
- package/dist/application/semantic-operation/publish.js.map +1 -1
- package/dist/application/skills-resolver-service.js +27 -6
- package/dist/application/skills-resolver-service.js.map +1 -1
- package/dist/application/status-service.js +5 -1
- package/dist/application/status-service.js.map +1 -1
- package/dist/application/workline-index-service.js +6 -0
- package/dist/application/workline-index-service.js.map +1 -1
- package/dist/application/workspace-init-service.js +22 -2
- package/dist/application/workspace-init-service.js.map +1 -1
- package/dist/cli/commands/capability.js +182 -0
- package/dist/cli/commands/capability.js.map +1 -0
- package/dist/cli/commands/designs.js +110 -0
- package/dist/cli/commands/designs.js.map +1 -0
- package/dist/cli/commands/flow.js +71 -0
- package/dist/cli/commands/flow.js.map +1 -0
- package/dist/cli/commands/index.js +6 -0
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/resume.js +8 -0
- package/dist/cli/commands/resume.js.map +1 -1
- package/dist/cli/commands/skills.js +55 -2
- package/dist/cli/commands/skills.js.map +1 -1
- package/dist/cli/commands/status.js +50 -0
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cli/help-groups.js +9 -0
- package/dist/cli/help-groups.js.map +1 -1
- package/dist/cli/parser.js +7 -0
- package/dist/cli/parser.js.map +1 -1
- package/dist/cli/tui/data/workflow-content.js +5 -0
- package/dist/cli/tui/data/workflow-content.js.map +1 -1
- package/dist/cli/tui/tabs/workflow-tab.js +5 -1
- package/dist/cli/tui/tabs/workflow-tab.js.map +1 -1
- package/dist/domain/capability/descriptor.js +553 -0
- package/dist/domain/capability/descriptor.js.map +1 -0
- package/dist/domain/capability/effects.js +90 -0
- package/dist/domain/capability/effects.js.map +1 -0
- package/dist/domain/capability/protocol.js +494 -0
- package/dist/domain/capability/protocol.js.map +1 -0
- package/dist/domain/contract-reader.js +84 -0
- package/dist/domain/contract-reader.js.map +1 -0
- package/dist/domain/design/adapter.js +161 -0
- package/dist/domain/design/adapter.js.map +1 -0
- package/dist/domain/design/artifact-body.js +223 -0
- package/dist/domain/design/artifact-body.js.map +1 -0
- package/dist/domain/design/artifact.js +750 -0
- package/dist/domain/design/artifact.js.map +1 -0
- package/dist/domain/design/baseline.js +359 -0
- package/dist/domain/design/baseline.js.map +1 -0
- package/dist/domain/design/capability.js +310 -0
- package/dist/domain/design/capability.js.map +1 -0
- package/dist/domain/design/closure.js +161 -0
- package/dist/domain/design/closure.js.map +1 -0
- package/dist/domain/design/direct.js +108 -0
- package/dist/domain/design/direct.js.map +1 -0
- package/dist/domain/design/external-send.js +65 -0
- package/dist/domain/design/external-send.js.map +1 -0
- package/dist/domain/design/governance.js +298 -0
- package/dist/domain/design/governance.js.map +1 -0
- package/dist/domain/design/identity.js +145 -0
- package/dist/domain/design/identity.js.map +1 -0
- package/dist/domain/design/manifest.js +552 -0
- package/dist/domain/design/manifest.js.map +1 -0
- package/dist/domain/design/maturity.js +305 -0
- package/dist/domain/design/maturity.js.map +1 -0
- package/dist/domain/design/naming.js +117 -0
- package/dist/domain/design/naming.js.map +1 -0
- package/dist/domain/design/offline.js +92 -0
- package/dist/domain/design/offline.js.map +1 -0
- package/dist/domain/design/profiles.js +212 -0
- package/dist/domain/design/profiles.js.map +1 -0
- package/dist/domain/design/projections.js +165 -0
- package/dist/domain/design/projections.js.map +1 -0
- package/dist/domain/design/proposal.js +234 -0
- package/dist/domain/design/proposal.js.map +1 -0
- package/dist/domain/design/reference.js +234 -0
- package/dist/domain/design/reference.js.map +1 -0
- package/dist/domain/design/render-bundle.js +0 -0
- package/dist/domain/design/render-bundle.js.map +1 -0
- package/dist/domain/design/rendition.js +472 -0
- package/dist/domain/design/rendition.js.map +1 -0
- package/dist/domain/design/retired.js +61 -0
- package/dist/domain/design/retired.js.map +1 -0
- package/dist/domain/design/revision.js +219 -0
- package/dist/domain/design/revision.js.map +1 -0
- package/dist/domain/design/secrets.js +86 -0
- package/dist/domain/design/secrets.js.map +1 -0
- package/dist/domain/design/sources.js +180 -0
- package/dist/domain/design/sources.js.map +1 -0
- package/dist/domain/design/validation.js +19 -0
- package/dist/domain/design/validation.js.map +1 -0
- package/dist/domain/design/visual-evidence.js +155 -0
- package/dist/domain/design/visual-evidence.js.map +1 -0
- package/dist/domain/design/yaml-subset.js +390 -0
- package/dist/domain/design/yaml-subset.js.map +1 -0
- package/dist/domain/flow/answer.js +459 -0
- package/dist/domain/flow/answer.js.map +1 -0
- package/dist/domain/flow/authority.js +2276 -0
- package/dist/domain/flow/authority.js.map +1 -0
- package/dist/domain/flow/authorization.js +62 -0
- package/dist/domain/flow/authorization.js.map +1 -0
- package/dist/domain/flow/directive.js +421 -0
- package/dist/domain/flow/directive.js.map +1 -0
- package/dist/domain/flow/rules.js +140 -0
- package/dist/domain/flow/rules.js.map +1 -0
- package/dist/domain/flow/run-state.js +317 -0
- package/dist/domain/flow/run-state.js.map +1 -0
- package/dist/domain/harnesses.js +21 -0
- package/dist/domain/harnesses.js.map +1 -1
- package/dist/domain/safe-path.js +23 -0
- package/dist/domain/safe-path.js.map +1 -0
- package/dist/domain/skills.js +26 -3
- package/dist/domain/skills.js.map +1 -1
- package/package.json +1 -1
- package/skills/w/SKILL.md +15 -13
- package/skills/w/artifacts/README.md +3 -4
- package/skills/w/artifacts/artifacts-core/CHECKPOINT.md +2 -2
- package/skills/w/commands/plan-exec.md +11 -5
- package/skills/w/commands/plan-new.md +6 -2
- package/skills/w/commands/plan-refine.md +6 -3
- package/skills/w/commands/quick.md +2 -2
- package/skills/w/commands/spec-new.md +2 -2
- package/skills/w/commands/spec-refine.md +1 -0
- package/skills/w/context/MANIFEST.json +57 -9
- package/skills/w/harness/HARNESS.md +20 -0
- package/skills/w/loops/CHASSIS.md +11 -20
- package/skills/w/loops/CODE-POLICIES.md +18 -9
- package/skills/w/loops/README.md +1 -1
- package/skills/w/loops/plan-exec-loop/LOOP.md +126 -62
- package/skills/w/loops/plan-new-loop/LOOP.md +71 -73
- package/skills/w/loops/plan-refine-loop/LOOP.md +20 -10
- package/skills/w/loops/quick-loop/LOOP.md +18 -26
- package/skills/w/loops/spec-refine-loop/LOOP.md +28 -30
- package/skills/w/modules/COMPACTION.md +2 -6
- package/skills/w/modules/DB-SCRIPTS-ONLY.md +2 -0
- package/skills/w/modules/DESIGN-REFERENCES.md +113 -0
- package/skills/w/modules/IDEATION-GATE.md +3 -3
- package/skills/w/modules/PERSIST-ROUTING.md +1 -0
- package/skills/w/modules/PLAN-EXECUTION-BATCHES.md +65 -0
- package/skills/w/modules/PLAN-INPUT.md +5 -3
- package/skills/w/modules/PLAN-REFINE-SPLIT.md +3 -1
- package/skills/w/modules/PLAN-SPLIT-GATE.md +7 -5
- package/skills/w/modules/PROMPT-CONTINUITY.md +3 -1
- package/skills/w/modules/SPEC-CHANGE-SHAPE.md +4 -4
- package/skills/w/roles/README.md +9 -5
- package/skills/w/roles/design/CONTRACT.md +80 -0
- package/skills/w/roles/design/ROLE.md +224 -0
- package/skills/w/schemas/capability-descriptor.schema.json +260 -0
- package/skills/w/schemas/design/design-baseline.v1.schema.json +71 -0
- package/skills/w/schemas/design/design-manifest.v1.schema.json +322 -0
- package/skills/w/schemas/design/design-render-bundle.v1.schema.json +191 -0
- package/skills/w/schemas/design/design-rendition.v1.schema.json +232 -0
- package/skills/w/schemas/design/design-review.v1.schema.json +72 -0
- package/skills/w/schemas/design/design-revocation.v1.schema.json +54 -0
- package/skills/w/schemas/design/ui-flow.v1.schema.json +211 -0
- package/skills/w/schemas/design/ui-screen.v1.schema.json +242 -0
- package/skills/w/artifacts/artifacts-design/SPEC.md +0 -42
- package/skills/w/modules/PLAN-DESIGN-SPECS.md +0 -12
- package/skills/w/modules/PLAN-REFINE-DESIGN-SPECS.md +0 -7
- package/skills/w/roles/ui-spec/ROLE.md +0 -147
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifact.js","sourceRoot":"","sources":["../../../src/domain/design/artifact.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,359 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { canonicalJson } from "../../application/semantic-operation/protocol.js";
|
|
3
|
+
import { checkSafeRelativePath } from "../safe-path.js";
|
|
4
|
+
import { CANONICAL_SCHEMAS } from "./capability.js";
|
|
5
|
+
import { ARTIFACT_PREFIX, isArtifactId, isAssetFilename, isDigest, isPackageId, isRevision, parseBaselineRef, } from "./identity.js";
|
|
6
|
+
import { NAMING, PROJECTIONS, checkNaming } from "./naming.js";
|
|
7
|
+
import { secretFailures } from "./secrets.js";
|
|
8
|
+
import { Reader, eachRecord, isRecord, } from "./validation.js";
|
|
9
|
+
/**
|
|
10
|
+
* `baselines/DES-NNN-rNNN.json` — the immutable authority of one published
|
|
11
|
+
* revision of a package.
|
|
12
|
+
*
|
|
13
|
+
* A baseline answers one question: *which exact bytes were published together*.
|
|
14
|
+
* It enumerates a CLOSED selection of normative files with their revision and
|
|
15
|
+
* the SHA-256 of their bytes, and seals that with a digest of its own.
|
|
16
|
+
*
|
|
17
|
+
* Two exclusions make the seal mean something:
|
|
18
|
+
*
|
|
19
|
+
* - the digest is computed over canonical JSON **without its own `digest`
|
|
20
|
+
* field**, so there is no self-reference to chase; and
|
|
21
|
+
* - the selection excludes the mutable manifest, the governance records and the
|
|
22
|
+
* regenerable projections, so re-indexing the catalog or re-rendering
|
|
23
|
+
* `PACKAGE.md` can never alter a revision published months ago.
|
|
24
|
+
*
|
|
25
|
+
* Without the second one, every published digest would drift every time
|
|
26
|
+
* somebody added a package relation — which is exactly the retroactive change
|
|
27
|
+
* the contract exists to forbid.
|
|
28
|
+
*/
|
|
29
|
+
export const DESIGN_BASELINE_SCHEMA_ID = CANONICAL_SCHEMAS.baseline;
|
|
30
|
+
export const ALLOWED_KEYS = {
|
|
31
|
+
"": ["schema", "package", "revision", "parent_baseline", "published", "digest", "selection"],
|
|
32
|
+
"selection[]": ["path", "revision", "sha256"],
|
|
33
|
+
};
|
|
34
|
+
const ISO_DATE_RE = /^\d{4}-\d{2}-\d{2}$/;
|
|
35
|
+
/** A date that EXISTS: `2026-13-45` has the shape and is not a day. */
|
|
36
|
+
export function isCalendarDate(value) {
|
|
37
|
+
if (!ISO_DATE_RE.test(value))
|
|
38
|
+
return false;
|
|
39
|
+
const date = new Date(`${value}T00:00:00Z`);
|
|
40
|
+
return !Number.isNaN(date.getTime()) && date.toISOString().slice(0, 10) === value;
|
|
41
|
+
}
|
|
42
|
+
/** Directories whose files a baseline may select. Everything else is excluded. */
|
|
43
|
+
const SELECTABLE_DIRS = [...Object.values(NAMING).map((r) => r.dir), "assets"];
|
|
44
|
+
/**
|
|
45
|
+
* The digest a baseline must carry. Excluding `digest` from its own input is
|
|
46
|
+
* what makes it verifiable: anyone can recompute it from the file and compare.
|
|
47
|
+
*/
|
|
48
|
+
export function computeBaselineDigest(baseline) {
|
|
49
|
+
const { schema, package: pkg, revision, parent_baseline, published, selection } = baseline;
|
|
50
|
+
const sealed = {
|
|
51
|
+
schema,
|
|
52
|
+
package: pkg,
|
|
53
|
+
revision,
|
|
54
|
+
parent_baseline,
|
|
55
|
+
published,
|
|
56
|
+
// Sorted by path: a selection is a SET, so reordering the array is a
|
|
57
|
+
// no-change. Digesting it as written would let a reformat reseal a revision
|
|
58
|
+
// published months ago.
|
|
59
|
+
selection: [...selection].sort((a, b) => (a.path < b.path ? -1 : a.path > b.path ? 1 : 0)),
|
|
60
|
+
};
|
|
61
|
+
return `sha256:${createHash("sha256").update(canonicalJson(sealed), "utf8").digest("hex")}`;
|
|
62
|
+
}
|
|
63
|
+
export function validateDesignBaseline(raw, artifact) {
|
|
64
|
+
const r = new Reader(ALLOWED_KEYS);
|
|
65
|
+
if (!isRecord(raw)) {
|
|
66
|
+
r.fail("DESIGN_BASELINE_NOT_OBJECT", artifact, "el baseline no es un objeto JSON", `reescribí '${artifact}' como un único objeto JSON conforme a ${DESIGN_BASELINE_SCHEMA_ID}`);
|
|
67
|
+
return done(r, null);
|
|
68
|
+
}
|
|
69
|
+
const schema = r.read(raw, "schema");
|
|
70
|
+
if (schema !== DESIGN_BASELINE_SCHEMA_ID) {
|
|
71
|
+
r.fail("DESIGN_SCHEMA_UNKNOWN", artifact, `versión de formato no soportada: ${JSON.stringify(schema)}`, `este Workline entiende ${DESIGN_BASELINE_SCHEMA_ID}`);
|
|
72
|
+
return done(r, null);
|
|
73
|
+
}
|
|
74
|
+
r.closed(raw, "", artifact);
|
|
75
|
+
const pkg = r.read(raw, "package");
|
|
76
|
+
if (!isPackageId(pkg)) {
|
|
77
|
+
r.invalid(artifact, `'package' no es un identificador DES-NNN: ${JSON.stringify(pkg)}`, "nombrá el package que este baseline sella");
|
|
78
|
+
}
|
|
79
|
+
const revision = r.read(raw, "revision");
|
|
80
|
+
if (!isRevision(revision)) {
|
|
81
|
+
r.invalid(artifact, "'revision' debe ser un entero >= 1", "las revisiones son lógicas y empiezan en 1");
|
|
82
|
+
}
|
|
83
|
+
const parent = r.read(raw, "parent_baseline");
|
|
84
|
+
checkParent(r, artifact, parent, pkg, revision);
|
|
85
|
+
const published = r.read(raw, "published");
|
|
86
|
+
if (typeof published !== "string" || !isCalendarDate(published)) {
|
|
87
|
+
r.invalid(artifact, `'published' no es una fecha YYYY-MM-DD: ${JSON.stringify(published)}`, "escribí la fecha de publicación como YYYY-MM-DD");
|
|
88
|
+
}
|
|
89
|
+
const selection = readSelection(r, raw, artifact);
|
|
90
|
+
if (selection.length === 0 && r.failures.length === 0) {
|
|
91
|
+
r.invalid(artifact, "'selection' está vacía y una revisión publica algo", "enumerá los archivos normativos que esta revisión sella");
|
|
92
|
+
}
|
|
93
|
+
const digest = r.read(raw, "digest");
|
|
94
|
+
if (!isDigest(digest)) {
|
|
95
|
+
r.invalid(artifact, "'digest' debe ser 'sha256:' + 64 hex", "recalculá el digest del baseline");
|
|
96
|
+
}
|
|
97
|
+
for (const failure of secretFailures(raw, artifact))
|
|
98
|
+
r.failures.push(failure);
|
|
99
|
+
if (r.failures.length > 0)
|
|
100
|
+
return done(r, null);
|
|
101
|
+
const value = {
|
|
102
|
+
schema: DESIGN_BASELINE_SCHEMA_ID,
|
|
103
|
+
package: pkg,
|
|
104
|
+
revision: revision,
|
|
105
|
+
parent_baseline: typeof parent === "string" ? parent : null,
|
|
106
|
+
published: published,
|
|
107
|
+
digest: digest,
|
|
108
|
+
selection,
|
|
109
|
+
};
|
|
110
|
+
// The seal is only a seal if it matches. Checked last so a malformed baseline
|
|
111
|
+
// is reported for what it is, not for a digest that could never have matched.
|
|
112
|
+
const expected = computeBaselineDigest(value);
|
|
113
|
+
if (value.digest !== expected) {
|
|
114
|
+
r.fail("DESIGN_DIGEST_MISMATCH", artifact, `el digest declarado no es el de este contenido (declara ${value.digest}, calcula ${expected})`, "recalculá el digest sobre el JSON canónico sin el campo 'digest', o restaurá el contenido sellado");
|
|
115
|
+
return done(r, null);
|
|
116
|
+
}
|
|
117
|
+
return done(r, value);
|
|
118
|
+
}
|
|
119
|
+
function checkParent(r, artifact, parent, pkg, revision) {
|
|
120
|
+
if (parent === null) {
|
|
121
|
+
if (isRevision(revision) && revision !== 1) {
|
|
122
|
+
r.fail("DESIGN_RELATION_BROKEN", artifact, `r${revision} declara 'parent_baseline: null' y solo la primera revisión no tiene padre`, "encadenala con la revisión anterior del mismo package");
|
|
123
|
+
}
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
const ref = parseBaselineRef(parent);
|
|
127
|
+
if (ref === null) {
|
|
128
|
+
r.invalid(artifact, `'parent_baseline' debe ser null o DES-NNN@rN: ${JSON.stringify(parent)}`, "encadená el baseline con su padre");
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
if (isPackageId(pkg) && ref.package !== pkg) {
|
|
132
|
+
r.fail("DESIGN_RELATION_BROKEN", artifact, `'parent_baseline' apunta a ${ref.package} y este baseline es de ${pkg}`, "una línea de baselines pertenece a un solo package; una divergencia crea OTRO package con 'derived_from'");
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
if (isRevision(revision) && ref.revision !== revision - 1) {
|
|
136
|
+
r.fail("DESIGN_RELATION_BROKEN", artifact, `r${revision} declara como padre a r${ref.revision} y su padre es r${revision - 1}`, "la línea es continua: no se saltean revisiones ni se bifurca");
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* The closed selection. Two things are checked beyond shape: that every entry
|
|
141
|
+
* is a file a baseline is ALLOWED to seal, and that the revision it declares is
|
|
142
|
+
* the one its own name carries.
|
|
143
|
+
*/
|
|
144
|
+
function readSelection(r, raw, artifact) {
|
|
145
|
+
const out = [];
|
|
146
|
+
const seen = new Set();
|
|
147
|
+
for (const entry of eachRecord(r, raw, "selection", artifact, " de archivos normativos")) {
|
|
148
|
+
const path = r.read(entry, "selection[].path");
|
|
149
|
+
const revision = r.read(entry, "selection[].revision");
|
|
150
|
+
const sha256 = r.read(entry, "selection[].sha256");
|
|
151
|
+
if (typeof path !== "string" || path.length === 0) {
|
|
152
|
+
r.invalid(artifact, "cada entrada de 'selection' necesita 'path'", "escribí el path relativo al package");
|
|
153
|
+
continue;
|
|
154
|
+
}
|
|
155
|
+
const normalized = checkSelectable(r, artifact, path);
|
|
156
|
+
if (normalized === null)
|
|
157
|
+
continue;
|
|
158
|
+
// Deduplicated on the NORMALIZED path, and Unicode-normalized with it: a
|
|
159
|
+
// trailing space and an NFD spelling are the same file on disk, and sealing
|
|
160
|
+
// it twice with two different SHA-256 leaves nobody able to say which is right.
|
|
161
|
+
if (seen.has(normalized)) {
|
|
162
|
+
r.fail("DESIGN_ID_DUPLICATE", artifact, `'${normalized}' está seleccionado dos veces`, "una selección cerrada nombra cada archivo una vez");
|
|
163
|
+
continue;
|
|
164
|
+
}
|
|
165
|
+
seen.add(normalized);
|
|
166
|
+
if (!isDigest(sha256)) {
|
|
167
|
+
r.invalid(artifact, `selection['${normalized}']: 'sha256' debe ser 'sha256:' + 64 hex`, "hasheá los bytes del archivo");
|
|
168
|
+
continue;
|
|
169
|
+
}
|
|
170
|
+
if (!checkDeclaredRevision(r, artifact, normalized, revision))
|
|
171
|
+
continue;
|
|
172
|
+
out.push({
|
|
173
|
+
path: normalized,
|
|
174
|
+
revision: typeof revision === "number" ? revision : null,
|
|
175
|
+
sha256,
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
return out;
|
|
179
|
+
}
|
|
180
|
+
/** Only normative files. The mutable index and the projections are excluded BY CONSTRUCTION. */
|
|
181
|
+
function checkSelectable(r, artifact, path) {
|
|
182
|
+
// FIRST, before any prefix reasoning: `flows/../governance/reviews/REV-001.json`
|
|
183
|
+
// starts with `flows/` and would sail past every exclusion below. A traversal
|
|
184
|
+
// does not just escape the package — it defeats the whole "by construction".
|
|
185
|
+
const safe = checkSafeRelativePath(path);
|
|
186
|
+
if (!safe.ok) {
|
|
187
|
+
r.fail("DESIGN_PATH_UNSAFE", artifact, `selection: '${path}' ${safe.why}`, "los paths de una selección son relativos al package y nunca salen de él");
|
|
188
|
+
return null;
|
|
189
|
+
}
|
|
190
|
+
const normalized = safe.path.normalize("NFC");
|
|
191
|
+
if (PROJECTIONS.includes(normalized)) {
|
|
192
|
+
r.fail("DESIGN_SELECTION_FORBIDDEN", artifact, `'${normalized}' es una proyección regenerable y no puede sellarse`, "quitala de la selección: regenerarla cambiaría el digest de una revisión ya publicada");
|
|
193
|
+
return null;
|
|
194
|
+
}
|
|
195
|
+
if (normalized === "design-manifest.json" || normalized.startsWith("governance/")) {
|
|
196
|
+
r.fail("DESIGN_SELECTION_FORBIDDEN", artifact, `'${normalized}' es un índice mutable o un record de gobierno y no puede sellarse`, "quitalo de la selección: el catálogo y el gobierno cambian sin mintear una revisión");
|
|
197
|
+
return null;
|
|
198
|
+
}
|
|
199
|
+
if (!SELECTABLE_DIRS.some((dir) => normalized.startsWith(`${dir}/`))) {
|
|
200
|
+
r.fail("DESIGN_SELECTION_FORBIDDEN", artifact, `'${normalized}' no está en ninguna carpeta de artefactos normativos`, `una selección solo sella archivos bajo: ${SELECTABLE_DIRS.join(", ")}`);
|
|
201
|
+
return null;
|
|
202
|
+
}
|
|
203
|
+
return normalized;
|
|
204
|
+
}
|
|
205
|
+
/** An asset carries no revision; everything else carries it in its own name. */
|
|
206
|
+
function checkDeclaredRevision(r, artifact, path, revision) {
|
|
207
|
+
if (path.startsWith("assets/")) {
|
|
208
|
+
if (revision !== null) {
|
|
209
|
+
r.invalid(artifact, `selection['${path}']: un asset es content-addressed y no lleva revisión`, "poné 'revision': null");
|
|
210
|
+
return false;
|
|
211
|
+
}
|
|
212
|
+
// Content-addressed means the digest IS the name. Without this the selection
|
|
213
|
+
// could seal `assets/logo.svg` with any sha256 at all.
|
|
214
|
+
if (!isAssetFilename(path.slice("assets/".length))) {
|
|
215
|
+
r.invalid(artifact, `selection['${path}']: un asset se nombra <sha256>-<nombre>.<ext>`, "renombrá el archivo con su propio digest adelante");
|
|
216
|
+
return false;
|
|
217
|
+
}
|
|
218
|
+
return true;
|
|
219
|
+
}
|
|
220
|
+
if (!isRevision(revision)) {
|
|
221
|
+
r.invalid(artifact, `selection['${path}']: 'revision' debe ser un entero >= 1`, "declará la revisión que el archivo sella");
|
|
222
|
+
return false;
|
|
223
|
+
}
|
|
224
|
+
// The SAME naming rule the manifest applies, not a looser `includes`: an
|
|
225
|
+
// `includes("-r001-")` accepts `flows/FLW-001-r002-nota-r001-vieja.md` as r1,
|
|
226
|
+
// and a flow filed under `screens/`. One rule, one place.
|
|
227
|
+
const kind = kindOfDirectory(path);
|
|
228
|
+
if (kind === null)
|
|
229
|
+
return true; // ya reportado por checkSelectable
|
|
230
|
+
const id = path
|
|
231
|
+
.slice(NAMING[kind].dir.length + 1)
|
|
232
|
+
.split("-")
|
|
233
|
+
.slice(0, 2)
|
|
234
|
+
.join("-");
|
|
235
|
+
// The id comes FROM the path, so checking the name against it would be
|
|
236
|
+
// circular. What is not circular — and what actually catches a flow filed
|
|
237
|
+
// under `screens/` — is that the prefix has to match the directory's kind.
|
|
238
|
+
if (!isArtifactId(id, kind)) {
|
|
239
|
+
r.invalid(artifact, `selection['${path}']: un ${kind} vive en '${NAMING[kind].dir}/' y su id empieza con ${ARTIFACT_PREFIX[kind]}-`, "movelo a la carpeta de su tipo, o corregí el id");
|
|
240
|
+
return false;
|
|
241
|
+
}
|
|
242
|
+
const check = checkNaming(kind, path, id, revision);
|
|
243
|
+
if (check.ok)
|
|
244
|
+
return true;
|
|
245
|
+
r.fail("DESIGN_RELATION_BROKEN", artifact, `selection: ${check.why}`, `usá '${check.expected}'`);
|
|
246
|
+
return false;
|
|
247
|
+
}
|
|
248
|
+
/** Which artifact kind lives in the directory a selected path sits in. */
|
|
249
|
+
function kindOfDirectory(path) {
|
|
250
|
+
const kinds = Object.entries(NAMING);
|
|
251
|
+
// Longest directory first, so `design-system/rules` wins over any prefix of it.
|
|
252
|
+
const match = kinds
|
|
253
|
+
.sort(([, a], [, b]) => b.dir.length - a.dir.length)
|
|
254
|
+
.find(([, rule]) => path.startsWith(`${rule.dir}/`));
|
|
255
|
+
return match === undefined ? null : match[0];
|
|
256
|
+
}
|
|
257
|
+
function done(r, value) {
|
|
258
|
+
return { ok: value !== null, value, failures: r.failures, touched: r.touched };
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* The authority table, applied. Manifest and baseline describe overlapping
|
|
262
|
+
* facts; where they disagree the NORMATIVE owner wins and the disagreement is
|
|
263
|
+
* an error — never a silent reconciliation.
|
|
264
|
+
*/
|
|
265
|
+
export function checkBaselineAuthority(manifest, baseline, artifact) {
|
|
266
|
+
const failures = [];
|
|
267
|
+
const broken = (message, action) => {
|
|
268
|
+
failures.push({ code: "DESIGN_AUTHORITY_CONFLICT", artifact, message, action });
|
|
269
|
+
};
|
|
270
|
+
if (baseline.package !== manifest.id) {
|
|
271
|
+
broken(`el baseline dice ser de ${baseline.package} y el manifest declara ${manifest.id}`, "un baseline vive dentro del package que sella");
|
|
272
|
+
return failures;
|
|
273
|
+
}
|
|
274
|
+
const indexed = manifest.baselines.find((b) => b.revision === baseline.revision);
|
|
275
|
+
if (indexed === undefined) {
|
|
276
|
+
broken(`el manifest no cataloga r${baseline.revision}`, "agregá la revisión a 'baselines' del manifest, o borrá el baseline huérfano");
|
|
277
|
+
}
|
|
278
|
+
else {
|
|
279
|
+
compareIndexEntry(broken, baseline, indexed);
|
|
280
|
+
}
|
|
281
|
+
compareSelectionAgainstCatalog(broken, manifest, baseline);
|
|
282
|
+
return failures;
|
|
283
|
+
}
|
|
284
|
+
/** The baseline is the authority; the manifest merely indexes it. */
|
|
285
|
+
function compareIndexEntry(broken, baseline, indexed) {
|
|
286
|
+
const fields = [
|
|
287
|
+
["digest", indexed.digest, baseline.digest],
|
|
288
|
+
["parent_baseline", indexed.parent_baseline, baseline.parent_baseline],
|
|
289
|
+
["published", indexed.published, baseline.published],
|
|
290
|
+
];
|
|
291
|
+
for (const [field, indexedValue, sealedValue] of fields) {
|
|
292
|
+
if (indexedValue === sealedValue)
|
|
293
|
+
continue;
|
|
294
|
+
broken(`el manifest declara ${field}=${indexedValue ?? "null"} para r${baseline.revision} y el baseline sella ${sealedValue ?? "null"}`, `el baseline es la autoridad: copiá su '${field}' al manifest`);
|
|
295
|
+
}
|
|
296
|
+
// No se compara `indexed.path`: `validateDesignManifest` ya exige el nombre
|
|
297
|
+
// canónico de cada baseline, así que un manifest con otro path no llega hasta
|
|
298
|
+
// acá. Duplicarlo sería una rama que ningún manifest válido puede alcanzar.
|
|
299
|
+
}
|
|
300
|
+
/**
|
|
301
|
+
* Everything a baseline seals, the package must know about — otherwise the
|
|
302
|
+
* revision publishes bytes its own catalog cannot name.
|
|
303
|
+
*/
|
|
304
|
+
function compareSelectionAgainstCatalog(broken, manifest, baseline) {
|
|
305
|
+
const catalogued = new Set();
|
|
306
|
+
for (const list of Object.values(manifest.catalog)) {
|
|
307
|
+
for (const entry of list)
|
|
308
|
+
catalogued.add(entry.path);
|
|
309
|
+
}
|
|
310
|
+
for (const entry of baseline.selection) {
|
|
311
|
+
if (catalogued.has(entry.path))
|
|
312
|
+
continue;
|
|
313
|
+
broken(`el baseline sella '${entry.path}' y el catálogo del manifest no lo contiene`, "catalogá ese archivo en el manifest, o quitalo de la selección");
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
/**
|
|
317
|
+
* Compare-and-swap. Publishing a revision states which baseline it believed was
|
|
318
|
+
* current; if the line moved since, the publication is refused rather than
|
|
319
|
+
* leaving two revisions claiming the same succession.
|
|
320
|
+
*/
|
|
321
|
+
export function checkPublicationBase(manifest, candidate, artifact) {
|
|
322
|
+
if (candidate.package !== manifest.id) {
|
|
323
|
+
return {
|
|
324
|
+
code: "DESIGN_AUTHORITY_CONFLICT",
|
|
325
|
+
artifact,
|
|
326
|
+
message: `la publicación trae un baseline de ${candidate.package} y el package es ${manifest.id}`,
|
|
327
|
+
action: "un baseline se publica dentro del package que sella",
|
|
328
|
+
};
|
|
329
|
+
}
|
|
330
|
+
if (manifest.baselines.some((b) => b.revision === candidate.revision)) {
|
|
331
|
+
return {
|
|
332
|
+
code: "DESIGN_BASE_STALE",
|
|
333
|
+
artifact,
|
|
334
|
+
message: `r${candidate.revision} ya está publicada`,
|
|
335
|
+
action: "una revisión publicada no se republica: numerá la siguiente",
|
|
336
|
+
};
|
|
337
|
+
}
|
|
338
|
+
const current = manifest.current_baseline;
|
|
339
|
+
const expected = current === null ? null : `${manifest.id}@r${current.revision}`;
|
|
340
|
+
if (candidate.parent_baseline !== expected) {
|
|
341
|
+
return {
|
|
342
|
+
code: "DESIGN_BASE_STALE",
|
|
343
|
+
artifact,
|
|
344
|
+
message: `la publicación parte de ${candidate.parent_baseline ?? "ninguna revisión"} y la vigente es ${expected ?? "ninguna"}`,
|
|
345
|
+
action: "alguien publicó mientras preparabas esta: releé el package y rehacé la revisión sobre la base nueva",
|
|
346
|
+
};
|
|
347
|
+
}
|
|
348
|
+
const next = current === null ? 1 : current.revision + 1;
|
|
349
|
+
if (candidate.revision !== next) {
|
|
350
|
+
return {
|
|
351
|
+
code: "DESIGN_BASE_STALE",
|
|
352
|
+
artifact,
|
|
353
|
+
message: `la publicación numera r${candidate.revision} y la siguiente de la línea es r${next}`,
|
|
354
|
+
action: "la línea es continua: numerá la revisión que sigue a la vigente",
|
|
355
|
+
};
|
|
356
|
+
}
|
|
357
|
+
return null;
|
|
358
|
+
}
|
|
359
|
+
//# sourceMappingURL=baseline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"baseline.js","sourceRoot":"","sources":["../../../src/domain/design/baseline.ts"],"names":[],"mappings":"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"}
|