arggon-harness 0.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.
Files changed (170) hide show
  1. package/README.md +229 -0
  2. package/config/default-opencode.json +21 -0
  3. package/dist/init.d.ts +3 -0
  4. package/dist/init.d.ts.map +1 -0
  5. package/dist/init.js +406 -0
  6. package/dist/init.js.map +1 -0
  7. package/dist/plugin/engine/artifact-graph.d.ts +38 -0
  8. package/dist/plugin/engine/artifact-graph.d.ts.map +1 -0
  9. package/dist/plugin/engine/artifact-graph.js +137 -0
  10. package/dist/plugin/engine/artifact-graph.js.map +1 -0
  11. package/dist/plugin/engine/config.d.ts +21 -0
  12. package/dist/plugin/engine/config.d.ts.map +1 -0
  13. package/dist/plugin/engine/config.js +146 -0
  14. package/dist/plugin/engine/config.js.map +1 -0
  15. package/dist/plugin/engine/delta-apply.d.ts +23 -0
  16. package/dist/plugin/engine/delta-apply.d.ts.map +1 -0
  17. package/dist/plugin/engine/delta-apply.js +153 -0
  18. package/dist/plugin/engine/delta-apply.js.map +1 -0
  19. package/dist/plugin/engine/git.d.ts +32 -0
  20. package/dist/plugin/engine/git.d.ts.map +1 -0
  21. package/dist/plugin/engine/git.js +61 -0
  22. package/dist/plugin/engine/git.js.map +1 -0
  23. package/dist/plugin/engine/integrity.d.ts +45 -0
  24. package/dist/plugin/engine/integrity.d.ts.map +1 -0
  25. package/dist/plugin/engine/integrity.js +98 -0
  26. package/dist/plugin/engine/integrity.js.map +1 -0
  27. package/dist/plugin/engine/registry.d.ts +39 -0
  28. package/dist/plugin/engine/registry.d.ts.map +1 -0
  29. package/dist/plugin/engine/registry.js +191 -0
  30. package/dist/plugin/engine/registry.js.map +1 -0
  31. package/dist/plugin/engine/state.d.ts +31 -0
  32. package/dist/plugin/engine/state.d.ts.map +1 -0
  33. package/dist/plugin/engine/state.js +116 -0
  34. package/dist/plugin/engine/state.js.map +1 -0
  35. package/dist/plugin/engine/task-tracker.d.ts +66 -0
  36. package/dist/plugin/engine/task-tracker.d.ts.map +1 -0
  37. package/dist/plugin/engine/task-tracker.js +124 -0
  38. package/dist/plugin/engine/task-tracker.js.map +1 -0
  39. package/dist/plugin/engine/types.d.ts +349 -0
  40. package/dist/plugin/engine/types.d.ts.map +1 -0
  41. package/dist/plugin/engine/types.js +3 -0
  42. package/dist/plugin/engine/types.js.map +1 -0
  43. package/dist/plugin/engine/validator.d.ts +52 -0
  44. package/dist/plugin/engine/validator.d.ts.map +1 -0
  45. package/dist/plugin/engine/validator.js +457 -0
  46. package/dist/plugin/engine/validator.js.map +1 -0
  47. package/dist/plugin/engine/verifier.d.ts +61 -0
  48. package/dist/plugin/engine/verifier.d.ts.map +1 -0
  49. package/dist/plugin/engine/verifier.js +441 -0
  50. package/dist/plugin/engine/verifier.js.map +1 -0
  51. package/dist/plugin/hooks/context-injection.d.ts +11 -0
  52. package/dist/plugin/hooks/context-injection.d.ts.map +1 -0
  53. package/dist/plugin/hooks/context-injection.js +88 -0
  54. package/dist/plugin/hooks/context-injection.js.map +1 -0
  55. package/dist/plugin/hooks/event-handlers.d.ts +9 -0
  56. package/dist/plugin/hooks/event-handlers.d.ts.map +1 -0
  57. package/dist/plugin/hooks/event-handlers.js +10 -0
  58. package/dist/plugin/hooks/event-handlers.js.map +1 -0
  59. package/dist/plugin/hooks/workflow-gate.d.ts +24 -0
  60. package/dist/plugin/hooks/workflow-gate.d.ts.map +1 -0
  61. package/dist/plugin/hooks/workflow-gate.js +78 -0
  62. package/dist/plugin/hooks/workflow-gate.js.map +1 -0
  63. package/dist/plugin/index.d.ts +423 -0
  64. package/dist/plugin/index.d.ts.map +1 -0
  65. package/dist/plugin/index.js +253 -0
  66. package/dist/plugin/index.js.map +1 -0
  67. package/dist/plugin/tools/spec-artifact-instr.d.ts +7 -0
  68. package/dist/plugin/tools/spec-artifact-instr.d.ts.map +1 -0
  69. package/dist/plugin/tools/spec-artifact-instr.js +73 -0
  70. package/dist/plugin/tools/spec-artifact-instr.js.map +1 -0
  71. package/dist/plugin/tools/spec-change-archive.d.ts +6 -0
  72. package/dist/plugin/tools/spec-change-archive.d.ts.map +1 -0
  73. package/dist/plugin/tools/spec-change-archive.js +62 -0
  74. package/dist/plugin/tools/spec-change-archive.js.map +1 -0
  75. package/dist/plugin/tools/spec-change-list.d.ts +3 -0
  76. package/dist/plugin/tools/spec-change-list.d.ts.map +1 -0
  77. package/dist/plugin/tools/spec-change-list.js +38 -0
  78. package/dist/plugin/tools/spec-change-list.js.map +1 -0
  79. package/dist/plugin/tools/spec-change-new.d.ts +7 -0
  80. package/dist/plugin/tools/spec-change-new.d.ts.map +1 -0
  81. package/dist/plugin/tools/spec-change-new.js +47 -0
  82. package/dist/plugin/tools/spec-change-new.js.map +1 -0
  83. package/dist/plugin/tools/spec-change-status.d.ts +6 -0
  84. package/dist/plugin/tools/spec-change-status.d.ts.map +1 -0
  85. package/dist/plugin/tools/spec-change-status.js +43 -0
  86. package/dist/plugin/tools/spec-change-status.js.map +1 -0
  87. package/dist/plugin/tools/spec-design-critique.d.ts +20 -0
  88. package/dist/plugin/tools/spec-design-critique.d.ts.map +1 -0
  89. package/dist/plugin/tools/spec-design-critique.js +412 -0
  90. package/dist/plugin/tools/spec-design-critique.js.map +1 -0
  91. package/dist/plugin/tools/spec-design-hifi.d.ts +119 -0
  92. package/dist/plugin/tools/spec-design-hifi.d.ts.map +1 -0
  93. package/dist/plugin/tools/spec-design-hifi.js +653 -0
  94. package/dist/plugin/tools/spec-design-hifi.js.map +1 -0
  95. package/dist/plugin/tools/spec-design-wireframe.d.ts +91 -0
  96. package/dist/plugin/tools/spec-design-wireframe.d.ts.map +1 -0
  97. package/dist/plugin/tools/spec-design-wireframe.js +357 -0
  98. package/dist/plugin/tools/spec-design-wireframe.js.map +1 -0
  99. package/dist/plugin/tools/spec-init.d.ts +9 -0
  100. package/dist/plugin/tools/spec-init.d.ts.map +1 -0
  101. package/dist/plugin/tools/spec-init.js +58 -0
  102. package/dist/plugin/tools/spec-init.js.map +1 -0
  103. package/dist/plugin/tools/spec-integrity-check.d.ts +6 -0
  104. package/dist/plugin/tools/spec-integrity-check.d.ts.map +1 -0
  105. package/dist/plugin/tools/spec-integrity-check.js +19 -0
  106. package/dist/plugin/tools/spec-integrity-check.js.map +1 -0
  107. package/dist/plugin/tools/spec-registry-update.d.ts +3 -0
  108. package/dist/plugin/tools/spec-registry-update.d.ts.map +1 -0
  109. package/dist/plugin/tools/spec-registry-update.js +34 -0
  110. package/dist/plugin/tools/spec-registry-update.js.map +1 -0
  111. package/dist/plugin/tools/spec-schema-list.d.ts +3 -0
  112. package/dist/plugin/tools/spec-schema-list.d.ts.map +1 -0
  113. package/dist/plugin/tools/spec-schema-list.js +28 -0
  114. package/dist/plugin/tools/spec-schema-list.js.map +1 -0
  115. package/dist/plugin/tools/spec-specs-apply.d.ts +7 -0
  116. package/dist/plugin/tools/spec-specs-apply.d.ts.map +1 -0
  117. package/dist/plugin/tools/spec-specs-apply.js +49 -0
  118. package/dist/plugin/tools/spec-specs-apply.js.map +1 -0
  119. package/dist/plugin/tools/spec-task-progress.d.ts +8 -0
  120. package/dist/plugin/tools/spec-task-progress.d.ts.map +1 -0
  121. package/dist/plugin/tools/spec-task-progress.js +96 -0
  122. package/dist/plugin/tools/spec-task-progress.js.map +1 -0
  123. package/dist/plugin/tools/spec-validate.d.ts +21 -0
  124. package/dist/plugin/tools/spec-validate.d.ts.map +1 -0
  125. package/dist/plugin/tools/spec-validate.js +182 -0
  126. package/dist/plugin/tools/spec-validate.js.map +1 -0
  127. package/dist/plugin/tools/spec-verify.d.ts +7 -0
  128. package/dist/plugin/tools/spec-verify.d.ts.map +1 -0
  129. package/dist/plugin/tools/spec-verify.js +50 -0
  130. package/dist/plugin/tools/spec-verify.js.map +1 -0
  131. package/dist/plugin/tools/util.d.ts +25 -0
  132. package/dist/plugin/tools/util.d.ts.map +1 -0
  133. package/dist/plugin/tools/util.js +33 -0
  134. package/dist/plugin/tools/util.js.map +1 -0
  135. package/package.json +61 -0
  136. package/src/agents/orchestrator.md +158 -0
  137. package/src/agents/spec-apply.md +114 -0
  138. package/src/agents/spec-archive.md +103 -0
  139. package/src/agents/spec-propose.md +120 -0
  140. package/src/agents/spec-verify.md +103 -0
  141. package/src/commands/spec-init.md +6 -0
  142. package/src/commands/spec-onboard.md +6 -0
  143. package/src/commands/spec-status.md +6 -0
  144. package/src/commands/spec-sync.md +6 -0
  145. package/src/schemas/hybrid.yaml +144 -0
  146. package/src/schemas/spec-driven.yaml +155 -0
  147. package/src/schemas/tdd.yaml +203 -0
  148. package/src/skills/playwright-cli/SKILL.md +388 -0
  149. package/src/skills/playwright-cli/references/element-attributes.md +23 -0
  150. package/src/skills/playwright-cli/references/playwright-tests.md +39 -0
  151. package/src/skills/playwright-cli/references/request-mocking.md +87 -0
  152. package/src/skills/playwright-cli/references/running-code.md +241 -0
  153. package/src/skills/playwright-cli/references/session-management.md +225 -0
  154. package/src/skills/playwright-cli/references/spec-driven-testing.md +305 -0
  155. package/src/skills/playwright-cli/references/storage-state.md +275 -0
  156. package/src/skills/playwright-cli/references/test-generation.md +134 -0
  157. package/src/skills/playwright-cli/references/tracing.md +139 -0
  158. package/src/skills/playwright-cli/references/video-recording.md +143 -0
  159. package/src/skills/spec-init/SKILL.md +61 -0
  160. package/src/skills/spec-onboard/SKILL.md +178 -0
  161. package/src/skills/spec-status/SKILL.md +72 -0
  162. package/src/skills/spec-sync/SKILL.md +63 -0
  163. package/src/templates/config.yaml +14 -0
  164. package/src/templates/design-hifi.yaml +580 -0
  165. package/src/templates/design-tech.yaml +42 -0
  166. package/src/templates/design-wireframe.yaml +114 -0
  167. package/src/templates/proposal.yaml +43 -0
  168. package/src/templates/registry.yaml +3 -0
  169. package/src/templates/spec.yaml +56 -0
  170. package/src/templates/tasks.yaml +58 -0
@@ -0,0 +1,441 @@
1
+ import * as fs from 'fs/promises';
2
+ import * as path from 'path';
3
+ import { verifyChange as verifyIntegrityCheck } from './integrity.js';
4
+ /**
5
+ * Runs full 5-dimension verification on a change.
6
+ * @param changeDir - Path to the change directory
7
+ * @param projectRoot - Path to the project root
8
+ * @returns Full verification report
9
+ */
10
+ export async function verifyChange(changeDir, projectRoot) {
11
+ const [integrity, compliance, tasks, coherence, regression] = await Promise.all([
12
+ verifyIntegrity(changeDir),
13
+ verifyCompliance(changeDir, projectRoot),
14
+ verifyTasks(changeDir, projectRoot),
15
+ verifyCoherence(changeDir, projectRoot),
16
+ verifyRegression(changeDir, projectRoot)
17
+ ]);
18
+ const critical = (integrity.valid ? 0 : integrity.issues.length) +
19
+ (regression.safe ? 0 : regression.risks.length);
20
+ const warnings = compliance.uncovered.length +
21
+ tasks.orphans.length +
22
+ coherence.contradicted.length;
23
+ const score = Math.max(0, 100 - (critical * 25) - (warnings * 5));
24
+ return {
25
+ dimensions: { integrity, compliance, tasks, coherence, regression },
26
+ summary: { score, critical, warnings }
27
+ };
28
+ }
29
+ /**
30
+ * Verifies artifact integrity via hash checks.
31
+ * @param changeDir - Path to the change directory
32
+ * @returns Integrity dimension result
33
+ */
34
+ export async function verifyIntegrity(changeDir) {
35
+ try {
36
+ const metaPath = path.join(changeDir, 'meta.yaml');
37
+ const metaContent = await fs.readFile(metaPath, 'utf8');
38
+ const meta = parseSimpleYaml(metaContent);
39
+ if (!meta || !meta.id) {
40
+ return { valid: false, issues: ['Missing or invalid meta.yaml'] };
41
+ }
42
+ // Artifact hash tracking has been removed from Meta.
43
+ // Integrity verification uses State.detectCompleted() for file existence checks.
44
+ // Pass empty object since hash data was never populated.
45
+ const result = await verifyIntegrityCheck(changeDir, {});
46
+ const issues = [
47
+ ...result.missing.map(p => `Missing file: ${p}`),
48
+ ...result.mismatches.map(m => `Hash mismatch: ${m.path}`)
49
+ ];
50
+ return { valid: result.valid, issues };
51
+ }
52
+ catch {
53
+ return { valid: false, issues: ['Could not read meta.yaml'] };
54
+ }
55
+ }
56
+ /**
57
+ * Verifies compliance by checking spec references in source files.
58
+ * @param changeDir - Path to the change directory
59
+ * @param projectRoot - Path to the project root
60
+ * @returns Compliance dimension result
61
+ */
62
+ export async function verifyCompliance(changeDir, projectRoot) {
63
+ try {
64
+ const tasksPath = path.join(changeDir, 'tasks.yaml');
65
+ const tasksContent = await fs.readFile(tasksPath, 'utf8');
66
+ const tasks = parseSimpleYaml(tasksContent);
67
+ if (!tasks || !Array.isArray(tasks.tasks)) {
68
+ return { coverage: 0, uncovered: [], mapped: [] };
69
+ }
70
+ // Read all delta spec files from the specs/ directory
71
+ const specsDir = path.join(changeDir, 'specs');
72
+ let specContents = '';
73
+ try {
74
+ const specFiles = await fs.readdir(specsDir);
75
+ for (const file of specFiles) {
76
+ if (file.endsWith('.yaml')) {
77
+ const content = await fs.readFile(path.join(specsDir, file), 'utf8');
78
+ specContents += content + '\n';
79
+ }
80
+ }
81
+ }
82
+ catch {
83
+ // specs/ directory doesn't exist — coverage will be 0
84
+ }
85
+ const mapped = [];
86
+ const uncovered = [];
87
+ for (const task of tasks.tasks) {
88
+ if (!task.spec_refs || task.spec_refs.length === 0) {
89
+ uncovered.push(task.id);
90
+ continue;
91
+ }
92
+ let found = false;
93
+ for (const ref of task.spec_refs) {
94
+ // Strip capability prefix if present (e.g., "capability/REQ-xxx" → "REQ-xxx")
95
+ const refId = ref.includes('/') ? ref.split('/')[1] : ref;
96
+ // Check if the requirement ID appears in any delta spec file contents
97
+ if (specContents.includes(refId)) {
98
+ found = true;
99
+ mapped.push(task.id);
100
+ break;
101
+ }
102
+ }
103
+ if (!found) {
104
+ uncovered.push(task.id);
105
+ }
106
+ }
107
+ const total = tasks.tasks.length;
108
+ const coverage = total > 0 ? (mapped.length / total) * 100 : 0;
109
+ return { coverage, uncovered, mapped };
110
+ }
111
+ catch {
112
+ return { coverage: 0, uncovered: [], mapped: [] };
113
+ }
114
+ }
115
+ /**
116
+ * Verifies task completeness and finds orphan tasks.
117
+ * @param changeDir - Path to the change directory
118
+ * @param projectRoot - Path to the project root
119
+ * @returns Tasks dimension result
120
+ */
121
+ export async function verifyTasks(changeDir, projectRoot) {
122
+ try {
123
+ const tasksPath = path.join(changeDir, 'tasks.yaml');
124
+ const tasksContent = await fs.readFile(tasksPath, 'utf8');
125
+ const tasks = parseSimpleYaml(tasksContent);
126
+ if (!tasks || !Array.isArray(tasks.tasks)) {
127
+ return { total: 0, done: 0, verified: 0, orphans: [] };
128
+ }
129
+ const total = tasks.tasks.length;
130
+ const done = tasks.tasks.filter((t) => t.status === 'done').length;
131
+ const orphans = [];
132
+ let verified = 0;
133
+ for (const task of tasks.tasks) {
134
+ if (task.status === 'done') {
135
+ let hasVerification = false;
136
+ for (const file of task.affected_files || []) {
137
+ try {
138
+ const filePath = path.join(projectRoot, file);
139
+ await fs.access(filePath);
140
+ hasVerification = true;
141
+ break;
142
+ }
143
+ catch {
144
+ // file doesn't exist
145
+ }
146
+ }
147
+ if (hasVerification) {
148
+ verified++;
149
+ }
150
+ else {
151
+ orphans.push(task.id);
152
+ }
153
+ }
154
+ }
155
+ return { total, done, verified, orphans };
156
+ }
157
+ catch {
158
+ return { total: 0, done: 0, verified: 0, orphans: [] };
159
+ }
160
+ }
161
+ /**
162
+ * Verifies coherence between design decisions and implementation.
163
+ * @param changeDir - Path to the change directory
164
+ * @param projectRoot - Path to the project root
165
+ * @returns Coherence dimension result
166
+ */
167
+ export async function verifyCoherence(changeDir, projectRoot) {
168
+ try {
169
+ const designPath = path.join(changeDir, 'design-tech.yaml');
170
+ const designContent = await fs.readFile(designPath, 'utf8');
171
+ const design = parseSimpleYaml(designContent);
172
+ if (!design || !design.body || !Array.isArray(design.body.decisions)) {
173
+ return { followed: 0, contradicted: [] };
174
+ }
175
+ let followed = 0;
176
+ const contradicted = [];
177
+ for (const decision of design.body.decisions) {
178
+ const approachKeywords = (decision.approach || '').split(/\s+/).filter((w) => w.length > 4);
179
+ if (approachKeywords.length === 0) {
180
+ followed++;
181
+ continue;
182
+ }
183
+ let found = false;
184
+ const tasksPath = path.join(changeDir, 'tasks.yaml');
185
+ try {
186
+ const tasksContent = await fs.readFile(tasksPath, 'utf8');
187
+ const tasks = parseSimpleYaml(tasksContent);
188
+ if (tasks && Array.isArray(tasks.tasks)) {
189
+ for (const task of tasks.tasks) {
190
+ const desc = (task.description || '').toLowerCase();
191
+ if (approachKeywords.some((kw) => desc.includes(kw.toLowerCase()))) {
192
+ found = true;
193
+ break;
194
+ }
195
+ }
196
+ }
197
+ }
198
+ catch {
199
+ // tasks.yaml may not exist
200
+ }
201
+ if (found) {
202
+ followed++;
203
+ }
204
+ else {
205
+ contradicted.push(decision.title || 'untitled');
206
+ }
207
+ }
208
+ return { followed, contradicted };
209
+ }
210
+ catch {
211
+ return { followed: 0, contradicted: [] };
212
+ }
213
+ }
214
+ /**
215
+ * Verifies regression safety by checking for risky patterns.
216
+ * @param changeDir - Path to the change directory
217
+ * @param projectRoot - Path to the project root
218
+ * @returns Regression dimension result
219
+ */
220
+ export async function verifyRegression(changeDir, projectRoot) {
221
+ try {
222
+ const tasksPath = path.join(changeDir, 'tasks.yaml');
223
+ const tasksContent = await fs.readFile(tasksPath, 'utf8');
224
+ const tasks = parseSimpleYaml(tasksContent);
225
+ if (!tasks || !Array.isArray(tasks.tasks)) {
226
+ return { safe: true, risks: [] };
227
+ }
228
+ const risks = [];
229
+ const affectedFiles = new Set();
230
+ for (const task of tasks.tasks) {
231
+ for (const file of task.affected_files || []) {
232
+ if (affectedFiles.has(file)) {
233
+ risks.push(`Multiple tasks affect: ${file}`);
234
+ }
235
+ affectedFiles.add(file);
236
+ }
237
+ }
238
+ const doneTasks = tasks.tasks.filter((t) => t.status === 'done');
239
+ const pendingTasks = tasks.tasks.filter((t) => t.status !== 'done');
240
+ for (const done of doneTasks) {
241
+ for (const pending of pendingTasks) {
242
+ if (pending.depends_on?.includes(done.id)) {
243
+ const sharedFiles = (done.affected_files || []).filter((f) => (pending.affected_files || []).includes(f));
244
+ if (sharedFiles.length > 0) {
245
+ risks.push(`Dependency overlap on: ${sharedFiles.join(', ')}`);
246
+ }
247
+ }
248
+ }
249
+ }
250
+ return { safe: risks.length === 0, risks };
251
+ }
252
+ catch {
253
+ return { safe: true, risks: [] };
254
+ }
255
+ }
256
+ /**
257
+ * Minimal YAML parser for simple key-value structures.
258
+ * Handles basic YAML without external dependencies.
259
+ */
260
+ function parseSimpleYaml(content) {
261
+ try {
262
+ const trimmed = content.trim();
263
+ // Handle JSON-formatted YAML (written by JSON.stringify in the tool layer)
264
+ if (trimmed.startsWith('{') || trimmed.startsWith('[')) {
265
+ return JSON.parse(content);
266
+ }
267
+ const lines = content.split('\n');
268
+ return parseYamlLines(lines, 0, 0).value;
269
+ }
270
+ catch {
271
+ return null;
272
+ }
273
+ }
274
+ function parseYamlLines(lines, start, baseIndent) {
275
+ const result = {};
276
+ let i = start;
277
+ while (i < lines.length) {
278
+ const line = lines[i];
279
+ const trimmed = line.trim();
280
+ if (trimmed === '' || trimmed.startsWith('#')) {
281
+ i++;
282
+ continue;
283
+ }
284
+ const indent = line.length - line.trimStart().length;
285
+ if (indent < baseIndent)
286
+ break;
287
+ if (trimmed.startsWith('- ')) {
288
+ return parseYamlArray(lines, i, indent);
289
+ }
290
+ const colonIdx = trimmed.indexOf(':');
291
+ if (colonIdx === -1) {
292
+ i++;
293
+ continue;
294
+ }
295
+ const key = trimmed.substring(0, colonIdx).trim();
296
+ const valueStr = trimmed.substring(colonIdx + 1).trim();
297
+ if (valueStr === '') {
298
+ // Empty value indicates a nested object — recurse into parseYamlLines
299
+ const nextLine = i + 1 < lines.length ? lines[i + 1] : '';
300
+ const nextIndent = nextLine.length - nextLine.trimStart().length;
301
+ if (nextIndent > indent) {
302
+ const nested = parseYamlLines(lines, i + 1, nextIndent);
303
+ result[key] = nested.value;
304
+ i = nested.next;
305
+ }
306
+ else {
307
+ result[key] = null;
308
+ i++;
309
+ }
310
+ }
311
+ else if (valueStr === '|' || valueStr === '>') {
312
+ // Block scalar — collect subsequent indented lines as a multi-line string
313
+ const nextLine = i + 1 < lines.length ? lines[i + 1] : '';
314
+ const nextIndent = nextLine.length - nextLine.trimStart().length;
315
+ if (nextIndent > indent) {
316
+ const blockLines = [];
317
+ i++;
318
+ while (i < lines.length) {
319
+ const blockLine = lines[i];
320
+ const lineIndent = blockLine.length - blockLine.trimStart().length;
321
+ // Block ends when a line has less indentation than the first content line
322
+ if (lineIndent < nextIndent) {
323
+ break;
324
+ }
325
+ blockLines.push(blockLine.substring(nextIndent));
326
+ i++;
327
+ }
328
+ result[key] = blockLines.join('\n');
329
+ }
330
+ else {
331
+ result[key] = '';
332
+ i++;
333
+ }
334
+ }
335
+ else if (valueStr.startsWith('[') && valueStr.endsWith(']')) {
336
+ result[key] = valueStr.slice(1, -1).split(',').map(s => parseYamlValue(s.trim()));
337
+ i++;
338
+ }
339
+ else {
340
+ result[key] = parseYamlValue(valueStr);
341
+ i++;
342
+ }
343
+ }
344
+ return { value: result, next: i };
345
+ }
346
+ function parseYamlArray(lines, start, baseIndent) {
347
+ const result = [];
348
+ let i = start;
349
+ while (i < lines.length) {
350
+ const line = lines[i];
351
+ const trimmed = line.trim();
352
+ if (trimmed === '' || trimmed.startsWith('#')) {
353
+ i++;
354
+ continue;
355
+ }
356
+ const indent = line.length - line.trimStart().length;
357
+ if (indent < baseIndent)
358
+ break;
359
+ if (!trimmed.startsWith('- '))
360
+ break;
361
+ const itemContent = trimmed.substring(2).trim();
362
+ if (itemContent.includes(':')) {
363
+ const obj = {};
364
+ const colonIdx = itemContent.indexOf(':');
365
+ const key = itemContent.substring(0, colonIdx).trim();
366
+ const val = itemContent.substring(colonIdx + 1).trim();
367
+ obj[key] = parseYamlValue(val);
368
+ i++;
369
+ while (i < lines.length) {
370
+ const nextLine = lines[i];
371
+ const nextTrimmed = nextLine.trim();
372
+ const nextIndent = nextLine.length - nextLine.trimStart().length;
373
+ if (nextTrimmed === '' || nextTrimmed.startsWith('#')) {
374
+ i++;
375
+ continue;
376
+ }
377
+ if (nextIndent <= baseIndent)
378
+ break;
379
+ if (nextTrimmed.startsWith('- ') && nextIndent === baseIndent + 2)
380
+ break;
381
+ const nextColon = nextTrimmed.indexOf(':');
382
+ if (nextColon !== -1) {
383
+ const nk = nextTrimmed.substring(0, nextColon).trim();
384
+ const nv = nextTrimmed.substring(nextColon + 1).trim();
385
+ if (nv === '|' || nv === '>') {
386
+ // Block scalar — collect subsequent indented lines as a multi-line string
387
+ const peekLine = i + 1 < lines.length ? lines[i + 1] : '';
388
+ const peekIndent = peekLine.length - peekLine.trimStart().length;
389
+ const peekTrimmed = peekLine.trim();
390
+ if (peekIndent > nextIndent && peekTrimmed !== '' && !peekTrimmed.startsWith('#')) {
391
+ i++;
392
+ const blockLines = [];
393
+ while (i < lines.length) {
394
+ const blLine = lines[i];
395
+ const blIndent = blLine.length - blLine.trimStart().length;
396
+ if (blIndent < peekIndent)
397
+ break;
398
+ blockLines.push(blLine.substring(peekIndent));
399
+ i++;
400
+ }
401
+ obj[nk] = blockLines.join('\n');
402
+ continue; // skip outer i++ — we already advanced past the block
403
+ }
404
+ else {
405
+ obj[nk] = '';
406
+ // fall through to outer i++
407
+ }
408
+ }
409
+ else {
410
+ obj[nk] = parseYamlValue(nv);
411
+ // fall through to outer i++
412
+ }
413
+ }
414
+ i++;
415
+ }
416
+ result.push(obj);
417
+ }
418
+ else {
419
+ result.push(parseYamlValue(itemContent));
420
+ i++;
421
+ }
422
+ }
423
+ return { value: result, next: i };
424
+ }
425
+ function parseYamlValue(value) {
426
+ if (value === 'true')
427
+ return true;
428
+ if (value === 'false')
429
+ return false;
430
+ if (value === 'null' || value === '~')
431
+ return null;
432
+ if (/^-?\d+$/.test(value))
433
+ return parseInt(value, 10);
434
+ if (/^-?\d+\.\d+$/.test(value))
435
+ return parseFloat(value);
436
+ if ((value.startsWith('"') && value.endsWith('"')) || (value.startsWith("'") && value.endsWith("'"))) {
437
+ return value.slice(1, -1);
438
+ }
439
+ return value;
440
+ }
441
+ //# sourceMappingURL=verifier.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verifier.js","sourceRoot":"","sources":["../../../src/plugin/engine/verifier.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { ChangeInfo } from "../engine/types.js";
2
+ export declare function buildSubagentContextBlock(activeChanges: ChangeInfo[]): string;
3
+ export declare function buildOrchestratorDelegationBlock(): string;
4
+ export interface ContextInjectionInput {
5
+ agent: string;
6
+ }
7
+ export interface ContextInjectionContext {
8
+ projectRoot: string;
9
+ }
10
+ export declare function contextInjectionTransform(input: ContextInjectionInput, activeChanges: ChangeInfo[]): string[];
11
+ //# sourceMappingURL=context-injection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-injection.d.ts","sourceRoot":"","sources":["../../../src/plugin/hooks/context-injection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAEpD,wBAAgB,yBAAyB,CAAC,aAAa,EAAE,UAAU,EAAE,GAAG,MAAM,CAkD7E;AAED,wBAAgB,gCAAgC,IAAI,MAAM,CA4BzD;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,uBAAuB;IACtC,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,qBAAqB,EAC5B,aAAa,EAAE,UAAU,EAAE,GAC1B,MAAM,EAAE,CAWV"}
@@ -0,0 +1,88 @@
1
+ export function buildSubagentContextBlock(activeChanges) {
2
+ const lines = [];
3
+ lines.push("## Harness Context");
4
+ lines.push("");
5
+ lines.push("### Workflow Phases (in order)");
6
+ lines.push("1. explore — investigate problem, clarify requirements");
7
+ lines.push("2. propose — create proposal, specs, design, and tasks");
8
+ lines.push("3. apply — implement tasks from the task list");
9
+ lines.push("4. verify — validate implementation matches artifacts");
10
+ lines.push("5. archive — finalize change, apply delta specs to main");
11
+ lines.push("");
12
+ lines.push("### Available spec_* Tools");
13
+ lines.push("- spec_change_new: Create a new spec change with name and schema");
14
+ lines.push("- spec_change_status: Get status of a change (artifacts, progress, next steps)");
15
+ lines.push("- spec_change_list: List all active spec changes");
16
+ lines.push("- spec_artifact_instr: Get instructions for creating the next artifact");
17
+ lines.push("- spec_validate: Validate a change or specific artifact");
18
+ lines.push("- spec_specs_apply: Apply delta specs from a change to main specs");
19
+ lines.push("- spec_change_archive: Archive a completed spec change");
20
+ lines.push("- spec_schema_list: List available workflow schemas");
21
+ lines.push("- spec_verify: Run 5-dimension verification on a change");
22
+ lines.push("- spec_task_progress: Get or update task progress in a change");
23
+ lines.push("- spec_integrity_check: Verify hash integrity of all artifacts");
24
+ lines.push("- spec_registry_update: Rebuild the spec change registry from disk");
25
+ lines.push("- spec_init: Initialize spec/ directory structure with config.yaml and registry.yaml");
26
+ lines.push("");
27
+ lines.push("### Project Conventions");
28
+ lines.push("- Read spec/config.yaml for project-specific conventions and constraints");
29
+ lines.push("- Use kebab-case for change names, capability IDs, and requirement IDs");
30
+ lines.push("- Use SHALL/MUST (RFC 2119) normative language in spec artifacts");
31
+ lines.push("- All spec artifacts are YAML files, not markdown");
32
+ lines.push("");
33
+ lines.push("### Workflow Instructions");
34
+ lines.push("- Your agent .md file contains the full workflow instructions for your phase");
35
+ lines.push(" (spec-explore, spec-propose, spec-apply, spec-verify, or spec-archive).");
36
+ lines.push(" Follow those workflow instructions precisely.");
37
+ lines.push("");
38
+ lines.push("### Active Spec Changes");
39
+ if (activeChanges.length === 0) {
40
+ lines.push("No active changes. Call spec_change_list to verify.");
41
+ }
42
+ else {
43
+ for (const c of activeChanges) {
44
+ lines.push(`- ${c.name} (${c.schema}) — ${c.progress}% complete`);
45
+ }
46
+ lines.push("Call spec_change_status for detailed artifact/progress info.");
47
+ }
48
+ return lines.join("\n");
49
+ }
50
+ export function buildOrchestratorDelegationBlock() {
51
+ const lines = [];
52
+ lines.push("## SPEC DELEGATION RULES");
53
+ lines.push("");
54
+ lines.push("When delegating a spec-phase task to a subagent, you MUST:");
55
+ lines.push("");
56
+ lines.push("1. DELEGATE TO THE CORRECT SUBAGENT — Use the task tool with the appropriate");
57
+ lines.push(" subagent_type. Each subagent has its workflow instructions inlined:");
58
+ lines.push(" spec-propose, spec-apply, spec-verify, spec-archive.");
59
+ lines.push(" The explore phase is handled directly by you (the orchestrator) — do NOT");
60
+ lines.push(" delegate it. Do NOT load skills at runtime — the subagents already contain");
61
+ lines.push(" all necessary workflow instructions.");
62
+ lines.push("");
63
+ lines.push("2. SPECIFY THE TARGET CHANGE — Always include the change name (kebab-case ID)");
64
+ lines.push(" in the task prompt so the subagent knows which change to work on.");
65
+ lines.push("");
66
+ lines.push("3. REMIND ABOUT TOOLS — Remind the subagent that all spec_* tools are");
67
+ lines.push(" available for their use (spec_change_status, spec_task_progress, etc.).");
68
+ lines.push("");
69
+ lines.push("Phase-to-agent mapping:");
70
+ lines.push(" explore → YOU handle directly (read files, ask questions, investigate)");
71
+ lines.push(" propose → spec-propose");
72
+ lines.push(" apply → spec-apply");
73
+ lines.push(" verify → spec-verify");
74
+ lines.push(" archive → spec-archive");
75
+ return lines.join("\n");
76
+ }
77
+ export function contextInjectionTransform(input, activeChanges) {
78
+ const blocks = [];
79
+ if (input.agent === "orchestrator") {
80
+ blocks.push("\n\n## ORCHESTRATOR MODE\nYou handle the explore phase directly (read files, investigate, ask questions).\nFor all other phases, delegate to subagents via the task tool.\nAllowed tools: task, question, skill, read, glob, grep, spec_change_list, spec_change_status, spec_task_progress.\nAll other tools are disabled for this agent.");
81
+ blocks.push("\n\n" + buildOrchestratorDelegationBlock());
82
+ }
83
+ else {
84
+ blocks.push("\n\n" + buildSubagentContextBlock(activeChanges));
85
+ }
86
+ return blocks;
87
+ }
88
+ //# sourceMappingURL=context-injection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-injection.js","sourceRoot":"","sources":["../../../src/plugin/hooks/context-injection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export interface EventInput {
2
+ type: string;
3
+ path?: string;
4
+ }
5
+ export interface EventContext {
6
+ projectRoot: string;
7
+ }
8
+ export declare function handleFileSaveEvent(event: EventInput, ctx: EventContext): Promise<void>;
9
+ //# sourceMappingURL=event-handlers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-handlers.d.ts","sourceRoot":"","sources":["../../../src/plugin/hooks/event-handlers.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,UAAU,EACjB,GAAG,EAAE,YAAY,GAChB,OAAO,CAAC,IAAI,CAAC,CAMf"}
@@ -0,0 +1,10 @@
1
+ import * as Registry from "../engine/registry.js";
2
+ export async function handleFileSaveEvent(event, ctx) {
3
+ if (event.type === "file.save" && event.path?.includes("/spec/changes/")) {
4
+ try {
5
+ await Registry.readRegistry(ctx.projectRoot);
6
+ }
7
+ catch { }
8
+ }
9
+ }
10
+ //# sourceMappingURL=event-handlers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-handlers.js","sourceRoot":"","sources":["../../../src/plugin/hooks/event-handlers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,uBAAuB,CAAA;AAWjD,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,KAAiB,EACjB,GAAiB;IAEjB,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,IAAI,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACzE,IAAI,CAAC;YACH,MAAM,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;QAC9C,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;IACZ,CAAC;AACH,CAAC"}
@@ -0,0 +1,24 @@
1
+ export interface PermissionInput {
2
+ tool: string;
3
+ sessionID: string;
4
+ callID: string;
5
+ args?: any;
6
+ agent?: string;
7
+ }
8
+ export interface PermissionOutput {
9
+ status: "ask" | "deny" | "allow";
10
+ }
11
+ export interface WorkflowGateContext {
12
+ projectRoot: string;
13
+ }
14
+ export declare function workflowGatePermission(input: PermissionInput, output: PermissionOutput, ctx: WorkflowGateContext): Promise<void>;
15
+ export interface ToolDefinitionInput {
16
+ toolID: string;
17
+ agent?: string;
18
+ }
19
+ export interface ToolDefinitionOutput {
20
+ description: string;
21
+ parameters: any;
22
+ }
23
+ export declare function workflowGateToolDefinition(input: ToolDefinitionInput, output: ToolDefinitionOutput, _ctx: WorkflowGateContext): Promise<void>;
24
+ //# sourceMappingURL=workflow-gate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-gate.d.ts","sourceRoot":"","sources":["../../../src/plugin/hooks/workflow-gate.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,GAAG,CAAA;IACV,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,CAAA;CACjC;AAED,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,gBAAgB,EACxB,GAAG,EAAE,mBAAmB,GACvB,OAAO,CAAC,IAAI,CAAC,CA2Df;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,GAAG,CAAA;CAChB;AASD,wBAAsB,0BAA0B,CAC9C,KAAK,EAAE,mBAAmB,EAC1B,MAAM,EAAE,oBAAoB,EAC5B,IAAI,EAAE,mBAAmB,GACxB,OAAO,CAAC,IAAI,CAAC,CAUf"}