@context-forge/core 0.3.4 → 0.4.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/assets/prompt.ai-project.system.md +194 -389
- package/dist/config/ConfigKeys.d.ts.map +1 -1
- package/dist/config/ConfigKeys.js +5 -0
- package/dist/config/ConfigKeys.js.map +1 -1
- package/dist/guides/GuideManager.d.ts +2 -0
- package/dist/guides/GuideManager.d.ts.map +1 -1
- package/dist/guides/GuideManager.js +18 -1
- package/dist/guides/GuideManager.js.map +1 -1
- package/dist/introspection/ConsistencyChecker.d.ts +38 -0
- package/dist/introspection/ConsistencyChecker.d.ts.map +1 -0
- package/dist/introspection/ConsistencyChecker.js +381 -0
- package/dist/introspection/ConsistencyChecker.js.map +1 -0
- package/dist/introspection/WorkflowNavigator.d.ts.map +1 -1
- package/dist/introspection/WorkflowNavigator.js +20 -3
- package/dist/introspection/WorkflowNavigator.js.map +1 -1
- package/dist/introspection/parsers/slicePlanParser.d.ts +3 -0
- package/dist/introspection/parsers/slicePlanParser.d.ts.map +1 -1
- package/dist/introspection/parsers/slicePlanParser.js +34 -14
- package/dist/introspection/parsers/slicePlanParser.js.map +1 -1
- package/dist/introspection/types.d.ts +41 -0
- package/dist/introspection/types.d.ts.map +1 -1
- package/dist/introspection/writers/markdownWriter.d.ts +12 -0
- package/dist/introspection/writers/markdownWriter.d.ts.map +1 -0
- package/dist/introspection/writers/markdownWriter.js +93 -0
- package/dist/introspection/writers/markdownWriter.js.map +1 -0
- package/dist/node.d.ts +2 -0
- package/dist/node.d.ts.map +1 -1
- package/dist/node.js +2 -0
- package/dist/node.js.map +1 -1
- package/dist/schema/projectSchema.d.ts.map +1 -1
- package/dist/schema/projectSchema.js +4 -3
- package/dist/schema/projectSchema.js.map +1 -1
- package/dist/services/ContextIntegrator.d.ts +15 -1
- package/dist/services/ContextIntegrator.d.ts.map +1 -1
- package/dist/services/ContextIntegrator.js +51 -3
- package/dist/services/ContextIntegrator.js.map +1 -1
- package/dist/services/ContextProfileParser.d.ts +24 -0
- package/dist/services/ContextProfileParser.d.ts.map +1 -0
- package/dist/services/ContextProfileParser.js +123 -0
- package/dist/services/ContextProfileParser.js.map +1 -0
- package/dist/services/CoreServiceFactory.d.ts.map +1 -1
- package/dist/services/CoreServiceFactory.js +2 -1
- package/dist/services/CoreServiceFactory.js.map +1 -1
- package/dist/services/TemplateProcessor.d.ts.map +1 -1
- package/dist/services/TemplateProcessor.js +3 -0
- package/dist/services/TemplateProcessor.js.map +1 -1
- package/dist/services/index.d.ts +2 -0
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +1 -0
- package/dist/services/index.js.map +1 -1
- package/dist/types/context.d.ts +1 -0
- package/dist/types/context.d.ts.map +1 -1
- package/dist/types/project.d.ts +3 -1
- package/dist/types/project.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import type { SlicePlanResult } from '../types.js';
|
|
2
2
|
/**
|
|
3
3
|
* Parse a slice plan document and extract entries with completion state.
|
|
4
|
+
* Supports two entry formats:
|
|
5
|
+
* - Indexed: `1. [ ] **(101) Slice Name**` — uses parenthesized index
|
|
6
|
+
* - Unindexed: `1. [ ] **Slice Name**` — uses sequential list number as index
|
|
4
7
|
* Section-aware: skips entries under Future Work, Implementation Order, Notes, Parent Document.
|
|
5
8
|
* Never throws — returns empty result on error.
|
|
6
9
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slicePlanParser.d.ts","sourceRoot":"","sources":["../../../src/introspection/parsers/slicePlanParser.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAkB,eAAe,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"slicePlanParser.d.ts","sourceRoot":"","sources":["../../../src/introspection/parsers/slicePlanParser.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAkB,eAAe,EAAE,MAAM,aAAa,CAAC;AAcnE;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAyD/E"}
|
|
@@ -1,12 +1,17 @@
|
|
|
1
1
|
import { readFile } from 'node:fs/promises';
|
|
2
|
-
/** Matches `N. [ ] **(NNN) Slice Name**`
|
|
3
|
-
const
|
|
2
|
+
/** Matches `N. [ ] **(NNN) Slice Name**` — indexed format */
|
|
3
|
+
const PLAN_INDEXED_RE = /^(\d+)\.\s+\[([ xX])\]\s+\*\*\((\d+)\)\s+(.+?)\*\*/;
|
|
4
|
+
/** Matches `N. [ ] **Slice Name**` — unindexed format (no parenthesized index) */
|
|
5
|
+
const PLAN_UNINDEXED_RE = /^(\d+)\.\s+\[([ xX])\]\s+\*\*([^(].*?)\*\*/;
|
|
4
6
|
/** Matches headings: #, ##, ### */
|
|
5
7
|
const HEADING_RE = /^#{1,3}\s+/;
|
|
6
|
-
/** Headings that do NOT contain slice entries
|
|
8
|
+
/** Headings that do NOT contain slice entries */
|
|
7
9
|
const NON_SLICE_HEADINGS = ['future work', 'implementation order', 'notes', 'parent document'];
|
|
8
10
|
/**
|
|
9
11
|
* Parse a slice plan document and extract entries with completion state.
|
|
12
|
+
* Supports two entry formats:
|
|
13
|
+
* - Indexed: `1. [ ] **(101) Slice Name**` — uses parenthesized index
|
|
14
|
+
* - Unindexed: `1. [ ] **Slice Name**` — uses sequential list number as index
|
|
10
15
|
* Section-aware: skips entries under Future Work, Implementation Order, Notes, Parent Document.
|
|
11
16
|
* Never throws — returns empty result on error.
|
|
12
17
|
*/
|
|
@@ -15,26 +20,41 @@ export async function parseSlicePlan(filePath) {
|
|
|
15
20
|
try {
|
|
16
21
|
const content = await readFile(filePath, 'utf-8');
|
|
17
22
|
const entries = [];
|
|
18
|
-
let inSliceSection = true;
|
|
23
|
+
let inSliceSection = true;
|
|
24
|
+
let unindexedCounter = 0;
|
|
19
25
|
for (const line of content.split('\n')) {
|
|
20
26
|
const stripped = line.trim();
|
|
21
27
|
if (HEADING_RE.test(stripped)) {
|
|
22
28
|
const heading = stripped.replace(/^#+\s+/, '').toLowerCase();
|
|
23
|
-
inSliceSection = !NON_SLICE_HEADINGS.some((ns) => heading.
|
|
29
|
+
inSliceSection = !NON_SLICE_HEADINGS.some((ns) => heading.startsWith(ns));
|
|
24
30
|
continue;
|
|
25
31
|
}
|
|
26
32
|
if (!inSliceSection)
|
|
27
33
|
continue;
|
|
28
|
-
|
|
29
|
-
|
|
34
|
+
// Try indexed format first (preferred)
|
|
35
|
+
const indexed = PLAN_INDEXED_RE.exec(stripped);
|
|
36
|
+
if (indexed) {
|
|
37
|
+
const isChecked = indexed[2].toLowerCase() === 'x';
|
|
38
|
+
entries.push({
|
|
39
|
+
index: parseInt(indexed[3], 10),
|
|
40
|
+
name: indexed[4].trim(),
|
|
41
|
+
status: isChecked ? 'complete' : 'not-started',
|
|
42
|
+
isChecked,
|
|
43
|
+
});
|
|
30
44
|
continue;
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
isChecked
|
|
37
|
-
|
|
45
|
+
}
|
|
46
|
+
// Fall back to unindexed format — use sequential counter as index
|
|
47
|
+
const unindexed = PLAN_UNINDEXED_RE.exec(stripped);
|
|
48
|
+
if (unindexed) {
|
|
49
|
+
unindexedCounter++;
|
|
50
|
+
const isChecked = unindexed[2].toLowerCase() === 'x';
|
|
51
|
+
entries.push({
|
|
52
|
+
index: unindexedCounter,
|
|
53
|
+
name: unindexed[3].trim(),
|
|
54
|
+
status: isChecked ? 'complete' : 'not-started',
|
|
55
|
+
isChecked,
|
|
56
|
+
});
|
|
57
|
+
}
|
|
38
58
|
}
|
|
39
59
|
const completedSlices = entries.filter((e) => e.isChecked).length;
|
|
40
60
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slicePlanParser.js","sourceRoot":"","sources":["../../../src/introspection/parsers/slicePlanParser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAG5C,
|
|
1
|
+
{"version":3,"file":"slicePlanParser.js","sourceRoot":"","sources":["../../../src/introspection/parsers/slicePlanParser.ts"],"names":[],"mappings":"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"}
|
|
@@ -153,6 +153,47 @@ export interface FutureWorkCollectorResult {
|
|
|
153
153
|
completedItems: number;
|
|
154
154
|
markdown: string;
|
|
155
155
|
}
|
|
156
|
+
/** Severity level for consistency findings */
|
|
157
|
+
export type ConsistencySeverity = 'info' | 'warning' | 'error';
|
|
158
|
+
/** A single consistency finding from a detection rule */
|
|
159
|
+
export interface ConsistencyFinding {
|
|
160
|
+
rule: string;
|
|
161
|
+
severity: ConsistencySeverity;
|
|
162
|
+
location: string;
|
|
163
|
+
description: string;
|
|
164
|
+
suggestedFix: string;
|
|
165
|
+
fixable: boolean;
|
|
166
|
+
fixAction?: {
|
|
167
|
+
type: 'update-checkbox' | 'update-frontmatter';
|
|
168
|
+
filePath: string;
|
|
169
|
+
detail: Record<string, unknown>;
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
/** Result of running all consistency checks on a project */
|
|
173
|
+
export interface ConsistencyCheckResult {
|
|
174
|
+
projectPath: string;
|
|
175
|
+
findings: ConsistencyFinding[];
|
|
176
|
+
totalFindings: number;
|
|
177
|
+
errors: number;
|
|
178
|
+
warnings: number;
|
|
179
|
+
infos: number;
|
|
180
|
+
summary: string;
|
|
181
|
+
}
|
|
182
|
+
/** Log entry for a single applied fix */
|
|
183
|
+
export interface FixLogEntry {
|
|
184
|
+
rule: string;
|
|
185
|
+
action: 'update-checkbox' | 'update-frontmatter';
|
|
186
|
+
filePath: string;
|
|
187
|
+
field?: string;
|
|
188
|
+
before: string;
|
|
189
|
+
after: string;
|
|
190
|
+
}
|
|
191
|
+
/** Result of running consistency checks with fix mode enabled */
|
|
192
|
+
export interface ConsistencyFixResult extends ConsistencyCheckResult {
|
|
193
|
+
fixed: number;
|
|
194
|
+
fixLog: FixLogEntry[];
|
|
195
|
+
fixErrors: string[];
|
|
196
|
+
}
|
|
156
197
|
/** Status of the currently active slice */
|
|
157
198
|
export interface SliceStatus {
|
|
158
199
|
name: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/introspection/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/introspection/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { FixLogEntry } from '../types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Update a checkbox on a specific line in a markdown file.
|
|
4
|
+
* Toggles between `[ ]` and `[x]` based on the `checked` parameter.
|
|
5
|
+
*/
|
|
6
|
+
export declare function updateCheckbox(filePath: string, lineIndex: number, checked: boolean): Promise<FixLogEntry>;
|
|
7
|
+
/**
|
|
8
|
+
* Update a YAML frontmatter field value in a markdown file.
|
|
9
|
+
* Finds the key in the frontmatter block and replaces its value.
|
|
10
|
+
*/
|
|
11
|
+
export declare function updateFrontmatterField(filePath: string, key: string, value: string): Promise<FixLogEntry>;
|
|
12
|
+
//# sourceMappingURL=markdownWriter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdownWriter.d.ts","sourceRoot":"","sources":["../../../src/introspection/writers/markdownWriter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C;;;GAGG;AACH,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,WAAW,CAAC,CAkCtB;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,CAC1C,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,WAAW,CAAC,CA+DtB"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { readFile, writeFile } from 'node:fs/promises';
|
|
2
|
+
/**
|
|
3
|
+
* Update a checkbox on a specific line in a markdown file.
|
|
4
|
+
* Toggles between `[ ]` and `[x]` based on the `checked` parameter.
|
|
5
|
+
*/
|
|
6
|
+
export async function updateCheckbox(filePath, lineIndex, checked) {
|
|
7
|
+
const content = await readFile(filePath, 'utf-8');
|
|
8
|
+
const lines = content.split('\n');
|
|
9
|
+
if (lineIndex < 0 || lineIndex >= lines.length) {
|
|
10
|
+
throw new Error(`Line index ${lineIndex} out of range (file has ${lines.length} lines)`);
|
|
11
|
+
}
|
|
12
|
+
const line = lines[lineIndex];
|
|
13
|
+
const uncheckedPattern = /\[ \]/;
|
|
14
|
+
const checkedPattern = /\[x\]/i;
|
|
15
|
+
if (!uncheckedPattern.test(line) && !checkedPattern.test(line)) {
|
|
16
|
+
throw new Error(`Line ${lineIndex} does not contain a checkbox pattern: "${line.trim()}"`);
|
|
17
|
+
}
|
|
18
|
+
const before = uncheckedPattern.test(line) ? '[ ]' : '[x]';
|
|
19
|
+
const after = checked ? '[x]' : '[ ]';
|
|
20
|
+
if (checked) {
|
|
21
|
+
lines[lineIndex] = line.replace(uncheckedPattern, '[x]');
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
lines[lineIndex] = line.replace(checkedPattern, '[ ]');
|
|
25
|
+
}
|
|
26
|
+
await writeFile(filePath, lines.join('\n'), 'utf-8');
|
|
27
|
+
return {
|
|
28
|
+
rule: '',
|
|
29
|
+
action: 'update-checkbox',
|
|
30
|
+
filePath,
|
|
31
|
+
before,
|
|
32
|
+
after,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Update a YAML frontmatter field value in a markdown file.
|
|
37
|
+
* Finds the key in the frontmatter block and replaces its value.
|
|
38
|
+
*/
|
|
39
|
+
export async function updateFrontmatterField(filePath, key, value) {
|
|
40
|
+
const content = await readFile(filePath, 'utf-8');
|
|
41
|
+
const lines = content.split('\n');
|
|
42
|
+
if (lines.length === 0 || lines[0].trim() !== '---') {
|
|
43
|
+
throw new Error(`File does not contain YAML frontmatter: ${filePath}`);
|
|
44
|
+
}
|
|
45
|
+
let closingIndex = -1;
|
|
46
|
+
for (let i = 1; i < lines.length; i++) {
|
|
47
|
+
if (lines[i].trim() === '---') {
|
|
48
|
+
closingIndex = i;
|
|
49
|
+
break;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
if (closingIndex === -1) {
|
|
53
|
+
throw new Error(`Frontmatter not closed in: ${filePath}`);
|
|
54
|
+
}
|
|
55
|
+
// Find the key within frontmatter bounds
|
|
56
|
+
let keyLineIndex = -1;
|
|
57
|
+
let beforeValue = '';
|
|
58
|
+
for (let i = 1; i < closingIndex; i++) {
|
|
59
|
+
const line = lines[i];
|
|
60
|
+
const colonIdx = line.indexOf(':');
|
|
61
|
+
if (colonIdx === -1)
|
|
62
|
+
continue;
|
|
63
|
+
const lineKey = line.slice(0, colonIdx).trim();
|
|
64
|
+
if (lineKey === key) {
|
|
65
|
+
keyLineIndex = i;
|
|
66
|
+
beforeValue = line.slice(colonIdx + 1).trim();
|
|
67
|
+
// Strip surrounding quotes
|
|
68
|
+
if (beforeValue.length >= 2 &&
|
|
69
|
+
((beforeValue.startsWith("'") && beforeValue.endsWith("'")) ||
|
|
70
|
+
(beforeValue.startsWith('"') && beforeValue.endsWith('"')))) {
|
|
71
|
+
beforeValue = beforeValue.slice(1, -1);
|
|
72
|
+
}
|
|
73
|
+
break;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
if (keyLineIndex === -1) {
|
|
77
|
+
throw new Error(`Frontmatter key "${key}" not found in: ${filePath}`);
|
|
78
|
+
}
|
|
79
|
+
// Replace the value, preserving the key and any leading whitespace
|
|
80
|
+
const originalLine = lines[keyLineIndex];
|
|
81
|
+
const colonIdx = originalLine.indexOf(':');
|
|
82
|
+
lines[keyLineIndex] = originalLine.slice(0, colonIdx + 1) + ' ' + value;
|
|
83
|
+
await writeFile(filePath, lines.join('\n'), 'utf-8');
|
|
84
|
+
return {
|
|
85
|
+
rule: '',
|
|
86
|
+
action: 'update-frontmatter',
|
|
87
|
+
filePath,
|
|
88
|
+
field: key,
|
|
89
|
+
before: beforeValue,
|
|
90
|
+
after: value,
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=markdownWriter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdownWriter.js","sourceRoot":"","sources":["../../../src/introspection/writers/markdownWriter.ts"],"names":[],"mappings":"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"}
|
package/dist/node.d.ts
CHANGED
|
@@ -15,4 +15,6 @@ export { parseFutureWork } from './introspection/parsers/futureWorkParser.js';
|
|
|
15
15
|
export { detectDocuments, checkFileExists } from './introspection/parsers/documentDetector.js';
|
|
16
16
|
export { buildModel, scanDirectory } from './introspection/ProjectModelBuilder.js';
|
|
17
17
|
export { FutureWorkCollector } from './introspection/FutureWorkCollector.js';
|
|
18
|
+
export { ConsistencyChecker } from './introspection/ConsistencyChecker.js';
|
|
19
|
+
export { updateCheckbox, updateFrontmatterField } from './introspection/writers/markdownWriter.js';
|
|
18
20
|
//# sourceMappingURL=node.d.ts.map
|
package/dist/node.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAGzE,cAAc,oBAAoB,CAAC;AAGnC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,mBAAmB,CAAC;AAGlC,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAG7G,OAAO,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAC5F,OAAO,EAAE,gBAAgB,EAAE,MAAM,8CAA8C,CAAC;AAChF,OAAO,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,2CAA2C,CAAC;AAC1F,OAAO,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAC;AAC/F,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;AACnF,OAAO,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC"}
|
|
1
|
+
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAGzE,cAAc,oBAAoB,CAAC;AAGnC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,mBAAmB,CAAC;AAGlC,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAG7G,OAAO,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAC5F,OAAO,EAAE,gBAAgB,EAAE,MAAM,8CAA8C,CAAC;AAChF,OAAO,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,2CAA2C,CAAC;AAC1F,OAAO,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAC;AAC/F,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;AACnF,OAAO,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,2CAA2C,CAAC"}
|
package/dist/node.js
CHANGED
|
@@ -23,4 +23,6 @@ export { parseFutureWork } from './introspection/parsers/futureWorkParser.js';
|
|
|
23
23
|
export { detectDocuments, checkFileExists } from './introspection/parsers/documentDetector.js';
|
|
24
24
|
export { buildModel, scanDirectory } from './introspection/ProjectModelBuilder.js';
|
|
25
25
|
export { FutureWorkCollector } from './introspection/FutureWorkCollector.js';
|
|
26
|
+
export { ConsistencyChecker } from './introspection/ConsistencyChecker.js';
|
|
27
|
+
export { updateCheckbox, updateFrontmatterField } from './introspection/writers/markdownWriter.js';
|
|
26
28
|
//# sourceMappingURL=node.js.map
|
package/dist/node.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node.js","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,oEAAoE;AACpE,uEAAuE;AAEvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAEzE,0EAA0E;AAC1E,cAAc,oBAAoB,CAAC;AAEnC,8DAA8D;AAC9D,cAAc,mBAAmB,CAAC;AAElC,yDAAyD;AACzD,cAAc,mBAAmB,CAAC;AAElC,8DAA8D;AAC9D,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAE7G,yEAAyE;AACzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAC5F,OAAO,EAAE,gBAAgB,EAAE,MAAM,8CAA8C,CAAC;AAChF,OAAO,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,2CAA2C,CAAC;AAC1F,OAAO,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAC;AAC/F,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;AACnF,OAAO,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC"}
|
|
1
|
+
{"version":3,"file":"node.js","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,oEAAoE;AACpE,uEAAuE;AAEvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAEzE,0EAA0E;AAC1E,cAAc,oBAAoB,CAAC;AAEnC,8DAA8D;AAC9D,cAAc,mBAAmB,CAAC;AAElC,yDAAyD;AACzD,cAAc,mBAAmB,CAAC;AAElC,8DAA8D;AAC9D,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAE7G,yEAAyE;AACzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAC5F,OAAO,EAAE,gBAAgB,EAAE,MAAM,8CAA8C,CAAC;AAChF,OAAO,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,2CAA2C,CAAC;AAC1F,OAAO,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAC;AAC/F,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;AACnF,OAAO,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,2CAA2C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projectSchema.d.ts","sourceRoot":"","sources":["../../src/schema/projectSchema.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,WAAW,GAAG,UAAU,GAAG,UAAU,GAAG,QAAQ,CAAC;AAEvF,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,UAAU,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAiBD,gEAAgE;AAChE,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CA4B5C,CAAC;AAEF,6CAA6C;AAC7C,eAAO,MAAM,cAAc,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"projectSchema.d.ts","sourceRoot":"","sources":["../../src/schema/projectSchema.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,WAAW,GAAG,UAAU,GAAG,UAAU,GAAG,QAAQ,CAAC;AAEvF,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,UAAU,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAiBD,gEAAgE;AAChE,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CA4B5C,CAAC;AAEF,6CAA6C;AAC7C,eAAO,MAAM,cAAc,EAAE,eAAe,EA8B3C,CAAC;AAEF,0EAA0E;AAC1E,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAIhD,CAAC;AAqBF;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAElE;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEnE;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,GACZ;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAcpC;AAED,iCAAiC;AACjC,eAAO,MAAM,YAAY,EAAE,UAAU,EAAgE,CAAC;AAEtG;;GAEG;AACH,wBAAgB,SAAS,IAAI;IAC3B,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,MAAM,EAAE,UAAU,EAAE,CAAC;CACtB,CAMA"}
|
|
@@ -51,11 +51,12 @@ export const PROJECT_FIELDS = [
|
|
|
51
51
|
{ field: 'id', type: 'string', required: false, readonly: true, group: 'identity', description: 'Auto-generated project identifier', aliases: [], label: 'ID' },
|
|
52
52
|
{ field: 'projectPath', type: 'string', required: true, readonly: false, group: 'identity', description: 'Absolute path to project directory', aliases: ['path'], label: 'Path' },
|
|
53
53
|
{ field: 'template', type: 'string', required: false, readonly: false, group: 'identity', description: 'Context template name', aliases: [], label: 'Template' },
|
|
54
|
-
// Artifacts
|
|
54
|
+
// Artifacts — ordered by methodology progression: spec → hld → arch → plan → slice → tasks
|
|
55
|
+
{ field: 'fileSpec', type: 'string', required: false, readonly: false, group: 'artifacts', description: 'Project specification path', aliases: ['spec'], label: 'Spec' },
|
|
56
|
+
{ field: 'fileHLD', type: 'string', required: false, readonly: false, group: 'artifacts', description: 'High-level design document path', aliases: ['hld'], label: 'HLD' },
|
|
57
|
+
{ field: 'fileConcept', type: 'string', required: false, readonly: false, group: 'artifacts', description: 'Concept document path (relative)', aliases: ['concept'], label: 'Concept' },
|
|
55
58
|
{ field: 'fileArch', type: 'string', required: false, readonly: false, group: 'artifacts', description: 'Architecture document path (relative)', aliases: ['arch'], label: 'Architecture' },
|
|
56
59
|
{ field: 'fileSlicePlan', type: 'string', required: false, readonly: false, group: 'artifacts', description: 'Slice plan document path (relative)', aliases: ['plan'], label: 'Slice Plan' },
|
|
57
|
-
{ field: 'fileHLD', type: 'string', required: false, readonly: false, group: 'artifacts', description: 'High-level design document path', aliases: ['hld'], label: 'HLD' },
|
|
58
|
-
{ field: 'fileSpec', type: 'string', required: false, readonly: false, group: 'artifacts', description: 'Project specification path', aliases: ['spec'], label: 'Spec' },
|
|
59
60
|
{ field: 'fileSlice', type: 'string', required: false, readonly: false, group: 'artifacts', description: 'Current slice design path (relative)', aliases: ['slice'], label: 'Slice' },
|
|
60
61
|
{ field: 'fileTasks', type: 'string', required: false, readonly: false, group: 'artifacts', description: 'Current tasks file path (relative)', aliases: ['tasks'], label: 'Tasks' },
|
|
61
62
|
// Workflow
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projectSchema.js","sourceRoot":"","sources":["../../src/schema/projectSchema.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAgBH,wBAAwB;AACxB,MAAM,aAAa,GAAG;IACpB,kBAAkB;IAClB,uBAAuB;IACvB,yBAAyB;IACzB,uBAAuB;IACvB,yBAAyB;IACzB,yBAAyB;IACzB,sBAAsB;CACd,CAAC;AAEX,MAAM,cAAc,GAAG,CAAC,cAAc,EAAE,oBAAoB,CAAU,CAAC;AAEvE,MAAM,gBAAgB,GAAa,CAAC,GAAG,aAAa,EAAE,GAAG,cAAc,CAAC,CAAC;AAEzE,gEAAgE;AAChE,MAAM,CAAC,MAAM,SAAS,GAA2B;IAC/C,mBAAmB;IACnB,GAAG,EAAE,kBAAkB;IACvB,GAAG,EAAE,uBAAuB;IAC5B,GAAG,EAAE,yBAAyB;IAC9B,GAAG,EAAE,uBAAuB;IAC5B,GAAG,EAAE,yBAAyB;IAC9B,GAAG,EAAE,yBAAyB;IAC9B,GAAG,EAAE,sBAAsB;IAC3B,6BAA6B;IAC7B,IAAI,EAAE,kBAAkB;IACxB,IAAI,EAAE,uBAAuB;IAC7B,IAAI,EAAE,yBAAyB;IAC/B,IAAI,EAAE,uBAAuB;IAC7B,IAAI,EAAE,yBAAyB;IAC/B,IAAI,EAAE,yBAAyB;IAC/B,IAAI,EAAE,sBAAsB;IAC5B,uBAAuB;IACvB,SAAS,EAAE,kBAAkB;IAC7B,cAAc,EAAE,uBAAuB;IACvC,gBAAgB,EAAE,yBAAyB;IAC3C,cAAc,EAAE,uBAAuB;IACvC,gBAAgB,EAAE,yBAAyB;IAC3C,gBAAgB,EAAE,yBAAyB;IAC3C,aAAa,EAAE,sBAAsB;IACrC,iBAAiB;IACjB,cAAc,EAAE,cAAc;IAC9B,oBAAoB,EAAE,oBAAoB;CAC3C,CAAC;AAEF,6CAA6C;AAC7C,MAAM,CAAC,MAAM,cAAc,GAAsB;IAC/C,WAAW;IACX,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,sBAAsB,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;IACtJ,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,mCAAmC,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;IAC/J,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,oCAAoC,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE;IACjL,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,uBAAuB,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE;IAEhK,
|
|
1
|
+
{"version":3,"file":"projectSchema.js","sourceRoot":"","sources":["../../src/schema/projectSchema.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,7 +8,16 @@ export declare class ContextIntegrator {
|
|
|
8
8
|
private templateProcessor;
|
|
9
9
|
private templateEngine;
|
|
10
10
|
private enableNewEngine;
|
|
11
|
-
|
|
11
|
+
private profileParser;
|
|
12
|
+
private cachedProfiles;
|
|
13
|
+
private cachedPromptPath;
|
|
14
|
+
private readFileFn;
|
|
15
|
+
/**
|
|
16
|
+
* @param engine Template engine for context generation
|
|
17
|
+
* @param enableNewEngine Toggle between new and legacy template systems
|
|
18
|
+
* @param readFileFn Optional file reader for profile loading (Node.js only)
|
|
19
|
+
*/
|
|
20
|
+
constructor(engine: ContextTemplateEngine, enableNewEngine?: boolean, readFileFn?: ((path: string) => string) | null);
|
|
12
21
|
/**
|
|
13
22
|
* Generates a complete context string from project data
|
|
14
23
|
* Main integration point - takes project data and returns formatted context
|
|
@@ -31,6 +40,11 @@ export declare class ContextIntegrator {
|
|
|
31
40
|
* @returns Enhanced context data ready for template engine
|
|
32
41
|
*/
|
|
33
42
|
private mapProjectToEnhancedContext;
|
|
43
|
+
/**
|
|
44
|
+
* Zeros out artifact fields not in the active instruction's profile.
|
|
45
|
+
* Skips filtering if readFileFn is not set or profiles block is absent.
|
|
46
|
+
*/
|
|
47
|
+
private applyProfileFiltering;
|
|
34
48
|
/**
|
|
35
49
|
* Maps ProjectData structure to ContextData structure (legacy)
|
|
36
50
|
* Handles null/undefined values with appropriate defaults
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContextIntegrator.d.ts","sourceRoot":"","sources":["../../src/services/ContextIntegrator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"ContextIntegrator.d.ts","sourceRoot":"","sources":["../../src/services/ContextIntegrator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AA0BnE;;;GAGG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,cAAc,CAAwB;IAC9C,OAAO,CAAC,eAAe,CAAU;IACjC,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,cAAc,CAA2B;IACjD,OAAO,CAAC,gBAAgB,CAAuB;IAC/C,OAAO,CAAC,UAAU,CAAoC;IAEtD;;;;OAIG;gBAED,MAAM,EAAE,qBAAqB,EAC7B,eAAe,GAAE,OAAc,EAC/B,UAAU,GAAE,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,GAAG,IAAW;IAStD;;;;;OAKG;IACG,0BAA0B,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;IAavE;;OAEG;YACW,0BAA0B;IAgBxC;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAWhC;;;;;OAKG;YACW,2BAA2B;IAiCzC;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAwB7B;;;;;OAKG;IACH,OAAO,CAAC,mBAAmB;IAoB3B;;;;OAIG;IACH,OAAO,CAAC,YAAY;IAapB;;;;;OAKG;IACH,OAAO,CAAC,eAAe;IAcvB;;;;OAIG;IACH,eAAe,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO;IAYjE;;;OAGG;YACW,oBAAoB;IAKlC;;;OAGG;YACW,gBAAgB;IAK9B;;OAEG;IACH,kBAAkB,IAAI,OAAO;IAI7B;;OAEG;IACH,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAI3C;;;OAGG;IACH,kBAAkB,IAAI,MAAM;CAG7B"}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import { TemplateProcessor } from './TemplateProcessor.js';
|
|
2
|
+
import { ContextProfileParser } from './ContextProfileParser.js';
|
|
2
3
|
import { PROMPT_FILE_RELATIVE_PATH, STATEMENTS_FILE_RELATIVE_PATH } from './constants.js';
|
|
4
|
+
/** Artifact fields subject to profile-aware filtering */
|
|
5
|
+
const ARTIFACT_FIELDS = ['fileArch', 'fileSlicePlan', 'fileHLD', 'fileSpec', 'fileSlice', 'fileTasks', 'fileConcept'];
|
|
3
6
|
/**
|
|
4
7
|
* Default template for context generation
|
|
5
8
|
* Uses markdown format with template variable substitution
|
|
@@ -25,10 +28,21 @@ export class ContextIntegrator {
|
|
|
25
28
|
templateProcessor;
|
|
26
29
|
templateEngine;
|
|
27
30
|
enableNewEngine;
|
|
28
|
-
|
|
31
|
+
profileParser;
|
|
32
|
+
cachedProfiles = null;
|
|
33
|
+
cachedPromptPath = null;
|
|
34
|
+
readFileFn;
|
|
35
|
+
/**
|
|
36
|
+
* @param engine Template engine for context generation
|
|
37
|
+
* @param enableNewEngine Toggle between new and legacy template systems
|
|
38
|
+
* @param readFileFn Optional file reader for profile loading (Node.js only)
|
|
39
|
+
*/
|
|
40
|
+
constructor(engine, enableNewEngine = true, readFileFn = null) {
|
|
29
41
|
this.templateProcessor = new TemplateProcessor();
|
|
30
42
|
this.templateEngine = engine;
|
|
31
43
|
this.enableNewEngine = enableNewEngine;
|
|
44
|
+
this.profileParser = new ContextProfileParser();
|
|
45
|
+
this.readFileFn = readFileFn;
|
|
32
46
|
}
|
|
33
47
|
/**
|
|
34
48
|
* Generates a complete context string from project data
|
|
@@ -57,7 +71,9 @@ export class ContextIntegrator {
|
|
|
57
71
|
// Resolve absolute file paths from project root before service calls
|
|
58
72
|
if (project.projectPath) {
|
|
59
73
|
const base = project.projectPath.replace(/\/+$/, '');
|
|
60
|
-
|
|
74
|
+
const promptPath = `${base}/${PROMPT_FILE_RELATIVE_PATH}`;
|
|
75
|
+
this.cachedPromptPath = promptPath;
|
|
76
|
+
this.templateEngine.updateServicePaths(promptPath, `${base}/${STATEMENTS_FILE_RELATIVE_PATH}`);
|
|
61
77
|
}
|
|
62
78
|
// Map project data to enhanced context data
|
|
63
79
|
const enhancedData = await this.mapProjectToEnhancedContext(project);
|
|
@@ -85,7 +101,7 @@ export class ContextIntegrator {
|
|
|
85
101
|
// Detect available tools and MCP servers
|
|
86
102
|
const availableTools = await this.detectAvailableTools();
|
|
87
103
|
const mcpServers = await this.detectMCPServers();
|
|
88
|
-
|
|
104
|
+
const enhanced = {
|
|
89
105
|
projectName: project.name || 'Unknown Project',
|
|
90
106
|
template: project.template || '',
|
|
91
107
|
fileSlice: project.fileSlice || 'Unknown Slice',
|
|
@@ -98,6 +114,7 @@ export class ContextIntegrator {
|
|
|
98
114
|
fileSlicePlan: project.fileSlicePlan || '',
|
|
99
115
|
fileHLD: project.fileHLD || '',
|
|
100
116
|
fileSpec: project.fileSpec || '',
|
|
117
|
+
fileConcept: project.fileConcept || '',
|
|
101
118
|
recentEvents: project.customData?.recentEvents || '',
|
|
102
119
|
additionalNotes: project.customData?.additionalNotes || '',
|
|
103
120
|
availableTools,
|
|
@@ -105,6 +122,36 @@ export class ContextIntegrator {
|
|
|
105
122
|
templateVersion: '1.0.0',
|
|
106
123
|
customData: project.customData
|
|
107
124
|
};
|
|
125
|
+
// Apply profile-aware filtering if profiles are available
|
|
126
|
+
this.applyProfileFiltering(enhanced, project.instruction || 'implementation');
|
|
127
|
+
return enhanced;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Zeros out artifact fields not in the active instruction's profile.
|
|
131
|
+
* Skips filtering if readFileFn is not set or profiles block is absent.
|
|
132
|
+
*/
|
|
133
|
+
applyProfileFiltering(data, instruction) {
|
|
134
|
+
if (!this.readFileFn || !this.cachedPromptPath)
|
|
135
|
+
return;
|
|
136
|
+
// Lazy-load and cache profiles
|
|
137
|
+
if (this.cachedProfiles === null) {
|
|
138
|
+
try {
|
|
139
|
+
const content = this.readFileFn(this.cachedPromptPath);
|
|
140
|
+
this.cachedProfiles = this.profileParser.parseProfiles(content);
|
|
141
|
+
}
|
|
142
|
+
catch {
|
|
143
|
+
this.cachedProfiles = {};
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
const profiles = this.cachedProfiles;
|
|
147
|
+
if (Object.keys(profiles).length === 0)
|
|
148
|
+
return;
|
|
149
|
+
const allowedVars = this.profileParser.getProfileForInstruction(instruction, profiles);
|
|
150
|
+
for (const field of ARTIFACT_FIELDS) {
|
|
151
|
+
if (!allowedVars.includes(field)) {
|
|
152
|
+
data[field] = '';
|
|
153
|
+
}
|
|
154
|
+
}
|
|
108
155
|
}
|
|
109
156
|
/**
|
|
110
157
|
* Maps ProjectData structure to ContextData structure (legacy)
|
|
@@ -126,6 +173,7 @@ export class ContextIntegrator {
|
|
|
126
173
|
fileSlicePlan: project.fileSlicePlan || '',
|
|
127
174
|
fileHLD: project.fileHLD || '',
|
|
128
175
|
fileSpec: project.fileSpec || '',
|
|
176
|
+
fileConcept: project.fileConcept || '',
|
|
129
177
|
recentEvents: project.customData?.recentEvents || '',
|
|
130
178
|
additionalNotes: project.customData?.additionalNotes || ''
|
|
131
179
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContextIntegrator.js","sourceRoot":"","sources":["../../src/services/ContextIntegrator.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,OAAO,EAAE,yBAAyB,EAAE,6BAA6B,EAAE,MAAM,gBAAgB,CAAC;AAE1F;;;GAGG;AACH,MAAM,gBAAgB,GAAG;;;;;;;;;;;;uDAY8B,CAAC;AAExD;;;GAGG;AACH,MAAM,OAAO,iBAAiB;IACpB,iBAAiB,CAAoB;IACrC,cAAc,CAAwB;IACtC,eAAe,CAAU;
|
|
1
|
+
{"version":3,"file":"ContextIntegrator.js","sourceRoot":"","sources":["../../src/services/ContextIntegrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parses context-profiles YAML blocks from prompt asset files.
|
|
3
|
+
* Profiles declare which artifact variables each instruction type uses,
|
|
4
|
+
* enabling profile-aware filtering in ContextIntegrator.
|
|
5
|
+
*/
|
|
6
|
+
export type ProfileMap = Record<string, {
|
|
7
|
+
variables: string[];
|
|
8
|
+
}>;
|
|
9
|
+
export declare class ContextProfileParser {
|
|
10
|
+
/**
|
|
11
|
+
* Finds and parses the context-profiles YAML block from file content.
|
|
12
|
+
* Returns an empty ProfileMap if the block is absent or malformed.
|
|
13
|
+
*/
|
|
14
|
+
parseProfiles(fileContent: string): ProfileMap;
|
|
15
|
+
/**
|
|
16
|
+
* Returns the variable list for a given instruction type.
|
|
17
|
+
* Normalises phase strings (e.g. "Phase 6: Implementation" → "implementation").
|
|
18
|
+
* Falls back to `_default` profile if the instruction has no explicit entry.
|
|
19
|
+
* Returns [] if profiles is empty (caller should skip filtering).
|
|
20
|
+
*/
|
|
21
|
+
getProfileForInstruction(instruction: string, profiles: ProfileMap): string[];
|
|
22
|
+
private normaliseInstruction;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=ContextProfileParser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ContextProfileParser.d.ts","sourceRoot":"","sources":["../../src/services/ContextProfileParser.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE;IAAE,SAAS,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAAC;AA2EjE,qBAAa,oBAAoB;IAC/B;;;OAGG;IACH,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,UAAU;IAyB9C;;;;;OAKG;IACH,wBAAwB,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,GAAG,MAAM,EAAE;IAgB7E,OAAO,CAAC,oBAAoB;CAI7B"}
|