@mozole/cli 1.4.3 → 2.0.0-b

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 (249) hide show
  1. package/LICENSE +16 -4
  2. package/README.md +85 -112
  3. package/dist/cli.d.ts +2 -2
  4. package/dist/cli.d.ts.map +1 -1
  5. package/dist/cli.js +204 -184
  6. package/dist/cli.js.map +1 -1
  7. package/dist/commands/adopt.d.ts +5 -10
  8. package/dist/commands/adopt.d.ts.map +1 -1
  9. package/dist/commands/adopt.js +49 -849
  10. package/dist/commands/adopt.js.map +1 -1
  11. package/dist/commands/doctor.d.ts +1 -7
  12. package/dist/commands/doctor.d.ts.map +1 -1
  13. package/dist/commands/doctor.js +69 -377
  14. package/dist/commands/doctor.js.map +1 -1
  15. package/dist/commands/new.d.ts +8 -10
  16. package/dist/commands/new.d.ts.map +1 -1
  17. package/dist/commands/new.js +32 -197
  18. package/dist/commands/new.js.map +1 -1
  19. package/dist/commands/phase.d.ts +11 -0
  20. package/dist/commands/phase.d.ts.map +1 -0
  21. package/dist/commands/phase.js +106 -0
  22. package/dist/commands/phase.js.map +1 -0
  23. package/dist/commands/prototype.d.ts +6 -0
  24. package/dist/commands/prototype.d.ts.map +1 -0
  25. package/dist/commands/prototype.js +28 -0
  26. package/dist/commands/prototype.js.map +1 -0
  27. package/dist/commands/repomap.d.ts +6 -0
  28. package/dist/commands/repomap.d.ts.map +1 -0
  29. package/dist/commands/repomap.js +71 -0
  30. package/dist/commands/repomap.js.map +1 -0
  31. package/dist/commands/test.d.ts +6 -0
  32. package/dist/commands/test.d.ts.map +1 -0
  33. package/dist/commands/test.js +115 -0
  34. package/dist/commands/test.js.map +1 -0
  35. package/dist/commands/ui.d.ts +1 -42
  36. package/dist/commands/ui.d.ts.map +1 -1
  37. package/dist/commands/ui.js +74 -466
  38. package/dist/commands/ui.js.map +1 -1
  39. package/dist/commands/verify.d.ts +12 -7
  40. package/dist/commands/verify.d.ts.map +1 -1
  41. package/dist/commands/verify.js +148 -65
  42. package/dist/commands/verify.js.map +1 -1
  43. package/dist/qa/a11y.d.ts +24 -0
  44. package/dist/qa/a11y.d.ts.map +1 -0
  45. package/dist/qa/a11y.js +124 -0
  46. package/dist/qa/a11y.js.map +1 -0
  47. package/dist/qa/breakpoints.d.ts +16 -0
  48. package/dist/qa/breakpoints.d.ts.map +1 -0
  49. package/dist/qa/breakpoints.js +45 -0
  50. package/dist/qa/breakpoints.js.map +1 -0
  51. package/dist/qa/contract.d.ts +21 -0
  52. package/dist/qa/contract.d.ts.map +1 -0
  53. package/dist/qa/contract.js +116 -0
  54. package/dist/qa/contract.js.map +1 -0
  55. package/dist/qa/index.d.ts +6 -0
  56. package/dist/qa/index.d.ts.map +1 -0
  57. package/dist/qa/index.js +6 -0
  58. package/dist/qa/index.js.map +1 -0
  59. package/dist/qa/probe.d.ts +48 -0
  60. package/dist/qa/probe.d.ts.map +1 -0
  61. package/dist/qa/probe.js +206 -0
  62. package/dist/qa/probe.js.map +1 -0
  63. package/dist/qa/runner.d.ts +27 -33
  64. package/dist/qa/runner.d.ts.map +1 -1
  65. package/dist/qa/runner.js +286 -332
  66. package/dist/qa/runner.js.map +1 -1
  67. package/dist/scaffold/agents.d.ts +5 -0
  68. package/dist/scaffold/agents.d.ts.map +1 -0
  69. package/dist/scaffold/agents.js +84 -0
  70. package/dist/scaffold/agents.js.map +1 -0
  71. package/dist/scaffold/backend.d.ts +6 -8
  72. package/dist/scaffold/backend.d.ts.map +1 -1
  73. package/dist/scaffold/backend.js +318 -199
  74. package/dist/scaffold/backend.js.map +1 -1
  75. package/dist/scaffold/design.d.ts +4 -3
  76. package/dist/scaffold/design.d.ts.map +1 -1
  77. package/dist/scaffold/design.js +38 -47
  78. package/dist/scaffold/design.js.map +1 -1
  79. package/dist/scaffold/flagship.d.ts +8 -0
  80. package/dist/scaffold/flagship.d.ts.map +1 -0
  81. package/dist/scaffold/flagship.js +337 -0
  82. package/dist/scaffold/flagship.js.map +1 -0
  83. package/dist/scaffold/index.d.ts +9 -0
  84. package/dist/scaffold/index.d.ts.map +1 -0
  85. package/dist/scaffold/index.js +48 -0
  86. package/dist/scaffold/index.js.map +1 -0
  87. package/dist/scaffold/phases.d.ts +10 -0
  88. package/dist/scaffold/phases.d.ts.map +1 -0
  89. package/dist/scaffold/phases.js +165 -0
  90. package/dist/scaffold/phases.js.map +1 -0
  91. package/dist/scaffold/repomap.d.ts +6 -0
  92. package/dist/scaffold/repomap.d.ts.map +1 -0
  93. package/dist/scaffold/repomap.js +89 -0
  94. package/dist/scaffold/repomap.js.map +1 -0
  95. package/dist/scaffold/standard.d.ts +13 -0
  96. package/dist/scaffold/standard.d.ts.map +1 -0
  97. package/dist/scaffold/standard.js +371 -0
  98. package/dist/scaffold/standard.js.map +1 -0
  99. package/dist/scaffold/tokens.d.ts +3 -0
  100. package/dist/scaffold/tokens.d.ts.map +1 -0
  101. package/dist/scaffold/tokens.js +126 -0
  102. package/dist/scaffold/tokens.js.map +1 -0
  103. package/dist/server/manager.d.ts +23 -0
  104. package/dist/server/manager.d.ts.map +1 -0
  105. package/dist/server/manager.js +96 -0
  106. package/dist/server/manager.js.map +1 -0
  107. package/dist/utils/ai-trace.d.ts +8 -0
  108. package/dist/utils/ai-trace.d.ts.map +1 -0
  109. package/dist/utils/ai-trace.js +69 -0
  110. package/dist/utils/ai-trace.js.map +1 -0
  111. package/dist/utils/browser.d.ts +10 -0
  112. package/dist/utils/browser.d.ts.map +1 -0
  113. package/dist/utils/browser.js +127 -0
  114. package/dist/utils/browser.js.map +1 -0
  115. package/dist/utils/fs.d.ts +11 -0
  116. package/dist/utils/fs.d.ts.map +1 -0
  117. package/dist/utils/fs.js +166 -0
  118. package/dist/utils/fs.js.map +1 -0
  119. package/dist/utils/git.d.ts +9 -0
  120. package/dist/utils/git.d.ts.map +1 -0
  121. package/dist/utils/git.js +69 -0
  122. package/dist/utils/git.js.map +1 -0
  123. package/dist/utils/process.d.ts +21 -0
  124. package/dist/utils/process.d.ts.map +1 -0
  125. package/dist/utils/process.js +120 -0
  126. package/dist/utils/process.js.map +1 -0
  127. package/dist/version.d.ts +21 -36
  128. package/dist/version.d.ts.map +1 -1
  129. package/dist/version.js +21 -44
  130. package/dist/version.js.map +1 -1
  131. package/package.json +19 -38
  132. package/CHANGELOG.md +0 -38
  133. package/dist/commands/cce.d.ts +0 -7
  134. package/dist/commands/cce.d.ts.map +0 -1
  135. package/dist/commands/cce.js +0 -37
  136. package/dist/commands/cce.js.map +0 -1
  137. package/dist/commands/logs.d.ts +0 -3
  138. package/dist/commands/logs.d.ts.map +0 -1
  139. package/dist/commands/logs.js +0 -40
  140. package/dist/commands/logs.js.map +0 -1
  141. package/dist/commands/qa.d.ts +0 -12
  142. package/dist/commands/qa.d.ts.map +0 -1
  143. package/dist/commands/qa.js +0 -143
  144. package/dist/commands/qa.js.map +0 -1
  145. package/dist/commands/stats.d.ts +0 -37
  146. package/dist/commands/stats.d.ts.map +0 -1
  147. package/dist/commands/stats.js +0 -169
  148. package/dist/commands/stats.js.map +0 -1
  149. package/dist/commands/template.d.ts +0 -8
  150. package/dist/commands/template.d.ts.map +0 -1
  151. package/dist/commands/template.js +0 -392
  152. package/dist/commands/template.js.map +0 -1
  153. package/dist/config/project.d.ts +0 -54
  154. package/dist/config/project.d.ts.map +0 -1
  155. package/dist/config/project.js +0 -100
  156. package/dist/config/project.js.map +0 -1
  157. package/dist/context/cce.d.ts +0 -39
  158. package/dist/context/cce.d.ts.map +0 -1
  159. package/dist/context/cce.js +0 -455
  160. package/dist/context/cce.js.map +0 -1
  161. package/dist/governor/fingerprint.d.ts +0 -7
  162. package/dist/governor/fingerprint.d.ts.map +0 -1
  163. package/dist/governor/fingerprint.js +0 -120
  164. package/dist/governor/fingerprint.js.map +0 -1
  165. package/dist/governor/hook.d.ts +0 -13
  166. package/dist/governor/hook.d.ts.map +0 -1
  167. package/dist/governor/hook.js +0 -389
  168. package/dist/governor/hook.js.map +0 -1
  169. package/dist/governor/state.d.ts +0 -45
  170. package/dist/governor/state.d.ts.map +0 -1
  171. package/dist/governor/state.js +0 -60
  172. package/dist/governor/state.js.map +0 -1
  173. package/dist/integrations/antigravity.d.ts +0 -20
  174. package/dist/integrations/antigravity.d.ts.map +0 -1
  175. package/dist/integrations/antigravity.js +0 -153
  176. package/dist/integrations/antigravity.js.map +0 -1
  177. package/dist/output-safety.d.ts +0 -3
  178. package/dist/output-safety.d.ts.map +0 -1
  179. package/dist/output-safety.js +0 -44
  180. package/dist/output-safety.js.map +0 -1
  181. package/dist/output.d.ts +0 -5
  182. package/dist/output.d.ts.map +0 -1
  183. package/dist/output.js +0 -2
  184. package/dist/output.js.map +0 -1
  185. package/dist/platform/executable.d.ts +0 -11
  186. package/dist/platform/executable.d.ts.map +0 -1
  187. package/dist/platform/executable.js +0 -69
  188. package/dist/platform/executable.js.map +0 -1
  189. package/dist/platform/process.d.ts +0 -27
  190. package/dist/platform/process.d.ts.map +0 -1
  191. package/dist/platform/process.js +0 -189
  192. package/dist/platform/process.js.map +0 -1
  193. package/dist/progress.d.ts +0 -44
  194. package/dist/progress.d.ts.map +0 -1
  195. package/dist/progress.js +0 -123
  196. package/dist/progress.js.map +0 -1
  197. package/dist/qa/artifacts.d.ts +0 -3
  198. package/dist/qa/artifacts.d.ts.map +0 -1
  199. package/dist/qa/artifacts.js +0 -15
  200. package/dist/qa/artifacts.js.map +0 -1
  201. package/dist/qa/diff.d.ts +0 -10
  202. package/dist/qa/diff.d.ts.map +0 -1
  203. package/dist/qa/diff.js +0 -90
  204. package/dist/qa/diff.js.map +0 -1
  205. package/dist/qa/server.d.ts +0 -10
  206. package/dist/qa/server.d.ts.map +0 -1
  207. package/dist/qa/server.js +0 -127
  208. package/dist/qa/server.js.map +0 -1
  209. package/dist/scaffold/adoption.d.ts +0 -17
  210. package/dist/scaffold/adoption.d.ts.map +0 -1
  211. package/dist/scaffold/adoption.js +0 -279
  212. package/dist/scaffold/adoption.js.map +0 -1
  213. package/dist/scaffold/legacy.d.ts +0 -4
  214. package/dist/scaffold/legacy.d.ts.map +0 -1
  215. package/dist/scaffold/legacy.js +0 -139
  216. package/dist/scaffold/legacy.js.map +0 -1
  217. package/dist/scaffold/routes.d.ts +0 -3
  218. package/dist/scaffold/routes.d.ts.map +0 -1
  219. package/dist/scaffold/routes.js +0 -37
  220. package/dist/scaffold/routes.js.map +0 -1
  221. package/dist/scaffold/standalone.d.ts +0 -7
  222. package/dist/scaffold/standalone.d.ts.map +0 -1
  223. package/dist/scaffold/standalone.js +0 -374
  224. package/dist/scaffold/standalone.js.map +0 -1
  225. package/dist/scaffold/templates.d.ts +0 -9
  226. package/dist/scaffold/templates.d.ts.map +0 -1
  227. package/dist/scaffold/templates.js +0 -317
  228. package/dist/scaffold/templates.js.map +0 -1
  229. package/dist/scaffold/write.d.ts +0 -2
  230. package/dist/scaffold/write.d.ts.map +0 -1
  231. package/dist/scaffold/write.js +0 -38
  232. package/dist/scaffold/write.js.map +0 -1
  233. package/dist/telemetry/store.d.ts +0 -33
  234. package/dist/telemetry/store.d.ts.map +0 -1
  235. package/dist/telemetry/store.js +0 -75
  236. package/dist/telemetry/store.js.map +0 -1
  237. package/dist/template/servers.d.ts +0 -21
  238. package/dist/template/servers.d.ts.map +0 -1
  239. package/dist/template/servers.js +0 -193
  240. package/dist/template/servers.js.map +0 -1
  241. package/dist/template/workspace.d.ts +0 -23
  242. package/dist/template/workspace.d.ts.map +0 -1
  243. package/dist/template/workspace.js +0 -152
  244. package/dist/template/workspace.js.map +0 -1
  245. package/dist/verify/runner.d.ts +0 -16
  246. package/dist/verify/runner.d.ts.map +0 -1
  247. package/dist/verify/runner.js +0 -112
  248. package/dist/verify/runner.js.map +0 -1
  249. package/docs/agent-audit.md +0 -24
@@ -1,481 +1,89 @@
1
+ import fs from "node:fs/promises";
1
2
  import path from "node:path";
2
- import { stdin, stdout } from "node:process";
3
- import { createInterface } from "node:readline/promises";
4
- import { sanitizeTerminalText } from "../output-safety.js";
5
- import { renderProgressBar } from "../progress.js";
6
- import { TemplateServerManager, } from "../template/servers.js";
7
- import { findTemplateRoot } from "../template/workspace.js";
3
+ import pc from "picocolors";
4
+ import prompts from "prompts";
5
+ import { exists, findProjectRoot, findPrototypeRoot } from "../utils/fs.js";
8
6
  import { CLI_VERSION } from "../version.js";
9
- import { adoptCommand } from "./adopt.js";
10
- import { cceInstallCommand } from "./cce.js";
11
7
  import { doctorCommand } from "./doctor.js";
12
- import { newCommand } from "./new.js";
13
- import { qaCommand } from "./qa.js";
14
- import { statsCommand } from "./stats.js";
15
- import { templateAdoptCommand } from "./template.js";
8
+ import { getProjectPhaseStatus, phaseCommand } from "./phase.js";
16
9
  import { verifyCommand } from "./verify.js";
17
- const actions = [
18
- {
19
- label: "Doctor",
20
- detail: "Inspect project, toolchain & AI runtime health",
21
- key: "1",
22
- kind: "command",
23
- run: (cwd, output, opts) => doctorCommand(cwd, output, opts),
24
- },
25
- {
26
- label: "Verify",
27
- detail: "Run strict lint, typecheck, tests & build",
28
- key: "2",
29
- kind: "command",
30
- run: (cwd, output, opts) => verifyCommand(cwd, output, opts),
31
- },
32
- {
33
- label: "QA",
34
- detail: "Run deterministic, screenshot-free browser probes",
35
- key: "3",
36
- kind: "command",
37
- run: (cwd, output, opts) => qaCommand(cwd, {
38
- interactive: false,
39
- visual: false,
40
- onProgress: opts?.onProgress,
41
- }, output),
42
- },
43
- {
44
- label: "Stats",
45
- detail: "Inspect token savings & verification cache telemetry",
46
- key: "4",
47
- kind: "command",
48
- run: (cwd, output, opts) => statsCommand(cwd, output, opts),
49
- },
50
- {
51
- label: "Install CCE",
52
- detail: "Provision persistent uv & code-context-engine runtime",
53
- key: "5",
54
- kind: "install",
55
- },
56
- {
57
- label: "New project",
58
- detail: "Scaffold a static-first production-ready application",
59
- key: "6",
60
- kind: "create",
61
- },
62
- {
63
- label: "Adopt project",
64
- detail: "Integrate Mozole toolchain into an existing app",
65
- key: "7",
66
- kind: "adopt",
67
- },
68
- {
69
- label: "Servers",
70
- detail: "Start & stop template project npm servers",
71
- key: "8",
72
- kind: "servers",
73
- },
74
- {
75
- label: "Exit",
76
- detail: "Return to your shell",
77
- key: "9",
78
- kind: "exit",
79
- },
80
- ];
81
- const ansi = {
82
- alternateEnter: "\u001B[?1049h",
83
- alternateExit: "\u001B[?1049l",
84
- clear: "\u001B[2J\u001B[H",
85
- cursorHide: "\u001B[?25l",
86
- cursorShow: "\u001B[?25h",
87
- reset: "\u001B[0m",
88
- };
89
- const ansiSequence = new RegExp(`${String.fromCharCode(27)}\\[[0-?]*[ -/]*[@-~]`, "g");
90
- function paint(value, code, color) {
91
- return color ? `\u001B[${code}m${value}${ansi.reset}` : value;
92
- }
93
- function clamp(value, width) {
94
- if (width < 2)
95
- return "";
96
- const plain = value.replace(ansiSequence, "");
97
- return plain.length <= width
98
- ? `${value}${" ".repeat(width - plain.length)}`
99
- : `${plain.slice(0, Math.max(0, width - 1))}…`;
100
- }
101
- function box(lines, width, color, sectionTitle) {
102
- const inner = Math.max(10, width - 2);
103
- let topBorder = "─".repeat(inner);
104
- if (sectionTitle) {
105
- const titleText = ` ${sectionTitle} `;
106
- if (titleText.length < inner - 4) {
107
- topBorder = `──${titleText}${"─".repeat(inner - 2 - titleText.length)}`;
108
- }
109
- }
110
- const top = `${paint("╭", 90, color)}${paint(topBorder, 90, color)}${paint("╮", 90, color)}`;
111
- const bottom = `${paint("╰", 90, color)}${paint("─".repeat(inner), 90, color)}${paint("╯", 90, color)}`;
112
- return [
113
- top,
114
- ...lines.map((line) => `${paint("│", 90, color)} ${clamp(line, inner - 2)} ${paint("│", 90, color)}`),
115
- bottom,
116
- ];
117
- }
118
- export function uiMenuText() {
119
- return actions.map((action) => `${action.key} ${action.label}`).join("\n");
120
- }
121
- export function uiDashboardFrame(state, dimensions, color = true) {
122
- const width = Math.max(54, Math.min(100, dimensions.columns - 2));
123
- const height = Math.max(20, dimensions.rows);
124
- const title = paint("Mozole-cli", 96, color);
125
- const version = paint(`v${CLI_VERSION}`, 90, color);
126
- const subtitle = paint("COMMAND DECK", 95, color);
127
- const copyright = paint("© MozoleStudio", 90, color);
128
- const projectLabel = paint("PROJECT", 36, color);
129
- const projectName = paint(sanitizeTerminalText(path.basename(state.cwd) || state.cwd), 97, color);
130
- const header = [
131
- ` ${paint("◆", 96, color)} ${title} ${version} ${paint("│", 90, color)} ${subtitle} ${paint("│", 90, color)} ${copyright}`,
132
- ` ${projectLabel} ${projectName}`,
133
- ];
134
- const actionLines = actions.map((action, index) => {
135
- const active = state.selected === index;
136
- const marker = active ? paint("❯", 96, color) : paint("·", 90, color);
137
- const key = paint(`[${action.key}]`, active ? 97 : 36, color);
138
- const label = paint(action.label.padEnd(14), active ? 97 : 37, color);
139
- const detail = paint(action.detail, active ? 96 : 90, color);
140
- return `${marker} ${key} ${label} ${detail}`;
141
- });
142
- let statusBadge = paint("● READY Select an operation", 92, color);
143
- let progressLine;
144
- if (state.busy) {
145
- statusBadge = paint(`⟳ RUNNING ${state.busy}`, 93, color);
146
- if (state.progress) {
147
- const bar = renderProgressBar(state.progress.current / state.progress.total, 14);
148
- const stepInfo = paint(`[${state.progress.current}/${state.progress.total}]`, 97, color);
149
- const msg = paint(sanitizeTerminalText(state.progress.message), 90, color);
150
- progressLine = ` ${paint(bar, 36, color)} ${stepInfo} ${msg}`;
151
- }
152
- }
153
- else if (state.lastResult) {
154
- if (state.lastResult.includes("COMPLETE")) {
155
- statusBadge = paint(`✓ ${state.lastResult}`, 92, color);
156
- }
157
- else if (state.lastResult.includes("FAILED")) {
158
- statusBadge = paint(`✗ ${state.lastResult}`, 91, color);
159
- }
160
- else {
161
- statusBadge = paint(state.lastResult, 97, color);
162
- }
163
- }
164
- const activity = state.log.length
165
- ? state.log.slice(-4).map((l) => paint(` ${l}`, 90, color))
166
- : [paint(" No operation has run in this session.", 90, color)];
167
- const frame = [
168
- "",
169
- ...header,
170
- "",
171
- ...box(actionLines, width, color, "OPERATIONS"),
172
- "",
173
- ...box([
174
- ` ${statusBadge}`,
175
- ...(progressLine ? ["", progressLine] : []),
176
- "",
177
- ...activity,
178
- ], width, color, "STATUS & ACTIVITY"),
179
- "",
180
- paint(" ↑↓ / j k navigate enter run 1–9 jump r redraw q exit", 90, color),
181
- paint(" Normal QA is deterministic and screenshot-free. Visual QA remains explicit. · © MozoleStudio", 90, color),
182
- ];
183
- const padding = Math.max(0, height - frame.length - 1);
184
- return `${ansi.clear}${frame.join("\n")}${"\n".repeat(padding)}`;
185
- }
186
- export function uiServerManagerFrame(root, servers, selected, dimensions, color = true, message = "") {
187
- const width = Math.max(54, Math.min(100, dimensions.columns - 2));
188
- const height = Math.max(20, dimensions.rows);
189
- const rows = servers.length
190
- ? servers.map((server, index) => {
191
- const marker = selected === index ? paint("❯", 96, color) : paint("·", 90, color);
192
- const statusCode = server.status === "running"
193
- ? 92
194
- : server.status === "failed"
195
- ? 91
196
- : server.status === "starting"
197
- ? 93
198
- : 90;
199
- const status = paint(server.status.toUpperCase().padEnd(8), statusCode, color);
200
- const address = server.status === "running"
201
- ? `http://127.0.0.1:${server.port}`
202
- : `preferred :${server.preferredPort}`;
203
- return `${marker} ${status} ${sanitizeTerminalText(server.relativePath).padEnd(22)} ${address}`;
204
- })
205
- : [paint(" No projects found. Run `mozole new <name>` here.", 90, color)];
206
- const frame = [
207
- "",
208
- ` ${paint("◆", 96, color)} ${paint("NPM SERVER MANAGER", 96, color)}`,
209
- ` ${paint("TEMPLATE", 36, color)} ${paint(sanitizeTerminalText(path.basename(root)), 97, color)}`,
210
- "",
211
- ...box(rows, width, color, "PROJECTS"),
212
- "",
213
- ...box([
214
- ` ${sanitizeTerminalText(message || "Select a project and press Enter to start or stop it.")}`,
215
- ], width, color, "STATUS"),
216
- "",
217
- paint(" ↑↓ / j k navigate enter / s start-stop a start all x stop all q / esc back", 90, color),
218
- paint(" Servers live for this UI session. Logs: .mozole/logs/servers/", 90, color),
219
- ];
220
- return `${ansi.clear}${frame.join("\n")}${"\n".repeat(Math.max(0, height - frame.length - 1))}`;
221
- }
222
- function hasColor(output) {
223
- return (Boolean(output.isTTY) &&
224
- !process.env.NO_COLOR &&
225
- process.env.TERM !== "dumb");
226
- }
227
- function prompt(input, output, question) {
228
- const readline = createInterface({ input, output });
229
- return readline
230
- .question(question)
231
- .then((answer) => answer.trim())
232
- .catch(() => undefined)
233
- .finally(() => readline.close());
234
- }
235
- function waitForKey(input) {
236
- return new Promise((resolve) => {
237
- input.once("data", (chunk) => resolve(String(chunk)));
238
- });
239
- }
240
- function statusLine(message) {
241
- return sanitizeTerminalText(String(message))
242
- .split(/\r?\n/)
243
- .map((line) => line.trim())
244
- .filter(Boolean)
245
- .slice(-5);
246
- }
247
- export async function uiCommand(cwd, output = console, streams = {}) {
248
- const input = streams.input ?? stdin;
249
- const terminalOutput = streams.output ?? stdout;
250
- const interactive = streams.interactive ?? Boolean(input.isTTY && terminalOutput.isTTY);
251
- if (!interactive || !input.setRawMode) {
252
- output.error("UI requires an interactive terminal with ANSI support. Use `mozole doctor`, `mozole verify`, `mozole qa`, or `mozole stats` in CI.");
253
- return 2;
254
- }
255
- const state = { cwd, selected: 0, log: [] };
256
- const directOutput = {
257
- log: (message, ...optional) => output.log(sanitizeTerminalText(String(message ?? "")), ...optional.map((value) => sanitizeTerminalText(String(value ?? "")))),
258
- error: (message, ...optional) => output.error(sanitizeTerminalText(String(message ?? "")), ...optional.map((value) => sanitizeTerminalText(String(value ?? "")))),
259
- };
260
- const color = hasColor(terminalOutput);
261
- let entered = false;
262
- let serverManager;
263
- let serverViewRender;
264
- let requestedExitCode;
265
- const render = () => terminalOutput.write(uiDashboardFrame(state, {
266
- columns: terminalOutput.columns ?? 100,
267
- rows: terminalOutput.rows ?? 32,
268
- }, color));
269
- const enter = () => {
270
- if (entered)
271
- return;
272
- terminalOutput.write(`${ansi.alternateEnter}${ansi.cursorHide}`);
273
- input.setRawMode?.(true);
274
- input.resume?.();
275
- entered = true;
276
- render();
277
- };
278
- const leave = () => {
279
- if (!entered)
280
- return;
281
- input.setRawMode?.(false);
282
- input.pause?.();
283
- terminalOutput.write(`${ansi.cursorShow}${ansi.alternateExit}`);
284
- entered = false;
285
- };
286
- const resize = () => (serverViewRender ?? render)();
287
- terminalOutput.on("resize", resize);
288
- const abort = () => leave();
289
- process.once("SIGINT", abort);
290
- process.once("SIGTERM", abort);
291
- const dashboardOutput = {
292
- log: (message) => {
293
- state.log = statusLine(message);
294
- },
295
- error: (message) => {
296
- state.log = statusLine(message);
297
- },
298
- };
299
- async function runExternal(action) {
300
- leave();
10
+ export async function uiCommand() {
11
+ const cwd = process.cwd();
12
+ console.clear();
13
+ console.log(pc.bold(pc.cyan(`\n⚡ MOZOLE STUDIO COCKPIT (v${CLI_VERSION})`)));
14
+ console.log(pc.dim("Mozole Studio Development & Verification Cockpit\n"));
15
+ const protoRoot = await findPrototypeRoot(cwd);
16
+ let projectRoot = await findProjectRoot(cwd);
17
+ if (projectRoot === protoRoot)
18
+ projectRoot = null;
19
+ let activeProject = projectRoot ? path.basename(projectRoot) : null;
20
+ let currentPhase = "00";
21
+ if (projectRoot) {
301
22
  try {
302
- if (action.kind === "install") {
303
- const code = await cceInstallCommand(cwd, directOutput);
304
- state.lastResult = `${action.label} ${code === 0 ? "COMPLETE" : "FAILED"}`;
305
- }
306
- else {
307
- const question = action.kind === "create"
308
- ? "New project name: "
309
- : "Project path to adopt: ";
310
- const value = await prompt(input, terminalOutput, question);
311
- if (!value) {
312
- state.lastResult = `${action.label} CANCELLED`;
313
- return;
314
- }
315
- const code = action.kind === "create"
316
- ? await newCommand(value, cwd, directOutput)
317
- : (await findTemplateRoot(cwd))
318
- ? await templateAdoptCommand(value, cwd, directOutput)
319
- : await adoptCommand(value, cwd, directOutput);
320
- state.lastResult = `${action.label} ${code === 0 ? "COMPLETE" : "FAILED"}`;
321
- }
322
- await prompt(input, terminalOutput, "\nPress Enter to return to Mozole…");
323
- }
324
- finally {
325
- enter();
23
+ const status = await getProjectPhaseStatus(projectRoot);
24
+ currentPhase = status.currentPhase;
326
25
  }
26
+ catch { }
327
27
  }
328
- async function runServerManager() {
329
- const root = await findTemplateRoot(cwd);
330
- if (!root) {
331
- state.lastResult = "Servers FAILED: no template workspace";
332
- state.log = ["Run `mozole template init <folder>` first."];
333
- render();
334
- return;
335
- }
336
- serverManager ??= new TemplateServerManager(root);
337
- let servers = await serverManager.refresh();
338
- let selected = 0;
339
- let message = "";
340
- const draw = () => terminalOutput.write(uiServerManagerFrame(root, servers, selected, {
341
- columns: terminalOutput.columns ?? 100,
342
- rows: terminalOutput.rows ?? 32,
343
- }, color, message));
344
- serverViewRender = draw;
345
- draw();
346
- while (true) {
347
- const key = await waitForKey(input);
348
- if (key === "\u0003") {
349
- requestedExitCode = 130;
350
- serverViewRender = undefined;
351
- return;
352
- }
353
- if (key === "q" || key === "Q" || key === "\u001B") {
354
- state.lastResult = `${servers.filter((item) => item.status === "running").length} SERVER(S) RUNNING`;
355
- serverViewRender = undefined;
356
- render();
357
- return;
358
- }
359
- if (key === "\u001B[A" || key === "k") {
360
- if (servers.length)
361
- selected = (selected + servers.length - 1) % servers.length;
362
- draw();
363
- continue;
364
- }
365
- if (key === "\u001B[B" || key === "j") {
366
- if (servers.length)
367
- selected = (selected + 1) % servers.length;
368
- draw();
369
- continue;
370
- }
371
- if (key === "x" || key === "X") {
372
- message = "Stopping all project servers…";
373
- draw();
374
- await serverManager.stopAll();
375
- servers = serverManager.list();
376
- message = "All project servers stopped.";
377
- draw();
378
- continue;
379
- }
380
- if (key === "a" || key === "A") {
381
- for (const server of servers) {
382
- if (server.status === "running")
383
- continue;
384
- message = `Starting ${server.relativePath}…`;
385
- draw();
386
- await serverManager.start(server.relativePath);
387
- servers = serverManager.list();
28
+ else if (protoRoot) {
29
+ // List available projects in prototype root
30
+ const projectsDir = path.join(protoRoot, "projects");
31
+ if (await exists(projectsDir)) {
32
+ const entries = await fs.readdir(projectsDir, { withFileTypes: true });
33
+ const projects = entries.filter((e) => e.isDirectory()).map((e) => e.name);
34
+ if (projects.length > 0) {
35
+ const choice = await prompts({
36
+ type: "select",
37
+ name: "project",
38
+ message: "Select an active client project:",
39
+ choices: projects.map((p) => ({ title: p, value: p })),
40
+ });
41
+ if (choice.project) {
42
+ activeProject = choice.project;
43
+ const chosenRoot = path.join(projectsDir, choice.project);
44
+ projectRoot = chosenRoot;
45
+ try {
46
+ const status = await getProjectPhaseStatus(chosenRoot);
47
+ currentPhase = status.currentPhase;
48
+ }
49
+ catch { }
388
50
  }
389
- message = "All available project servers started.";
390
- draw();
391
- continue;
392
51
  }
393
- if (key !== "s" && key !== "S" && key !== "\r" && key !== "\n")
394
- continue;
395
- const server = servers[selected];
396
- if (!server)
397
- continue;
398
- if (server.status === "running" || server.status === "starting") {
399
- message = `Stopping ${server.relativePath}…`;
400
- draw();
401
- await serverManager.stop(server.relativePath);
402
- }
403
- else {
404
- message = `Starting ${server.relativePath}…`;
405
- draw();
406
- await serverManager.start(server.relativePath);
407
- }
408
- servers = serverManager.list();
409
- const current = servers.find((candidate) => candidate.relativePath === server.relativePath);
410
- message = current?.error
411
- ? `${server.relativePath}: ${current.error}`
412
- : `${server.relativePath}: ${current?.status ?? "stopped"}`;
413
- draw();
414
52
  }
415
53
  }
416
- try {
417
- enter();
418
- while (true) {
419
- const key = await waitForKey(input);
420
- if (key === "\u0003")
421
- return 130;
422
- if (key === "q" || key === "Q" || key === "\u001B")
423
- return 0;
424
- if (key === "\u001B[A" || key === "k") {
425
- state.selected = (state.selected + actions.length - 1) % actions.length;
426
- render();
427
- continue;
428
- }
429
- if (key === "\u001B[B" || key === "j") {
430
- state.selected = (state.selected + 1) % actions.length;
431
- render();
432
- continue;
433
- }
434
- if (key === "r") {
435
- render();
436
- continue;
437
- }
438
- const direct = actions.findIndex((action) => action.key === key);
439
- if (direct >= 0)
440
- state.selected = direct;
441
- if (key !== "\r" && key !== "\n" && direct < 0)
442
- continue;
443
- const action = actions[state.selected];
444
- if (!action)
445
- continue;
446
- if (action.kind === "exit")
447
- return 0;
448
- if (action.kind === "servers") {
449
- await runServerManager();
450
- if (requestedExitCode !== undefined)
451
- return requestedExitCode;
452
- continue;
453
- }
454
- if (action.kind !== "command") {
455
- await runExternal(action);
456
- continue;
457
- }
458
- state.busy = action.label;
459
- delete state.progress;
460
- render();
461
- const code = await action.run?.(cwd, dashboardOutput, {
462
- onProgress: (prog) => {
463
- state.progress = prog;
464
- render();
465
- },
466
- });
467
- delete state.busy;
468
- delete state.progress;
469
- state.lastResult = `${action.label} ${code === 0 ? "COMPLETE" : "FAILED"}`;
470
- render();
471
- }
54
+ if (activeProject) {
55
+ console.log(`Active Project: ${pc.bold(pc.green(activeProject))} | Current Phase: ${pc.bold(pc.yellow(`Phase ${currentPhase}`))}\n`);
56
+ }
57
+ const { action } = await prompts({
58
+ type: "select",
59
+ name: "action",
60
+ message: "Select an operation:",
61
+ choices: [
62
+ { title: "📋 View Phase Status & Checklist", value: "phase-status" },
63
+ { title: "🚀 Advance to Next Phase", value: "phase-next" },
64
+ { title: "🛡️ Run Full Verification (verify)", value: "verify" },
65
+ { title: "🩺 Run System Doctor Diagnostics", value: "doctor" },
66
+ { title: "🚪 Exit", value: "exit" },
67
+ ],
68
+ });
69
+ if (!action || action === "exit") {
70
+ console.log(pc.gray("\nGoodbye.\n"));
71
+ return;
472
72
  }
473
- finally {
474
- await serverManager?.stopAll();
475
- leave();
476
- terminalOutput.off("resize", resize);
477
- process.removeListener("SIGINT", abort);
478
- process.removeListener("SIGTERM", abort);
73
+ switch (action) {
74
+ case "phase-status":
75
+ await phaseCommand({ action: "status", cwd: projectRoot ?? cwd });
76
+ break;
77
+ case "phase-next":
78
+ await phaseCommand({ action: "next", cwd: projectRoot ?? cwd });
79
+ break;
80
+ case "verify":
81
+ if (!(await verifyCommand({ cwd: projectRoot ?? cwd })))
82
+ process.exitCode = 1;
83
+ break;
84
+ case "doctor":
85
+ await doctorCommand();
86
+ break;
479
87
  }
480
88
  }
481
89
  //# sourceMappingURL=ui.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ui.js","sourceRoot":"","sources":["../../src/commands/ui.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ui.js","sourceRoot":"","sources":["../../src/commands/ui.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,13 @@
1
- import type { Output } from "../output.js";
2
- import { type ProgressState } from "../progress.js";
3
- export declare function verifyCommand(cwd: string, output?: Output, options?: {
4
- force?: boolean | undefined;
5
- verbose?: boolean | undefined;
6
- onProgress?: ((state: ProgressState) => void) | undefined;
7
- }): Promise<number>;
1
+ export interface VerifyOptions {
2
+ cwd?: string;
3
+ skipBuild?: boolean;
4
+ withProbe?: boolean;
5
+ }
6
+ export interface VerificationStage {
7
+ name: string;
8
+ success: boolean;
9
+ message?: string;
10
+ evidence?: string;
11
+ }
12
+ export declare function verifyCommand(options?: VerifyOptions): Promise<boolean>;
8
13
  //# sourceMappingURL=verify.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../src/commands/verify.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,KAAK,aAAa,EAAgB,MAAM,gBAAgB,CAAC;AAIlE,wBAAsB,aAAa,CACjC,GAAG,EAAE,MAAM,EACX,MAAM,GAAE,MAAgB,EACxB,OAAO,GAAE;IACP,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC5B,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,UAAU,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;CACtD,GACL,OAAO,CAAC,MAAM,CAAC,CA2EjB"}
1
+ {"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../src/commands/verify.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAsB,aAAa,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,OAAO,CAAC,CAuKjF"}