maxsimcli 3.12.0 → 4.0.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 (179) hide show
  1. package/README.md +43 -17
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/adapters/index.d.ts +0 -11
  4. package/dist/adapters/index.d.ts.map +1 -1
  5. package/dist/adapters/index.js +4 -40
  6. package/dist/adapters/index.js.map +1 -1
  7. package/dist/assets/CHANGELOG.md +70 -0
  8. package/dist/assets/dashboard/client/assets/{index-wtQDvXzr.js → index-C_eAetZJ.js} +60 -60
  9. package/dist/assets/dashboard/client/assets/index-CmiJKqOU.css +32 -0
  10. package/dist/assets/dashboard/client/index.html +2 -2
  11. package/dist/assets/dashboard/server.js +467 -271
  12. package/dist/assets/templates/agents/AGENTS.md +13 -1
  13. package/dist/assets/templates/agents/maxsim-debugger.md +2 -2
  14. package/dist/assets/templates/agents/maxsim-executor.md +5 -5
  15. package/dist/assets/templates/agents/maxsim-phase-researcher.md +2 -2
  16. package/dist/assets/templates/agents/maxsim-plan-checker.md +2 -2
  17. package/dist/assets/templates/agents/maxsim-planner.md +3 -3
  18. package/dist/assets/templates/commands/maxsim/add-todo.md +15 -5
  19. package/dist/assets/templates/commands/maxsim/discuss-phase.md +1 -0
  20. package/dist/assets/templates/commands/maxsim/init-existing.md +4 -0
  21. package/dist/assets/templates/commands/maxsim/new-project.md +4 -0
  22. package/dist/assets/templates/references/thinking-partner.md +41 -0
  23. package/dist/assets/templates/skills/batch-worktree/SKILL.md +137 -0
  24. package/dist/assets/templates/skills/brainstorming/SKILL.md +159 -0
  25. package/dist/assets/templates/skills/roadmap-writing/SKILL.md +198 -0
  26. package/dist/assets/templates/skills/sdd/SKILL.md +175 -0
  27. package/dist/assets/templates/skills/simplify/SKILL.md +48 -0
  28. package/dist/assets/templates/skills/using-maxsim/SKILL.md +6 -1
  29. package/dist/assets/templates/templates/acceptance-criteria.md +10 -0
  30. package/dist/assets/templates/templates/decisions.md +10 -0
  31. package/dist/assets/templates/templates/no-gos.md +9 -0
  32. package/dist/assets/templates/workflows/add-todo.md +89 -0
  33. package/dist/assets/templates/workflows/discuss-phase.md +85 -1
  34. package/dist/assets/templates/workflows/execute-phase.md +22 -2
  35. package/dist/assets/templates/workflows/execute-plan.md +166 -0
  36. package/dist/assets/templates/workflows/init-existing.md +116 -0
  37. package/dist/assets/templates/workflows/new-project.md +105 -1
  38. package/dist/assets/templates/workflows/plan-phase.md +3 -3
  39. package/dist/assets/templates/workflows/quick.md +2 -2
  40. package/dist/cli.cjs +1264 -882
  41. package/dist/cli.cjs.map +1 -1
  42. package/dist/cli.js +97 -74
  43. package/dist/cli.js.map +1 -1
  44. package/dist/core/artefakte.d.ts +12 -0
  45. package/dist/core/artefakte.d.ts.map +1 -0
  46. package/dist/core/artefakte.js +136 -0
  47. package/dist/core/artefakte.js.map +1 -0
  48. package/dist/core/commands.d.ts +13 -13
  49. package/dist/core/commands.d.ts.map +1 -1
  50. package/dist/core/commands.js +44 -57
  51. package/dist/core/commands.js.map +1 -1
  52. package/dist/core/config.d.ts +4 -3
  53. package/dist/core/config.d.ts.map +1 -1
  54. package/dist/core/config.js +14 -18
  55. package/dist/core/config.js.map +1 -1
  56. package/dist/core/context-loader.d.ts +20 -0
  57. package/dist/core/context-loader.d.ts.map +1 -0
  58. package/dist/core/context-loader.js +154 -0
  59. package/dist/core/context-loader.js.map +1 -0
  60. package/dist/core/core.d.ts +8 -2
  61. package/dist/core/core.d.ts.map +1 -1
  62. package/dist/core/core.js +47 -11
  63. package/dist/core/core.js.map +1 -1
  64. package/dist/core/dashboard-launcher.d.ts +1 -1
  65. package/dist/core/dashboard-launcher.d.ts.map +1 -1
  66. package/dist/core/dashboard-launcher.js +18 -15
  67. package/dist/core/dashboard-launcher.js.map +1 -1
  68. package/dist/core/frontmatter.d.ts +5 -5
  69. package/dist/core/frontmatter.d.ts.map +1 -1
  70. package/dist/core/frontmatter.js +21 -26
  71. package/dist/core/frontmatter.js.map +1 -1
  72. package/dist/core/index.d.ts +8 -3
  73. package/dist/core/index.d.ts.map +1 -1
  74. package/dist/core/index.js +23 -3
  75. package/dist/core/index.js.map +1 -1
  76. package/dist/core/init.d.ts +14 -14
  77. package/dist/core/init.d.ts.map +1 -1
  78. package/dist/core/init.js +93 -154
  79. package/dist/core/init.js.map +1 -1
  80. package/dist/core/milestone.d.ts +3 -3
  81. package/dist/core/milestone.d.ts.map +1 -1
  82. package/dist/core/milestone.js +9 -9
  83. package/dist/core/milestone.js.map +1 -1
  84. package/dist/core/phase.d.ts +9 -9
  85. package/dist/core/phase.d.ts.map +1 -1
  86. package/dist/core/phase.js +64 -68
  87. package/dist/core/phase.js.map +1 -1
  88. package/dist/core/roadmap.d.ts +4 -3
  89. package/dist/core/roadmap.d.ts.map +1 -1
  90. package/dist/core/roadmap.js +46 -109
  91. package/dist/core/roadmap.js.map +1 -1
  92. package/dist/core/skills.d.ts +19 -0
  93. package/dist/core/skills.d.ts.map +1 -0
  94. package/dist/core/skills.js +145 -0
  95. package/dist/core/skills.js.map +1 -0
  96. package/dist/core/start.d.ts +15 -0
  97. package/dist/core/start.d.ts.map +1 -0
  98. package/dist/core/start.js +80 -0
  99. package/dist/core/start.js.map +1 -0
  100. package/dist/core/state.d.ts +13 -13
  101. package/dist/core/state.d.ts.map +1 -1
  102. package/dist/core/state.js +119 -126
  103. package/dist/core/state.js.map +1 -1
  104. package/dist/core/template.d.ts +3 -3
  105. package/dist/core/template.d.ts.map +1 -1
  106. package/dist/core/template.js +12 -14
  107. package/dist/core/template.js.map +1 -1
  108. package/dist/core/types.d.ts +14 -2
  109. package/dist/core/types.d.ts.map +1 -1
  110. package/dist/core/types.js +8 -0
  111. package/dist/core/types.js.map +1 -1
  112. package/dist/core/verify.d.ts +10 -9
  113. package/dist/core/verify.d.ts.map +1 -1
  114. package/dist/core/verify.js +38 -48
  115. package/dist/core/verify.js.map +1 -1
  116. package/dist/core-TFSlUjV1.cjs +4312 -0
  117. package/dist/core-TFSlUjV1.cjs.map +1 -0
  118. package/dist/install/adapters.d.ts +2 -11
  119. package/dist/install/adapters.d.ts.map +1 -1
  120. package/dist/install/adapters.js +16 -154
  121. package/dist/install/adapters.js.map +1 -1
  122. package/dist/install/copy.d.ts +1 -10
  123. package/dist/install/copy.d.ts.map +1 -1
  124. package/dist/install/copy.js +5 -125
  125. package/dist/install/copy.js.map +1 -1
  126. package/dist/install/hooks.d.ts +4 -5
  127. package/dist/install/hooks.d.ts.map +1 -1
  128. package/dist/install/hooks.js +46 -71
  129. package/dist/install/hooks.js.map +1 -1
  130. package/dist/install/index.js +163 -226
  131. package/dist/install/index.js.map +1 -1
  132. package/dist/install/manifest.d.ts +5 -2
  133. package/dist/install/manifest.d.ts.map +1 -1
  134. package/dist/install/manifest.js +20 -26
  135. package/dist/install/manifest.js.map +1 -1
  136. package/dist/install/patches.d.ts +1 -2
  137. package/dist/install/patches.d.ts.map +1 -1
  138. package/dist/install/patches.js +4 -16
  139. package/dist/install/patches.js.map +1 -1
  140. package/dist/install/shared.d.ts +24 -18
  141. package/dist/install/shared.d.ts.map +1 -1
  142. package/dist/install/shared.js +65 -35
  143. package/dist/install/shared.js.map +1 -1
  144. package/dist/install/uninstall.d.ts +2 -3
  145. package/dist/install/uninstall.d.ts.map +1 -1
  146. package/dist/install/uninstall.js +24 -82
  147. package/dist/install/uninstall.js.map +1 -1
  148. package/dist/install.cjs +321 -1230
  149. package/dist/install.cjs.map +1 -1
  150. package/dist/mcp-server.cjs +22527 -46
  151. package/dist/mcp-server.cjs.map +1 -1
  152. package/dist/skills-BOSxYUzf.cjs +6812 -0
  153. package/dist/skills-BOSxYUzf.cjs.map +1 -0
  154. package/package.json +1 -1
  155. package/dist/adapters/codex.d.ts +0 -19
  156. package/dist/adapters/codex.d.ts.map +0 -1
  157. package/dist/adapters/codex.js +0 -94
  158. package/dist/adapters/codex.js.map +0 -1
  159. package/dist/adapters/gemini.d.ts +0 -19
  160. package/dist/adapters/gemini.d.ts.map +0 -1
  161. package/dist/adapters/gemini.js +0 -96
  162. package/dist/adapters/gemini.js.map +0 -1
  163. package/dist/adapters/opencode.d.ts +0 -17
  164. package/dist/adapters/opencode.d.ts.map +0 -1
  165. package/dist/adapters/opencode.js +0 -111
  166. package/dist/adapters/opencode.js.map +0 -1
  167. package/dist/adapters/transforms/content.d.ts +0 -39
  168. package/dist/adapters/transforms/content.d.ts.map +0 -1
  169. package/dist/adapters/transforms/content.js +0 -125
  170. package/dist/adapters/transforms/content.js.map +0 -1
  171. package/dist/adapters/transforms/frontmatter.d.ts +0 -42
  172. package/dist/adapters/transforms/frontmatter.d.ts.map +0 -1
  173. package/dist/adapters/transforms/frontmatter.js +0 -204
  174. package/dist/adapters/transforms/frontmatter.js.map +0 -1
  175. package/dist/adapters/transforms/tool-maps.d.ts +0 -20
  176. package/dist/adapters/transforms/tool-maps.d.ts.map +0 -1
  177. package/dist/adapters/transforms/tool-maps.js +0 -64
  178. package/dist/adapters/transforms/tool-maps.js.map +0 -1
  179. package/dist/assets/dashboard/client/assets/index-CxFKStBk.css +0 -32
@@ -3,7 +3,8 @@
3
3
  *
4
4
  * Ported from maxsim/bin/lib/roadmap.cjs
5
5
  */
6
- export declare function cmdRoadmapGetPhase(cwd: string, phaseNum: string, raw: boolean): void;
7
- export declare function cmdRoadmapAnalyze(cwd: string, raw: boolean): void;
8
- export declare function cmdRoadmapUpdatePlanProgress(cwd: string, phaseNum: string, raw: boolean): void;
6
+ import type { CmdResult } from './types.js';
7
+ export declare function cmdRoadmapGetPhase(cwd: string, phaseNum: string): CmdResult;
8
+ export declare function cmdRoadmapAnalyze(cwd: string): Promise<CmdResult>;
9
+ export declare function cmdRoadmapUpdatePlanProgress(cwd: string, phaseNum: string): CmdResult;
9
10
  //# sourceMappingURL=roadmap.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"roadmap.d.ts","sourceRoot":"","sources":["../../src/core/roadmap.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAgBH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,IAAI,CAyEpF;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,IAAI,CAuHjE;AAED,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,IAAI,CAqE9F"}
1
+ {"version":3,"file":"roadmap.d.ts","sourceRoot":"","sources":["../../src/core/roadmap.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,OAAO,KAAK,EAAgE,SAAS,EAAE,MAAM,YAAY,CAAC;AAI1G,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,CAkC3E;AAED,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CA8EvE;AAED,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,CA0BrF"}
@@ -14,13 +14,12 @@ exports.cmdRoadmapUpdatePlanProgress = cmdRoadmapUpdatePlanProgress;
14
14
  const node_fs_1 = __importDefault(require("node:fs"));
15
15
  const node_path_1 = __importDefault(require("node:path"));
16
16
  const core_js_1 = require("./core.js");
17
+ const types_js_1 = require("./types.js");
17
18
  // ─── Roadmap commands ────────────────────────────────────────────────────────
18
- function cmdRoadmapGetPhase(cwd, phaseNum, raw) {
19
+ function cmdRoadmapGetPhase(cwd, phaseNum) {
19
20
  const rmPath = (0, core_js_1.roadmapPath)(cwd);
20
- if (!node_fs_1.default.existsSync(rmPath)) {
21
- (0, core_js_1.output)({ found: false, error: 'ROADMAP.md not found' }, raw, '');
22
- return;
23
- }
21
+ if (!node_fs_1.default.existsSync(rmPath))
22
+ return (0, types_js_1.cmdOk)({ found: false, error: 'ROADMAP.md not found' }, '');
24
23
  try {
25
24
  const content = node_fs_1.default.readFileSync(rmPath, 'utf-8');
26
25
  const escapedPhase = phaseNum.replace(/\./g, '\\.');
@@ -30,56 +29,34 @@ function cmdRoadmapGetPhase(cwd, phaseNum, raw) {
30
29
  const checklistPattern = new RegExp(`-\\s*\\[[ x]\\]\\s*\\*\\*Phase\\s+${escapedPhase}:\\s*([^*]+)\\*\\*`, 'i');
31
30
  const checklistMatch = content.match(checklistPattern);
32
31
  if (checklistMatch) {
33
- (0, core_js_1.output)({
34
- found: false,
35
- phase_number: phaseNum,
36
- phase_name: checklistMatch[1].trim(),
37
- error: 'malformed_roadmap',
38
- message: `Phase ${phaseNum} exists in summary list but missing "### Phase ${phaseNum}:" detail section. ROADMAP.md needs both formats.`
39
- }, raw, '');
40
- return;
32
+ return (0, types_js_1.cmdOk)({ found: false, phase_number: phaseNum, phase_name: checklistMatch[1].trim(), error: 'malformed_roadmap', message: `Phase ${phaseNum} exists in summary list but missing "### Phase ${phaseNum}:" detail section. ROADMAP.md needs both formats.` }, '');
41
33
  }
42
- (0, core_js_1.output)({ found: false, phase_number: phaseNum }, raw, '');
43
- return;
34
+ return (0, types_js_1.cmdOk)({ found: false, phase_number: phaseNum }, '');
44
35
  }
45
36
  const phaseName = headerMatch[1].trim();
46
37
  const headerIndex = headerMatch.index;
47
38
  const restOfContent = content.slice(headerIndex);
48
39
  const nextHeaderMatch = restOfContent.match(/\n#{2,4}\s+Phase\s+\d/i);
49
- const sectionEnd = nextHeaderMatch
50
- ? headerIndex + nextHeaderMatch.index
51
- : content.length;
40
+ const sectionEnd = nextHeaderMatch ? headerIndex + nextHeaderMatch.index : content.length;
52
41
  const section = content.slice(headerIndex, sectionEnd).trim();
53
42
  const goalMatch = section.match(/\*\*Goal(?::\*\*|\*\*:)\s*([^\n]+)/i);
54
43
  const goal = goalMatch ? goalMatch[1].trim() : null;
55
44
  const criteriaMatch = section.match(/\*\*Success Criteria\*\*[^\n]*:\s*\n((?:\s*\d+\.\s*[^\n]+\n?)+)/i);
56
- const success_criteria = criteriaMatch
57
- ? criteriaMatch[1].trim().split('\n').map(line => line.replace(/^\s*\d+\.\s*/, '').trim()).filter(Boolean)
58
- : [];
59
- (0, core_js_1.output)({
60
- found: true,
61
- phase_number: phaseNum,
62
- phase_name: phaseName,
63
- goal,
64
- success_criteria,
65
- section,
66
- }, raw, section);
45
+ const success_criteria = criteriaMatch ? criteriaMatch[1].trim().split('\n').map(line => line.replace(/^\s*\d+\.\s*/, '').trim()).filter(Boolean) : [];
46
+ return (0, types_js_1.cmdOk)({ found: true, phase_number: phaseNum, phase_name: phaseName, goal, success_criteria, section }, section);
67
47
  }
68
48
  catch (e) {
69
- (0, core_js_1.rethrowCliSignals)(e);
70
- (0, core_js_1.error)('Failed to read ROADMAP.md: ' + e.message);
49
+ return (0, types_js_1.cmdErr)('Failed to read ROADMAP.md: ' + e.message);
71
50
  }
72
51
  }
73
- function cmdRoadmapAnalyze(cwd, raw) {
52
+ async function cmdRoadmapAnalyze(cwd) {
74
53
  const rmPath = (0, core_js_1.roadmapPath)(cwd);
75
- if (!node_fs_1.default.existsSync(rmPath)) {
76
- (0, core_js_1.output)({ error: 'ROADMAP.md not found', milestones: [], phases: [], current_phase: null }, raw);
77
- return;
78
- }
79
- const content = node_fs_1.default.readFileSync(rmPath, 'utf-8');
54
+ const content = await (0, core_js_1.safeReadFileAsync)(rmPath);
55
+ if (!content)
56
+ return (0, types_js_1.cmdOk)({ error: 'ROADMAP.md not found', milestones: [], phases: [], current_phase: null });
80
57
  const phasesDir = (0, core_js_1.phasesPath)(cwd);
81
58
  const phasePattern = (0, core_js_1.getPhasePattern)();
82
- const phases = [];
59
+ const parsedPhases = [];
83
60
  let match;
84
61
  while ((match = phasePattern.exec(content)) !== null) {
85
62
  const phaseNum = match[1];
@@ -93,17 +70,23 @@ function cmdRoadmapAnalyze(cwd, raw) {
93
70
  const goal = goalMatch ? goalMatch[1].trim() : null;
94
71
  const dependsMatch = section.match(/\*\*Depends on:\*\*\s*([^\n]+)/i);
95
72
  const depends_on = dependsMatch ? dependsMatch[1].trim() : null;
96
- const normalized = (0, core_js_1.normalizePhaseName)(phaseNum);
73
+ parsedPhases.push({ phaseNum, phaseName, goal, depends_on, normalized: (0, core_js_1.normalizePhaseName)(phaseNum), checkboxPattern: new RegExp(`-\\s*\\[(x| )\\]\\s*.*Phase\\s+${phaseNum.replace('.', '\\.')}`, 'i') });
74
+ }
75
+ let allDirs = [];
76
+ try {
77
+ allDirs = await (0, core_js_1.listSubDirsAsync)(phasesDir);
78
+ }
79
+ catch { /* phases dir may not exist */ }
80
+ const phases = await Promise.all(parsedPhases.map(async (p) => {
97
81
  let diskStatus = 'no_directory';
98
82
  let planCount = 0;
99
83
  let summaryCount = 0;
100
84
  let hasContext = false;
101
85
  let hasResearch = false;
102
86
  try {
103
- const dirs = (0, core_js_1.listSubDirs)(phasesDir);
104
- const dirMatch = dirs.find(d => d.startsWith(normalized + '-') || d === normalized);
87
+ const dirMatch = allDirs.find(d => d.startsWith(p.normalized + '-') || d === p.normalized);
105
88
  if (dirMatch) {
106
- const phaseFiles = node_fs_1.default.readdirSync(node_path_1.default.join(phasesDir, dirMatch));
89
+ const phaseFiles = await node_fs_1.default.promises.readdir(node_path_1.default.join(phasesDir, dirMatch));
107
90
  planCount = phaseFiles.filter(f => (0, core_js_1.isPlanFile)(f)).length;
108
91
  summaryCount = phaseFiles.filter(f => (0, core_js_1.isSummaryFile)(f)).length;
109
92
  hasContext = phaseFiles.some(f => f.endsWith('-CONTEXT.md') || f === 'CONTEXT.md');
@@ -123,33 +106,17 @@ function cmdRoadmapAnalyze(cwd, raw) {
123
106
  }
124
107
  }
125
108
  catch (e) {
126
- /* optional op, ignore */
127
109
  (0, core_js_1.debugLog)(e);
128
110
  }
129
- const checkboxPattern = new RegExp(`-\\s*\\[(x| )\\]\\s*.*Phase\\s+${phaseNum.replace('.', '\\.')}`, 'i');
130
- const checkboxMatch = content.match(checkboxPattern);
111
+ const checkboxMatch = content.match(p.checkboxPattern);
131
112
  const roadmapComplete = checkboxMatch ? checkboxMatch[1] === 'x' : false;
132
- phases.push({
133
- number: phaseNum,
134
- name: phaseName,
135
- goal,
136
- depends_on,
137
- plan_count: planCount,
138
- summary_count: summaryCount,
139
- has_context: hasContext,
140
- has_research: hasResearch,
141
- disk_status: diskStatus,
142
- roadmap_complete: roadmapComplete,
143
- });
144
- }
113
+ return { number: p.phaseNum, name: p.phaseName, goal: p.goal, depends_on: p.depends_on, plan_count: planCount, summary_count: summaryCount, has_context: hasContext, has_research: hasResearch, disk_status: diskStatus, roadmap_complete: roadmapComplete };
114
+ }));
145
115
  const milestones = [];
146
116
  const milestonePattern = /##\s*(.*v(\d+\.\d+)[^(\n]*)/gi;
147
117
  let mMatch;
148
118
  while ((mMatch = milestonePattern.exec(content)) !== null) {
149
- milestones.push({
150
- heading: mMatch[1].trim(),
151
- version: 'v' + mMatch[2],
152
- });
119
+ milestones.push({ heading: mMatch[1].trim(), version: 'v' + mMatch[2] });
153
120
  }
154
121
  const currentPhase = phases.find(p => p.disk_status === 'planned' || p.disk_status === 'partial') || null;
155
122
  const nextPhase = phases.find(p => p.disk_status === 'empty' || p.disk_status === 'no_directory' || p.disk_status === 'discussed' || p.disk_status === 'researched') || null;
@@ -159,69 +126,39 @@ function cmdRoadmapAnalyze(cwd, raw) {
159
126
  const checklistPattern = /-\s*\[[ x]\]\s*\*\*Phase\s+(\d+[A-Z]?(?:\.\d+)?)/gi;
160
127
  const checklistPhases = new Set();
161
128
  let checklistMatch;
162
- while ((checklistMatch = checklistPattern.exec(content)) !== null) {
129
+ while ((checklistMatch = checklistPattern.exec(content)) !== null)
163
130
  checklistPhases.add(checklistMatch[1]);
164
- }
165
131
  const detailPhases = new Set(phases.map(p => p.number));
166
132
  const missingDetails = [...checklistPhases].filter(p => !detailPhases.has(p));
167
- const result = {
168
- milestones,
169
- phases,
170
- phase_count: phases.length,
171
- completed_phases: completedPhases,
172
- total_plans: totalPlans,
173
- total_summaries: totalSummaries,
174
- progress_percent: totalPlans > 0 ? Math.min(100, Math.round((totalSummaries / totalPlans) * 100)) : 0,
175
- current_phase: currentPhase ? currentPhase.number : null,
176
- next_phase: nextPhase ? nextPhase.number : null,
177
- missing_phase_details: missingDetails.length > 0 ? missingDetails : null,
178
- };
179
- (0, core_js_1.output)(result, raw);
133
+ const result = { milestones, phases, phase_count: phases.length, completed_phases: completedPhases, total_plans: totalPlans, total_summaries: totalSummaries, progress_percent: totalPlans > 0 ? Math.min(100, Math.round((totalSummaries / totalPlans) * 100)) : 0, current_phase: currentPhase ? currentPhase.number : null, next_phase: nextPhase ? nextPhase.number : null, missing_phase_details: missingDetails.length > 0 ? missingDetails : null };
134
+ return (0, types_js_1.cmdOk)(result);
180
135
  }
181
- function cmdRoadmapUpdatePlanProgress(cwd, phaseNum, raw) {
182
- if (!phaseNum) {
183
- (0, core_js_1.error)('phase number required for roadmap update-plan-progress');
184
- }
136
+ function cmdRoadmapUpdatePlanProgress(cwd, phaseNum) {
137
+ if (!phaseNum)
138
+ return (0, types_js_1.cmdErr)('phase number required for roadmap update-plan-progress');
185
139
  const rmPath = (0, core_js_1.roadmapPath)(cwd);
186
140
  const phaseInfo = (0, core_js_1.findPhaseInternal)(cwd, phaseNum);
187
- if (!phaseInfo) {
188
- (0, core_js_1.error)(`Phase ${phaseNum} not found`);
189
- }
141
+ if (!phaseInfo)
142
+ return (0, types_js_1.cmdErr)(`Phase ${phaseNum} not found`);
190
143
  const planCount = phaseInfo.plans.length;
191
144
  const summaryCount = phaseInfo.summaries.length;
192
- if (planCount === 0) {
193
- (0, core_js_1.output)({ updated: false, reason: 'No plans found', plan_count: 0, summary_count: 0 }, raw, 'no plans');
194
- return;
195
- }
145
+ if (planCount === 0)
146
+ return (0, types_js_1.cmdOk)({ updated: false, reason: 'No plans found', plan_count: 0, summary_count: 0 }, 'no plans');
196
147
  const isComplete = summaryCount >= planCount;
197
148
  const status = isComplete ? 'Complete' : summaryCount > 0 ? 'In Progress' : 'Planned';
198
149
  const today = (0, core_js_1.todayISO)();
199
- if (!node_fs_1.default.existsSync(rmPath)) {
200
- (0, core_js_1.output)({ updated: false, reason: 'ROADMAP.md not found', plan_count: planCount, summary_count: summaryCount }, raw, 'no roadmap');
201
- return;
202
- }
150
+ if (!node_fs_1.default.existsSync(rmPath))
151
+ return (0, types_js_1.cmdOk)({ updated: false, reason: 'ROADMAP.md not found', plan_count: planCount, summary_count: summaryCount }, 'no roadmap');
203
152
  let roadmapContent = node_fs_1.default.readFileSync(rmPath, 'utf-8');
204
153
  const phaseEscaped = phaseNum.replace('.', '\\.');
205
- const tablePattern = new RegExp(`(\\|\\s*${phaseEscaped}\\.?\\s[^|]*\\|)[^|]*(\\|)\\s*[^|]*(\\|)\\s*[^|]*(\\|)`, 'i');
206
154
  const dateField = isComplete ? ` ${today} ` : ' ';
207
- roadmapContent = roadmapContent.replace(tablePattern, `$1 ${summaryCount}/${planCount} $2 ${status.padEnd(11)}$3${dateField}$4`);
208
- const planCountPattern = new RegExp(`(#{2,4}\\s*Phase\\s+${phaseEscaped}[\\s\\S]*?\\*\\*Plans:\\*\\*\\s*)[^\\n]+`, 'i');
209
- const planCountText = isComplete
210
- ? `${summaryCount}/${planCount} plans complete`
211
- : `${summaryCount}/${planCount} plans executed`;
212
- roadmapContent = roadmapContent.replace(planCountPattern, `$1${planCountText}`);
155
+ roadmapContent = roadmapContent.replace(new RegExp(`(\\|\\s*${phaseEscaped}\\.?\\s[^|]*\\|)[^|]*(\\|)\\s*[^|]*(\\|)\\s*[^|]*(\\|)`, 'i'), `$1 ${summaryCount}/${planCount} $2 ${status.padEnd(11)}$3${dateField}$4`);
156
+ const planCountText = isComplete ? `${summaryCount}/${planCount} plans complete` : `${summaryCount}/${planCount} plans executed`;
157
+ roadmapContent = roadmapContent.replace(new RegExp(`(#{2,4}\\s*Phase\\s+${phaseEscaped}[\\s\\S]*?\\*\\*Plans:\\*\\*\\s*)[^\\n]+`, 'i'), `$1${planCountText}`);
213
158
  if (isComplete) {
214
- const checkboxPattern = new RegExp(`(-\\s*\\[)[ ](\\]\\s*.*Phase\\s+${phaseEscaped}[:\\s][^\\n]*)`, 'i');
215
- roadmapContent = roadmapContent.replace(checkboxPattern, `$1x$2 (completed ${today})`);
159
+ roadmapContent = roadmapContent.replace(new RegExp(`(-\\s*\\[)[ ](\\]\\s*.*Phase\\s+${phaseEscaped}[:\\s][^\\n]*)`, 'i'), `$1x$2 (completed ${today})`);
216
160
  }
217
161
  node_fs_1.default.writeFileSync(rmPath, roadmapContent, 'utf-8');
218
- (0, core_js_1.output)({
219
- updated: true,
220
- phase: phaseNum,
221
- plan_count: planCount,
222
- summary_count: summaryCount,
223
- status,
224
- complete: isComplete,
225
- }, raw, `${summaryCount}/${planCount} ${status}`);
162
+ return (0, types_js_1.cmdOk)({ updated: true, phase: phaseNum, plan_count: planCount, summary_count: summaryCount, status, complete: isComplete }, `${summaryCount}/${planCount} ${status}`);
226
163
  }
227
164
  //# sourceMappingURL=roadmap.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"roadmap.js","sourceRoot":"","sources":["../../src/core/roadmap.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"roadmap.js","sourceRoot":"","sources":["../../src/core/roadmap.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Skills — List, install, and update skill templates
3
+ *
4
+ * Skills are installed to `.claude/skills/<name>/SKILL.md`.
5
+ * Source templates live in `templates/skills/<name>/SKILL.md`.
6
+ */
7
+ /**
8
+ * List all installed skills from `.claude/skills/`.
9
+ */
10
+ export declare function cmdSkillList(cwd: string, raw: boolean): void;
11
+ /**
12
+ * Install a specific skill from the templates directory.
13
+ */
14
+ export declare function cmdSkillInstall(cwd: string, skillName: string | undefined, raw: boolean): void;
15
+ /**
16
+ * Update one or all installed skills from the templates source.
17
+ */
18
+ export declare function cmdSkillUpdate(cwd: string, skillName: string | undefined, raw: boolean): void;
19
+ //# sourceMappingURL=skills.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../../src/core/skills.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAkDH;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,IAAI,CAiB5D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,GAAG,EAAE,OAAO,GAAG,IAAI,CAoB9F;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,GAAG,EAAE,OAAO,GAAG,IAAI,CAsD7F"}
@@ -0,0 +1,145 @@
1
+ "use strict";
2
+ /**
3
+ * Skills — List, install, and update skill templates
4
+ *
5
+ * Skills are installed to `.claude/skills/<name>/SKILL.md`.
6
+ * Source templates live in `templates/skills/<name>/SKILL.md`.
7
+ */
8
+ var __importDefault = (this && this.__importDefault) || function (mod) {
9
+ return (mod && mod.__esModule) ? mod : { "default": mod };
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.cmdSkillList = cmdSkillList;
13
+ exports.cmdSkillInstall = cmdSkillInstall;
14
+ exports.cmdSkillUpdate = cmdSkillUpdate;
15
+ const node_fs_1 = __importDefault(require("node:fs"));
16
+ const node_path_1 = __importDefault(require("node:path"));
17
+ const core_js_1 = require("./core.js");
18
+ const frontmatter_js_1 = require("./frontmatter.js");
19
+ // ─── Internal helpers ────────────────────────────────────────────────────────
20
+ /**
21
+ * Resolve the installed skills directory for the current project.
22
+ * Skills live at `.claude/skills/` relative to cwd.
23
+ */
24
+ function skillsDir(cwd) {
25
+ return node_path_1.default.join(cwd, '.claude', 'skills');
26
+ }
27
+ /**
28
+ * Resolve the templates source directory for skills.
29
+ * At runtime (from dist/cli.cjs), templates are bundled at dist/assets/templates/skills/.
30
+ */
31
+ function skillsTemplateDir() {
32
+ return node_path_1.default.resolve(__dirname, 'assets', 'templates', 'skills');
33
+ }
34
+ /**
35
+ * Read a single skill's metadata from its SKILL.md frontmatter.
36
+ */
37
+ function readSkillInfo(skillDir, dirName) {
38
+ const skillMd = node_path_1.default.join(skillDir, 'SKILL.md');
39
+ const content = (0, core_js_1.safeReadFile)(skillMd);
40
+ if (!content)
41
+ return null;
42
+ const fm = (0, frontmatter_js_1.extractFrontmatter)(content);
43
+ return {
44
+ name: fm.name ?? dirName,
45
+ description: fm.description ?? '',
46
+ directory: dirName,
47
+ };
48
+ }
49
+ // ─── Commands ────────────────────────────────────────────────────────────────
50
+ /**
51
+ * List all installed skills from `.claude/skills/`.
52
+ */
53
+ function cmdSkillList(cwd, raw) {
54
+ const dir = skillsDir(cwd);
55
+ if (!node_fs_1.default.existsSync(dir)) {
56
+ (0, core_js_1.output)({ skills: [], count: 0 }, raw, 'No skills installed.');
57
+ }
58
+ const entries = node_fs_1.default.readdirSync(dir, { withFileTypes: true });
59
+ const skills = [];
60
+ for (const entry of entries) {
61
+ if (!entry.isDirectory())
62
+ continue;
63
+ const info = readSkillInfo(node_path_1.default.join(dir, entry.name), entry.name);
64
+ if (info)
65
+ skills.push(info);
66
+ }
67
+ (0, core_js_1.output)({ skills, count: skills.length }, raw, skills.map(s => `${s.name}: ${s.description}`).join('\n'));
68
+ }
69
+ /**
70
+ * Install a specific skill from the templates directory.
71
+ */
72
+ function cmdSkillInstall(cwd, skillName, raw) {
73
+ if (!skillName) {
74
+ (0, core_js_1.error)('skill name required. Usage: skill-install <name>');
75
+ }
76
+ const srcFile = node_path_1.default.join(skillsTemplateDir(), skillName, 'SKILL.md');
77
+ if (!node_fs_1.default.existsSync(srcFile)) {
78
+ // List available skills for a helpful error
79
+ const available = listAvailableTemplates();
80
+ (0, core_js_1.error)(`Skill "${skillName}" not found in templates. Available: ${available.join(', ')}`);
81
+ }
82
+ const destDir = node_path_1.default.join(skillsDir(cwd), skillName);
83
+ const destFile = node_path_1.default.join(destDir, 'SKILL.md');
84
+ node_fs_1.default.mkdirSync(destDir, { recursive: true });
85
+ node_fs_1.default.copyFileSync(srcFile, destFile);
86
+ (0, core_js_1.output)({ installed: true, skill: skillName, path: node_path_1.default.relative(cwd, destFile) }, raw, `Installed skill: ${skillName}`);
87
+ }
88
+ /**
89
+ * Update one or all installed skills from the templates source.
90
+ */
91
+ function cmdSkillUpdate(cwd, skillName, raw) {
92
+ const dir = skillsDir(cwd);
93
+ const templateDir = skillsTemplateDir();
94
+ if (skillName) {
95
+ // Update a single skill
96
+ const srcFile = node_path_1.default.join(templateDir, skillName, 'SKILL.md');
97
+ if (!node_fs_1.default.existsSync(srcFile)) {
98
+ (0, core_js_1.error)(`Skill template "${skillName}" not found.`);
99
+ }
100
+ const destDir = node_path_1.default.join(dir, skillName);
101
+ if (!node_fs_1.default.existsSync(destDir)) {
102
+ (0, core_js_1.error)(`Skill "${skillName}" is not installed. Use skill-install first.`);
103
+ }
104
+ const destFile = node_path_1.default.join(destDir, 'SKILL.md');
105
+ node_fs_1.default.copyFileSync(srcFile, destFile);
106
+ (0, core_js_1.output)({ updated: [skillName], skipped: [], not_found: [] }, raw, `Updated skill: ${skillName}`);
107
+ return;
108
+ }
109
+ // Update all installed skills
110
+ if (!node_fs_1.default.existsSync(dir)) {
111
+ (0, core_js_1.output)({ updated: [], skipped: [], not_found: [] }, raw, 'No skills installed.');
112
+ return;
113
+ }
114
+ const entries = node_fs_1.default.readdirSync(dir, { withFileTypes: true });
115
+ const updated = [];
116
+ const skipped = [];
117
+ for (const entry of entries) {
118
+ if (!entry.isDirectory())
119
+ continue;
120
+ const name = entry.name;
121
+ const srcFile = node_path_1.default.join(templateDir, name, 'SKILL.md');
122
+ if (!node_fs_1.default.existsSync(srcFile)) {
123
+ // Custom/user skill — no template to update from
124
+ skipped.push(name);
125
+ continue;
126
+ }
127
+ const destFile = node_path_1.default.join(dir, name, 'SKILL.md');
128
+ node_fs_1.default.copyFileSync(srcFile, destFile);
129
+ updated.push(name);
130
+ }
131
+ const summary = updated.length > 0
132
+ ? `Updated ${updated.length} skill(s): ${updated.join(', ')}`
133
+ : 'No skills updated.';
134
+ (0, core_js_1.output)({ updated, skipped }, raw, summary);
135
+ }
136
+ // ─── Helpers ──────────────────────────────────────────────────────────────────
137
+ function listAvailableTemplates() {
138
+ const dir = skillsTemplateDir();
139
+ if (!node_fs_1.default.existsSync(dir))
140
+ return [];
141
+ return node_fs_1.default.readdirSync(dir, { withFileTypes: true })
142
+ .filter(e => e.isDirectory())
143
+ .map(e => e.name);
144
+ }
145
+ //# sourceMappingURL=skills.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/core/skills.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Start — Orchestrates Dashboard launch + browser open
3
+ *
4
+ * Provides a unified `maxsimcli start` entry point that:
5
+ * 1. Checks for a running dashboard
6
+ * 2. Starts the dashboard if needed
7
+ * 3. Opens the browser
8
+ * 4. Reports status
9
+ */
10
+ import type { CmdResult } from './types.js';
11
+ export declare function cmdStart(cwd: string, options: {
12
+ noBrowser?: boolean;
13
+ networkMode?: boolean;
14
+ }): Promise<CmdResult>;
15
+ //# sourceMappingURL=start.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../src/core/start.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAmBH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAoB5C,wBAAsB,QAAQ,CAC5B,GAAG,EAAE,MAAM,EACX,OAAO,EAAE;IAAE,SAAS,CAAC,EAAE,OAAO,CAAC;IAAC,WAAW,CAAC,EAAE,OAAO,CAAA;CAAE,GACtD,OAAO,CAAC,SAAS,CAAC,CAgDpB"}
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ /**
3
+ * Start — Orchestrates Dashboard launch + browser open
4
+ *
5
+ * Provides a unified `maxsimcli start` entry point that:
6
+ * 1. Checks for a running dashboard
7
+ * 2. Starts the dashboard if needed
8
+ * 3. Opens the browser
9
+ * 4. Reports status
10
+ */
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.cmdStart = cmdStart;
16
+ const node_child_process_1 = require("node:child_process");
17
+ const core_js_1 = require("./core.js");
18
+ const dashboard_launcher_js_1 = require("./dashboard-launcher.js");
19
+ const types_js_1 = require("./types.js");
20
+ const node_path_1 = __importDefault(require("node:path"));
21
+ // ─── Helpers ─────────────────────────────────────────────────────────────────
22
+ function openBrowser(url) {
23
+ const cmd = process.platform === 'win32'
24
+ ? `start "" "${url}"`
25
+ : process.platform === 'darwin'
26
+ ? `open "${url}"`
27
+ : `xdg-open "${url}"`;
28
+ (0, node_child_process_1.exec)(cmd, (err) => {
29
+ if (err)
30
+ (0, core_js_1.debugLog)('open-browser-failed', err);
31
+ });
32
+ }
33
+ // ─── Command ─────────────────────────────────────────────────────────────────
34
+ async function cmdStart(cwd, options) {
35
+ // 1. Check if dashboard is already running
36
+ const existingPort = await (0, dashboard_launcher_js_1.findRunningDashboard)();
37
+ if (existingPort) {
38
+ const url = `http://localhost:${existingPort}`;
39
+ if (!options.noBrowser)
40
+ openBrowser(url);
41
+ return (0, types_js_1.cmdOk)({ started: true, url, already_running: true, port: existingPort }, url);
42
+ }
43
+ // 2. Resolve the dashboard server
44
+ const serverPath = (0, dashboard_launcher_js_1.resolveDashboardServer)();
45
+ if (!serverPath) {
46
+ return (0, types_js_1.cmdErr)('Dashboard server not found. Run `npx maxsimcli` to install first.');
47
+ }
48
+ const serverDir = node_path_1.default.dirname(serverPath);
49
+ const dashConfig = (0, dashboard_launcher_js_1.readDashboardConfig)(serverPath);
50
+ // 3. Install node-pty if needed
51
+ (0, dashboard_launcher_js_1.ensureNodePty)(serverDir);
52
+ // 4. Spawn the dashboard
53
+ const pid = (0, dashboard_launcher_js_1.spawnDashboard)({
54
+ serverPath,
55
+ projectCwd: dashConfig.projectCwd,
56
+ networkMode: options.networkMode,
57
+ });
58
+ if (!pid) {
59
+ return (0, types_js_1.cmdErr)('Failed to spawn dashboard process.');
60
+ }
61
+ // 5. Wait for dashboard to be ready
62
+ const url = await (0, dashboard_launcher_js_1.waitForDashboard)();
63
+ if (url) {
64
+ if (!options.noBrowser)
65
+ openBrowser(url);
66
+ return (0, types_js_1.cmdOk)({ started: true, url, already_running: false, pid }, url);
67
+ }
68
+ else {
69
+ // Dashboard was spawned but health check didn't respond in time
70
+ const fallbackUrl = `http://localhost:${dashboard_launcher_js_1.DEFAULT_PORT}`;
71
+ return (0, types_js_1.cmdOk)({
72
+ started: true,
73
+ url: fallbackUrl,
74
+ already_running: false,
75
+ pid,
76
+ warning: 'Dashboard spawned but health check timed out. It may still be starting.',
77
+ }, fallbackUrl);
78
+ }
79
+ }
80
+ //# sourceMappingURL=start.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/core/start.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;;;AAuCH,4BAmDC;AAxFD,2DAA0C;AAE1C,uCAEmB;AAEnB,mEAQiC;AAEjC,yCAA2C;AAG3C,0DAA6B;AAE7B,gFAAgF;AAEhF,SAAS,WAAW,CAAC,GAAW;IAC9B,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO;QACtC,CAAC,CAAC,aAAa,GAAG,GAAG;QACrB,CAAC,CAAC,OAAO,CAAC,QAAQ,KAAK,QAAQ;YAC7B,CAAC,CAAC,SAAS,GAAG,GAAG;YACjB,CAAC,CAAC,aAAa,GAAG,GAAG,CAAC;IAE1B,IAAA,yBAAI,EAAC,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE;QAChB,IAAI,GAAG;YAAE,IAAA,kBAAQ,EAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;AACL,CAAC;AAED,gFAAgF;AAEzE,KAAK,UAAU,QAAQ,CAC5B,GAAW,EACX,OAAuD;IAEvD,2CAA2C;IAC3C,MAAM,YAAY,GAAG,MAAM,IAAA,4CAAoB,GAAE,CAAC;IAClD,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,GAAG,GAAG,oBAAoB,YAAY,EAAE,CAAC;QAC/C,IAAI,CAAC,OAAO,CAAC,SAAS;YAAE,WAAW,CAAC,GAAG,CAAC,CAAC;QACzC,OAAO,IAAA,gBAAK,EAAC,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,GAAG,CAAC,CAAC;IACvF,CAAC;IAED,kCAAkC;IAClC,MAAM,UAAU,GAAG,IAAA,8CAAsB,GAAE,CAAC;IAC5C,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,IAAA,iBAAM,EAAC,mEAAmE,CAAC,CAAC;IACrF,CAAC;IAED,MAAM,SAAS,GAAG,mBAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC3C,MAAM,UAAU,GAAG,IAAA,2CAAmB,EAAC,UAAU,CAAC,CAAC;IAEnD,gCAAgC;IAChC,IAAA,qCAAa,EAAC,SAAS,CAAC,CAAC;IAEzB,yBAAyB;IACzB,MAAM,GAAG,GAAG,IAAA,sCAAc,EAAC;QACzB,UAAU;QACV,UAAU,EAAE,UAAU,CAAC,UAAU;QACjC,WAAW,EAAE,OAAO,CAAC,WAAW;KACjC,CAAC,CAAC;IAEH,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,IAAA,iBAAM,EAAC,oCAAoC,CAAC,CAAC;IACtD,CAAC;IAED,oCAAoC;IACpC,MAAM,GAAG,GAAG,MAAM,IAAA,wCAAgB,GAAE,CAAC;IACrC,IAAI,GAAG,EAAE,CAAC;QACR,IAAI,CAAC,OAAO,CAAC,SAAS;YAAE,WAAW,CAAC,GAAG,CAAC,CAAC;QACzC,OAAO,IAAA,gBAAK,EAAC,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,eAAe,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC;IACzE,CAAC;SAAM,CAAC;QACN,gEAAgE;QAChE,MAAM,WAAW,GAAG,oBAAoB,oCAAY,EAAE,CAAC;QACvD,OAAO,IAAA,gBAAK,EAAC;YACX,OAAO,EAAE,IAAI;YACb,GAAG,EAAE,WAAW;YAChB,eAAe,EAAE,KAAK;YACtB,GAAG;YACH,OAAO,EAAE,yEAAyE;SACnF,EAAE,WAAW,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}