planfs-core 1.2.0 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/README.md +107 -0
  2. package/dist/ai.d.ts +1 -19
  3. package/dist/ai.d.ts.map +1 -1
  4. package/dist/ai.js +0 -124
  5. package/dist/ai.js.map +1 -1
  6. package/dist/entity-content.d.ts +6 -0
  7. package/dist/entity-content.d.ts.map +1 -0
  8. package/dist/entity-content.js +94 -0
  9. package/dist/entity-content.js.map +1 -0
  10. package/dist/entity-factory.d.ts +13 -0
  11. package/dist/entity-factory.d.ts.map +1 -0
  12. package/dist/entity-factory.js +109 -0
  13. package/dist/entity-factory.js.map +1 -0
  14. package/dist/files.d.ts.map +1 -1
  15. package/dist/files.js +7 -0
  16. package/dist/files.js.map +1 -1
  17. package/dist/format.d.ts +19 -0
  18. package/dist/format.d.ts.map +1 -0
  19. package/dist/format.js +73 -0
  20. package/dist/format.js.map +1 -0
  21. package/dist/history.d.ts +8 -0
  22. package/dist/history.d.ts.map +1 -0
  23. package/dist/history.js +59 -0
  24. package/dist/history.js.map +1 -0
  25. package/dist/index.d.ts +13 -0
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +13 -0
  28. package/dist/index.js.map +1 -1
  29. package/dist/repository.d.ts +5 -29
  30. package/dist/repository.d.ts.map +1 -1
  31. package/dist/repository.js +20 -196
  32. package/dist/repository.js.map +1 -1
  33. package/dist/search.d.ts +3 -0
  34. package/dist/search.d.ts.map +1 -1
  35. package/dist/search.js +34 -1
  36. package/dist/search.js.map +1 -1
  37. package/dist/semantic-analyzer.d.ts +50 -0
  38. package/dist/semantic-analyzer.d.ts.map +1 -0
  39. package/dist/semantic-analyzer.js +315 -0
  40. package/dist/semantic-analyzer.js.map +1 -0
  41. package/dist/semantic-context.d.ts +67 -0
  42. package/dist/semantic-context.d.ts.map +1 -0
  43. package/dist/semantic-context.js +109 -0
  44. package/dist/semantic-context.js.map +1 -0
  45. package/dist/semantic-formatter.d.ts +52 -0
  46. package/dist/semantic-formatter.d.ts.map +1 -0
  47. package/dist/semantic-formatter.js +354 -0
  48. package/dist/semantic-formatter.js.map +1 -0
  49. package/dist/semantic-inspection.d.ts +119 -0
  50. package/dist/semantic-inspection.d.ts.map +1 -0
  51. package/dist/semantic-inspection.js +295 -0
  52. package/dist/semantic-inspection.js.map +1 -0
  53. package/dist/semantic-profiles.d.ts +5 -0
  54. package/dist/semantic-profiles.d.ts.map +1 -0
  55. package/dist/semantic-profiles.js +70 -0
  56. package/dist/semantic-profiles.js.map +1 -0
  57. package/dist/semantic-types.d.ts +199 -0
  58. package/dist/semantic-types.d.ts.map +1 -0
  59. package/dist/semantic-types.js +3 -0
  60. package/dist/semantic-types.js.map +1 -0
  61. package/dist/semantic-validator.d.ts +46 -0
  62. package/dist/semantic-validator.d.ts.map +1 -0
  63. package/dist/semantic-validator.js +313 -0
  64. package/dist/semantic-validator.js.map +1 -0
  65. package/dist/semantic.d.ts +4 -0
  66. package/dist/semantic.d.ts.map +1 -0
  67. package/dist/semantic.js +641 -0
  68. package/dist/semantic.js.map +1 -0
  69. package/dist/task-update.d.ts +26 -0
  70. package/dist/task-update.d.ts.map +1 -0
  71. package/dist/task-update.js +165 -0
  72. package/dist/task-update.js.map +1 -0
  73. package/dist/types.d.ts +2 -0
  74. package/dist/types.d.ts.map +1 -1
  75. package/dist/validator.d.ts.map +1 -1
  76. package/dist/validator.js +18 -1
  77. package/dist/validator.js.map +1 -1
  78. package/package.json +4 -3
@@ -0,0 +1,199 @@
1
+ import { EntityType } from './types';
2
+ export type SemanticContractVersion = '1.0.0';
3
+ export type SemanticProfileVersion = '1.0.0';
4
+ export type SemanticProvenance = 'canonical' | 'alias' | 'rule-inferred' | 'nlp-inferred';
5
+ export interface SourcePoint {
6
+ offset: number;
7
+ line: number;
8
+ column: number;
9
+ }
10
+ export interface SourceRange {
11
+ start: SourcePoint;
12
+ end: SourcePoint;
13
+ }
14
+ export interface SemanticSource {
15
+ filePath: string;
16
+ rawMarkdown: string;
17
+ }
18
+ export interface SemanticPreamble {
19
+ markdown: string;
20
+ text: string;
21
+ range: SourceRange;
22
+ empty: boolean;
23
+ }
24
+ export type SectionKey = string;
25
+ export type ContentShape = 'prose' | 'list' | 'task-list' | 'references' | 'mixed' | 'empty';
26
+ export interface SemanticSubsection {
27
+ heading: string;
28
+ headingLevel: 3 | 4 | 5 | 6;
29
+ headingRange: SourceRange;
30
+ range: SourceRange;
31
+ markdown: string;
32
+ text: string;
33
+ children: SemanticSubsection[];
34
+ }
35
+ export interface OrderedSection {
36
+ index: number;
37
+ heading: string;
38
+ normalizedHeading: string;
39
+ headingLevel: 2;
40
+ key: SectionKey | null;
41
+ provenance: Exclude<SemanticProvenance, 'nlp-inferred'>;
42
+ headingRange: SourceRange;
43
+ contentRange: SourceRange;
44
+ range: SourceRange;
45
+ markdown: string;
46
+ contentMarkdown: string;
47
+ text: string;
48
+ contentShape: ContentShape;
49
+ empty: boolean;
50
+ subsections: SemanticSubsection[];
51
+ }
52
+ export interface SemanticCriterion {
53
+ id: string;
54
+ checked: true | false | null;
55
+ markdown: string;
56
+ text: string;
57
+ range: SourceRange;
58
+ sectionIndex: number;
59
+ listDepth: number;
60
+ parentCriterionId: string | null;
61
+ provenance: Exclude<SemanticProvenance, 'nlp-inferred'>;
62
+ }
63
+ export interface SemanticFinding {
64
+ markdown: string;
65
+ text: string;
66
+ range: SourceRange;
67
+ sectionIndex: number;
68
+ provenance: Exclude<SemanticProvenance, 'nlp-inferred'>;
69
+ }
70
+ export interface SemanticQuestion {
71
+ markdown: string;
72
+ text: string;
73
+ range: SourceRange;
74
+ sectionIndex: number;
75
+ provenance: Exclude<SemanticProvenance, 'nlp-inferred'>;
76
+ }
77
+ export interface SemanticDecisionStatement {
78
+ markdown: string;
79
+ text: string;
80
+ range: SourceRange;
81
+ sectionIndex: number;
82
+ provenance: Exclude<SemanticProvenance, 'nlp-inferred'>;
83
+ }
84
+ export interface SemanticReference {
85
+ kind: 'link' | 'autolink' | 'bare-entity-id';
86
+ label: string | null;
87
+ target: string;
88
+ range: SourceRange;
89
+ sectionIndex: number | null;
90
+ provenance: Exclude<SemanticProvenance, 'nlp-inferred'>;
91
+ }
92
+ export type MentionEntityType = 'task' | 'epic' | 'milestone' | 'decision';
93
+ export interface EntityMention {
94
+ id: string;
95
+ entityType: MentionEntityType;
96
+ form: 'prose' | 'link-label' | 'link-target';
97
+ range: SourceRange;
98
+ sectionIndex: number | null;
99
+ referenceTarget: string | null;
100
+ resolved: boolean | null;
101
+ authoritative: false;
102
+ provenance: 'rule-inferred' | 'nlp-inferred';
103
+ }
104
+ export interface KnownSectionView {
105
+ [key: SectionKey]: OrderedSection[];
106
+ }
107
+ export interface ConformanceSummary {
108
+ baseline: 'conformant' | 'nonconformant';
109
+ automationReady: 'conformant' | 'nonconformant' | 'not-evaluated';
110
+ lifecycle: 'conformant' | 'nonconformant' | 'not-applicable' | 'not-evaluated';
111
+ }
112
+ export type SemanticSeverity = 'info' | 'warning' | 'error';
113
+ export interface DiagnosticRepair {
114
+ summary: string;
115
+ kind: 'edit-markdown' | 'edit-frontmatter' | 'format' | 'none';
116
+ previewable: boolean;
117
+ }
118
+ export interface SemanticDiagnostic {
119
+ code: string;
120
+ severity: SemanticSeverity;
121
+ message: string;
122
+ range: SourceRange | null;
123
+ sectionIndex: number | null;
124
+ provenance: SemanticProvenance;
125
+ conformance: 'baseline' | 'automation-ready' | 'lifecycle' | 'analysis';
126
+ repair: DiagnosticRepair;
127
+ data?: Record<string, string | number | boolean | null>;
128
+ }
129
+ export interface AnalyzerIdentity {
130
+ id: string;
131
+ version: string;
132
+ }
133
+ export interface AnalyzerEvidence {
134
+ text: string;
135
+ range: SourceRange;
136
+ }
137
+ export interface AdvisorySignal {
138
+ kind: string;
139
+ message: string;
140
+ language: string;
141
+ analyzer: AnalyzerIdentity;
142
+ provenance: 'nlp-inferred';
143
+ range: SourceRange;
144
+ evidence: AnalyzerEvidence[];
145
+ confidence: number | null;
146
+ authoritative: false;
147
+ data: Record<string, string | number | boolean | null>;
148
+ }
149
+ export interface AnalyzerResult {
150
+ analyzer: AnalyzerIdentity;
151
+ language: string;
152
+ signals: AdvisorySignal[];
153
+ diagnostics: SemanticDiagnostic[];
154
+ }
155
+ export interface SemanticDocument {
156
+ contractVersion: SemanticContractVersion;
157
+ profile: {
158
+ entityType: EntityType;
159
+ version: SemanticProfileVersion;
160
+ };
161
+ source: SemanticSource;
162
+ preamble: SemanticPreamble;
163
+ sections: OrderedSection[];
164
+ knownSections: KnownSectionView;
165
+ criteria: SemanticCriterion[];
166
+ findings: SemanticFinding[];
167
+ questions: SemanticQuestion[];
168
+ decisions: SemanticDecisionStatement[];
169
+ references: SemanticReference[];
170
+ mentions: EntityMention[];
171
+ diagnostics: SemanticDiagnostic[];
172
+ conformance: ConformanceSummary;
173
+ analyzerResults: AnalyzerResult[];
174
+ }
175
+ export interface AnalyzerRequest {
176
+ document: SemanticDocument;
177
+ language: string;
178
+ }
179
+ export interface SemanticAnalyzer {
180
+ readonly identity: AnalyzerIdentity;
181
+ readonly supportedLanguages: readonly string[];
182
+ analyze(request: AnalyzerRequest): Promise<AnalyzerResult>;
183
+ }
184
+ export interface SemanticSectionDefinition {
185
+ key: SectionKey;
186
+ canonicalHeading: string;
187
+ aliases: readonly string[];
188
+ cardinality: '0..1';
189
+ expectedContent: ContentShape | 'prose-or-list' | 'list-or-references';
190
+ }
191
+ export interface SemanticContentProfile {
192
+ entityType: EntityType;
193
+ version: SemanticProfileVersion;
194
+ sections: readonly SemanticSectionDefinition[];
195
+ }
196
+ export interface ParseSemanticDocumentOptions {
197
+ filePath?: string;
198
+ }
199
+ //# sourceMappingURL=semantic-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"semantic-types.d.ts","sourceRoot":"","sources":["../src/semantic-types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=semantic-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"semantic-types.js","sourceRoot":"","sources":["../src/semantic-types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,46 @@
1
+ import { AnalyzerResult, ConformanceSummary, SemanticAnalyzer, SemanticDiagnostic, SemanticDocument, SemanticSeverity } from './semantic-types';
2
+ import { Entity, Repository } from './types';
3
+ export type SemanticValidationTier = 'baseline' | 'automation-ready';
4
+ export type CriterionCheckStatePolicy = 'ignore' | SemanticSeverity;
5
+ export interface SemanticValidationOptions {
6
+ tier?: SemanticValidationTier;
7
+ lifecycle?: boolean;
8
+ criterionCheckState?: CriterionCheckStatePolicy;
9
+ analysis?: boolean;
10
+ language?: string;
11
+ analyzer?: SemanticAnalyzer;
12
+ }
13
+ export interface SemanticValidationDiagnostic extends SemanticDiagnostic {
14
+ entityId: string;
15
+ filePath: string;
16
+ sectionKey: string | null;
17
+ }
18
+ export interface SemanticEntityValidationResult {
19
+ entityId: string;
20
+ entityType: Entity['type'];
21
+ filePath: string;
22
+ tier: SemanticValidationTier;
23
+ conformance: ConformanceSummary;
24
+ valid: boolean;
25
+ diagnostics: SemanticValidationDiagnostic[];
26
+ analysis: AnalyzerResult | null;
27
+ }
28
+ export interface SemanticRepositoryValidationResult {
29
+ tier: SemanticValidationTier;
30
+ lifecycle: boolean;
31
+ analysisEnabled: boolean;
32
+ valid: boolean;
33
+ severityCounts: Record<SemanticSeverity, number>;
34
+ entities: SemanticEntityValidationResult[];
35
+ diagnostics: SemanticValidationDiagnostic[];
36
+ }
37
+ /** Validate one loaded entity without changing its body or metadata. */
38
+ export declare function validateSemanticEntity(entity: Entity, options?: SemanticValidationOptions): Promise<SemanticEntityValidationResult>;
39
+ /**
40
+ * Validate an already parsed document. This deterministic path performs no
41
+ * analyzer work and is identical whether an analyzer is installed or not.
42
+ */
43
+ export declare function validateSemanticDocument(entity: Entity, document: SemanticDocument, options?: SemanticValidationOptions): SemanticEntityValidationResult;
44
+ /** Validate every active entity and apply repository-aware lifecycle policy. */
45
+ export declare function validateSemanticRepository(repository: Repository, options?: SemanticValidationOptions): Promise<SemanticRepositoryValidationResult>;
46
+ //# sourceMappingURL=semantic-validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"semantic-validator.d.ts","sourceRoot":"","sources":["../src/semantic-validator.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,cAAc,EACd,kBAAkB,EAElB,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAEjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE7C,MAAM,MAAM,sBAAsB,GAAG,UAAU,GAAG,kBAAkB,CAAC;AACrE,MAAM,MAAM,yBAAyB,GAAG,QAAQ,GAAG,gBAAgB,CAAC;AAEpE,MAAM,WAAW,yBAAyB;IACxC,IAAI,CAAC,EAAE,sBAAsB,CAAC;IAC9B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,mBAAmB,CAAC,EAAE,yBAAyB,CAAC;IAChD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,gBAAgB,CAAC;CAC7B;AAED,MAAM,WAAW,4BAA6B,SAAQ,kBAAkB;IACtE,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,sBAAsB,CAAC;IAC7B,WAAW,EAAE,kBAAkB,CAAC;IAChC,KAAK,EAAE,OAAO,CAAC;IACf,WAAW,EAAE,4BAA4B,EAAE,CAAC;IAC5C,QAAQ,EAAE,cAAc,GAAG,IAAI,CAAC;CACjC;AAED,MAAM,WAAW,kCAAkC;IACjD,IAAI,EAAE,sBAAsB,CAAC;IAC7B,SAAS,EAAE,OAAO,CAAC;IACnB,eAAe,EAAE,OAAO,CAAC;IACzB,KAAK,EAAE,OAAO,CAAC;IACf,cAAc,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;IACjD,QAAQ,EAAE,8BAA8B,EAAE,CAAC;IAC3C,WAAW,EAAE,4BAA4B,EAAE,CAAC;CAC7C;AASD,wEAAwE;AACxE,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,yBAA8B,GACtC,OAAO,CAAC,8BAA8B,CAAC,CAsBzC;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,GAAE,yBAA8B,GACtC,8BAA8B,CA2ChC;AAED,gFAAgF;AAChF,wBAAsB,0BAA0B,CAC9C,UAAU,EAAE,UAAU,EACtB,OAAO,GAAE,yBAA8B,GACtC,OAAO,CAAC,kCAAkC,CAAC,CAwD7C"}
@@ -0,0 +1,313 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateSemanticEntity = validateSemanticEntity;
4
+ exports.validateSemanticDocument = validateSemanticDocument;
5
+ exports.validateSemanticRepository = validateSemanticRepository;
6
+ const semantic_analyzer_1 = require("./semantic-analyzer");
7
+ const semantic_profiles_1 = require("./semantic-profiles");
8
+ const semantic_1 = require("./semantic");
9
+ const NON_READY_REFINEMENT_STATES = new Set([
10
+ 'captured',
11
+ 'needs-refinement',
12
+ 'deferred',
13
+ 'discarded'
14
+ ]);
15
+ /** Validate one loaded entity without changing its body or metadata. */
16
+ async function validateSemanticEntity(entity, options = {}) {
17
+ const tier = options.tier ?? 'baseline';
18
+ const document = (0, semantic_1.parseSemanticDocument)(entity.type, entity.body, { filePath: entity.filePath });
19
+ const result = validateSemanticDocument(entity, document, options);
20
+ const analysis = await (0, semantic_analyzer_1.runSemanticAnalysis)(document, {
21
+ enabled: options.analysis === true,
22
+ language: options.language ?? 'en',
23
+ analyzer: options.analyzer
24
+ });
25
+ const analysisDiagnostics = analysis?.diagnostics.map(diagnostic => enrichDiagnostic(entity, document, diagnostic)) ?? [];
26
+ const diagnostics = [...result.diagnostics, ...analysisDiagnostics].sort(compareDiagnostics);
27
+ return {
28
+ ...result,
29
+ tier,
30
+ valid: !diagnostics.some(diagnostic => diagnostic.severity === 'error'),
31
+ diagnostics,
32
+ analysis
33
+ };
34
+ }
35
+ /**
36
+ * Validate an already parsed document. This deterministic path performs no
37
+ * analyzer work and is identical whether an analyzer is installed or not.
38
+ */
39
+ function validateSemanticDocument(entity, document, options = {}) {
40
+ const tier = options.tier ?? 'baseline';
41
+ const diagnostics = document.diagnostics
42
+ .filter(diagnostic => diagnostic.conformance === 'baseline')
43
+ .map(diagnostic => enrichDiagnostic(entity, document, diagnostic));
44
+ const automationEvaluated = tier === 'automation-ready' && shouldEvaluateAutomation(entity);
45
+ if (automationEvaluated) {
46
+ diagnostics.push(...document.diagnostics
47
+ .filter(diagnostic => diagnostic.conformance === 'automation-ready')
48
+ .map(diagnostic => enrichDiagnostic(entity, document, diagnostic)));
49
+ diagnostics.push(...validateAutomationReady(entity, document, options));
50
+ }
51
+ if (options.lifecycle === true) {
52
+ diagnostics.push(...validateLifecycle(entity, document));
53
+ }
54
+ const uniqueDiagnostics = deduplicateDiagnostics(diagnostics).sort(compareDiagnostics);
55
+ const baseline = document.conformance.baseline;
56
+ const automationReady = tier === 'baseline' || !automationEvaluated
57
+ ? 'not-evaluated'
58
+ : hasNonconformingDiagnostics(uniqueDiagnostics, 'automation-ready') || baseline === 'nonconformant'
59
+ ? 'nonconformant'
60
+ : 'conformant';
61
+ const lifecycle = options.lifecycle !== true
62
+ ? 'not-evaluated'
63
+ : hasNonconformingDiagnostics(uniqueDiagnostics, 'lifecycle')
64
+ ? 'nonconformant'
65
+ : lifecycleApplies(entity)
66
+ ? 'conformant'
67
+ : 'not-applicable';
68
+ return {
69
+ entityId: entity.id,
70
+ entityType: entity.type,
71
+ filePath: entity.filePath,
72
+ tier,
73
+ conformance: { baseline, automationReady, lifecycle },
74
+ valid: !uniqueDiagnostics.some(diagnostic => diagnostic.severity === 'error'),
75
+ diagnostics: uniqueDiagnostics,
76
+ analysis: null
77
+ };
78
+ }
79
+ /** Validate every active entity and apply repository-aware lifecycle policy. */
80
+ async function validateSemanticRepository(repository, options = {}) {
81
+ const entities = [
82
+ ...repository.tasks.values(),
83
+ ...repository.epics.values(),
84
+ ...repository.milestones.values(),
85
+ ...repository.decisions.values()
86
+ ];
87
+ const results = await Promise.all(entities.map(entity => validateSemanticEntity(entity, options)));
88
+ if (options.lifecycle === true) {
89
+ for (const result of results) {
90
+ if (result.entityType !== 'epic')
91
+ continue;
92
+ const epic = repository.epics.get(result.entityId);
93
+ if (!epic || epic.status !== 'completed')
94
+ continue;
95
+ const openChildren = [...repository.tasks.values()]
96
+ .filter(task => task.epic === epic.id && task.status !== 'done')
97
+ .map(task => task.id)
98
+ .sort();
99
+ if (openChildren.length === 0)
100
+ continue;
101
+ result.diagnostics.push(createDiagnostic(epic, null, 'content.lifecycle.open-child-work', 'warning', `Completed epic has open child tasks: ${openChildren.join(', ')}.`, null, null, 'canonical', 'lifecycle', 'Complete or reassign the authoritative child tasks, or reopen the epic.', 'edit-frontmatter', false, { openChildTaskIds: openChildren.join(',') }));
102
+ result.conformance.lifecycle = 'nonconformant';
103
+ }
104
+ }
105
+ for (const result of results) {
106
+ result.diagnostics = deduplicateDiagnostics(result.diagnostics).sort(compareDiagnostics);
107
+ result.valid = !result.diagnostics.some(diagnostic => diagnostic.severity === 'error');
108
+ }
109
+ const diagnostics = results.flatMap(result => result.diagnostics).sort(compareDiagnostics);
110
+ const severityCounts = diagnostics.reduce((counts, diagnostic) => ({ ...counts, [diagnostic.severity]: counts[diagnostic.severity] + 1 }), { info: 0, warning: 0, error: 0 });
111
+ return {
112
+ tier: options.tier ?? 'baseline',
113
+ lifecycle: options.lifecycle === true,
114
+ analysisEnabled: options.analysis === true,
115
+ valid: severityCounts.error === 0,
116
+ severityCounts,
117
+ entities: results,
118
+ diagnostics
119
+ };
120
+ }
121
+ function validateAutomationReady(entity, document, options) {
122
+ const diagnostics = [];
123
+ const profile = (0, semantic_profiles_1.getSemanticContentProfile)(entity.type);
124
+ const criterionPolicy = options.criterionCheckState ?? 'warning';
125
+ if (entity.type !== 'decision' && document.preamble.empty) {
126
+ diagnostics.push(createDiagnostic(entity, document, 'content.preamble.missing', 'warning', `Automation-ready ${entity.type}s require a non-empty summary before the first section.`, document.preamble.range, null, 'rule-inferred', 'automation-ready', 'Add a concise summary before the first level-two heading.', 'edit-markdown', false));
127
+ }
128
+ const requiredSections = requiredSectionKeys(entity.type);
129
+ for (const key of requiredSections) {
130
+ const sections = document.knownSections[key] ?? [];
131
+ const frontmatterValue = authoritativeBodyValue(entity, key);
132
+ if (sections.length === 0 && !frontmatterValue) {
133
+ diagnostics.push(createDiagnostic(entity, document, 'content.section.missing', 'warning', `Automation-ready ${entity.type}s require a non-empty '${key}' section.`, insertionRange(document), null, 'rule-inferred', 'automation-ready', `Add the canonical '${canonicalHeading(profile, key)}' section with meaningful content.`, 'edit-markdown', false, { key }));
134
+ continue;
135
+ }
136
+ if (sections.length > 0 && sections.every(section => section.empty) && !frontmatterValue) {
137
+ diagnostics.push(createDiagnostic(entity, document, 'content.section.required-empty', 'warning', `Required '${key}' content is empty.`, sections[0]?.contentRange ?? insertionRange(document), sections[0]?.index ?? null, sections[0]?.provenance ?? 'rule-inferred', 'automation-ready', `Add meaningful content to '${canonicalHeading(profile, key)}'.`, 'edit-markdown', false, { key }));
138
+ }
139
+ }
140
+ for (const definition of profile.sections) {
141
+ for (const section of document.knownSections[definition.key] ?? []) {
142
+ if (section.empty || contentShapeMatches(section, definition.expectedContent))
143
+ continue;
144
+ const acceptanceLike = definition.expectedContent === 'task-list';
145
+ diagnostics.push(createDiagnostic(entity, document, acceptanceLike
146
+ ? 'content.acceptance-criteria.unstructured'
147
+ : 'content.section.wrong-shape', 'warning', acceptanceLike
148
+ ? `Section '${section.heading}' contains substantive content outside a criteria list.`
149
+ : `Section '${section.heading}' has '${section.contentShape}' content; expected '${definition.expectedContent}'.`, section.contentRange, section.index, section.provenance, 'automation-ready', acceptanceLike
150
+ ? 'Convert the substantive requirements into Markdown list items.'
151
+ : `Use ${definition.expectedContent} content or retain it under a custom section heading.`, 'edit-markdown', false, { key: definition.key, actualShape: section.contentShape, expectedShape: definition.expectedContent }));
152
+ }
153
+ }
154
+ if (criterionPolicy !== 'ignore') {
155
+ for (const criterion of document.criteria.filter(item => item.checked === null)) {
156
+ diagnostics.push(createDiagnostic(entity, document, 'content.criterion.missing-check-state', criterionPolicy, 'Criterion is an ordinary list item and has no checked or unchecked state.', criterion.range, criterion.sectionIndex, criterion.provenance, 'automation-ready', 'Add an explicit [ ] or [x] task-list marker.', 'edit-markdown', true, { criterionId: criterion.id }));
157
+ }
158
+ }
159
+ if ((entity.type === 'task' || entity.type === 'milestone') && document.criteria.length === 0) {
160
+ const key = entity.type === 'task' ? 'acceptanceCriteria' : 'releaseCriteria';
161
+ const section = document.knownSections[key]?.[0];
162
+ diagnostics.push(createDiagnostic(entity, document, 'content.criterion.missing', 'warning', `Automation-ready ${entity.type}s require at least one criterion.`, section?.contentRange ?? insertionRange(document), section?.index ?? null, section?.provenance ?? 'rule-inferred', 'automation-ready', 'Add at least one Markdown task-list criterion.', 'edit-markdown', false, { key }));
163
+ }
164
+ diagnostics.push(...frontmatterBodyConflicts(entity, document));
165
+ return diagnostics;
166
+ }
167
+ function validateLifecycle(entity, document) {
168
+ const diagnostics = [];
169
+ if (entity.type === 'task' && ['review', 'done'].includes(entity.status)) {
170
+ const incomplete = document.criteria.filter(criterion => criterion.checked !== true);
171
+ if (document.criteria.length === 0 || incomplete.length > 0) {
172
+ diagnostics.push(createDiagnostic(entity, document, 'content.lifecycle.incomplete-criteria', entity.status === 'done' ? 'warning' : 'info', `${entity.status === 'done' ? 'Done' : 'Review'} task has ${document.criteria.length === 0 ? 'no criteria' : `${incomplete.length} incomplete criteria`}.`, incomplete[0]?.range ?? insertionRange(document), incomplete[0]?.sectionIndex ?? null, incomplete[0]?.provenance ?? 'rule-inferred', 'lifecycle', 'Review the criteria or explicitly change authoritative task status.', 'edit-frontmatter', false, { status: entity.status, incompleteCount: incomplete.length }));
173
+ }
174
+ }
175
+ if (entity.type === 'epic' && entity.status === 'completed') {
176
+ const outcomes = document.knownSections.outcomes ?? [];
177
+ if (outcomes.length === 0 || outcomes.every(section => section.empty)) {
178
+ diagnostics.push(lifecycleMissingSection(entity, document, 'outcomes'));
179
+ }
180
+ }
181
+ if (entity.type === 'milestone' && entity.status === 'completed') {
182
+ const incomplete = document.criteria.filter(criterion => criterion.checked !== true);
183
+ if (document.criteria.length === 0 || incomplete.length > 0) {
184
+ diagnostics.push(createDiagnostic(entity, document, 'content.lifecycle.incomplete-criteria', 'warning', `Completed milestone has ${document.criteria.length === 0 ? 'no release criteria' : `${incomplete.length} incomplete release criteria`}.`, incomplete[0]?.range ?? insertionRange(document), incomplete[0]?.sectionIndex ?? null, incomplete[0]?.provenance ?? 'rule-inferred', 'lifecycle', 'Complete the release criteria or explicitly reopen the milestone.', 'edit-frontmatter', false, { status: entity.status, incompleteCount: incomplete.length }));
185
+ }
186
+ }
187
+ if (entity.type === 'decision' && entity.status === 'accepted') {
188
+ for (const key of ['context', 'decision', 'consequences']) {
189
+ const sections = document.knownSections[key] ?? [];
190
+ if (!authoritativeBodyValue(entity, key) && (sections.length === 0 || sections.every(section => section.empty))) {
191
+ diagnostics.push(lifecycleMissingSection(entity, document, key));
192
+ }
193
+ }
194
+ }
195
+ return diagnostics;
196
+ }
197
+ function lifecycleMissingSection(entity, document, key) {
198
+ return createDiagnostic(entity, document, 'content.lifecycle.required-content-missing', 'warning', `${entity.status} ${entity.type} is missing required '${key}' content.`, insertionRange(document), null, 'rule-inferred', 'lifecycle', `Add '${key}' content or explicitly change authoritative lifecycle status.`, 'edit-frontmatter', false, { status: entity.status, key });
199
+ }
200
+ function frontmatterBodyConflicts(entity, document) {
201
+ const keys = entity.type === 'decision'
202
+ ? ['context', 'decision', 'consequences']
203
+ : entity.type === 'epic' || entity.type === 'milestone'
204
+ ? ['description']
205
+ : [];
206
+ return keys.flatMap(key => {
207
+ const authoritative = authoritativeBodyValue(entity, key);
208
+ const section = key === 'description' ? null : document.knownSections[key]?.[0];
209
+ const body = key === 'description' ? document.preamble.text : section?.text;
210
+ if (!authoritative || !body || normalizeText(authoritative) === normalizeText(body))
211
+ return [];
212
+ return [createDiagnostic(entity, document, 'content.frontmatter-body.conflict', 'warning', `Authoritative frontmatter '${key}' differs from the Markdown body view.`, section?.contentRange ?? document.preamble.range, section?.index ?? null, section?.provenance ?? 'rule-inferred', 'automation-ready', 'Reconcile the text explicitly; frontmatter remains authoritative.', 'edit-frontmatter', false, { key })];
213
+ });
214
+ }
215
+ function requiredSectionKeys(entityType) {
216
+ switch (entityType) {
217
+ case 'task': return ['acceptanceCriteria'];
218
+ case 'epic': return ['outcomes'];
219
+ case 'milestone': return ['outcomes', 'releaseCriteria'];
220
+ case 'decision': return ['context', 'decision', 'consequences'];
221
+ }
222
+ }
223
+ function authoritativeBodyValue(entity, key) {
224
+ const value = key === 'description'
225
+ ? (entity.type === 'epic' || entity.type === 'milestone' ? entity.description : undefined)
226
+ : entity.type === 'decision' && ['context', 'decision', 'consequences'].includes(key)
227
+ ? entity[key]
228
+ : undefined;
229
+ return typeof value === 'string' && value.trim() ? value : undefined;
230
+ }
231
+ function contentShapeMatches(section, expected) {
232
+ switch (expected) {
233
+ case 'mixed': return true;
234
+ case 'prose-or-list': return section.contentShape !== 'empty';
235
+ case 'list-or-references': return ['list', 'task-list', 'references'].includes(section.contentShape);
236
+ case 'task-list': return ['task-list', 'list'].includes(section.contentShape);
237
+ default: return section.contentShape === expected;
238
+ }
239
+ }
240
+ function shouldEvaluateAutomation(entity) {
241
+ return entity.type !== 'task'
242
+ || !entity.refinementState
243
+ || !NON_READY_REFINEMENT_STATES.has(entity.refinementState);
244
+ }
245
+ function lifecycleApplies(entity) {
246
+ return (entity.type === 'task' && ['review', 'done'].includes(entity.status))
247
+ || (entity.type === 'epic' && entity.status === 'completed')
248
+ || (entity.type === 'milestone' && entity.status === 'completed')
249
+ || (entity.type === 'decision' && entity.status === 'accepted');
250
+ }
251
+ function hasNonconformingDiagnostics(diagnostics, conformance) {
252
+ return diagnostics.some(diagnostic => (diagnostic.conformance === conformance && diagnostic.code !== 'content.section.alias'));
253
+ }
254
+ function enrichDiagnostic(entity, document, diagnostic) {
255
+ const section = diagnostic.sectionIndex === null
256
+ ? undefined
257
+ : document.sections[diagnostic.sectionIndex];
258
+ return {
259
+ ...diagnostic,
260
+ entityId: entity.id,
261
+ filePath: entity.filePath,
262
+ sectionKey: section?.key ?? (typeof diagnostic.data?.key === 'string' ? diagnostic.data.key : null)
263
+ };
264
+ }
265
+ function createDiagnostic(entity, document, code, severity, message, range, sectionIndex, provenance, conformance, repairSummary, repairKind, previewable, data) {
266
+ const section = document && sectionIndex !== null ? document.sections[sectionIndex] : undefined;
267
+ return {
268
+ entityId: entity.id,
269
+ filePath: entity.filePath,
270
+ sectionKey: section?.key ?? (typeof data?.key === 'string' ? data.key : null),
271
+ code,
272
+ severity,
273
+ message,
274
+ range,
275
+ sectionIndex,
276
+ provenance,
277
+ conformance,
278
+ repair: { summary: repairSummary, kind: repairKind, previewable },
279
+ ...(data ? { data } : {})
280
+ };
281
+ }
282
+ function insertionRange(document) {
283
+ const point = document.sections.at(-1)?.range.end ?? document.preamble.range.end;
284
+ return { start: { ...point }, end: { ...point } };
285
+ }
286
+ function canonicalHeading(profile, key) {
287
+ return profile.sections.find(section => section.key === key)?.canonicalHeading ?? key;
288
+ }
289
+ function normalizeText(value) {
290
+ return value.replace(/\s+/gu, ' ').trim().toLowerCase();
291
+ }
292
+ function deduplicateDiagnostics(diagnostics) {
293
+ const seen = new Set();
294
+ return diagnostics.filter(diagnostic => {
295
+ const key = [
296
+ diagnostic.code,
297
+ diagnostic.entityId,
298
+ diagnostic.range?.start.offset ?? -1,
299
+ diagnostic.sectionKey ?? '',
300
+ diagnostic.data?.criterionId ?? ''
301
+ ].join(':');
302
+ if (seen.has(key))
303
+ return false;
304
+ seen.add(key);
305
+ return true;
306
+ });
307
+ }
308
+ function compareDiagnostics(left, right) {
309
+ return left.filePath.localeCompare(right.filePath)
310
+ || (left.range?.start.offset ?? -1) - (right.range?.start.offset ?? -1)
311
+ || left.code.localeCompare(right.code);
312
+ }
313
+ //# sourceMappingURL=semantic-validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"semantic-validator.js","sourceRoot":"","sources":["../src/semantic-validator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { EntityType } from './types';
2
+ import { ParseSemanticDocumentOptions, SemanticDocument } from './semantic-types';
3
+ export declare function parseSemanticDocument(entityType: EntityType, rawMarkdown: string, options?: ParseSemanticDocumentOptions): SemanticDocument;
4
+ //# sourceMappingURL=semantic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"semantic.d.ts","sourceRoot":"","sources":["../src/semantic.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,OAAO,EAKL,4BAA4B,EAK5B,gBAAgB,EAQjB,MAAM,kBAAkB,CAAC;AA0D1B,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,UAAU,EACtB,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,4BAAiC,GACzC,gBAAgB,CAkGlB"}