@mrpatronz/nexusflow 0.2.18 → 1.3.0
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.
- package/README.md +27 -3
- package/dist/analyzers/index.d.ts +23 -0
- package/dist/analyzers/index.d.ts.map +1 -1
- package/dist/analyzers/index.js +62 -0
- package/dist/analyzers/index.js.map +1 -1
- package/dist/commands/commands.test.js +20 -6
- package/dist/commands/commands.test.js.map +1 -1
- package/dist/commands/commit.d.ts +2 -0
- package/dist/commands/commit.d.ts.map +1 -1
- package/dist/commands/commit.js +27 -5
- package/dist/commands/commit.js.map +1 -1
- package/dist/commands/diff.d.ts +9 -2
- package/dist/commands/diff.d.ts.map +1 -1
- package/dist/commands/diff.js +36 -12
- package/dist/commands/diff.js.map +1 -1
- package/dist/commands/doctor.js +2 -2
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/handoff.js +2 -2
- package/dist/commands/handoff.js.map +1 -1
- package/dist/commands/refresh.d.ts +4 -2
- package/dist/commands/refresh.d.ts.map +1 -1
- package/dist/commands/refresh.js +20 -36
- package/dist/commands/refresh.js.map +1 -1
- package/dist/commands/schedule.d.ts +35 -0
- package/dist/commands/schedule.d.ts.map +1 -0
- package/dist/commands/schedule.js +151 -0
- package/dist/commands/schedule.js.map +1 -0
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js +58 -50
- package/dist/commands/sync.js.map +1 -1
- package/dist/core/analysis-cache.d.ts +58 -0
- package/dist/core/analysis-cache.d.ts.map +1 -0
- package/dist/core/analysis-cache.js +116 -0
- package/dist/core/analysis-cache.js.map +1 -0
- package/dist/core/analysis-cache.test.d.ts +2 -0
- package/dist/core/analysis-cache.test.d.ts.map +1 -0
- package/dist/core/analysis-cache.test.js +108 -0
- package/dist/core/analysis-cache.test.js.map +1 -0
- package/dist/core/refresh.d.ts +41 -0
- package/dist/core/refresh.d.ts.map +1 -0
- package/dist/core/refresh.js +60 -0
- package/dist/core/refresh.js.map +1 -0
- package/dist/core/scheduler.d.ts +117 -0
- package/dist/core/scheduler.d.ts.map +1 -0
- package/dist/core/scheduler.js +247 -0
- package/dist/core/scheduler.js.map +1 -0
- package/dist/core/scheduler.test.d.ts +2 -0
- package/dist/core/scheduler.test.d.ts.map +1 -0
- package/dist/core/scheduler.test.js +111 -0
- package/dist/core/scheduler.test.js.map +1 -0
- package/dist/core/sync.d.ts +50 -0
- package/dist/core/sync.d.ts.map +1 -0
- package/dist/core/sync.js +92 -0
- package/dist/core/sync.js.map +1 -0
- package/dist/core/workspace-state.d.ts +51 -0
- package/dist/core/workspace-state.d.ts.map +1 -0
- package/dist/core/workspace-state.js +108 -0
- package/dist/core/workspace-state.js.map +1 -0
- package/dist/core/workspace-state.test.d.ts +2 -0
- package/dist/core/workspace-state.test.d.ts.map +1 -0
- package/dist/core/workspace-state.test.js +84 -0
- package/dist/core/workspace-state.test.js.map +1 -0
- package/dist/generators/index.d.ts +7 -1
- package/dist/generators/index.d.ts.map +1 -1
- package/dist/generators/index.js +14 -1
- package/dist/generators/index.js.map +1 -1
- package/dist/gui/assets/index-Bdbld6yY.css +1 -0
- package/dist/gui/assets/index-D8iJPvnk.js +26 -0
- package/dist/gui/index.html +2 -2
- package/dist/index.js +107 -4
- package/dist/index.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +42 -0
- package/dist/mcp/server.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +175 -13
- package/dist/server.js.map +1 -1
- package/dist/server.test.js +66 -0
- package/dist/server.test.js.map +1 -1
- package/dist/types.d.ts +31 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/multi-git.d.ts +54 -8
- package/dist/utils/multi-git.d.ts.map +1 -1
- package/dist/utils/multi-git.js +129 -21
- package/dist/utils/multi-git.js.map +1 -1
- package/dist/utils/multi-git.test.d.ts +2 -0
- package/dist/utils/multi-git.test.d.ts.map +1 -0
- package/dist/utils/multi-git.test.js +125 -0
- package/dist/utils/multi-git.test.js.map +1 -0
- package/package.json +13 -1
- package/.agents/skills/ccc/SKILL.md +0 -71
- package/.agents/skills/ccc/references/management.md +0 -110
- package/.agents/skills/ccc/references/settings.md +0 -126
- package/.github/dependabot.yml +0 -52
- package/.github/workflows/ci.yml +0 -44
- package/.github/workflows/dependabot-merge.yml +0 -53
- package/.github/workflows/release-desktop.yml +0 -67
- package/.github/workflows/release-npm.yml +0 -65
- package/.github/workflows/release-vscode.yml +0 -61
- package/.vscode/launch.json +0 -17
- package/.vscode/tasks.json +0 -17
- package/GETTING_STARTED.md +0 -114
- package/desktop/build-installer.js +0 -228
- package/desktop/build.js +0 -118
- package/desktop/installer/nexusflow.iss +0 -35
- package/desktop/neutralino.config.json +0 -39
- package/desktop/package-lock.json +0 -1060
- package/desktop/package.json +0 -14
- package/dist/gui/assets/index-CB-jWded.css +0 -1
- package/dist/gui/assets/index-DDXpZZu3.js +0 -25
- package/extension/media/icon.svg +0 -1
- package/extension/package-lock.json +0 -6044
- package/extension/package.json +0 -117
- package/extension/src/extension.ts +0 -653
- package/extension/tsconfig.json +0 -21
- package/gui/README.md +0 -73
- package/gui/e2e/wizard.spec.ts +0 -346
- package/gui/eslint.config.js +0 -26
- package/gui/index.html +0 -17
- package/gui/package-lock.json +0 -3079
- package/gui/package.json +0 -36
- package/gui/playwright.config.ts +0 -41
- package/gui/public/app_logo.png +0 -0
- package/gui/public/favicon.svg +0 -1
- package/gui/public/icons.svg +0 -24
- package/gui/src/App.css +0 -1
- package/gui/src/App.tsx +0 -3632
- package/gui/src/assets/hero.png +0 -0
- package/gui/src/assets/react.svg +0 -1
- package/gui/src/assets/vite.svg +0 -1
- package/gui/src/features/changes/ChangesViewer.tsx +0 -388
- package/gui/src/features/knowledge/KnowledgeBase.tsx +0 -84
- package/gui/src/features/onboarding/OnboardingWizard.tsx +0 -230
- package/gui/src/features/plan/ImplementationPlan.tsx +0 -32
- package/gui/src/features/services/ServiceConsole.tsx +0 -250
- package/gui/src/features/sessions/SessionHistory.tsx +0 -195
- package/gui/src/features/workspace/WorkspaceList.tsx +0 -666
- package/gui/src/index.css +0 -152
- package/gui/src/main.tsx +0 -94
- package/gui/src/types.ts +0 -62
- package/gui/tsconfig.app.json +0 -25
- package/gui/tsconfig.json +0 -7
- package/gui/tsconfig.node.json +0 -24
- package/gui/vite.config.ts +0 -12
- package/resources/workflows/plan-implement-review.md +0 -8
- package/resources/workflows/research-verify.md +0 -6
- package/resources/workflows/solo-developer.md +0 -3
- package/scripts/simulate-workspaces.ts +0 -55
- package/skills-lock.json +0 -11
- package/src/analyzers/detect-apis.ts +0 -290
- package/src/analyzers/detect-deps.ts +0 -315
- package/src/analyzers/detect-existing.ts +0 -74
- package/src/analyzers/detect-ports.ts +0 -110
- package/src/analyzers/index.ts +0 -97
- package/src/analyzers/messaging-analyzer.ts +0 -254
- package/src/analyzers/readme-summarizer.ts +0 -102
- package/src/analyzers/run-analyzer.ts +0 -269
- package/src/analyzers/tech-stack.ts +0 -283
- package/src/commands/adapter.ts +0 -348
- package/src/commands/add-repo.ts +0 -156
- package/src/commands/commands.test.ts +0 -156
- package/src/commands/commit.ts +0 -131
- package/src/commands/config.ts +0 -52
- package/src/commands/create.ts +0 -204
- package/src/commands/desktop.ts +0 -128
- package/src/commands/diff.ts +0 -125
- package/src/commands/doctor.ts +0 -370
- package/src/commands/handoff.ts +0 -266
- package/src/commands/init.ts +0 -134
- package/src/commands/list.ts +0 -46
- package/src/commands/logs.ts +0 -63
- package/src/commands/mcp.ts +0 -94
- package/src/commands/open.ts +0 -129
- package/src/commands/refresh.ts +0 -137
- package/src/commands/remove.ts +0 -98
- package/src/commands/start.ts +0 -117
- package/src/commands/status.ts +0 -54
- package/src/commands/stop.ts +0 -55
- package/src/commands/sync.ts +0 -147
- package/src/commands/tui.ts +0 -484
- package/src/commands/ui.ts +0 -111
- package/src/core/adapters/local-storage.ts +0 -66
- package/src/core/adapters/obsidian-storage.ts +0 -151
- package/src/core/adapters/registry.ts +0 -44
- package/src/core/adapters/storage.test.ts +0 -174
- package/src/core/adapters/vault-storage.ts +0 -86
- package/src/core/config.test.ts +0 -96
- package/src/core/config.ts +0 -140
- package/src/core/graph.ts +0 -344
- package/src/core/plugins/index.ts +0 -17
- package/src/core/plugins/loader.ts +0 -36
- package/src/core/ports/storage.ts +0 -71
- package/src/core/scanner.test.ts +0 -61
- package/src/core/scanner.ts +0 -91
- package/src/core/storage.ts +0 -37
- package/src/core/workspace.ts +0 -487
- package/src/core/worktree.ts +0 -120
- package/src/generators/antigravity.ts +0 -32
- package/src/generators/base.ts +0 -243
- package/src/generators/claude.ts +0 -34
- package/src/generators/codex.ts +0 -48
- package/src/generators/copilot.ts +0 -56
- package/src/generators/cursor.ts +0 -44
- package/src/generators/diff-context.ts +0 -75
- package/src/generators/index.ts +0 -322
- package/src/generators/map-generator.test.ts +0 -159
- package/src/generators/map-generator.ts +0 -539
- package/src/generators/plan-generator.ts +0 -483
- package/src/generators/skills-generator.ts +0 -259
- package/src/index.ts +0 -539
- package/src/mcp/server.ts +0 -294
- package/src/orchestration/detect.ts +0 -313
- package/src/orchestration/index.ts +0 -7
- package/src/orchestration/runner.ts +0 -283
- package/src/server.test.ts +0 -618
- package/src/server.ts +0 -1314
- package/src/types.ts +0 -415
- package/src/utils/detect-ai.test.ts +0 -44
- package/src/utils/detect-ai.ts +0 -84
- package/src/utils/detect-editors.test.ts +0 -48
- package/src/utils/detect-editors.ts +0 -57
- package/src/utils/git.test.ts +0 -74
- package/src/utils/git.ts +0 -117
- package/src/utils/local-ai.test.ts +0 -130
- package/src/utils/local-ai.ts +0 -116
- package/src/utils/multi-git.ts +0 -313
- package/src/utils/prompts.ts +0 -209
- package/src/utils/session-finder.ts +0 -483
- package/src/utils/system-scanner.test.ts +0 -89
- package/src/utils/system-scanner.ts +0 -96
- package/src/utils/update-check.ts +0 -286
- package/src/utils/workflow-advisor.ts +0 -118
- package/src/utils/workflows.test.ts +0 -114
- package/src/utils/workflows.ts +0 -178
- package/tsconfig.json +0 -19
- package/vitest.config.ts +0 -14
package/gui/src/index.css
DELETED
|
@@ -1,152 +0,0 @@
|
|
|
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
DELETED
|
@@ -1,94 +0,0 @@
|
|
|
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
DELETED
|
@@ -1,62 +0,0 @@
|
|
|
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
|
-
}
|
package/gui/tsconfig.app.json
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
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
DELETED
package/gui/tsconfig.node.json
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
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
|
-
}
|
package/gui/vite.config.ts
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
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,8 +0,0 @@
|
|
|
1
|
-
# Team Cooperation Guidelines
|
|
2
|
-
|
|
3
|
-
You are the lead developer. You must coordinate a Plan-Implement-Review loop to complete the task:
|
|
4
|
-
|
|
5
|
-
1. **Research & Plan**: Research the requirements and codebase first. Create a plan (`implementation_plan.md`) describing the proposed changes.
|
|
6
|
-
2. **Implement**: Define a `Code_Implementer` subagent equipped with code editing and terminal tools. Send them the plan and instruct them to write the changes.
|
|
7
|
-
3. **Review**: Once implemented, define a `Code_Reviewer` subagent to run verification tests and review the changes for correctness.
|
|
8
|
-
4. **Loop**: If the reviewer finds bugs or test failures, send the feedback back to the implementer and repeat the cycle until the changes are approved.
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
# Team Cooperation Guidelines
|
|
2
|
-
|
|
3
|
-
You are the lead investigator. You must coordinate a research-heavy cycle:
|
|
4
|
-
|
|
5
|
-
1. **Deep Research**: Define a `Research_Specialist` subagent to scan the codebase, find dependencies, and write a thorough context guide outlining how the system works.
|
|
6
|
-
2. **Test-Driven Implement**: Write test suites first based on the research findings, then spawn a developer subagent to code until all tests pass successfully.
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import * as path from 'node:path';
|
|
2
|
-
import * as os from 'node:os';
|
|
3
|
-
import { loadConfig } from '../src/core/config.js';
|
|
4
|
-
import { createWorkspace } from '../src/core/workspace.js';
|
|
5
|
-
import { analyzeAllRepos } from '../src/analyzers/index.js';
|
|
6
|
-
import { generateContextFiles } from '../src/generators/index.js';
|
|
7
|
-
|
|
8
|
-
async function main() {
|
|
9
|
-
const config = await loadConfig();
|
|
10
|
-
const repoPath = 'C:\\Users\\patro\\dev\\easyagent_container';
|
|
11
|
-
|
|
12
|
-
console.log('Creating Workspace 1: feat/rate-limiting-standard (Local LLM DISABLED)');
|
|
13
|
-
const ws1Path = path.join(config.workspacesDir, 'feat/rate-limiting-standard');
|
|
14
|
-
const feature1 = {
|
|
15
|
-
id: 'feat/rate-limiting-standard',
|
|
16
|
-
branchName: 'feat/rate-limiting-standard',
|
|
17
|
-
description: 'Implement rate limiting and connection pooling',
|
|
18
|
-
repos: [repoPath],
|
|
19
|
-
assistants: ['claude'],
|
|
20
|
-
workspacePath: ws1Path,
|
|
21
|
-
createdAt: new Date().toISOString(),
|
|
22
|
-
localLlmEnabled: false,
|
|
23
|
-
};
|
|
24
|
-
const repos1 = [{ name: 'easyagent_container', path: path.join(ws1Path, 'easyagent_container'), isGitRepo: true, defaultBranch: 'master' }];
|
|
25
|
-
|
|
26
|
-
await createWorkspace(feature1, [{ name: 'easyagent_container', path: repoPath, isGitRepo: true, defaultBranch: 'master' }]);
|
|
27
|
-
const analysis1 = await analyzeAllRepos(repos1);
|
|
28
|
-
const ctx1 = { feature: feature1, repos: repos1, analysis: analysis1 };
|
|
29
|
-
await generateContextFiles(ctx1, ['claude'], ws1Path);
|
|
30
|
-
console.log('✅ Workspace 1 created at:', ws1Path);
|
|
31
|
-
|
|
32
|
-
console.log('\nCreating Workspace 2: feat/rate-limiting-local-llm (Local LLM ENABLED)');
|
|
33
|
-
const ws2Path = path.join(config.workspacesDir, 'feat/rate-limiting-local-llm');
|
|
34
|
-
const feature2 = {
|
|
35
|
-
id: 'feat/rate-limiting-local-llm',
|
|
36
|
-
branchName: 'feat/rate-limiting-local-llm',
|
|
37
|
-
description: 'Implement rate limiting and connection pooling',
|
|
38
|
-
repos: [repoPath],
|
|
39
|
-
assistants: ['claude'],
|
|
40
|
-
workspacePath: ws2Path,
|
|
41
|
-
createdAt: new Date().toISOString(),
|
|
42
|
-
localLlmEnabled: true,
|
|
43
|
-
};
|
|
44
|
-
const repos2 = [{ name: 'easyagent_container', path: path.join(ws2Path, 'easyagent_container'), isGitRepo: true, defaultBranch: 'master' }];
|
|
45
|
-
|
|
46
|
-
await createWorkspace(feature2, [{ name: 'easyagent_container', path: repoPath, isGitRepo: true, defaultBranch: 'master' }]);
|
|
47
|
-
const analysis2 = await analyzeAllRepos(repos2);
|
|
48
|
-
const ctx2 = { feature: feature2, repos: repos2, analysis: analysis2, localLlm: config.localLlm };
|
|
49
|
-
await generateContextFiles(ctx2, ['claude'], ws2Path);
|
|
50
|
-
console.log('✅ Workspace 2 created at:', ws2Path);
|
|
51
|
-
|
|
52
|
-
console.log('\nBoth test workspaces are ready!');
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
main().catch(console.error);
|
package/skills-lock.json
DELETED