@refrakt-md/plan 0.9.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 (156) hide show
  1. package/dist/cli-plugin.d.ts +12 -0
  2. package/dist/cli-plugin.d.ts.map +1 -0
  3. package/dist/cli-plugin.js +494 -0
  4. package/dist/cli-plugin.js.map +1 -0
  5. package/dist/commands/build.d.ts +14 -0
  6. package/dist/commands/build.d.ts.map +1 -0
  7. package/dist/commands/build.js +57 -0
  8. package/dist/commands/build.js.map +1 -0
  9. package/dist/commands/bundle-behaviors.d.ts +6 -0
  10. package/dist/commands/bundle-behaviors.d.ts.map +1 -0
  11. package/dist/commands/bundle-behaviors.js +24 -0
  12. package/dist/commands/bundle-behaviors.js.map +1 -0
  13. package/dist/commands/create.d.ts +21 -0
  14. package/dist/commands/create.d.ts.map +1 -0
  15. package/dist/commands/create.js +50 -0
  16. package/dist/commands/create.js.map +1 -0
  17. package/dist/commands/init.d.ts +17 -0
  18. package/dist/commands/init.d.ts.map +1 -0
  19. package/dist/commands/init.js +109 -0
  20. package/dist/commands/init.js.map +1 -0
  21. package/dist/commands/next.d.ts +34 -0
  22. package/dist/commands/next.d.ts.map +1 -0
  23. package/dist/commands/next.js +100 -0
  24. package/dist/commands/next.js.map +1 -0
  25. package/dist/commands/plan-behaviors.d.ts +2 -0
  26. package/dist/commands/plan-behaviors.d.ts.map +1 -0
  27. package/dist/commands/plan-behaviors.js +7 -0
  28. package/dist/commands/plan-behaviors.js.map +1 -0
  29. package/dist/commands/render-pipeline.d.ts +70 -0
  30. package/dist/commands/render-pipeline.d.ts.map +1 -0
  31. package/dist/commands/render-pipeline.js +1173 -0
  32. package/dist/commands/render-pipeline.js.map +1 -0
  33. package/dist/commands/serve.d.ts +13 -0
  34. package/dist/commands/serve.d.ts.map +1 -0
  35. package/dist/commands/serve.js +167 -0
  36. package/dist/commands/serve.js.map +1 -0
  37. package/dist/commands/status.d.ts +53 -0
  38. package/dist/commands/status.d.ts.map +1 -0
  39. package/dist/commands/status.js +181 -0
  40. package/dist/commands/status.js.map +1 -0
  41. package/dist/commands/templates.d.ts +37 -0
  42. package/dist/commands/templates.d.ts.map +1 -0
  43. package/dist/commands/templates.js +160 -0
  44. package/dist/commands/templates.js.map +1 -0
  45. package/dist/commands/update.d.ts +29 -0
  46. package/dist/commands/update.d.ts.map +1 -0
  47. package/dist/commands/update.js +238 -0
  48. package/dist/commands/update.js.map +1 -0
  49. package/dist/commands/validate.d.ts +29 -0
  50. package/dist/commands/validate.d.ts.map +1 -0
  51. package/dist/commands/validate.js +298 -0
  52. package/dist/commands/validate.js.map +1 -0
  53. package/dist/config.d.ts +3 -0
  54. package/dist/config.d.ts.map +1 -0
  55. package/dist/config.js +163 -0
  56. package/dist/config.js.map +1 -0
  57. package/dist/filter.d.ts +17 -0
  58. package/dist/filter.d.ts.map +1 -0
  59. package/dist/filter.js +72 -0
  60. package/dist/filter.js.map +1 -0
  61. package/dist/index.d.ts +7 -0
  62. package/dist/index.d.ts.map +1 -0
  63. package/dist/index.js +144 -0
  64. package/dist/index.js.map +1 -0
  65. package/dist/pipeline.d.ts +23 -0
  66. package/dist/pipeline.d.ts.map +1 -0
  67. package/dist/pipeline.js +720 -0
  68. package/dist/pipeline.js.map +1 -0
  69. package/dist/scanner.d.ts +9 -0
  70. package/dist/scanner.d.ts.map +1 -0
  71. package/dist/scanner.js +234 -0
  72. package/dist/scanner.js.map +1 -0
  73. package/dist/schema/backlog.d.ts +7 -0
  74. package/dist/schema/backlog.d.ts.map +1 -0
  75. package/dist/schema/backlog.js +9 -0
  76. package/dist/schema/backlog.js.map +1 -0
  77. package/dist/schema/bug.d.ts +9 -0
  78. package/dist/schema/bug.d.ts.map +1 -0
  79. package/dist/schema/bug.js +11 -0
  80. package/dist/schema/bug.js.map +1 -0
  81. package/dist/schema/decision-log.d.ts +5 -0
  82. package/dist/schema/decision-log.d.ts.map +1 -0
  83. package/dist/schema/decision-log.js +7 -0
  84. package/dist/schema/decision-log.js.map +1 -0
  85. package/dist/schema/decision.d.ts +8 -0
  86. package/dist/schema/decision.d.ts.map +1 -0
  87. package/dist/schema/decision.js +10 -0
  88. package/dist/schema/decision.js.map +1 -0
  89. package/dist/schema/milestone.d.ts +6 -0
  90. package/dist/schema/milestone.d.ts.map +1 -0
  91. package/dist/schema/milestone.js +8 -0
  92. package/dist/schema/milestone.js.map +1 -0
  93. package/dist/schema/plan-activity.d.ts +4 -0
  94. package/dist/schema/plan-activity.d.ts.map +1 -0
  95. package/dist/schema/plan-activity.js +6 -0
  96. package/dist/schema/plan-activity.js.map +1 -0
  97. package/dist/schema/plan-progress.d.ts +4 -0
  98. package/dist/schema/plan-progress.d.ts.map +1 -0
  99. package/dist/schema/plan-progress.js +6 -0
  100. package/dist/schema/plan-progress.js.map +1 -0
  101. package/dist/schema/spec.d.ts +8 -0
  102. package/dist/schema/spec.d.ts.map +1 -0
  103. package/dist/schema/spec.js +10 -0
  104. package/dist/schema/spec.js.map +1 -0
  105. package/dist/schema/work.d.ts +10 -0
  106. package/dist/schema/work.d.ts.map +1 -0
  107. package/dist/schema/work.js +12 -0
  108. package/dist/schema/work.js.map +1 -0
  109. package/dist/tags/backlog.d.ts +4 -0
  110. package/dist/tags/backlog.d.ts.map +1 -0
  111. package/dist/tags/backlog.js +41 -0
  112. package/dist/tags/backlog.js.map +1 -0
  113. package/dist/tags/bug.d.ts +3 -0
  114. package/dist/tags/bug.d.ts.map +1 -0
  115. package/dist/tags/bug.js +58 -0
  116. package/dist/tags/bug.js.map +1 -0
  117. package/dist/tags/decision-log.d.ts +4 -0
  118. package/dist/tags/decision-log.d.ts.map +1 -0
  119. package/dist/tags/decision-log.js +35 -0
  120. package/dist/tags/decision-log.js.map +1 -0
  121. package/dist/tags/decision.d.ts +3 -0
  122. package/dist/tags/decision.d.ts.map +1 -0
  123. package/dist/tags/decision.js +54 -0
  124. package/dist/tags/decision.js.map +1 -0
  125. package/dist/tags/milestone.d.ts +3 -0
  126. package/dist/tags/milestone.d.ts.map +1 -0
  127. package/dist/tags/milestone.js +52 -0
  128. package/dist/tags/milestone.js.map +1 -0
  129. package/dist/tags/plan-activity.d.ts +4 -0
  130. package/dist/tags/plan-activity.d.ts.map +1 -0
  131. package/dist/tags/plan-activity.js +31 -0
  132. package/dist/tags/plan-activity.js.map +1 -0
  133. package/dist/tags/plan-progress.d.ts +4 -0
  134. package/dist/tags/plan-progress.d.ts.map +1 -0
  135. package/dist/tags/plan-progress.js +31 -0
  136. package/dist/tags/plan-progress.js.map +1 -0
  137. package/dist/tags/spec.d.ts +3 -0
  138. package/dist/tags/spec.d.ts.map +1 -0
  139. package/dist/tags/spec.js +57 -0
  140. package/dist/tags/spec.js.map +1 -0
  141. package/dist/tags/work.d.ts +3 -0
  142. package/dist/tags/work.d.ts.map +1 -0
  143. package/dist/tags/work.js +68 -0
  144. package/dist/tags/work.js.map +1 -0
  145. package/dist/types.d.ts +69 -0
  146. package/dist/types.d.ts.map +1 -0
  147. package/dist/types.js +22 -0
  148. package/dist/types.js.map +1 -0
  149. package/dist/util.d.ts +8 -0
  150. package/dist/util.d.ts.map +1 -0
  151. package/dist/util.js +32 -0
  152. package/dist/util.js.map +1 -0
  153. package/package.json +47 -0
  154. package/styles/default.css +580 -0
  155. package/styles/minimal.css +379 -0
  156. package/styles/tokens.css +13 -0
@@ -0,0 +1,298 @@
1
+ import { readFileSync } from 'fs';
2
+ import { join } from 'path';
3
+ import { scanPlanFiles } from '../scanner.js';
4
+ // --- Valid attribute values per type ---
5
+ const VALID_STATUSES = {
6
+ spec: new Set(['draft', 'review', 'accepted', 'superseded', 'deprecated']),
7
+ work: new Set(['draft', 'ready', 'in-progress', 'review', 'done', 'blocked', 'pending']),
8
+ bug: new Set(['reported', 'confirmed', 'in-progress', 'fixed', 'wontfix', 'duplicate']),
9
+ decision: new Set(['proposed', 'accepted', 'superseded', 'deprecated']),
10
+ milestone: new Set(['planning', 'active', 'complete']),
11
+ };
12
+ const VALID_PRIORITIES = new Set(['critical', 'high', 'medium', 'low']);
13
+ const VALID_SEVERITIES = new Set(['critical', 'major', 'minor', 'trivial']);
14
+ const DONE_STATUSES = new Set(['done', 'fixed']);
15
+ // --- Exit codes ---
16
+ export const EXIT_SUCCESS = 0;
17
+ export const EXIT_ERRORS = 1;
18
+ export const EXIT_INVALID_ARGS = 2;
19
+ // --- Implementation ---
20
+ function checkBrokenRefs(entities, knownIds) {
21
+ const issues = [];
22
+ for (const e of entities) {
23
+ const id = e.attributes.id || e.attributes.name || e.file;
24
+ for (const ref of e.refs) {
25
+ if (!knownIds.has(ref)) {
26
+ issues.push({
27
+ severity: 'error',
28
+ type: 'broken-ref',
29
+ source: id,
30
+ file: e.file,
31
+ target: ref,
32
+ message: `${id} references ${ref} — entity not found`,
33
+ });
34
+ }
35
+ }
36
+ }
37
+ return issues;
38
+ }
39
+ function checkDuplicateIds(entities) {
40
+ const issues = [];
41
+ const seen = new Map();
42
+ for (const e of entities) {
43
+ const id = e.attributes.id || e.attributes.name;
44
+ if (!id)
45
+ continue;
46
+ const existing = seen.get(id);
47
+ if (existing) {
48
+ issues.push({
49
+ severity: 'error',
50
+ type: 'duplicate-id',
51
+ source: id,
52
+ file: e.file,
53
+ target: existing.file,
54
+ message: `${id} duplicate ID — also defined in ${existing.file}`,
55
+ });
56
+ }
57
+ else {
58
+ seen.set(id, e);
59
+ }
60
+ }
61
+ return issues;
62
+ }
63
+ function checkInvalidAttributes(entities) {
64
+ const issues = [];
65
+ for (const e of entities) {
66
+ const id = e.attributes.id || e.attributes.name || e.file;
67
+ // Status
68
+ const status = e.attributes.status;
69
+ const validStatuses = VALID_STATUSES[e.type];
70
+ if (status && validStatuses && !validStatuses.has(status)) {
71
+ issues.push({
72
+ severity: 'error',
73
+ type: 'invalid-status',
74
+ source: id,
75
+ file: e.file,
76
+ message: `${id} has invalid status "${status}" for type ${e.type}`,
77
+ });
78
+ }
79
+ // Priority (work items)
80
+ const priority = e.attributes.priority;
81
+ if (priority && (e.type === 'work') && !VALID_PRIORITIES.has(priority)) {
82
+ issues.push({
83
+ severity: 'error',
84
+ type: 'invalid-priority',
85
+ source: id,
86
+ file: e.file,
87
+ message: `${id} has invalid priority "${priority}"`,
88
+ });
89
+ }
90
+ // Severity (bugs)
91
+ const severity = e.attributes.severity;
92
+ if (severity && e.type === 'bug' && !VALID_SEVERITIES.has(severity)) {
93
+ issues.push({
94
+ severity: 'error',
95
+ type: 'invalid-severity',
96
+ source: id,
97
+ file: e.file,
98
+ message: `${id} has invalid severity "${severity}"`,
99
+ });
100
+ }
101
+ }
102
+ return issues;
103
+ }
104
+ function checkCircularDeps(entities, knownIds) {
105
+ const issues = [];
106
+ // Build adjacency map: id -> set of referenced ids that are work/bug items
107
+ const workBugIds = new Set();
108
+ const adjMap = new Map();
109
+ const entityById = new Map();
110
+ for (const e of entities) {
111
+ const id = e.attributes.id || e.attributes.name;
112
+ if (!id)
113
+ continue;
114
+ entityById.set(id, e);
115
+ if (e.type === 'work' || e.type === 'bug') {
116
+ workBugIds.add(id);
117
+ }
118
+ }
119
+ for (const e of entities) {
120
+ const id = e.attributes.id || e.attributes.name;
121
+ if (!id || (e.type !== 'work' && e.type !== 'bug'))
122
+ continue;
123
+ const deps = e.refs.filter(r => workBugIds.has(r));
124
+ if (deps.length > 0) {
125
+ adjMap.set(id, deps);
126
+ }
127
+ }
128
+ // DFS cycle detection
129
+ const visited = new Set();
130
+ const inStack = new Set();
131
+ const reportedCycles = new Set();
132
+ function dfs(node, path) {
133
+ if (inStack.has(node)) {
134
+ // Found cycle — report it
135
+ const cycleStart = path.indexOf(node);
136
+ const cycle = path.slice(cycleStart);
137
+ const cycleKey = [...cycle].sort().join(',');
138
+ if (!reportedCycles.has(cycleKey)) {
139
+ reportedCycles.add(cycleKey);
140
+ const entity = entityById.get(node);
141
+ issues.push({
142
+ severity: 'error',
143
+ type: 'circular-dependency',
144
+ source: node,
145
+ file: entity.file,
146
+ message: `Circular dependency: ${cycle.join(' → ')} → ${node}`,
147
+ });
148
+ }
149
+ return;
150
+ }
151
+ if (visited.has(node))
152
+ return;
153
+ inStack.add(node);
154
+ path.push(node);
155
+ const deps = adjMap.get(node) || [];
156
+ for (const dep of deps) {
157
+ dfs(dep, path);
158
+ }
159
+ path.pop();
160
+ inStack.delete(node);
161
+ visited.add(node);
162
+ }
163
+ for (const id of workBugIds) {
164
+ dfs(id, []);
165
+ }
166
+ return issues;
167
+ }
168
+ function checkResolutions(entities, dir) {
169
+ const issues = [];
170
+ for (const e of entities) {
171
+ const id = e.attributes.id || e.attributes.name || e.file;
172
+ const status = e.attributes.status || '';
173
+ const isDone = DONE_STATUSES.has(status);
174
+ const hasResolution = e.resolution !== undefined;
175
+ // Done without resolution (info)
176
+ if (isDone && !hasResolution && (e.type === 'work' || e.type === 'bug')) {
177
+ issues.push({
178
+ severity: 'info',
179
+ type: 'done-without-resolution',
180
+ source: id,
181
+ file: e.file,
182
+ message: `${id} is ${status} but has no Resolution section`,
183
+ });
184
+ }
185
+ // Resolution on non-terminal item (warning)
186
+ if (hasResolution && !isDone && (e.type === 'work' || e.type === 'bug')) {
187
+ issues.push({
188
+ severity: 'warning',
189
+ type: 'resolution-not-done',
190
+ source: id,
191
+ file: e.file,
192
+ message: `${id} has a Resolution section but status is "${status}"`,
193
+ });
194
+ }
195
+ // Multiple ## Resolution headings (warning) — scan raw file
196
+ if (e.type === 'work' || e.type === 'bug') {
197
+ try {
198
+ const content = readFileSync(join(dir, e.file), 'utf8');
199
+ const headingCount = (content.match(/^##\s+Resolution\s*$/gm) || []).length;
200
+ if (headingCount > 1) {
201
+ issues.push({
202
+ severity: 'warning',
203
+ type: 'multiple-resolutions',
204
+ source: id,
205
+ file: e.file,
206
+ message: `${id} has ${headingCount} Resolution sections (expected at most 1)`,
207
+ });
208
+ }
209
+ }
210
+ catch {
211
+ // File read failed — skip this check
212
+ }
213
+ }
214
+ }
215
+ return issues;
216
+ }
217
+ function checkOrphanedWorkItems(entities) {
218
+ const issues = [];
219
+ for (const e of entities) {
220
+ if (e.type !== 'work' && e.type !== 'bug')
221
+ continue;
222
+ if (DONE_STATUSES.has(e.attributes.status || ''))
223
+ continue;
224
+ if (e.attributes.milestone)
225
+ continue;
226
+ const id = e.attributes.id || e.file;
227
+ issues.push({
228
+ severity: 'warning',
229
+ type: 'no-milestone',
230
+ source: id,
231
+ file: e.file,
232
+ message: `${id} has no milestone assigned`,
233
+ });
234
+ }
235
+ return issues;
236
+ }
237
+ function checkCompletedMilestones(entities) {
238
+ const issues = [];
239
+ const milestones = entities.filter(e => e.type === 'milestone' && e.attributes.status === 'complete');
240
+ const workItems = entities.filter(e => e.type === 'work' || e.type === 'bug');
241
+ for (const m of milestones) {
242
+ const name = m.attributes.name || m.attributes.id || '';
243
+ const openItems = workItems.filter(w => w.attributes.milestone === name && !DONE_STATUSES.has(w.attributes.status || ''));
244
+ for (const item of openItems) {
245
+ const itemId = item.attributes.id || item.file;
246
+ issues.push({
247
+ severity: 'warning',
248
+ type: 'complete-milestone-open-item',
249
+ source: name,
250
+ file: m.file,
251
+ target: itemId,
252
+ message: `${name} marked complete but ${itemId} is still ${item.attributes.status || 'unknown'}`,
253
+ });
254
+ }
255
+ }
256
+ return issues;
257
+ }
258
+ export function runValidate(options) {
259
+ const { dir, strict = false } = options;
260
+ const entities = scanPlanFiles(dir, { cache: true });
261
+ const knownIds = new Set();
262
+ for (const e of entities) {
263
+ const id = e.attributes.id || e.attributes.name;
264
+ if (id)
265
+ knownIds.add(id);
266
+ }
267
+ const issues = [
268
+ ...checkBrokenRefs(entities, knownIds),
269
+ ...checkDuplicateIds(entities),
270
+ ...checkInvalidAttributes(entities),
271
+ ...checkCircularDeps(entities, knownIds),
272
+ ...checkOrphanedWorkItems(entities),
273
+ ...checkCompletedMilestones(entities),
274
+ ...checkResolutions(entities, dir),
275
+ ];
276
+ let errors = 0;
277
+ let warnings = 0;
278
+ let info = 0;
279
+ for (const issue of issues) {
280
+ if (issue.severity === 'error')
281
+ errors++;
282
+ else if (issue.severity === 'warning') {
283
+ if (strict) {
284
+ issue.severity = 'error';
285
+ errors++;
286
+ }
287
+ else {
288
+ warnings++;
289
+ }
290
+ }
291
+ else {
292
+ info++;
293
+ }
294
+ }
295
+ const exitCode = errors > 0 ? EXIT_ERRORS : EXIT_SUCCESS;
296
+ return { scanned: entities.length, issues, counts: { errors, warnings, info }, exitCode };
297
+ }
298
+ //# sourceMappingURL=validate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { RuneConfig } from '@refrakt-md/transform';
2
+ export declare const config: Record<string, RuneConfig>;
3
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAExD,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAiK7C,CAAC"}
package/dist/config.js ADDED
@@ -0,0 +1,163 @@
1
+ export const config = {
2
+ Spec: {
3
+ block: 'spec',
4
+ defaultDensity: 'full',
5
+ sections: { header: 'header', body: 'body' },
6
+ contentWrapper: { tag: 'div', ref: 'body' },
7
+ modifiers: {
8
+ id: { source: 'meta' },
9
+ status: { source: 'meta', default: 'draft' },
10
+ version: { source: 'meta' },
11
+ supersedes: { source: 'meta' },
12
+ tags: { source: 'meta', noBemClass: true },
13
+ },
14
+ structure: {
15
+ header: {
16
+ tag: 'div', before: true,
17
+ children: [
18
+ { tag: 'span', ref: 'id-badge', metaText: 'id', label: 'ID:', labelHidden: true, metaType: 'id', metaRank: 'primary' },
19
+ { tag: 'span', ref: 'status-badge', metaText: 'status', label: 'Status:', labelHidden: true, metaType: 'status', metaRank: 'primary', sentimentMap: { draft: 'neutral', review: 'caution', accepted: 'positive', superseded: 'caution', deprecated: 'negative' } },
20
+ { tag: 'span', ref: 'version-badge', metaText: 'version', condition: 'version', textPrefix: 'v', metaType: 'tag', metaRank: 'secondary' },
21
+ { tag: 'span', ref: 'supersedes-badge', metaText: 'supersedes', condition: 'supersedes', label: 'Supersedes:', metaType: 'id', metaRank: 'secondary' },
22
+ ],
23
+ },
24
+ },
25
+ editHints: { body: 'none', 'id-badge': 'none', 'status-badge': 'none', 'version-badge': 'none', 'supersedes-badge': 'none' },
26
+ },
27
+ Work: {
28
+ block: 'work',
29
+ defaultDensity: 'full',
30
+ checklist: true,
31
+ sections: { header: 'header', body: 'body' },
32
+ contentWrapper: { tag: 'div', ref: 'body' },
33
+ modifiers: {
34
+ id: { source: 'meta' },
35
+ status: { source: 'meta', default: 'draft' },
36
+ priority: { source: 'meta', default: 'medium' },
37
+ complexity: { source: 'meta', default: 'unknown' },
38
+ assignee: { source: 'meta', noBemClass: true },
39
+ milestone: { source: 'meta', noBemClass: true },
40
+ tags: { source: 'meta', noBemClass: true },
41
+ },
42
+ structure: {
43
+ header: {
44
+ tag: 'div', before: true,
45
+ children: [
46
+ { tag: 'span', ref: 'id-badge', metaText: 'id', label: 'ID:', labelHidden: true, metaType: 'id', metaRank: 'primary' },
47
+ { tag: 'span', ref: 'status-badge', metaText: 'status', label: 'Status:', labelHidden: true, metaType: 'status', metaRank: 'primary', sentimentMap: { draft: 'neutral', ready: 'neutral', 'in-progress': 'neutral', review: 'caution', done: 'positive', blocked: 'negative' } },
48
+ { tag: 'span', ref: 'priority-badge', metaText: 'priority', label: 'Priority:', metaType: 'category', metaRank: 'primary', sentimentMap: { critical: 'negative', high: 'caution', medium: 'neutral', low: 'neutral' } },
49
+ { tag: 'span', ref: 'complexity-badge', metaText: 'complexity', label: 'Complexity:', metaType: 'quantity', metaRank: 'secondary' },
50
+ { tag: 'span', ref: 'assignee-badge', metaText: 'assignee', label: 'Assignee:', condition: 'assignee', metaType: 'tag', metaRank: 'secondary' },
51
+ { tag: 'span', ref: 'milestone-badge', metaText: 'milestone', label: 'Milestone:', condition: 'milestone', metaType: 'tag', metaRank: 'secondary' },
52
+ ],
53
+ },
54
+ },
55
+ editHints: { body: 'none', 'id-badge': 'none', 'status-badge': 'none', 'priority-badge': 'none', 'complexity-badge': 'none', 'assignee-badge': 'none', 'milestone-badge': 'none' },
56
+ },
57
+ Bug: {
58
+ block: 'bug',
59
+ defaultDensity: 'full',
60
+ checklist: true,
61
+ sections: { header: 'header', body: 'body' },
62
+ contentWrapper: { tag: 'div', ref: 'body' },
63
+ modifiers: {
64
+ id: { source: 'meta' },
65
+ status: { source: 'meta', default: 'reported' },
66
+ severity: { source: 'meta', default: 'major' },
67
+ assignee: { source: 'meta', noBemClass: true },
68
+ milestone: { source: 'meta', noBemClass: true },
69
+ tags: { source: 'meta', noBemClass: true },
70
+ },
71
+ structure: {
72
+ header: {
73
+ tag: 'div', before: true,
74
+ children: [
75
+ { tag: 'span', ref: 'id-badge', metaText: 'id', label: 'ID:', labelHidden: true, metaType: 'id', metaRank: 'primary' },
76
+ { tag: 'span', ref: 'status-badge', metaText: 'status', label: 'Status:', labelHidden: true, metaType: 'status', metaRank: 'primary', sentimentMap: { reported: 'neutral', confirmed: 'caution', 'in-progress': 'neutral', fixed: 'positive', wontfix: 'neutral', duplicate: 'neutral' } },
77
+ { tag: 'span', ref: 'severity-badge', metaText: 'severity', label: 'Severity:', metaType: 'category', metaRank: 'primary', sentimentMap: { critical: 'negative', major: 'caution', minor: 'neutral', trivial: 'neutral' } },
78
+ { tag: 'span', ref: 'assignee-badge', metaText: 'assignee', label: 'Assignee:', condition: 'assignee', metaType: 'tag', metaRank: 'secondary' },
79
+ { tag: 'span', ref: 'milestone-badge', metaText: 'milestone', label: 'Milestone:', condition: 'milestone', metaType: 'tag', metaRank: 'secondary' },
80
+ ],
81
+ },
82
+ },
83
+ editHints: { body: 'none', 'id-badge': 'none', 'status-badge': 'none', 'severity-badge': 'none', 'assignee-badge': 'none', 'milestone-badge': 'none' },
84
+ },
85
+ Decision: {
86
+ block: 'decision',
87
+ defaultDensity: 'full',
88
+ sections: { header: 'header', body: 'body' },
89
+ contentWrapper: { tag: 'div', ref: 'body' },
90
+ modifiers: {
91
+ id: { source: 'meta' },
92
+ status: { source: 'meta', default: 'proposed' },
93
+ date: { source: 'meta', noBemClass: true },
94
+ supersedes: { source: 'meta', noBemClass: true },
95
+ tags: { source: 'meta', noBemClass: true },
96
+ },
97
+ structure: {
98
+ header: {
99
+ tag: 'div', before: true,
100
+ children: [
101
+ { tag: 'span', ref: 'id-badge', metaText: 'id', label: 'ID:', labelHidden: true, metaType: 'id', metaRank: 'primary' },
102
+ { tag: 'span', ref: 'status-badge', metaText: 'status', label: 'Status:', labelHidden: true, metaType: 'status', metaRank: 'primary', sentimentMap: { proposed: 'neutral', accepted: 'positive', superseded: 'caution', deprecated: 'negative' } },
103
+ { tag: 'time', ref: 'date-badge', metaText: 'date', label: 'Date:', condition: 'date', metaType: 'temporal', metaRank: 'secondary' },
104
+ { tag: 'span', ref: 'supersedes-badge', metaText: 'supersedes', condition: 'supersedes', label: 'Supersedes:', metaType: 'id', metaRank: 'secondary' },
105
+ ],
106
+ },
107
+ },
108
+ editHints: { body: 'none', 'id-badge': 'none', 'status-badge': 'none', 'date-badge': 'none', 'supersedes-badge': 'none' },
109
+ },
110
+ Milestone: {
111
+ block: 'milestone',
112
+ defaultDensity: 'full',
113
+ sections: { header: 'header', body: 'body' },
114
+ contentWrapper: { tag: 'div', ref: 'body' },
115
+ modifiers: {
116
+ name: { source: 'meta' },
117
+ status: { source: 'meta', default: 'planning' },
118
+ target: { source: 'meta', noBemClass: true },
119
+ },
120
+ structure: {
121
+ header: {
122
+ tag: 'div', before: true,
123
+ children: [
124
+ { tag: 'span', ref: 'name-badge', metaText: 'name', label: 'Name:', labelHidden: true, metaType: 'id', metaRank: 'primary' },
125
+ { tag: 'span', ref: 'status-badge', metaText: 'status', label: 'Status:', labelHidden: true, metaType: 'status', metaRank: 'primary', sentimentMap: { planning: 'neutral', active: 'positive', complete: 'positive' } },
126
+ { tag: 'time', ref: 'target-badge', metaText: 'target', label: 'Target:', condition: 'target', metaType: 'temporal', metaRank: 'secondary' },
127
+ ],
128
+ },
129
+ },
130
+ editHints: { body: 'none', 'name-badge': 'none', 'status-badge': 'none', 'target-badge': 'none' },
131
+ },
132
+ Backlog: {
133
+ block: 'backlog',
134
+ defaultDensity: 'full',
135
+ modifiers: {
136
+ filter: { source: 'meta', noBemClass: true },
137
+ sort: { source: 'meta', noBemClass: true },
138
+ group: { source: 'meta', noBemClass: true },
139
+ show: { source: 'meta', noBemClass: true },
140
+ },
141
+ },
142
+ DecisionLog: {
143
+ block: 'decision-log',
144
+ defaultDensity: 'full',
145
+ modifiers: {
146
+ filter: { source: 'meta', noBemClass: true },
147
+ sort: { source: 'meta', noBemClass: true },
148
+ },
149
+ },
150
+ PlanProgress: {
151
+ block: 'plan-progress',
152
+ modifiers: {
153
+ show: { source: 'meta', noBemClass: true },
154
+ },
155
+ },
156
+ PlanActivity: {
157
+ block: 'plan-activity',
158
+ modifiers: {
159
+ limit: { source: 'meta', noBemClass: true },
160
+ },
161
+ },
162
+ };
163
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { EntityRegistration } from '@refrakt-md/types';
2
+ export interface ParsedFilter {
3
+ [field: string]: string[];
4
+ }
5
+ /**
6
+ * Parse a filter expression: space-separated `field:value` pairs.
7
+ * Multiple values for the same field act as OR. Different fields act as AND.
8
+ * Example: "status:ready priority:high priority:critical"
9
+ */
10
+ export declare function parseFilter(expr: string): ParsedFilter;
11
+ /** Test whether an entity's data matches all filter conditions */
12
+ export declare function matchesFilter(entity: EntityRegistration, filter: ParsedFilter): boolean;
13
+ /** Sort entities by a field. Returns a new sorted array. */
14
+ export declare function sortEntities(entities: EntityRegistration[], sortField: string): EntityRegistration[];
15
+ /** Group entities by a field. Returns Map preserving insertion order. */
16
+ export declare function groupEntities(entities: EntityRegistration[], groupField: string): Map<string, EntityRegistration[]>;
17
+ //# sourceMappingURL=filter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../src/filter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAE5D,MAAM,WAAW,YAAY;IAC5B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CAC1B;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CActD;AAED,kEAAkE;AAClE,wBAAgB,aAAa,CAAC,MAAM,EAAE,kBAAkB,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAYvF;AAKD,4DAA4D;AAC5D,wBAAgB,YAAY,CAAC,QAAQ,EAAE,kBAAkB,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,kBAAkB,EAAE,CAiBpG;AAED,yEAAyE;AACzE,wBAAgB,aAAa,CAAC,QAAQ,EAAE,kBAAkB,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,kBAAkB,EAAE,CAAC,CAQnH"}
package/dist/filter.js ADDED
@@ -0,0 +1,72 @@
1
+ /**
2
+ * Parse a filter expression: space-separated `field:value` pairs.
3
+ * Multiple values for the same field act as OR. Different fields act as AND.
4
+ * Example: "status:ready priority:high priority:critical"
5
+ */
6
+ export function parseFilter(expr) {
7
+ const filter = {};
8
+ if (!expr)
9
+ return filter;
10
+ for (const part of expr.split(/\s+/)) {
11
+ const colon = part.indexOf(':');
12
+ if (colon === -1)
13
+ continue;
14
+ const field = part.slice(0, colon);
15
+ if (!field)
16
+ continue;
17
+ const value = part.slice(colon + 1);
18
+ if (!filter[field])
19
+ filter[field] = [];
20
+ filter[field].push(value);
21
+ }
22
+ return filter;
23
+ }
24
+ /** Test whether an entity's data matches all filter conditions */
25
+ export function matchesFilter(entity, filter) {
26
+ for (const [field, values] of Object.entries(filter)) {
27
+ const entityValue = String(entity.data[field] ?? '');
28
+ // For comma-separated fields like tags, check if any filter value is contained
29
+ if (field === 'tags') {
30
+ const entityTags = entityValue.split(',').map(t => t.trim().toLowerCase());
31
+ if (!values.some(v => entityTags.includes(v.toLowerCase())))
32
+ return false;
33
+ }
34
+ else {
35
+ if (!values.includes(entityValue))
36
+ return false;
37
+ }
38
+ }
39
+ return true;
40
+ }
41
+ const PRIORITY_ORDER = { critical: 0, high: 1, medium: 2, low: 3 };
42
+ const COMPLEXITY_ORDER = { trivial: 0, simple: 1, moderate: 2, complex: 3, unknown: 4 };
43
+ /** Sort entities by a field. Returns a new sorted array. */
44
+ export function sortEntities(entities, sortField) {
45
+ return [...entities].sort((a, b) => {
46
+ const aVal = String(a.data[sortField] ?? '');
47
+ const bVal = String(b.data[sortField] ?? '');
48
+ if (sortField === 'priority') {
49
+ return (PRIORITY_ORDER[aVal] ?? 99) - (PRIORITY_ORDER[bVal] ?? 99);
50
+ }
51
+ if (sortField === 'complexity') {
52
+ return (COMPLEXITY_ORDER[aVal] ?? 99) - (COMPLEXITY_ORDER[bVal] ?? 99);
53
+ }
54
+ if (sortField === 'date') {
55
+ // Reverse chronological
56
+ return bVal.localeCompare(aVal);
57
+ }
58
+ return aVal.localeCompare(bVal);
59
+ });
60
+ }
61
+ /** Group entities by a field. Returns Map preserving insertion order. */
62
+ export function groupEntities(entities, groupField) {
63
+ const groups = new Map();
64
+ for (const entity of entities) {
65
+ const key = String(entity.data[groupField] ?? '') || '(none)';
66
+ if (!groups.has(key))
67
+ groups.set(key, []);
68
+ groups.get(key).push(entity);
69
+ }
70
+ return groups;
71
+ }
72
+ //# sourceMappingURL=filter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filter.js","sourceRoot":"","sources":["../src/filter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { RunePackage } from '@refrakt-md/types';
2
+ export declare const plan: RunePackage;
3
+ export default plan;
4
+ export { scanPlanFiles, parseFile } from './scanner.js';
5
+ export { planPipelineHooks } from './pipeline.js';
6
+ export type { PlanEntity, PlanRuneType, Criterion, ScanCache, ScanCacheEntry, ScanOptions } from './types.js';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAcrD,eAAO,MAAM,IAAI,EAAE,WA+HlB,CAAC;AAEF,eAAe,IAAI,CAAC;AAEpB,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC"}