maxsimcli 2.5.6 → 3.0.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 (137) hide show
  1. package/README.md +4 -0
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/adapters/base.d.ts +34 -0
  4. package/dist/adapters/base.d.ts.map +1 -0
  5. package/dist/adapters/base.js +116 -0
  6. package/dist/adapters/base.js.map +1 -0
  7. package/dist/adapters/claude.d.ts +21 -0
  8. package/dist/adapters/claude.d.ts.map +1 -0
  9. package/dist/adapters/claude.js +104 -0
  10. package/dist/adapters/claude.js.map +1 -0
  11. package/dist/adapters/codex.d.ts +19 -0
  12. package/dist/adapters/codex.d.ts.map +1 -0
  13. package/dist/adapters/codex.js +94 -0
  14. package/dist/adapters/codex.js.map +1 -0
  15. package/dist/adapters/gemini.d.ts +19 -0
  16. package/dist/adapters/gemini.d.ts.map +1 -0
  17. package/dist/adapters/gemini.js +96 -0
  18. package/dist/adapters/gemini.js.map +1 -0
  19. package/dist/adapters/index.d.ts +20 -0
  20. package/dist/adapters/index.d.ts.map +1 -0
  21. package/dist/adapters/index.js +56 -0
  22. package/dist/adapters/index.js.map +1 -0
  23. package/dist/adapters/opencode.d.ts +17 -0
  24. package/dist/adapters/opencode.d.ts.map +1 -0
  25. package/dist/adapters/opencode.js +111 -0
  26. package/dist/adapters/opencode.js.map +1 -0
  27. package/dist/adapters/transforms/content.d.ts +39 -0
  28. package/dist/adapters/transforms/content.d.ts.map +1 -0
  29. package/dist/adapters/transforms/content.js +125 -0
  30. package/dist/adapters/transforms/content.js.map +1 -0
  31. package/dist/adapters/transforms/frontmatter.d.ts +42 -0
  32. package/dist/adapters/transforms/frontmatter.d.ts.map +1 -0
  33. package/dist/adapters/transforms/frontmatter.js +204 -0
  34. package/dist/adapters/transforms/frontmatter.js.map +1 -0
  35. package/dist/adapters/transforms/tool-maps.d.ts +20 -0
  36. package/dist/adapters/transforms/tool-maps.d.ts.map +1 -0
  37. package/dist/adapters/transforms/tool-maps.js +64 -0
  38. package/dist/adapters/transforms/tool-maps.js.map +1 -0
  39. package/dist/adapters/types.d.ts +10 -0
  40. package/dist/adapters/types.d.ts.map +1 -0
  41. package/dist/adapters/types.js +6 -0
  42. package/dist/adapters/types.js.map +1 -0
  43. package/dist/assets/CHANGELOG.md +19 -0
  44. package/dist/assets/dashboard/server.js +27728 -12013
  45. package/dist/assets/hooks/maxsim-check-update.cjs +2 -2
  46. package/dist/assets/hooks/maxsim-check-update.cjs.map +1 -0
  47. package/dist/assets/hooks/maxsim-context-monitor.cjs +2 -2
  48. package/dist/assets/hooks/maxsim-context-monitor.cjs.map +1 -0
  49. package/dist/assets/hooks/maxsim-statusline.cjs +2 -2
  50. package/dist/assets/hooks/maxsim-statusline.cjs.map +1 -0
  51. package/dist/cli.cjs +15316 -5348
  52. package/dist/cli.cjs.map +1 -1
  53. package/dist/cli.d.ts +0 -6
  54. package/dist/cli.d.ts.map +1 -1
  55. package/dist/cli.js +282 -443
  56. package/dist/cli.js.map +1 -1
  57. package/dist/core/commands.d.ts +19 -0
  58. package/dist/core/commands.d.ts.map +1 -0
  59. package/dist/core/commands.js +560 -0
  60. package/dist/core/commands.js.map +1 -0
  61. package/dist/core/config.d.ts +9 -0
  62. package/dist/core/config.d.ts.map +1 -0
  63. package/dist/core/config.js +147 -0
  64. package/dist/core/config.js.map +1 -0
  65. package/dist/core/core.d.ts +39 -0
  66. package/dist/core/core.d.ts.map +1 -0
  67. package/dist/core/core.js +411 -0
  68. package/dist/core/core.js.map +1 -0
  69. package/dist/core/frontmatter.d.ts +33 -0
  70. package/dist/core/frontmatter.d.ts.map +1 -0
  71. package/dist/core/frontmatter.js +192 -0
  72. package/dist/core/frontmatter.js.map +1 -0
  73. package/dist/core/index.d.ts +20 -0
  74. package/dist/core/index.d.ts.map +1 -0
  75. package/dist/core/index.js +126 -0
  76. package/dist/core/index.js.map +1 -0
  77. package/dist/core/init.d.ts +252 -0
  78. package/dist/core/init.d.ts.map +1 -0
  79. package/dist/core/init.js +578 -0
  80. package/dist/core/init.js.map +1 -0
  81. package/dist/core/milestone.d.ts +9 -0
  82. package/dist/core/milestone.d.ts.map +1 -0
  83. package/dist/core/milestone.js +191 -0
  84. package/dist/core/milestone.js.map +1 -0
  85. package/dist/core/phase.d.ts +17 -0
  86. package/dist/core/phase.d.ts.map +1 -0
  87. package/dist/core/phase.js +610 -0
  88. package/dist/core/phase.js.map +1 -0
  89. package/dist/core/roadmap.d.ts +9 -0
  90. package/dist/core/roadmap.d.ts.map +1 -0
  91. package/dist/core/roadmap.js +228 -0
  92. package/dist/core/roadmap.js.map +1 -0
  93. package/dist/core/state.d.ts +21 -0
  94. package/dist/core/state.d.ts.map +1 -0
  95. package/dist/core/state.js +507 -0
  96. package/dist/core/state.js.map +1 -0
  97. package/dist/core/template.d.ts +30 -0
  98. package/dist/core/template.d.ts.map +1 -0
  99. package/dist/core/template.js +225 -0
  100. package/dist/core/template.js.map +1 -0
  101. package/dist/core/types.d.ts +374 -0
  102. package/dist/core/types.d.ts.map +1 -0
  103. package/dist/core/types.js +53 -0
  104. package/dist/core/types.js.map +1 -0
  105. package/dist/core/verify.d.ts +127 -0
  106. package/dist/core/verify.d.ts.map +1 -0
  107. package/dist/core/verify.js +783 -0
  108. package/dist/core/verify.js.map +1 -0
  109. package/dist/hooks/index.d.ts +11 -0
  110. package/dist/hooks/index.d.ts.map +1 -0
  111. package/dist/hooks/index.js +18 -0
  112. package/dist/hooks/index.js.map +1 -0
  113. package/dist/hooks/maxsim-check-update.d.ts +17 -0
  114. package/dist/hooks/maxsim-check-update.d.ts.map +1 -0
  115. package/dist/hooks/maxsim-check-update.js +101 -0
  116. package/dist/hooks/maxsim-check-update.js.map +1 -0
  117. package/dist/hooks/maxsim-context-monitor.d.ts +21 -0
  118. package/dist/hooks/maxsim-context-monitor.d.ts.map +1 -0
  119. package/dist/hooks/maxsim-context-monitor.js +131 -0
  120. package/dist/hooks/maxsim-context-monitor.js.map +1 -0
  121. package/dist/hooks/maxsim-statusline.d.ts +19 -0
  122. package/dist/hooks/maxsim-statusline.d.ts.map +1 -0
  123. package/dist/hooks/maxsim-statusline.js +146 -0
  124. package/dist/hooks/maxsim-statusline.js.map +1 -0
  125. package/dist/hooks/shared.d.ts +11 -0
  126. package/dist/hooks/shared.d.ts.map +1 -0
  127. package/dist/hooks/shared.js +29 -0
  128. package/dist/hooks/shared.js.map +1 -0
  129. package/dist/install.cjs +2807 -1211
  130. package/dist/install.cjs.map +1 -1
  131. package/dist/install.js +34 -85
  132. package/dist/install.js.map +1 -1
  133. package/package.json +10 -7
  134. package/dist/assets/hooks/index.cjs +0 -239
  135. package/dist/assets/templates/CLAUDE.md +0 -22
  136. package/dist/assets/templates/package.json +0 -5
  137. package/dist/assets/templates/project.json +0 -5
@@ -0,0 +1,507 @@
1
+ "use strict";
2
+ /**
3
+ * State — STATE.md operations and progression engine
4
+ *
5
+ * Ported from maxsim/bin/lib/state.cjs
6
+ */
7
+ var __importDefault = (this && this.__importDefault) || function (mod) {
8
+ return (mod && mod.__esModule) ? mod : { "default": mod };
9
+ };
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.stateExtractField = stateExtractField;
12
+ exports.stateReplaceField = stateReplaceField;
13
+ exports.cmdStateLoad = cmdStateLoad;
14
+ exports.cmdStateGet = cmdStateGet;
15
+ exports.cmdStatePatch = cmdStatePatch;
16
+ exports.cmdStateUpdate = cmdStateUpdate;
17
+ exports.cmdStateAdvancePlan = cmdStateAdvancePlan;
18
+ exports.cmdStateRecordMetric = cmdStateRecordMetric;
19
+ exports.cmdStateUpdateProgress = cmdStateUpdateProgress;
20
+ exports.cmdStateAddDecision = cmdStateAddDecision;
21
+ exports.cmdStateAddBlocker = cmdStateAddBlocker;
22
+ exports.cmdStateResolveBlocker = cmdStateResolveBlocker;
23
+ exports.cmdStateRecordSession = cmdStateRecordSession;
24
+ exports.cmdStateSnapshot = cmdStateSnapshot;
25
+ const node_fs_1 = __importDefault(require("node:fs"));
26
+ const node_path_1 = __importDefault(require("node:path"));
27
+ const core_js_1 = require("./core.js");
28
+ // ─── Internal helpers ────────────────────────────────────────────────────────
29
+ function escapeRegex(str) {
30
+ return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
31
+ }
32
+ function stateExtractField(content, fieldName) {
33
+ const pattern = new RegExp(`\\*\\*${fieldName}:\\*\\*\\s*(.+)`, 'i');
34
+ const match = content.match(pattern);
35
+ return match ? match[1].trim() : null;
36
+ }
37
+ function stateReplaceField(content, fieldName, newValue) {
38
+ const escaped = escapeRegex(fieldName);
39
+ const pattern = new RegExp(`(\\*\\*${escaped}:\\*\\*\\s*)(.*)`, 'i');
40
+ if (pattern.test(content)) {
41
+ return content.replace(pattern, (_match, prefix) => `${prefix}${newValue}`);
42
+ }
43
+ return null;
44
+ }
45
+ function readTextArgOrFile(cwd, value, filePath, label) {
46
+ if (!filePath)
47
+ return value;
48
+ const resolvedPath = node_path_1.default.isAbsolute(filePath) ? filePath : node_path_1.default.join(cwd, filePath);
49
+ try {
50
+ return node_fs_1.default.readFileSync(resolvedPath, 'utf-8').trimEnd();
51
+ }
52
+ catch {
53
+ throw new Error(`${label} file not found: ${filePath}`);
54
+ }
55
+ }
56
+ // ─── State commands ──────────────────────────────────────────────────────────
57
+ function cmdStateLoad(cwd, raw) {
58
+ const config = (0, core_js_1.loadConfig)(cwd);
59
+ const planningDir = node_path_1.default.join(cwd, '.planning');
60
+ let stateRaw = '';
61
+ try {
62
+ stateRaw = node_fs_1.default.readFileSync(node_path_1.default.join(planningDir, 'STATE.md'), 'utf-8');
63
+ }
64
+ catch (e) {
65
+ /* optional op, ignore */
66
+ if (process.env.MAXSIM_DEBUG)
67
+ console.error(e);
68
+ }
69
+ const configExists = node_fs_1.default.existsSync(node_path_1.default.join(planningDir, 'config.json'));
70
+ const roadmapExists = node_fs_1.default.existsSync(node_path_1.default.join(planningDir, 'ROADMAP.md'));
71
+ const stateExists = stateRaw.length > 0;
72
+ const result = {
73
+ config,
74
+ state_raw: stateRaw,
75
+ state_exists: stateExists,
76
+ roadmap_exists: roadmapExists,
77
+ config_exists: configExists,
78
+ };
79
+ if (raw) {
80
+ const c = config;
81
+ const lines = [
82
+ `model_profile=${c.model_profile}`,
83
+ `commit_docs=${c.commit_docs}`,
84
+ `branching_strategy=${c.branching_strategy}`,
85
+ `phase_branch_template=${c.phase_branch_template}`,
86
+ `milestone_branch_template=${c.milestone_branch_template}`,
87
+ `parallelization=${c.parallelization}`,
88
+ `research=${c.research}`,
89
+ `plan_checker=${c.plan_checker}`,
90
+ `verifier=${c.verifier}`,
91
+ `config_exists=${configExists}`,
92
+ `roadmap_exists=${roadmapExists}`,
93
+ `state_exists=${stateExists}`,
94
+ ];
95
+ process.stdout.write(lines.join('\n'));
96
+ process.exit(0);
97
+ }
98
+ (0, core_js_1.output)(result);
99
+ }
100
+ function cmdStateGet(cwd, section, raw) {
101
+ const statePath = node_path_1.default.join(cwd, '.planning', 'STATE.md');
102
+ try {
103
+ const content = node_fs_1.default.readFileSync(statePath, 'utf-8');
104
+ if (!section) {
105
+ (0, core_js_1.output)({ content }, raw, content);
106
+ return;
107
+ }
108
+ const fieldEscaped = escapeRegex(section);
109
+ // Check for **field:** value
110
+ const fieldPattern = new RegExp(`\\*\\*${fieldEscaped}:\\*\\*\\s*(.*)`, 'i');
111
+ const fieldMatch = content.match(fieldPattern);
112
+ if (fieldMatch) {
113
+ (0, core_js_1.output)({ [section]: fieldMatch[1].trim() }, raw, fieldMatch[1].trim());
114
+ return;
115
+ }
116
+ // Check for ## Section
117
+ const sectionPattern = new RegExp(`##\\s*${fieldEscaped}\\s*\n([\\s\\S]*?)(?=\\n##|$)`, 'i');
118
+ const sectionMatch = content.match(sectionPattern);
119
+ if (sectionMatch) {
120
+ (0, core_js_1.output)({ [section]: sectionMatch[1].trim() }, raw, sectionMatch[1].trim());
121
+ return;
122
+ }
123
+ (0, core_js_1.output)({ error: `Section or field "${section}" not found` }, raw, '');
124
+ }
125
+ catch {
126
+ (0, core_js_1.error)('STATE.md not found');
127
+ }
128
+ }
129
+ function cmdStatePatch(cwd, patches, raw) {
130
+ const statePath = node_path_1.default.join(cwd, '.planning', 'STATE.md');
131
+ try {
132
+ let content = node_fs_1.default.readFileSync(statePath, 'utf-8');
133
+ const results = { updated: [], failed: [] };
134
+ for (const [field, value] of Object.entries(patches)) {
135
+ const fieldEscaped = escapeRegex(field);
136
+ const pattern = new RegExp(`(\\*\\*${fieldEscaped}:\\*\\*\\s*)(.*)`, 'i');
137
+ if (pattern.test(content)) {
138
+ content = content.replace(pattern, (_match, prefix) => `${prefix}${value}`);
139
+ results.updated.push(field);
140
+ }
141
+ else {
142
+ results.failed.push(field);
143
+ }
144
+ }
145
+ if (results.updated.length > 0) {
146
+ node_fs_1.default.writeFileSync(statePath, content, 'utf-8');
147
+ }
148
+ (0, core_js_1.output)(results, raw, results.updated.length > 0 ? 'true' : 'false');
149
+ }
150
+ catch {
151
+ (0, core_js_1.error)('STATE.md not found');
152
+ }
153
+ }
154
+ function cmdStateUpdate(cwd, field, value) {
155
+ if (!field || value === undefined) {
156
+ (0, core_js_1.error)('field and value required for state update');
157
+ }
158
+ const statePath = node_path_1.default.join(cwd, '.planning', 'STATE.md');
159
+ try {
160
+ let content = node_fs_1.default.readFileSync(statePath, 'utf-8');
161
+ const fieldEscaped = escapeRegex(field);
162
+ const pattern = new RegExp(`(\\*\\*${fieldEscaped}:\\*\\*\\s*)(.*)`, 'i');
163
+ if (pattern.test(content)) {
164
+ content = content.replace(pattern, (_match, prefix) => `${prefix}${value}`);
165
+ node_fs_1.default.writeFileSync(statePath, content, 'utf-8');
166
+ (0, core_js_1.output)({ updated: true });
167
+ }
168
+ else {
169
+ (0, core_js_1.output)({ updated: false, reason: `Field "${field}" not found in STATE.md` });
170
+ }
171
+ }
172
+ catch {
173
+ (0, core_js_1.output)({ updated: false, reason: 'STATE.md not found' });
174
+ }
175
+ }
176
+ // ─── State Progression Engine ────────────────────────────────────────────────
177
+ function cmdStateAdvancePlan(cwd, raw) {
178
+ const statePath = node_path_1.default.join(cwd, '.planning', 'STATE.md');
179
+ if (!node_fs_1.default.existsSync(statePath)) {
180
+ (0, core_js_1.output)({ error: 'STATE.md not found' }, raw);
181
+ return;
182
+ }
183
+ let content = node_fs_1.default.readFileSync(statePath, 'utf-8');
184
+ const currentPlan = parseInt(stateExtractField(content, 'Current Plan') ?? '', 10);
185
+ const totalPlans = parseInt(stateExtractField(content, 'Total Plans in Phase') ?? '', 10);
186
+ const today = new Date().toISOString().split('T')[0];
187
+ if (isNaN(currentPlan) || isNaN(totalPlans)) {
188
+ (0, core_js_1.output)({ error: 'Cannot parse Current Plan or Total Plans in Phase from STATE.md' }, raw);
189
+ return;
190
+ }
191
+ if (currentPlan >= totalPlans) {
192
+ content = stateReplaceField(content, 'Status', 'Phase complete — ready for verification') || content;
193
+ content = stateReplaceField(content, 'Last Activity', today) || content;
194
+ node_fs_1.default.writeFileSync(statePath, content, 'utf-8');
195
+ (0, core_js_1.output)({ advanced: false, reason: 'last_plan', current_plan: currentPlan, total_plans: totalPlans, status: 'ready_for_verification' }, raw, 'false');
196
+ }
197
+ else {
198
+ const newPlan = currentPlan + 1;
199
+ content = stateReplaceField(content, 'Current Plan', String(newPlan)) || content;
200
+ content = stateReplaceField(content, 'Status', 'Ready to execute') || content;
201
+ content = stateReplaceField(content, 'Last Activity', today) || content;
202
+ node_fs_1.default.writeFileSync(statePath, content, 'utf-8');
203
+ (0, core_js_1.output)({ advanced: true, previous_plan: currentPlan, current_plan: newPlan, total_plans: totalPlans }, raw, 'true');
204
+ }
205
+ }
206
+ function cmdStateRecordMetric(cwd, options, raw) {
207
+ const statePath = node_path_1.default.join(cwd, '.planning', 'STATE.md');
208
+ if (!node_fs_1.default.existsSync(statePath)) {
209
+ (0, core_js_1.output)({ error: 'STATE.md not found' }, raw);
210
+ return;
211
+ }
212
+ let content = node_fs_1.default.readFileSync(statePath, 'utf-8');
213
+ const { phase, plan, duration, tasks, files } = options;
214
+ if (!phase || !plan || !duration) {
215
+ (0, core_js_1.output)({ error: 'phase, plan, and duration required' }, raw);
216
+ return;
217
+ }
218
+ const metricsPattern = /(##\s*Performance Metrics[\s\S]*?\n\|[^\n]+\n\|[-|\s]+\n)([\s\S]*?)(?=\n##|\n$|$)/i;
219
+ const metricsMatch = content.match(metricsPattern);
220
+ if (metricsMatch) {
221
+ let tableBody = metricsMatch[2].trimEnd();
222
+ const newRow = `| Phase ${phase} P${plan} | ${duration} | ${tasks || '-'} tasks | ${files || '-'} files |`;
223
+ if (tableBody.trim() === '' || tableBody.includes('None yet')) {
224
+ tableBody = newRow;
225
+ }
226
+ else {
227
+ tableBody = tableBody + '\n' + newRow;
228
+ }
229
+ content = content.replace(metricsPattern, (_match, header) => `${header}${tableBody}\n`);
230
+ node_fs_1.default.writeFileSync(statePath, content, 'utf-8');
231
+ (0, core_js_1.output)({ recorded: true, phase, plan, duration }, raw, 'true');
232
+ }
233
+ else {
234
+ (0, core_js_1.output)({ recorded: false, reason: 'Performance Metrics section not found in STATE.md' }, raw, 'false');
235
+ }
236
+ }
237
+ function cmdStateUpdateProgress(cwd, raw) {
238
+ const statePath = node_path_1.default.join(cwd, '.planning', 'STATE.md');
239
+ if (!node_fs_1.default.existsSync(statePath)) {
240
+ (0, core_js_1.output)({ error: 'STATE.md not found' }, raw);
241
+ return;
242
+ }
243
+ let content = node_fs_1.default.readFileSync(statePath, 'utf-8');
244
+ const phasesDir = node_path_1.default.join(cwd, '.planning', 'phases');
245
+ let totalPlans = 0;
246
+ let totalSummaries = 0;
247
+ if (node_fs_1.default.existsSync(phasesDir)) {
248
+ const phaseDirs = node_fs_1.default.readdirSync(phasesDir, { withFileTypes: true })
249
+ .filter(e => e.isDirectory()).map(e => e.name);
250
+ for (const dir of phaseDirs) {
251
+ const files = node_fs_1.default.readdirSync(node_path_1.default.join(phasesDir, dir));
252
+ totalPlans += files.filter(f => f.match(/-PLAN\.md$/i)).length;
253
+ totalSummaries += files.filter(f => f.match(/-SUMMARY\.md$/i)).length;
254
+ }
255
+ }
256
+ const percent = totalPlans > 0 ? Math.min(100, Math.round(totalSummaries / totalPlans * 100)) : 0;
257
+ const barWidth = 10;
258
+ const filled = Math.round(percent / 100 * barWidth);
259
+ const bar = '\u2588'.repeat(filled) + '\u2591'.repeat(barWidth - filled);
260
+ const progressStr = `[${bar}] ${percent}%`;
261
+ const progressPattern = /(\*\*Progress:\*\*\s*).*/i;
262
+ if (progressPattern.test(content)) {
263
+ content = content.replace(progressPattern, (_match, prefix) => `${prefix}${progressStr}`);
264
+ node_fs_1.default.writeFileSync(statePath, content, 'utf-8');
265
+ (0, core_js_1.output)({ updated: true, percent, completed: totalSummaries, total: totalPlans, bar: progressStr }, raw, progressStr);
266
+ }
267
+ else {
268
+ (0, core_js_1.output)({ updated: false, reason: 'Progress field not found in STATE.md' }, raw, 'false');
269
+ }
270
+ }
271
+ function cmdStateAddDecision(cwd, options, raw) {
272
+ const statePath = node_path_1.default.join(cwd, '.planning', 'STATE.md');
273
+ if (!node_fs_1.default.existsSync(statePath)) {
274
+ (0, core_js_1.output)({ error: 'STATE.md not found' }, raw);
275
+ return;
276
+ }
277
+ const { phase, summary, summary_file, rationale, rationale_file } = options;
278
+ let summaryText;
279
+ let rationaleText = '';
280
+ try {
281
+ summaryText = readTextArgOrFile(cwd, summary, summary_file, 'summary');
282
+ rationaleText = readTextArgOrFile(cwd, rationale || '', rationale_file, 'rationale') || '';
283
+ }
284
+ catch (thrown) {
285
+ const e = thrown;
286
+ (0, core_js_1.output)({ added: false, reason: e.message }, raw, 'false');
287
+ return;
288
+ }
289
+ if (!summaryText) {
290
+ (0, core_js_1.output)({ error: 'summary required' }, raw);
291
+ return;
292
+ }
293
+ let content = node_fs_1.default.readFileSync(statePath, 'utf-8');
294
+ const entry = `- [Phase ${phase || '?'}]: ${summaryText}${rationaleText ? ` — ${rationaleText}` : ''}`;
295
+ const sectionPattern = /(###?\s*(?:Decisions|Decisions Made|Accumulated.*Decisions)\s*\n)([\s\S]*?)(?=\n###?|\n##[^#]|$)/i;
296
+ const match = content.match(sectionPattern);
297
+ if (match) {
298
+ let sectionBody = match[2];
299
+ sectionBody = sectionBody.replace(/None yet\.?\s*\n?/gi, '').replace(/No decisions yet\.?\s*\n?/gi, '');
300
+ sectionBody = sectionBody.trimEnd() + '\n' + entry + '\n';
301
+ content = content.replace(sectionPattern, (_match, header) => `${header}${sectionBody}`);
302
+ node_fs_1.default.writeFileSync(statePath, content, 'utf-8');
303
+ (0, core_js_1.output)({ added: true, decision: entry }, raw, 'true');
304
+ }
305
+ else {
306
+ (0, core_js_1.output)({ added: false, reason: 'Decisions section not found in STATE.md' }, raw, 'false');
307
+ }
308
+ }
309
+ function cmdStateAddBlocker(cwd, text, raw) {
310
+ const statePath = node_path_1.default.join(cwd, '.planning', 'STATE.md');
311
+ if (!node_fs_1.default.existsSync(statePath)) {
312
+ (0, core_js_1.output)({ error: 'STATE.md not found' }, raw);
313
+ return;
314
+ }
315
+ const blockerOptions = typeof text === 'object' && text !== null ? text : { text: text };
316
+ let blockerText;
317
+ try {
318
+ blockerText = readTextArgOrFile(cwd, blockerOptions.text, blockerOptions.text_file, 'blocker');
319
+ }
320
+ catch (thrown) {
321
+ const e = thrown;
322
+ (0, core_js_1.output)({ added: false, reason: e.message }, raw, 'false');
323
+ return;
324
+ }
325
+ if (!blockerText) {
326
+ (0, core_js_1.output)({ error: 'text required' }, raw);
327
+ return;
328
+ }
329
+ let content = node_fs_1.default.readFileSync(statePath, 'utf-8');
330
+ const entry = `- ${blockerText}`;
331
+ const sectionPattern = /(###?\s*(?:Blockers|Blockers\/Concerns|Concerns)\s*\n)([\s\S]*?)(?=\n###?|\n##[^#]|$)/i;
332
+ const match = content.match(sectionPattern);
333
+ if (match) {
334
+ let sectionBody = match[2];
335
+ sectionBody = sectionBody.replace(/None\.?\s*\n?/gi, '').replace(/None yet\.?\s*\n?/gi, '');
336
+ sectionBody = sectionBody.trimEnd() + '\n' + entry + '\n';
337
+ content = content.replace(sectionPattern, (_match, header) => `${header}${sectionBody}`);
338
+ node_fs_1.default.writeFileSync(statePath, content, 'utf-8');
339
+ (0, core_js_1.output)({ added: true, blocker: blockerText }, raw, 'true');
340
+ }
341
+ else {
342
+ (0, core_js_1.output)({ added: false, reason: 'Blockers section not found in STATE.md' }, raw, 'false');
343
+ }
344
+ }
345
+ function cmdStateResolveBlocker(cwd, text, raw) {
346
+ const statePath = node_path_1.default.join(cwd, '.planning', 'STATE.md');
347
+ if (!node_fs_1.default.existsSync(statePath)) {
348
+ (0, core_js_1.output)({ error: 'STATE.md not found' }, raw);
349
+ return;
350
+ }
351
+ if (!text) {
352
+ (0, core_js_1.output)({ error: 'text required' }, raw);
353
+ return;
354
+ }
355
+ let content = node_fs_1.default.readFileSync(statePath, 'utf-8');
356
+ const sectionPattern = /(###?\s*(?:Blockers|Blockers\/Concerns|Concerns)\s*\n)([\s\S]*?)(?=\n###?|\n##[^#]|$)/i;
357
+ const match = content.match(sectionPattern);
358
+ if (match) {
359
+ const sectionBody = match[2];
360
+ const lines = sectionBody.split('\n');
361
+ const filtered = lines.filter(line => {
362
+ if (!line.startsWith('- '))
363
+ return true;
364
+ return !line.toLowerCase().includes(text.toLowerCase());
365
+ });
366
+ let newBody = filtered.join('\n');
367
+ if (!newBody.trim() || !newBody.includes('- ')) {
368
+ newBody = 'None\n';
369
+ }
370
+ content = content.replace(sectionPattern, (_match, header) => `${header}${newBody}`);
371
+ node_fs_1.default.writeFileSync(statePath, content, 'utf-8');
372
+ (0, core_js_1.output)({ resolved: true, blocker: text }, raw, 'true');
373
+ }
374
+ else {
375
+ (0, core_js_1.output)({ resolved: false, reason: 'Blockers section not found in STATE.md' }, raw, 'false');
376
+ }
377
+ }
378
+ function cmdStateRecordSession(cwd, options, raw) {
379
+ const statePath = node_path_1.default.join(cwd, '.planning', 'STATE.md');
380
+ if (!node_fs_1.default.existsSync(statePath)) {
381
+ (0, core_js_1.output)({ error: 'STATE.md not found' }, raw);
382
+ return;
383
+ }
384
+ let content = node_fs_1.default.readFileSync(statePath, 'utf-8');
385
+ const now = new Date().toISOString();
386
+ const updated = [];
387
+ let result = stateReplaceField(content, 'Last session', now);
388
+ if (result) {
389
+ content = result;
390
+ updated.push('Last session');
391
+ }
392
+ result = stateReplaceField(content, 'Last Date', now);
393
+ if (result) {
394
+ content = result;
395
+ updated.push('Last Date');
396
+ }
397
+ if (options.stopped_at) {
398
+ result = stateReplaceField(content, 'Stopped At', options.stopped_at);
399
+ if (!result)
400
+ result = stateReplaceField(content, 'Stopped at', options.stopped_at);
401
+ if (result) {
402
+ content = result;
403
+ updated.push('Stopped At');
404
+ }
405
+ }
406
+ const resumeFile = options.resume_file || 'None';
407
+ result = stateReplaceField(content, 'Resume File', resumeFile);
408
+ if (!result)
409
+ result = stateReplaceField(content, 'Resume file', resumeFile);
410
+ if (result) {
411
+ content = result;
412
+ updated.push('Resume File');
413
+ }
414
+ if (updated.length > 0) {
415
+ node_fs_1.default.writeFileSync(statePath, content, 'utf-8');
416
+ (0, core_js_1.output)({ recorded: true, updated }, raw, 'true');
417
+ }
418
+ else {
419
+ (0, core_js_1.output)({ recorded: false, reason: 'No session fields found in STATE.md' }, raw, 'false');
420
+ }
421
+ }
422
+ function cmdStateSnapshot(cwd, raw) {
423
+ const statePath = node_path_1.default.join(cwd, '.planning', 'STATE.md');
424
+ if (!node_fs_1.default.existsSync(statePath)) {
425
+ (0, core_js_1.output)({ error: 'STATE.md not found' }, raw);
426
+ return;
427
+ }
428
+ const content = node_fs_1.default.readFileSync(statePath, 'utf-8');
429
+ const extractField = (fieldName) => {
430
+ const pattern = new RegExp(`\\*\\*${fieldName}:\\*\\*\\s*(.+)`, 'i');
431
+ const match = content.match(pattern);
432
+ return match ? match[1].trim() : null;
433
+ };
434
+ const currentPhase = extractField('Current Phase');
435
+ const currentPhaseName = extractField('Current Phase Name');
436
+ const totalPhasesRaw = extractField('Total Phases');
437
+ const currentPlan = extractField('Current Plan');
438
+ const totalPlansRaw = extractField('Total Plans in Phase');
439
+ const status = extractField('Status');
440
+ const progressRaw = extractField('Progress');
441
+ const lastActivity = extractField('Last Activity');
442
+ const lastActivityDesc = extractField('Last Activity Description');
443
+ const pausedAt = extractField('Paused At');
444
+ const totalPhases = totalPhasesRaw ? parseInt(totalPhasesRaw, 10) : null;
445
+ const totalPlansInPhase = totalPlansRaw ? parseInt(totalPlansRaw, 10) : null;
446
+ const progressPercent = progressRaw ? parseInt(progressRaw.replace('%', ''), 10) : null;
447
+ const decisions = [];
448
+ const decisionsMatch = content.match(/##\s*Decisions Made[\s\S]*?\n\|[^\n]+\n\|[-|\s]+\n([\s\S]*?)(?=\n##|\n$|$)/i);
449
+ if (decisionsMatch) {
450
+ const tableBody = decisionsMatch[1];
451
+ const rows = tableBody.trim().split('\n').filter(r => r.includes('|'));
452
+ for (const row of rows) {
453
+ const cells = row.split('|').map(c => c.trim()).filter(Boolean);
454
+ if (cells.length >= 3) {
455
+ decisions.push({
456
+ phase: cells[0],
457
+ summary: cells[1],
458
+ rationale: cells[2],
459
+ });
460
+ }
461
+ }
462
+ }
463
+ const blockers = [];
464
+ const blockersMatch = content.match(/##\s*Blockers\s*\n([\s\S]*?)(?=\n##|$)/i);
465
+ if (blockersMatch) {
466
+ const blockersSection = blockersMatch[1];
467
+ const items = blockersSection.match(/^-\s+(.+)$/gm) || [];
468
+ for (const item of items) {
469
+ blockers.push(item.replace(/^-\s+/, '').trim());
470
+ }
471
+ }
472
+ const session = {
473
+ last_date: null,
474
+ stopped_at: null,
475
+ resume_file: null,
476
+ };
477
+ const sessionMatch = content.match(/##\s*Session\s*\n([\s\S]*?)(?=\n##|$)/i);
478
+ if (sessionMatch) {
479
+ const sessionSection = sessionMatch[1];
480
+ const lastDateMatch = sessionSection.match(/\*\*Last Date:\*\*\s*(.+)/i);
481
+ const stoppedAtMatch = sessionSection.match(/\*\*Stopped At:\*\*\s*(.+)/i);
482
+ const resumeFileMatch = sessionSection.match(/\*\*Resume File:\*\*\s*(.+)/i);
483
+ if (lastDateMatch)
484
+ session.last_date = lastDateMatch[1].trim();
485
+ if (stoppedAtMatch)
486
+ session.stopped_at = stoppedAtMatch[1].trim();
487
+ if (resumeFileMatch)
488
+ session.resume_file = resumeFileMatch[1].trim();
489
+ }
490
+ const snapshot = {
491
+ current_phase: currentPhase,
492
+ current_phase_name: currentPhaseName,
493
+ total_phases: totalPhases,
494
+ current_plan: currentPlan,
495
+ total_plans_in_phase: totalPlansInPhase,
496
+ status,
497
+ progress_percent: progressPercent,
498
+ last_activity: lastActivity,
499
+ last_activity_desc: lastActivityDesc,
500
+ decisions,
501
+ blockers,
502
+ paused_at: pausedAt,
503
+ session,
504
+ };
505
+ (0, core_js_1.output)(snapshot, raw);
506
+ }
507
+ //# sourceMappingURL=state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/core/state.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Template — Template selection and fill operations
3
+ *
4
+ * Ported from maxsim/bin/lib/template.cjs
5
+ */
6
+ import type { FrontmatterData } from './types.js';
7
+ export interface TemplateSelectResult {
8
+ template: string;
9
+ type: 'minimal' | 'standard' | 'complex';
10
+ taskCount: number;
11
+ fileCount: number;
12
+ hasDecisions: boolean;
13
+ error?: string;
14
+ }
15
+ export interface TemplateFillOptions {
16
+ phase: string;
17
+ name?: string;
18
+ plan?: string;
19
+ type?: string;
20
+ wave?: string;
21
+ fields?: FrontmatterData;
22
+ }
23
+ export interface TemplateFillResult {
24
+ created: boolean;
25
+ path: string;
26
+ template: string;
27
+ }
28
+ export declare function cmdTemplateSelect(cwd: string, planPath: string | null, raw: boolean): void;
29
+ export declare function cmdTemplateFill(cwd: string, templateType: string | null, options: TemplateFillOptions, raw: boolean): void;
30
+ //# sourceMappingURL=template.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../src/core/template.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAaH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAIlD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,OAAO,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,eAAe,CAAC;CAC1B;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAID,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,OAAO,GAAG,IAAI,CA8C1F;AAID,wBAAgB,eAAe,CAC7B,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,MAAM,GAAG,IAAI,EAC3B,OAAO,EAAE,mBAAmB,EAC5B,GAAG,EAAE,OAAO,GACX,IAAI,CA8KN"}