@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.
Files changed (35) hide show
  1. package/dist/introspection/ConsistencyChecker.d.ts +13 -6
  2. package/dist/introspection/ConsistencyChecker.d.ts.map +1 -1
  3. package/dist/introspection/ConsistencyChecker.js +41 -51
  4. package/dist/introspection/ConsistencyChecker.js.map +1 -1
  5. package/dist/introspection/WorkflowNavigator.d.ts +3 -2
  6. package/dist/introspection/WorkflowNavigator.d.ts.map +1 -1
  7. package/dist/introspection/WorkflowNavigator.js +4 -3
  8. package/dist/introspection/WorkflowNavigator.js.map +1 -1
  9. package/dist/introspection/parsers/statusNormalizer.d.ts +10 -0
  10. package/dist/introspection/parsers/statusNormalizer.d.ts.map +1 -1
  11. package/dist/introspection/parsers/statusNormalizer.js +43 -0
  12. package/dist/introspection/parsers/statusNormalizer.js.map +1 -1
  13. package/dist/introspection/types.d.ts +2 -2
  14. package/dist/introspection/types.js +2 -2
  15. package/dist/introspection/writers/markdownWriter.d.ts +4 -3
  16. package/dist/introspection/writers/markdownWriter.d.ts.map +1 -1
  17. package/dist/introspection/writers/markdownWriter.js +30 -22
  18. package/dist/introspection/writers/markdownWriter.js.map +1 -1
  19. package/dist/node.d.ts +1 -0
  20. package/dist/node.d.ts.map +1 -1
  21. package/dist/node.js +1 -0
  22. package/dist/node.js.map +1 -1
  23. package/dist/schema/frontmatterFileValidator.d.ts +24 -0
  24. package/dist/schema/frontmatterFileValidator.d.ts.map +1 -0
  25. package/dist/schema/frontmatterFileValidator.js +86 -0
  26. package/dist/schema/frontmatterFileValidator.js.map +1 -0
  27. package/dist/schema/frontmatterSchema.d.ts +1 -1
  28. package/dist/schema/frontmatterSchema.d.ts.map +1 -1
  29. package/dist/schema/frontmatterSchema.js +46 -22
  30. package/dist/schema/frontmatterSchema.js.map +1 -1
  31. package/dist/utils/worktree-overlay.d.ts +4 -3
  32. package/dist/utils/worktree-overlay.d.ts.map +1 -1
  33. package/dist/utils/worktree-overlay.js +6 -3
  34. package/dist/utils/worktree-overlay.js.map +1 -1
  35. 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: "in-progress";
5
- readonly NotStarted: "not-started";
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: 'in-progress',
5
- NotStarted: 'not-started',
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
- * Finds the key in the frontmatter block and replaces its value.
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;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,CAC1C,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,WAAW,CAAC,CAyEtB"}
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
- * Update a YAML frontmatter field value in a markdown file.
37
- * Finds the key in the frontmatter block and replaces its value.
36
+ * Locate the closing `---` of a YAML frontmatter block.
37
+ * Throws if the file has no opening or closing delimiter.
38
38
  */
39
- export async function updateFrontmatterField(filePath, key, value) {
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
- closingIndex = i;
49
- break;
45
+ return i;
50
46
  }
51
47
  }
52
- if (closingIndex === -1) {
53
- throw new Error(`Frontmatter not closed in: ${filePath}`);
54
- }
55
- // Find the key within frontmatter bounds
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
- await writeFile(filePath, lines.join('\n'), 'utf-8');
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: beforeValue,
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":"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"}
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';
@@ -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;AAG5E,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"}
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;AAE5E,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"}
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: readonly ["not_started", "in_progress", "complete", "deferred", "deprecated"];
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;AAIH,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,+EAMjB,CAAC;AAEX,8DAA8D;AAC9D,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAmF7D,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,CA2FtB"}
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 { normalizeStatus } from '../introspection/parsers/statusNormalizer.js';
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 = 'not_started';
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
- // For status field: delegate to the same alias set cf list arch uses (normalizeStatus),
222
- // so a status cf list arch would call "unreadable" also fails schema validation here.
223
- // normalizeStatus's canonical vocabulary (STATUS.*) is hyphenated (e.g. 'in-progress',
224
- // 'not-started'); VALID_STATUSES here is underscored translate before comparing.
225
- let effectiveValue = normalizedValue;
226
- if (field === 'status') {
227
- const normalized = normalizeStatus(effectiveValue);
228
- effectiveValue = normalized ? normalized.replace(/-/g, '_') : effectiveValue.replace(/[-\s]/g, '_');
229
- }
230
- if (!def.values.includes(effectiveValue)) {
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: `Invalid value '${normalizedValue}' for field '${field}' on docType '${data.docType}' (expected: ${def.values.join(', ')})`,
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,eAAe,EAAE,MAAM,8CAA8C,CAAC;AAuB/E,yDAAyD;AACzD,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,aAAa;IACb,aAAa;IACb,UAAU;IACV,UAAU;IACV,YAAY;CACJ,CAAC;AAEX,8DAA8D;AAC9D,MAAM,CAAC,MAAM,mBAAmB,GAAkC;IAChE,OAAO,EAAE;QACP,MAAM,EAAE;YACN,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,SAAS,CAAC,EAAE;YAChD,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC3B,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,GAAG,cAAc,CAAC,EAAE;YACvD,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC/B,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;SAChC;KACF;IACD,iBAAiB,EAAE;QACjB,MAAM,EAAE;YACN,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,iBAAiB,CAAC,EAAE;YACxD,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC3B,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,GAAG,cAAc,CAAC,EAAE;YACvD,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC/B,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;SAChC;KACF;IACD,YAAY,EAAE;QACZ,MAAM,EAAE;YACN,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,cAAc,CAAC,EAAE;YACrD,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC3B,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,GAAG,cAAc,CAAC,EAAE;YACvD,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC7B,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC7B,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC/B,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;SAChC;KACF;IACD,YAAY,EAAE;QACZ,MAAM,EAAE;YACN,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,YAAY,CAAC,EAAE;YACnD,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC3B,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,GAAG,cAAc,CAAC,EAAE;YACvD,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC/B,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;SAChC;KACF;IACD,cAAc,EAAE;QACd,MAAM,EAAE;YACN,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,cAAc,CAAC,EAAE;YACrD,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;YACzB,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC3B,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,GAAG,cAAc,CAAC,EAAE;YACvD,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC/B,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC/B,+EAA+E;YAC/E,+EAA+E;YAC/E,2EAA2E;YAC3E,sEAAsE;YACtE,sEAAsE;YACtE,MAAM,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE;SAC9C;KACF;IACD,KAAK,EAAE;QACL,MAAM,EAAE;YACN,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE;YAC9C,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;YACzB,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC3B,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,GAAG,cAAc,CAAC,EAAE;YACvD,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC/B,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;SAChC;KACF;IACD,MAAM,EAAE;QACN,MAAM,EAAE;YACN,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE;YAC/C,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC3B,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,GAAG,cAAc,CAAC,EAAE;YACvD,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC/B,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;SAChC;KACF;IACD,QAAQ,EAAE;QACR,MAAM,EAAE;YACN,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,UAAU,CAAC,EAAE;YACjD,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC3B,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,GAAG,cAAc,CAAC,EAAE;YACvD,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC/B,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;SAChC;KACF;CACF,CAAC;AAEF,kEAAkE;AAClE,MAAM,2BAA2B,GAA2B;IAC1D,IAAI,EAAE,cAAc;IACpB,MAAM,EAAE,YAAY;IACpB,KAAK,EAAE,cAAc;IACrB,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,QAAQ;IAChB,QAAQ,EAAE,UAAU;IACpB,OAAO,EAAE,SAAS;CACnB,CAAC;AAEF,yEAAyE;AACzE,MAAM,iBAAiB,GAAG,gFAAgF,CAAC;AAE3G;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,QAAgB;IACnD,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;IACjD,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC/C,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,OAAO,2BAA2B,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,IAAI,CAAC;AACrE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAAgB;IAClD,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;IACjD,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC/C,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IAEtB,MAAM,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC;IACvC,MAAM,QAAQ,GAA2B,EAAE,CAAC;IAC5C,MAAM,OAAO,GAAG,2BAA2B,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAEnE,IAAI,OAAO;QAAE,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC;IAExC,gFAAgF;IAChF,IAAI,OAAO,KAAK,cAAc,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACtD,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC;IACxB,CAAC;IAED,0DAA0D;IAC1D,IAAI,OAAO,KAAK,cAAc,EAAE,CAAC;QAC/B,QAAQ,CAAC,SAAS,GAAG,KAAK,CAAC;QAC3B,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC;IAC5B,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CACjC,QAAgB,EAChB,IAA4B,EAC5B,OAAkC;IAElC,MAAM,QAAQ,GAAyB,EAAE,CAAC;IAE1C,kCAAkC;IAClC,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAChD,MAAM,QAAQ,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QAChD,MAAM,OAAO,GAAuB;YAClC,IAAI,EAAE,oBAAoB;YAC1B,QAAQ,EAAE,SAAS;YACnB,QAAQ;YACR,WAAW,EAAE,QAAQ;gBACnB,CAAC,CAAC,gDAAgD,QAAQ,IAAI;gBAC9D,CAAC,CAAC,oCAAoC;SACzC,CAAC;QACF,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,CAAC,SAAS,GAAG,EAAE,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;QACxF,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,yDAAyD;IACzD,MAAM,MAAM,GAAG,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACjD,IAAI,CAAC,MAAM;QAAE,OAAO,QAAQ,CAAC;IAE7B,gCAAgC;IAChC,MAAM,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAC/C,KAAK,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QACzD,IAAI,KAAK,KAAK,SAAS;YAAE,SAAS,CAAC,gCAAgC;QACnE,IAAI,CAAC,GAAG,CAAC,QAAQ;YAAE,SAAS;QAE5B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACzE,0CAA0C;YAC1C,IAAI,QAA4B,CAAC;YACjC,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;gBACvB,QAAQ,GAAG,aAAa,CAAC;YAC3B,CAAC;iBAAM,IAAI,KAAK,KAAK,aAAa,IAAI,IAAI,CAAC,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;gBACjG,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC;YAC7C,CAAC;iBAAM,IAAI,KAAK,KAAK,SAAS,IAAI,OAAO,EAAE,WAAW,EAAE,CAAC;gBACvD,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC;YACjC,CAAC;iBAAM,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3B,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC7B,CAAC;YAED,MAAM,WAAW,GAAG,QAAQ;gBAC1B,CAAC,CAAC,2BAA2B,KAAK,kBAAkB,IAAI,CAAC,OAAO,iBAAiB,QAAQ,IAAI;gBAC7F,CAAC,CAAC,2BAA2B,KAAK,kBAAkB,IAAI,CAAC,OAAO,GAAG,CAAC;YAEtE,MAAM,OAAO,GAAuB;gBAClC,IAAI,EAAE,oBAAoB;gBAC1B,QAAQ,EAAE,SAAS;gBACnB,QAAQ;gBACR,WAAW;aACZ,CAAC;YACF,IAAI,QAAQ,EAAE,CAAC;gBACb,OAAO,CAAC,SAAS,GAAG,EAAE,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;YAC7E,CAAC;YACD,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAED,oDAAoD;IACpD,KAAK,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QACzD,IAAI,CAAC,GAAG,CAAC,MAAM;YAAE,SAAS;QAE1B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE;YAAE,SAAS;QAEnF,MAAM,eAAe,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;QAC7C,wFAAwF;QACxF,sFAAsF;QACtF,uFAAuF;QACvF,mFAAmF;QACnF,IAAI,cAAc,GAAG,eAAe,CAAC;QACrC,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;YACvB,MAAM,UAAU,GAAG,eAAe,CAAC,cAAc,CAAC,CAAC;YACnD,cAAc,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QACtG,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;YACzC,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,oBAAoB;gBAC1B,QAAQ,EAAE,SAAS;gBACnB,QAAQ;gBACR,WAAW,EAAE,kBAAkB,eAAe,gBAAgB,KAAK,iBAAiB,IAAI,CAAC,OAAO,gBAAgB,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;aACzI,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"frontmatterSchema.js","sourceRoot":"","sources":["../../src/schema/frontmatterSchema.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,8CAA8C,CAAC;AAuB7E,yDAAyD;AACzD,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAEpD,8DAA8D;AAC9D,MAAM,CAAC,MAAM,mBAAmB,GAAkC;IAChE,OAAO,EAAE;QACP,MAAM,EAAE;YACN,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,SAAS,CAAC,EAAE;YAChD,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC3B,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,GAAG,cAAc,CAAC,EAAE;YACvD,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC/B,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;SAChC;KACF;IACD,iBAAiB,EAAE;QACjB,MAAM,EAAE;YACN,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,iBAAiB,CAAC,EAAE;YACxD,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC3B,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,GAAG,cAAc,CAAC,EAAE;YACvD,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC/B,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;SAChC;KACF;IACD,YAAY,EAAE;QACZ,MAAM,EAAE;YACN,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,cAAc,CAAC,EAAE;YACrD,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC3B,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,GAAG,cAAc,CAAC,EAAE;YACvD,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC7B,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC7B,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC/B,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;SAChC;KACF;IACD,YAAY,EAAE;QACZ,MAAM,EAAE;YACN,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,YAAY,CAAC,EAAE;YACnD,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC3B,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,GAAG,cAAc,CAAC,EAAE;YACvD,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC/B,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;SAChC;KACF;IACD,cAAc,EAAE;QACd,MAAM,EAAE;YACN,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,cAAc,CAAC,EAAE;YACrD,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;YACzB,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC3B,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,GAAG,cAAc,CAAC,EAAE;YACvD,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC/B,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC/B,+EAA+E;YAC/E,+EAA+E;YAC/E,2EAA2E;YAC3E,sEAAsE;YACtE,sEAAsE;YACtE,MAAM,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE;SAC9C;KACF;IACD,KAAK,EAAE;QACL,MAAM,EAAE;YACN,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE;YAC9C,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;YACzB,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC3B,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,GAAG,cAAc,CAAC,EAAE;YACvD,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC/B,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;SAChC;KACF;IACD,MAAM,EAAE;QACN,MAAM,EAAE;YACN,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE;YAC/C,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC3B,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,GAAG,cAAc,CAAC,EAAE;YACvD,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC/B,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;SAChC;KACF;IACD,QAAQ,EAAE;QACR,MAAM,EAAE;YACN,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,UAAU,CAAC,EAAE;YACjD,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC3B,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,GAAG,cAAc,CAAC,EAAE;YACvD,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC/B,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;SAChC;KACF;IACD,4EAA4E;IAC5E,uEAAuE;IACvE,yEAAyE;IACzE,uEAAuE;IACvE,iEAAiE;IACjE,qEAAqE;IACrE,mBAAmB,EAAE;QACnB,MAAM,EAAE;YACN,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,mBAAmB,CAAC,EAAE;YAC1D,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;SAChC;KACF;IACD,eAAe,EAAE;QACf,MAAM,EAAE;YACN,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,eAAe,CAAC,EAAE;YACtD,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;SAChC;KACF;IACD,MAAM,EAAE;QACN,MAAM,EAAE;YACN,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE;YAC/C,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;SAChC;KACF;CACF,CAAC;AAEF,kEAAkE;AAClE,MAAM,2BAA2B,GAA2B;IAC1D,IAAI,EAAE,cAAc;IACpB,MAAM,EAAE,YAAY;IACpB,KAAK,EAAE,cAAc;IACrB,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,QAAQ;IAChB,QAAQ,EAAE,UAAU;IACpB,OAAO,EAAE,SAAS;CACnB,CAAC;AAEF,yEAAyE;AACzE,MAAM,iBAAiB,GAAG,gFAAgF,CAAC;AAE3G;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,QAAgB;IACnD,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;IACjD,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC/C,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,OAAO,2BAA2B,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,IAAI,CAAC;AACrE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAAgB;IAClD,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;IACjD,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC/C,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IAEtB,MAAM,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC;IACvC,MAAM,QAAQ,GAA2B,EAAE,CAAC;IAC5C,MAAM,OAAO,GAAG,2BAA2B,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAEnE,IAAI,OAAO;QAAE,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC;IAExC,gFAAgF;IAChF,IAAI,OAAO,KAAK,cAAc,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACtD,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC;IACxB,CAAC;IAED,0DAA0D;IAC1D,IAAI,OAAO,KAAK,cAAc,EAAE,CAAC;QAC/B,QAAQ,CAAC,SAAS,GAAG,KAAK,CAAC;QAC3B,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC;IAC5B,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CACjC,QAAgB,EAChB,IAA4B,EAC5B,OAAkC;IAElC,MAAM,QAAQ,GAAyB,EAAE,CAAC;IAE1C,kCAAkC;IAClC,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAChD,MAAM,QAAQ,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QAChD,MAAM,OAAO,GAAuB;YAClC,IAAI,EAAE,oBAAoB;YAC1B,QAAQ,EAAE,SAAS;YACnB,QAAQ;YACR,WAAW,EAAE,QAAQ;gBACnB,CAAC,CAAC,gDAAgD,QAAQ,IAAI;gBAC9D,CAAC,CAAC,oCAAoC;SACzC,CAAC;QACF,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,CAAC,SAAS,GAAG,EAAE,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;QACxF,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,yDAAyD;IACzD,MAAM,MAAM,GAAG,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACjD,IAAI,CAAC,MAAM;QAAE,OAAO,QAAQ,CAAC;IAE7B,gCAAgC;IAChC,MAAM,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAC/C,KAAK,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QACzD,IAAI,KAAK,KAAK,SAAS;YAAE,SAAS,CAAC,gCAAgC;QACnE,IAAI,CAAC,GAAG,CAAC,QAAQ;YAAE,SAAS;QAE5B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACzE,0CAA0C;YAC1C,IAAI,QAA4B,CAAC;YACjC,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;gBACvB,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC;YAC/B,CAAC;iBAAM,IAAI,KAAK,KAAK,aAAa,IAAI,IAAI,CAAC,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;gBACjG,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC;YAC7C,CAAC;iBAAM,IAAI,KAAK,KAAK,SAAS,IAAI,OAAO,EAAE,WAAW,EAAE,CAAC;gBACvD,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC;YACjC,CAAC;iBAAM,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3B,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC7B,CAAC;YAED,MAAM,WAAW,GAAG,QAAQ;gBAC1B,CAAC,CAAC,2BAA2B,KAAK,kBAAkB,IAAI,CAAC,OAAO,iBAAiB,QAAQ,IAAI;gBAC7F,CAAC,CAAC,2BAA2B,KAAK,kBAAkB,IAAI,CAAC,OAAO,GAAG,CAAC;YAEtE,MAAM,OAAO,GAAuB;gBAClC,IAAI,EAAE,oBAAoB;gBAC1B,QAAQ,EAAE,SAAS;gBACnB,QAAQ;gBACR,WAAW;aACZ,CAAC;YACF,IAAI,QAAQ,EAAE,CAAC;gBACb,OAAO,CAAC,SAAS,GAAG,EAAE,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;YAC7E,CAAC;YACD,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAED,oDAAoD;IACpD,KAAK,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QACzD,IAAI,CAAC,GAAG,CAAC,MAAM;YAAE,SAAS;QAE1B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE;YAAE,SAAS;QAEnF,MAAM,eAAe,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;QAC7C,kFAAkF;QAClF,kFAAkF;QAClF,6EAA6E;QAC7E,sFAAsF;QACtF,oFAAoF;QACpF,qFAAqF;QACrF,iFAAiF;QACjF,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;YAC1C,MAAM,UAAU,GAAG,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACnF,MAAM,OAAO,GAAuB;gBAClC,IAAI,EAAE,oBAAoB;gBAC1B,QAAQ,EAAE,SAAS;gBACnB,QAAQ;gBACR,WAAW,EAAE,UAAU;oBACrB,CAAC,CAAC,kBAAkB,eAAe,gBAAgB,KAAK,iBAAiB,IAAI,CAAC,OAAO,gBAAgB,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,UAAU,IAAI;oBAC1J,CAAC,CAAC,kBAAkB,eAAe,gBAAgB,KAAK,iBAAiB,IAAI,CAAC,OAAO,gBAAgB,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;aAChI,CAAC;YACF,IAAI,UAAU,EAAE,CAAC;gBACf,OAAO,CAAC,SAAS,GAAG,EAAE,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;YAC/E,CAAC;YACD,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -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 the worktree's indexRange for ALL worktrees (including default).
7
- * Returns undefined only when no worktreeId, no worktrees array, or
8
- * worktree not found (projects without worktrees no filtering).
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;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,WAAW,EACpB,UAAU,CAAC,EAAE,MAAM,GAClB,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAK9B;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"}
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 the worktree's indexRange for ALL worktrees (including default).
21
- * Returns undefined only when no worktreeId, no worktrees array, or
22
- * worktree not found (projects without worktrees no filtering).
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;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CACnC,OAAoB,EACpB,UAAmB;IAEnB,IAAI,CAAC,UAAU,IAAI,CAAC,OAAO,CAAC,SAAS;QAAE,OAAO,SAAS,CAAC;IACxD,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"}
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@context-forge/core",
3
- "version": "0.11.0",
3
+ "version": "0.12.0",
4
4
  "description": "Core context generation engine for Context Forge — template processing, project state, prompt assembly",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",