@context-forge/core 0.11.0 → 0.12.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/dist/introspection/ConsistencyChecker.d.ts +13 -6
- package/dist/introspection/ConsistencyChecker.d.ts.map +1 -1
- package/dist/introspection/ConsistencyChecker.js +41 -51
- package/dist/introspection/ConsistencyChecker.js.map +1 -1
- package/dist/introspection/WorkflowNavigator.d.ts +3 -2
- package/dist/introspection/WorkflowNavigator.d.ts.map +1 -1
- package/dist/introspection/WorkflowNavigator.js +4 -3
- package/dist/introspection/WorkflowNavigator.js.map +1 -1
- package/dist/introspection/parsers/statusNormalizer.d.ts +10 -0
- package/dist/introspection/parsers/statusNormalizer.d.ts.map +1 -1
- package/dist/introspection/parsers/statusNormalizer.js +43 -0
- package/dist/introspection/parsers/statusNormalizer.js.map +1 -1
- package/dist/introspection/types.d.ts +2 -2
- package/dist/introspection/types.js +2 -2
- package/dist/introspection/writers/markdownWriter.d.ts +4 -3
- package/dist/introspection/writers/markdownWriter.d.ts.map +1 -1
- package/dist/introspection/writers/markdownWriter.js +30 -22
- package/dist/introspection/writers/markdownWriter.js.map +1 -1
- package/dist/node.d.ts +1 -0
- package/dist/node.d.ts.map +1 -1
- package/dist/node.js +1 -0
- package/dist/node.js.map +1 -1
- package/dist/schema/frontmatterFileValidator.d.ts +24 -0
- package/dist/schema/frontmatterFileValidator.d.ts.map +1 -0
- package/dist/schema/frontmatterFileValidator.js +86 -0
- package/dist/schema/frontmatterFileValidator.js.map +1 -0
- package/dist/schema/frontmatterSchema.d.ts +1 -1
- package/dist/schema/frontmatterSchema.d.ts.map +1 -1
- package/dist/schema/frontmatterSchema.js +46 -22
- package/dist/schema/frontmatterSchema.js.map +1 -1
- package/dist/utils/worktree-overlay.d.ts +4 -3
- package/dist/utils/worktree-overlay.d.ts.map +1 -1
- package/dist/utils/worktree-overlay.js +6 -3
- package/dist/utils/worktree-overlay.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"statusNormalizer.d.ts","sourceRoot":"","sources":["../../../src/introspection/parsers/statusNormalizer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAqBpD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,gBAAgB,GAAG,SAAS,CAG5F"}
|
|
1
|
+
{"version":3,"file":"statusNormalizer.d.ts","sourceRoot":"","sources":["../../../src/introspection/parsers/statusNormalizer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAqBpD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,gBAAgB,GAAG,SAAS,CAG5F;AAmBD;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,gBAAgB,GAAG,SAAS,CAsB1F"}
|
|
@@ -28,4 +28,47 @@ export function normalizeStatus(raw) {
|
|
|
28
28
|
const key = (raw ?? '').toLowerCase().trim();
|
|
29
29
|
return STATUS_MAP[key];
|
|
30
30
|
}
|
|
31
|
+
/** Plain Levenshtein distance — inputs are short status strings, so O(n*m) is fine. */
|
|
32
|
+
function editDistance(a, b) {
|
|
33
|
+
const dp = Array.from({ length: a.length + 1 }, (_, i) => Array.from({ length: b.length + 1 }, (_, j) => (i === 0 ? j : j === 0 ? i : 0)));
|
|
34
|
+
for (let i = 1; i <= a.length; i++) {
|
|
35
|
+
for (let j = 1; j <= b.length; j++) {
|
|
36
|
+
dp[i][j] = Math.min(dp[i - 1][j] + 1, dp[i][j - 1] + 1, dp[i - 1][j - 1] + (a[i - 1] === b[j - 1] ? 0 : 1));
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return dp[a.length][b.length];
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Suggest the canonical status a raw value most likely intends, for fix
|
|
43
|
+
* suggestions only — never for reading state. Tries the exact alias map
|
|
44
|
+
* first, then a conservative typo match against the alias keys.
|
|
45
|
+
*
|
|
46
|
+
* Returns `undefined` when no safe suggestion exists: input too short to
|
|
47
|
+
* fuzzy-match, no alias within edit distance, or the nearest aliases are
|
|
48
|
+
* ambiguous (tie between different canonical values).
|
|
49
|
+
*/
|
|
50
|
+
export function suggestStatus(raw) {
|
|
51
|
+
const exact = normalizeStatus(raw);
|
|
52
|
+
if (exact)
|
|
53
|
+
return exact;
|
|
54
|
+
const key = (raw ?? '').toLowerCase().trim();
|
|
55
|
+
// Short strings make distance-based matching unreliable (e.g. any 4-letter
|
|
56
|
+
// word is close to 'done'); only attempt typo rescue on longer values.
|
|
57
|
+
if (key.length < 6)
|
|
58
|
+
return undefined;
|
|
59
|
+
const maxDistance = 2;
|
|
60
|
+
let bestDistance = maxDistance + 1;
|
|
61
|
+
let candidates = new Set();
|
|
62
|
+
for (const [alias, canonical] of Object.entries(STATUS_MAP)) {
|
|
63
|
+
const d = editDistance(key, alias);
|
|
64
|
+
if (d < bestDistance) {
|
|
65
|
+
bestDistance = d;
|
|
66
|
+
candidates = new Set([canonical]);
|
|
67
|
+
}
|
|
68
|
+
else if (d === bestDistance) {
|
|
69
|
+
candidates.add(canonical);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return candidates.size === 1 ? [...candidates][0] : undefined;
|
|
73
|
+
}
|
|
31
74
|
//# sourceMappingURL=statusNormalizer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"statusNormalizer.js","sourceRoot":"","sources":["../../../src/introspection/parsers/statusNormalizer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAGrC,wFAAwF;AACxF,MAAM,UAAU,GAAqC;IACnD,QAAQ,EAAE,MAAM,CAAC,QAAQ;IACzB,SAAS,EAAE,MAAM,CAAC,QAAQ;IAC1B,IAAI,EAAE,MAAM,CAAC,QAAQ;IACrB,WAAW,EAAE,MAAM,CAAC,UAAU;IAC9B,aAAa,EAAE,MAAM,CAAC,UAAU;IAChC,aAAa,EAAE,MAAM,CAAC,UAAU;IAChC,MAAM,EAAE,MAAM,CAAC,UAAU;IACzB,WAAW,EAAE,MAAM,CAAC,UAAU;IAC9B,aAAa,EAAE,MAAM,CAAC,UAAU;IAChC,aAAa,EAAE,MAAM,CAAC,UAAU;IAChC,KAAK,EAAE,MAAM,CAAC,UAAU;IACxB,OAAO,EAAE,MAAM,CAAC,UAAU;IAC1B,OAAO,EAAE,MAAM,CAAC,UAAU;IAC1B,UAAU,EAAE,MAAM,CAAC,UAAU;IAC7B,QAAQ,EAAE,MAAM,CAAC,QAAQ;CAC1B,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,GAA8B;IAC5D,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;IAC7C,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC"}
|
|
1
|
+
{"version":3,"file":"statusNormalizer.js","sourceRoot":"","sources":["../../../src/introspection/parsers/statusNormalizer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/** Normalized status values used across introspection results */
|
|
2
2
|
export declare const STATUS: {
|
|
3
3
|
readonly Complete: "complete";
|
|
4
|
-
readonly InProgress: "
|
|
5
|
-
readonly NotStarted: "
|
|
4
|
+
readonly InProgress: "in_progress";
|
|
5
|
+
readonly NotStarted: "not_started";
|
|
6
6
|
readonly Deprecated: "deprecated";
|
|
7
7
|
readonly Deferred: "deferred";
|
|
8
8
|
};
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/** Normalized status values used across introspection results */
|
|
2
2
|
export const STATUS = {
|
|
3
3
|
Complete: 'complete',
|
|
4
|
-
InProgress: '
|
|
5
|
-
NotStarted: '
|
|
4
|
+
InProgress: 'in_progress',
|
|
5
|
+
NotStarted: 'not_started',
|
|
6
6
|
Deprecated: 'deprecated',
|
|
7
7
|
Deferred: 'deferred',
|
|
8
8
|
};
|
|
@@ -5,8 +5,9 @@ import type { FixLogEntry } from '../types.js';
|
|
|
5
5
|
*/
|
|
6
6
|
export declare function updateCheckbox(filePath: string, lineIndex: number, checked: boolean): Promise<FixLogEntry>;
|
|
7
7
|
/**
|
|
8
|
-
* Update a YAML frontmatter field value in a markdown file
|
|
9
|
-
*
|
|
8
|
+
* Update a YAML frontmatter field value in a markdown file, and stamp
|
|
9
|
+
* `dateUpdated` with the write date (unless `key` itself is `dateUpdated`,
|
|
10
|
+
* in which case the caller's write is the stamp and no double-write occurs).
|
|
10
11
|
*/
|
|
11
|
-
export declare function updateFrontmatterField(filePath: string, key: string, value: string): Promise<FixLogEntry>;
|
|
12
|
+
export declare function updateFrontmatterField(filePath: string, key: string, value: string, dateUpdated: string): Promise<FixLogEntry>;
|
|
12
13
|
//# sourceMappingURL=markdownWriter.d.ts.map
|
|
@@ -1 +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;
|
|
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;AAoED;;;;GAIG;AACH,wBAAsB,sBAAsB,CAC1C,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,WAAW,CAAC,CA4BtB"}
|
|
@@ -33,26 +33,26 @@ export async function updateCheckbox(filePath, lineIndex, checked) {
|
|
|
33
33
|
};
|
|
34
34
|
}
|
|
35
35
|
/**
|
|
36
|
-
*
|
|
37
|
-
*
|
|
36
|
+
* Locate the closing `---` of a YAML frontmatter block.
|
|
37
|
+
* Throws if the file has no opening or closing delimiter.
|
|
38
38
|
*/
|
|
39
|
-
|
|
40
|
-
const content = await readFile(filePath, 'utf-8');
|
|
41
|
-
const lines = content.split('\n');
|
|
39
|
+
function findFrontmatterBounds(lines, filePath) {
|
|
42
40
|
if (lines.length === 0 || lines[0].trim() !== '---') {
|
|
43
41
|
throw new Error(`File does not contain YAML frontmatter: ${filePath}`);
|
|
44
42
|
}
|
|
45
|
-
let closingIndex = -1;
|
|
46
43
|
for (let i = 1; i < lines.length; i++) {
|
|
47
44
|
if (lines[i].trim() === '---') {
|
|
48
|
-
|
|
49
|
-
break;
|
|
45
|
+
return i;
|
|
50
46
|
}
|
|
51
47
|
}
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
48
|
+
throw new Error(`Frontmatter not closed in: ${filePath}`);
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Replace a key's value within the frontmatter bounds, inserting it before
|
|
52
|
+
* the closing `---` if absent. Mutates `lines` in place and returns the
|
|
53
|
+
* previous value (empty string if the key was inserted new).
|
|
54
|
+
*/
|
|
55
|
+
function setFrontmatterField(lines, closingIndex, key, value) {
|
|
56
56
|
let keyLineIndex = -1;
|
|
57
57
|
let beforeValue = '';
|
|
58
58
|
for (let i = 1; i < closingIndex; i++) {
|
|
@@ -76,27 +76,35 @@ export async function updateFrontmatterField(filePath, key, value) {
|
|
|
76
76
|
if (keyLineIndex === -1) {
|
|
77
77
|
// Key doesn't exist — insert before closing ---
|
|
78
78
|
lines.splice(closingIndex, 0, `${key}: ${value}`);
|
|
79
|
-
|
|
80
|
-
return {
|
|
81
|
-
rule: '',
|
|
82
|
-
action: 'update-frontmatter',
|
|
83
|
-
filePath,
|
|
84
|
-
field: key,
|
|
85
|
-
before: '',
|
|
86
|
-
after: value,
|
|
87
|
-
};
|
|
79
|
+
return { before: '', closingIndex: closingIndex + 1 };
|
|
88
80
|
}
|
|
89
81
|
// Replace the value, preserving the key and any leading whitespace
|
|
90
82
|
const originalLine = lines[keyLineIndex];
|
|
91
83
|
const colonIdx = originalLine.indexOf(':');
|
|
92
84
|
lines[keyLineIndex] = originalLine.slice(0, colonIdx + 1) + ' ' + value;
|
|
85
|
+
return { before: beforeValue, closingIndex };
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Update a YAML frontmatter field value in a markdown file, and stamp
|
|
89
|
+
* `dateUpdated` with the write date (unless `key` itself is `dateUpdated`,
|
|
90
|
+
* in which case the caller's write is the stamp and no double-write occurs).
|
|
91
|
+
*/
|
|
92
|
+
export async function updateFrontmatterField(filePath, key, value, dateUpdated) {
|
|
93
|
+
const content = await readFile(filePath, 'utf-8');
|
|
94
|
+
const lines = content.split('\n');
|
|
95
|
+
let closingIndex = findFrontmatterBounds(lines, filePath);
|
|
96
|
+
const { before, closingIndex: closingIndexAfterField } = setFrontmatterField(lines, closingIndex, key, value);
|
|
97
|
+
closingIndex = closingIndexAfterField;
|
|
98
|
+
if (key !== 'dateUpdated') {
|
|
99
|
+
setFrontmatterField(lines, closingIndex, 'dateUpdated', dateUpdated);
|
|
100
|
+
}
|
|
93
101
|
await writeFile(filePath, lines.join('\n'), 'utf-8');
|
|
94
102
|
return {
|
|
95
103
|
rule: '',
|
|
96
104
|
action: 'update-frontmatter',
|
|
97
105
|
filePath,
|
|
98
106
|
field: key,
|
|
99
|
-
before
|
|
107
|
+
before,
|
|
100
108
|
after: value,
|
|
101
109
|
};
|
|
102
110
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdownWriter.js","sourceRoot":"","sources":["../../../src/introspection/writers/markdownWriter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAGvD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,QAAgB,EAChB,SAAiB,EACjB,OAAgB;IAEhB,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAClD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAElC,IAAI,SAAS,GAAG,CAAC,IAAI,SAAS,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CAAC,cAAc,SAAS,2BAA2B,KAAK,CAAC,MAAM,SAAS,CAAC,CAAC;IAC3F,CAAC;IAED,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC;IAC9B,MAAM,gBAAgB,GAAG,OAAO,CAAC;IACjC,MAAM,cAAc,GAAG,QAAQ,CAAC;IAEhC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/D,MAAM,IAAI,KAAK,CAAC,QAAQ,SAAS,0CAA0C,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC7F,CAAC;IAED,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;IAC3D,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;IAEtC,IAAI,OAAO,EAAE,CAAC;QACZ,KAAK,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;IAC3D,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IACzD,CAAC;IAED,MAAM,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;IAErD,OAAO;QACL,IAAI,EAAE,EAAE;QACR,MAAM,EAAE,iBAAiB;QACzB,QAAQ;QACR,MAAM;QACN,KAAK;KACN,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,
|
|
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
|
@@ -7,6 +7,7 @@ export * from './config/index.js';
|
|
|
7
7
|
export * from './guides/index.js';
|
|
8
8
|
export { resolveFileByIndex, resolveArtifactPath, deriveArtifactStem, resolveSlicePlanPathByIndex } from './schema/resolveFileByIndex.js';
|
|
9
9
|
export { normalizeArtifactValue } from './schema/normalizeArtifactValue.js';
|
|
10
|
+
export { validateFrontmatterFiles, discoverAllDocuments, DOC_SCAN_DIRS, type FrontmatterFileValidationResult, } from './schema/frontmatterFileValidator.js';
|
|
10
11
|
export { ArtifactIntrospector, resolveInitiativePlanPath } from './introspection/ArtifactIntrospector.js';
|
|
11
12
|
export { WorkflowNavigator, extractSliceIndex } from './introspection/WorkflowNavigator.js';
|
|
12
13
|
export { parseFrontmatter } from './introspection/parsers/frontmatterParser.js';
|
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,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAGhG,cAAc,oBAAoB,CAAC;AAGnC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,mBAAmB,CAAC;AAGlC,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,2BAA2B,EAAE,MAAM,gCAAgC,CAAC;AAC1I,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,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,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAGhG,cAAc,oBAAoB,CAAC;AAGnC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,mBAAmB,CAAC;AAGlC,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,2BAA2B,EAAE,MAAM,gCAAgC,CAAC;AAC1I,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACpB,aAAa,EACb,KAAK,+BAA+B,GACrC,MAAM,sCAAsC,CAAC;AAG9C,OAAO,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,MAAM,yCAAyC,CAAC;AAC1G,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,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AACvG,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;AAGnG,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAG5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAGtD,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAGhE,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC"}
|
package/dist/node.js
CHANGED
|
@@ -14,6 +14,7 @@ export * from './guides/index.js';
|
|
|
14
14
|
// Schema — fs-dependent helpers (index-based file resolution)
|
|
15
15
|
export { resolveFileByIndex, resolveArtifactPath, deriveArtifactStem, resolveSlicePlanPathByIndex } from './schema/resolveFileByIndex.js';
|
|
16
16
|
export { normalizeArtifactValue } from './schema/normalizeArtifactValue.js';
|
|
17
|
+
export { validateFrontmatterFiles, discoverAllDocuments, DOC_SCAN_DIRS, } from './schema/frontmatterFileValidator.js';
|
|
17
18
|
// Introspection — artifact parsing and document detection (fs dependent)
|
|
18
19
|
export { ArtifactIntrospector, resolveInitiativePlanPath } from './introspection/ArtifactIntrospector.js';
|
|
19
20
|
export { WorkflowNavigator, extractSliceIndex } from './introspection/WorkflowNavigator.js';
|
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,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAEhG,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,2BAA2B,EAAE,MAAM,gCAAgC,CAAC;AAC1I,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,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,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAEhG,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,2BAA2B,EAAE,MAAM,gCAAgC,CAAC;AAC1I,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACpB,aAAa,GAEd,MAAM,sCAAsC,CAAC;AAE9C,yEAAyE;AACzE,OAAO,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,MAAM,yCAAyC,CAAC;AAC1G,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,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AACvG,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;AAEnG,2EAA2E;AAC3E,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAE5D,+DAA+D;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAEtD,4DAA4D;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEhE,2EAA2E;AAC3E,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { type FrontmatterFinding } from './frontmatterSchema.js';
|
|
2
|
+
/** Directories under project-documents/user/ to scan for methodology documents. */
|
|
3
|
+
export declare const DOC_SCAN_DIRS: string[];
|
|
4
|
+
export interface FrontmatterFileValidationResult {
|
|
5
|
+
findings: FrontmatterFinding[];
|
|
6
|
+
filesChecked: number;
|
|
7
|
+
}
|
|
8
|
+
/** Discover all .md documents across the methodology scan directories. */
|
|
9
|
+
export declare function discoverAllDocuments(projectPath: string): Promise<string[]>;
|
|
10
|
+
/**
|
|
11
|
+
* Validate frontmatter across a project's methodology documents.
|
|
12
|
+
*
|
|
13
|
+
* No paths: walks the six scan directories under project-documents/user/,
|
|
14
|
+
* exactly as `cf check` Rule 12 does.
|
|
15
|
+
* Explicit paths: kept only if they resolve to an existing .md file inside
|
|
16
|
+
* the document root (project-documents/user/); everything else is silently
|
|
17
|
+
* skipped.
|
|
18
|
+
* Files whose frontmatter is absent or unparseable are skipped (matching
|
|
19
|
+
* Rule 12) and are not counted in filesChecked.
|
|
20
|
+
*/
|
|
21
|
+
export declare function validateFrontmatterFiles(projectPath: string, paths?: string[], options?: {
|
|
22
|
+
projectName?: string;
|
|
23
|
+
}): Promise<FrontmatterFileValidationResult>;
|
|
24
|
+
//# sourceMappingURL=frontmatterFileValidator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frontmatterFileValidator.d.ts","sourceRoot":"","sources":["../../src/schema/frontmatterFileValidator.ts"],"names":[],"mappings":"AAGA,OAAO,EAAuB,KAAK,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAGtF,mFAAmF;AACnF,eAAO,MAAM,aAAa,UAOzB,CAAC;AAEF,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,EAAE,kBAAkB,EAAE,CAAC;IAC/B,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,0EAA0E;AAC1E,wBAAsB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAmBjF;AA0BD;;;;;;;;;;GAUG;AACH,wBAAsB,wBAAwB,CAC5C,WAAW,EAAE,MAAM,EACnB,KAAK,CAAC,EAAE,MAAM,EAAE,EAChB,OAAO,CAAC,EAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GACjC,OAAO,CAAC,+BAA+B,CAAC,CAkB1C"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { join, resolve, relative, isAbsolute } from 'node:path';
|
|
2
|
+
import { readdir } from 'node:fs/promises';
|
|
3
|
+
import { existsSync } from 'node:fs';
|
|
4
|
+
import { validateFrontmatter } from './frontmatterSchema.js';
|
|
5
|
+
import { parseFrontmatter } from '../introspection/parsers/frontmatterParser.js';
|
|
6
|
+
/** Directories under project-documents/user/ to scan for methodology documents. */
|
|
7
|
+
export const DOC_SCAN_DIRS = [
|
|
8
|
+
'architecture',
|
|
9
|
+
'slices',
|
|
10
|
+
'tasks',
|
|
11
|
+
'project-guides',
|
|
12
|
+
'reviews',
|
|
13
|
+
'analysis',
|
|
14
|
+
];
|
|
15
|
+
/** Discover all .md documents across the methodology scan directories. */
|
|
16
|
+
export async function discoverAllDocuments(projectPath) {
|
|
17
|
+
const userDir = join(projectPath, 'project-documents/user');
|
|
18
|
+
const allPaths = [];
|
|
19
|
+
for (const subdir of DOC_SCAN_DIRS) {
|
|
20
|
+
const dir = join(userDir, subdir);
|
|
21
|
+
try {
|
|
22
|
+
const files = await readdir(dir);
|
|
23
|
+
for (const f of files) {
|
|
24
|
+
if (f.endsWith('.md')) {
|
|
25
|
+
allPaths.push(join(dir, f));
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
// Directory may not exist — skip
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return allPaths;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Resolve an explicit path list to the in-root, existing .md files it
|
|
37
|
+
* contains. Everything else — out-of-root, non-.md, nonexistent — is
|
|
38
|
+
* silently skipped (a staged-file list legitimately contains deletions).
|
|
39
|
+
* Containment is checked against the document root, not the scan-dir list,
|
|
40
|
+
* so a file under e.g. user/notes/ is kept even though the default walk
|
|
41
|
+
* would not visit it.
|
|
42
|
+
*/
|
|
43
|
+
function resolveExplicitPaths(paths, documentRoot) {
|
|
44
|
+
const resolvedRoot = resolve(documentRoot);
|
|
45
|
+
const kept = [];
|
|
46
|
+
for (const p of paths) {
|
|
47
|
+
if (!p.endsWith('.md'))
|
|
48
|
+
continue;
|
|
49
|
+
const absolute = isAbsolute(p) ? p : resolve(process.cwd(), p);
|
|
50
|
+
const rel = relative(resolvedRoot, absolute);
|
|
51
|
+
if (rel.startsWith('..') || isAbsolute(rel))
|
|
52
|
+
continue;
|
|
53
|
+
if (!existsSync(absolute))
|
|
54
|
+
continue;
|
|
55
|
+
kept.push(absolute);
|
|
56
|
+
}
|
|
57
|
+
return kept;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Validate frontmatter across a project's methodology documents.
|
|
61
|
+
*
|
|
62
|
+
* No paths: walks the six scan directories under project-documents/user/,
|
|
63
|
+
* exactly as `cf check` Rule 12 does.
|
|
64
|
+
* Explicit paths: kept only if they resolve to an existing .md file inside
|
|
65
|
+
* the document root (project-documents/user/); everything else is silently
|
|
66
|
+
* skipped.
|
|
67
|
+
* Files whose frontmatter is absent or unparseable are skipped (matching
|
|
68
|
+
* Rule 12) and are not counted in filesChecked.
|
|
69
|
+
*/
|
|
70
|
+
export async function validateFrontmatterFiles(projectPath, paths, options) {
|
|
71
|
+
const documentRoot = join(projectPath, 'project-documents/user');
|
|
72
|
+
const documents = paths
|
|
73
|
+
? resolveExplicitPaths(paths, documentRoot)
|
|
74
|
+
: await discoverAllDocuments(projectPath);
|
|
75
|
+
const findings = [];
|
|
76
|
+
let filesChecked = 0;
|
|
77
|
+
for (const docPath of documents) {
|
|
78
|
+
const fm = await parseFrontmatter(docPath);
|
|
79
|
+
if (!fm.found)
|
|
80
|
+
continue;
|
|
81
|
+
filesChecked++;
|
|
82
|
+
findings.push(...validateFrontmatter(docPath, fm.data, { projectName: options?.projectName }));
|
|
83
|
+
}
|
|
84
|
+
return { findings, filesChecked };
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=frontmatterFileValidator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frontmatterFileValidator.js","sourceRoot":"","sources":["../../src/schema/frontmatterFileValidator.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,7 +26,7 @@ export interface FrontmatterFinding {
|
|
|
26
26
|
};
|
|
27
27
|
}
|
|
28
28
|
/** Canonical valid status values across all docTypes. */
|
|
29
|
-
export declare const VALID_STATUSES:
|
|
29
|
+
export declare const VALID_STATUSES: ("complete" | "in_progress" | "not_started" | "deprecated" | "deferred")[];
|
|
30
30
|
/** Per-docType frontmatter schemas — required fields only. */
|
|
31
31
|
export declare const FRONTMATTER_SCHEMAS: Record<string, DocTypeSchema>;
|
|
32
32
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frontmatterSchema.d.ts","sourceRoot":"","sources":["../../src/schema/frontmatterSchema.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"frontmatterSchema.d.ts","sourceRoot":"","sources":["../../src/schema/frontmatterSchema.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,8DAA8D;AAC9D,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,OAAO,CAAC;IAClB,+CAA+C;IAC/C,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,iDAAiD;AACjD,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;CAC7C;AAED,oEAAoE;AACpE,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,SAAS,GAAG,OAAO,CAAC;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CAC5D;AAED,yDAAyD;AACzD,eAAO,MAAM,cAAc,4EAAwB,CAAC;AAEpD,8DAA8D;AAC9D,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CA2G7D,CAAC;AAgBF;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAKpE;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAuB5E;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC5B,OAAO,CAAC,EAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GACjC,kBAAkB,EAAE,CA+FtB"}
|
|
@@ -3,15 +3,10 @@
|
|
|
3
3
|
* Maps each docType to its required YAML frontmatter fields.
|
|
4
4
|
* Source of truth derived from file-naming-conventions.md.
|
|
5
5
|
*/
|
|
6
|
-
import {
|
|
6
|
+
import { STATUS } from '../introspection/types.js';
|
|
7
|
+
import { suggestStatus } from '../introspection/parsers/statusNormalizer.js';
|
|
7
8
|
/** Canonical valid status values across all docTypes. */
|
|
8
|
-
export const VALID_STATUSES =
|
|
9
|
-
'not_started',
|
|
10
|
-
'in_progress',
|
|
11
|
-
'complete',
|
|
12
|
-
'deferred',
|
|
13
|
-
'deprecated',
|
|
14
|
-
];
|
|
9
|
+
export const VALID_STATUSES = Object.values(STATUS);
|
|
15
10
|
/** Per-docType frontmatter schemas — required fields only. */
|
|
16
11
|
export const FRONTMATTER_SCHEMAS = {
|
|
17
12
|
concept: {
|
|
@@ -96,6 +91,30 @@ export const FRONTMATTER_SCHEMAS = {
|
|
|
96
91
|
dateUpdated: { required: true },
|
|
97
92
|
},
|
|
98
93
|
},
|
|
94
|
+
// Squadron machine-artifact docTypes (#73): append-only records of a moment
|
|
95
|
+
// with no lifecycle, so no `status` and no `project`. `dateUpdated` is
|
|
96
|
+
// deliberately NOT required — a single-file validator has no evidence an
|
|
97
|
+
// edit occurred after creation, and requiring the field would make the
|
|
98
|
+
// existing backfill (below) manufacture a false claim by copying
|
|
99
|
+
// dateCreated into it. Do not "fix" this by adding dateUpdated here.
|
|
100
|
+
'review-resolution': {
|
|
101
|
+
fields: {
|
|
102
|
+
docType: { required: true, values: ['review-resolution'] },
|
|
103
|
+
dateCreated: { required: true },
|
|
104
|
+
},
|
|
105
|
+
},
|
|
106
|
+
'gate-evidence': {
|
|
107
|
+
fields: {
|
|
108
|
+
docType: { required: true, values: ['gate-evidence'] },
|
|
109
|
+
dateCreated: { required: true },
|
|
110
|
+
},
|
|
111
|
+
},
|
|
112
|
+
devlog: {
|
|
113
|
+
fields: {
|
|
114
|
+
docType: { required: true, values: ['devlog'] },
|
|
115
|
+
dateCreated: { required: true },
|
|
116
|
+
},
|
|
117
|
+
},
|
|
99
118
|
};
|
|
100
119
|
/** Map filename segment (from NNN-segment.name.md) to docType. */
|
|
101
120
|
const FILENAME_SEGMENT_TO_DOCTYPE = {
|
|
@@ -184,7 +203,7 @@ export function validateFrontmatter(filePath, data, options) {
|
|
|
184
203
|
// Determine if we can auto-fix this field
|
|
185
204
|
let fixValue;
|
|
186
205
|
if (field === 'status') {
|
|
187
|
-
fixValue =
|
|
206
|
+
fixValue = STATUS.NotStarted;
|
|
188
207
|
}
|
|
189
208
|
else if (field === 'dateUpdated' && data.dateCreated && String(data.dateCreated).trim() !== '') {
|
|
190
209
|
fixValue = String(data.dateCreated).trim();
|
|
@@ -218,22 +237,27 @@ export function validateFrontmatter(filePath, data, options) {
|
|
|
218
237
|
if (value === undefined || value === null || String(value).trim() === '')
|
|
219
238
|
continue;
|
|
220
239
|
const normalizedValue = String(value).trim();
|
|
221
|
-
//
|
|
222
|
-
//
|
|
223
|
-
//
|
|
224
|
-
//
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
findings.push({
|
|
240
|
+
// Validation is strict: compare the value as written against def.values directly.
|
|
241
|
+
// For status specifically, this means only the canonical VALID_STATUSES spellings
|
|
242
|
+
// pass — historical aliases like 'in-progress' are rejected here even though
|
|
243
|
+
// normalizeStatus() (used elsewhere, e.g. cf list/status) still reads them leniently.
|
|
244
|
+
// The two are intentionally asymmetric: read leniently, validate strictly. When the
|
|
245
|
+
// intended canonical value is recoverable (alias or close typo), the finding carries
|
|
246
|
+
// a fixAction so `cf check --fix` migrates the document instead of stranding it.
|
|
247
|
+
if (!def.values.includes(normalizedValue)) {
|
|
248
|
+
const suggestion = field === 'status' ? suggestStatus(normalizedValue) : undefined;
|
|
249
|
+
const finding = {
|
|
232
250
|
rule: 'frontmatter-schema',
|
|
233
251
|
severity: 'warning',
|
|
234
252
|
filePath,
|
|
235
|
-
description:
|
|
236
|
-
|
|
253
|
+
description: suggestion
|
|
254
|
+
? `Invalid value '${normalizedValue}' for field '${field}' on docType '${data.docType}' (expected: ${def.values.join(', ')}; will fix to '${suggestion}')`
|
|
255
|
+
: `Invalid value '${normalizedValue}' for field '${field}' on docType '${data.docType}' (expected: ${def.values.join(', ')})`,
|
|
256
|
+
};
|
|
257
|
+
if (suggestion) {
|
|
258
|
+
finding.fixAction = { type: 'update-frontmatter', field, value: suggestion };
|
|
259
|
+
}
|
|
260
|
+
findings.push(finding);
|
|
237
261
|
}
|
|
238
262
|
}
|
|
239
263
|
return findings;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frontmatterSchema.js","sourceRoot":"","sources":["../../src/schema/frontmatterSchema.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"frontmatterSchema.js","sourceRoot":"","sources":["../../src/schema/frontmatterSchema.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,9 +3,10 @@ import type { ProjectData } from '../types/index.js';
|
|
|
3
3
|
export declare function applyWorktreeOverlay(project: ProjectData, worktreeId: string): ProjectData;
|
|
4
4
|
/**
|
|
5
5
|
* Get the index range for filtering, if applicable.
|
|
6
|
-
* Returns
|
|
7
|
-
*
|
|
8
|
-
*
|
|
6
|
+
* Returns undefined (no filtering) when no worktreeId, no worktrees array,
|
|
7
|
+
* worktree not found, or only one worktree is configured — range filtering
|
|
8
|
+
* exists to isolate multiple worktrees from each other, so a lone worktree
|
|
9
|
+
* has nothing to isolate and filtering would only hide the user's own work.
|
|
9
10
|
*/
|
|
10
11
|
export declare function getWorktreeIndexRange(project: ProjectData, worktreeId?: string): [number, number] | undefined;
|
|
11
12
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worktree-overlay.d.ts","sourceRoot":"","sources":["../../src/utils/worktree-overlay.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,0DAA0D;AAC1D,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,GAAG,WAAW,CAc1F;AAED
|
|
1
|
+
{"version":3,"file":"worktree-overlay.d.ts","sourceRoot":"","sources":["../../src/utils/worktree-overlay.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,0DAA0D;AAC1D,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,GAAG,WAAW,CAc1F;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,WAAW,EACpB,UAAU,CAAC,EAAE,MAAM,GAClB,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAM9B;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,WAAW,EACpB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAIT;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,MAAM,EACb,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GACvB,OAAO,CAGT"}
|
|
@@ -17,13 +17,16 @@ export function applyWorktreeOverlay(project, worktreeId) {
|
|
|
17
17
|
}
|
|
18
18
|
/**
|
|
19
19
|
* Get the index range for filtering, if applicable.
|
|
20
|
-
* Returns
|
|
21
|
-
*
|
|
22
|
-
*
|
|
20
|
+
* Returns undefined (no filtering) when no worktreeId, no worktrees array,
|
|
21
|
+
* worktree not found, or only one worktree is configured — range filtering
|
|
22
|
+
* exists to isolate multiple worktrees from each other, so a lone worktree
|
|
23
|
+
* has nothing to isolate and filtering would only hide the user's own work.
|
|
23
24
|
*/
|
|
24
25
|
export function getWorktreeIndexRange(project, worktreeId) {
|
|
25
26
|
if (!worktreeId || !project.worktrees)
|
|
26
27
|
return undefined;
|
|
28
|
+
if (project.worktrees.length === 1)
|
|
29
|
+
return undefined;
|
|
27
30
|
const wt = project.worktrees.find((w) => w.id === worktreeId);
|
|
28
31
|
if (!wt)
|
|
29
32
|
return undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worktree-overlay.js","sourceRoot":"","sources":["../../src/utils/worktree-overlay.ts"],"names":[],"mappings":"AAEA,0DAA0D;AAC1D,MAAM,UAAU,oBAAoB,CAAC,OAAoB,EAAE,UAAkB;IAC3E,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,CAAC;IACtE,IAAI,CAAC,EAAE;QAAE,OAAO,OAAO,CAAC;IACxB,OAAO;QACL,GAAG,OAAO;QACV,GAAG,CAAC,EAAE,CAAC,YAAY,IAAI,EAAE,WAAW,EAAE,EAAE,CAAC,YAAY,EAAE,CAAC;QACxD,gBAAgB,EAAE,EAAE,CAAC,gBAAgB;QACrC,WAAW,EAAE,EAAE,CAAC,WAAW;QAC3B,QAAQ,EAAE,EAAE,CAAC,QAAQ;QACrB,QAAQ,EAAE,EAAE,CAAC,OAAO;QACpB,aAAa,EAAE,EAAE,CAAC,SAAS;QAC3B,SAAS,EAAE,EAAE,CAAC,WAAW;QACzB,SAAS,EAAE,EAAE,CAAC,cAAc;KAC7B,CAAC;AACJ,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"worktree-overlay.js","sourceRoot":"","sources":["../../src/utils/worktree-overlay.ts"],"names":[],"mappings":"AAEA,0DAA0D;AAC1D,MAAM,UAAU,oBAAoB,CAAC,OAAoB,EAAE,UAAkB;IAC3E,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,CAAC;IACtE,IAAI,CAAC,EAAE;QAAE,OAAO,OAAO,CAAC;IACxB,OAAO;QACL,GAAG,OAAO;QACV,GAAG,CAAC,EAAE,CAAC,YAAY,IAAI,EAAE,WAAW,EAAE,EAAE,CAAC,YAAY,EAAE,CAAC;QACxD,gBAAgB,EAAE,EAAE,CAAC,gBAAgB;QACrC,WAAW,EAAE,EAAE,CAAC,WAAW;QAC3B,QAAQ,EAAE,EAAE,CAAC,QAAQ;QACrB,QAAQ,EAAE,EAAE,CAAC,OAAO;QACpB,aAAa,EAAE,EAAE,CAAC,SAAS;QAC3B,SAAS,EAAE,EAAE,CAAC,WAAW;QACzB,SAAS,EAAE,EAAE,CAAC,cAAc;KAC7B,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CACnC,OAAoB,EACpB,UAAmB;IAEnB,IAAI,CAAC,UAAU,IAAI,CAAC,OAAO,CAAC,SAAS;QAAE,OAAO,SAAS,CAAC;IACxD,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACrD,MAAM,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,CAAC;IAC9D,IAAI,CAAC,EAAE;QAAE,OAAO,SAAS,CAAC;IAC1B,OAAO,EAAE,CAAC,UAAU,CAAC;AACvB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CACtC,OAAoB,EACpB,UAAmB;IAEnB,IAAI,CAAC,UAAU,IAAI,CAAC,OAAO,CAAC,SAAS;QAAE,OAAO,KAAK,CAAC;IACpD,MAAM,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,CAAC;IAC9D,OAAO,EAAE,EAAE,aAAa,KAAK,IAAI,CAAC;AACpC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAC5B,KAAa,EACb,KAAwB;IAExB,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,OAAO,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;AAChD,CAAC"}
|
package/package.json
CHANGED