lens-content-processor 0.2.1 → 0.2.2

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 (60) hide show
  1. package/dist/bundler/article.js +16 -4
  2. package/dist/bundler/article.js.map +1 -1
  3. package/dist/bundler/video.js +4 -4
  4. package/dist/bundler/video.js.map +1 -1
  5. package/dist/cli.js +7 -1
  6. package/dist/cli.js.map +1 -1
  7. package/dist/content-schema.d.ts +34 -0
  8. package/dist/content-schema.js +61 -0
  9. package/dist/content-schema.js.map +1 -0
  10. package/dist/flattener/index.js +58 -22
  11. package/dist/flattener/index.js.map +1 -1
  12. package/dist/index.d.ts +12 -1
  13. package/dist/index.js +121 -3
  14. package/dist/index.js.map +1 -1
  15. package/dist/parser/article.d.ts +16 -0
  16. package/dist/parser/article.js +67 -0
  17. package/dist/parser/article.js.map +1 -0
  18. package/dist/parser/course.js +13 -20
  19. package/dist/parser/course.js.map +1 -1
  20. package/dist/parser/frontmatter.js +2 -0
  21. package/dist/parser/frontmatter.js.map +1 -1
  22. package/dist/parser/learning-outcome.js +21 -9
  23. package/dist/parser/learning-outcome.js.map +1 -1
  24. package/dist/parser/lens.js +131 -14
  25. package/dist/parser/lens.js.map +1 -1
  26. package/dist/parser/module.d.ts +11 -5
  27. package/dist/parser/module.js +171 -75
  28. package/dist/parser/module.js.map +1 -1
  29. package/dist/parser/sections.js +113 -12
  30. package/dist/parser/sections.js.map +1 -1
  31. package/dist/parser/video-transcript.d.ts +11 -0
  32. package/dist/parser/video-transcript.js +39 -0
  33. package/dist/parser/video-transcript.js.map +1 -0
  34. package/dist/parser/wikilink.d.ts +2 -0
  35. package/dist/parser/wikilink.js +83 -24
  36. package/dist/parser/wikilink.js.map +1 -1
  37. package/dist/validator/duplicates.d.ts +13 -0
  38. package/dist/validator/duplicates.js +27 -0
  39. package/dist/validator/duplicates.js.map +1 -0
  40. package/dist/validator/field-typos.d.ts +11 -0
  41. package/dist/validator/field-typos.js +45 -28
  42. package/dist/validator/field-typos.js.map +1 -1
  43. package/dist/validator/field-values.d.ts +14 -0
  44. package/dist/validator/field-values.js +61 -7
  45. package/dist/validator/field-values.js.map +1 -1
  46. package/dist/validator/output-integrity.d.ts +7 -0
  47. package/dist/validator/output-integrity.js +57 -0
  48. package/dist/validator/output-integrity.js.map +1 -0
  49. package/dist/validator/segment-fields.js +1 -15
  50. package/dist/validator/segment-fields.js.map +1 -1
  51. package/dist/validator/timestamps.d.ts +2 -0
  52. package/dist/validator/timestamps.js +91 -0
  53. package/dist/validator/timestamps.js.map +1 -0
  54. package/dist/validator/url-reachability.d.ts +8 -0
  55. package/dist/validator/url-reachability.js +60 -0
  56. package/dist/validator/url-reachability.js.map +1 -0
  57. package/dist/validator/validate-frontmatter.d.ts +9 -0
  58. package/dist/validator/validate-frontmatter.js +53 -0
  59. package/dist/validator/validate-frontmatter.js.map +1 -0
  60. package/package.json +1 -1
@@ -3,11 +3,19 @@ import { parseSections, LENS_SECTION_TYPES, LENS_OUTPUT_TYPE } from './sections.
3
3
  import { validateSegmentFields } from '../validator/segment-fields.js';
4
4
  import { validateFieldValues } from '../validator/field-values.js';
5
5
  import { detectFieldTypos } from '../validator/field-typos.js';
6
+ import { validateFrontmatter } from '../validator/validate-frontmatter.js';
6
7
  import { parseWikilink, hasRelativePath } from './wikilink.js';
8
+ import { parseTimestamp } from '../bundler/video.js';
7
9
  // Valid segment types for lens H4 headers
8
10
  const LENS_SEGMENT_TYPES = new Set(['text', 'chat', 'article-excerpt', 'video-excerpt']);
11
+ // Valid segment types per section output type
12
+ const VALID_SEGMENTS_PER_SECTION = {
13
+ 'page': new Set(['text', 'chat']),
14
+ 'lens-article': new Set(['text', 'chat', 'article-excerpt']),
15
+ 'lens-video': new Set(['text', 'chat', 'video-excerpt']),
16
+ };
9
17
  // H4 segment header pattern: #### <type> or #### <type>: <title>
10
- const SEGMENT_HEADER_PATTERN = /^####\s+(\S+)(?::\s*(.*))?$/i;
18
+ const SEGMENT_HEADER_PATTERN = /^####\s+([^:\s]+)(?::\s*(.*))?$/i;
11
19
  // Field pattern: fieldname:: value
12
20
  const FIELD_PATTERN = /^(\w+)::\s*(.*)$/;
13
21
  /**
@@ -20,6 +28,7 @@ function parseSegments(sectionBody, bodyStartLine, file) {
20
28
  const errors = [];
21
29
  let currentSegment = null;
22
30
  let currentFieldLines = [];
31
+ let preSegmentWarned = false;
23
32
  for (let i = 0; i < lines.length; i++) {
24
33
  const line = lines[i];
25
34
  const lineNum = bodyStartLine + i;
@@ -51,8 +60,32 @@ function parseSegments(sectionBody, bodyStartLine, file) {
51
60
  currentFieldLines = [];
52
61
  }
53
62
  else if (currentSegment) {
63
+ // Check for single-colon field that should be double-colon
64
+ const singleColonMatch = line.match(/^(\w+):\s+(.*)$/);
65
+ if (singleColonMatch && !line.match(/^https?:/) && !FIELD_PATTERN.test(line)) {
66
+ errors.push({
67
+ file,
68
+ line: lineNum,
69
+ message: `Found '${singleColonMatch[1]}:' with single colon — did you mean '${singleColonMatch[1]}::'?`,
70
+ suggestion: `Change '${singleColonMatch[1]}:' to '${singleColonMatch[1]}::' (double colon)`,
71
+ severity: 'warning',
72
+ });
73
+ }
54
74
  currentFieldLines.push(line);
55
75
  }
76
+ else {
77
+ // No segment started yet — check for free text (not fields, not blank)
78
+ if (line.trim() && !FIELD_PATTERN.test(line) && !preSegmentWarned) {
79
+ preSegmentWarned = true;
80
+ errors.push({
81
+ file,
82
+ line: lineNum,
83
+ message: 'Text before first segment header (####) will be ignored',
84
+ suggestion: 'Move this text into a segment (e.g., #### Text with content:: field), or remove it',
85
+ severity: 'warning',
86
+ });
87
+ }
88
+ }
56
89
  }
57
90
  // Don't forget last segment
58
91
  if (currentSegment) {
@@ -122,25 +155,49 @@ function convertSegment(raw, sectionType, file) {
122
155
  const segment = {
123
156
  type: 'text',
124
157
  content: '',
125
- optional: raw.fields.optional === 'true' ? true : undefined,
158
+ optional: raw.fields.optional?.toLowerCase() === 'true' ? true : undefined,
126
159
  };
127
160
  return { segment, errors };
128
161
  }
129
162
  const segment = {
130
163
  type: 'text',
131
164
  content,
132
- optional: raw.fields.optional === 'true' ? true : undefined,
165
+ optional: raw.fields.optional?.toLowerCase() === 'true' ? true : undefined,
133
166
  };
134
167
  return { segment, errors };
135
168
  }
136
169
  case 'chat': {
170
+ const hasInstructionsField = 'instructions' in raw.fields;
171
+ const instructions = raw.fields.instructions;
172
+ if (!hasInstructionsField) {
173
+ // Field completely missing - error
174
+ errors.push({
175
+ file,
176
+ line: raw.line,
177
+ message: 'Chat segment missing instructions:: field',
178
+ suggestion: "Add 'instructions:: Your instructions here' to the chat segment",
179
+ severity: 'error',
180
+ });
181
+ return { segment: null, errors };
182
+ }
183
+ if (!instructions || instructions.trim() === '') {
184
+ // Field present but empty - warning
185
+ errors.push({
186
+ file,
187
+ line: raw.line,
188
+ message: 'Chat segment has empty instructions:: field',
189
+ suggestion: 'Add instructions text after instructions::',
190
+ severity: 'warning',
191
+ });
192
+ // Still create the segment with empty instructions
193
+ }
137
194
  const segment = {
138
195
  type: 'chat',
139
196
  title: raw.title,
140
- instructions: raw.fields.instructions,
141
- hidePreviousContentFromUser: raw.fields.hidePreviousContentFromUser === 'true' ? true : undefined,
142
- hidePreviousContentFromTutor: raw.fields.hidePreviousContentFromTutor === 'true' ? true : undefined,
143
- optional: raw.fields.optional === 'true' ? true : undefined,
197
+ instructions: instructions || '',
198
+ hidePreviousContentFromUser: raw.fields.hidePreviousContentFromUser?.toLowerCase() === 'true' ? true : undefined,
199
+ hidePreviousContentFromTutor: raw.fields.hidePreviousContentFromTutor?.toLowerCase() === 'true' ? true : undefined,
200
+ optional: raw.fields.optional?.toLowerCase() === 'true' ? true : undefined,
144
201
  };
145
202
  return { segment, errors };
146
203
  }
@@ -158,7 +215,7 @@ function convertSegment(raw, sectionType, file) {
158
215
  type: 'article-excerpt',
159
216
  fromAnchor,
160
217
  toAnchor,
161
- optional: raw.fields.optional === 'true' ? true : undefined,
218
+ optional: raw.fields.optional?.toLowerCase() === 'true' ? true : undefined,
162
219
  };
163
220
  return { segment, errors };
164
221
  }
@@ -176,11 +233,31 @@ function convertSegment(raw, sectionType, file) {
176
233
  });
177
234
  return { segment: null, errors };
178
235
  }
236
+ // Validate timestamp formats at parse time for better error reporting
237
+ const fromStr = fromField || '0:00';
238
+ if (parseTimestamp(fromStr) === null) {
239
+ errors.push({
240
+ file,
241
+ line: raw.line,
242
+ message: `Invalid timestamp format in from:: field: '${fromStr}'`,
243
+ suggestion: "Expected format: M:SS (e.g., 1:30) or H:MM:SS (e.g., 1:30:00)",
244
+ severity: 'warning',
245
+ });
246
+ }
247
+ if (parseTimestamp(toField) === null) {
248
+ errors.push({
249
+ file,
250
+ line: raw.line,
251
+ message: `Invalid timestamp format in to:: field: '${toField}'`,
252
+ suggestion: "Expected format: M:SS (e.g., 5:45) or H:MM:SS (e.g., 1:30:00)",
253
+ severity: 'warning',
254
+ });
255
+ }
179
256
  const segment = {
180
257
  type: 'video-excerpt',
181
258
  fromTimeStr: fromField || '0:00', // Default to start of video
182
259
  toTimeStr: toField,
183
- optional: raw.fields.optional === 'true' ? true : undefined,
260
+ optional: raw.fields.optional?.toLowerCase() === 'true' ? true : undefined,
184
261
  };
185
262
  return { segment, errors };
186
263
  }
@@ -238,13 +315,18 @@ export function parseLens(content, file) {
238
315
  return { lens: null, errors };
239
316
  }
240
317
  const { frontmatter, body, bodyStartLine } = frontmatterResult;
241
- // Validate required id field
242
- if (!frontmatter.id) {
318
+ const frontmatterErrors = validateFrontmatter(frontmatter, 'lens', file);
319
+ errors.push(...frontmatterErrors);
320
+ if (frontmatterErrors.some(e => e.severity === 'error')) {
321
+ return { lens: null, errors };
322
+ }
323
+ // Lens-specific: id must be a string (YAML might parse UUIDs as numbers)
324
+ if (typeof frontmatter.id !== 'string') {
243
325
  errors.push({
244
326
  file,
245
327
  line: 2,
246
- message: 'Missing required field: id',
247
- suggestion: "Add 'id: <uuid>' to frontmatter",
328
+ message: `Field 'id' must be a string, got ${typeof frontmatter.id}`,
329
+ suggestion: "Use quotes: id: '12345'",
248
330
  severity: 'error',
249
331
  });
250
332
  return { lens: null, errors };
@@ -281,7 +363,19 @@ export function parseLens(content, file) {
281
363
  // Validate source:: path is relative (contains /)
282
364
  if (source) {
283
365
  const wikilink = parseWikilink(source);
284
- if (wikilink && !hasRelativePath(wikilink.path)) {
366
+ if (wikilink && wikilink.error) {
367
+ const suggestion = wikilink.correctedPath
368
+ ? `Did you mean '[[${wikilink.correctedPath}]]'?`
369
+ : 'Check the path in the wikilink';
370
+ errors.push({
371
+ file,
372
+ line: rawSection.line,
373
+ message: `Invalid wikilink in source:: field: ${source}`,
374
+ suggestion,
375
+ severity: 'error',
376
+ });
377
+ }
378
+ else if (wikilink && !hasRelativePath(wikilink.path)) {
285
379
  errors.push({
286
380
  file,
287
381
  line: rawSection.line,
@@ -312,6 +406,17 @@ export function parseLens(content, file) {
312
406
  // Detect likely typos in field names
313
407
  const typoWarnings = detectFieldTypos(rawSeg.fields, file, rawSeg.line);
314
408
  errors.push(...typoWarnings);
409
+ // Check segment/section type compatibility
410
+ const validSegs = VALID_SEGMENTS_PER_SECTION[outputType];
411
+ if (validSegs && !validSegs.has(rawSeg.type)) {
412
+ errors.push({
413
+ file,
414
+ line: rawSeg.line,
415
+ message: `Segment type '${rawSeg.type}' is not valid in a ${rawSection.rawType} section`,
416
+ suggestion: `Valid segment types for ${rawSection.rawType}: ${[...(validSegs)].join(', ')}`,
417
+ severity: 'warning',
418
+ });
419
+ }
315
420
  const { segment, errors: conversionErrors } = convertSegment(rawSeg, outputType, file);
316
421
  errors.push(...conversionErrors);
317
422
  if (segment) {
@@ -337,6 +442,18 @@ export function parseLens(content, file) {
337
442
  };
338
443
  parsedSections.push(parsedSection);
339
444
  }
445
+ // Check for conflicting section types (Article + Video is nonsensical)
446
+ const sourceTypes = new Set(parsedSections.map(s => s.type).filter(t => t !== 'page'));
447
+ if (sourceTypes.size > 1) {
448
+ const typeList = [...sourceTypes].join(', ');
449
+ errors.push({
450
+ file,
451
+ line: parsedSections[0]?.line ?? bodyStartLine,
452
+ message: `Lens has conflicting section types: ${typeList}. Each lens should use a single source type.`,
453
+ suggestion: 'Split into separate lens files, one per source type',
454
+ severity: 'warning',
455
+ });
456
+ }
340
457
  const lens = {
341
458
  id: frontmatter.id,
342
459
  sections: parsedSections,
@@ -1 +1 @@
1
- {"version":3,"file":"lens.js","sourceRoot":"","sources":["../../src/parser/lens.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lens.js","sourceRoot":"","sources":["../../src/parser/lens.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,19 @@
1
- import type { ContentError, TextSegment } from '../index.js';
1
+ import type { ContentError, TextSegment, ChatSegment } from '../index.js';
2
2
  import { type ParsedSection } from './sections.js';
3
+ export interface PageSegmentResult {
4
+ segments: (TextSegment | ChatSegment)[];
5
+ errors: ContentError[];
6
+ }
3
7
  /**
4
- * Parse ## Text subsections from within a Page section body.
5
- * These subsections have a `content::` field that can span multiple lines.
8
+ * Parse ## Text and ## Chat subsections from within a Page section body.
9
+ * Reports errors for unknown ## headers and missing required fields.
6
10
  *
7
11
  * @param body - The body text of a # Page: section
8
- * @returns Array of TextSegment objects extracted from ## Text subsections
12
+ * @param file - File path for error reporting
13
+ * @param baseLineNum - Line number offset (body's position within the file)
14
+ * @returns Segment objects (TextSegment | ChatSegment) and any errors
9
15
  */
10
- export declare function parsePageTextSegments(body: string): TextSegment[];
16
+ export declare function parsePageSegments(body: string, file?: string, baseLineNum?: number): PageSegmentResult;
11
17
  export interface ParsedModule {
12
18
  slug: string;
13
19
  title: string;
@@ -1,77 +1,173 @@
1
1
  import { parseFrontmatter } from './frontmatter.js';
2
2
  import { parseSections, MODULE_SECTION_TYPES } from './sections.js';
3
+ import { validateSlugFormat } from '../validator/field-values.js';
4
+ import { validateFrontmatter } from '../validator/validate-frontmatter.js';
5
+ const VALID_PAGE_SUBSECTION_TYPES = new Set(['text', 'chat']);
3
6
  /**
4
- * Parse ## Text subsections from within a Page section body.
5
- * These subsections have a `content::` field that can span multiple lines.
6
- *
7
- * @param body - The body text of a # Page: section
8
- * @returns Array of TextSegment objects extracted from ## Text subsections
7
+ * Collect raw subsections from a Page section body.
8
+ * Each ## header starts a new subsection whose fields are collected generically.
9
9
  */
10
- export function parsePageTextSegments(body) {
11
- const segments = [];
10
+ function collectRawSubsections(body, baseLineNum) {
11
+ const subsections = [];
12
+ const unknownHeaders = [];
13
+ const warnings = [];
12
14
  const lines = body.split('\n');
13
- let inTextSection = false;
14
- let currentContent = '';
15
- let collectingContent = false;
16
- for (const line of lines) {
17
- // Check for ## Text header (case-insensitive)
18
- if (line.match(/^##\s+Text\s*$/i)) {
19
- // Save previous content if any
20
- if (collectingContent && currentContent.trim()) {
21
- segments.push({ type: 'text', content: currentContent.trim() });
15
+ let current = null;
16
+ let freeTextWarned = false;
17
+ let currentFieldName = null;
18
+ let currentFieldLines = [];
19
+ function finalizeField() {
20
+ if (current && currentFieldName) {
21
+ current.fields[currentFieldName] = currentFieldLines.join('\n').trim();
22
+ }
23
+ currentFieldName = null;
24
+ currentFieldLines = [];
25
+ }
26
+ function finalizeSubsection() {
27
+ finalizeField();
28
+ if (current) {
29
+ subsections.push(current);
30
+ }
31
+ current = null;
32
+ }
33
+ for (let i = 0; i < lines.length; i++) {
34
+ const line = lines[i];
35
+ const lineNum = baseLineNum + i + 1;
36
+ // Check for ## header
37
+ const headerMatch = line.match(/^##\s+(\S.*?)\s*$/);
38
+ if (headerMatch) {
39
+ finalizeSubsection();
40
+ freeTextWarned = false;
41
+ const rawType = headerMatch[1].trim();
42
+ const normalizedType = rawType.toLowerCase();
43
+ if (VALID_PAGE_SUBSECTION_TYPES.has(normalizedType)) {
44
+ current = { type: normalizedType, fields: {}, line: lineNum };
45
+ }
46
+ else {
47
+ unknownHeaders.push({ rawType, line: lineNum });
22
48
  }
23
- inTextSection = true;
24
- currentContent = '';
25
- collectingContent = false;
26
49
  continue;
27
50
  }
28
- // Check for any other ## header (end of Text section)
29
- if (line.match(/^##\s+\S/)) {
30
- // Save current content if any
31
- if (collectingContent && currentContent.trim()) {
32
- segments.push({ type: 'text', content: currentContent.trim() });
33
- }
34
- inTextSection = false;
35
- currentContent = '';
36
- collectingContent = false;
51
+ if (!current)
37
52
  continue;
53
+ // Check for field:: value
54
+ const fieldMatch = line.match(/^(\w+)::\s*(.*)$/);
55
+ if (fieldMatch) {
56
+ finalizeField();
57
+ currentFieldName = fieldMatch[1];
58
+ const inlineValue = fieldMatch[2].trim();
59
+ currentFieldLines = inlineValue ? [inlineValue] : [];
60
+ }
61
+ else if (currentFieldName) {
62
+ // Continue multiline field value
63
+ currentFieldLines.push(line);
64
+ }
65
+ else if (line.trim() && !freeTextWarned) {
66
+ freeTextWarned = true;
67
+ const preview = line.trim().length > 60 ? line.trim().slice(0, 60) + '...' : line.trim();
68
+ warnings.push({
69
+ file: '',
70
+ line: lineNum,
71
+ message: `Text outside of a field:: definition will be ignored: "${preview}"`,
72
+ suggestion: 'Place this text inside a field (e.g., content:: your text), or remove it',
73
+ severity: 'warning',
74
+ });
38
75
  }
39
- if (inTextSection) {
40
- // Check for content:: field
41
- const contentMatch = line.match(/^content::\s*(.*)$/);
42
- if (contentMatch) {
43
- // Start collecting content
44
- collectingContent = true;
45
- const inlineValue = contentMatch[1].trim();
46
- currentContent = inlineValue;
76
+ }
77
+ finalizeSubsection();
78
+ return { subsections, unknownHeaders, warnings };
79
+ }
80
+ /**
81
+ * Convert raw subsections into typed segments, validating required fields.
82
+ */
83
+ function convertSubsections(subsections, file) {
84
+ const segments = [];
85
+ const errors = [];
86
+ for (const sub of subsections) {
87
+ switch (sub.type) {
88
+ case 'text': {
89
+ const hasContentField = 'content' in sub.fields;
90
+ const content = sub.fields.content;
91
+ if (!hasContentField) {
92
+ errors.push({
93
+ file,
94
+ line: sub.line,
95
+ message: 'Text section missing content:: field',
96
+ suggestion: "Add 'content::' followed by your text content",
97
+ severity: 'error',
98
+ });
99
+ break;
100
+ }
101
+ if (content.trim()) {
102
+ segments.push({ type: 'text', content: content.trim() });
103
+ }
104
+ break;
47
105
  }
48
- else if (collectingContent) {
49
- // Check if this line starts another field (ends content collection)
50
- if (line.match(/^\w+::\s*/)) {
51
- // Save current content and stop collecting
52
- if (currentContent.trim()) {
53
- segments.push({ type: 'text', content: currentContent.trim() });
54
- }
55
- collectingContent = false;
56
- currentContent = '';
106
+ case 'chat': {
107
+ const hasInstructionsField = 'instructions' in sub.fields;
108
+ const instructions = sub.fields.instructions;
109
+ if (!hasInstructionsField) {
110
+ errors.push({
111
+ file,
112
+ line: sub.line,
113
+ message: 'Chat segment missing instructions:: field',
114
+ suggestion: "Add 'instructions:: Your instructions here' to the chat segment",
115
+ severity: 'error',
116
+ });
117
+ break;
57
118
  }
58
- else {
59
- // Continue multiline content
60
- if (currentContent) {
61
- currentContent += '\n' + line;
62
- }
63
- else {
64
- currentContent = line;
65
- }
119
+ if (!instructions || instructions.trim() === '') {
120
+ errors.push({
121
+ file,
122
+ line: sub.line,
123
+ message: 'Chat segment has empty instructions:: field',
124
+ suggestion: 'Add instructions text after instructions::',
125
+ severity: 'warning',
126
+ });
66
127
  }
128
+ const segment = {
129
+ type: 'chat',
130
+ instructions: instructions || '',
131
+ hidePreviousContentFromUser: sub.fields.hidePreviousContentFromUser?.toLowerCase() === 'true' ? true : undefined,
132
+ hidePreviousContentFromTutor: sub.fields.hidePreviousContentFromTutor?.toLowerCase() === 'true' ? true : undefined,
133
+ };
134
+ segments.push(segment);
135
+ break;
67
136
  }
68
137
  }
69
138
  }
70
- // Don't forget the last segment
71
- if (collectingContent && currentContent.trim()) {
72
- segments.push({ type: 'text', content: currentContent.trim() });
139
+ return { segments, errors };
140
+ }
141
+ /**
142
+ * Parse ## Text and ## Chat subsections from within a Page section body.
143
+ * Reports errors for unknown ## headers and missing required fields.
144
+ *
145
+ * @param body - The body text of a # Page: section
146
+ * @param file - File path for error reporting
147
+ * @param baseLineNum - Line number offset (body's position within the file)
148
+ * @returns Segment objects (TextSegment | ChatSegment) and any errors
149
+ */
150
+ export function parsePageSegments(body, file = '', baseLineNum = 0) {
151
+ const errors = [];
152
+ const { subsections, unknownHeaders, warnings } = collectRawSubsections(body, baseLineNum);
153
+ // Forward free-text warnings with file path
154
+ for (const w of warnings) {
155
+ errors.push({ ...w, file });
156
+ }
157
+ // Report unknown headers
158
+ for (const unk of unknownHeaders) {
159
+ const capitalized = [...VALID_PAGE_SUBSECTION_TYPES].map(t => t[0].toUpperCase() + t.slice(1));
160
+ errors.push({
161
+ file,
162
+ line: unk.line,
163
+ message: `Unknown section type: ${unk.rawType}`,
164
+ suggestion: `Valid types: ${capitalized.join(', ')}`,
165
+ severity: 'error',
166
+ });
73
167
  }
74
- return segments;
168
+ const result = convertSubsections(subsections, file);
169
+ errors.push(...result.errors);
170
+ return { segments: result.segments, errors };
75
171
  }
76
172
  export function parseModule(content, file) {
77
173
  const errors = [];
@@ -82,24 +178,15 @@ export function parseModule(content, file) {
82
178
  return { module: null, errors };
83
179
  }
84
180
  const { frontmatter, body, bodyStartLine } = frontmatterResult;
85
- // Validate required frontmatter fields
86
- if (!frontmatter.slug) {
87
- errors.push({
88
- file,
89
- line: 2,
90
- message: 'Missing required field: slug',
91
- suggestion: "Add 'slug: your-module-slug' to frontmatter",
92
- severity: 'error',
93
- });
94
- }
95
- if (!frontmatter.title) {
96
- errors.push({
97
- file,
98
- line: 2,
99
- message: 'Missing required field: title',
100
- suggestion: "Add 'title: Your Module Title' to frontmatter",
101
- severity: 'error',
102
- });
181
+ const frontmatterErrors = validateFrontmatter(frontmatter, 'module', file);
182
+ errors.push(...frontmatterErrors);
183
+ // Module-specific: validate slug format (only if slug is present and non-empty)
184
+ const slug = frontmatter.slug;
185
+ if (typeof slug === 'string' && slug.trim() !== '') {
186
+ const slugFormatError = validateSlugFormat(slug, file, 2);
187
+ if (slugFormatError) {
188
+ errors.push(slugFormatError);
189
+ }
103
190
  }
104
191
  if (errors.length > 0) {
105
192
  return { module: null, errors };
@@ -116,6 +203,15 @@ export function parseModule(content, file) {
116
203
  for (const section of sectionsResult.sections) {
117
204
  section.line += bodyStartLine - 1;
118
205
  }
206
+ if (sectionsResult.sections.length === 0) {
207
+ errors.push({
208
+ file,
209
+ line: bodyStartLine,
210
+ message: 'Module has no sections',
211
+ suggestion: "Add sections like '# Page:', '# Learning Outcome:', or '# Uncategorized:'",
212
+ severity: 'warning',
213
+ });
214
+ }
119
215
  const module = {
120
216
  slug: frontmatter.slug,
121
217
  title: frontmatter.title,
@@ -1 +1 @@
1
- {"version":3,"file":"module.js","sourceRoot":"","sources":["../../src/parser/module.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"module.js","sourceRoot":"","sources":["../../src/parser/module.ts"],"names":[],"mappings":"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"}