@mrpatronz/nexusflow 0.2.13 → 0.2.17

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 (186) hide show
  1. package/.github/dependabot.yml +52 -52
  2. package/.github/workflows/dependabot-merge.yml +53 -0
  3. package/.github/workflows/release.yml +112 -100
  4. package/.vscode/launch.json +17 -17
  5. package/.vscode/tasks.json +17 -17
  6. package/GETTING_STARTED.md +114 -109
  7. package/README.md +336 -311
  8. package/desktop/build-installer.js +228 -0
  9. package/desktop/build.js +118 -0
  10. package/desktop/installer/nexusflow.iss +35 -0
  11. package/desktop/neutralino.config.json +39 -0
  12. package/desktop/package-lock.json +1060 -0
  13. package/desktop/package.json +14 -0
  14. package/dist/commands/desktop.d.ts +12 -0
  15. package/dist/commands/desktop.d.ts.map +1 -0
  16. package/dist/commands/desktop.js +119 -0
  17. package/dist/commands/desktop.js.map +1 -0
  18. package/dist/commands/sync.d.ts.map +1 -1
  19. package/dist/commands/sync.js +1 -3
  20. package/dist/commands/sync.js.map +1 -1
  21. package/dist/commands/tui.d.ts +8 -0
  22. package/dist/commands/tui.d.ts.map +1 -0
  23. package/dist/commands/tui.js +386 -0
  24. package/dist/commands/tui.js.map +1 -0
  25. package/dist/commands/ui.d.ts +3 -1
  26. package/dist/commands/ui.d.ts.map +1 -1
  27. package/dist/commands/ui.js +76 -19
  28. package/dist/commands/ui.js.map +1 -1
  29. package/dist/generators/base.d.ts.map +1 -1
  30. package/dist/generators/base.js +78 -66
  31. package/dist/generators/base.js.map +1 -1
  32. package/dist/generators/codex.js +11 -11
  33. package/dist/generators/copilot.js +17 -17
  34. package/dist/generators/cursor.js +5 -5
  35. package/dist/generators/index.js +50 -50
  36. package/dist/generators/map-generator.js +14 -14
  37. package/dist/generators/skills-generator.js +28 -28
  38. package/dist/gui/app_logo.png +0 -0
  39. package/dist/gui/assets/index-Ct3qq-X4.js +25 -0
  40. package/dist/gui/assets/index-P_ZrgHXg.css +1 -0
  41. package/dist/gui/icons.svg +24 -24
  42. package/dist/gui/index.html +18 -18
  43. package/dist/index.js +43 -0
  44. package/dist/index.js.map +1 -1
  45. package/dist/server.d.ts.map +1 -1
  46. package/dist/server.js +182 -1
  47. package/dist/server.js.map +1 -1
  48. package/dist/server.test.js +78 -0
  49. package/dist/server.test.js.map +1 -1
  50. package/dist/types.d.ts +4 -0
  51. package/dist/types.d.ts.map +1 -1
  52. package/dist/utils/git.d.ts +16 -0
  53. package/dist/utils/git.d.ts.map +1 -1
  54. package/dist/utils/git.js +52 -0
  55. package/dist/utils/git.js.map +1 -1
  56. package/dist/utils/multi-git.d.ts +2 -0
  57. package/dist/utils/multi-git.d.ts.map +1 -1
  58. package/dist/utils/multi-git.js +5 -2
  59. package/dist/utils/multi-git.js.map +1 -1
  60. package/dist/utils/update-check.d.ts +3 -1
  61. package/dist/utils/update-check.d.ts.map +1 -1
  62. package/dist/utils/update-check.js +23 -6
  63. package/dist/utils/update-check.js.map +1 -1
  64. package/dist/utils/workflows.d.ts +11 -0
  65. package/dist/utils/workflows.d.ts.map +1 -0
  66. package/dist/utils/workflows.js +156 -0
  67. package/dist/utils/workflows.js.map +1 -0
  68. package/dist/utils/workflows.test.d.ts +2 -0
  69. package/dist/utils/workflows.test.d.ts.map +1 -0
  70. package/dist/utils/workflows.test.js +86 -0
  71. package/dist/utils/workflows.test.js.map +1 -0
  72. package/extension/media/icon.svg +1 -0
  73. package/extension/package-lock.json +2673 -2811
  74. package/extension/package.json +108 -70
  75. package/extension/src/extension.ts +631 -204
  76. package/extension/tsconfig.json +21 -19
  77. package/gui/README.md +73 -73
  78. package/gui/e2e/wizard.spec.ts +346 -327
  79. package/gui/eslint.config.js +26 -26
  80. package/gui/index.html +17 -17
  81. package/gui/package-lock.json +3079 -3118
  82. package/gui/package.json +36 -36
  83. package/gui/playwright.config.ts +41 -41
  84. package/gui/public/app_logo.png +0 -0
  85. package/gui/public/icons.svg +24 -24
  86. package/gui/src/App.css +1 -1
  87. package/gui/src/App.tsx +3407 -2722
  88. package/gui/src/assets/vite.svg +1 -1
  89. package/gui/src/features/changes/ChangesViewer.tsx +388 -388
  90. package/gui/src/features/knowledge/KnowledgeBase.tsx +84 -84
  91. package/gui/src/features/onboarding/OnboardingWizard.tsx +230 -230
  92. package/gui/src/features/plan/ImplementationPlan.tsx +32 -32
  93. package/gui/src/features/services/ServiceConsole.tsx +250 -250
  94. package/gui/src/features/sessions/SessionHistory.tsx +195 -195
  95. package/gui/src/features/workspace/WorkspaceList.tsx +666 -666
  96. package/gui/src/index.css +152 -110
  97. package/gui/src/main.tsx +94 -10
  98. package/gui/src/types.ts +62 -62
  99. package/gui/tsconfig.app.json +25 -25
  100. package/gui/tsconfig.json +7 -7
  101. package/gui/tsconfig.node.json +24 -24
  102. package/gui/vite.config.ts +12 -12
  103. package/package.json +56 -56
  104. package/resources/workflows/plan-implement-review.md +8 -0
  105. package/resources/workflows/research-verify.md +6 -0
  106. package/resources/workflows/solo-developer.md +3 -0
  107. package/scripts/simulate-workspaces.ts +55 -55
  108. package/src/analyzers/detect-apis.ts +290 -290
  109. package/src/analyzers/detect-deps.ts +315 -315
  110. package/src/analyzers/detect-existing.ts +74 -74
  111. package/src/analyzers/detect-ports.ts +110 -110
  112. package/src/analyzers/index.ts +97 -97
  113. package/src/analyzers/messaging-analyzer.ts +254 -254
  114. package/src/analyzers/readme-summarizer.ts +102 -102
  115. package/src/analyzers/run-analyzer.ts +269 -269
  116. package/src/analyzers/tech-stack.ts +283 -283
  117. package/src/commands/add-repo.ts +157 -157
  118. package/src/commands/commands.test.ts +155 -155
  119. package/src/commands/commit.ts +131 -131
  120. package/src/commands/create.ts +207 -207
  121. package/src/commands/desktop.ts +128 -0
  122. package/src/commands/diff.ts +125 -125
  123. package/src/commands/doctor.ts +357 -357
  124. package/src/commands/handoff.ts +266 -266
  125. package/src/commands/init.ts +134 -134
  126. package/src/commands/list.ts +46 -46
  127. package/src/commands/logs.ts +63 -63
  128. package/src/commands/mcp.ts +92 -92
  129. package/src/commands/open.ts +129 -129
  130. package/src/commands/pack.ts +73 -73
  131. package/src/commands/refresh.ts +147 -147
  132. package/src/commands/remove.ts +98 -98
  133. package/src/commands/start.ts +117 -117
  134. package/src/commands/status.ts +54 -54
  135. package/src/commands/stop.ts +55 -55
  136. package/src/commands/sync.ts +151 -153
  137. package/src/commands/tui.ts +424 -0
  138. package/src/commands/ui.ts +111 -47
  139. package/src/core/config.test.ts +96 -96
  140. package/src/core/config.ts +115 -115
  141. package/src/core/graph.ts +344 -344
  142. package/src/core/packer.test.ts +99 -99
  143. package/src/core/packer.ts +107 -107
  144. package/src/core/scanner.test.ts +61 -61
  145. package/src/core/scanner.ts +91 -91
  146. package/src/core/workspace.ts +380 -380
  147. package/src/core/worktree.ts +120 -120
  148. package/src/generators/antigravity.ts +32 -32
  149. package/src/generators/base.ts +240 -227
  150. package/src/generators/claude.ts +34 -34
  151. package/src/generators/codex.ts +48 -48
  152. package/src/generators/copilot.ts +56 -56
  153. package/src/generators/cursor.ts +44 -44
  154. package/src/generators/index.ts +250 -250
  155. package/src/generators/map-generator.test.ts +159 -159
  156. package/src/generators/map-generator.ts +542 -542
  157. package/src/generators/plan-generator.ts +481 -481
  158. package/src/generators/skills-generator.ts +259 -259
  159. package/src/index.ts +426 -382
  160. package/src/mcp/server.ts +294 -294
  161. package/src/orchestration/detect.ts +313 -313
  162. package/src/orchestration/index.ts +7 -7
  163. package/src/orchestration/runner.ts +283 -283
  164. package/src/server.test.ts +555 -464
  165. package/src/server.ts +1308 -1104
  166. package/src/types.ts +408 -403
  167. package/src/utils/detect-ai.test.ts +44 -44
  168. package/src/utils/detect-ai.ts +84 -84
  169. package/src/utils/detect-editors.test.ts +48 -48
  170. package/src/utils/detect-editors.ts +57 -57
  171. package/src/utils/git.test.ts +74 -74
  172. package/src/utils/git.ts +117 -61
  173. package/src/utils/local-ai.test.ts +130 -130
  174. package/src/utils/local-ai.ts +111 -111
  175. package/src/utils/multi-git.ts +313 -306
  176. package/src/utils/prompts.ts +209 -209
  177. package/src/utils/session-finder.ts +483 -483
  178. package/src/utils/system-scanner.test.ts +89 -89
  179. package/src/utils/system-scanner.ts +96 -96
  180. package/src/utils/update-check.ts +309 -275
  181. package/src/utils/workflows.test.ts +114 -0
  182. package/src/utils/workflows.ts +178 -0
  183. package/tsconfig.json +19 -19
  184. package/vitest.config.ts +14 -14
  185. package/dist/gui/assets/index-CFWwqFux.js +0 -23
  186. package/dist/gui/assets/index-Dvc9QMvl.css +0 -2
@@ -0,0 +1,14 @@
1
+ {
2
+ "name": "nexusflow-desktop",
3
+ "version": "0.1.0",
4
+ "type": "module",
5
+ "scripts": {
6
+ "build": "node build.js",
7
+ "build:installer": "node build-installer.js",
8
+ "start": "npx neu run",
9
+ "update": "npx neu update"
10
+ },
11
+ "devDependencies": {
12
+ "@neutralinojs/neu": "^11.1.0"
13
+ }
14
+ }
@@ -0,0 +1,12 @@
1
+ /**
2
+ * @module commands/desktop
3
+ * Launches the NexusFlow desktop application (Neutralinojs).
4
+ */
5
+ /**
6
+ * Launches the NexusFlow desktop application.
7
+ *
8
+ * Spawns the process detached and unrefs it so the CLI exits immediately
9
+ * while the desktop app keeps running.
10
+ */
11
+ export declare function desktopCommand(): Promise<void>;
12
+ //# sourceMappingURL=desktop.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"desktop.d.ts","sourceRoot":"","sources":["../../src/commands/desktop.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAyFH;;;;;GAKG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CA6BpD"}
@@ -0,0 +1,119 @@
1
+ /**
2
+ * @module commands/desktop
3
+ * Launches the NexusFlow desktop application (Neutralinojs).
4
+ */
5
+ import { spawn } from 'node:child_process';
6
+ import { existsSync } from 'node:fs';
7
+ import path from 'node:path';
8
+ import { fileURLToPath } from 'node:url';
9
+ import chalk from 'chalk';
10
+ /**
11
+ * Resolves the workspace root directory.
12
+ *
13
+ * Assumes the standard NexusFlow workspace layout where the `desktop/`
14
+ * project is a sibling of the `NexusFlow/` project under the same
15
+ * workspace root:
16
+ *
17
+ * <workspace-root>/
18
+ * NexusFlow/ ← this CLI project
19
+ * desktop/ ← Neutralinojs desktop app
20
+ * dist/nexusflow-desktop/<platform-binary>
21
+ *
22
+ * At runtime this file is compiled to `NexusFlow/dist/commands/desktop.js`,
23
+ * so the workspace root is three levels up.
24
+ */
25
+ function resolveWorkspaceRoot() {
26
+ const thisDir = path.dirname(fileURLToPath(import.meta.url));
27
+ return path.resolve(thisDir, '..', '..', '..');
28
+ }
29
+ /**
30
+ * Returns the desktop dist directory path.
31
+ */
32
+ function getDesktopDistDir() {
33
+ return path.join(resolveWorkspaceRoot(), 'desktop', 'dist', 'nexusflow-desktop');
34
+ }
35
+ /**
36
+ * Resolves the platform-specific binary path for the desktop app.
37
+ *
38
+ * On macOS the architecture is taken into account:
39
+ * - arm64 → `nexusflow-desktop-mac_arm64`
40
+ * - x64 → prefers `nexusflow-desktop-mac_x64`, falls back to universal
41
+ */
42
+ function findDesktopBinary() {
43
+ const desktopDistDir = getDesktopDistDir();
44
+ const platform = process.platform;
45
+ const arch = process.arch;
46
+ let binaryName;
47
+ if (platform === 'win32') {
48
+ binaryName = 'nexusflow-desktop-win_x64.exe';
49
+ }
50
+ else if (platform === 'darwin') {
51
+ if (arch === 'arm64') {
52
+ binaryName = 'nexusflow-desktop-mac_arm64';
53
+ }
54
+ else {
55
+ // Prefer smaller x64 binary, fall back to universal
56
+ const x64Path = path.join(desktopDistDir, 'nexusflow-desktop-mac_x64');
57
+ binaryName = existsSync(x64Path) ? 'nexusflow-desktop-mac_x64' : 'nexusflow-desktop-mac_universal';
58
+ }
59
+ }
60
+ else {
61
+ // Linux — detect ARM architectures
62
+ if (arch === 'arm64') {
63
+ binaryName = 'nexusflow-desktop-linux_arm64';
64
+ }
65
+ else if (arch === 'arm') {
66
+ binaryName = 'nexusflow-desktop-linux_armhf';
67
+ }
68
+ else {
69
+ binaryName = 'nexusflow-desktop-linux_x64';
70
+ }
71
+ }
72
+ const fullPath = path.join(desktopDistDir, binaryName);
73
+ return existsSync(fullPath) ? fullPath : null;
74
+ }
75
+ /**
76
+ * Returns the expected binary path for display in the "not found" message.
77
+ */
78
+ function getExpectedBinaryPath() {
79
+ const desktopDistDir = getDesktopDistDir();
80
+ switch (process.platform) {
81
+ case 'win32':
82
+ return path.join(desktopDistDir, 'nexusflow-desktop-win_x64.exe');
83
+ case 'darwin':
84
+ return path.join(desktopDistDir, 'nexusflow-desktop-mac_*');
85
+ case 'linux':
86
+ default:
87
+ return path.join(desktopDistDir, 'nexusflow-desktop-linux_x64');
88
+ }
89
+ }
90
+ /**
91
+ * Launches the NexusFlow desktop application.
92
+ *
93
+ * Spawns the process detached and unrefs it so the CLI exits immediately
94
+ * while the desktop app keeps running.
95
+ */
96
+ export async function desktopCommand() {
97
+ console.log(chalk.bold.cyan('\nšŸ–„ļø NexusFlow — Desktop App\n'));
98
+ const binaryPath = findDesktopBinary();
99
+ if (!binaryPath) {
100
+ const expectedPath = getExpectedBinaryPath();
101
+ console.log(chalk.yellow('Desktop binary not found at:'));
102
+ console.log(chalk.dim(` ${expectedPath}\n`));
103
+ console.log(chalk.white('To build it, run:\n'));
104
+ console.log(chalk.green(' cd desktop && npm install && npm run build\n'));
105
+ return;
106
+ }
107
+ console.log(chalk.dim(`Launching ${path.basename(binaryPath)}…`));
108
+ const child = spawn(binaryPath, [], {
109
+ detached: true,
110
+ stdio: 'ignore',
111
+ cwd: path.dirname(binaryPath), // Required: Neutralino looks for resources.neu in cwd
112
+ });
113
+ child.on('error', (err) => {
114
+ console.error(chalk.red(` āœ– Desktop app process error: ${err.message}`));
115
+ });
116
+ child.unref();
117
+ console.log(chalk.green('Desktop app launched successfully.\n'));
118
+ }
119
+ //# sourceMappingURL=desktop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"desktop.js","sourceRoot":"","sources":["../../src/commands/desktop.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B;;;;;;;;;;;;;;GAcG;AACH,SAAS,oBAAoB;IAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7D,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACjD,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB;IACxB,OAAO,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,mBAAmB,CAAC,CAAC;AACnF,CAAC;AAED;;;;;;GAMG;AACH,SAAS,iBAAiB;IACxB,MAAM,cAAc,GAAG,iBAAiB,EAAE,CAAC;IAC3C,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAClC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC1B,IAAI,UAAkB,CAAC;IAEvB,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzB,UAAU,GAAG,+BAA+B,CAAC;IAC/C,CAAC;SAAM,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACjC,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YACrB,UAAU,GAAG,6BAA6B,CAAC;QAC7C,CAAC;aAAM,CAAC;YACN,oDAAoD;YACpD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,2BAA2B,CAAC,CAAC;YACvE,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,iCAAiC,CAAC;QACrG,CAAC;IACH,CAAC;SAAM,CAAC;QACN,mCAAmC;QACnC,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YACrB,UAAU,GAAG,+BAA+B,CAAC;QAC/C,CAAC;aAAM,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;YAC1B,UAAU,GAAG,+BAA+B,CAAC;QAC/C,CAAC;aAAM,CAAC;YACN,UAAU,GAAG,6BAA6B,CAAC;QAC7C,CAAC;IACH,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;IACvD,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;AAChD,CAAC;AAED;;GAEG;AACH,SAAS,qBAAqB;IAC5B,MAAM,cAAc,GAAG,iBAAiB,EAAE,CAAC;IAC3C,QAAQ,OAAO,CAAC,QAAQ,EAAE,CAAC;QACzB,KAAK,OAAO;YACV,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,+BAA+B,CAAC,CAAC;QACpE,KAAK,QAAQ;YACX,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,yBAAyB,CAAC,CAAC;QAC9D,KAAK,OAAO,CAAC;QACb;YACE,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,6BAA6B,CAAC,CAAC;IACpE,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC,CAAC;IAEjE,MAAM,UAAU,GAAG,iBAAiB,EAAE,CAAC;IAEvC,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,YAAY,GAAG,qBAAqB,EAAE,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAAC,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,YAAY,IAAI,CAAC,CAAC,CAAC;QAC9C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC;QAChD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC,CAAC;QAC3E,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;IAElE,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,EAAE,EAAE,EAAE;QAClC,QAAQ,EAAE,IAAI;QACd,KAAK,EAAE,QAAQ;QACf,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,sDAAsD;KACtF,CAAC,CAAC;IAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;QACxB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,kCAAkC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,KAAK,EAAE,CAAC;IAEd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC,CAAC;AACnE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAcH;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAqFtE"}
1
+ {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAcH;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAmFtE"}
@@ -40,9 +40,7 @@ export async function syncCommand(workspaceArg) {
40
40
  let conflictCount = 0;
41
41
  for (const repo of repos) {
42
42
  console.log(`Repository: ${chalk.bold(repo.name)}`);
43
- // Ideally we rebase on the repo's default branch, which is often 'main' or 'master'
44
- // Let's assume 'main' as default unless we fetch/read it.
45
- const defaultBranch = 'main'; // We can default to 'main' as specified in requirements
43
+ const defaultBranch = repo.defaultBranch || 'main';
46
44
  const spinner = chalk.dim(' Rebasing...');
47
45
  process.stdout.write(spinner);
48
46
  const result = await rebaseRepo(repo.path, defaultBranch);
@@ -1 +1 @@
1
- {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAU,MAAM,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEvC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAG9D;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,YAAqB;IACrD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC,CAAC;IAErE,MAAM,aAAa,GAAG,MAAM,gBAAgB,CAAC,YAAY,CAAC,CAAC;IAC3D,IAAI,CAAC,aAAa;QAAE,OAAO;IAE3B,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,aAAa,CAAC,CAAC;IACvD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,yEAAyE,CAAC,CAAC,CAAC;QACpG,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,sBAAsB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;IAChF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,aAAa,IAAI,CAAC,CAAC,CAAC;IAEnD,IAAI,KAAK,CAAC;IACV,IAAI,CAAC;QACH,KAAK,GAAG,MAAM,iBAAiB,CAAC,aAAa,CAAC,CAAC;IACjD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,+BAA+B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;QAClH,OAAO;IACT,CAAC;IAED,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,aAAa,GAAG,CAAC,CAAC;IAEtB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACpD,oFAAoF;QACpF,0DAA0D;QAC1D,MAAM,aAAa,GAAG,MAAM,CAAC,CAAC,wDAAwD;QAEtF,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QAC3C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAE9B,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;QAE1D,4BAA4B;QAC5B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;QAE/D,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC;YAChE,WAAW,EAAE,CAAC;QAChB,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;YAChE,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACpB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClG,CAAC;YACD,aAAa,EAAE,CAAC;QAClB,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,WAAW,YAAY,aAAa,gBAAgB,CAAC,CAAC;IAEpG,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC,CAAC;QACzE,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;gBACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAClC,OAAO;oBACL,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,CAAC;oBACP,aAAa,EAAE,MAAM;iBACtB,CAAC;YACJ,CAAC,CAAC,CAAC,CAAC;YAEJ,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAC;YACjD,MAAM,GAAG,GAAqB;gBAC5B,OAAO;gBACP,KAAK,EAAE,QAAQ;gBACf,QAAQ;aACT,CAAC;YAEF,MAAM,oBAAoB,CAAC,GAAG,EAAE,OAAO,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;YAEnE,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;YAClC,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;gBAC1B,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;gBAC5D,MAAM,aAAa,CAAC,aAAa,CAAC,CAAC;YACrC,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAC,CAAC;QACpF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,gCAAgC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QACvH,CAAC;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,gBAAgB,CAAC,YAAqB;IACnD,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAChD,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC,CAAC;YAC3D,OAAO,YAAY,CAAC;QACtB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,mDAAmD,YAAY,EAAE,CAAC,CAAC,CAAC;YAC5F,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,iBAAiB,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAC1D,IAAI,UAAU;QAAE,OAAO,UAAU,CAAC,aAAa,CAAC;IAEhD,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;IAClC,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IAE9D,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC,CAAC;QACpD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC;QAC5B,OAAO,EAAE,wCAAwC;QACjD,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YACtB,MAAM,KAAK,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;YAC1C,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAChC,CAAC,EAAE,EAAE,EAAE,CACL,EAAE,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAC3C,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CACjD,CAAC;YACF,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC3B,IAAI,EAAE,GAAG,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,SAAS,CAAC,EAAE;gBACnE,KAAK,EAAE,EAAE,CAAC,aAAa;aACxB,CAAC,CAAC,CAAC;QACN,CAAC;KACF,CAAC,CAAC;IAEH,OAAO,QAAQ,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @module commands/tui
3
+ * Fully interactive Terminal User Interface (TUI) for NexusFlow workspaces.
4
+ */
5
+ export declare function tuiCommand(options: {
6
+ workspace?: string;
7
+ }): Promise<void>;
8
+ //# sourceMappingURL=tui.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tui.d.ts","sourceRoot":"","sources":["../../src/commands/tui.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA4BH,wBAAsB,UAAU,CAAC,OAAO,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAwY/E"}
@@ -0,0 +1,386 @@
1
+ /**
2
+ * @module commands/tui
3
+ * Fully interactive Terminal User Interface (TUI) for NexusFlow workspaces.
4
+ */
5
+ import readline from 'node:readline';
6
+ import path from 'node:path';
7
+ import { fileURLToPath } from 'node:url';
8
+ import chalk from 'chalk';
9
+ import { execa } from 'execa';
10
+ import { loadConfig } from '../core/config.js';
11
+ import { loadFeatureConfig, listWorkspaces } from '../core/workspace.js';
12
+ import { getWorkspaceRepos, getRepoStatus } from '../utils/multi-git.js';
13
+ const COMMANDS = ['sync', 'doctor', 'refresh', 'status', 'start', 'stop', 'logs', 'list', 'create', 'open', 'pack', 'remove', 'add-repo', 'help'];
14
+ export async function tuiCommand(options) {
15
+ // Resolve active workspace
16
+ let workspacePath = options.workspace ? path.resolve(options.workspace) : '';
17
+ let branchName = 'Unknown';
18
+ if (!workspacePath) {
19
+ const cwdFeature = await loadFeatureConfig(process.cwd());
20
+ if (cwdFeature) {
21
+ workspacePath = cwdFeature.workspacePath;
22
+ branchName = cwdFeature.branchName;
23
+ }
24
+ else {
25
+ const config = await loadConfig();
26
+ const workspaces = await listWorkspaces(config.workspacesDir);
27
+ if (workspaces.length === 0) {
28
+ console.log(chalk.yellow('\nNo workspaces found. Run "nexusflow create" to initialize one.\n'));
29
+ return;
30
+ }
31
+ // Use the first active workspace as default
32
+ workspacePath = workspaces[0].workspacePath;
33
+ branchName = workspaces[0].branchName;
34
+ }
35
+ }
36
+ // Load repositories inside workspace
37
+ let repos = [];
38
+ try {
39
+ repos = await getWorkspaceRepos(workspacePath);
40
+ }
41
+ catch {
42
+ console.log(chalk.red(`\nCould not resolve repos. Make sure nexusflow.json exists in ${workspacePath}\n`));
43
+ return;
44
+ }
45
+ // Initial State Setup
46
+ const state = {
47
+ workspacePath,
48
+ branchName,
49
+ repos,
50
+ repoStatuses: {},
51
+ consoleLogs: [
52
+ 'NexusFlow TUI Command Center v2.0 - Initialized Successfully.',
53
+ 'Connecting workspace streams...',
54
+ `Active Workspace Path: ${workspacePath}`,
55
+ 'Ready. Press [/] to type commands, or [s] to sync, [d] to run diagnostics.',
56
+ ],
57
+ inputMode: false,
58
+ inputValue: '',
59
+ cursorIndex: 0,
60
+ activeCommandRunning: false,
61
+ activeSuggestionIndex: 0,
62
+ };
63
+ // Helper to append log lines
64
+ const log = (msg) => {
65
+ state.consoleLogs.push(msg);
66
+ if (state.consoleLogs.length > 50) {
67
+ state.consoleLogs.shift();
68
+ }
69
+ };
70
+ // Fetch Git status for all worktrees
71
+ const updateGitStatus = async () => {
72
+ for (const repo of state.repos) {
73
+ const status = await getRepoStatus(repo.path);
74
+ state.repoStatuses[repo.name] = status;
75
+ }
76
+ };
77
+ // Run initial git fetch
78
+ await updateGitStatus();
79
+ // Enter Full Screen Screen Buffer
80
+ process.stdout.write('\x1B[?1049h'); // Switch to alternate screen buffer
81
+ process.stdout.write('\x1B[?25l'); // Hide cursor
82
+ // Setup raw terminal mode for key capture
83
+ readline.emitKeypressEvents(process.stdin);
84
+ if (process.stdin.isTTY) {
85
+ process.stdin.setRawMode(true);
86
+ }
87
+ // Drawing Screen Logic
88
+ const draw = () => {
89
+ const cols = process.stdout.columns || 80;
90
+ const rows = process.stdout.rows || 24;
91
+ // Clear Screen Buffer
92
+ process.stdout.write('\x1B[H');
93
+ // Row 0: Top Header Banner
94
+ const bannerTitle = ` ⚔ NexusFlow Workspace Console [🌿 ${state.branchName}] `;
95
+ const statusText = ` SYSTEM: ONLINE (Port 3000) `;
96
+ const headerFill = cols - bannerTitle.length - statusText.length - 2;
97
+ process.stdout.write(chalk.bgCyan.black(bannerTitle) +
98
+ chalk.bgGray.white('─'.repeat(Math.max(0, headerFill))) +
99
+ chalk.bgGreen.black(statusText) +
100
+ '\n');
101
+ // Grid Panel Calculations
102
+ const leftWidth = Math.floor(cols * 0.35);
103
+ const rightWidth = cols - leftWidth - 1;
104
+ const mainHeight = rows - (state.inputMode ? 14 : 13); // Adjust height when suggestion line is visible
105
+ // Left Panel contents array
106
+ const leftLines = [];
107
+ leftLines.push(chalk.cyan.bold(' šŸ“‚ Repositories & Worktrees '));
108
+ leftLines.push(' '.repeat(leftWidth));
109
+ for (const repo of state.repos) {
110
+ const status = state.repoStatuses[repo.name];
111
+ const statusIndicator = status?.hasChanges
112
+ ? chalk.yellow(`(${status.changedFiles.length} files modified)`)
113
+ : chalk.green('(clean)');
114
+ leftLines.push(` 🌿 ${chalk.bold(repo.name)} ${statusIndicator}`);
115
+ // Changed files list
116
+ if (status?.hasChanges) {
117
+ status.changedFiles.slice(0, 4).forEach((file) => {
118
+ leftLines.push(` ${chalk.yellow('[M]')} ${path.basename(file)}`);
119
+ });
120
+ if (status.changedFiles.length > 4) {
121
+ leftLines.push(` ... and ${status.changedFiles.length - 4} more`);
122
+ }
123
+ }
124
+ leftLines.push(' '.repeat(leftWidth));
125
+ }
126
+ // Right Panel contents array
127
+ const rightLines = [];
128
+ rightLines.push(chalk.cyan.bold(' šŸ¤– Model Context Protocol (MCP) & Status '));
129
+ rightLines.push(' '.repeat(rightWidth));
130
+ rightLines.push(` ${chalk.bold('MCP Server:')} nexusflow-mcp (State: ${chalk.green('Active')})`);
131
+ rightLines.push(' Registered tools:');
132
+ rightLines.push(` āš™ ${chalk.cyan('search_workspace')} Search workspace files fast`);
133
+ rightLines.push(` āš™ ${chalk.cyan('get_service_logs')} Tail running logs`);
134
+ rightLines.push(` āš™ ${chalk.cyan('delegate_to_local_agent')} Run local LLM diagnostics`);
135
+ rightLines.push(' '.repeat(rightWidth));
136
+ rightLines.push(chalk.cyan.bold(' 🧩 Custom Agent Skills '));
137
+ rightLines.push(` • ${chalk.bold('dotnet-local-pack')} - Local Nuget compiler helper`);
138
+ rightLines.push(` • ${chalk.bold('npm-link-helper')} - Automated worktree registry link`);
139
+ rightLines.push(` • ${chalk.bold('antigravity-guide')} - Agent instruction manual`);
140
+ rightLines.push(' '.repeat(rightWidth));
141
+ rightLines.push(` ${chalk.bold('Health Scan:')} 🩺 doctor diagnostics: ${chalk.green('OK (0 warnings)')}`);
142
+ // Render Middle Grid Rows
143
+ for (let r = 0; r < mainHeight; r++) {
144
+ const leftPart = leftLines[r] || '';
145
+ const rightPart = rightLines[r] || '';
146
+ const leftFilled = leftPart + ' '.repeat(Math.max(0, leftWidth - stripAnsi(leftPart).length));
147
+ const rightFilled = rightPart + ' '.repeat(Math.max(0, rightWidth - stripAnsi(rightPart).length));
148
+ process.stdout.write(leftFilled + chalk.gray('│') + rightFilled + '\n');
149
+ }
150
+ // Middle Horizontal Divider
151
+ process.stdout.write(chalk.gray('ā”œ' + '─'.repeat(leftWidth) + '┼' + '─'.repeat(rightWidth) + '┤') + '\n');
152
+ // Logs Panel Header
153
+ process.stdout.write(chalk.cyan.bold(' šŸ–„ļø Command Output Stream & Logs ') + '\n');
154
+ // Render Logs Stream (Tails last 8 lines)
155
+ const logHeight = 8;
156
+ const startIdx = Math.max(0, state.consoleLogs.length - logHeight);
157
+ const visibleLogs = state.consoleLogs.slice(startIdx, startIdx + logHeight);
158
+ for (let i = 0; i < logHeight; i++) {
159
+ const line = visibleLogs[i] || '';
160
+ const filledLine = line + ' '.repeat(Math.max(0, cols - stripAnsi(line).length));
161
+ process.stdout.write(filledLine + '\n');
162
+ }
163
+ // Bottom Divider
164
+ process.stdout.write(chalk.gray('─'.repeat(cols)) + '\n');
165
+ // Bottom Panel Prompt
166
+ if (state.inputMode) {
167
+ // Find matches
168
+ const cmd = state.inputValue.trim().toLowerCase();
169
+ const matches = COMMANDS.filter(c => c.startsWith(cmd));
170
+ // Keep active index in bounds
171
+ if (matches.length > 0) {
172
+ state.activeSuggestionIndex = (state.activeSuggestionIndex + matches.length) % matches.length;
173
+ }
174
+ else {
175
+ state.activeSuggestionIndex = 0;
176
+ }
177
+ let suggestionLine = '';
178
+ if (matches.length > 0) {
179
+ suggestionLine = chalk.dim(' Suggestions: ') + matches.map((m, idx) => {
180
+ if (idx === state.activeSuggestionIndex)
181
+ return chalk.black.bgCyan(` ${m} `); // Highlight active selection
182
+ return chalk.cyan(m);
183
+ }).join(' ');
184
+ }
185
+ else {
186
+ suggestionLine = chalk.red(' No matching commands.');
187
+ }
188
+ const filledSuggestion = suggestionLine + ' '.repeat(Math.max(0, cols - stripAnsi(suggestionLine).length));
189
+ process.stdout.write(filledSuggestion + '\n');
190
+ // Focus Input mode
191
+ const promptText = ` nexusflow > ${state.inputValue}`;
192
+ process.stdout.write(chalk.bold.cyan(promptText) + ' '.repeat(Math.max(0, cols - promptText.length - 12)) + chalk.dim('[ESC] Cancel') + '\n');
193
+ }
194
+ else {
195
+ // General Keyboard Command mode
196
+ const controls = ' [s] Sync | [d] Doctor | [r] Refresh | [/] CLI Cmd | [q] Exit ';
197
+ process.stdout.write(chalk.bgCyan.black(controls) + ' '.repeat(Math.max(0, cols - controls.length)) + '\n');
198
+ }
199
+ };
200
+ // Strip ANSI color characters to calculate line lengths precisely
201
+ const stripAnsi = (str) => str.replace(/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g, '');
202
+ // Render loop refresh
203
+ draw();
204
+ // Resize Listener
205
+ const resizeHandler = () => {
206
+ draw();
207
+ };
208
+ process.stdout.on('resize', resizeHandler);
209
+ // Status Polling Loop
210
+ const pollInterval = setInterval(async () => {
211
+ await updateGitStatus();
212
+ if (!state.inputMode && !state.activeCommandRunning) {
213
+ draw();
214
+ }
215
+ }, 5000);
216
+ // Exit Cleanup
217
+ const cleanup = () => {
218
+ clearInterval(pollInterval);
219
+ process.stdout.off('resize', resizeHandler);
220
+ process.stdout.write('\x1B[?1049l'); // Restore screen buffer
221
+ process.stdout.write('\x1B[?25h'); // Show cursor
222
+ if (process.stdin.isTTY) {
223
+ process.stdin.setRawMode(false);
224
+ }
225
+ };
226
+ // Keyboard Event Handlers
227
+ process.stdin.on('keypress', async (str, key) => {
228
+ if (key.ctrl && key.name === 'c') {
229
+ cleanup();
230
+ process.exit(0);
231
+ }
232
+ if (state.inputMode) {
233
+ // --- Handle input text writing mode ---
234
+ if (key.name === 'return') {
235
+ let cmd = state.inputValue.trim();
236
+ const matches = COMMANDS.filter(c => c.startsWith(cmd.toLowerCase()));
237
+ if (matches.length > 0) {
238
+ cmd = matches[state.activeSuggestionIndex % matches.length];
239
+ }
240
+ state.inputMode = false;
241
+ state.inputValue = '';
242
+ state.activeSuggestionIndex = 0;
243
+ if (cmd) {
244
+ state.activeCommandRunning = true;
245
+ log(`Running: nexusflow ${cmd}...`);
246
+ draw();
247
+ try {
248
+ // Run command via execa
249
+ const script = fileURLToPath(new URL('../index.js', import.meta.url));
250
+ const args = cmd.split(' ');
251
+ const { stdout, stderr } = await execa('node', [script, ...args], { cwd: workspacePath });
252
+ if (stdout) {
253
+ stdout.split('\n').filter(Boolean).forEach((l) => log(` ${l}`));
254
+ }
255
+ if (stderr) {
256
+ stderr.split('\n').filter(Boolean).forEach((l) => log(` ${chalk.red(l)}`));
257
+ }
258
+ log(chalk.green('āœ” Command completed successfully.'));
259
+ }
260
+ catch (err) {
261
+ log(chalk.red(`āœ– Command failed: ${err.message}`));
262
+ }
263
+ finally {
264
+ state.activeCommandRunning = false;
265
+ await updateGitStatus();
266
+ draw();
267
+ }
268
+ }
269
+ else {
270
+ draw();
271
+ }
272
+ }
273
+ else if (key.name === 'escape') {
274
+ state.inputMode = false;
275
+ state.inputValue = '';
276
+ draw();
277
+ }
278
+ else if (key.name === 'tab') {
279
+ const cmd = state.inputValue.trim().toLowerCase();
280
+ const matches = COMMANDS.filter(c => c.startsWith(cmd));
281
+ if (matches.length > 0) {
282
+ const selected = matches[state.activeSuggestionIndex % matches.length];
283
+ state.inputValue = selected + ' ';
284
+ state.activeSuggestionIndex = 0;
285
+ draw();
286
+ }
287
+ }
288
+ else if (key.name === 'right' || key.name === 'down') {
289
+ const cmd = state.inputValue.trim().toLowerCase();
290
+ const matches = COMMANDS.filter(c => c.startsWith(cmd));
291
+ if (matches.length > 0) {
292
+ state.activeSuggestionIndex = (state.activeSuggestionIndex + 1) % matches.length;
293
+ draw();
294
+ }
295
+ }
296
+ else if (key.name === 'left' || key.name === 'up') {
297
+ const cmd = state.inputValue.trim().toLowerCase();
298
+ const matches = COMMANDS.filter(c => c.startsWith(cmd));
299
+ if (matches.length > 0) {
300
+ state.activeSuggestionIndex = (state.activeSuggestionIndex - 1 + matches.length) % matches.length;
301
+ draw();
302
+ }
303
+ }
304
+ else if (key.name === 'backspace') {
305
+ state.inputValue = state.inputValue.slice(0, -1);
306
+ state.activeSuggestionIndex = 0;
307
+ draw();
308
+ }
309
+ else if (str && str.length === 1 && !key.ctrl && !key.meta) {
310
+ state.inputValue += str;
311
+ state.activeSuggestionIndex = 0;
312
+ draw();
313
+ }
314
+ }
315
+ else {
316
+ // --- Handle single key shortcuts mode ---
317
+ if (key.name === 'q') {
318
+ cleanup();
319
+ console.log(chalk.bold.cyan('\nšŸ‘‹ Exited NexusFlow TUI Dashboard.\n'));
320
+ process.exit(0);
321
+ }
322
+ else if (str === '/') {
323
+ state.inputMode = true;
324
+ draw();
325
+ }
326
+ else if (key.name === 's') {
327
+ state.activeCommandRunning = true;
328
+ log('šŸ”„ Running Workspace Sync rebase...');
329
+ draw();
330
+ try {
331
+ const script = fileURLToPath(new URL('../index.js', import.meta.url));
332
+ const { stdout } = await execa('node', [script, 'sync'], { cwd: workspacePath });
333
+ stdout.split('\n').filter(Boolean).forEach((l) => log(` ${l}`));
334
+ log(chalk.green('āœ” Sync completed successfully.'));
335
+ }
336
+ catch (err) {
337
+ log(chalk.red(`āœ– Sync failed: ${err.message}`));
338
+ }
339
+ finally {
340
+ state.activeCommandRunning = false;
341
+ await updateGitStatus();
342
+ draw();
343
+ }
344
+ }
345
+ else if (key.name === 'd') {
346
+ state.activeCommandRunning = true;
347
+ log('🩺 Running doctor diagnostics...');
348
+ draw();
349
+ try {
350
+ const script = fileURLToPath(new URL('../index.js', import.meta.url));
351
+ const { stdout } = await execa('node', [script, 'doctor'], { cwd: workspacePath });
352
+ stdout.split('\n').filter(Boolean).forEach((l) => log(` ${l}`));
353
+ log(chalk.green('āœ” Diagnostics check complete.'));
354
+ }
355
+ catch (err) {
356
+ log(chalk.red(`āœ– Diagnostics failed: ${err.message}`));
357
+ }
358
+ finally {
359
+ state.activeCommandRunning = false;
360
+ await updateGitStatus();
361
+ draw();
362
+ }
363
+ }
364
+ else if (key.name === 'r') {
365
+ state.activeCommandRunning = true;
366
+ log('šŸ”„ Regenerating context manifest files...');
367
+ draw();
368
+ try {
369
+ const script = fileURLToPath(new URL('../index.js', import.meta.url));
370
+ const { stdout } = await execa('node', [script, 'refresh'], { cwd: workspacePath });
371
+ stdout.split('\n').filter(Boolean).forEach((l) => log(` ${l}`));
372
+ log(chalk.green('āœ” Context successfully refreshed.'));
373
+ }
374
+ catch (err) {
375
+ log(chalk.red(`āœ– Refresh failed: ${err.message}`));
376
+ }
377
+ finally {
378
+ state.activeCommandRunning = false;
379
+ await updateGitStatus();
380
+ draw();
381
+ }
382
+ }
383
+ }
384
+ });
385
+ }
386
+ //# sourceMappingURL=tui.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tui.js","sourceRoot":"","sources":["../../src/commands/tui.ts"],"names":[],"mappings":"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"}
@@ -5,9 +5,11 @@
5
5
  /**
6
6
  * Starts the local GUI server and opens the dashboard in the default browser.
7
7
  *
8
- * @param options - CLI options, including optional port.
8
+ * @param options - CLI options, including optional port, daemon, and server-only.
9
9
  */
10
10
  export declare function uiCommand(options: {
11
11
  port?: string;
12
+ daemon?: boolean;
13
+ serverOnly?: boolean;
12
14
  }): Promise<void>;
13
15
  //# sourceMappingURL=ui.d.ts.map