lens-content-processor 0.79.0 → 0.81.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 (137) hide show
  1. package/dist/authoring-markup.d.ts +22 -0
  2. package/dist/authoring-markup.js +24 -0
  3. package/dist/authoring-markup.js.map +1 -1
  4. package/dist/cache.d.ts +10 -0
  5. package/dist/cache.js +6 -5
  6. package/dist/cache.js.map +1 -1
  7. package/dist/cli-steps.d.ts +37 -0
  8. package/dist/cli-steps.js +80 -0
  9. package/dist/cli-steps.js.map +1 -0
  10. package/dist/cli.d.ts +7 -0
  11. package/dist/cli.js +52 -70
  12. package/dist/cli.js.map +1 -1
  13. package/dist/content-schema.js +4 -0
  14. package/dist/content-schema.js.map +1 -1
  15. package/dist/course-graph.d.ts +2 -2
  16. package/dist/course-graph.js +7 -2
  17. package/dist/course-graph.js.map +1 -1
  18. package/dist/criticmarkup-forms.d.ts +8 -6
  19. package/dist/criticmarkup-forms.js +22 -19
  20. package/dist/criticmarkup-forms.js.map +1 -1
  21. package/dist/dedupe-errors.d.ts +16 -0
  22. package/dist/dedupe-errors.js +23 -9
  23. package/dist/dedupe-errors.js.map +1 -1
  24. package/dist/dependency-cache.d.ts +15 -5
  25. package/dist/dependency-cache.js +33 -74
  26. package/dist/dependency-cache.js.map +1 -1
  27. package/dist/dropped.d.ts +114 -0
  28. package/dist/dropped.js +253 -0
  29. package/dist/dropped.js.map +1 -0
  30. package/dist/engine/assemble.d.ts +44 -0
  31. package/dist/engine/assemble.js +132 -0
  32. package/dist/engine/assemble.js.map +1 -0
  33. package/dist/engine/build.d.ts +8 -0
  34. package/dist/engine/build.js +558 -0
  35. package/dist/engine/build.js.map +1 -0
  36. package/dist/engine/file-facts.d.ts +26 -0
  37. package/dist/engine/file-facts.js +63 -0
  38. package/dist/engine/file-facts.js.map +1 -0
  39. package/dist/engine/git-source.d.ts +35 -0
  40. package/dist/engine/git-source.js +242 -0
  41. package/dist/engine/git-source.js.map +1 -0
  42. package/dist/engine/overlay.d.ts +43 -0
  43. package/dist/engine/overlay.js +167 -0
  44. package/dist/engine/overlay.js.map +1 -0
  45. package/dist/engine/protocol.d.ts +146 -0
  46. package/dist/engine/protocol.js +40 -0
  47. package/dist/engine/protocol.js.map +1 -0
  48. package/dist/engine/reader.d.ts +133 -0
  49. package/dist/engine/reader.js +298 -0
  50. package/dist/engine/reader.js.map +1 -0
  51. package/dist/engine/sources.d.ts +39 -0
  52. package/dist/engine/sources.js +137 -0
  53. package/dist/engine/sources.js.map +1 -0
  54. package/dist/engine/sqlite-store.d.ts +99 -0
  55. package/dist/engine/sqlite-store.js +452 -0
  56. package/dist/engine/sqlite-store.js.map +1 -0
  57. package/dist/engine/store.d.ts +85 -0
  58. package/dist/engine/store.js +31 -0
  59. package/dist/engine/store.js.map +1 -0
  60. package/dist/engine/tables.d.ts +15 -0
  61. package/dist/engine/tables.js +70 -0
  62. package/dist/engine/tables.js.map +1 -0
  63. package/dist/engine/units.d.ts +58 -0
  64. package/dist/engine/units.js +186 -0
  65. package/dist/engine/units.js.map +1 -0
  66. package/dist/engine/version.d.ts +6 -0
  67. package/dist/engine/version.js +21 -0
  68. package/dist/engine/version.js.map +1 -0
  69. package/dist/engine/worker.d.ts +1 -0
  70. package/dist/engine/worker.js +220 -0
  71. package/dist/engine/worker.js.map +1 -0
  72. package/dist/flattener/index.d.ts +34 -17
  73. package/dist/flattener/index.js +252 -115
  74. package/dist/flattener/index.js.map +1 -1
  75. package/dist/flattener/resolve-text-links.d.ts +15 -14
  76. package/dist/flattener/resolve-text-links.js +24 -25
  77. package/dist/flattener/resolve-text-links.js.map +1 -1
  78. package/dist/glossary.d.ts +2 -2
  79. package/dist/glossary.js.map +1 -1
  80. package/dist/index.d.ts +171 -2
  81. package/dist/index.js +883 -639
  82. package/dist/index.js.map +1 -1
  83. package/dist/markdown-parse.d.ts +6 -0
  84. package/dist/markdown-parse.js +14 -0
  85. package/dist/markdown-parse.js.map +1 -1
  86. package/dist/parser/learning-outcome.js +11 -2
  87. package/dist/parser/learning-outcome.js.map +1 -1
  88. package/dist/parser/lens.d.ts +7 -1
  89. package/dist/parser/lens.js +43 -9
  90. package/dist/parser/lens.js.map +1 -1
  91. package/dist/parser/meeting-doc.d.ts +2 -1
  92. package/dist/parser/meeting-doc.js +2 -1
  93. package/dist/parser/meeting-doc.js.map +1 -1
  94. package/dist/parser/module.d.ts +3 -1
  95. package/dist/parser/module.js +7 -5
  96. package/dist/parser/module.js.map +1 -1
  97. package/dist/parser/question-embeds.d.ts +4 -3
  98. package/dist/parser/question-embeds.js.map +1 -1
  99. package/dist/parser/response-segments.d.ts +4 -0
  100. package/dist/parser/response-segments.js +1 -1
  101. package/dist/parser/response-segments.js.map +1 -1
  102. package/dist/parser/sections.d.ts +10 -0
  103. package/dist/parser/sections.js +8 -3
  104. package/dist/parser/sections.js.map +1 -1
  105. package/dist/parser/widget.d.ts +2 -1
  106. package/dist/parser/widget.js.map +1 -1
  107. package/dist/parser/wikilink.d.ts +13 -3
  108. package/dist/parser/wikilink.js +55 -34
  109. package/dist/parser/wikilink.js.map +1 -1
  110. package/dist/reference-graph.d.ts +21 -3
  111. package/dist/reference-graph.js +35 -12
  112. package/dist/reference-graph.js.map +1 -1
  113. package/dist/same-page-links.d.ts +11 -1
  114. package/dist/same-page-links.js +9 -0
  115. package/dist/same-page-links.js.map +1 -1
  116. package/dist/skill-tree.d.ts +2 -1
  117. package/dist/skill-tree.js.map +1 -1
  118. package/dist/source-location.d.ts +0 -4
  119. package/dist/source-location.js +0 -43
  120. package/dist/source-location.js.map +1 -1
  121. package/dist/validator/card-module-membership.d.ts +17 -1
  122. package/dist/validator/card-module-membership.js +60 -56
  123. package/dist/validator/card-module-membership.js.map +1 -1
  124. package/dist/validator/criticmarkup.js +1 -1
  125. package/dist/validator/criticmarkup.js.map +1 -1
  126. package/dist/validator/field-typos.d.ts +1 -1
  127. package/dist/validator/field-typos.js +21 -21
  128. package/dist/validator/field-typos.js.map +1 -1
  129. package/dist/validator/output-integrity.d.ts +9 -5
  130. package/dist/validator/output-integrity.js +43 -45
  131. package/dist/validator/output-integrity.js.map +1 -1
  132. package/dist/validator/segment-fields.js +5 -8
  133. package/dist/validator/segment-fields.js.map +1 -1
  134. package/dist/validator/tier.d.ts +2 -2
  135. package/dist/validator/tier.js.map +1 -1
  136. package/dist/validator/uuid.d.ts +1 -1
  137. package/package.json +2 -1
@@ -1 +1 @@
1
- {"version":3,"file":"skill-tree.js","sourceRoot":"","sources":["../src/skill-tree.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skill-tree.js","sourceRoot":"","sources":["../src/skill-tree.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,2 @@
1
1
  export declare function attachSourceLine<T extends object>(value: T, line: number | undefined): T;
2
2
  export declare function getSourceLine(value: object): number | undefined;
3
- /** Deep-copy `value` with each attached source line as a reserved JSON key. */
4
- export declare function encodeSourceLines(value: unknown): unknown;
5
- /** Inverse of encodeSourceLines: strip the reserved key, re-attach the symbol. */
6
- export declare function decodeSourceLines(value: unknown): unknown;
@@ -14,47 +14,4 @@ export function attachSourceLine(value, line) {
14
14
  export function getSourceLine(value) {
15
15
  return value[SOURCE_LINE];
16
16
  }
17
- // Symbol-keyed properties vanish under JSON.stringify, so a value that goes
18
- // through any serializing boundary (the per-file result cache) must carry its
19
- // source lines as a reserved plain key instead, and re-attach them on load.
20
- // Encoding appends the key after all others and decoding strips it, so the
21
- // enumerable key order — which decides serialized output order — is unchanged.
22
- // Two limits, fine for every shape cached today but load-bearing if that
23
- // changes: a line attached to an ARRAY is not encoded (arrays cannot carry an
24
- // extra key), and a DATA key literally named like the reserved key would be
25
- // misread as provenance — impossible while cached values have fixed
26
- // code-defined keys, never author-controlled ones.
27
- const SOURCE_LINE_KEY = "__lensSourceLine";
28
- /** Deep-copy `value` with each attached source line as a reserved JSON key. */
29
- export function encodeSourceLines(value) {
30
- if (Array.isArray(value))
31
- return value.map(encodeSourceLines);
32
- if (value && typeof value === "object") {
33
- const out = {};
34
- for (const [k, v] of Object.entries(value))
35
- out[k] = encodeSourceLines(v);
36
- const line = getSourceLine(value);
37
- if (line !== undefined)
38
- out[SOURCE_LINE_KEY] = line;
39
- return out;
40
- }
41
- return value;
42
- }
43
- /** Inverse of encodeSourceLines: strip the reserved key, re-attach the symbol. */
44
- export function decodeSourceLines(value) {
45
- if (Array.isArray(value))
46
- return value.map(decodeSourceLines);
47
- if (value && typeof value === "object") {
48
- const out = {};
49
- let line;
50
- for (const [k, v] of Object.entries(value)) {
51
- if (k === SOURCE_LINE_KEY)
52
- line = v;
53
- else
54
- out[k] = decodeSourceLines(v);
55
- }
56
- return attachSourceLine(out, line);
57
- }
58
- return value;
59
- }
60
17
  //# sourceMappingURL=source-location.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"source-location.js","sourceRoot":"","sources":["../src/source-location.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,MAAM,WAAW,GAAG,MAAM,CAAC,0BAA0B,CAAC,CAAC;AAIvD,MAAM,UAAU,gBAAgB,CAC9B,KAAQ,EACR,IAAwB;IAExB,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,sEAAsE;QACtE,yEAAyE;QACzE,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,WAAW,EAAE;YACxC,KAAK,EAAE,IAAI;YACX,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;IACL,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,OAAQ,KAAuB,CAAC,WAAW,CAAC,CAAC;AAC/C,CAAC;AAED,4EAA4E;AAC5E,8EAA8E;AAC9E,4EAA4E;AAC5E,2EAA2E;AAC3E,+EAA+E;AAC/E,yEAAyE;AACzE,8EAA8E;AAC9E,4EAA4E;AAC5E,oEAAoE;AACpE,mDAAmD;AACnD,MAAM,eAAe,GAAG,kBAAkB,CAAC;AAE3C,+EAA+E;AAC/E,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAC9D,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvC,MAAM,GAAG,GAA4B,EAAE,CAAC;QACxC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,GAAG,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;QAC1E,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;QAClC,IAAI,IAAI,KAAK,SAAS;YAAE,GAAG,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC;QACpD,OAAO,GAAG,CAAC;IACb,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAC9D,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvC,MAAM,GAAG,GAA4B,EAAE,CAAC;QACxC,IAAI,IAAwB,CAAC;QAC7B,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3C,IAAI,CAAC,KAAK,eAAe;gBAAE,IAAI,GAAG,CAAW,CAAC;;gBACzC,GAAG,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;QACrC,CAAC;QACD,OAAO,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACrC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"source-location.js","sourceRoot":"","sources":["../src/source-location.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,MAAM,WAAW,GAAG,MAAM,CAAC,0BAA0B,CAAC,CAAC;AAIvD,MAAM,UAAU,gBAAgB,CAC9B,KAAQ,EACR,IAAwB;IAExB,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,sEAAsE;QACtE,yEAAyE;QACzE,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,WAAW,EAAE;YACxC,KAAK,EAAE,IAAI;YACX,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;IACL,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,OAAQ,KAAuB,CAAC,WAAW,CAAC,CAAC;AAC/C,CAAC"}
@@ -1,2 +1,18 @@
1
1
  import type { ContentError, FlattenedModule } from '../index.js';
2
- export declare function validateCardModuleMembership(modules: FlattenedModule[]): ContentError[];
2
+ /**
3
+ * The content ids of every module group, by group key (`parentSlug ?? slug`).
4
+ *
5
+ * A module that contains `# Submodule:` boundaries is split into multiple
6
+ * FlattenedModules at flatten time (slug `parent/sub-1`, `parent/sub-2`, …),
7
+ * each carrying its own sections. From an authoring perspective these are
8
+ * still one curriculum unit — a hidden Lens import in one submodule should
9
+ * satisfy a card link from a sibling submodule. Group siblings by their
10
+ * parent slug for the membership check.
11
+ */
12
+ export declare function cardModuleGroups(pages: Iterable<{
13
+ slug: string;
14
+ parentSlug?: string;
15
+ contentIds: string[];
16
+ }>): Map<string, string[]>;
17
+ /** Every card of one page that targets a lens outside the page's module group. */
18
+ export declare function checkCardModuleMembership(mod: FlattenedModule, groups: ReadonlyMap<string, string[]>): ContentError[];
@@ -1,69 +1,73 @@
1
1
  import { lensCardsIn } from './lens-cards.js';
2
- export function validateCardModuleMembership(modules) {
3
- const errors = [];
4
- // A module that contains `# Submodule:` boundaries is split into multiple
5
- // FlattenedModules at flatten time (slug `parent/sub-1`, `parent/sub-2`, …),
6
- // each carrying its own sections. From an authoring perspective these are
7
- // still one curriculum unit — a hidden Lens import in one submodule should
8
- // satisfy a card link from a sibling submodule. Group siblings by their
9
- // parent slug for the membership check.
2
+ /**
3
+ * The content ids of every module group, by group key (`parentSlug ?? slug`).
4
+ *
5
+ * A module that contains `# Submodule:` boundaries is split into multiple
6
+ * FlattenedModules at flatten time (slug `parent/sub-1`, `parent/sub-2`, …),
7
+ * each carrying its own sections. From an authoring perspective these are
8
+ * still one curriculum unit — a hidden Lens import in one submodule should
9
+ * satisfy a card link from a sibling submodule. Group siblings by their
10
+ * parent slug for the membership check.
11
+ */
12
+ export function cardModuleGroups(pages) {
10
13
  const groupContentIds = new Map();
11
- for (const mod of modules) {
12
- if (mod.slug.startsWith('lens/'))
14
+ for (const page of pages) {
15
+ if (page.slug.startsWith('lens/'))
13
16
  continue;
14
- const groupKey = mod.parentSlug ?? mod.slug;
17
+ const groupKey = page.parentSlug ?? page.slug;
15
18
  let s = groupContentIds.get(groupKey);
16
19
  if (!s) {
17
20
  s = new Set();
18
21
  groupContentIds.set(groupKey, s);
19
22
  }
20
- for (const section of mod.sections) {
21
- if (section.contentId)
22
- s.add(section.contentId);
23
- }
23
+ for (const id of page.contentIds)
24
+ s.add(id);
24
25
  }
25
- for (const mod of modules) {
26
- // Skip standalone-lens pseudo-modules (lens/ prefix). They are single-lens
27
- // entries created for lenses not imported by any real module. Checking
28
- // card membership from their narrow perspective generates false positives.
29
- if (mod.slug.startsWith('lens/'))
30
- continue;
31
- const groupKey = mod.parentSlug ?? mod.slug;
32
- const groupIds = groupContentIds.get(groupKey) ?? new Set();
33
- for (const section of mod.sections) {
34
- for (const seg of section.segments) {
35
- if (seg.type !== 'text')
36
- continue;
37
- if (!seg.content.includes('data-lens-card='))
26
+ return new Map([...groupContentIds].map(([key, ids]) => [key, [...ids]]));
27
+ }
28
+ /** Every card of one page that targets a lens outside the page's module group. */
29
+ export function checkCardModuleMembership(mod, groups) {
30
+ const errors = [];
31
+ // Skip standalone-lens pseudo-modules (lens/ prefix). They are single-lens
32
+ // entries created for lenses not imported by any real module. Checking
33
+ // card membership from their narrow perspective generates false positives.
34
+ if (mod.slug.startsWith('lens/'))
35
+ return errors;
36
+ const groupKey = mod.parentSlug ?? mod.slug;
37
+ const groupIds = new Set(groups.get(groupKey));
38
+ for (const section of mod.sections) {
39
+ for (const seg of section.segments) {
40
+ if (seg.type !== 'text')
41
+ continue;
42
+ if (!seg.content.includes('data-lens-card='))
43
+ continue;
44
+ for (const data of lensCardsIn(seg.content)) {
45
+ if (data.targetType !== 'lens')
38
46
  continue;
39
- for (const data of lensCardsIn(seg.content)) {
40
- if (data.targetType !== 'lens')
41
- continue;
42
- const targetId = data.contentId;
43
- if (!targetId)
44
- continue; // missing contentId is a separate validation problem
45
- if (groupIds.has(targetId))
46
- continue; // same module-group: OK
47
- if (data.allowExternal)
48
- continue; // explicit external opt-in: OK
49
- // Echo back the exact directive with the flag appended so the
50
- // author can copy-paste it. Falls back to a `<path>` placeholder
51
- // for older card data without targetPath.
52
- const directive = data.targetPath
53
- ? `\`::card[[${data.targetPath}]]{allow-external}\``
54
- : '`::card[[<path>]]{allow-external}`';
55
- errors.push({
56
- // Card directives live inside the section's source — typically an
57
- // imported Lens, not the module file itself. Prefer the section's
58
- // sourcePath so the error points at the file the author needs to
59
- // edit. Falls back to mod.sourcePath for inline lenses defined in
60
- // the module file directly.
61
- file: section.sourcePath ?? mod.sourcePath ?? `module:${mod.slug}`,
62
- message: `Card targets Lens "${data.title ?? targetId}" which is not imported by module "${groupKey}".`,
63
- suggestion: `Either import the Lens into module "${groupKey}", or mark the directive as intentional by appending {allow-external}: ${directive}.`,
64
- severity: 'error',
65
- });
66
- }
47
+ const targetId = data.contentId;
48
+ if (!targetId)
49
+ continue; // missing contentId is a separate validation problem
50
+ if (groupIds.has(targetId))
51
+ continue; // same module-group: OK
52
+ if (data.allowExternal)
53
+ continue; // explicit external opt-in: OK
54
+ // Echo back the exact directive with the flag appended so the
55
+ // author can copy-paste it. Falls back to a `<path>` placeholder
56
+ // for older card data without targetPath.
57
+ const directive = data.targetPath
58
+ ? `\`::card[[${data.targetPath}]]{allow-external}\``
59
+ : '`::card[[<path>]]{allow-external}`';
60
+ errors.push({
61
+ // Card directives live inside the section's source — typically an
62
+ // imported Lens, not the module file itself. Prefer the section's
63
+ // sourcePath so the error points at the file the author needs to
64
+ // edit. Falls back to mod.sourcePath for inline lenses defined in
65
+ // the module file directly.
66
+ file: section.sourcePath ?? mod.sourcePath ?? `module:${mod.slug}`,
67
+ message: `Card targets Lens "${data.title ?? targetId}" which is not imported by module "${groupKey}".`,
68
+ suggestion: `Either import the Lens into module "${groupKey}", or mark the directive as intentional by appending {allow-external}: ${directive}.`,
69
+ severity: 'error',
70
+ });
67
71
  }
68
72
  }
69
73
  }
@@ -1 +1 @@
1
- {"version":3,"file":"card-module-membership.js","sourceRoot":"","sources":["../../src/validator/card-module-membership.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"card-module-membership.js","sourceRoot":"","sources":["../../src/validator/card-module-membership.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ import { CRITIC_MARKUP_FORMS } from "../criticmarkup-forms.js";
2
2
  import { isContentTextFile } from "../parser/widget.js";
3
3
  // The forms whose accept vs reject outputs differ: additions, deletions,
4
4
  // substitutions. Comments and highlights publish identically either way.
5
- const PENDING_FORMS = CRITIC_MARKUP_FORMS.filter((form) => form.pendingChangesOutput);
5
+ const PENDING_FORMS = CRITIC_MARKUP_FORMS.filter((form) => form.accepted !== form.rejected);
6
6
  const CONTENT_DIRS = [
7
7
  "modules/",
8
8
  "courses/",
@@ -1 +1 @@
1
- {"version":3,"file":"criticmarkup.js","sourceRoot":"","sources":["../../src/validator/criticmarkup.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,yEAAyE;AACzE,yEAAyE;AACzE,MAAM,aAAa,GAAG,mBAAmB,CAAC,MAAM,CAC9C,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,oBAAoB,CACpC,CAAC;AAEF,MAAM,YAAY,GAAG;IACnB,UAAU;IACV,UAAU;IACV,WAAW;IACX,SAAS;IACT,oBAAoB;IACpB,oBAAoB;IACpB,UAAU;CACX,CAAC;AAEF,uEAAuE;AACvE,MAAM,UAAU,yBAAyB,CAAC,IAAY;IACpD,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IAC3C,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AAChF,CAAC;AAED,8DAA8D;AAC9D,SAAS,OAAO,CAAC,KAAa;IAC5B,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3C,OAAO,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;AACtE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,yBAAyB,CACvC,OAAe,EACf,IAAY;IAEZ,MAAM,KAAK,GAAkD,EAAE,CAAC;IAEhE,KAAK,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,aAAa,EAAE,CAAC;QACzC,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;YACzC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAM,CAAC;YAC3B,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;YACxD,KAAK,CAAC,IAAI,CAAC;gBACT,KAAK;gBACL,KAAK,EAAE;oBACL,IAAI;oBACJ,IAAI;oBACJ,OAAO,EAAE,wBAAwB,IAAI,gBAAgB,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;oBACxE,UAAU,EACR,+DAA+D;wBAC/D,+DAA+D;oBACjE,QAAQ,EAAE,SAAS;iBACpB;aACF,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,gEAAgE;IAChE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IACxC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AACnC,CAAC"}
1
+ {"version":3,"file":"criticmarkup.js","sourceRoot":"","sources":["../../src/validator/criticmarkup.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,yEAAyE;AACzE,yEAAyE;AACzE,MAAM,aAAa,GAAG,mBAAmB,CAAC,MAAM,CAC9C,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,CAC1C,CAAC;AAEF,MAAM,YAAY,GAAG;IACnB,UAAU;IACV,UAAU;IACV,WAAW;IACX,SAAS;IACT,oBAAoB;IACpB,oBAAoB;IACpB,UAAU;CACX,CAAC;AAEF,uEAAuE;AACvE,MAAM,UAAU,yBAAyB,CAAC,IAAY;IACpD,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IAC3C,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AAChF,CAAC;AAED,8DAA8D;AAC9D,SAAS,OAAO,CAAC,KAAa;IAC5B,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3C,OAAO,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;AACtE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,yBAAyB,CACvC,OAAe,EACf,IAAY;IAEZ,MAAM,KAAK,GAAkD,EAAE,CAAC;IAEhE,KAAK,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,aAAa,EAAE,CAAC;QACzC,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;YACzC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAM,CAAC;YAC3B,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;YACxD,KAAK,CAAC,IAAI,CAAC;gBACT,KAAK;gBACL,KAAK,EAAE;oBACL,IAAI;oBACJ,IAAI;oBACJ,OAAO,EAAE,wBAAwB,IAAI,gBAAgB,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;oBACxE,UAAU,EACR,+DAA+D;wBAC/D,+DAA+D;oBACjE,QAAQ,EAAE,SAAS;iBACpB;aACF,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,gEAAgE;IAChE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IACxC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AACnC,CAAC"}
@@ -4,7 +4,7 @@ import type { ContentError } from '../index.js';
4
4
  * This measures the minimum number of single-character edits
5
5
  * (insertions, deletions, substitutions) needed to change one string into another.
6
6
  */
7
- export declare function levenshtein(a: string, b: string): number;
7
+ export declare function levenshtein(a: string, b: string, max?: number): number;
8
8
  /**
9
9
  * Detect likely typos in field names by comparing against known fields.
10
10
  *
@@ -4,31 +4,31 @@ import { ALL_KNOWN_FIELDS, REMOVED_FIELDS } from '../content-schema.js';
4
4
  * This measures the minimum number of single-character edits
5
5
  * (insertions, deletions, substitutions) needed to change one string into another.
6
6
  */
7
- export function levenshtein(a, b) {
8
- const matrix = [];
9
- // Initialize first column (delete operations)
10
- for (let i = 0; i <= b.length; i++) {
11
- matrix[i] = [i];
12
- }
13
- // Initialize first row (insert operations)
14
- for (let j = 0; j <= a.length; j++) {
15
- matrix[0][j] = j;
16
- }
17
- // Fill in the rest of the matrix
7
+ export function levenshtein(a, b, max = Infinity) {
8
+ // Two rows of the table. No row has a smaller least value than the row
9
+ // before it, so with a bound, a row whose least value is above `max` ends
10
+ // the work: the answer is then some number above `max`.
11
+ if (Math.abs(a.length - b.length) > max)
12
+ return max + 1;
13
+ let previous = [];
14
+ for (let j = 0; j <= a.length; j++)
15
+ previous.push(j);
18
16
  for (let i = 1; i <= b.length; i++) {
17
+ const current = [i];
18
+ let least = i;
19
19
  for (let j = 1; j <= a.length; j++) {
20
- if (b[i - 1] === a[j - 1]) {
21
- matrix[i][j] = matrix[i - 1][j - 1];
22
- }
23
- else {
24
- matrix[i][j] = Math.min(matrix[i - 1][j - 1] + 1, // substitution
25
- matrix[i][j - 1] + 1, // insertion
26
- matrix[i - 1][j] + 1 // deletion
27
- );
28
- }
20
+ const cell = b[i - 1] === a[j - 1]
21
+ ? previous[j - 1]
22
+ : Math.min(previous[j - 1], current[j - 1], previous[j]) + 1;
23
+ current.push(cell);
24
+ if (cell < least)
25
+ least = cell;
29
26
  }
27
+ if (least > max)
28
+ return max + 1;
29
+ previous = current;
30
30
  }
31
- return matrix[b.length][a.length];
31
+ return previous[a.length];
32
32
  }
33
33
  /**
34
34
  * Detect likely typos in field names by comparing against known fields.
@@ -1 +1 @@
1
- {"version":3,"file":"field-typos.js","sourceRoot":"","sources":["../../src/validator/field-typos.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"field-typos.js","sourceRoot":"","sources":["../../src/validator/field-typos.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,11 @@
1
- import type { ContentError, FlattenedModule } from "../index.js";
1
+ import type { FlattenedModule } from "../index.js";
2
+ import type { ErrorCandidate } from "../dedupe-errors.js";
2
3
  /**
3
- * Broad safety-net validation on the flattened output.
4
- * Catches empty sections (no segments) and empty segments (no content)
5
- * that specific validators might have missed.
4
+ * Broad safety-net validation on the flattened output: empty sections (no
5
+ * segments) and empty segments (no content) that specific validators might
6
+ * have missed. These are the errors of one page; `moduleFile` names the file
7
+ * of sections that have no source path. An empty segment is reported once
8
+ * over all pages (a lens that several modules copy has it in each), so its
9
+ * error carries the segment's key as `once`.
6
10
  */
7
- export declare function validateOutputIntegrity(modules: FlattenedModule[], slugToPath?: Map<string, string>): ContentError[];
11
+ export declare function outputIntegrityCandidates(module: FlattenedModule, moduleFile: string): ErrorCandidate[];
@@ -1,57 +1,55 @@
1
1
  import { getSourceLine } from "../source-location.js";
2
2
  /**
3
- * Broad safety-net validation on the flattened output.
4
- * Catches empty sections (no segments) and empty segments (no content)
5
- * that specific validators might have missed.
3
+ * Broad safety-net validation on the flattened output: empty sections (no
4
+ * segments) and empty segments (no content) that specific validators might
5
+ * have missed. These are the errors of one page; `moduleFile` names the file
6
+ * of sections that have no source path. An empty segment is reported once
7
+ * over all pages (a lens that several modules copy has it in each), so its
8
+ * error carries the segment's key as `once`.
6
9
  */
7
- export function validateOutputIntegrity(modules, slugToPath) {
8
- const errors = [];
9
- const reportedEmptySegments = new Set();
10
- for (const module of modules) {
11
- const moduleFile = slugToPath?.get(module.slug) ?? module.slug;
12
- for (const section of module.sections) {
13
- const file = section.sourcePath ?? moduleFile;
14
- const sectionLabel = section.meta.title ?? section.type;
15
- if (section.segments.length === 0) {
16
- errors.push({
10
+ export function outputIntegrityCandidates(module, moduleFile) {
11
+ const candidates = [];
12
+ for (const section of module.sections) {
13
+ const file = section.sourcePath ?? moduleFile;
14
+ const sectionLabel = section.meta.title ?? section.type;
15
+ if (section.segments.length === 0) {
16
+ candidates.push({
17
+ error: {
17
18
  file,
18
19
  line: getSourceLine(section),
19
20
  message: `Section "${sectionLabel}" has no segments`,
20
21
  severity: "error",
21
- });
22
- continue;
23
- }
24
- for (let i = 0; i < section.segments.length; i++) {
25
- const segment = section.segments[i];
26
- const sourceLine = getSourceLine(segment) ?? getSourceLine(section);
27
- const emptySegmentKey = `${file}\0${sourceLine ?? ""}\0${segment.type}`;
28
- const reportEmpty = (message) => {
29
- if (reportedEmptySegments.has(emptySegmentKey))
30
- return;
31
- reportedEmptySegments.add(emptySegmentKey);
32
- errors.push({ file, line: sourceLine, message, severity: "error" });
33
- };
34
- switch (segment.type) {
35
- case "text":
36
- if (!segment.content?.trim()) {
37
- reportEmpty(`Empty text segment in "${sectionLabel}" (segment ${i + 1})`);
38
- }
39
- break;
40
- case "article":
41
- if (!segment.content?.trim()) {
42
- reportEmpty(`Empty article segment in "${sectionLabel}" (segment ${i + 1})`);
43
- }
44
- break;
45
- case "video":
46
- if (!segment.transcript?.length) {
47
- reportEmpty(`Empty video transcript in "${sectionLabel}" (segment ${i + 1})`);
48
- }
49
- break;
50
- // chat segments have no required content body
51
- }
22
+ },
23
+ });
24
+ continue;
25
+ }
26
+ for (let i = 0; i < section.segments.length; i++) {
27
+ const segment = section.segments[i];
28
+ const sourceLine = getSourceLine(segment) ?? getSourceLine(section);
29
+ const reportEmpty = (message) => candidates.push({
30
+ error: { file, line: sourceLine, message, severity: "error" },
31
+ once: `${file}\0${sourceLine ?? ""}\0${segment.type}`,
32
+ });
33
+ switch (segment.type) {
34
+ case "text":
35
+ if (!segment.content?.trim()) {
36
+ reportEmpty(`Empty text segment in "${sectionLabel}" (segment ${i + 1})`);
37
+ }
38
+ break;
39
+ case "article":
40
+ if (!segment.content?.trim()) {
41
+ reportEmpty(`Empty article segment in "${sectionLabel}" (segment ${i + 1})`);
42
+ }
43
+ break;
44
+ case "video":
45
+ if (!segment.transcript?.length) {
46
+ reportEmpty(`Empty video transcript in "${sectionLabel}" (segment ${i + 1})`);
47
+ }
48
+ break;
49
+ // chat segments have no required content body
52
50
  }
53
51
  }
54
52
  }
55
- return errors;
53
+ return candidates;
56
54
  }
57
55
  //# sourceMappingURL=output-integrity.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"output-integrity.js","sourceRoot":"","sources":["../../src/validator/output-integrity.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CACrC,OAA0B,EAC1B,UAAgC;IAEhC,MAAM,MAAM,GAAmB,EAAE,CAAC;IAClC,MAAM,qBAAqB,GAAG,IAAI,GAAG,EAAU,CAAC;IAEhD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,UAAU,GAAG,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC;QAE/D,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACtC,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,IAAI,UAAU,CAAC;YAC9C,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAExD,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAClC,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI;oBACJ,IAAI,EAAE,aAAa,CAAC,OAAO,CAAC;oBAC5B,OAAO,EAAE,YAAY,YAAY,mBAAmB;oBACpD,QAAQ,EAAE,OAAO;iBAClB,CAAC,CAAC;gBACH,SAAS;YACX,CAAC;YAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACjD,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;gBACpC,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,aAAa,CAAC,OAAO,CAAC,CAAC;gBACpE,MAAM,eAAe,GAAG,GAAG,IAAI,KAAK,UAAU,IAAI,EAAE,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC;gBACxE,MAAM,WAAW,GAAG,CAAC,OAAe,EAAE,EAAE;oBACtC,IAAI,qBAAqB,CAAC,GAAG,CAAC,eAAe,CAAC;wBAAE,OAAO;oBACvD,qBAAqB,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;oBAC3C,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;gBACtE,CAAC,CAAC;gBAEF,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;oBACrB,KAAK,MAAM;wBACT,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC;4BAC7B,WAAW,CACT,0BAA0B,YAAY,cAAc,CAAC,GAAG,CAAC,GAAG,CAC7D,CAAC;wBACJ,CAAC;wBACD,MAAM;oBACR,KAAK,SAAS;wBACZ,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC;4BAC7B,WAAW,CACT,6BAA6B,YAAY,cAAc,CAAC,GAAG,CAAC,GAAG,CAChE,CAAC;wBACJ,CAAC;wBACD,MAAM;oBACR,KAAK,OAAO;wBACV,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC;4BAChC,WAAW,CACT,8BAA8B,YAAY,cAAc,CAAC,GAAG,CAAC,GAAG,CACjE,CAAC;wBACJ,CAAC;wBACD,MAAM;oBACR,8CAA8C;gBAChD,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"output-integrity.js","sourceRoot":"","sources":["../../src/validator/output-integrity.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD;;;;;;;GAOG;AACH,MAAM,UAAU,yBAAyB,CACvC,MAAuB,EACvB,UAAkB;IAElB,MAAM,UAAU,GAAqB,EAAE,CAAC;IAExC,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,IAAI,UAAU,CAAC;QAC9C,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;QAExD,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClC,UAAU,CAAC,IAAI,CAAC;gBACd,KAAK,EAAE;oBACL,IAAI;oBACJ,IAAI,EAAE,aAAa,CAAC,OAAO,CAAC;oBAC5B,OAAO,EAAE,YAAY,YAAY,mBAAmB;oBACpD,QAAQ,EAAE,OAAO;iBAClB;aACF,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACjD,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YACpC,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,aAAa,CAAC,OAAO,CAAC,CAAC;YACpE,MAAM,WAAW,GAAG,CAAC,OAAe,EAAE,EAAE,CACtC,UAAU,CAAC,IAAI,CAAC;gBACd,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE;gBAC7D,IAAI,EAAE,GAAG,IAAI,KAAK,UAAU,IAAI,EAAE,KAAK,OAAO,CAAC,IAAI,EAAE;aACtD,CAAC,CAAC;YAEL,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;gBACrB,KAAK,MAAM;oBACT,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC;wBAC7B,WAAW,CACT,0BAA0B,YAAY,cAAc,CAAC,GAAG,CAAC,GAAG,CAC7D,CAAC;oBACJ,CAAC;oBACD,MAAM;gBACR,KAAK,SAAS;oBACZ,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC;wBAC7B,WAAW,CACT,6BAA6B,YAAY,cAAc,CAAC,GAAG,CAAC,GAAG,CAChE,CAAC;oBACJ,CAAC;oBACD,MAAM;gBACR,KAAK,OAAO;oBACV,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC;wBAChC,WAAW,CACT,8BAA8B,YAAY,cAAc,CAAC,GAAG,CAAC,GAAG,CACjE,CAAC;oBACJ,CAAC;oBACD,MAAM;gBACR,8CAA8C;YAChD,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC"}
@@ -1,4 +1,4 @@
1
- import { REMOVED_FIELDS, VALID_FIELDS_BY_SEGMENT_TYPE, } from "../content-schema.js";
1
+ import { ALL_KNOWN_FIELDS, REMOVED_FIELDS, VALID_FIELDS_BY_SEGMENT_TYPE, } from "../content-schema.js";
2
2
  /**
3
3
  * Fields that are specific to excerpt segments (not valid in text/chat).
4
4
  */
@@ -42,11 +42,10 @@ export function validateSegmentFields(segmentType, fields, file, line) {
42
42
  severity: "warning",
43
43
  });
44
44
  }
45
- else if (subtype) {
46
- // Response subtypes each have a small, closed field set; a known
47
- // field from another subtype (e.g. scale:: on a Choice) would
48
- // otherwise be silently ignored — field-typos.ts only catches
49
- // unknown names.
45
+ else if (ALL_KNOWN_FIELDS.includes(fieldName)) {
46
+ // A field another segment type knows (scale:: on a Choice,
47
+ // feedback-instructions:: on a Chat) would otherwise be silently
48
+ // ignored: field-typos.ts only catches unknown names.
50
49
  warnings.push({
51
50
  file,
52
51
  line,
@@ -55,8 +54,6 @@ export function validateSegmentFields(segmentType, fields, file, line) {
55
54
  severity: "warning",
56
55
  });
57
56
  }
58
- // Note: We don't warn about completely unknown fields here
59
- // That's handled by field-typos.ts
60
57
  }
61
58
  }
62
59
  return warnings;
@@ -1 +1 @@
1
- {"version":3,"file":"segment-fields.js","sourceRoot":"","sources":["../../src/validator/segment-fields.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,cAAc,EACd,4BAA4B,GAC7B,MAAM,sBAAsB,CAAC;AAE9B;;GAEG;AACH,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;AAEpD;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,qBAAqB,CACnC,WAAmB,EACnB,MAA8B,EAC9B,IAAY,EACZ,IAAY;IAEZ,MAAM,QAAQ,GAAmB,EAAE,CAAC;IACpC,MAAM,WAAW,GAAG,4BAA4B,CAAC,WAAW,CAAC,CAAC;IAE9D,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,sDAAsD;QACtD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,kDAAkD;IAClD,MAAM,OAAO,GAAG,WAAW,CAAC,UAAU,CAAC,WAAW,CAAC;QACjD,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC;QACvC,CAAC,CAAC,IAAI,CAAC;IACT,MAAM,WAAW,GAAG,OAAO;QACzB,CAAC,CAAC,aAAa,OAAO,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;QACpG,CAAC,CAAC,WAAW,CAAC;IAEhB,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5C,IACE,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC;YAC3B,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,SAAS,CAAC,EACzC,CAAC;YACD,oEAAoE;YACpE,IAAI,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBACvC,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI;oBACJ,IAAI;oBACJ,OAAO,EAAE,UAAU,SAAS,qBAAqB,WAAW,UAAU;oBACtE,UAAU,EAAE,IAAI,SAAS,sDAAsD;oBAC/E,QAAQ,EAAE,SAAS;iBACpB,CAAC,CAAC;YACL,CAAC;iBAAM,IAAI,OAAO,EAAE,CAAC;gBACnB,iEAAiE;gBACjE,8DAA8D;gBAC9D,8DAA8D;gBAC9D,iBAAiB;gBACjB,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI;oBACJ,IAAI;oBACJ,OAAO,EAAE,UAAU,SAAS,uBAAuB,WAAW,UAAU;oBACxE,UAAU,EAAE,iBAAiB,CAAC,GAAG,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;oBAC1D,QAAQ,EAAE,SAAS;iBACpB,CAAC,CAAC;YACL,CAAC;YACD,2DAA2D;YAC3D,mCAAmC;QACrC,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"segment-fields.js","sourceRoot":"","sources":["../../src/validator/segment-fields.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,4BAA4B,GAC7B,MAAM,sBAAsB,CAAC;AAE9B;;GAEG;AACH,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;AAEpD;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,qBAAqB,CACnC,WAAmB,EACnB,MAA8B,EAC9B,IAAY,EACZ,IAAY;IAEZ,MAAM,QAAQ,GAAmB,EAAE,CAAC;IACpC,MAAM,WAAW,GAAG,4BAA4B,CAAC,WAAW,CAAC,CAAC;IAE9D,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,sDAAsD;QACtD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,kDAAkD;IAClD,MAAM,OAAO,GAAG,WAAW,CAAC,UAAU,CAAC,WAAW,CAAC;QACjD,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC;QACvC,CAAC,CAAC,IAAI,CAAC;IACT,MAAM,WAAW,GAAG,OAAO;QACzB,CAAC,CAAC,aAAa,OAAO,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;QACpG,CAAC,CAAC,WAAW,CAAC;IAEhB,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5C,IACE,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC;YAC3B,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,SAAS,CAAC,EACzC,CAAC;YACD,oEAAoE;YACpE,IAAI,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBACvC,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI;oBACJ,IAAI;oBACJ,OAAO,EAAE,UAAU,SAAS,qBAAqB,WAAW,UAAU;oBACtE,UAAU,EAAE,IAAI,SAAS,sDAAsD;oBAC/E,QAAQ,EAAE,SAAS;iBACpB,CAAC,CAAC;YACL,CAAC;iBAAM,IAAI,gBAAgB,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;gBAChD,2DAA2D;gBAC3D,iEAAiE;gBACjE,sDAAsD;gBACtD,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI;oBACJ,IAAI;oBACJ,OAAO,EAAE,UAAU,SAAS,uBAAuB,WAAW,UAAU;oBACxE,UAAU,EAAE,iBAAiB,CAAC,GAAG,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;oBAC1D,QAAQ,EAAE,SAAS;iBACpB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -6,7 +6,7 @@ export type ContentTier = "production" | "wip" | "ignored";
6
6
  * the tier below, skill-tree visibility in skill-tree.ts — so no rule parses
7
7
  * frontmatter a second time.
8
8
  */
9
- export declare function buildTagMap(files: Map<string, string>): Map<string, string[]>;
9
+ export declare function buildTagMap(files: ReadonlyMap<string, string>): Map<string, string[]>;
10
10
  /**
11
11
  * Determine content tier from lower-cased frontmatter tags.
12
12
  * - tags containing 'validator-ignore' → 'ignored'
@@ -15,7 +15,7 @@ export declare function buildTagMap(files: Map<string, string>): Map<string, str
15
15
  */
16
16
  export declare function getTierFromTags(tags: string[]): ContentTier;
17
17
  /** Tier of every file in a tag map (see buildTagMap). */
18
- export declare function buildTierMap(tagMap: Map<string, string[]>): Map<string, ContentTier>;
18
+ export declare function buildTierMap(tagMap: ReadonlyMap<string, string[]>): Map<string, ContentTier>;
19
19
  /**
20
20
  * Check for tier violations when a parent references a child.
21
21
  * Returns a ContentError if the reference violates tier rules, null otherwise.
@@ -1 +1 @@
1
- {"version":3,"file":"tier.js","sourceRoot":"","sources":["../../src/validator/tier.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tier.js","sourceRoot":"","sources":["../../src/validator/tier.ts"],"names":[],"mappings":"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"}