@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
package/gui/src/index.css CHANGED
@@ -1,110 +1,152 @@
1
- @import "tailwindcss";
2
-
3
- /* Custom Sleek Scrollbars */
4
- ::-webkit-scrollbar {
5
- width: 6px;
6
- height: 6px;
7
- }
8
- ::-webkit-scrollbar-track {
9
- background: transparent;
10
- }
11
- ::-webkit-scrollbar-thumb {
12
- background: rgba(99, 102, 241, 0.15);
13
- border-radius: 8px;
14
- border: 1px solid rgba(255, 255, 255, 0.03);
15
- }
16
- ::-webkit-scrollbar-thumb:hover {
17
- background: rgba(99, 102, 241, 0.3);
18
- }
19
-
20
- /* Glassmorphism and Modern UI Helpers */
21
- @utility glass-card {
22
- background: rgba(17, 24, 39, 0.45);
23
- backdrop-filter: blur(16px);
24
- -webkit-backdrop-filter: blur(16px);
25
- border: 1px solid rgba(255, 255, 255, 0.05);
26
- box-shadow: 0 8px 32px 0 rgba(0, 0, 0, 0.37);
27
- }
28
-
29
- @utility glass-card-glow {
30
- box-shadow: 0 0 15px rgba(99, 102, 241, 0.1), inset 0 0 1px 1px rgba(255, 255, 255, 0.05);
31
- }
32
-
33
- @utility text-glow-indigo {
34
- text-shadow: 0 0 12px rgba(99, 102, 241, 0.4);
35
- }
36
-
37
- @utility animate-slide-in {
38
- animation: slide-in 0.3s cubic-bezier(0.16, 1, 0.3, 1) forwards;
39
- }
40
-
41
- @utility animate-fade-in {
42
- animation: fade-in 0.2s ease-out forwards;
43
- }
44
-
45
- @utility animate-spin-slow {
46
- animation: spin 8s linear infinite;
47
- }
48
-
49
- @utility animate-pulse-glow-green {
50
- animation: pulse-glow-green 2s infinite ease-in-out;
51
- }
52
-
53
- @utility animate-pulse-glow-indigo {
54
- animation: pulse-glow-indigo 2.5s infinite ease-in-out;
55
- }
56
-
57
- @keyframes slide-in {
58
- from {
59
- transform: translateY(0.75rem);
60
- opacity: 0;
61
- }
62
- to {
63
- transform: translateY(0);
64
- opacity: 1;
65
- }
66
- }
67
-
68
- @keyframes fade-in {
69
- from {
70
- opacity: 0;
71
- }
72
- to {
73
- opacity: 1;
74
- }
75
- }
76
-
77
- @keyframes pulse-glow-green {
78
- 0%, 100% {
79
- box-shadow: 0 0 4px rgba(52, 211, 153, 0.2);
80
- opacity: 0.8;
81
- }
82
- 50% {
83
- box-shadow: 0 0 12px rgba(52, 211, 153, 0.6);
84
- opacity: 1;
85
- }
86
- }
87
-
88
- @keyframes pulse-glow-indigo {
89
- 0%, 100% {
90
- box-shadow: 0 0 4px rgba(99, 102, 241, 0.2);
91
- }
92
- 50% {
93
- box-shadow: 0 0 14px rgba(99, 102, 241, 0.5);
94
- }
95
- }
96
-
97
- /* Custom terminal colors */
98
- .term-matrix {
99
- color: #10b981;
100
- background-color: #030712;
101
- }
102
- .term-dracula {
103
- color: #f8f8f2;
104
- background-color: #282a36;
105
- }
106
- .term-classic {
107
- color: #e5e7eb;
108
- background-color: #0b0f19;
109
- }
110
-
1
+ @import url('https://fonts.googleapis.com/css2?family=JetBrains+Mono:ital,wght@0,100..800;1,100..800&family=Space+Grotesk:wght@300..700&display=swap');
2
+ @import "tailwindcss";
3
+
4
+ /* Global Font Overrides to Monospace */
5
+ body {
6
+ font-family: 'JetBrains Mono', monospace !important;
7
+ background-color: #030408 !important;
8
+ background-image:
9
+ radial-gradient(at 50% 0%, rgba(139, 92, 246, 0.06) 0px, transparent 50%),
10
+ radial-gradient(at 0% 100%, rgba(6, 182, 212, 0.04) 0px, transparent 50%) !important;
11
+ }
12
+
13
+ h1, h2, h3, h4, h5, h6, button, input, select, textarea, code, pre {
14
+ font-family: 'JetBrains Mono', monospace !important;
15
+ }
16
+
17
+ /* Custom Sleek Scrollbars */
18
+ ::-webkit-scrollbar {
19
+ width: 6px;
20
+ height: 6px;
21
+ }
22
+ ::-webkit-scrollbar-track {
23
+ background: #05070c;
24
+ }
25
+ ::-webkit-scrollbar-thumb {
26
+ background: #1f2937;
27
+ border-radius: 3px;
28
+ border: 1px solid rgba(255, 255, 255, 0.03);
29
+ }
30
+ ::-webkit-scrollbar-thumb:hover {
31
+ background: #374151;
32
+ }
33
+
34
+ /* Glassmorphism and Terminal UI Helpers */
35
+ @utility glass-card {
36
+ background: rgba(5, 7, 12, 0.6) !important;
37
+ backdrop-filter: blur(12px);
38
+ -webkit-backdrop-filter: blur(12px);
39
+ border: 1px solid rgba(255, 255, 255, 0.04) !important;
40
+ box-shadow: 0 4px 20px 0 rgba(0, 0, 0, 0.5) !important;
41
+ }
42
+
43
+ @utility glass-card-glow {
44
+ box-shadow: 0 0 15px rgba(6, 182, 212, 0.05), inset 0 0 1px 1px rgba(255, 255, 255, 0.03);
45
+ }
46
+
47
+ @utility text-glow-cyan {
48
+ text-shadow: 0 0 8px rgba(6, 182, 212, 0.4);
49
+ }
50
+
51
+ @utility text-glow-green {
52
+ text-shadow: 0 0 8px rgba(16, 185, 129, 0.4);
53
+ }
54
+
55
+ @utility neon-border {
56
+ box-shadow: 0 0 10px rgba(6, 182, 212, 0.1);
57
+ }
58
+
59
+ @utility neon-border-green {
60
+ box-shadow: 0 0 10px rgba(16, 185, 129, 0.1);
61
+ }
62
+
63
+ /* CRT Scanline effect */
64
+ .crt-screen {
65
+ position: relative;
66
+ }
67
+
68
+ .crt-screen::after {
69
+ content: " ";
70
+ display: block;
71
+ position: absolute;
72
+ top: 0; left: 0; bottom: 0; right: 0;
73
+ background: linear-gradient(rgba(18, 16, 16, 0) 50%, rgba(0, 0, 0, 0.2) 50%), linear-gradient(90deg, rgba(255, 0, 0, 0.04), rgba(0, 255, 0, 0.01), rgba(0, 255, 0, 0.04));
74
+ z-index: 10;
75
+ background-size: 100% 4px, 6px 100%;
76
+ pointer-events: none;
77
+ opacity: 0.35;
78
+ }
79
+
80
+ @utility animate-slide-in {
81
+ animation: slide-in 0.3s cubic-bezier(0.16, 1, 0.3, 1) forwards;
82
+ }
83
+
84
+ @utility animate-fade-in {
85
+ animation: fade-in 0.2s ease-out forwards;
86
+ }
87
+
88
+ @utility animate-spin-slow {
89
+ animation: spin 8s linear infinite;
90
+ }
91
+
92
+ @utility animate-pulse-glow-green {
93
+ animation: pulse-glow-green 2s infinite ease-in-out;
94
+ }
95
+
96
+ @utility animate-pulse-glow-cyan {
97
+ animation: pulse-glow-cyan 2.5s infinite ease-in-out;
98
+ }
99
+
100
+ @keyframes slide-in {
101
+ from {
102
+ transform: translateY(0.5rem);
103
+ opacity: 0;
104
+ }
105
+ to {
106
+ transform: translateY(0);
107
+ opacity: 1;
108
+ }
109
+ }
110
+
111
+ @keyframes fade-in {
112
+ from {
113
+ opacity: 0;
114
+ }
115
+ to {
116
+ opacity: 1;
117
+ }
118
+ }
119
+
120
+ @keyframes pulse-glow-green {
121
+ 0%, 100% {
122
+ box-shadow: 0 0 4px rgba(52, 211, 153, 0.15);
123
+ opacity: 0.8;
124
+ }
125
+ 50% {
126
+ box-shadow: 0 0 10px rgba(52, 211, 153, 0.4);
127
+ opacity: 1;
128
+ }
129
+ }
130
+
131
+ @keyframes pulse-glow-cyan {
132
+ 0%, 100% {
133
+ box-shadow: 0 0 4px rgba(6, 182, 212, 0.15);
134
+ }
135
+ 50% {
136
+ box-shadow: 0 0 12px rgba(6, 182, 212, 0.4);
137
+ }
138
+ }
139
+
140
+ /* Custom terminal colors */
141
+ .term-matrix {
142
+ color: #10b981;
143
+ background-color: #030712;
144
+ }
145
+ .term-dracula {
146
+ color: #f8f8f2;
147
+ background-color: #282a36;
148
+ }
149
+ .term-classic {
150
+ color: #e5e7eb;
151
+ background-color: #0b0f19;
152
+ }
package/gui/src/main.tsx CHANGED
@@ -1,10 +1,94 @@
1
- import { StrictMode } from 'react'
2
- import { createRoot } from 'react-dom/client'
3
- import './index.css'
4
- import App from './App.tsx'
5
-
6
- createRoot(document.getElementById('root')!).render(
7
- <StrictMode>
8
- <App />
9
- </StrictMode>,
10
- )
1
+ import { StrictMode } from 'react'
2
+ import { createRoot } from 'react-dom/client'
3
+ import './index.css'
4
+ import App from './App.tsx'
5
+
6
+ declare global {
7
+ interface Window {
8
+ Neutralino?: any;
9
+ NL_PATH?: string;
10
+ }
11
+ }
12
+
13
+ async function waitForBackend(url: string, maxRetries = 25, delay = 200): Promise<boolean> {
14
+ for (let i = 0; i < maxRetries; i++) {
15
+ try {
16
+ const res = await fetch(url);
17
+ if (res.ok) {
18
+ console.log(`Backend connection established on attempt ${i + 1}`);
19
+ return true;
20
+ }
21
+ } catch {
22
+ // Ignored, retry
23
+ }
24
+ await new Promise((resolve) => setTimeout(resolve, delay));
25
+ }
26
+ console.warn(`Backend connection timed out after ${maxRetries} attempts`);
27
+ return false;
28
+ }
29
+
30
+ function renderApp() {
31
+ createRoot(document.getElementById('root')!).render(
32
+ <StrictMode>
33
+ <App />
34
+ </StrictMode>,
35
+ );
36
+ }
37
+
38
+ if (typeof window !== 'undefined' && window.Neutralino) {
39
+ window.Neutralino.init();
40
+ window.Neutralino.events.on('windowClose', () => {
41
+ window.Neutralino.app.exit();
42
+ });
43
+
44
+ (async () => {
45
+ const backendUrl = 'http://localhost:3000/api/config';
46
+ try {
47
+ const res = await fetch(backendUrl);
48
+ if (res.ok) {
49
+ console.log('NexusFlow Hono backend is already running.');
50
+ renderApp();
51
+ return;
52
+ }
53
+ } catch {
54
+ console.log('NexusFlow Hono backend not detected. Launching...');
55
+ try {
56
+ const isWin = navigator.platform.includes('Win') || navigator.userAgent.includes('Windows');
57
+ const nlPath = window.NL_PATH || '.';
58
+
59
+ // Construct paths for packaged mode
60
+ const nodeBinary = isWin ? `${nlPath}/node/node.exe` : `${nlPath}/node/bin/node`;
61
+ const serverScript = `${nlPath}/server/dist/index.js`;
62
+
63
+ // Check if we are running in packaged mode by testing if the embedded node exists
64
+ let isPackaged = false;
65
+ try {
66
+ await window.Neutralino.filesystem.getStats(nodeBinary);
67
+ isPackaged = true;
68
+ } catch {
69
+ // File doesn't exist or filesystem API failed, meaning dev mode
70
+ }
71
+
72
+ let cmd: string;
73
+ if (isPackaged) {
74
+ console.log('Running in packaged mode, using embedded node and server...');
75
+ cmd = `"${nodeBinary}" "${serverScript}" ui --server-only --port 3000`;
76
+ } else {
77
+ console.log('Running in development mode, using global node and relative path...');
78
+ cmd = 'node ../NexusFlow/dist/index.js ui --server-only --port 3000';
79
+ }
80
+
81
+ console.log('Spawning backend command:', cmd);
82
+ await window.Neutralino.os.execCommand(cmd, { background: true });
83
+ console.log('Hono backend successfully spawned. Waiting for port 3000...');
84
+ await waitForBackend(backendUrl);
85
+ } catch (err) {
86
+ console.error('Failed to spawn Hono backend:', err);
87
+ } finally {
88
+ renderApp();
89
+ }
90
+ }
91
+ })();
92
+ } else {
93
+ renderApp();
94
+ }
package/gui/src/types.ts CHANGED
@@ -1,62 +1,62 @@
1
- // Types matched with src/types.ts
2
-
3
- export interface NexusFlowConfig {
4
- version: string;
5
- devDir: string;
6
- workspacesDir: string;
7
- defaultAssistant: string | null;
8
- defaultEditor?: string | null;
9
- scanDepth: number;
10
- }
11
-
12
- export interface DetectedAI {
13
- name: string;
14
- displayName: string;
15
- detected: boolean;
16
- command?: string;
17
- }
18
-
19
- export interface DetectedEditor {
20
- name: string;
21
- command: string;
22
- detected: boolean;
23
- }
24
-
25
- export interface RepoInfo {
26
- name: string;
27
- path: string;
28
- defaultBranch: string;
29
- }
30
-
31
- export interface Feature {
32
- id: string;
33
- branchName: string;
34
- description: string;
35
- repos: string[];
36
- assistants: string[];
37
- workspacePath: string;
38
- createdAt: string;
39
- }
40
-
41
- export interface ServiceConfig {
42
- name: string;
43
- cwd: string;
44
- command: string;
45
- args: string[];
46
- port?: number;
47
- source: string;
48
- }
49
-
50
- export interface OrchestrationDetection {
51
- tool: string;
52
- configPath: string;
53
- startCommand: string;
54
- stopCommand: string;
55
- }
56
-
57
- export interface RunningService {
58
- name: string;
59
- pid: number;
60
- config: ServiceConfig;
61
- startedAt: string;
62
- }
1
+ // Types matched with src/types.ts
2
+
3
+ export interface NexusFlowConfig {
4
+ version: string;
5
+ devDir: string;
6
+ workspacesDir: string;
7
+ defaultAssistant: string | null;
8
+ defaultEditor?: string | null;
9
+ scanDepth: number;
10
+ }
11
+
12
+ export interface DetectedAI {
13
+ name: string;
14
+ displayName: string;
15
+ detected: boolean;
16
+ command?: string;
17
+ }
18
+
19
+ export interface DetectedEditor {
20
+ name: string;
21
+ command: string;
22
+ detected: boolean;
23
+ }
24
+
25
+ export interface RepoInfo {
26
+ name: string;
27
+ path: string;
28
+ defaultBranch: string;
29
+ }
30
+
31
+ export interface Feature {
32
+ id: string;
33
+ branchName: string;
34
+ description: string;
35
+ repos: string[];
36
+ assistants: string[];
37
+ workspacePath: string;
38
+ createdAt: string;
39
+ }
40
+
41
+ export interface ServiceConfig {
42
+ name: string;
43
+ cwd: string;
44
+ command: string;
45
+ args: string[];
46
+ port?: number;
47
+ source: string;
48
+ }
49
+
50
+ export interface OrchestrationDetection {
51
+ tool: string;
52
+ configPath: string;
53
+ startCommand: string;
54
+ stopCommand: string;
55
+ }
56
+
57
+ export interface RunningService {
58
+ name: string;
59
+ pid: number;
60
+ config: ServiceConfig;
61
+ startedAt: string;
62
+ }
@@ -1,25 +1,25 @@
1
- {
2
- "compilerOptions": {
3
- "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo",
4
- "target": "es2023",
5
- "lib": ["ES2023", "DOM"],
6
- "module": "esnext",
7
- "types": ["vite/client"],
8
- "skipLibCheck": true,
9
-
10
- /* Bundler mode */
11
- "moduleResolution": "bundler",
12
- "allowImportingTsExtensions": true,
13
- "verbatimModuleSyntax": true,
14
- "moduleDetection": "force",
15
- "noEmit": true,
16
- "jsx": "react-jsx",
17
-
18
- /* Linting */
19
- "noUnusedLocals": true,
20
- "noUnusedParameters": true,
21
- "erasableSyntaxOnly": true,
22
- "noFallthroughCasesInSwitch": true
23
- },
24
- "include": ["src"]
25
- }
1
+ {
2
+ "compilerOptions": {
3
+ "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo",
4
+ "target": "es2023",
5
+ "lib": ["ES2023", "DOM"],
6
+ "module": "esnext",
7
+ "types": ["vite/client"],
8
+ "skipLibCheck": true,
9
+
10
+ /* Bundler mode */
11
+ "moduleResolution": "bundler",
12
+ "allowImportingTsExtensions": true,
13
+ "verbatimModuleSyntax": true,
14
+ "moduleDetection": "force",
15
+ "noEmit": true,
16
+ "jsx": "react-jsx",
17
+
18
+ /* Linting */
19
+ "noUnusedLocals": true,
20
+ "noUnusedParameters": true,
21
+ "erasableSyntaxOnly": true,
22
+ "noFallthroughCasesInSwitch": true
23
+ },
24
+ "include": ["src"]
25
+ }
package/gui/tsconfig.json CHANGED
@@ -1,7 +1,7 @@
1
- {
2
- "files": [],
3
- "references": [
4
- { "path": "./tsconfig.app.json" },
5
- { "path": "./tsconfig.node.json" }
6
- ]
7
- }
1
+ {
2
+ "files": [],
3
+ "references": [
4
+ { "path": "./tsconfig.app.json" },
5
+ { "path": "./tsconfig.node.json" }
6
+ ]
7
+ }
@@ -1,24 +1,24 @@
1
- {
2
- "compilerOptions": {
3
- "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo",
4
- "target": "es2023",
5
- "lib": ["ES2023"],
6
- "module": "esnext",
7
- "types": ["node"],
8
- "skipLibCheck": true,
9
-
10
- /* Bundler mode */
11
- "moduleResolution": "bundler",
12
- "allowImportingTsExtensions": true,
13
- "verbatimModuleSyntax": true,
14
- "moduleDetection": "force",
15
- "noEmit": true,
16
-
17
- /* Linting */
18
- "noUnusedLocals": true,
19
- "noUnusedParameters": true,
20
- "erasableSyntaxOnly": true,
21
- "noFallthroughCasesInSwitch": true
22
- },
23
- "include": ["vite.config.ts"]
24
- }
1
+ {
2
+ "compilerOptions": {
3
+ "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo",
4
+ "target": "es2023",
5
+ "lib": ["ES2023"],
6
+ "module": "esnext",
7
+ "types": ["node"],
8
+ "skipLibCheck": true,
9
+
10
+ /* Bundler mode */
11
+ "moduleResolution": "bundler",
12
+ "allowImportingTsExtensions": true,
13
+ "verbatimModuleSyntax": true,
14
+ "moduleDetection": "force",
15
+ "noEmit": true,
16
+
17
+ /* Linting */
18
+ "noUnusedLocals": true,
19
+ "noUnusedParameters": true,
20
+ "erasableSyntaxOnly": true,
21
+ "noFallthroughCasesInSwitch": true
22
+ },
23
+ "include": ["vite.config.ts"]
24
+ }
@@ -1,12 +1,12 @@
1
- import { defineConfig } from 'vite'
2
- import react from '@vitejs/plugin-react'
3
- import tailwindcss from '@tailwindcss/vite'
4
-
5
- // https://vite.dev/config/
6
- export default defineConfig({
7
- plugins: [react(), tailwindcss()],
8
- build: {
9
- outDir: '../dist/gui',
10
- emptyOutDir: true,
11
- },
12
- })
1
+ import { defineConfig } from 'vite'
2
+ import react from '@vitejs/plugin-react'
3
+ import tailwindcss from '@tailwindcss/vite'
4
+
5
+ // https://vite.dev/config/
6
+ export default defineConfig({
7
+ plugins: [react(), tailwindcss()],
8
+ build: {
9
+ outDir: '../dist/gui',
10
+ emptyOutDir: true,
11
+ },
12
+ })