maxsimcli 4.6.0 → 4.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (234) hide show
  1. package/dist/assets/CHANGELOG.md +39 -0
  2. package/dist/cli.cjs +470 -961
  3. package/dist/cli.cjs.map +1 -1
  4. package/dist/{core-RRjCSt0G.cjs → core-D5zUr9cb.cjs} +4 -3
  5. package/dist/core-D5zUr9cb.cjs.map +1 -0
  6. package/dist/install.cjs +3 -195
  7. package/dist/install.cjs.map +1 -1
  8. package/dist/mcp-server.cjs +2853 -217
  9. package/dist/mcp-server.cjs.map +1 -1
  10. package/dist/{skills-MYlMkYNt.cjs → skills-CjFWZIGM.cjs} +6 -6
  11. package/dist/{skills-MYlMkYNt.cjs.map → skills-CjFWZIGM.cjs.map} +1 -1
  12. package/package.json +1 -7
  13. package/dist/.tsbuildinfo +0 -1
  14. package/dist/assets/dashboard/client/assets/index-C199D4Eb.css +0 -32
  15. package/dist/assets/dashboard/client/assets/index-nAXJLp0_.js +0 -233
  16. package/dist/assets/dashboard/client/index.html +0 -19
  17. package/dist/assets/dashboard/server.js +0 -78813
  18. package/dist/backend/index.d.ts +0 -4
  19. package/dist/backend/index.d.ts.map +0 -1
  20. package/dist/backend/index.js +0 -12
  21. package/dist/backend/index.js.map +0 -1
  22. package/dist/backend/lifecycle.d.ts +0 -13
  23. package/dist/backend/lifecycle.d.ts.map +0 -1
  24. package/dist/backend/lifecycle.js +0 -168
  25. package/dist/backend/lifecycle.js.map +0 -1
  26. package/dist/backend/server.d.ts +0 -13
  27. package/dist/backend/server.d.ts.map +0 -1
  28. package/dist/backend/server.js +0 -1013
  29. package/dist/backend/server.js.map +0 -1
  30. package/dist/backend/terminal.d.ts +0 -49
  31. package/dist/backend/terminal.d.ts.map +0 -1
  32. package/dist/backend/terminal.js +0 -209
  33. package/dist/backend/terminal.js.map +0 -1
  34. package/dist/backend/types.d.ts +0 -77
  35. package/dist/backend/types.d.ts.map +0 -1
  36. package/dist/backend/types.js +0 -6
  37. package/dist/backend/types.js.map +0 -1
  38. package/dist/backend-server.cjs +0 -80672
  39. package/dist/backend-server.cjs.map +0 -1
  40. package/dist/backend-server.d.cts +0 -2
  41. package/dist/backend-server.d.ts +0 -11
  42. package/dist/backend-server.d.ts.map +0 -1
  43. package/dist/backend-server.js +0 -43
  44. package/dist/backend-server.js.map +0 -1
  45. package/dist/cli.d.cts +0 -2
  46. package/dist/cli.d.ts +0 -7
  47. package/dist/cli.d.ts.map +0 -1
  48. package/dist/cli.js +0 -510
  49. package/dist/cli.js.map +0 -1
  50. package/dist/core/artefakte.d.ts +0 -12
  51. package/dist/core/artefakte.d.ts.map +0 -1
  52. package/dist/core/artefakte.js +0 -152
  53. package/dist/core/artefakte.js.map +0 -1
  54. package/dist/core/commands.d.ts +0 -26
  55. package/dist/core/commands.d.ts.map +0 -1
  56. package/dist/core/commands.js +0 -550
  57. package/dist/core/commands.js.map +0 -1
  58. package/dist/core/config.d.ts +0 -10
  59. package/dist/core/config.d.ts.map +0 -1
  60. package/dist/core/config.js +0 -143
  61. package/dist/core/config.js.map +0 -1
  62. package/dist/core/context-loader.d.ts +0 -21
  63. package/dist/core/context-loader.d.ts.map +0 -1
  64. package/dist/core/context-loader.js +0 -212
  65. package/dist/core/context-loader.js.map +0 -1
  66. package/dist/core/core.d.ts +0 -91
  67. package/dist/core/core.d.ts.map +0 -1
  68. package/dist/core/core.js +0 -823
  69. package/dist/core/core.js.map +0 -1
  70. package/dist/core/dashboard-launcher.d.ts +0 -56
  71. package/dist/core/dashboard-launcher.d.ts.map +0 -1
  72. package/dist/core/dashboard-launcher.js +0 -246
  73. package/dist/core/dashboard-launcher.js.map +0 -1
  74. package/dist/core/drift.d.ts +0 -37
  75. package/dist/core/drift.d.ts.map +0 -1
  76. package/dist/core/drift.js +0 -213
  77. package/dist/core/drift.js.map +0 -1
  78. package/dist/core/frontmatter.d.ts +0 -33
  79. package/dist/core/frontmatter.d.ts.map +0 -1
  80. package/dist/core/frontmatter.js +0 -193
  81. package/dist/core/frontmatter.js.map +0 -1
  82. package/dist/core/index.d.ts +0 -28
  83. package/dist/core/index.d.ts.map +0 -1
  84. package/dist/core/index.js +0 -189
  85. package/dist/core/index.js.map +0 -1
  86. package/dist/core/init.d.ts +0 -287
  87. package/dist/core/init.d.ts.map +0 -1
  88. package/dist/core/init.js +0 -816
  89. package/dist/core/init.js.map +0 -1
  90. package/dist/core/milestone.d.ts +0 -9
  91. package/dist/core/milestone.d.ts.map +0 -1
  92. package/dist/core/milestone.js +0 -230
  93. package/dist/core/milestone.js.map +0 -1
  94. package/dist/core/phase.d.ts +0 -53
  95. package/dist/core/phase.d.ts.map +0 -1
  96. package/dist/core/phase.js +0 -891
  97. package/dist/core/phase.js.map +0 -1
  98. package/dist/core/roadmap.d.ts +0 -10
  99. package/dist/core/roadmap.d.ts.map +0 -1
  100. package/dist/core/roadmap.js +0 -165
  101. package/dist/core/roadmap.js.map +0 -1
  102. package/dist/core/skills.d.ts +0 -20
  103. package/dist/core/skills.d.ts.map +0 -1
  104. package/dist/core/skills.js +0 -144
  105. package/dist/core/skills.js.map +0 -1
  106. package/dist/core/start.d.ts +0 -15
  107. package/dist/core/start.d.ts.map +0 -1
  108. package/dist/core/start.js +0 -80
  109. package/dist/core/start.js.map +0 -1
  110. package/dist/core/state.d.ts +0 -32
  111. package/dist/core/state.d.ts.map +0 -1
  112. package/dist/core/state.js +0 -582
  113. package/dist/core/state.js.map +0 -1
  114. package/dist/core/template.d.ts +0 -30
  115. package/dist/core/template.d.ts.map +0 -1
  116. package/dist/core/template.js +0 -223
  117. package/dist/core/template.js.map +0 -1
  118. package/dist/core/types.d.ts +0 -519
  119. package/dist/core/types.d.ts.map +0 -1
  120. package/dist/core/types.js +0 -60
  121. package/dist/core/types.js.map +0 -1
  122. package/dist/core/verify.d.ts +0 -128
  123. package/dist/core/verify.d.ts.map +0 -1
  124. package/dist/core/verify.js +0 -754
  125. package/dist/core/verify.js.map +0 -1
  126. package/dist/core-RRjCSt0G.cjs.map +0 -1
  127. package/dist/esm-iIOBzmdz.cjs +0 -1561
  128. package/dist/esm-iIOBzmdz.cjs.map +0 -1
  129. package/dist/hooks/index.d.ts +0 -11
  130. package/dist/hooks/index.d.ts.map +0 -1
  131. package/dist/hooks/index.js +0 -18
  132. package/dist/hooks/index.js.map +0 -1
  133. package/dist/hooks/maxsim-check-update.d.ts +0 -17
  134. package/dist/hooks/maxsim-check-update.d.ts.map +0 -1
  135. package/dist/hooks/maxsim-check-update.js +0 -101
  136. package/dist/hooks/maxsim-check-update.js.map +0 -1
  137. package/dist/hooks/maxsim-context-monitor.d.ts +0 -21
  138. package/dist/hooks/maxsim-context-monitor.d.ts.map +0 -1
  139. package/dist/hooks/maxsim-context-monitor.js +0 -131
  140. package/dist/hooks/maxsim-context-monitor.js.map +0 -1
  141. package/dist/hooks/maxsim-statusline.d.ts +0 -19
  142. package/dist/hooks/maxsim-statusline.d.ts.map +0 -1
  143. package/dist/hooks/maxsim-statusline.js +0 -146
  144. package/dist/hooks/maxsim-statusline.js.map +0 -1
  145. package/dist/hooks/shared.d.ts +0 -11
  146. package/dist/hooks/shared.d.ts.map +0 -1
  147. package/dist/hooks/shared.js +0 -29
  148. package/dist/hooks/shared.js.map +0 -1
  149. package/dist/index.d.ts +0 -2
  150. package/dist/index.d.ts.map +0 -1
  151. package/dist/index.js +0 -3
  152. package/dist/index.js.map +0 -1
  153. package/dist/install/adapters.d.ts +0 -6
  154. package/dist/install/adapters.d.ts.map +0 -1
  155. package/dist/install/adapters.js +0 -65
  156. package/dist/install/adapters.js.map +0 -1
  157. package/dist/install/copy.d.ts +0 -6
  158. package/dist/install/copy.d.ts.map +0 -1
  159. package/dist/install/copy.js +0 -71
  160. package/dist/install/copy.js.map +0 -1
  161. package/dist/install/dashboard.d.ts +0 -16
  162. package/dist/install/dashboard.d.ts.map +0 -1
  163. package/dist/install/dashboard.js +0 -273
  164. package/dist/install/dashboard.js.map +0 -1
  165. package/dist/install/hooks.d.ts +0 -31
  166. package/dist/install/hooks.d.ts.map +0 -1
  167. package/dist/install/hooks.js +0 -260
  168. package/dist/install/hooks.js.map +0 -1
  169. package/dist/install/index.d.ts +0 -2
  170. package/dist/install/index.d.ts.map +0 -1
  171. package/dist/install/index.js +0 -534
  172. package/dist/install/index.js.map +0 -1
  173. package/dist/install/manifest.d.ts +0 -23
  174. package/dist/install/manifest.d.ts.map +0 -1
  175. package/dist/install/manifest.js +0 -133
  176. package/dist/install/manifest.js.map +0 -1
  177. package/dist/install/patches.d.ts +0 -10
  178. package/dist/install/patches.d.ts.map +0 -1
  179. package/dist/install/patches.js +0 -124
  180. package/dist/install/patches.js.map +0 -1
  181. package/dist/install/shared.d.ts +0 -56
  182. package/dist/install/shared.d.ts.map +0 -1
  183. package/dist/install/shared.js +0 -181
  184. package/dist/install/shared.js.map +0 -1
  185. package/dist/install/uninstall.d.ts +0 -5
  186. package/dist/install/uninstall.d.ts.map +0 -1
  187. package/dist/install/uninstall.js +0 -222
  188. package/dist/install/uninstall.js.map +0 -1
  189. package/dist/install/utils.d.ts +0 -27
  190. package/dist/install/utils.d.ts.map +0 -1
  191. package/dist/install/utils.js +0 -99
  192. package/dist/install/utils.js.map +0 -1
  193. package/dist/install.d.cts +0 -2
  194. package/dist/lifecycle-DxCru7rk.cjs +0 -136
  195. package/dist/lifecycle-DxCru7rk.cjs.map +0 -1
  196. package/dist/mcp/config-tools.d.ts +0 -13
  197. package/dist/mcp/config-tools.d.ts.map +0 -1
  198. package/dist/mcp/config-tools.js +0 -66
  199. package/dist/mcp/config-tools.js.map +0 -1
  200. package/dist/mcp/context-tools.d.ts +0 -13
  201. package/dist/mcp/context-tools.d.ts.map +0 -1
  202. package/dist/mcp/context-tools.js +0 -176
  203. package/dist/mcp/context-tools.js.map +0 -1
  204. package/dist/mcp/index.d.ts +0 -11
  205. package/dist/mcp/index.d.ts.map +0 -1
  206. package/dist/mcp/index.js +0 -26
  207. package/dist/mcp/index.js.map +0 -1
  208. package/dist/mcp/phase-tools.d.ts +0 -13
  209. package/dist/mcp/phase-tools.d.ts.map +0 -1
  210. package/dist/mcp/phase-tools.js +0 -177
  211. package/dist/mcp/phase-tools.js.map +0 -1
  212. package/dist/mcp/roadmap-tools.d.ts +0 -13
  213. package/dist/mcp/roadmap-tools.d.ts.map +0 -1
  214. package/dist/mcp/roadmap-tools.js +0 -79
  215. package/dist/mcp/roadmap-tools.js.map +0 -1
  216. package/dist/mcp/state-tools.d.ts +0 -13
  217. package/dist/mcp/state-tools.d.ts.map +0 -1
  218. package/dist/mcp/state-tools.js +0 -185
  219. package/dist/mcp/state-tools.js.map +0 -1
  220. package/dist/mcp/todo-tools.d.ts +0 -13
  221. package/dist/mcp/todo-tools.d.ts.map +0 -1
  222. package/dist/mcp/todo-tools.js +0 -143
  223. package/dist/mcp/todo-tools.js.map +0 -1
  224. package/dist/mcp/utils.d.ts +0 -27
  225. package/dist/mcp/utils.d.ts.map +0 -1
  226. package/dist/mcp/utils.js +0 -82
  227. package/dist/mcp/utils.js.map +0 -1
  228. package/dist/mcp-server.d.cts +0 -2
  229. package/dist/mcp-server.d.ts +0 -12
  230. package/dist/mcp-server.d.ts.map +0 -1
  231. package/dist/mcp-server.js +0 -31
  232. package/dist/mcp-server.js.map +0 -1
  233. package/dist/server-By0TN-nC.cjs +0 -2995
  234. package/dist/server-By0TN-nC.cjs.map +0 -1
package/dist/core/init.js DELETED
@@ -1,816 +0,0 @@
1
- "use strict";
2
- /**
3
- * Init — Compound init commands for workflow bootstrapping
4
- *
5
- * Ported from maxsim/bin/lib/init.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.cmdInitExecutePhase = cmdInitExecutePhase;
12
- exports.cmdInitPlanPhase = cmdInitPlanPhase;
13
- exports.cmdInitNewProject = cmdInitNewProject;
14
- exports.cmdInitNewMilestone = cmdInitNewMilestone;
15
- exports.cmdInitQuick = cmdInitQuick;
16
- exports.cmdInitResume = cmdInitResume;
17
- exports.cmdInitVerifyWork = cmdInitVerifyWork;
18
- exports.cmdInitPhaseOp = cmdInitPhaseOp;
19
- exports.cmdInitTodos = cmdInitTodos;
20
- exports.cmdInitMilestoneOp = cmdInitMilestoneOp;
21
- exports.cmdInitMapCodebase = cmdInitMapCodebase;
22
- exports.cmdInitExisting = cmdInitExisting;
23
- exports.cmdInitProgress = cmdInitProgress;
24
- exports.listCodebaseDocs = listCodebaseDocs;
25
- exports.cmdInitExecutor = cmdInitExecutor;
26
- exports.cmdInitPlanner = cmdInitPlanner;
27
- exports.cmdInitResearcher = cmdInitResearcher;
28
- exports.cmdInitVerifier = cmdInitVerifier;
29
- exports.cmdInitDebugger = cmdInitDebugger;
30
- exports.cmdInitCheckDrift = cmdInitCheckDrift;
31
- exports.cmdInitRealign = cmdInitRealign;
32
- const node_fs_1 = __importDefault(require("node:fs"));
33
- const node_path_1 = __importDefault(require("node:path"));
34
- const node_os_1 = __importDefault(require("node:os"));
35
- const core_js_1 = require("./core.js");
36
- const types_js_1 = require("./types.js");
37
- // ─── Helper: extract requirement IDs from roadmap phase section ─────────────
38
- function extractReqIds(cwd, phase) {
39
- const roadmapPhase = (0, core_js_1.getRoadmapPhaseInternal)(cwd, phase);
40
- const reqMatch = roadmapPhase?.section?.match(/^\*\*Requirements\*\*:[^\S\n]*([^\n]*)$/m);
41
- const reqExtracted = reqMatch ? reqMatch[1].replace(/[\[\]]/g, '').split(',').map((s) => s.trim()).filter(Boolean).join(', ') : null;
42
- return (reqExtracted && reqExtracted !== 'TBD') ? reqExtracted : null;
43
- }
44
- function scanPhaseArtifacts(cwd, phaseDirectory) {
45
- const result = {};
46
- const phaseDirFull = node_path_1.default.join(cwd, phaseDirectory);
47
- try {
48
- const files = node_fs_1.default.readdirSync(phaseDirFull);
49
- const contextFile = files.find(f => f.endsWith('-CONTEXT.md') || f === 'CONTEXT.md');
50
- if (contextFile)
51
- result.context_path = node_path_1.default.join(phaseDirectory, contextFile);
52
- const researchFile = files.find(f => f.endsWith('-RESEARCH.md') || f === 'RESEARCH.md');
53
- if (researchFile)
54
- result.research_path = node_path_1.default.join(phaseDirectory, researchFile);
55
- const verificationFile = files.find(f => f.endsWith('-VERIFICATION.md') || f === 'VERIFICATION.md');
56
- if (verificationFile)
57
- result.verification_path = node_path_1.default.join(phaseDirectory, verificationFile);
58
- const uatFile = files.find(f => f.endsWith('-UAT.md') || f === 'UAT.md');
59
- if (uatFile)
60
- result.uat_path = node_path_1.default.join(phaseDirectory, uatFile);
61
- }
62
- catch (e) {
63
- (0, core_js_1.debugLog)(e);
64
- }
65
- return result;
66
- }
67
- // ─── Helper: cross-platform code file detection ─────────────────────────────
68
- const CODE_EXTENSIONS = new Set(['.ts', '.js', '.py', '.go', '.rs', '.swift', '.java']);
69
- const EXCLUDED_DIRS = new Set(['node_modules', '.git']);
70
- function findCodeFiles(dir, maxDepth = 3, limit = 5) {
71
- const results = [];
72
- function walk(currentDir, depth) {
73
- if (depth > maxDepth || results.length >= limit)
74
- return;
75
- let entries;
76
- try {
77
- entries = node_fs_1.default.readdirSync(currentDir, { withFileTypes: true });
78
- }
79
- catch {
80
- return;
81
- }
82
- for (const entry of entries) {
83
- if (results.length >= limit)
84
- return;
85
- if (EXCLUDED_DIRS.has(entry.name))
86
- continue;
87
- const fullPath = node_path_1.default.join(currentDir, entry.name);
88
- if (entry.isDirectory()) {
89
- walk(fullPath, depth + 1);
90
- }
91
- else if (entry.isFile()) {
92
- const ext = node_path_1.default.extname(entry.name).toLowerCase();
93
- if (CODE_EXTENSIONS.has(ext))
94
- results.push(fullPath);
95
- }
96
- }
97
- }
98
- walk(dir, 1);
99
- return results;
100
- }
101
- // ─── Init commands ──────────────────────────────────────────────────────────
102
- function cmdInitExecutePhase(cwd, phase) {
103
- if (!phase)
104
- return (0, types_js_1.cmdErr)('phase required for init execute-phase');
105
- const config = (0, core_js_1.loadConfig)(cwd);
106
- const phaseInfo = (0, core_js_1.findPhaseInternal)(cwd, phase);
107
- const milestone = (0, core_js_1.getMilestoneInfo)(cwd);
108
- const phase_req_ids = extractReqIds(cwd, phase);
109
- const result = {
110
- executor_model: (0, core_js_1.resolveModelInternal)(cwd, 'maxsim-executor'),
111
- verifier_model: (0, core_js_1.resolveModelInternal)(cwd, 'maxsim-verifier'),
112
- commit_docs: config.commit_docs,
113
- parallelization: config.parallelization,
114
- branching_strategy: config.branching_strategy,
115
- phase_branch_template: config.phase_branch_template,
116
- milestone_branch_template: config.milestone_branch_template,
117
- verifier_enabled: config.verifier,
118
- phase_found: !!phaseInfo,
119
- phase_dir: phaseInfo?.directory ?? null,
120
- phase_number: phaseInfo?.phase_number ?? null,
121
- phase_name: phaseInfo?.phase_name ?? null,
122
- phase_slug: phaseInfo?.phase_slug ?? null,
123
- phase_req_ids,
124
- plans: phaseInfo?.plans ?? [],
125
- summaries: phaseInfo?.summaries ?? [],
126
- incomplete_plans: phaseInfo?.incomplete_plans ?? [],
127
- plan_count: phaseInfo?.plans?.length ?? 0,
128
- incomplete_count: phaseInfo?.incomplete_plans?.length ?? 0,
129
- branch_name: config.branching_strategy === 'phase' && phaseInfo
130
- ? config.phase_branch_template.replace('{phase}', phaseInfo.phase_number).replace('{slug}', phaseInfo.phase_slug || 'phase')
131
- : config.branching_strategy === 'milestone'
132
- ? config.milestone_branch_template.replace('{milestone}', milestone.version).replace('{slug}', (0, core_js_1.generateSlugInternal)(milestone.name) || 'milestone')
133
- : null,
134
- milestone_version: milestone.version,
135
- milestone_name: milestone.name,
136
- milestone_slug: (0, core_js_1.generateSlugInternal)(milestone.name),
137
- state_exists: (0, core_js_1.pathExistsInternal)(cwd, '.planning/STATE.md'),
138
- roadmap_exists: (0, core_js_1.pathExistsInternal)(cwd, '.planning/ROADMAP.md'),
139
- config_exists: (0, core_js_1.pathExistsInternal)(cwd, '.planning/config.json'),
140
- state_path: '.planning/STATE.md',
141
- roadmap_path: '.planning/ROADMAP.md',
142
- config_path: '.planning/config.json',
143
- };
144
- return (0, types_js_1.cmdOk)(result);
145
- }
146
- function cmdInitPlanPhase(cwd, phase) {
147
- if (!phase)
148
- return (0, types_js_1.cmdErr)('phase required for init plan-phase');
149
- const config = (0, core_js_1.loadConfig)(cwd);
150
- const phaseInfo = (0, core_js_1.findPhaseInternal)(cwd, phase);
151
- const phase_req_ids = extractReqIds(cwd, phase);
152
- const result = {
153
- researcher_model: (0, core_js_1.resolveModelInternal)(cwd, 'maxsim-phase-researcher'),
154
- planner_model: (0, core_js_1.resolveModelInternal)(cwd, 'maxsim-planner'),
155
- checker_model: (0, core_js_1.resolveModelInternal)(cwd, 'maxsim-plan-checker'),
156
- research_enabled: config.research,
157
- plan_checker_enabled: config.plan_checker,
158
- commit_docs: config.commit_docs,
159
- phase_found: !!phaseInfo,
160
- phase_dir: phaseInfo?.directory ?? null,
161
- phase_number: phaseInfo?.phase_number ?? null,
162
- phase_name: phaseInfo?.phase_name ?? null,
163
- phase_slug: phaseInfo?.phase_slug ?? null,
164
- padded_phase: phaseInfo?.phase_number?.padStart(2, '0') ?? null,
165
- phase_req_ids,
166
- has_research: phaseInfo?.has_research ?? false,
167
- has_context: phaseInfo?.has_context ?? false,
168
- has_plans: (phaseInfo?.plans?.length ?? 0) > 0,
169
- plan_count: phaseInfo?.plans?.length ?? 0,
170
- planning_exists: (0, core_js_1.pathExistsInternal)(cwd, '.planning'),
171
- roadmap_exists: (0, core_js_1.pathExistsInternal)(cwd, '.planning/ROADMAP.md'),
172
- state_path: '.planning/STATE.md',
173
- roadmap_path: '.planning/ROADMAP.md',
174
- requirements_path: '.planning/REQUIREMENTS.md',
175
- };
176
- if ((0, core_js_1.pathExistsInternal)(cwd, '.planning/CONVENTIONS.md')) {
177
- result.conventions_path = '.planning/CONVENTIONS.md';
178
- }
179
- if (phaseInfo?.directory) {
180
- const artifacts = scanPhaseArtifacts(cwd, phaseInfo.directory);
181
- if (artifacts.context_path)
182
- result.context_path = artifacts.context_path;
183
- if (artifacts.research_path)
184
- result.research_path = artifacts.research_path;
185
- if (artifacts.verification_path)
186
- result.verification_path = artifacts.verification_path;
187
- if (artifacts.uat_path)
188
- result.uat_path = artifacts.uat_path;
189
- }
190
- return (0, types_js_1.cmdOk)(result);
191
- }
192
- function cmdInitNewProject(cwd) {
193
- const config = (0, core_js_1.loadConfig)(cwd);
194
- const homedir = node_os_1.default.homedir();
195
- const braveKeyFile = node_path_1.default.join(homedir, '.maxsim', 'brave_api_key');
196
- const hasBraveSearch = !!(process.env.BRAVE_API_KEY || node_fs_1.default.existsSync(braveKeyFile));
197
- const hasCode = findCodeFiles(cwd).length > 0;
198
- const hasPackageFile = (0, core_js_1.pathExistsInternal)(cwd, 'package.json') || (0, core_js_1.pathExistsInternal)(cwd, 'requirements.txt') || (0, core_js_1.pathExistsInternal)(cwd, 'Cargo.toml') || (0, core_js_1.pathExistsInternal)(cwd, 'go.mod') || (0, core_js_1.pathExistsInternal)(cwd, 'Package.swift');
199
- const result = {
200
- researcher_model: (0, core_js_1.resolveModelInternal)(cwd, 'maxsim-project-researcher'),
201
- synthesizer_model: (0, core_js_1.resolveModelInternal)(cwd, 'maxsim-research-synthesizer'),
202
- roadmapper_model: (0, core_js_1.resolveModelInternal)(cwd, 'maxsim-roadmapper'),
203
- commit_docs: config.commit_docs,
204
- project_exists: (0, core_js_1.pathExistsInternal)(cwd, '.planning/PROJECT.md'),
205
- has_codebase_map: (0, core_js_1.pathExistsInternal)(cwd, '.planning/codebase'),
206
- planning_exists: (0, core_js_1.pathExistsInternal)(cwd, '.planning'),
207
- has_existing_code: hasCode,
208
- has_package_file: hasPackageFile,
209
- is_brownfield: hasCode || hasPackageFile,
210
- needs_codebase_map: (hasCode || hasPackageFile) && !(0, core_js_1.pathExistsInternal)(cwd, '.planning/codebase'),
211
- has_git: (0, core_js_1.pathExistsInternal)(cwd, '.git'),
212
- brave_search_available: hasBraveSearch,
213
- project_path: '.planning/PROJECT.md',
214
- };
215
- return (0, types_js_1.cmdOk)(result);
216
- }
217
- function cmdInitNewMilestone(cwd) {
218
- const config = (0, core_js_1.loadConfig)(cwd);
219
- const milestone = (0, core_js_1.getMilestoneInfo)(cwd);
220
- const result = {
221
- researcher_model: (0, core_js_1.resolveModelInternal)(cwd, 'maxsim-project-researcher'),
222
- synthesizer_model: (0, core_js_1.resolveModelInternal)(cwd, 'maxsim-research-synthesizer'),
223
- roadmapper_model: (0, core_js_1.resolveModelInternal)(cwd, 'maxsim-roadmapper'),
224
- commit_docs: config.commit_docs,
225
- research_enabled: config.research,
226
- current_milestone: milestone.version,
227
- current_milestone_name: milestone.name,
228
- project_exists: (0, core_js_1.pathExistsInternal)(cwd, '.planning/PROJECT.md'),
229
- roadmap_exists: (0, core_js_1.pathExistsInternal)(cwd, '.planning/ROADMAP.md'),
230
- state_exists: (0, core_js_1.pathExistsInternal)(cwd, '.planning/STATE.md'),
231
- project_path: '.planning/PROJECT.md',
232
- roadmap_path: '.planning/ROADMAP.md',
233
- state_path: '.planning/STATE.md',
234
- };
235
- return (0, types_js_1.cmdOk)(result);
236
- }
237
- function cmdInitQuick(cwd, description) {
238
- const config = (0, core_js_1.loadConfig)(cwd);
239
- const now = new Date();
240
- const slug = description ? (0, core_js_1.generateSlugInternal)(description)?.substring(0, 40) ?? null : null;
241
- const quickDir = (0, core_js_1.planningPath)(cwd, 'quick');
242
- let nextNum = 1;
243
- try {
244
- const existing = node_fs_1.default.readdirSync(quickDir).filter(f => /^\d+-/.test(f)).map(f => parseInt(f.split('-')[0], 10)).filter(n => !isNaN(n));
245
- if (existing.length > 0)
246
- nextNum = Math.max(...existing) + 1;
247
- }
248
- catch (e) {
249
- (0, core_js_1.debugLog)(e);
250
- }
251
- const result = {
252
- planner_model: (0, core_js_1.resolveModelInternal)(cwd, 'maxsim-planner'),
253
- executor_model: (0, core_js_1.resolveModelInternal)(cwd, 'maxsim-executor'),
254
- checker_model: (0, core_js_1.resolveModelInternal)(cwd, 'maxsim-plan-checker'),
255
- verifier_model: (0, core_js_1.resolveModelInternal)(cwd, 'maxsim-verifier'),
256
- commit_docs: config.commit_docs,
257
- next_num: nextNum,
258
- slug,
259
- description: description ?? null,
260
- date: (0, core_js_1.todayISO)(),
261
- timestamp: now.toISOString(),
262
- quick_dir: '.planning/quick',
263
- task_dir: slug ? `.planning/quick/${nextNum}-${slug}` : null,
264
- roadmap_exists: (0, core_js_1.pathExistsInternal)(cwd, '.planning/ROADMAP.md'),
265
- planning_exists: (0, core_js_1.pathExistsInternal)(cwd, '.planning'),
266
- };
267
- return (0, types_js_1.cmdOk)(result);
268
- }
269
- function cmdInitResume(cwd) {
270
- const config = (0, core_js_1.loadConfig)(cwd);
271
- let interruptedAgentId = null;
272
- try {
273
- interruptedAgentId = node_fs_1.default.readFileSync((0, core_js_1.planningPath)(cwd, 'current-agent-id.txt'), 'utf-8').trim();
274
- }
275
- catch (e) {
276
- (0, core_js_1.debugLog)(e);
277
- }
278
- const result = {
279
- state_exists: (0, core_js_1.pathExistsInternal)(cwd, '.planning/STATE.md'),
280
- roadmap_exists: (0, core_js_1.pathExistsInternal)(cwd, '.planning/ROADMAP.md'),
281
- project_exists: (0, core_js_1.pathExistsInternal)(cwd, '.planning/PROJECT.md'),
282
- planning_exists: (0, core_js_1.pathExistsInternal)(cwd, '.planning'),
283
- state_path: '.planning/STATE.md',
284
- roadmap_path: '.planning/ROADMAP.md',
285
- project_path: '.planning/PROJECT.md',
286
- has_interrupted_agent: !!interruptedAgentId,
287
- interrupted_agent_id: interruptedAgentId,
288
- commit_docs: config.commit_docs,
289
- };
290
- return (0, types_js_1.cmdOk)(result);
291
- }
292
- function cmdInitVerifyWork(cwd, phase) {
293
- if (!phase)
294
- return (0, types_js_1.cmdErr)('phase required for init verify-work');
295
- const config = (0, core_js_1.loadConfig)(cwd);
296
- const phaseInfo = (0, core_js_1.findPhaseInternal)(cwd, phase);
297
- const result = {
298
- planner_model: (0, core_js_1.resolveModelInternal)(cwd, 'maxsim-planner'),
299
- checker_model: (0, core_js_1.resolveModelInternal)(cwd, 'maxsim-plan-checker'),
300
- commit_docs: config.commit_docs,
301
- phase_found: !!phaseInfo,
302
- phase_dir: phaseInfo?.directory ?? null,
303
- phase_number: phaseInfo?.phase_number ?? null,
304
- phase_name: phaseInfo?.phase_name ?? null,
305
- has_verification: phaseInfo?.has_verification ?? false,
306
- };
307
- return (0, types_js_1.cmdOk)(result);
308
- }
309
- function cmdInitPhaseOp(cwd, phase) {
310
- const config = (0, core_js_1.loadConfig)(cwd);
311
- let phaseInfo = (0, core_js_1.findPhaseInternal)(cwd, phase ?? '');
312
- if (!phaseInfo) {
313
- const roadmapPhase = (0, core_js_1.getRoadmapPhaseInternal)(cwd, phase ?? '');
314
- if (roadmapPhase?.found) {
315
- const phaseName = roadmapPhase.phase_name;
316
- phaseInfo = { found: true, directory: '', phase_number: roadmapPhase.phase_number, phase_name: phaseName, phase_slug: phaseName ? phaseName.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-+|-+$/g, '') : null, plans: [], summaries: [], incomplete_plans: [], has_research: false, has_context: false, has_verification: false };
317
- }
318
- }
319
- const result = {
320
- commit_docs: config.commit_docs,
321
- brave_search: config.brave_search,
322
- phase_found: !!phaseInfo,
323
- phase_dir: phaseInfo?.directory || null,
324
- phase_number: phaseInfo?.phase_number ?? null,
325
- phase_name: phaseInfo?.phase_name ?? null,
326
- phase_slug: phaseInfo?.phase_slug ?? null,
327
- padded_phase: phaseInfo?.phase_number?.padStart(2, '0') ?? null,
328
- has_research: phaseInfo?.has_research ?? false,
329
- has_context: phaseInfo?.has_context ?? false,
330
- has_plans: (phaseInfo?.plans?.length ?? 0) > 0,
331
- has_verification: phaseInfo?.has_verification ?? false,
332
- plan_count: phaseInfo?.plans?.length ?? 0,
333
- roadmap_exists: (0, core_js_1.pathExistsInternal)(cwd, '.planning/ROADMAP.md'),
334
- planning_exists: (0, core_js_1.pathExistsInternal)(cwd, '.planning'),
335
- state_path: '.planning/STATE.md',
336
- roadmap_path: '.planning/ROADMAP.md',
337
- requirements_path: '.planning/REQUIREMENTS.md',
338
- };
339
- if ((0, core_js_1.pathExistsInternal)(cwd, '.planning/CONVENTIONS.md')) {
340
- result.conventions_path = '.planning/CONVENTIONS.md';
341
- }
342
- if (phaseInfo?.directory) {
343
- const artifacts = scanPhaseArtifacts(cwd, phaseInfo.directory);
344
- if (artifacts.context_path)
345
- result.context_path = artifacts.context_path;
346
- if (artifacts.research_path)
347
- result.research_path = artifacts.research_path;
348
- if (artifacts.verification_path)
349
- result.verification_path = artifacts.verification_path;
350
- if (artifacts.uat_path)
351
- result.uat_path = artifacts.uat_path;
352
- }
353
- return (0, types_js_1.cmdOk)(result);
354
- }
355
- function cmdInitTodos(cwd, area) {
356
- const config = (0, core_js_1.loadConfig)(cwd);
357
- const now = new Date();
358
- const pendingDir = (0, core_js_1.planningPath)(cwd, 'todos', 'pending');
359
- let count = 0;
360
- const todos = [];
361
- try {
362
- const files = node_fs_1.default.readdirSync(pendingDir).filter(f => f.endsWith('.md'));
363
- for (const file of files) {
364
- try {
365
- const content = node_fs_1.default.readFileSync(node_path_1.default.join(pendingDir, file), 'utf-8');
366
- const createdMatch = content.match(/^created:\s*(.+)$/m);
367
- const titleMatch = content.match(/^title:\s*(.+)$/m);
368
- const areaMatch = content.match(/^area:\s*(.+)$/m);
369
- const todoArea = areaMatch ? areaMatch[1].trim() : 'general';
370
- if (area && todoArea !== area)
371
- continue;
372
- count++;
373
- todos.push({ file, created: createdMatch ? createdMatch[1].trim() : 'unknown', title: titleMatch ? titleMatch[1].trim() : 'Untitled', area: todoArea, path: node_path_1.default.join('.planning', 'todos', 'pending', file) });
374
- }
375
- catch (e) {
376
- (0, core_js_1.debugLog)(e);
377
- }
378
- }
379
- }
380
- catch (e) {
381
- (0, core_js_1.debugLog)(e);
382
- }
383
- const result = {
384
- commit_docs: config.commit_docs,
385
- date: (0, core_js_1.todayISO)(),
386
- timestamp: now.toISOString(),
387
- todo_count: count,
388
- todos,
389
- area_filter: area ?? null,
390
- pending_dir: '.planning/todos/pending',
391
- completed_dir: '.planning/todos/completed',
392
- planning_exists: (0, core_js_1.pathExistsInternal)(cwd, '.planning'),
393
- todos_dir_exists: (0, core_js_1.pathExistsInternal)(cwd, '.planning/todos'),
394
- pending_dir_exists: (0, core_js_1.pathExistsInternal)(cwd, '.planning/todos/pending'),
395
- };
396
- return (0, types_js_1.cmdOk)(result);
397
- }
398
- function cmdInitMilestoneOp(cwd) {
399
- const config = (0, core_js_1.loadConfig)(cwd);
400
- const milestone = (0, core_js_1.getMilestoneInfo)(cwd);
401
- let phaseCount = 0;
402
- let completedPhases = 0;
403
- const phasesDir = (0, core_js_1.phasesPath)(cwd);
404
- try {
405
- const dirs = (0, core_js_1.listSubDirs)(phasesDir);
406
- phaseCount = dirs.length;
407
- for (const dir of dirs) {
408
- try {
409
- const phaseFiles = node_fs_1.default.readdirSync(node_path_1.default.join(phasesDir, dir));
410
- if (phaseFiles.some(f => (0, core_js_1.isSummaryFile)(f)))
411
- completedPhases++;
412
- }
413
- catch (e) {
414
- (0, core_js_1.debugLog)(e);
415
- }
416
- }
417
- }
418
- catch (e) {
419
- (0, core_js_1.debugLog)(e);
420
- }
421
- const archiveDir = (0, core_js_1.planningPath)(cwd, 'archive');
422
- let archivedMilestones = [];
423
- try {
424
- archivedMilestones = (0, core_js_1.listSubDirs)(archiveDir);
425
- }
426
- catch (e) {
427
- (0, core_js_1.debugLog)(e);
428
- }
429
- const result = {
430
- commit_docs: config.commit_docs,
431
- milestone_version: milestone.version,
432
- milestone_name: milestone.name,
433
- milestone_slug: (0, core_js_1.generateSlugInternal)(milestone.name),
434
- phase_count: phaseCount,
435
- completed_phases: completedPhases,
436
- all_phases_complete: phaseCount > 0 && phaseCount === completedPhases,
437
- archived_milestones: archivedMilestones,
438
- archive_count: archivedMilestones.length,
439
- project_exists: (0, core_js_1.pathExistsInternal)(cwd, '.planning/PROJECT.md'),
440
- roadmap_exists: (0, core_js_1.pathExistsInternal)(cwd, '.planning/ROADMAP.md'),
441
- state_exists: (0, core_js_1.pathExistsInternal)(cwd, '.planning/STATE.md'),
442
- archive_exists: (0, core_js_1.pathExistsInternal)(cwd, '.planning/archive'),
443
- phases_dir_exists: (0, core_js_1.pathExistsInternal)(cwd, '.planning/phases'),
444
- };
445
- return (0, types_js_1.cmdOk)(result);
446
- }
447
- function cmdInitMapCodebase(cwd) {
448
- const config = (0, core_js_1.loadConfig)(cwd);
449
- const codebaseDir = (0, core_js_1.planningPath)(cwd, 'codebase');
450
- let existingMaps = [];
451
- try {
452
- existingMaps = node_fs_1.default.readdirSync(codebaseDir).filter(f => f.endsWith('.md'));
453
- }
454
- catch (e) {
455
- (0, core_js_1.debugLog)(e);
456
- }
457
- const result = {
458
- mapper_model: (0, core_js_1.resolveModelInternal)(cwd, 'maxsim-codebase-mapper'),
459
- commit_docs: config.commit_docs,
460
- search_gitignored: config.search_gitignored,
461
- parallelization: config.parallelization,
462
- codebase_dir: '.planning/codebase',
463
- existing_maps: existingMaps,
464
- has_maps: existingMaps.length > 0,
465
- planning_exists: (0, core_js_1.pathExistsInternal)(cwd, '.planning'),
466
- codebase_dir_exists: (0, core_js_1.pathExistsInternal)(cwd, '.planning/codebase'),
467
- };
468
- return (0, types_js_1.cmdOk)(result);
469
- }
470
- function cmdInitExisting(cwd) {
471
- const config = (0, core_js_1.loadConfig)(cwd);
472
- const homedir = node_os_1.default.homedir();
473
- const braveKeyFile = node_path_1.default.join(homedir, '.maxsim', 'brave_api_key');
474
- const hasBraveSearch = !!(process.env.BRAVE_API_KEY || node_fs_1.default.existsSync(braveKeyFile));
475
- const hasCode = findCodeFiles(cwd).length > 0;
476
- const hasPackageFile = (0, core_js_1.pathExistsInternal)(cwd, 'package.json') || (0, core_js_1.pathExistsInternal)(cwd, 'requirements.txt') || (0, core_js_1.pathExistsInternal)(cwd, 'Cargo.toml') || (0, core_js_1.pathExistsInternal)(cwd, 'go.mod') || (0, core_js_1.pathExistsInternal)(cwd, 'Package.swift');
477
- let planningFiles = [];
478
- try {
479
- const planDir = (0, core_js_1.planningPath)(cwd);
480
- if (node_fs_1.default.existsSync(planDir))
481
- planningFiles = node_fs_1.default.readdirSync(planDir, { recursive: true }).map((f) => String(f)).filter((f) => !f.startsWith('.'));
482
- }
483
- catch (e) {
484
- (0, core_js_1.debugLog)(e);
485
- }
486
- const result = {
487
- researcher_model: (0, core_js_1.resolveModelInternal)(cwd, 'maxsim-project-researcher'),
488
- synthesizer_model: (0, core_js_1.resolveModelInternal)(cwd, 'maxsim-research-synthesizer'),
489
- roadmapper_model: (0, core_js_1.resolveModelInternal)(cwd, 'maxsim-roadmapper'),
490
- mapper_model: (0, core_js_1.resolveModelInternal)(cwd, 'maxsim-codebase-mapper'),
491
- commit_docs: config.commit_docs,
492
- project_exists: (0, core_js_1.pathExistsInternal)(cwd, '.planning/PROJECT.md'),
493
- planning_exists: (0, core_js_1.pathExistsInternal)(cwd, '.planning'),
494
- planning_files: planningFiles,
495
- has_codebase_map: (0, core_js_1.pathExistsInternal)(cwd, '.planning/codebase'),
496
- has_existing_code: hasCode,
497
- has_package_file: hasPackageFile,
498
- has_git: (0, core_js_1.pathExistsInternal)(cwd, '.git'),
499
- has_readme: (0, core_js_1.pathExistsInternal)(cwd, 'README.md'),
500
- conflict_detected: planningFiles.length > 0,
501
- existing_file_count: planningFiles.length,
502
- brave_search_available: hasBraveSearch,
503
- parallelization: config.parallelization,
504
- project_path: '.planning/PROJECT.md',
505
- codebase_dir: '.planning/codebase',
506
- };
507
- return (0, types_js_1.cmdOk)(result);
508
- }
509
- function cmdInitProgress(cwd) {
510
- const config = (0, core_js_1.loadConfig)(cwd);
511
- const milestone = (0, core_js_1.getMilestoneInfo)(cwd);
512
- const progressPhasesDir = (0, core_js_1.phasesPath)(cwd);
513
- const phases = [];
514
- let currentPhase = null;
515
- let nextPhase = null;
516
- try {
517
- const dirs = (0, core_js_1.listSubDirs)(progressPhasesDir, true);
518
- for (const dir of dirs) {
519
- const match = dir.match(/^(\d+(?:\.\d+)?)-?(.*)/);
520
- const phaseNumber = match ? match[1] : dir;
521
- const phaseName = match && match[2] ? match[2] : null;
522
- const phaseDirPath = node_path_1.default.join(progressPhasesDir, dir);
523
- const phaseFiles = node_fs_1.default.readdirSync(phaseDirPath);
524
- const plansList = phaseFiles.filter(f => (0, core_js_1.isPlanFile)(f));
525
- const summaries = phaseFiles.filter(f => (0, core_js_1.isSummaryFile)(f));
526
- const hasResearch = phaseFiles.some(f => f.endsWith('-RESEARCH.md') || f === 'RESEARCH.md');
527
- const status = summaries.length >= plansList.length && plansList.length > 0 ? 'complete' : plansList.length > 0 ? 'in_progress' : hasResearch ? 'researched' : 'pending';
528
- const phaseInfoItem = { number: phaseNumber, name: phaseName, directory: node_path_1.default.join('.planning', 'phases', dir), status, plan_count: plansList.length, summary_count: summaries.length, has_research: hasResearch };
529
- phases.push(phaseInfoItem);
530
- if (!currentPhase && (status === 'in_progress' || status === 'researched'))
531
- currentPhase = phaseInfoItem;
532
- if (!nextPhase && status === 'pending')
533
- nextPhase = phaseInfoItem;
534
- }
535
- }
536
- catch (e) {
537
- (0, core_js_1.debugLog)(e);
538
- }
539
- let pausedAt = null;
540
- try {
541
- const state = node_fs_1.default.readFileSync((0, core_js_1.planningPath)(cwd, 'STATE.md'), 'utf-8');
542
- const pauseMatch = state.match(/\*\*Paused At:\*\*\s*(.+)/);
543
- if (pauseMatch)
544
- pausedAt = pauseMatch[1].trim();
545
- }
546
- catch (e) {
547
- (0, core_js_1.debugLog)(e);
548
- }
549
- const result = {
550
- executor_model: (0, core_js_1.resolveModelInternal)(cwd, 'maxsim-executor'),
551
- planner_model: (0, core_js_1.resolveModelInternal)(cwd, 'maxsim-planner'),
552
- commit_docs: config.commit_docs,
553
- milestone_version: milestone.version,
554
- milestone_name: milestone.name,
555
- phases,
556
- phase_count: phases.length,
557
- completed_count: phases.filter(p => p.status === 'complete').length,
558
- in_progress_count: phases.filter(p => p.status === 'in_progress').length,
559
- current_phase: currentPhase,
560
- next_phase: nextPhase,
561
- paused_at: pausedAt,
562
- has_work_in_progress: !!currentPhase,
563
- project_exists: (0, core_js_1.pathExistsInternal)(cwd, '.planning/PROJECT.md'),
564
- roadmap_exists: (0, core_js_1.pathExistsInternal)(cwd, '.planning/ROADMAP.md'),
565
- state_exists: (0, core_js_1.pathExistsInternal)(cwd, '.planning/STATE.md'),
566
- state_path: '.planning/STATE.md',
567
- roadmap_path: '.planning/ROADMAP.md',
568
- project_path: '.planning/PROJECT.md',
569
- config_path: '.planning/config.json',
570
- };
571
- return (0, types_js_1.cmdOk)(result);
572
- }
573
- // ─── Helper: list codebase docs ──────────────────────────────────────────────
574
- /**
575
- * Scan .planning/codebase/ for .md files and return relative paths.
576
- * Returns empty array if the directory does not exist.
577
- */
578
- function listCodebaseDocs(cwd) {
579
- const codebaseDir = (0, core_js_1.planningPath)(cwd, 'codebase');
580
- try {
581
- const files = node_fs_1.default.readdirSync(codebaseDir).filter(f => f.endsWith('.md'));
582
- return files.map(f => node_path_1.default.join('.planning', 'codebase', f));
583
- }
584
- catch {
585
- return [];
586
- }
587
- }
588
- // ─── Agent-level init commands ───────────────────────────────────────────────
589
- function cmdInitExecutor(cwd, phase) {
590
- if (!phase)
591
- return (0, types_js_1.cmdErr)('phase required for init executor');
592
- const config = (0, core_js_1.loadConfig)(cwd);
593
- const phaseInfo = (0, core_js_1.findPhaseInternal)(cwd, phase);
594
- const codebaseDocs = listCodebaseDocs(cwd);
595
- const result = {
596
- executor_model: (0, core_js_1.resolveModelInternal)(cwd, 'maxsim-executor'),
597
- verifier_model: (0, core_js_1.resolveModelInternal)(cwd, 'maxsim-verifier'),
598
- commit_docs: config.commit_docs,
599
- parallelization: config.parallelization,
600
- branching_strategy: config.branching_strategy,
601
- phase_branch_template: config.phase_branch_template,
602
- milestone_branch_template: config.milestone_branch_template,
603
- phase_found: !!phaseInfo,
604
- phase_dir: phaseInfo?.directory ?? null,
605
- phase_number: phaseInfo?.phase_number ?? null,
606
- phase_name: phaseInfo?.phase_name ?? null,
607
- state_path: '.planning/STATE.md',
608
- codebase_docs: codebaseDocs,
609
- };
610
- if ((0, core_js_1.pathExistsInternal)(cwd, '.planning/CONVENTIONS.md')) {
611
- result.conventions_path = '.planning/CONVENTIONS.md';
612
- }
613
- return (0, types_js_1.cmdOk)(result);
614
- }
615
- function cmdInitPlanner(cwd, phase) {
616
- if (!phase)
617
- return (0, types_js_1.cmdErr)('phase required for init planner');
618
- const config = (0, core_js_1.loadConfig)(cwd);
619
- const phaseInfo = (0, core_js_1.findPhaseInternal)(cwd, phase);
620
- const phase_req_ids = extractReqIds(cwd, phase);
621
- const codebaseDocs = listCodebaseDocs(cwd);
622
- const result = {
623
- planner_model: (0, core_js_1.resolveModelInternal)(cwd, 'maxsim-planner'),
624
- checker_model: (0, core_js_1.resolveModelInternal)(cwd, 'maxsim-plan-checker'),
625
- commit_docs: config.commit_docs,
626
- research_enabled: config.research,
627
- plan_checker_enabled: config.plan_checker,
628
- phase_found: !!phaseInfo,
629
- phase_dir: phaseInfo?.directory ?? null,
630
- phase_number: phaseInfo?.phase_number ?? null,
631
- phase_name: phaseInfo?.phase_name ?? null,
632
- phase_req_ids,
633
- has_research: phaseInfo?.has_research ?? false,
634
- has_context: phaseInfo?.has_context ?? false,
635
- has_plans: (phaseInfo?.plans?.length ?? 0) > 0,
636
- plan_count: phaseInfo?.plans?.length ?? 0,
637
- state_path: '.planning/STATE.md',
638
- roadmap_path: '.planning/ROADMAP.md',
639
- requirements_path: '.planning/REQUIREMENTS.md',
640
- codebase_docs: codebaseDocs,
641
- };
642
- if ((0, core_js_1.pathExistsInternal)(cwd, '.planning/CONVENTIONS.md')) {
643
- result.conventions_path = '.planning/CONVENTIONS.md';
644
- }
645
- if (phaseInfo?.directory) {
646
- const artifacts = scanPhaseArtifacts(cwd, phaseInfo.directory);
647
- if (artifacts.context_path)
648
- result.context_path = artifacts.context_path;
649
- if (artifacts.research_path)
650
- result.research_path = artifacts.research_path;
651
- }
652
- return (0, types_js_1.cmdOk)(result);
653
- }
654
- function cmdInitResearcher(cwd, phase) {
655
- if (!phase)
656
- return (0, types_js_1.cmdErr)('phase required for init researcher');
657
- const config = (0, core_js_1.loadConfig)(cwd);
658
- const phaseInfo = (0, core_js_1.findPhaseInternal)(cwd, phase);
659
- const phase_req_ids = extractReqIds(cwd, phase);
660
- const codebaseDocs = listCodebaseDocs(cwd);
661
- const result = {
662
- researcher_model: (0, core_js_1.resolveModelInternal)(cwd, 'maxsim-phase-researcher'),
663
- commit_docs: config.commit_docs,
664
- brave_search: config.brave_search,
665
- phase_found: !!phaseInfo,
666
- phase_dir: phaseInfo?.directory ?? null,
667
- phase_number: phaseInfo?.phase_number ?? null,
668
- phase_name: phaseInfo?.phase_name ?? null,
669
- padded_phase: phaseInfo?.phase_number?.padStart(2, '0') ?? null,
670
- phase_req_ids,
671
- has_research: phaseInfo?.has_research ?? false,
672
- has_context: phaseInfo?.has_context ?? false,
673
- state_path: '.planning/STATE.md',
674
- roadmap_path: '.planning/ROADMAP.md',
675
- requirements_path: '.planning/REQUIREMENTS.md',
676
- codebase_docs: codebaseDocs,
677
- };
678
- if ((0, core_js_1.pathExistsInternal)(cwd, '.planning/CONVENTIONS.md')) {
679
- result.conventions_path = '.planning/CONVENTIONS.md';
680
- }
681
- if (phaseInfo?.directory) {
682
- const artifacts = scanPhaseArtifacts(cwd, phaseInfo.directory);
683
- if (artifacts.context_path)
684
- result.context_path = artifacts.context_path;
685
- }
686
- return (0, types_js_1.cmdOk)(result);
687
- }
688
- function cmdInitVerifier(cwd, phase) {
689
- if (!phase)
690
- return (0, types_js_1.cmdErr)('phase required for init verifier');
691
- const config = (0, core_js_1.loadConfig)(cwd);
692
- const phaseInfo = (0, core_js_1.findPhaseInternal)(cwd, phase);
693
- const phase_req_ids = extractReqIds(cwd, phase);
694
- const codebaseDocs = listCodebaseDocs(cwd);
695
- const result = {
696
- verifier_model: (0, core_js_1.resolveModelInternal)(cwd, 'maxsim-verifier'),
697
- commit_docs: config.commit_docs,
698
- phase_found: !!phaseInfo,
699
- phase_dir: phaseInfo?.directory ?? null,
700
- phase_number: phaseInfo?.phase_number ?? null,
701
- phase_name: phaseInfo?.phase_name ?? null,
702
- phase_req_ids,
703
- state_path: '.planning/STATE.md',
704
- roadmap_path: '.planning/ROADMAP.md',
705
- requirements_path: '.planning/REQUIREMENTS.md',
706
- codebase_docs: codebaseDocs,
707
- };
708
- return (0, types_js_1.cmdOk)(result);
709
- }
710
- function cmdInitDebugger(cwd, phase) {
711
- const config = (0, core_js_1.loadConfig)(cwd);
712
- const phaseInfo = phase ? (0, core_js_1.findPhaseInternal)(cwd, phase) : null;
713
- const codebaseDocs = listCodebaseDocs(cwd);
714
- const result = {
715
- debugger_model: (0, core_js_1.resolveModelInternal)(cwd, 'maxsim-debugger'),
716
- commit_docs: config.commit_docs,
717
- phase_found: !!phaseInfo,
718
- phase_dir: phaseInfo?.directory ?? null,
719
- phase_number: phaseInfo?.phase_number ?? null,
720
- phase_name: phaseInfo?.phase_name ?? null,
721
- state_path: '.planning/STATE.md',
722
- codebase_docs: codebaseDocs,
723
- };
724
- if ((0, core_js_1.pathExistsInternal)(cwd, '.planning/CONVENTIONS.md')) {
725
- result.conventions_path = '.planning/CONVENTIONS.md';
726
- }
727
- return (0, types_js_1.cmdOk)(result);
728
- }
729
- // ─── Drift-related init commands ─────────────────────────────────────────────
730
- function cmdInitCheckDrift(cwd) {
731
- const config = (0, core_js_1.loadConfig)(cwd);
732
- const driftModel = (0, core_js_1.resolveModelInternal)(cwd, 'maxsim-drift-checker');
733
- const hasPlanning = (0, core_js_1.pathExistsInternal)(cwd, '.planning');
734
- const hasRequirements = (0, core_js_1.pathExistsInternal)(cwd, '.planning/REQUIREMENTS.md');
735
- const hasRoadmap = (0, core_js_1.pathExistsInternal)(cwd, '.planning/ROADMAP.md');
736
- const hasNogos = (0, core_js_1.pathExistsInternal)(cwd, '.planning/NO-GOS.md');
737
- const hasConventions = (0, core_js_1.pathExistsInternal)(cwd, '.planning/CONVENTIONS.md');
738
- const hasPreviousReport = (0, core_js_1.pathExistsInternal)(cwd, '.planning/DRIFT-REPORT.md');
739
- // Collect spec files that exist
740
- const specFiles = [];
741
- if (hasRequirements)
742
- specFiles.push('.planning/REQUIREMENTS.md');
743
- if (hasRoadmap)
744
- specFiles.push('.planning/ROADMAP.md');
745
- if ((0, core_js_1.pathExistsInternal)(cwd, '.planning/STATE.md'))
746
- specFiles.push('.planning/STATE.md');
747
- if (hasNogos)
748
- specFiles.push('.planning/NO-GOS.md');
749
- if (hasConventions)
750
- specFiles.push('.planning/CONVENTIONS.md');
751
- // Collect active phase directories
752
- let phaseDirs = [];
753
- try {
754
- const dirs = (0, core_js_1.listSubDirs)((0, core_js_1.phasesPath)(cwd), true);
755
- phaseDirs = dirs.map(d => `.planning/phases/${d}`);
756
- }
757
- catch { /* no phases dir */ }
758
- // Collect archived milestone directories
759
- let archivedMilestoneDirs = [];
760
- try {
761
- const archived = (0, core_js_1.getArchivedPhaseDirs)(cwd);
762
- archivedMilestoneDirs = archived.map(a => a.basePath);
763
- // De-duplicate
764
- archivedMilestoneDirs = [...new Set(archivedMilestoneDirs)];
765
- }
766
- catch { /* no archived dirs */ }
767
- const codebaseDocs = listCodebaseDocs(cwd);
768
- const result = {
769
- drift_model: driftModel,
770
- commit_docs: config.commit_docs,
771
- has_planning: hasPlanning,
772
- has_requirements: hasRequirements,
773
- has_roadmap: hasRoadmap,
774
- has_nogos: hasNogos,
775
- has_conventions: hasConventions,
776
- has_previous_report: hasPreviousReport,
777
- previous_report_path: hasPreviousReport ? '.planning/DRIFT-REPORT.md' : null,
778
- spec_files: specFiles,
779
- phase_dirs: phaseDirs,
780
- archived_milestone_dirs: archivedMilestoneDirs,
781
- state_path: '.planning/STATE.md',
782
- requirements_path: '.planning/REQUIREMENTS.md',
783
- roadmap_path: '.planning/ROADMAP.md',
784
- nogos_path: hasNogos ? '.planning/NO-GOS.md' : null,
785
- conventions_path: hasConventions ? '.planning/CONVENTIONS.md' : null,
786
- codebase_docs: codebaseDocs,
787
- };
788
- return (0, types_js_1.cmdOk)(result);
789
- }
790
- function cmdInitRealign(cwd, direction) {
791
- const config = (0, core_js_1.loadConfig)(cwd);
792
- const hasReport = (0, core_js_1.pathExistsInternal)(cwd, '.planning/DRIFT-REPORT.md');
793
- const hasPlanning = (0, core_js_1.pathExistsInternal)(cwd, '.planning');
794
- // Collect active phase directories
795
- let phaseDirs = [];
796
- try {
797
- const dirs = (0, core_js_1.listSubDirs)((0, core_js_1.phasesPath)(cwd), true);
798
- phaseDirs = dirs.map(d => `.planning/phases/${d}`);
799
- }
800
- catch { /* no phases dir */ }
801
- const codebaseDocs = listCodebaseDocs(cwd);
802
- const result = {
803
- commit_docs: config.commit_docs,
804
- direction: direction ?? null,
805
- has_report: hasReport,
806
- report_path: '.planning/DRIFT-REPORT.md',
807
- has_planning: hasPlanning,
808
- state_path: '.planning/STATE.md',
809
- roadmap_path: '.planning/ROADMAP.md',
810
- requirements_path: '.planning/REQUIREMENTS.md',
811
- phase_dirs: phaseDirs,
812
- codebase_docs: codebaseDocs,
813
- };
814
- return (0, types_js_1.cmdOk)(result);
815
- }
816
- //# sourceMappingURL=init.js.map