@dailephd/my-dev-kit-orchestrator 1.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 +295 -0
  2. package/dist/artifactChecker.d.ts +31 -0
  3. package/dist/artifactChecker.d.ts.map +1 -0
  4. package/dist/artifactChecker.js +341 -0
  5. package/dist/artifactChecker.js.map +1 -0
  6. package/dist/artifactLifecycle.d.ts +30 -0
  7. package/dist/artifactLifecycle.d.ts.map +1 -0
  8. package/dist/artifactLifecycle.js +176 -0
  9. package/dist/artifactLifecycle.js.map +1 -0
  10. package/dist/cli.d.ts +3 -0
  11. package/dist/cli.d.ts.map +1 -0
  12. package/dist/cli.js +7 -0
  13. package/dist/cli.js.map +1 -0
  14. package/dist/commands/check.d.ts +3 -0
  15. package/dist/commands/check.d.ts.map +1 -0
  16. package/dist/commands/check.js +494 -0
  17. package/dist/commands/check.js.map +1 -0
  18. package/dist/commands/export.d.ts +16 -0
  19. package/dist/commands/export.d.ts.map +1 -0
  20. package/dist/commands/export.js +248 -0
  21. package/dist/commands/export.js.map +1 -0
  22. package/dist/commands/init.d.ts +3 -0
  23. package/dist/commands/init.d.ts.map +1 -0
  24. package/dist/commands/init.js +59 -0
  25. package/dist/commands/init.js.map +1 -0
  26. package/dist/commands/list.d.ts +3 -0
  27. package/dist/commands/list.d.ts.map +1 -0
  28. package/dist/commands/list.js +101 -0
  29. package/dist/commands/list.js.map +1 -0
  30. package/dist/commands/mark.d.ts +3 -0
  31. package/dist/commands/mark.d.ts.map +1 -0
  32. package/dist/commands/mark.js +139 -0
  33. package/dist/commands/mark.js.map +1 -0
  34. package/dist/commands/prompt.d.ts +3 -0
  35. package/dist/commands/prompt.d.ts.map +1 -0
  36. package/dist/commands/prompt.js +198 -0
  37. package/dist/commands/prompt.js.map +1 -0
  38. package/dist/commands/start.d.ts +3 -0
  39. package/dist/commands/start.d.ts.map +1 -0
  40. package/dist/commands/start.js +100 -0
  41. package/dist/commands/start.js.map +1 -0
  42. package/dist/commands/status.d.ts +3 -0
  43. package/dist/commands/status.d.ts.map +1 -0
  44. package/dist/commands/status.js +191 -0
  45. package/dist/commands/status.js.map +1 -0
  46. package/dist/contractChecker.d.ts +53 -0
  47. package/dist/contractChecker.d.ts.map +1 -0
  48. package/dist/contractChecker.js +319 -0
  49. package/dist/contractChecker.js.map +1 -0
  50. package/dist/correctionRouter.d.ts +37 -0
  51. package/dist/correctionRouter.d.ts.map +1 -0
  52. package/dist/correctionRouter.js +142 -0
  53. package/dist/correctionRouter.js.map +1 -0
  54. package/dist/correctionState.d.ts +16 -0
  55. package/dist/correctionState.d.ts.map +1 -0
  56. package/dist/correctionState.js +64 -0
  57. package/dist/correctionState.js.map +1 -0
  58. package/dist/index.d.ts +4 -0
  59. package/dist/index.d.ts.map +1 -0
  60. package/dist/index.js +9 -0
  61. package/dist/index.js.map +1 -0
  62. package/dist/judgeParser.d.ts +16 -0
  63. package/dist/judgeParser.d.ts.map +1 -0
  64. package/dist/judgeParser.js +52 -0
  65. package/dist/judgeParser.js.map +1 -0
  66. package/dist/program.d.ts +3 -0
  67. package/dist/program.d.ts.map +1 -0
  68. package/dist/program.js +33 -0
  69. package/dist/program.js.map +1 -0
  70. package/dist/promptChecker.d.ts +27 -0
  71. package/dist/promptChecker.d.ts.map +1 -0
  72. package/dist/promptChecker.js +152 -0
  73. package/dist/promptChecker.js.map +1 -0
  74. package/dist/promptGenerator.d.ts +12 -0
  75. package/dist/promptGenerator.d.ts.map +1 -0
  76. package/dist/promptGenerator.js +2556 -0
  77. package/dist/promptGenerator.js.map +1 -0
  78. package/dist/run.d.ts +30 -0
  79. package/dist/run.d.ts.map +1 -0
  80. package/dist/run.js +141 -0
  81. package/dist/run.js.map +1 -0
  82. package/dist/stageDetector.d.ts +29 -0
  83. package/dist/stageDetector.d.ts.map +1 -0
  84. package/dist/stageDetector.js +161 -0
  85. package/dist/stageDetector.js.map +1 -0
  86. package/dist/traceChecker.d.ts +46 -0
  87. package/dist/traceChecker.d.ts.map +1 -0
  88. package/dist/traceChecker.js +257 -0
  89. package/dist/traceChecker.js.map +1 -0
  90. package/dist/traceModel.d.ts +7 -0
  91. package/dist/traceModel.d.ts.map +1 -0
  92. package/dist/traceModel.js +37 -0
  93. package/dist/traceModel.js.map +1 -0
  94. package/dist/traceParser.d.ts +27 -0
  95. package/dist/traceParser.d.ts.map +1 -0
  96. package/dist/traceParser.js +102 -0
  97. package/dist/traceParser.js.map +1 -0
  98. package/dist/types.d.ts +11 -0
  99. package/dist/types.d.ts.map +1 -0
  100. package/dist/types.js +9 -0
  101. package/dist/types.js.map +1 -0
  102. package/dist/workflows.d.ts +16 -0
  103. package/dist/workflows.d.ts.map +1 -0
  104. package/dist/workflows.js +170 -0
  105. package/dist/workflows.js.map +1 -0
  106. package/dist/workspace.d.ts +13 -0
  107. package/dist/workspace.d.ts.map +1 -0
  108. package/dist/workspace.js +70 -0
  109. package/dist/workspace.js.map +1 -0
  110. package/package.json +62 -0
@@ -0,0 +1,257 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.parseDeclaredTraceIds = parseDeclaredTraceIds;
37
+ exports.checkArtifactTrace = checkArtifactTrace;
38
+ exports.checkAllTraces = checkAllTraces;
39
+ exports.checkDesignMapTrace = checkDesignMapTrace;
40
+ exports.suggestCorrectionStageFromTraceIssue = suggestCorrectionStageFromTraceIssue;
41
+ exports.buildTraceCorrectionSuggestions = buildTraceCorrectionSuggestions;
42
+ exports.getTraceCheckResultsPath = getTraceCheckResultsPath;
43
+ exports.readTraceCheckResults = readTraceCheckResults;
44
+ exports.writeTraceCheckResults = writeTraceCheckResults;
45
+ const fs = __importStar(require("fs"));
46
+ const path = __importStar(require("path"));
47
+ const traceModel_1 = require("./traceModel");
48
+ const traceParser_1 = require("./traceParser");
49
+ // ─── Declared ID parser ───────────────────────────────────────────────────────
50
+ // Inline regex for valid trace IDs
51
+ const TRACE_ID_INLINE_RE_SRC = '(REQ|CTX|BEH|INV|TRN|PSE|TST|IMP|VER|RISK)-(\\d{3,})';
52
+ // Malformed token pattern
53
+ const MALFORMED_TOKEN_RE = /\b([A-Z]{2,6}(?:-\d+|\d+))\b/g;
54
+ /**
55
+ * Finds trace IDs declared in content, excluding IDs that only appear in link
56
+ * expressions (lines containing "->"). This separates declared IDs from
57
+ * link-line references, fixing the "missing link target" detection problem:
58
+ * a link target like BEH-999 that appears only in "REQ-001 -> BEH-999" is
59
+ * NOT counted as a declared ID, so it can be flagged as missing.
60
+ */
61
+ function parseDeclaredTraceIds(content) {
62
+ const results = [];
63
+ const lines = content.split('\n');
64
+ for (let i = 0; i < lines.length; i++) {
65
+ const line = lines[i];
66
+ if (line.includes('->'))
67
+ continue; // skip link lines
68
+ let match;
69
+ const lineRe = new RegExp(TRACE_ID_INLINE_RE_SRC, 'g');
70
+ while ((match = lineRe.exec(line)) !== null) {
71
+ results.push({ id: match[0], prefix: match[1], num: match[2], line: i + 1 });
72
+ }
73
+ }
74
+ return results;
75
+ }
76
+ function findMalformedInContent(content) {
77
+ const found = new Set();
78
+ let match;
79
+ const re = new RegExp(MALFORMED_TOKEN_RE.source, 'g');
80
+ while ((match = re.exec(content)) !== null) {
81
+ const token = match[1];
82
+ if ((0, traceModel_1.isMalformedTraceId)(token))
83
+ found.add(token);
84
+ }
85
+ return [...found];
86
+ }
87
+ // ─── Single-artifact trace check ─────────────────────────────────────────────
88
+ function checkArtifactTrace(runFolder, artifactFile) {
89
+ const fullPath = path.join(runFolder, artifactFile);
90
+ const checkedAt = new Date().toISOString();
91
+ const issues = [];
92
+ if (!fs.existsSync(fullPath)) {
93
+ // Missing file is already reported by checkArtifact; skip trace check silently
94
+ return { artifactFile, issues: [], passed: true, checkedAt };
95
+ }
96
+ const content = fs.readFileSync(fullPath, 'utf8');
97
+ // Malformed IDs (tokens that look like trace IDs but are invalid format)
98
+ const malformed = findMalformedInContent(content);
99
+ for (const token of malformed) {
100
+ issues.push({
101
+ code: 'TRACE_MALFORMED_ID',
102
+ severity: 'fail',
103
+ message: `Malformed trace ID token: "${token}" (not a valid trace ID format)`,
104
+ context: token,
105
+ });
106
+ }
107
+ // Declared IDs (non-link lines only)
108
+ const declaredIds = parseDeclaredTraceIds(content);
109
+ // Duplicate declared IDs
110
+ const idCount = new Map();
111
+ for (const id of declaredIds) {
112
+ idCount.set(id.id, (idCount.get(id.id) ?? 0) + 1);
113
+ }
114
+ for (const [id, count] of idCount.entries()) {
115
+ if (count > 1) {
116
+ issues.push({
117
+ code: 'TRACE_DUPLICATE_ID',
118
+ severity: 'warn',
119
+ message: `Trace ID "${id}" is declared ${count} times`,
120
+ context: id,
121
+ });
122
+ }
123
+ }
124
+ // Link expressions
125
+ const links = (0, traceParser_1.parseTraceLinks)(content);
126
+ // Orphan declared IDs: declared but not in any link from/to
127
+ if (links.length > 0 && declaredIds.length > 0) {
128
+ const linked = new Set();
129
+ for (const link of links) {
130
+ linked.add(link.from);
131
+ linked.add(link.to);
132
+ }
133
+ const uniqueDeclared = [...new Set(declaredIds.map((id) => id.id))];
134
+ for (const id of uniqueDeclared) {
135
+ if (!linked.has(id)) {
136
+ issues.push({
137
+ code: 'TRACE_ORPHAN_ID',
138
+ severity: 'warn',
139
+ message: `Trace ID "${id}" is declared but not referenced in any link`,
140
+ context: id,
141
+ });
142
+ }
143
+ }
144
+ }
145
+ // Missing link targets: link.to is a valid trace ID but not a declared ID
146
+ if (links.length > 0) {
147
+ const knownIds = new Set(declaredIds.map((id) => id.id));
148
+ const missing = new Set();
149
+ for (const link of links) {
150
+ if ((0, traceModel_1.isValidTraceId)(link.to) && !knownIds.has(link.to)) {
151
+ missing.add(link.to);
152
+ }
153
+ }
154
+ for (const target of missing) {
155
+ issues.push({
156
+ code: 'TRACE_MISSING_LINK_TARGET',
157
+ severity: 'fail',
158
+ message: `Link target "${target}" is a valid trace ID but is not declared in this artifact`,
159
+ context: target,
160
+ });
161
+ }
162
+ }
163
+ const passed = !issues.some((i) => i.severity === 'fail');
164
+ return { artifactFile, issues, passed, checkedAt };
165
+ }
166
+ // ─── All-artifacts trace check ────────────────────────────────────────────────
167
+ function checkAllTraces(meta) {
168
+ const results = [];
169
+ for (const stage of meta.stages) {
170
+ results.push(checkArtifactTrace(meta.runFolder, stage.artifactFile));
171
+ for (const additional of stage.additionalArtifactFiles ?? []) {
172
+ results.push(checkArtifactTrace(meta.runFolder, additional));
173
+ }
174
+ }
175
+ return results;
176
+ }
177
+ // ─── Design-map specific check ────────────────────────────────────────────────
178
+ function checkDesignMapTrace(runFolder) {
179
+ return checkArtifactTrace(runFolder, 'artifacts/design-map.txt');
180
+ }
181
+ // ─── Trace-aware correction suggestions ──────────────────────────────────────
182
+ // Maps trace ID prefix to the workflow stage that owns IDs with that prefix
183
+ const PREFIX_TO_STAGE = {
184
+ REQ: 'request-brief',
185
+ CTX: 'architecture-context',
186
+ BEH: 'behavior-model',
187
+ INV: 'behavior-model',
188
+ TRN: 'behavior-model',
189
+ PSE: 'pseudocode-packet',
190
+ TST: 'test-strategy',
191
+ IMP: 'implementation',
192
+ VER: 'verification',
193
+ RISK: 'judge',
194
+ };
195
+ /**
196
+ * Suggests a correction stage for a trace check issue.
197
+ * Returns null when no meaningful suggestion can be made.
198
+ * These suggestions are deterministic and do not infer semantics with an LLM.
199
+ */
200
+ function suggestCorrectionStageFromTraceIssue(issue) {
201
+ if (issue.code === 'TRACE_MISSING_LINK_TARGET' && issue.context) {
202
+ // Extract prefix from a canonical trace ID like BEH-001
203
+ const prefixMatch = /^([A-Z]+)-\d+$/.exec(issue.context);
204
+ const prefix = prefixMatch ? prefixMatch[1] : null;
205
+ if (prefix && PREFIX_TO_STAGE[prefix]) {
206
+ return PREFIX_TO_STAGE[prefix];
207
+ }
208
+ return 'design-map';
209
+ }
210
+ if (issue.code === 'TRACE_MALFORMED_ID') {
211
+ return 'design-map';
212
+ }
213
+ if (issue.code === 'TRACE_ORPHAN_ID') {
214
+ return 'design-map';
215
+ }
216
+ return null;
217
+ }
218
+ /**
219
+ * Returns deduplicated correction suggestions from a list of trace check results.
220
+ * Each entry is "suggested stage: reason".
221
+ */
222
+ function buildTraceCorrectionSuggestions(results) {
223
+ const suggestions = new Map();
224
+ for (const result of results) {
225
+ for (const issue of result.issues) {
226
+ const stage = suggestCorrectionStageFromTraceIssue(issue);
227
+ if (stage) {
228
+ if (!suggestions.has(stage))
229
+ suggestions.set(stage, new Set());
230
+ suggestions.get(stage).add(issue.code);
231
+ }
232
+ }
233
+ }
234
+ return [...suggestions.entries()].map(([stage, codes]) => `Suggested correction stage: ${stage} (${[...codes].join(', ')})`);
235
+ }
236
+ // ─── Persistence ─────────────────────────────────────────────────────────────
237
+ function getTraceCheckResultsPath(runFolder) {
238
+ return path.join(runFolder, 'trace-check-results.json');
239
+ }
240
+ function readTraceCheckResults(runFolder) {
241
+ const p = getTraceCheckResultsPath(runFolder);
242
+ if (!fs.existsSync(p))
243
+ return null;
244
+ try {
245
+ return JSON.parse(fs.readFileSync(p, 'utf8'));
246
+ }
247
+ catch {
248
+ return null;
249
+ }
250
+ }
251
+ function writeTraceCheckResults(runFolder, data) {
252
+ const p = getTraceCheckResultsPath(runFolder);
253
+ const tmp = p + '.tmp';
254
+ fs.writeFileSync(tmp, JSON.stringify(data, null, 2), 'utf8');
255
+ fs.renameSync(tmp, p);
256
+ }
257
+ //# sourceMappingURL=traceChecker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"traceChecker.js","sourceRoot":"","sources":["../src/traceChecker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export declare const TRACE_PREFIXES: readonly ["REQ", "CTX", "BEH", "INV", "TRN", "PSE", "TST", "IMP", "VER", "RISK"];
2
+ export type TracePrefix = (typeof TRACE_PREFIXES)[number];
3
+ export declare const TRACE_ID_RE: RegExp;
4
+ export declare function isValidTracePrefix(prefix: string): prefix is TracePrefix;
5
+ export declare function isValidTraceId(id: string): boolean;
6
+ export declare function isMalformedTraceId(text: string): boolean;
7
+ //# sourceMappingURL=traceModel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"traceModel.d.ts","sourceRoot":"","sources":["../src/traceModel.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,cAAc,kFAWjB,CAAC;AAEX,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAG1D,eAAO,MAAM,WAAW,QAA0D,CAAC;AAInF,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,IAAI,WAAW,CAExE;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAElD;AAMD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAGxD"}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ // ─── Trace prefix constants ───────────────────────────────────────────────────
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.TRACE_ID_RE = exports.TRACE_PREFIXES = void 0;
5
+ exports.isValidTracePrefix = isValidTracePrefix;
6
+ exports.isValidTraceId = isValidTraceId;
7
+ exports.isMalformedTraceId = isMalformedTraceId;
8
+ exports.TRACE_PREFIXES = [
9
+ 'REQ',
10
+ 'CTX',
11
+ 'BEH',
12
+ 'INV',
13
+ 'TRN',
14
+ 'PSE',
15
+ 'TST',
16
+ 'IMP',
17
+ 'VER',
18
+ 'RISK',
19
+ ];
20
+ // Canonical trace ID format: PREFIX-NNN (3+ zero-padded digits)
21
+ exports.TRACE_ID_RE = /^(REQ|CTX|BEH|INV|TRN|PSE|TST|IMP|VER|RISK)-(\d{3,})$/;
22
+ // ─── Validation functions ─────────────────────────────────────────────────────
23
+ function isValidTracePrefix(prefix) {
24
+ return exports.TRACE_PREFIXES.includes(prefix);
25
+ }
26
+ function isValidTraceId(id) {
27
+ return exports.TRACE_ID_RE.test(id);
28
+ }
29
+ // Returns true if a token looks like a trace ID attempt but fails canonical validation.
30
+ // Matches tokens of shape PREFIX-digits or PREFIXdigits (2-6 uppercase letters + digits).
31
+ const MALFORMED_RE = /^[A-Z]{2,6}(-\d+|\d+)$/;
32
+ function isMalformedTraceId(text) {
33
+ if (isValidTraceId(text))
34
+ return false;
35
+ return MALFORMED_RE.test(text);
36
+ }
37
+ //# sourceMappingURL=traceModel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"traceModel.js","sourceRoot":"","sources":["../src/traceModel.ts"],"names":[],"mappings":";AAAA,iFAAiF;;;AAsBjF,gDAEC;AAED,wCAEC;AAMD,gDAGC;AAnCY,QAAA,cAAc,GAAG;IAC5B,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,MAAM;CACE,CAAC;AAIX,gEAAgE;AACnD,QAAA,WAAW,GAAG,uDAAuD,CAAC;AAEnF,iFAAiF;AAEjF,SAAgB,kBAAkB,CAAC,MAAc;IAC/C,OAAQ,sBAAoC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAChE,CAAC;AAED,SAAgB,cAAc,CAAC,EAAU;IACvC,OAAO,mBAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC9B,CAAC;AAED,wFAAwF;AACxF,0FAA0F;AAC1F,MAAM,YAAY,GAAG,wBAAwB,CAAC;AAE9C,SAAgB,kBAAkB,CAAC,IAAY;IAC7C,IAAI,cAAc,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACvC,OAAO,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjC,CAAC"}
@@ -0,0 +1,27 @@
1
+ export interface TraceId {
2
+ id: string;
3
+ prefix: string;
4
+ num: string;
5
+ line: number;
6
+ }
7
+ export interface TraceLink {
8
+ from: string;
9
+ to: string;
10
+ line: number;
11
+ }
12
+ export interface ParsedTrace {
13
+ ids: TraceId[];
14
+ links: TraceLink[];
15
+ malformed: string[];
16
+ duplicateIds: string[];
17
+ orphanIds: string[];
18
+ missingLinkTargets: string[];
19
+ }
20
+ export declare function parseTraceIds(content: string): TraceId[];
21
+ export declare function parseTraceLinks(content: string): TraceLink[];
22
+ export declare function findMalformedTraceIds(content: string): string[];
23
+ export declare function findDuplicateIds(ids: TraceId[]): string[];
24
+ export declare function findOrphanIds(ids: TraceId[], links: TraceLink[]): string[];
25
+ export declare function findMissingLinkTargets(links: TraceLink[], ids: TraceId[]): string[];
26
+ export declare function parseTrace(content: string): ParsedTrace;
27
+ //# sourceMappingURL=traceParser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"traceParser.d.ts","sourceRoot":"","sources":["../src/traceParser.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,OAAO,EAAE,CAAC;IACf,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,kBAAkB,EAAE,MAAM,EAAE,CAAC;CAC9B;AAgBD,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,EAAE,CAiBxD;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,EAAE,CAY5D;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAW/D;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,MAAM,EAAE,CAUzD;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,MAAM,EAAE,CAO1E;AAED,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,SAAS,EAAE,EAClB,GAAG,EAAE,OAAO,EAAE,GACb,MAAM,EAAE,CASV;AAID,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,CAQvD"}
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseTraceIds = parseTraceIds;
4
+ exports.parseTraceLinks = parseTraceLinks;
5
+ exports.findMalformedTraceIds = findMalformedTraceIds;
6
+ exports.findDuplicateIds = findDuplicateIds;
7
+ exports.findOrphanIds = findOrphanIds;
8
+ exports.findMissingLinkTargets = findMissingLinkTargets;
9
+ exports.parseTrace = parseTrace;
10
+ const traceModel_1 = require("./traceModel");
11
+ // ─── Inline patterns ──────────────────────────────────────────────────────────
12
+ // Matches valid trace IDs embedded in text content
13
+ const TRACE_ID_INLINE_RE = /(REQ|CTX|BEH|INV|TRN|PSE|TST|IMP|VER|RISK)-(\d{3,})/g;
14
+ // Matches link expressions: FROM -> TO (non-whitespace tokens around ->)
15
+ const TRACE_LINK_RE = /(\S+)\s*->\s*(\S+)/g;
16
+ // Matches tokens with the shape of a trace ID attempt: uppercase prefix + dash-digits or digits
17
+ const MALFORMED_INLINE_RE = /\b([A-Z]{2,6}(?:-\d+|\d+))\b/g;
18
+ // ─── Parsers ──────────────────────────────────────────────────────────────────
19
+ function parseTraceIds(content) {
20
+ const results = [];
21
+ const lines = content.split('\n');
22
+ for (let i = 0; i < lines.length; i++) {
23
+ const line = lines[i];
24
+ let match;
25
+ const re = new RegExp(TRACE_ID_INLINE_RE.source, 'g');
26
+ while ((match = re.exec(line)) !== null) {
27
+ results.push({
28
+ id: match[0],
29
+ prefix: match[1],
30
+ num: match[2],
31
+ line: i + 1,
32
+ });
33
+ }
34
+ }
35
+ return results;
36
+ }
37
+ function parseTraceLinks(content) {
38
+ const results = [];
39
+ const lines = content.split('\n');
40
+ for (let i = 0; i < lines.length; i++) {
41
+ const line = lines[i];
42
+ let match;
43
+ const re = new RegExp(TRACE_LINK_RE.source, 'g');
44
+ while ((match = re.exec(line)) !== null) {
45
+ results.push({ from: match[1], to: match[2], line: i + 1 });
46
+ }
47
+ }
48
+ return results;
49
+ }
50
+ function findMalformedTraceIds(content) {
51
+ const all = new Set();
52
+ let match;
53
+ const re = new RegExp(MALFORMED_INLINE_RE.source, 'g');
54
+ while ((match = re.exec(content)) !== null) {
55
+ const token = match[1];
56
+ if ((0, traceModel_1.isMalformedTraceId)(token)) {
57
+ all.add(token);
58
+ }
59
+ }
60
+ return [...all];
61
+ }
62
+ function findDuplicateIds(ids) {
63
+ const count = new Map();
64
+ for (const id of ids) {
65
+ count.set(id.id, (count.get(id.id) ?? 0) + 1);
66
+ }
67
+ const duplicates = [];
68
+ for (const [id, n] of count.entries()) {
69
+ if (n > 1)
70
+ duplicates.push(id);
71
+ }
72
+ return duplicates;
73
+ }
74
+ function findOrphanIds(ids, links) {
75
+ const linked = new Set();
76
+ for (const link of links) {
77
+ linked.add(link.from);
78
+ linked.add(link.to);
79
+ }
80
+ return ids.filter((id) => !linked.has(id.id)).map((id) => id.id);
81
+ }
82
+ function findMissingLinkTargets(links, ids) {
83
+ const known = new Set(ids.map((id) => id.id));
84
+ const missing = new Set();
85
+ for (const link of links) {
86
+ if ((0, traceModel_1.isValidTraceId)(link.to) && !known.has(link.to)) {
87
+ missing.add(link.to);
88
+ }
89
+ }
90
+ return [...missing];
91
+ }
92
+ // ─── Composite parser ─────────────────────────────────────────────────────────
93
+ function parseTrace(content) {
94
+ const ids = parseTraceIds(content);
95
+ const links = parseTraceLinks(content);
96
+ const malformed = findMalformedTraceIds(content);
97
+ const duplicateIds = findDuplicateIds(ids);
98
+ const orphanIds = findOrphanIds(ids, links);
99
+ const missingLinkTargets = findMissingLinkTargets(links, ids);
100
+ return { ids, links, malformed, duplicateIds, orphanIds, missingLinkTargets };
101
+ }
102
+ //# sourceMappingURL=traceParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"traceParser.js","sourceRoot":"","sources":["../src/traceParser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export declare const VALID_MODES: readonly ["feature", "repair", "test", "refactor", "harden", "extraction"];
2
+ export type WorkflowMode = typeof VALID_MODES[number];
3
+ export declare function isValidMode(value: string): value is WorkflowMode;
4
+ export interface GlobalOptions {
5
+ root?: string;
6
+ mode?: string;
7
+ name?: string;
8
+ run?: string;
9
+ outputDir?: string;
10
+ }
11
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,4EAA6E,CAAC;AAEtG,MAAM,MAAM,YAAY,GAAG,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC;AAEtD,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,YAAY,CAEhE;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"}
package/dist/types.js ADDED
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VALID_MODES = void 0;
4
+ exports.isValidMode = isValidMode;
5
+ exports.VALID_MODES = ['feature', 'repair', 'test', 'refactor', 'harden', 'extraction'];
6
+ function isValidMode(value) {
7
+ return exports.VALID_MODES.includes(value);
8
+ }
9
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AAIA,kCAEC;AANY,QAAA,WAAW,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,CAAU,CAAC;AAItG,SAAgB,WAAW,CAAC,KAAa;IACvC,OAAQ,mBAAiC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC5D,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { WorkflowMode } from './types';
2
+ export interface StageDefinition {
3
+ name: string;
4
+ artifactFile: string;
5
+ promptFile: string;
6
+ additionalArtifactFiles?: string[];
7
+ }
8
+ export interface WorkflowDefinition {
9
+ mode: WorkflowMode;
10
+ stages: StageDefinition[];
11
+ }
12
+ export declare function getWorkflow(mode: WorkflowMode): WorkflowDefinition;
13
+ export declare function getWorkflowOrThrow(mode: string): WorkflowDefinition;
14
+ export declare function getArtifactFile(stageName: string): string | undefined;
15
+ export declare function getAllWorkflows(): WorkflowDefinition[];
16
+ //# sourceMappingURL=workflows.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflows.d.ts","sourceRoot":"","sources":["../src/workflows.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA4B,MAAM,SAAS,CAAC;AAEjE,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,uBAAuB,CAAC,EAAE,MAAM,EAAE,CAAC;CACpC;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,YAAY,CAAC;IACnB,MAAM,EAAE,eAAe,EAAE,CAAC;CAC3B;AA+JD,wBAAgB,WAAW,CAAC,IAAI,EAAE,YAAY,GAAG,kBAAkB,CAElE;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,CAKnE;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAErE;AAED,wBAAgB,eAAe,IAAI,kBAAkB,EAAE,CAEtD"}