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
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
 
package/dist/ai.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * AI-oriented planning helpers.
3
3
  */
4
- import { RefinementState, Repository, Task, TaskPriority, TaskStatus } from './types';
4
+ import { RefinementState, Repository, TaskPriority, TaskStatus } from './types';
5
5
  export interface PlanningSummaryOptions {
6
6
  assignee?: string;
7
7
  epic?: string;
@@ -76,23 +76,5 @@ export interface PlanningSummary {
76
76
  }>;
77
77
  recentlyCompletedWork: PlanningSummaryTask[];
78
78
  }
79
- export type TaskUpdateField = 'status' | 'priority' | 'assignee' | 'refinementState' | 'dueDate' | 'epic' | 'milestone' | 'tags' | 'estimate';
80
- export type TaskUpdatePatch = Partial<Pick<Task, 'status' | 'priority' | 'assignee' | 'refinementState' | 'dueDate' | 'epic' | 'milestone' | 'tags' | 'estimate'>>;
81
- export interface TaskUpdateOptions {
82
- id: string;
83
- patch: TaskUpdatePatch;
84
- dryRun?: boolean;
85
- now?: Date;
86
- expectedUpdatedAt?: string | null;
87
- }
88
- export interface TaskUpdateResult {
89
- task: Task;
90
- before: Task;
91
- changedFields: TaskUpdateField[];
92
- dryRun: boolean;
93
- preview?: string;
94
- }
95
79
  export declare function buildPlanningSummary(repository: Repository, options?: PlanningSummaryOptions): PlanningSummary;
96
- export declare function updateTaskPlanning(rootPath: string, repository: Repository, options: TaskUpdateOptions): Promise<TaskUpdateResult>;
97
- export declare function parseTaskUpdatePatch(values: Record<string, unknown>): TaskUpdatePatch;
98
80
  //# sourceMappingURL=ai.d.ts.map
package/dist/ai.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"ai.d.ts","sourceRoot":"","sources":["../src/ai.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ai.d.ts","sourceRoot":"","sources":["../src/ai.ts"],"names":[],"mappings":"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"}
package/dist/ai.js CHANGED
@@ -4,17 +4,11 @@
4
4
  */
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.buildPlanningSummary = buildPlanningSummary;
7
- exports.updateTaskPlanning = updateTaskPlanning;
8
- exports.parseTaskUpdatePatch = parseTaskUpdatePatch;
9
7
  const backlog_1 = require("./backlog");
10
8
  const next_work_1 = require("./next-work");
11
- const repository_1 = require("./repository");
12
9
  const DEFAULT_SUMMARY_LIMIT = 25;
13
10
  const DEFAULT_RECENT_LIMIT = 10;
14
11
  const OPEN_STATUSES = ['todo', 'in-progress', 'review'];
15
- const TASK_STATUSES = ['todo', 'in-progress', 'review', 'done'];
16
- const TASK_PRIORITIES = ['low', 'medium', 'high', 'critical'];
17
- const REFINEMENT_STATES = ['captured', 'needs-refinement', 'ready', 'deferred', 'discarded'];
18
12
  function buildPlanningSummary(repository, options = {}) {
19
13
  const now = options.now ?? new Date();
20
14
  const scopedTasks = Array.from(repository.tasks.values())
@@ -89,72 +83,6 @@ function buildPlanningSummary(repository, options = {}) {
89
83
  recentlyCompletedWork
90
84
  };
91
85
  }
92
- async function updateTaskPlanning(rootPath, repository, options) {
93
- const task = repository.tasks.get(options.id);
94
- if (!task) {
95
- throw new Error(`Task not found: ${options.id}`);
96
- }
97
- const expectedUpdatedAt = options.expectedUpdatedAt === null ? undefined : options.expectedUpdatedAt;
98
- if (options.expectedUpdatedAt !== undefined && task.updatedAt !== expectedUpdatedAt) {
99
- throw new Error(`Update conflict: ${options.id} changed since preview`);
100
- }
101
- const before = cloneTask(task);
102
- const updated = cloneTask(task);
103
- const changedFields = applyTaskPatch(updated, options.patch);
104
- if (changedFields.length === 0) {
105
- return { task: updated, before, changedFields, dryRun: Boolean(options.dryRun) };
106
- }
107
- updated.updatedAt = (options.now ?? new Date()).toISOString();
108
- repository.tasks.set(updated.id, updated);
109
- const validation = (0, repository_1.validateRepositoryState)(repository);
110
- const errors = validation.errors.filter(error => error.severity === 'error');
111
- repository.tasks.set(before.id, before);
112
- if (errors.length > 0) {
113
- throw new Error(`Update failed validation: ${formatValidationErrors(errors)}`);
114
- }
115
- if (!options.dryRun) {
116
- await (0, repository_1.saveEntity)(rootPath, updated);
117
- }
118
- return {
119
- task: updated,
120
- before,
121
- changedFields,
122
- dryRun: Boolean(options.dryRun),
123
- preview: options.dryRun ? (0, repository_1.generateEntityContent)(updated) : undefined
124
- };
125
- }
126
- function parseTaskUpdatePatch(values) {
127
- const patch = {};
128
- for (const [field, value] of Object.entries(values)) {
129
- if (value === undefined) {
130
- continue;
131
- }
132
- switch (field) {
133
- case 'status':
134
- patch.status = parseEnum(value, TASK_STATUSES, 'status');
135
- break;
136
- case 'priority':
137
- patch.priority = parseOptionalEnum(value, TASK_PRIORITIES, 'priority');
138
- break;
139
- case 'refinementState':
140
- patch.refinementState = parseOptionalEnum(value, REFINEMENT_STATES, 'refinementState');
141
- break;
142
- case 'assignee':
143
- case 'dueDate':
144
- case 'epic':
145
- case 'milestone':
146
- case 'estimate':
147
- patch[field] = parseOptionalString(value);
148
- break;
149
- case 'tags':
150
- patch.tags = parseTags(value);
151
- break;
152
- default:
153
- throw new Error(`Unsupported task update field: ${field}`);
154
- }
155
- }
156
- return patch;
157
- }
158
86
  function matchesSummaryScope(task, options) {
159
87
  if (options.assignee && task.assignee !== options.assignee) {
160
88
  return false;
@@ -197,27 +125,6 @@ function toSummaryTask(task) {
197
125
  refinementState: task.refinementState
198
126
  };
199
127
  }
200
- function applyTaskPatch(task, patch) {
201
- const changed = [];
202
- for (const field of Object.keys(patch)) {
203
- const nextValue = patch[field];
204
- if (JSON.stringify(task[field]) === JSON.stringify(nextValue)) {
205
- continue;
206
- }
207
- task[field] = nextValue;
208
- changed.push(field);
209
- }
210
- return changed;
211
- }
212
- function cloneTask(task) {
213
- return {
214
- ...task,
215
- dependsOn: task.dependsOn ? [...task.dependsOn] : undefined,
216
- tags: task.tags ? [...task.tags] : undefined,
217
- links: task.links ? { ...task.links } : undefined,
218
- metadata: { ...task.metadata }
219
- };
220
- }
221
128
  function compareUpdatedAtDesc(a, b) {
222
129
  return dateValue(b.updatedAt) - dateValue(a.updatedAt) || b.id.localeCompare(a.id);
223
130
  }
@@ -231,35 +138,4 @@ function normalizeArray(value) {
231
138
  }
232
139
  return Array.isArray(value) ? value : [value];
233
140
  }
234
- function parseEnum(value, allowed, field) {
235
- if (typeof value !== 'string' || !allowed.includes(value)) {
236
- throw new Error(`${field} must be one of: ${allowed.join(', ')}`);
237
- }
238
- return value;
239
- }
240
- function parseOptionalEnum(value, allowed, field) {
241
- if (value === '') {
242
- return undefined;
243
- }
244
- return parseEnum(value, allowed, field);
245
- }
246
- function parseOptionalString(value) {
247
- if (typeof value !== 'string') {
248
- throw new Error('Expected a string value');
249
- }
250
- return value.trim() || undefined;
251
- }
252
- function parseTags(value) {
253
- if (typeof value === 'string') {
254
- const tags = value.split(',').map(tag => tag.trim()).filter(Boolean);
255
- return tags.length ? tags : undefined;
256
- }
257
- if (Array.isArray(value) && value.every(tag => typeof tag === 'string')) {
258
- return value.map(tag => tag.trim()).filter(Boolean);
259
- }
260
- throw new Error('tags must be a comma-separated string or string array');
261
- }
262
- function formatValidationErrors(errors) {
263
- return errors.slice(0, 3).map(error => error.message).join('; ');
264
- }
265
141
  //# sourceMappingURL=ai.js.map
package/dist/ai.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"ai.js","sourceRoot":"","sources":["../src/ai.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAgHH,oDAiFC;AAED,gDA0CC;AAED,oDAgCC;AA7QD,uCAA+C;AAC/C,2CAAsE;AACtE,6CAA0F;AAqG1F,MAAM,qBAAqB,GAAG,EAAE,CAAC;AACjC,MAAM,oBAAoB,GAAG,EAAE,CAAC;AAChC,MAAM,aAAa,GAAiB,CAAC,MAAM,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC;AACtE,MAAM,aAAa,GAAiB,CAAC,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;AAC9E,MAAM,eAAe,GAAmB,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;AAC9E,MAAM,iBAAiB,GAAsB,CAAC,UAAU,EAAE,kBAAkB,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;AAEhH,SAAgB,oBAAoB,CAClC,UAAsB,EACtB,UAAkC,EAAE;IAEpC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC;IACtC,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;SACtD,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,mBAAmB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IACtD,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAClF,MAAM,QAAQ,GAAG,IAAA,iCAAqB,EAAC,UAAU,EAAE;QACjD,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,cAAc,EAAE,IAAI;QACpB,KAAK,EAAE,OAAO,CAAC,KAAK;KACrB,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,mBAAmB,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IACrE,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAC5C,CAAC,OAAO,EAAE,aAAa,EAAE,cAAc,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAC9E,CAAC;IACF,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAC9C,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CACvE,CAAC;IACF,MAAM,mBAAmB,GAAG,SAAS;SAClC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAA,4BAAkB,EAAC,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;SACjD,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACZ,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,OAAO,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC,iCAAiC,CAAC;KACrG,CAAC,CAAC,CAAC;IACN,MAAM,qBAAqB,GAAG,WAAW;SACtC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC;SACtC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SAC1C,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,WAAW,IAAI,oBAAoB,CAAC;SACrD,GAAG,CAAC,aAAa,CAAC,CAAC;IAEtB,OAAO;QACL,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE;QAC9B,KAAK,EAAE;YACL,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,MAAM,EAAE,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC;YACtC,eAAe,EAAE,cAAc,CAAC,OAAO,CAAC,eAAe,CAAC;SACzD;QACD,MAAM,EAAE;YACN,KAAK,EAAE,WAAW,CAAC,MAAM;YACzB,SAAS,EAAE,SAAS,CAAC,MAAM;YAC3B,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,MAAM;YAClG,gBAAgB,EAAE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,MAAM;YACtH,YAAY,EAAE,WAAW,CAAC,MAAM;YAChC,UAAU,EAAE,SAAS,CAAC,MAAM;YAC5B,UAAU,EAAE,mBAAmB,CAAC,MAAM;YACtC,sBAAsB,EAAE,qBAAqB,CAAC,MAAM;SACrD;QACD,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,IAAI,qBAAqB,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC;QACxF,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;aAC/C,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC;aACxC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACZ,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,UAAU,EAAE,IAAI,CAAC,UAAU;SAC5B,CAAC,CAAC;QACL,gBAAgB,EAAE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;aACzD,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,KAAK,QAAQ,CAAC;aAClD,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YACjB,EAAE,EAAE,SAAS,CAAC,EAAE;YAChB,KAAK,EAAE,SAAS,CAAC,KAAK;YACtB,MAAM,EAAE,SAAS,CAAC,MAAM;YACxB,QAAQ,EAAE,SAAS,CAAC,QAAQ;YAC5B,UAAU,EAAE,SAAS,CAAC,UAAU;SACjC,CAAC,CAAC;QACL,WAAW,EAAE,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;QACzG,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;QACrG,mBAAmB,EAAE,mBAAmB,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,IAAI,qBAAqB,CAAC;QACzF,qBAAqB;KACtB,CAAC;AACJ,CAAC;AAEM,KAAK,UAAU,kBAAkB,CACtC,QAAgB,EAChB,UAAsB,EACtB,OAA0B;IAE1B,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC9C,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,mBAAmB,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;IACnD,CAAC;IACD,MAAM,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC;IACrG,IAAI,OAAO,CAAC,iBAAiB,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,KAAK,iBAAiB,EAAE,CAAC;QACpF,MAAM,IAAI,KAAK,CAAC,oBAAoB,OAAO,CAAC,EAAE,wBAAwB,CAAC,CAAC;IAC1E,CAAC;IAED,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,aAAa,GAAG,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAC7D,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;IACnF,CAAC;IAED,OAAO,CAAC,SAAS,GAAG,CAAC,OAAO,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAC9D,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IAC1C,MAAM,UAAU,GAAG,IAAA,oCAAuB,EAAC,UAAU,CAAC,CAAC;IACvD,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC;IAC7E,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IAExC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,6BAA6B,sBAAsB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACjF,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACpB,MAAM,IAAA,uBAAU,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACtC,CAAC;IAED,OAAO;QACL,IAAI,EAAE,OAAO;QACb,MAAM;QACN,aAAa;QACb,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;QAC/B,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAA,kCAAqB,EAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS;KACrE,CAAC;AACJ,CAAC;AAED,SAAgB,oBAAoB,CAAC,MAA+B;IAClE,MAAM,KAAK,GAAoB,EAAE,CAAC;IAClC,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACpD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,SAAS;QACX,CAAC;QAED,QAAQ,KAAK,EAAE,CAAC;YACd,KAAK,QAAQ;gBACX,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,KAAK,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC;gBACzD,MAAM;YACR,KAAK,UAAU;gBACb,KAAK,CAAC,QAAQ,GAAG,iBAAiB,CAAC,KAAK,EAAE,eAAe,EAAE,UAAU,CAAC,CAAC;gBACvE,MAAM;YACR,KAAK,iBAAiB;gBACpB,KAAK,CAAC,eAAe,GAAG,iBAAiB,CAAC,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,CAAC,CAAC;gBACvF,MAAM;YACR,KAAK,UAAU,CAAC;YAChB,KAAK,SAAS,CAAC;YACf,KAAK,MAAM,CAAC;YACZ,KAAK,WAAW,CAAC;YACjB,KAAK,UAAU;gBACb,KAAK,CAAC,KAAK,CAAC,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;gBAC1C,MAAM;YACR,KAAK,MAAM;gBACT,KAAK,CAAC,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;gBAC9B,MAAM;YACR;gBACE,MAAM,IAAI,KAAK,CAAC,kCAAkC,KAAK,EAAE,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAU,EAAE,OAA+B;IACtE,IAAI,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,KAAK,OAAO,CAAC,QAAQ,EAAE,CAAC;QAC3D,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC;QAC/C,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,KAAK,OAAO,CAAC,SAAS,EAAE,CAAC;QAC9D,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5E,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,OAAO,CAAC,eAAe,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,IAAI,OAAO,CAAC,EAAE,CAAC;QAClH,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,eAAe,CAAC,IAAU,EAAE,UAAsB,EAAE,OAAiB;IAC5E,MAAM,SAAS,GAAG,IAAA,4BAAgB,EAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACrD,OAAO;QACL,GAAG,aAAa,CAAC,IAAI,CAAC;QACtB,SAAS,EAAE,SAAS,CAAC,MAAM;QAC3B,eAAe,EAAE,SAAS,CAAC,eAAe;QAC1C,oBAAoB,EAAE,SAAS,CAAC,oBAAoB;QACpD,OAAO;KACR,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,IAAU;IAC/B,OAAO;QACL,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,eAAe,EAAE,IAAI,CAAC,eAAe;KACtC,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,IAAU,EAAE,KAAsB;IACxD,MAAM,OAAO,GAAsB,EAAE,CAAC;IACtC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAsB,EAAE,CAAC;QAC5D,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;QAC/B,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9D,SAAS;QACX,CAAC;QACA,IAAyC,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC;QAC9D,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,SAAS,CAAC,IAAU;IAC3B,OAAO;QACL,GAAG,IAAI;QACP,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;QAC3D,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;QAC5C,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS;QACjD,QAAQ,EAAE,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE;KAC/B,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAAC,CAAO,EAAE,CAAO;IAC5C,OAAO,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACrF,CAAC;AAED,SAAS,SAAS,CAAC,KAAyB;IAC1C,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7C,OAAO,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AAC3C,CAAC;AAED,SAAS,cAAc,CAAI,KAA0B;IACnD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAChD,CAAC;AAED,SAAS,SAAS,CAAmB,KAAc,EAAE,OAAY,EAAE,KAAa;IAC9E,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAU,CAAC,EAAE,CAAC;QAC/D,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,oBAAoB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,KAAU,CAAC;AACpB,CAAC;AAED,SAAS,iBAAiB,CAAmB,KAAc,EAAE,OAAY,EAAE,KAAa;IACtF,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;QACjB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAC1C,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAc;IACzC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,EAAE,IAAI,SAAS,CAAC;AACnC,CAAC;AAED,SAAS,SAAS,CAAC,KAAc;IAC/B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACrE,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IACxC,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,EAAE,CAAC;QACxE,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACtD,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;AAC3E,CAAC;AAED,SAAS,sBAAsB,CAAC,MAAyB;IACvD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnE,CAAC"}
1
+ {"version":3,"file":"ai.js","sourceRoot":"","sources":["../src/ai.ts"],"names":[],"mappings":"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"}
@@ -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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"}
@@ -1 +1 @@
1
- {"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../src/files.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,WAAW,GAAG,UAAU,CAAC;IACjD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAcD;;GAEG;AACH,wBAAsB,aAAa,CACjC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,cAAc,EAAE,CAAC,CA8B3B;AAED,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,cAAc,EAAE,CAAC,CA6B3B;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAGhE;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAKhF;AAED,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEhE;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAQ9E;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,0BAA0B,CAAC,CAkBrC"}
1
+ {"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../src/files.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,WAAW,GAAG,UAAU,CAAC;IACjD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAcD;;GAEG;AACH,wBAAsB,aAAa,CACjC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,cAAc,EAAE,CAAC,CA8B3B;AAED,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,cAAc,EAAE,CAAC,CA6B3B;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAGhE;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAKhF;AAED,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEhE;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAQ9E;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,0BAA0B,CAAC,CAyBrC"}
package/dist/files.js CHANGED
@@ -165,6 +165,13 @@ async function ensurePlanfsStructure(rootPath) {
165
165
  result.created.push(dir);
166
166
  }
167
167
  }
168
+ const configPath = path.join(rootPath, '.planfs', 'planfs.json');
169
+ try {
170
+ await fs_1.promises.access(configPath);
171
+ }
172
+ catch {
173
+ await fs_1.promises.writeFile(configPath, '{\n "formatVersion": 1\n}\n', 'utf8');
174
+ }
168
175
  return result;
169
176
  }
170
177
  async function directoryExists(dir) {