planfs-core 1.3.0 → 1.4.1

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 (54) hide show
  1. package/README.md +107 -0
  2. package/dist/entity-content.d.ts +6 -0
  3. package/dist/entity-content.d.ts.map +1 -0
  4. package/dist/entity-content.js +94 -0
  5. package/dist/entity-content.js.map +1 -0
  6. package/dist/entity-factory.d.ts +13 -0
  7. package/dist/entity-factory.d.ts.map +1 -0
  8. package/dist/entity-factory.js +109 -0
  9. package/dist/entity-factory.js.map +1 -0
  10. package/dist/index.d.ts +10 -0
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +10 -0
  13. package/dist/index.js.map +1 -1
  14. package/dist/repository.d.ts +3 -31
  15. package/dist/repository.d.ts.map +1 -1
  16. package/dist/repository.js +14 -204
  17. package/dist/repository.js.map +1 -1
  18. package/dist/semantic-analyzer.d.ts +50 -0
  19. package/dist/semantic-analyzer.d.ts.map +1 -0
  20. package/dist/semantic-analyzer.js +315 -0
  21. package/dist/semantic-analyzer.js.map +1 -0
  22. package/dist/semantic-context.d.ts +67 -0
  23. package/dist/semantic-context.d.ts.map +1 -0
  24. package/dist/semantic-context.js +109 -0
  25. package/dist/semantic-context.js.map +1 -0
  26. package/dist/semantic-formatter.d.ts +52 -0
  27. package/dist/semantic-formatter.d.ts.map +1 -0
  28. package/dist/semantic-formatter.js +354 -0
  29. package/dist/semantic-formatter.js.map +1 -0
  30. package/dist/semantic-inspection.d.ts +119 -0
  31. package/dist/semantic-inspection.d.ts.map +1 -0
  32. package/dist/semantic-inspection.js +295 -0
  33. package/dist/semantic-inspection.js.map +1 -0
  34. package/dist/semantic-profiles.d.ts +5 -0
  35. package/dist/semantic-profiles.d.ts.map +1 -0
  36. package/dist/semantic-profiles.js +70 -0
  37. package/dist/semantic-profiles.js.map +1 -0
  38. package/dist/semantic-types.d.ts +199 -0
  39. package/dist/semantic-types.d.ts.map +1 -0
  40. package/dist/semantic-types.js +3 -0
  41. package/dist/semantic-types.js.map +1 -0
  42. package/dist/semantic-validator.d.ts +46 -0
  43. package/dist/semantic-validator.d.ts.map +1 -0
  44. package/dist/semantic-validator.js +313 -0
  45. package/dist/semantic-validator.js.map +1 -0
  46. package/dist/semantic.d.ts +4 -0
  47. package/dist/semantic.d.ts.map +1 -0
  48. package/dist/semantic.js +641 -0
  49. package/dist/semantic.js.map +1 -0
  50. package/dist/task-update.d.ts +2 -2
  51. package/dist/task-update.d.ts.map +1 -1
  52. package/dist/task-update.js +9 -0
  53. package/dist/task-update.js.map +1 -1
  54. package/package.json +3 -2
package/README.md CHANGED
@@ -8,6 +8,7 @@ Core parsing and validation library for PlanFS.
8
8
 
9
9
  - **File Discovery** - Discover `.planfs/` files in a repository
10
10
  - **Parsing** - Extract YAML frontmatter and markdown body
11
+ - **Semantic Markdown** - Inspect body structure without rewriting source files
11
12
  - **Type System** - Strong typing for all entity types
12
13
  - **Validation** - Schema validation and constraint checking
13
14
  - **Repository API** - Load and query repositories
@@ -59,6 +60,104 @@ const todoTasks = getTasksByStatus(repo, 'todo');
59
60
  const myTasks = getTasksByAssignee(repo, 'user@example.com');
60
61
  ```
61
62
 
63
+ ### Inspecting Semantic Markdown
64
+
65
+ Semantic parsing is explicit and deferred, so loading a repository does not parse every body automatically:
66
+
67
+ ```typescript
68
+ import { parseSemanticDocument } from 'planfs-core';
69
+
70
+ const semantic = parseSemanticDocument('task', task.body, {
71
+ filePath: task.filePath
72
+ });
73
+
74
+ console.log(semantic.preamble.text);
75
+ console.log(semantic.criteria);
76
+ console.log(semantic.findings);
77
+ console.log(semantic.questions);
78
+ console.log(semantic.mentions); // advisory; never authoritative metadata
79
+ ```
80
+
81
+ The result preserves the original Markdown and exact source ranges. It exposes PlanFS concepts rather than the underlying parser's syntax tree.
82
+
83
+ For a complete read-only entity view with authoritative metadata, content-profile diagnostics, advisory mentions, and optional local analysis, use the inspection API:
84
+
85
+ ```typescript
86
+ import {
87
+ inspectSemanticEntity,
88
+ selectSemanticInspectionView
89
+ } from 'planfs-core';
90
+
91
+ const inspection = await inspectSemanticEntity(task, {
92
+ analysis: true,
93
+ language: 'en'
94
+ });
95
+ const criteria = selectSemanticInspectionView(
96
+ inspection,
97
+ 'acceptance-criteria'
98
+ );
99
+ ```
100
+
101
+ The result keeps authoritative frontmatter relationships separate from advisory body mentions. Core analysis remains explicit; interactive PlanFS inspection enables it by default and offers an opt-out.
102
+
103
+ ### Previewing and Applying Semantic Formatting
104
+
105
+ Semantic formatting is explicit, source-fingerprinted, and limited to edits proven by the shared semantic model:
106
+
107
+ ```typescript
108
+ import {
109
+ applySemanticFormats,
110
+ previewSemanticFormats
111
+ } from 'planfs-core';
112
+
113
+ const preview = await previewSemanticFormats(rootPath, ['TASK-001']);
114
+ const applied = await applySemanticFormats(
115
+ rootPath,
116
+ ['TASK-001'],
117
+ preview.expectedFingerprints
118
+ );
119
+ ```
120
+
121
+ Preview never writes. Apply refuses stale fingerprints, validates all proposed results before writing, preserves unknown Markdown and frontmatter, and is idempotent.
122
+
123
+ ### Optional Local Prose Analysis
124
+
125
+ Advisory analysis is explicit and local. Omitting `enabled: true` performs no analysis:
126
+
127
+ ```typescript
128
+ import {
129
+ parseSemanticDocument,
130
+ runSemanticAnalysis
131
+ } from 'planfs-core';
132
+
133
+ const semantic = parseSemanticDocument('task', task.body, {
134
+ filePath: task.filePath
135
+ });
136
+ const analysis = await runSemanticAnalysis(semantic, {
137
+ enabled: true,
138
+ language: 'en'
139
+ });
140
+ ```
141
+
142
+ The built-in analyzer emits only the English-language rule signals promoted by the v1.4 spikes: modality, negation, condition introducers, explicit dates/durations, and possible relationship mentions. Every signal is `nlp-inferred`, includes exact source evidence, and has `authoritative: false`. It never updates frontmatter or repository relationships, makes no network calls, and does not require an NLP model or runtime download. Unsupported languages return an advisory diagnostic and no signals.
143
+
144
+ ### Validating Semantic Content
145
+
146
+ Semantic validation is explicit and separate from existing schema/repository validation:
147
+
148
+ ```typescript
149
+ import { validateSemanticEntity } from 'planfs-core';
150
+
151
+ const result = await validateSemanticEntity(task, {
152
+ tier: 'automation-ready',
153
+ lifecycle: true,
154
+ criterionCheckState: 'warning',
155
+ analysis: false
156
+ });
157
+ ```
158
+
159
+ Baseline, automation-ready, lifecycle, and optional analysis diagnostics retain distinct conformance domains. Results contain stable codes, entity/file identity, source ranges, section keys, provenance, and repair guidance. Validation never changes Markdown, metadata, criterion state, or repository relationships.
160
+
62
161
  ## API Reference
63
162
 
64
163
  ### Types
@@ -99,6 +198,14 @@ const myTasks = getTasksByAssignee(repo, 'user@example.com');
99
198
 
100
199
  - `parseFrontmatter(content)` - Parse YAML frontmatter and markdown
101
200
  - `normalizeMetadata(metadata)` - Convert kebab-case and snake_case to camelCase
201
+ - `parseSemanticDocument(entityType, body, options)` - Parse a body into the loss-aware semantic document model
202
+ - `runSemanticAnalysis(document, options)` - Explicitly run optional advisory prose analysis
203
+ - `LocalRuleSemanticAnalyzer` - Reusable local analyzer with a bounded content/version-aware cache
204
+ - `validateSemanticDocument(entity, document, options)` - Deterministically validate an already parsed document
205
+ - `validateSemanticEntity(entity, options)` - Parse and validate one loaded entity, optionally including local analysis
206
+ - `validateSemanticRepository(repository, options)` - Validate semantic content across active repository entities
207
+ - `inspectSemanticEntity(entity, options)` - Build a complete read-only semantic inspection result
208
+ - `selectSemanticInspectionView(inspection, view)` - Select a deterministic JSON-ready inspection view
102
209
 
103
210
  ## Testing
104
211
 
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Serialize PlanFS entities to their Markdown representation.
3
+ */
4
+ import { Entity } from './types';
5
+ export declare function generateEntityContent(entity: Entity): string;
6
+ //# sourceMappingURL=entity-content.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-content.d.ts","sourceRoot":"","sources":["../src/entity-content.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAY,MAAM,EAAyB,MAAM,SAAS,CAAC;AAElE,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CA2D5D"}
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+ /**
3
+ * Serialize PlanFS entities to their Markdown representation.
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.generateEntityContent = generateEntityContent;
7
+ const yaml_1 = require("yaml");
8
+ function generateEntityContent(entity) {
9
+ const metadata = { ...entity.metadata };
10
+ metadata.id = entity.id;
11
+ metadata.title = entity.title || '';
12
+ metadata.status = entity.status || '';
13
+ if (entity.archive)
14
+ metadata.archive = entity.archive;
15
+ switch (entity.type) {
16
+ case 'task': {
17
+ const task = entity;
18
+ if (task.priority)
19
+ metadata.priority = task.priority;
20
+ if (task.assignee)
21
+ metadata.assignee = task.assignee;
22
+ if (task.epic)
23
+ metadata.epic = task.epic;
24
+ if (task.milestone)
25
+ metadata.milestone = task.milestone;
26
+ if (task.dependsOn)
27
+ metadata.dependsOn = task.dependsOn;
28
+ if (task.tags)
29
+ metadata.tags = task.tags;
30
+ if (task.dueDate)
31
+ metadata.dueDate = task.dueDate;
32
+ if (task.estimate)
33
+ metadata.estimate = task.estimate;
34
+ if (task.refinementState)
35
+ metadata.refinementState = task.refinementState;
36
+ if (task.backlogOrder !== undefined)
37
+ metadata.backlogOrder = task.backlogOrder;
38
+ if (task.links)
39
+ metadata.links = task.links;
40
+ break;
41
+ }
42
+ case 'epic': {
43
+ const epic = entity;
44
+ if (epic.priority)
45
+ metadata.priority = epic.priority;
46
+ if (epic.owner)
47
+ metadata.owner = epic.owner;
48
+ if (epic.description)
49
+ metadata.description = epic.description;
50
+ if (epic.targetDate)
51
+ metadata.targetDate = epic.targetDate;
52
+ if (epic.tags)
53
+ metadata.tags = epic.tags;
54
+ if (epic.links)
55
+ metadata.links = epic.links;
56
+ break;
57
+ }
58
+ case 'milestone': {
59
+ const milestone = entity;
60
+ metadata.targetDate = milestone.targetDate;
61
+ if (milestone.description)
62
+ metadata.description = milestone.description;
63
+ if (milestone.owner)
64
+ metadata.owner = milestone.owner;
65
+ if (milestone.links)
66
+ metadata.links = milestone.links;
67
+ break;
68
+ }
69
+ case 'decision': {
70
+ const decision = entity;
71
+ if (decision.date)
72
+ metadata.date = decision.date;
73
+ if (decision.context)
74
+ metadata.context = decision.context;
75
+ if (decision.decision)
76
+ metadata.decision = decision.decision;
77
+ if (decision.consequences)
78
+ metadata.consequences = decision.consequences;
79
+ if (decision.author)
80
+ metadata.author = decision.author;
81
+ if (decision.supersedes)
82
+ metadata.supersedes = decision.supersedes;
83
+ if (decision.supersededBy)
84
+ metadata.supersededBy = decision.supersededBy;
85
+ break;
86
+ }
87
+ }
88
+ if (entity.createdAt)
89
+ metadata.createdAt = entity.createdAt;
90
+ if (entity.updatedAt)
91
+ metadata.updatedAt = entity.updatedAt;
92
+ return `---\n${(0, yaml_1.stringify)(metadata).trimEnd()}\n---\n\n${entity.body}`;
93
+ }
94
+ //# sourceMappingURL=entity-content.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-content.js","sourceRoot":"","sources":["../src/entity-content.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Construct new PlanFS entities and allocate their IDs.
3
+ */
4
+ import { Decision, Epic, Milestone, Repository, Task } from './types';
5
+ export declare function getNextTaskId(repository: Repository): string;
6
+ export declare function getNextEpicId(repository: Repository, title: string): string;
7
+ export declare function getNextMilestoneId(repository: Repository, title: string): string;
8
+ export declare function getNextDecisionId(repository: Repository, title: string): string;
9
+ export declare function createTaskTemplate(id: string, title: string): Task;
10
+ export declare function createEpicTemplate(id: string, title: string): Epic;
11
+ export declare function createMilestoneTemplate(id: string, title: string, targetDate: string): Milestone;
12
+ export declare function createDecisionTemplate(id: string, title: string): Decision;
13
+ //# sourceMappingURL=entity-factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-factory.d.ts","sourceRoot":"","sources":["../src/entity-factory.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAU,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAE9E,wBAAgB,aAAa,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAW5D;AAED,wBAAgB,aAAa,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAE3E;AAED,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAEhF;AAED,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAE/E;AAED,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAalE;AAED,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAalE;AAED,wBAAgB,uBAAuB,CACrC,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,GACjB,SAAS,CAcX;AAED,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,QAAQ,CAa1E"}
@@ -0,0 +1,109 @@
1
+ "use strict";
2
+ /**
3
+ * Construct new PlanFS entities and allocate their IDs.
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getNextTaskId = getNextTaskId;
7
+ exports.getNextEpicId = getNextEpicId;
8
+ exports.getNextMilestoneId = getNextMilestoneId;
9
+ exports.getNextDecisionId = getNextDecisionId;
10
+ exports.createTaskTemplate = createTaskTemplate;
11
+ exports.createEpicTemplate = createEpicTemplate;
12
+ exports.createMilestoneTemplate = createMilestoneTemplate;
13
+ exports.createDecisionTemplate = createDecisionTemplate;
14
+ function getNextTaskId(repository) {
15
+ let maxNum = 0;
16
+ for (const id of repository.tasks.keys()) {
17
+ if (id.startsWith('TASK-')) {
18
+ const num = parseInt(id.substring(5), 10);
19
+ if (!isNaN(num) && num > maxNum) {
20
+ maxNum = num;
21
+ }
22
+ }
23
+ }
24
+ return `TASK-${String(maxNum + 1).padStart(3, '0')}`;
25
+ }
26
+ function getNextEpicId(repository, title) {
27
+ return getAvailableSlugId('EPIC', title, repository.epics);
28
+ }
29
+ function getNextMilestoneId(repository, title) {
30
+ return getAvailableSlugId('MILESTONE', title, repository.milestones);
31
+ }
32
+ function getNextDecisionId(repository, title) {
33
+ return getAvailableSlugId('DECISION', title, repository.decisions);
34
+ }
35
+ function createTaskTemplate(id, title) {
36
+ const now = new Date().toISOString();
37
+ return {
38
+ id,
39
+ type: 'task',
40
+ title,
41
+ status: 'todo',
42
+ filePath: '',
43
+ metadata: {},
44
+ body: '',
45
+ createdAt: now,
46
+ updatedAt: now
47
+ };
48
+ }
49
+ function createEpicTemplate(id, title) {
50
+ const now = new Date().toISOString();
51
+ return {
52
+ id,
53
+ type: 'epic',
54
+ title,
55
+ status: 'active',
56
+ filePath: '',
57
+ metadata: {},
58
+ body: '',
59
+ createdAt: now,
60
+ updatedAt: now
61
+ };
62
+ }
63
+ function createMilestoneTemplate(id, title, targetDate) {
64
+ const now = new Date().toISOString();
65
+ return {
66
+ id,
67
+ type: 'milestone',
68
+ title,
69
+ status: 'active',
70
+ targetDate,
71
+ filePath: '',
72
+ metadata: {},
73
+ body: '',
74
+ createdAt: now,
75
+ updatedAt: now
76
+ };
77
+ }
78
+ function createDecisionTemplate(id, title) {
79
+ const now = new Date().toISOString();
80
+ return {
81
+ id,
82
+ type: 'decision',
83
+ title,
84
+ status: 'proposed',
85
+ filePath: '',
86
+ metadata: {},
87
+ body: '',
88
+ createdAt: now,
89
+ updatedAt: now
90
+ };
91
+ }
92
+ function getAvailableSlugId(prefix, title, existing) {
93
+ const base = `${prefix}-${slugify(title)}`;
94
+ let candidate = base;
95
+ let suffix = 2;
96
+ while (existing.has(candidate)) {
97
+ candidate = `${base}-${suffix}`;
98
+ suffix += 1;
99
+ }
100
+ return candidate;
101
+ }
102
+ function slugify(value) {
103
+ return value
104
+ .trim()
105
+ .toLowerCase()
106
+ .replace(/[^a-z0-9]+/g, '-')
107
+ .replace(/^-+|-+$/g, '') || 'untitled';
108
+ }
109
+ //# sourceMappingURL=entity-factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-factory.js","sourceRoot":"","sources":["../src/entity-factory.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -7,6 +7,8 @@ export * from './files';
7
7
  export * from './loader';
8
8
  export * from './validator';
9
9
  export * from './repository';
10
+ export * from './entity-content';
11
+ export * from './entity-factory';
10
12
  export * from './references';
11
13
  export * from './graph';
12
14
  export * from './git';
@@ -20,4 +22,12 @@ export * from './ai';
20
22
  export * from './task-update';
21
23
  export * from './format';
22
24
  export * from './history';
25
+ export * from './semantic-types';
26
+ export * from './semantic-profiles';
27
+ export * from './semantic';
28
+ export * from './semantic-analyzer';
29
+ export * from './semantic-validator';
30
+ export * from './semantic-inspection';
31
+ export * from './semantic-formatter';
32
+ export * from './semantic-context';
23
33
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC;AACtB,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,MAAM,CAAC;AACrB,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC;AACtB,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,MAAM,CAAC;AACrB,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC"}
package/dist/index.js CHANGED
@@ -23,6 +23,8 @@ __exportStar(require("./files"), exports);
23
23
  __exportStar(require("./loader"), exports);
24
24
  __exportStar(require("./validator"), exports);
25
25
  __exportStar(require("./repository"), exports);
26
+ __exportStar(require("./entity-content"), exports);
27
+ __exportStar(require("./entity-factory"), exports);
26
28
  __exportStar(require("./references"), exports);
27
29
  __exportStar(require("./graph"), exports);
28
30
  __exportStar(require("./git"), exports);
@@ -36,4 +38,12 @@ __exportStar(require("./ai"), exports);
36
38
  __exportStar(require("./task-update"), exports);
37
39
  __exportStar(require("./format"), exports);
38
40
  __exportStar(require("./history"), exports);
41
+ __exportStar(require("./semantic-types"), exports);
42
+ __exportStar(require("./semantic-profiles"), exports);
43
+ __exportStar(require("./semantic"), exports);
44
+ __exportStar(require("./semantic-analyzer"), exports);
45
+ __exportStar(require("./semantic-validator"), exports);
46
+ __exportStar(require("./semantic-inspection"), exports);
47
+ __exportStar(require("./semantic-formatter"), exports);
48
+ __exportStar(require("./semantic-context"), exports);
39
49
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;AAEH,0CAAwB;AACxB,2CAAyB;AACzB,0CAAwB;AACxB,2CAAyB;AACzB,8CAA4B;AAC5B,+CAA6B;AAC7B,+CAA6B;AAC7B,0CAAwB;AACxB,wCAAsB;AACtB,2CAAyB;AACzB,8CAA4B;AAC5B,8CAA4B;AAC5B,4CAA0B;AAC1B,yCAAuB;AACvB,iDAA+B;AAC/B,uCAAqB;AACrB,gDAA8B;AAC9B,2CAAyB;AACzB,4CAA0B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;AAEH,0CAAwB;AACxB,2CAAyB;AACzB,0CAAwB;AACxB,2CAAyB;AACzB,8CAA4B;AAC5B,+CAA6B;AAC7B,mDAAiC;AACjC,mDAAiC;AACjC,+CAA6B;AAC7B,0CAAwB;AACxB,wCAAsB;AACtB,2CAAyB;AACzB,8CAA4B;AAC5B,8CAA4B;AAC5B,4CAA0B;AAC1B,yCAAuB;AACvB,iDAA+B;AAC/B,uCAAqB;AACrB,gDAA8B;AAC9B,2CAAyB;AACzB,4CAA0B;AAC1B,mDAAiC;AACjC,sDAAoC;AACpC,6CAA2B;AAC3B,sDAAoC;AACpC,uDAAqC;AACrC,wDAAsC;AACtC,uDAAqC;AACrC,qDAAmC"}
@@ -3,7 +3,9 @@
3
3
  * Main API for loading and querying a PlanFS repository
4
4
  */
5
5
  import { PlanfsInitializationResult } from './files';
6
- import { Entity, Repository, Task, Epic, Milestone, Decision, ValidationResult } from './types';
6
+ import { Entity, Repository, Task, ValidationResult } from './types';
7
+ export { generateEntityContent } from './entity-content';
8
+ export { createDecisionTemplate, createEpicTemplate, createMilestoneTemplate, createTaskTemplate, getNextDecisionId, getNextEpicId, getNextMilestoneId, getNextTaskId } from './entity-factory';
7
9
  /**
8
10
  * Load a PlanFS repository
9
11
  */
@@ -22,10 +24,6 @@ export declare function validateRepositoryState(repository: Repository): Validat
22
24
  * Save an entity to disk
23
25
  */
24
26
  export declare function saveEntity(rootPath: string, entity: Entity): Promise<void>;
25
- /**
26
- * Generate file content from an entity
27
- */
28
- export declare function generateEntityContent(entity: Entity): string;
29
27
  export interface ArchiveEntityOptions {
30
28
  includeChildren?: boolean;
31
29
  now?: Date;
@@ -60,30 +58,4 @@ export declare function getTasksByEpic(repository: Repository, epicId: string):
60
58
  * Initialize a new repository
61
59
  */
62
60
  export declare function initializeRepository(rootPath: string): Promise<PlanfsInitializationResult>;
63
- /**
64
- * Get next task ID
65
- */
66
- export declare function getNextTaskId(repository: Repository): string;
67
- /**
68
- * Get an available epic ID from a title
69
- */
70
- export declare function getNextEpicId(repository: Repository, title: string): string;
71
- /**
72
- * Get an available milestone ID from a title
73
- */
74
- export declare function getNextMilestoneId(repository: Repository, title: string): string;
75
- export declare function getNextDecisionId(repository: Repository, title: string): string;
76
- /**
77
- * Create a new task template
78
- */
79
- export declare function createTaskTemplate(id: string, title: string): Task;
80
- /**
81
- * Create a new epic template
82
- */
83
- export declare function createEpicTemplate(id: string, title: string): Epic;
84
- /**
85
- * Create a new milestone template
86
- */
87
- export declare function createMilestoneTemplate(id: string, title: string, targetDate: string): Milestone;
88
- export declare function createDecisionTemplate(id: string, title: string): Decision;
89
61
  //# sourceMappingURL=repository.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../src/repository.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAQL,0BAA0B,EAC3B,MAAM,SAAS,CAAC;AAIjB,OAAO,EACL,MAAM,EACN,UAAU,EACV,IAAI,EACJ,IAAI,EACJ,SAAS,EACT,QAAQ,EACR,gBAAgB,EACjB,MAAM,SAAS,CAAC;AAGjB;;GAEG;AACH,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CA6E1E;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,UAAU,EAAE,UAAU,EACtB,OAAO,GAAE;IAAE,eAAe,CAAC,EAAE,OAAO,CAAA;CAAO,GAC1C,MAAM,EAAE,CAaV;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,UAAU,GAAG,gBAAgB,CAgBhF;AAED;;GAEG;AACH,wBAAsB,UAAU,CAC9B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CAUf;AAmBD;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CA4D5D;AAED,MAAM,WAAW,oBAAoB;IACnC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,GAAG,CAAC,EAAE,IAAI,CAAC;IACX,WAAW,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;IAC5D,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAExD;AAED,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,EAAE,CAKrE;AAED,wBAAsB,aAAa,CACjC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,mBAAmB,CAAC,CAsC9B;AAED,MAAM,WAAW,4BAA4B;IAC3C,GAAG,CAAC,EAAE,IAAI,CAAC;IACX,uBAAuB,CAAC,EAAE,OAAO,CAAC;CACnC;AAED,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,4BAAiC,GACzC,OAAO,CAAC,MAAM,CAAC,CAwBjB;AAED,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC,CAQjB;AAkBD;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,GACrB,IAAI,EAAE,CAIR;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,MAAM,GACf,IAAI,EAAE,CAIR;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,MAAM,GACb,IAAI,EAAE,CAIR;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,0BAA0B,CAAC,CAErC;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAW5D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAE3E;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,MAAM,GACZ,MAAM,CAER;AAED,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAE/E;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAalE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAalE;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,GACjB,SAAS,CAcX;AAED,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,QAAQ,CAG1E"}
1
+ {"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../src/repository.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAQL,0BAA0B,EAC3B,MAAM,SAAS,CAAC;AAIjB,OAAO,EACL,MAAM,EACN,UAAU,EACV,IAAI,EAIJ,gBAAgB,EACjB,MAAM,SAAS,CAAC;AAIjB,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAClB,uBAAuB,EACvB,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACb,kBAAkB,EAClB,aAAa,EACd,MAAM,kBAAkB,CAAC;AAE1B;;GAEG;AACH,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CA6E1E;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,UAAU,EAAE,UAAU,EACtB,OAAO,GAAE;IAAE,eAAe,CAAC,EAAE,OAAO,CAAA;CAAO,GAC1C,MAAM,EAAE,CAaV;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,UAAU,GAAG,gBAAgB,CAgBhF;AAED;;GAEG;AACH,wBAAsB,UAAU,CAC9B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CAUf;AAmBD,MAAM,WAAW,oBAAoB;IACnC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,GAAG,CAAC,EAAE,IAAI,CAAC;IACX,WAAW,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;IAC5D,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAExD;AAED,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,EAAE,CAKrE;AAED,wBAAsB,aAAa,CACjC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,mBAAmB,CAAC,CAsC9B;AAED,MAAM,WAAW,4BAA4B;IAC3C,GAAG,CAAC,EAAE,IAAI,CAAC;IACX,uBAAuB,CAAC,EAAE,OAAO,CAAC;CACnC;AAED,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,4BAAiC,GACzC,OAAO,CAAC,MAAM,CAAC,CAwBjB;AAED,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC,CAQjB;AAkBD;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,GACrB,IAAI,EAAE,CAIR;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,MAAM,GACf,IAAI,EAAE,CAIR;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,MAAM,GACb,IAAI,EAAE,CAIR;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,0BAA0B,CAAC,CAErC"}