@tacuchi/agent-workflow-cli 20.26.0 → 21.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. package/README.md +1 -1
  2. package/dist/adapters/node-file-system.js +3 -0
  3. package/dist/adapters/node-file-system.js.map +1 -1
  4. package/dist/application/design/design-gate-service.js +246 -0
  5. package/dist/application/design/design-gate-service.js.map +1 -0
  6. package/dist/application/design/design-graph-service.js +85 -0
  7. package/dist/application/design/design-graph-service.js.map +1 -0
  8. package/dist/application/design/design-index-service.js +132 -0
  9. package/dist/application/design/design-index-service.js.map +1 -0
  10. package/dist/application/design/design-publish-service.js +488 -0
  11. package/dist/application/design/design-publish-service.js.map +1 -0
  12. package/dist/application/design/design-resolver-service.js +165 -0
  13. package/dist/application/design/design-resolver-service.js.map +1 -0
  14. package/dist/application/resume-service.js +23 -4
  15. package/dist/application/resume-service.js.map +1 -1
  16. package/dist/application/semantic-operation/protocol.js +18 -12
  17. package/dist/application/semantic-operation/protocol.js.map +1 -1
  18. package/dist/application/semantic-operation/publish.js +56 -9
  19. package/dist/application/semantic-operation/publish.js.map +1 -1
  20. package/dist/application/skills-resolver-service.js +19 -4
  21. package/dist/application/skills-resolver-service.js.map +1 -1
  22. package/dist/application/status-service.js +1 -0
  23. package/dist/application/status-service.js.map +1 -1
  24. package/dist/application/workline-index-service.js +6 -0
  25. package/dist/application/workline-index-service.js.map +1 -1
  26. package/dist/application/workspace-init-service.js +9 -1
  27. package/dist/application/workspace-init-service.js.map +1 -1
  28. package/dist/cli/commands/designs.js +110 -0
  29. package/dist/cli/commands/designs.js.map +1 -0
  30. package/dist/cli/commands/index.js +2 -0
  31. package/dist/cli/commands/index.js.map +1 -1
  32. package/dist/cli/commands/resume.js +8 -0
  33. package/dist/cli/commands/resume.js.map +1 -1
  34. package/dist/cli/commands/status.js +45 -0
  35. package/dist/cli/commands/status.js.map +1 -1
  36. package/dist/cli/help-groups.js +3 -0
  37. package/dist/cli/help-groups.js.map +1 -1
  38. package/dist/cli/parser.js +1 -0
  39. package/dist/cli/parser.js.map +1 -1
  40. package/dist/domain/design/artifact-body.js +223 -0
  41. package/dist/domain/design/artifact-body.js.map +1 -0
  42. package/dist/domain/design/artifact.js +606 -0
  43. package/dist/domain/design/artifact.js.map +1 -0
  44. package/dist/domain/design/baseline.js +359 -0
  45. package/dist/domain/design/baseline.js.map +1 -0
  46. package/dist/domain/design/capability.js +51 -0
  47. package/dist/domain/design/capability.js.map +1 -0
  48. package/dist/domain/design/closure.js +161 -0
  49. package/dist/domain/design/closure.js.map +1 -0
  50. package/dist/domain/design/governance.js +298 -0
  51. package/dist/domain/design/governance.js.map +1 -0
  52. package/dist/domain/design/identity.js +145 -0
  53. package/dist/domain/design/identity.js.map +1 -0
  54. package/dist/domain/design/manifest.js +552 -0
  55. package/dist/domain/design/manifest.js.map +1 -0
  56. package/dist/domain/design/maturity.js +234 -0
  57. package/dist/domain/design/maturity.js.map +1 -0
  58. package/dist/domain/design/naming.js +117 -0
  59. package/dist/domain/design/naming.js.map +1 -0
  60. package/dist/domain/design/projections.js +165 -0
  61. package/dist/domain/design/projections.js.map +1 -0
  62. package/dist/domain/design/reference.js +234 -0
  63. package/dist/domain/design/reference.js.map +1 -0
  64. package/dist/domain/design/retired.js +61 -0
  65. package/dist/domain/design/retired.js.map +1 -0
  66. package/dist/domain/design/revision.js +219 -0
  67. package/dist/domain/design/revision.js.map +1 -0
  68. package/dist/domain/design/secrets.js +86 -0
  69. package/dist/domain/design/secrets.js.map +1 -0
  70. package/dist/domain/design/validation.js +75 -0
  71. package/dist/domain/design/validation.js.map +1 -0
  72. package/dist/domain/design/yaml-subset.js +390 -0
  73. package/dist/domain/design/yaml-subset.js.map +1 -0
  74. package/dist/domain/safe-path.js +23 -0
  75. package/dist/domain/safe-path.js.map +1 -0
  76. package/dist/domain/skills.js +27 -3
  77. package/dist/domain/skills.js.map +1 -1
  78. package/package.json +1 -1
  79. package/skills/w/SKILL.md +10 -8
  80. package/skills/w/artifacts/README.md +3 -4
  81. package/skills/w/artifacts/artifacts-core/CHECKPOINT.md +2 -2
  82. package/skills/w/commands/plan-exec.md +11 -5
  83. package/skills/w/commands/plan-new.md +6 -2
  84. package/skills/w/commands/plan-refine.md +6 -3
  85. package/skills/w/commands/quick.md +2 -2
  86. package/skills/w/commands/spec-new.md +2 -2
  87. package/skills/w/commands/spec-refine.md +1 -0
  88. package/skills/w/context/MANIFEST.json +19 -8
  89. package/skills/w/loops/CHASSIS.md +2 -2
  90. package/skills/w/loops/CODE-POLICIES.md +22 -7
  91. package/skills/w/loops/README.md +1 -1
  92. package/skills/w/loops/plan-exec-loop/LOOP.md +127 -61
  93. package/skills/w/loops/plan-new-loop/LOOP.md +66 -70
  94. package/skills/w/loops/plan-refine-loop/LOOP.md +15 -7
  95. package/skills/w/loops/spec-refine-loop/LOOP.md +14 -12
  96. package/skills/w/modules/DESIGN-REFERENCES.md +109 -0
  97. package/skills/w/modules/PERSIST-ROUTING.md +1 -0
  98. package/skills/w/modules/PLAN-EXECUTION-BATCHES.md +84 -0
  99. package/skills/w/roles/README.md +7 -5
  100. package/skills/w/roles/design/ROLE.md +217 -0
  101. package/skills/w/schemas/design/design-baseline.v1.schema.json +71 -0
  102. package/skills/w/schemas/design/design-manifest.v1.schema.json +322 -0
  103. package/skills/w/schemas/design/design-review.v1.schema.json +72 -0
  104. package/skills/w/schemas/design/design-revocation.v1.schema.json +54 -0
  105. package/skills/w/schemas/design/ui-flow.v1.schema.json +211 -0
  106. package/skills/w/schemas/design/ui-screen.v1.schema.json +214 -0
  107. package/skills/w/artifacts/artifacts-design/SPEC.md +0 -42
  108. package/skills/w/modules/PLAN-DESIGN-SPECS.md +0 -12
  109. package/skills/w/modules/PLAN-REFINE-DESIGN-SPECS.md +0 -7
  110. package/skills/w/roles/ui-spec/ROLE.md +0 -147
@@ -0,0 +1,223 @@
1
+ import { ARTIFACT_REF_GLOBAL, CRITERION_GLOBAL } from "./identity.js";
2
+ /** Flow v1 — once each, in this order. */
3
+ export const FLOW_HEADINGS = [
4
+ "Goal and outcome",
5
+ "Preconditions and entry",
6
+ "Main journey",
7
+ "Alternatives and recovery",
8
+ "Permissions and privacy",
9
+ "Traceability",
10
+ ];
11
+ /** Screen v1 — once each, in this order. */
12
+ export const SCREEN_HEADINGS = [
13
+ "Purpose and context",
14
+ "Structure and content",
15
+ "Components and design-system deltas",
16
+ "Data, permissions and validation",
17
+ "States and transitions",
18
+ "Interaction and navigation",
19
+ "Responsive and adaptation",
20
+ "Localization",
21
+ "Accessibility",
22
+ "Edge cases and degradation",
23
+ "Traceability",
24
+ ];
25
+ /**
26
+ * The sections that never accept a non-applicability claim. They carry what the
27
+ * artifact IS: drop them and there is nothing left to implement against.
28
+ */
29
+ export const ESSENTIAL_HEADINGS = {
30
+ flow: ["Goal and outcome", "Main journey", "Traceability"],
31
+ screen: [
32
+ "Purpose and context",
33
+ "Structure and content",
34
+ "States and transitions",
35
+ "Interaction and navigation",
36
+ "Accessibility",
37
+ "Traceability",
38
+ ],
39
+ };
40
+ export const HEADINGS = {
41
+ flow: FLOW_HEADINGS,
42
+ screen: SCREEN_HEADINGS,
43
+ };
44
+ /** `Data, permissions and validation` → `data_permissions_and_validation`. */
45
+ export function headingKey(heading) {
46
+ return heading
47
+ .toLowerCase()
48
+ .replace(/[^a-z0-9]+/g, "_")
49
+ .replace(/^_|_$/g, "");
50
+ }
51
+ /** The `not_applicable` keys each kind admits — derived from its own headings. */
52
+ export function conditionalKeys(kind) {
53
+ const essential = new Set(ESSENTIAL_HEADINGS[kind]);
54
+ return HEADINGS[kind].filter((h) => !essential.has(h)).map(headingKey);
55
+ }
56
+ /**
57
+ * Placeholders that look like an answer and are not. A section may legitimately
58
+ * say "ninguno" or "none" — that is a statement about the design. `N/A`, `TBD`
59
+ * and a lone dash are refusals to answer, and the contract has a proper place
60
+ * for those: `not_applicable` with a reason.
61
+ */
62
+ export const PLACEHOLDER = /^(n\/?a\.?|n\.a\.|tbd|todo|pendiente|\?+|[-–—*]+)$/i;
63
+ /** Split the body into its `##` sections. `#`/`###` are content, not structure. */
64
+ export function parseBody(body, firstLine) {
65
+ const lines = body.split(/\r?\n/);
66
+ const sections = [];
67
+ const order = [];
68
+ const preamble = [];
69
+ let current = null;
70
+ let fence = null;
71
+ const close = () => {
72
+ if (current === null)
73
+ return;
74
+ const text = current.text.join("\n").trim();
75
+ sections.push({
76
+ heading: current.heading,
77
+ key: headingKey(current.heading),
78
+ text,
79
+ prose: stripFences(current.text).join("\n").trim(),
80
+ line: current.line,
81
+ });
82
+ };
83
+ for (let i = 0; i < lines.length; i++) {
84
+ const line = lines[i];
85
+ fence = trackFence(line, fence);
86
+ const match = fence === null ? /^##\s+(.+?)\s*$/.exec(line) : null;
87
+ if (match === null) {
88
+ if (current !== null)
89
+ current.text.push(line);
90
+ else if (line.trim().length > 0 && !/^#\s+/.test(line))
91
+ preamble.push(line.trim());
92
+ continue;
93
+ }
94
+ close();
95
+ const heading = match[1];
96
+ order.push(heading);
97
+ current = { heading, line: firstLine + i, text: [] };
98
+ }
99
+ close();
100
+ return { sections, order, preamble: preamble.join("\n") };
101
+ }
102
+ /** Track ``` and ~~~ fences. Returns the open fence marker, or null outside one. */
103
+ function trackFence(line, open) {
104
+ const match = /^\s*(```+|~~~+)/.exec(line);
105
+ if (match === null)
106
+ return open;
107
+ const marker = match[1].slice(0, 3);
108
+ if (open === null)
109
+ return marker;
110
+ return marker === open ? null : open;
111
+ }
112
+ function stripFences(lines) {
113
+ const out = [];
114
+ let fence = null;
115
+ for (const line of lines) {
116
+ const next = trackFence(line, fence);
117
+ if (fence === null && next !== null) {
118
+ fence = next;
119
+ continue;
120
+ }
121
+ if (fence !== null) {
122
+ if (next === null)
123
+ fence = null;
124
+ continue;
125
+ }
126
+ out.push(line);
127
+ }
128
+ return out;
129
+ }
130
+ /**
131
+ * The heading contract: the expected list, once each, in order, non-empty, with
132
+ * no placeholder standing in for content and no heading nobody declared.
133
+ */
134
+ export function checkHeadings(r, parsed, kind, artifact) {
135
+ checkPresence(r, parsed, kind, artifact);
136
+ checkOrder(r, parsed, kind, artifact);
137
+ checkContent(r, parsed, kind, artifact);
138
+ }
139
+ /** Every expected heading exactly once, and nothing the contract does not name. */
140
+ function checkPresence(r, parsed, kind, artifact) {
141
+ const expected = HEADINGS[kind];
142
+ const expectedSet = new Set(expected);
143
+ const seen = new Map();
144
+ for (const heading of parsed.order) {
145
+ seen.set(heading, (seen.get(heading) ?? 0) + 1);
146
+ if (expectedSet.has(heading))
147
+ continue;
148
+ r.fail("DESIGN_HEADING_UNKNOWN", artifact, `'## ${heading}' no es una sección de ${kind} v1`, `usá solo las ${expected.length} secciones del contrato: ${expected.join(" · ")}`);
149
+ }
150
+ for (const heading of expected) {
151
+ const count = seen.get(heading) ?? 0;
152
+ if (count === 0) {
153
+ r.fail("DESIGN_HEADING_MISSING", artifact, `falta la sección '## ${heading}'`, "escribila con texto propio; omitirla no la vuelve no aplicable");
154
+ }
155
+ else if (count > 1) {
156
+ r.fail("DESIGN_HEADING_DUPLICATE", artifact, `'## ${heading}' aparece ${count} veces`, "dejá una sola y fusioná su contenido");
157
+ }
158
+ }
159
+ }
160
+ /**
161
+ * Order is only meaningful over the headings actually present and expected —
162
+ * reporting it on top of a missing heading would be noise on top of noise.
163
+ */
164
+ function checkOrder(r, parsed, kind, artifact) {
165
+ const expected = HEADINGS[kind];
166
+ const expectedSet = new Set(expected);
167
+ const present = parsed.order.filter((h) => expectedSet.has(h));
168
+ const canonical = expected.filter((h) => present.includes(h));
169
+ if (present.length !== canonical.length)
170
+ return;
171
+ if (present.join("\n") === canonical.join("\n"))
172
+ return;
173
+ r.fail("DESIGN_HEADING_ORDER", artifact, `las secciones están fuera de orden: ${present.join(" · ")}`, `el orden de ${kind} v1 es: ${canonical.join(" · ")}`);
174
+ }
175
+ /** Each section carries real text — never empty, never a placeholder. */
176
+ function checkContent(r, parsed, kind, artifact) {
177
+ const expectedSet = new Set(HEADINGS[kind]);
178
+ for (const section of parsed.sections) {
179
+ if (!expectedSet.has(section.heading))
180
+ continue;
181
+ if (section.text.length === 0) {
182
+ r.fail("DESIGN_SECTION_EMPTY", artifact, `'## ${section.heading}' (línea ${section.line}) no tiene texto`, "cada sección lleva texto propio coherente con el frontmatter");
183
+ continue;
184
+ }
185
+ if (!PLACEHOLDER.test(section.text))
186
+ continue;
187
+ r.fail("DESIGN_SECTION_PLACEHOLDER", artifact, `'## ${section.heading}' (línea ${section.line}) dice solo '${section.text}'`, isEssential(kind, section.heading)
188
+ ? "esta sección es esencial y no admite no-aplicabilidad: escribí su contenido"
189
+ : `si de verdad no aplica, declaralo en 'not_applicable.${section.key}' con una razón, y explicalo acá`);
190
+ }
191
+ }
192
+ export function isEssential(kind, heading) {
193
+ return ESSENTIAL_HEADINGS[kind].includes(heading);
194
+ }
195
+ /**
196
+ * Canonical references the body cites, in document order and deduplicated.
197
+ *
198
+ * Only the exact `DES-NNN/XXX-NNN@rN[#anchor]` form is extracted — never prose.
199
+ * That is the whole point: cross-validation may not depend on reading a
200
+ * sentence, so anything the author writes informally is simply not a reference.
201
+ */
202
+ export function bodyReferences(parsed) {
203
+ return harvest(parsed, ARTIFACT_REF_GLOBAL);
204
+ }
205
+ /** Acceptance criteria the body cites, in document order and deduplicated. */
206
+ export function bodyCriteria(parsed) {
207
+ return harvest(parsed, CRITERION_GLOBAL);
208
+ }
209
+ /** Asset digests the body cites. Same closed grammar as everywhere else. */
210
+ export function bodyDigests(parsed) {
211
+ return harvest(parsed, /sha256:[0-9a-f]{64}/g);
212
+ }
213
+ function harvest(parsed, pattern) {
214
+ const out = [];
215
+ for (const prose of [parsed.preamble, ...parsed.sections.map((s) => s.prose)]) {
216
+ for (const match of prose.matchAll(pattern)) {
217
+ if (!out.includes(match[0]))
218
+ out.push(match[0]);
219
+ }
220
+ }
221
+ return out;
222
+ }
223
+ //# sourceMappingURL=artifact-body.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"artifact-body.js","sourceRoot":"","sources":["../../../src/domain/design/artifact-body.ts"],"names":[],"mappings":"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"}