@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.
- package/.github/dependabot.yml +52 -52
- package/.github/workflows/dependabot-merge.yml +53 -0
- package/.github/workflows/release.yml +112 -100
- package/.vscode/launch.json +17 -17
- package/.vscode/tasks.json +17 -17
- package/GETTING_STARTED.md +114 -109
- package/README.md +336 -311
- package/desktop/build-installer.js +228 -0
- package/desktop/build.js +118 -0
- package/desktop/installer/nexusflow.iss +35 -0
- package/desktop/neutralino.config.json +39 -0
- package/desktop/package-lock.json +1060 -0
- package/desktop/package.json +14 -0
- package/dist/commands/desktop.d.ts +12 -0
- package/dist/commands/desktop.d.ts.map +1 -0
- package/dist/commands/desktop.js +119 -0
- package/dist/commands/desktop.js.map +1 -0
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js +1 -3
- package/dist/commands/sync.js.map +1 -1
- package/dist/commands/tui.d.ts +8 -0
- package/dist/commands/tui.d.ts.map +1 -0
- package/dist/commands/tui.js +386 -0
- package/dist/commands/tui.js.map +1 -0
- package/dist/commands/ui.d.ts +3 -1
- package/dist/commands/ui.d.ts.map +1 -1
- package/dist/commands/ui.js +76 -19
- package/dist/commands/ui.js.map +1 -1
- package/dist/generators/base.d.ts.map +1 -1
- package/dist/generators/base.js +78 -66
- package/dist/generators/base.js.map +1 -1
- package/dist/generators/codex.js +11 -11
- package/dist/generators/copilot.js +17 -17
- package/dist/generators/cursor.js +5 -5
- package/dist/generators/index.js +50 -50
- package/dist/generators/map-generator.js +14 -14
- package/dist/generators/skills-generator.js +28 -28
- package/dist/gui/app_logo.png +0 -0
- package/dist/gui/assets/index-Ct3qq-X4.js +25 -0
- package/dist/gui/assets/index-P_ZrgHXg.css +1 -0
- package/dist/gui/icons.svg +24 -24
- package/dist/gui/index.html +18 -18
- package/dist/index.js +43 -0
- package/dist/index.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +182 -1
- package/dist/server.js.map +1 -1
- package/dist/server.test.js +78 -0
- package/dist/server.test.js.map +1 -1
- package/dist/types.d.ts +4 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/git.d.ts +16 -0
- package/dist/utils/git.d.ts.map +1 -1
- package/dist/utils/git.js +52 -0
- package/dist/utils/git.js.map +1 -1
- package/dist/utils/multi-git.d.ts +2 -0
- package/dist/utils/multi-git.d.ts.map +1 -1
- package/dist/utils/multi-git.js +5 -2
- package/dist/utils/multi-git.js.map +1 -1
- package/dist/utils/update-check.d.ts +3 -1
- package/dist/utils/update-check.d.ts.map +1 -1
- package/dist/utils/update-check.js +23 -6
- package/dist/utils/update-check.js.map +1 -1
- package/dist/utils/workflows.d.ts +11 -0
- package/dist/utils/workflows.d.ts.map +1 -0
- package/dist/utils/workflows.js +156 -0
- package/dist/utils/workflows.js.map +1 -0
- package/dist/utils/workflows.test.d.ts +2 -0
- package/dist/utils/workflows.test.d.ts.map +1 -0
- package/dist/utils/workflows.test.js +86 -0
- package/dist/utils/workflows.test.js.map +1 -0
- package/extension/media/icon.svg +1 -0
- package/extension/package-lock.json +2673 -2811
- package/extension/package.json +108 -70
- package/extension/src/extension.ts +631 -204
- package/extension/tsconfig.json +21 -19
- package/gui/README.md +73 -73
- package/gui/e2e/wizard.spec.ts +346 -327
- package/gui/eslint.config.js +26 -26
- package/gui/index.html +17 -17
- package/gui/package-lock.json +3079 -3118
- package/gui/package.json +36 -36
- package/gui/playwright.config.ts +41 -41
- package/gui/public/app_logo.png +0 -0
- package/gui/public/icons.svg +24 -24
- package/gui/src/App.css +1 -1
- package/gui/src/App.tsx +3407 -2722
- package/gui/src/assets/vite.svg +1 -1
- package/gui/src/features/changes/ChangesViewer.tsx +388 -388
- package/gui/src/features/knowledge/KnowledgeBase.tsx +84 -84
- package/gui/src/features/onboarding/OnboardingWizard.tsx +230 -230
- package/gui/src/features/plan/ImplementationPlan.tsx +32 -32
- package/gui/src/features/services/ServiceConsole.tsx +250 -250
- package/gui/src/features/sessions/SessionHistory.tsx +195 -195
- package/gui/src/features/workspace/WorkspaceList.tsx +666 -666
- package/gui/src/index.css +152 -110
- package/gui/src/main.tsx +94 -10
- package/gui/src/types.ts +62 -62
- package/gui/tsconfig.app.json +25 -25
- package/gui/tsconfig.json +7 -7
- package/gui/tsconfig.node.json +24 -24
- package/gui/vite.config.ts +12 -12
- package/package.json +56 -56
- package/resources/workflows/plan-implement-review.md +8 -0
- package/resources/workflows/research-verify.md +6 -0
- package/resources/workflows/solo-developer.md +3 -0
- package/scripts/simulate-workspaces.ts +55 -55
- package/src/analyzers/detect-apis.ts +290 -290
- package/src/analyzers/detect-deps.ts +315 -315
- package/src/analyzers/detect-existing.ts +74 -74
- package/src/analyzers/detect-ports.ts +110 -110
- package/src/analyzers/index.ts +97 -97
- package/src/analyzers/messaging-analyzer.ts +254 -254
- package/src/analyzers/readme-summarizer.ts +102 -102
- package/src/analyzers/run-analyzer.ts +269 -269
- package/src/analyzers/tech-stack.ts +283 -283
- package/src/commands/add-repo.ts +157 -157
- package/src/commands/commands.test.ts +155 -155
- package/src/commands/commit.ts +131 -131
- package/src/commands/create.ts +207 -207
- package/src/commands/desktop.ts +128 -0
- package/src/commands/diff.ts +125 -125
- package/src/commands/doctor.ts +357 -357
- package/src/commands/handoff.ts +266 -266
- package/src/commands/init.ts +134 -134
- package/src/commands/list.ts +46 -46
- package/src/commands/logs.ts +63 -63
- package/src/commands/mcp.ts +92 -92
- package/src/commands/open.ts +129 -129
- package/src/commands/pack.ts +73 -73
- package/src/commands/refresh.ts +147 -147
- package/src/commands/remove.ts +98 -98
- package/src/commands/start.ts +117 -117
- package/src/commands/status.ts +54 -54
- package/src/commands/stop.ts +55 -55
- package/src/commands/sync.ts +151 -153
- package/src/commands/tui.ts +424 -0
- package/src/commands/ui.ts +111 -47
- package/src/core/config.test.ts +96 -96
- package/src/core/config.ts +115 -115
- package/src/core/graph.ts +344 -344
- package/src/core/packer.test.ts +99 -99
- package/src/core/packer.ts +107 -107
- package/src/core/scanner.test.ts +61 -61
- package/src/core/scanner.ts +91 -91
- package/src/core/workspace.ts +380 -380
- package/src/core/worktree.ts +120 -120
- package/src/generators/antigravity.ts +32 -32
- package/src/generators/base.ts +240 -227
- package/src/generators/claude.ts +34 -34
- package/src/generators/codex.ts +48 -48
- package/src/generators/copilot.ts +56 -56
- package/src/generators/cursor.ts +44 -44
- package/src/generators/index.ts +250 -250
- package/src/generators/map-generator.test.ts +159 -159
- package/src/generators/map-generator.ts +542 -542
- package/src/generators/plan-generator.ts +481 -481
- package/src/generators/skills-generator.ts +259 -259
- package/src/index.ts +426 -382
- package/src/mcp/server.ts +294 -294
- package/src/orchestration/detect.ts +313 -313
- package/src/orchestration/index.ts +7 -7
- package/src/orchestration/runner.ts +283 -283
- package/src/server.test.ts +555 -464
- package/src/server.ts +1308 -1104
- package/src/types.ts +408 -403
- package/src/utils/detect-ai.test.ts +44 -44
- package/src/utils/detect-ai.ts +84 -84
- package/src/utils/detect-editors.test.ts +48 -48
- package/src/utils/detect-editors.ts +57 -57
- package/src/utils/git.test.ts +74 -74
- package/src/utils/git.ts +117 -61
- package/src/utils/local-ai.test.ts +130 -130
- package/src/utils/local-ai.ts +111 -111
- package/src/utils/multi-git.ts +313 -306
- package/src/utils/prompts.ts +209 -209
- package/src/utils/session-finder.ts +483 -483
- package/src/utils/system-scanner.test.ts +89 -89
- package/src/utils/system-scanner.ts +96 -96
- package/src/utils/update-check.ts +309 -275
- package/src/utils/workflows.test.ts +114 -0
- package/src/utils/workflows.ts +178 -0
- package/tsconfig.json +19 -19
- package/vitest.config.ts +14 -14
- package/dist/gui/assets/index-CFWwqFux.js +0 -23
- package/dist/gui/assets/index-Dvc9QMvl.css +0 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../src/commands/ui.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../src/commands/ui.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAuCH;;;;GAIG;AACH,wBAAsB,SAAS,CAAC,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA8DjH"}
|
package/dist/commands/ui.js
CHANGED
|
@@ -3,38 +3,95 @@
|
|
|
3
3
|
* Starts the Hono web server and opens the browser to the NexusFlow GUI.
|
|
4
4
|
*/
|
|
5
5
|
import chalk from 'chalk';
|
|
6
|
-
import { exec } from 'node:child_process';
|
|
6
|
+
import { exec, spawn } from 'node:child_process';
|
|
7
|
+
import { fileURLToPath } from 'node:url';
|
|
8
|
+
import * as net from 'node:net';
|
|
7
9
|
import { startServer } from '../server.js';
|
|
10
|
+
function isPortActive(port) {
|
|
11
|
+
return new Promise((resolve) => {
|
|
12
|
+
const socket = net.connect(port, 'localhost');
|
|
13
|
+
socket.on('connect', () => {
|
|
14
|
+
socket.destroy();
|
|
15
|
+
resolve(true);
|
|
16
|
+
});
|
|
17
|
+
socket.on('error', () => {
|
|
18
|
+
resolve(false);
|
|
19
|
+
});
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
function openBrowser(url) {
|
|
23
|
+
let openCmd = '';
|
|
24
|
+
if (process.platform === 'win32') {
|
|
25
|
+
openCmd = `start ${url}`;
|
|
26
|
+
}
|
|
27
|
+
else if (process.platform === 'darwin') {
|
|
28
|
+
openCmd = `open ${url}`;
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
openCmd = `xdg-open ${url}`;
|
|
32
|
+
}
|
|
33
|
+
exec(openCmd, (err) => {
|
|
34
|
+
if (err) {
|
|
35
|
+
console.log(chalk.dim(` Could not auto-open browser. Please visit ${url} manually.`));
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
}
|
|
8
39
|
/**
|
|
9
40
|
* Starts the local GUI server and opens the dashboard in the default browser.
|
|
10
41
|
*
|
|
11
|
-
* @param options - CLI options, including optional port.
|
|
42
|
+
* @param options - CLI options, including optional port, daemon, and server-only.
|
|
12
43
|
*/
|
|
13
44
|
export async function uiCommand(options) {
|
|
14
45
|
const port = options.port ? parseInt(options.port, 10) : 3000;
|
|
46
|
+
const url = `http://localhost:${port}`;
|
|
15
47
|
console.log(chalk.bold.cyan('\n🖥️ NexusFlow — Web Dashboard\n'));
|
|
48
|
+
// Check if port is already active
|
|
49
|
+
const active = await isPortActive(port);
|
|
50
|
+
if (active) {
|
|
51
|
+
console.log(chalk.green(` ✔ Dashboard is already active at: ${chalk.bold(url)}`));
|
|
52
|
+
if (!options.serverOnly) {
|
|
53
|
+
console.log(chalk.dim(' Opening browser...'));
|
|
54
|
+
openBrowser(url);
|
|
55
|
+
}
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
// Handle Daemon mode (runs detached in the background)
|
|
59
|
+
if (options.daemon) {
|
|
60
|
+
console.log(chalk.dim(' Starting server in the background...'));
|
|
61
|
+
try {
|
|
62
|
+
const serverScript = fileURLToPath(new URL('../index.js', import.meta.url));
|
|
63
|
+
const child = spawn(process.execPath, [serverScript, 'ui', '--port', String(port), '--server-only'], {
|
|
64
|
+
detached: true,
|
|
65
|
+
stdio: 'ignore'
|
|
66
|
+
});
|
|
67
|
+
child.unref();
|
|
68
|
+
console.log(chalk.green(` ✔ Dashboard daemon successfully spawned.`));
|
|
69
|
+
if (!options.serverOnly) {
|
|
70
|
+
console.log(chalk.dim(' Opening browser...'));
|
|
71
|
+
// Give the background process a brief moment to start listening
|
|
72
|
+
await new Promise((resolve) => setTimeout(resolve, 600));
|
|
73
|
+
openBrowser(url);
|
|
74
|
+
}
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
catch (err) {
|
|
78
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
79
|
+
console.error(chalk.red(` ✖ Failed to start background daemon: ${msg}`));
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
// Standard foreground blocking mode
|
|
16
84
|
console.log(chalk.dim(' Starting local server...'));
|
|
17
85
|
try {
|
|
18
86
|
const { port: actualPort } = await startServer(port);
|
|
19
|
-
const
|
|
20
|
-
console.log(chalk.green(` ✔ Dashboard running at: ${chalk.bold(
|
|
87
|
+
const actualUrl = `http://localhost:${actualPort}`;
|
|
88
|
+
console.log(chalk.green(` ✔ Dashboard running at: ${chalk.bold(actualUrl)}`));
|
|
21
89
|
console.log(chalk.dim(' Press Ctrl+C to stop.\n'));
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
if (process.platform === 'win32') {
|
|
25
|
-
openCmd = `start ${url}`;
|
|
90
|
+
if (!options.serverOnly) {
|
|
91
|
+
openBrowser(actualUrl);
|
|
26
92
|
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
}
|
|
30
|
-
else {
|
|
31
|
-
openCmd = `xdg-open ${url}`;
|
|
32
|
-
}
|
|
33
|
-
exec(openCmd, (err) => {
|
|
34
|
-
if (err) {
|
|
35
|
-
console.log(chalk.dim(` Could not auto-open browser. Please visit ${url} manually.`));
|
|
36
|
-
}
|
|
37
|
-
});
|
|
93
|
+
// Keep process alive
|
|
94
|
+
await new Promise(() => { });
|
|
38
95
|
}
|
|
39
96
|
catch (error) {
|
|
40
97
|
const msg = error instanceof Error ? error.message : String(error);
|
package/dist/commands/ui.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../../src/commands/ui.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../../src/commands/ui.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/generators/base.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,gBAAgB,EAAmB,MAAM,aAAa,CAAC;AAwDrE;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,gBAAgB,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/generators/base.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,gBAAgB,EAAmB,MAAM,aAAa,CAAC;AAwDrE;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,gBAAgB,GAAG,MAAM,CAuKjE"}
|
package/dist/generators/base.js
CHANGED
|
@@ -86,15 +86,15 @@ export function buildContextContent(ctx) {
|
|
|
86
86
|
}
|
|
87
87
|
}
|
|
88
88
|
if (allConfigs.length > 0) {
|
|
89
|
-
existingConfigsSection = `
|
|
90
|
-
---
|
|
91
|
-
|
|
92
|
-
## Existing AI Configurations
|
|
93
|
-
|
|
94
|
-
The following repos already have AI assistant configuration files.
|
|
95
|
-
Incorporate their instructions when working in those repos:
|
|
96
|
-
|
|
97
|
-
${allConfigs.join('\n')}
|
|
89
|
+
existingConfigsSection = `
|
|
90
|
+
---
|
|
91
|
+
|
|
92
|
+
## Existing AI Configurations
|
|
93
|
+
|
|
94
|
+
The following repos already have AI assistant configuration files.
|
|
95
|
+
Incorporate their instructions when working in those repos:
|
|
96
|
+
|
|
97
|
+
${allConfigs.join('\n')}
|
|
98
98
|
`;
|
|
99
99
|
}
|
|
100
100
|
}
|
|
@@ -122,14 +122,14 @@ ${allConfigs.join('\n')}
|
|
|
122
122
|
}
|
|
123
123
|
}
|
|
124
124
|
if (parts.length > 0) {
|
|
125
|
-
resumptionSection = `
|
|
126
|
-
---
|
|
127
|
-
|
|
128
|
-
## Workspace Resumption & Verification Commands
|
|
129
|
-
|
|
130
|
-
Use these pre-configured commands to spin up mocks, run background services, and verify your changes:
|
|
131
|
-
|
|
132
|
-
${parts.join('\n')}
|
|
125
|
+
resumptionSection = `
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
## Workspace Resumption & Verification Commands
|
|
129
|
+
|
|
130
|
+
Use these pre-configured commands to spin up mocks, run background services, and verify your changes:
|
|
131
|
+
|
|
132
|
+
${parts.join('\n')}
|
|
133
133
|
`;
|
|
134
134
|
}
|
|
135
135
|
}
|
|
@@ -145,60 +145,72 @@ ${parts.join('\n')}
|
|
|
145
145
|
}
|
|
146
146
|
}
|
|
147
147
|
catch { }
|
|
148
|
+
// Teamwork strategy section
|
|
149
|
+
let teamworkSection = '';
|
|
150
|
+
if (feature.teamworkInstructions) {
|
|
151
|
+
teamworkSection = `
|
|
152
|
+
---
|
|
153
|
+
|
|
154
|
+
## Team Collaboration Strategy
|
|
155
|
+
|
|
156
|
+
${feature.teamworkInstructions}
|
|
157
|
+
`;
|
|
158
|
+
}
|
|
148
159
|
const taskSection = setupDone
|
|
149
160
|
? `## Setup Status\n\n✅ **Setup Completed**: Project assumptions and initial questions have been addressed. Refer to [nexusflow-knowledge.md](file:///${knowledgePath}) for persistent session details.`
|
|
150
161
|
: `## First Steps\n\nYour very first task upon entering this workspace is to explore the codebase and align with the user:\n\n1. **Verify Assumptions**: Open [nexusflow-knowledge.md](file:///${knowledgePath}) and fill in the **Project Assumptions** section with a brief description of what each project does, its tech stack, and responsibilities.\n2. **Raise Questions**: Document any outstanding uncertainties or architectural questions in the **Clarifying Questions for the User** section.\n3. **Obtain Approval**: Ask the user to confirm your assumptions and answer your questions before writing any code.`;
|
|
151
|
-
return `# Multi-Repo Workspace Context
|
|
152
|
-
|
|
153
|
-
## Feature: ${feature.id}
|
|
154
|
-
|
|
155
|
-
**Description:** ${feature.description}
|
|
156
|
-
|
|
157
|
-
> For the detailed feature specification, architecture decisions, and session memory, see [nexusflow-knowledge.md](file:///${knowledgePath}).
|
|
158
|
-
|
|
159
|
-
---
|
|
160
|
-
|
|
161
|
-
## Projects
|
|
162
|
-
|
|
163
|
-
This workspace contains the following projects, each checked out as a
|
|
164
|
-
git worktree on the feature branch:
|
|
165
|
-
|
|
166
|
-
${projectSections}
|
|
167
|
-
${existingConfigsSection}
|
|
168
|
-
${resumptionSection}
|
|
169
|
-
---
|
|
170
|
-
|
|
171
|
-
${taskSection}
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
- **
|
|
179
|
-
- **
|
|
180
|
-
- **
|
|
181
|
-
- **
|
|
182
|
-
|
|
183
|
-
- \`nexusflow
|
|
184
|
-
- \`nexusflow
|
|
185
|
-
- \`nexusflow
|
|
186
|
-
- \`nexusflow
|
|
187
|
-
-
|
|
188
|
-
- **
|
|
162
|
+
return `# Multi-Repo Workspace Context
|
|
163
|
+
|
|
164
|
+
## Feature: ${feature.id}
|
|
165
|
+
|
|
166
|
+
**Description:** ${feature.description}
|
|
167
|
+
|
|
168
|
+
> For the detailed feature specification, architecture decisions, and session memory, see [nexusflow-knowledge.md](file:///${knowledgePath}).
|
|
169
|
+
|
|
170
|
+
---
|
|
171
|
+
|
|
172
|
+
## Projects
|
|
173
|
+
|
|
174
|
+
This workspace contains the following projects, each checked out as a
|
|
175
|
+
git worktree on the feature branch:
|
|
176
|
+
|
|
177
|
+
${projectSections}
|
|
178
|
+
${existingConfigsSection}
|
|
179
|
+
${resumptionSection}
|
|
180
|
+
---
|
|
181
|
+
|
|
182
|
+
${taskSection}
|
|
183
|
+
${teamworkSection}
|
|
184
|
+
---
|
|
185
|
+
|
|
186
|
+
## Guidelines
|
|
187
|
+
|
|
188
|
+
- **Multi-Repo Workspace Structure**: This workspace is a multi-repository developer environment where each project subdirectory (e.g. \`my-api\`, \`my-frontend\`) is a separate Git worktree checked out on the feature branch \`${feature.branchName}\`.
|
|
189
|
+
- **All code changes** must be made within the appropriate project subdirectories.
|
|
190
|
+
- **Worktree Isolation**: Under no circumstances should you edit files, read code, or run commands in the original/main repository directories outside of this workspace folder. All development must be strictly contained within the checked-out worktree subdirectories of this workspace.
|
|
191
|
+
- **Git commands** (like \`git status\`, \`git add\`, \`git commit\`, \`git push\`) must be run inside the specific project subdirectories (e.g. \`cd my-api && git commit -m "..."\`), NOT in the workspace root.
|
|
192
|
+
- **Project commands** (like \`npm install\`, \`npm run build\`, \`npm run test\`) must be run inside the project subdirectories.
|
|
193
|
+
- **Global helpers**: Alternatively, you can run NexusFlow CLI commands from the workspace root:
|
|
194
|
+
- \`nexusflow diff\` — view changes across all sub-repositories.
|
|
195
|
+
- \`nexusflow commit\` — commit and push changes across modified repositories.
|
|
196
|
+
- \`nexusflow sync\` — rebase all repositories with their default base branches.
|
|
197
|
+
- \`nexusflow refresh\` — regenerate maps, context files and plans without rebasing.
|
|
198
|
+
- \`nexusflow doctor\` — run diagnostics to verify workspace health.
|
|
199
|
+
- **Workspace Knowledge**: Read \`nexusflow-knowledge.md\` at the start of every session. It serves as the persistent memory for this feature. Before ending your session, append significant architecture decisions, discovered gotchas, and checklist progress to \`nexusflow-knowledge.md\`. Never delete or overwrite existing knowledge/decisions — only append.
|
|
200
|
+
- **Implementation Plan**: Refer to \`nexusflow-plan.md\` for the suggested implementation order based on dependency analysis. Follow the phased implementation order to avoid blocking yourself on cross-repo dependencies.
|
|
189
201
|
${localLlmEnabled ? `- **Local AI Agent Delegation (Token Optimizer)**: You have access to a local Small Language Model (SLM) on the developer's machine via the MCP tool \`delegate_to_local_agent\`.${ctx.localLlm ? `\n - **Model Capacity**: The local agent is running \`${ctx.localLlm.model}\`. ${ctx.localLlm.model.match(/70b|72b|32b|14b/i)
|
|
190
202
|
? 'This is a highly capable model; you can delegate complex reasoning and larger code generation tasks.'
|
|
191
|
-
: 'This is a smaller model; it is best suited for targeted search, log parsing, summarization, and simple boilerplate.'}` : ''}
|
|
192
|
-
- **Usage rule**: Whenever you need to perform high-token tasks (like searching large chunks of code, analyzing raw service logs to debug, or generating repetitive boilerplate), **always use \`delegate_to_local_agent\`** first.
|
|
193
|
-
- The local model is free and fast. Pass the instruction and any logs/source files in \`filesToRead\` (relative paths). Use the distilled summary returned to formulate your final output, saving up to 90% in remote context tokens.
|
|
194
|
-
` : ''}- Read each project's existing \`README.md\` and any doc files before proposing changes.
|
|
195
|
-
- When modifying a shared library, check every downstream consumer for breakage.
|
|
196
|
-
- Prefer small, focused commits that touch one repo at a time when possible.
|
|
197
|
-
- If a change must span repos, describe the ordering and any migration steps.
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
203
|
+
: 'This is a smaller model; it is best suited for targeted search, log parsing, summarization, and simple boilerplate.'}` : ''}
|
|
204
|
+
- **Usage rule**: Whenever you need to perform high-token tasks (like searching large chunks of code, analyzing raw service logs to debug, or generating repetitive boilerplate), **always use \`delegate_to_local_agent\`** first.
|
|
205
|
+
- The local model is free and fast. Pass the instruction and any logs/source files in \`filesToRead\` (relative paths). Use the distilled summary returned to formulate your final output, saving up to 90% in remote context tokens.
|
|
206
|
+
` : ''}- Read each project's existing \`README.md\` and any doc files before proposing changes.
|
|
207
|
+
- When modifying a shared library, check every downstream consumer for breakage.
|
|
208
|
+
- Prefer small, focused commits that touch one repo at a time when possible.
|
|
209
|
+
- If a change must span repos, describe the ordering and any migration steps.
|
|
210
|
+
|
|
211
|
+
|
|
212
|
+
|
|
213
|
+
|
|
202
214
|
`;
|
|
203
215
|
}
|
|
204
216
|
//# sourceMappingURL=base.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/generators/base.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/generators/base.ts"],"names":[],"mappings":"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"}
|
package/dist/generators/codex.js
CHANGED
|
@@ -16,17 +16,17 @@ import { buildContextContent } from './base.js';
|
|
|
16
16
|
*/
|
|
17
17
|
export async function generateCodexConfig(ctx, workspacePath) {
|
|
18
18
|
const baseContent = buildContextContent(ctx);
|
|
19
|
-
const codexExtra = `
|
|
20
|
-
---
|
|
21
|
-
|
|
22
|
-
## Codex-Specific Notes
|
|
23
|
-
|
|
24
|
-
- Each project subdirectory may contain its own \`AGENTS.md\` or
|
|
25
|
-
\`AGENTS.override.md\` with module-specific context.
|
|
26
|
-
- When working in a subdirectory, check for local overrides before
|
|
27
|
-
applying workspace-level guidance.
|
|
28
|
-
- Use \`codex --approval-mode suggest\` for cross-repo changes to
|
|
29
|
-
review each change before applying.
|
|
19
|
+
const codexExtra = `
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## Codex-Specific Notes
|
|
23
|
+
|
|
24
|
+
- Each project subdirectory may contain its own \`AGENTS.md\` or
|
|
25
|
+
\`AGENTS.override.md\` with module-specific context.
|
|
26
|
+
- When working in a subdirectory, check for local overrides before
|
|
27
|
+
applying workspace-level guidance.
|
|
28
|
+
- Use \`codex --approval-mode suggest\` for cross-repo changes to
|
|
29
|
+
review each change before applying.
|
|
30
30
|
`;
|
|
31
31
|
const content = baseContent + codexExtra;
|
|
32
32
|
const filePath = path.join(workspacePath, 'AGENTS.md');
|
|
@@ -16,23 +16,23 @@ import { buildContextContent } from './base.js';
|
|
|
16
16
|
*/
|
|
17
17
|
export async function generateCopilotConfig(ctx, workspacePath) {
|
|
18
18
|
const baseContent = buildContextContent(ctx);
|
|
19
|
-
const copilotExtra = `
|
|
20
|
-
---
|
|
21
|
-
|
|
22
|
-
## Copilot-Specific Notes
|
|
23
|
-
|
|
24
|
-
- Path-scoped instructions can be added in \`.github/instructions/\`
|
|
25
|
-
using \`*.instructions.md\` files with YAML frontmatter to target
|
|
26
|
-
specific file patterns.
|
|
27
|
-
- Example path-scoped file:
|
|
28
|
-
\`\`\`markdown
|
|
29
|
-
---
|
|
30
|
-
applyTo:
|
|
31
|
-
- src/frontend/**
|
|
32
|
-
---
|
|
33
|
-
# Frontend Guidelines
|
|
34
|
-
- Use TypeScript strict mode.
|
|
35
|
-
\`\`\`
|
|
19
|
+
const copilotExtra = `
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## Copilot-Specific Notes
|
|
23
|
+
|
|
24
|
+
- Path-scoped instructions can be added in \`.github/instructions/\`
|
|
25
|
+
using \`*.instructions.md\` files with YAML frontmatter to target
|
|
26
|
+
specific file patterns.
|
|
27
|
+
- Example path-scoped file:
|
|
28
|
+
\`\`\`markdown
|
|
29
|
+
---
|
|
30
|
+
applyTo:
|
|
31
|
+
- src/frontend/**
|
|
32
|
+
---
|
|
33
|
+
# Frontend Guidelines
|
|
34
|
+
- Use TypeScript strict mode.
|
|
35
|
+
\`\`\`
|
|
36
36
|
`;
|
|
37
37
|
const content = baseContent + copilotExtra;
|
|
38
38
|
const githubDir = path.join(workspacePath, '.github');
|
|
@@ -17,11 +17,11 @@ import { buildContextContent } from './base.js';
|
|
|
17
17
|
*/
|
|
18
18
|
export async function generateCursorConfig(ctx, workspacePath) {
|
|
19
19
|
const baseContent = buildContextContent(ctx);
|
|
20
|
-
const content = `---
|
|
21
|
-
description: "NexusFlow workspace context for multi-repo feature development"
|
|
22
|
-
alwaysApply: true
|
|
23
|
-
---
|
|
24
|
-
|
|
20
|
+
const content = `---
|
|
21
|
+
description: "NexusFlow workspace context for multi-repo feature development"
|
|
22
|
+
alwaysApply: true
|
|
23
|
+
---
|
|
24
|
+
|
|
25
25
|
${baseContent}`;
|
|
26
26
|
const rulesDir = path.join(workspacePath, '.cursor', 'rules');
|
|
27
27
|
const filePath = path.join(rulesDir, 'nexusflow.mdc');
|
package/dist/generators/index.js
CHANGED
|
@@ -37,56 +37,56 @@ function buildKnowledgeContent(ctx) {
|
|
|
37
37
|
}).join('\n');
|
|
38
38
|
// Build initial progress checklist
|
|
39
39
|
const progressItems = repos.map((r) => `- [ ] ${r.name} — changes implemented and tested`).join('\n');
|
|
40
|
-
return `# Workspace Knowledge — ${feature.id}
|
|
41
|
-
|
|
42
|
-
> **This file is a living document.** AI assistants should read this at the
|
|
43
|
-
> start of each session and append new learnings at the end.
|
|
44
|
-
> It preserves context across sessions so decisions aren't lost or repeated.
|
|
45
|
-
|
|
46
|
-
## Feature Goal
|
|
47
|
-
|
|
48
|
-
${feature.description}
|
|
49
|
-
|
|
50
|
-
**Branch:** \`${feature.branchName}\`
|
|
51
|
-
**Created:** ${feature.createdAt}
|
|
52
|
-
|
|
53
|
-
## Repos in This Workspace
|
|
54
|
-
|
|
55
|
-
${repoList}
|
|
56
|
-
|
|
57
|
-
## Project Assumptions (verify with user)
|
|
58
|
-
|
|
59
|
-
<!-- AI assistants: Fill this in during your first session. List each project and describe what you assume its main purpose, tech stack, and responsibilities are. -->
|
|
60
|
-
|
|
61
|
-
_(No assumptions recorded yet. AI assistant to populate.)_
|
|
62
|
-
|
|
63
|
-
## Clarifying Questions for the User
|
|
64
|
-
|
|
65
|
-
<!-- AI assistants: List any clarifying questions or ambiguities about requirements/architecture here. -->
|
|
66
|
-
|
|
67
|
-
_(No open questions recorded yet. AI assistant to populate.)_
|
|
68
|
-
|
|
69
|
-
## Architecture Decisions
|
|
70
|
-
|
|
71
|
-
<!-- AI assistants: append decisions here as they are made during development.
|
|
72
|
-
Format: ### YYYY-MM-DD — Decision Title
|
|
73
|
-
**Decision:** What was decided
|
|
74
|
-
**Alternatives considered:** What else was evaluated
|
|
75
|
-
**Reasoning:** Why this choice was made -->
|
|
76
|
-
|
|
77
|
-
_(No decisions recorded yet.)_
|
|
78
|
-
|
|
79
|
-
## Implementation Progress
|
|
80
|
-
|
|
81
|
-
${progressItems}
|
|
82
|
-
|
|
83
|
-
## Known Gotchas
|
|
84
|
-
|
|
85
|
-
<!-- AI assistants: append any gotchas, workarounds, or "watch out for" items
|
|
86
|
-
discovered during development. These help future sessions avoid repeating
|
|
87
|
-
the same debugging. -->
|
|
88
|
-
|
|
89
|
-
_(No gotchas recorded yet.)_
|
|
40
|
+
return `# Workspace Knowledge — ${feature.id}
|
|
41
|
+
|
|
42
|
+
> **This file is a living document.** AI assistants should read this at the
|
|
43
|
+
> start of each session and append new learnings at the end.
|
|
44
|
+
> It preserves context across sessions so decisions aren't lost or repeated.
|
|
45
|
+
|
|
46
|
+
## Feature Goal
|
|
47
|
+
|
|
48
|
+
${feature.description}
|
|
49
|
+
|
|
50
|
+
**Branch:** \`${feature.branchName}\`
|
|
51
|
+
**Created:** ${feature.createdAt}
|
|
52
|
+
|
|
53
|
+
## Repos in This Workspace
|
|
54
|
+
|
|
55
|
+
${repoList}
|
|
56
|
+
|
|
57
|
+
## Project Assumptions (verify with user)
|
|
58
|
+
|
|
59
|
+
<!-- AI assistants: Fill this in during your first session. List each project and describe what you assume its main purpose, tech stack, and responsibilities are. -->
|
|
60
|
+
|
|
61
|
+
_(No assumptions recorded yet. AI assistant to populate.)_
|
|
62
|
+
|
|
63
|
+
## Clarifying Questions for the User
|
|
64
|
+
|
|
65
|
+
<!-- AI assistants: List any clarifying questions or ambiguities about requirements/architecture here. -->
|
|
66
|
+
|
|
67
|
+
_(No open questions recorded yet. AI assistant to populate.)_
|
|
68
|
+
|
|
69
|
+
## Architecture Decisions
|
|
70
|
+
|
|
71
|
+
<!-- AI assistants: append decisions here as they are made during development.
|
|
72
|
+
Format: ### YYYY-MM-DD — Decision Title
|
|
73
|
+
**Decision:** What was decided
|
|
74
|
+
**Alternatives considered:** What else was evaluated
|
|
75
|
+
**Reasoning:** Why this choice was made -->
|
|
76
|
+
|
|
77
|
+
_(No decisions recorded yet.)_
|
|
78
|
+
|
|
79
|
+
## Implementation Progress
|
|
80
|
+
|
|
81
|
+
${progressItems}
|
|
82
|
+
|
|
83
|
+
## Known Gotchas
|
|
84
|
+
|
|
85
|
+
<!-- AI assistants: append any gotchas, workarounds, or "watch out for" items
|
|
86
|
+
discovered during development. These help future sessions avoid repeating
|
|
87
|
+
the same debugging. -->
|
|
88
|
+
|
|
89
|
+
_(No gotchas recorded yet.)_
|
|
90
90
|
`;
|
|
91
91
|
}
|
|
92
92
|
/**
|
|
@@ -473,20 +473,20 @@ export async function generateRepoMap(repo, analysis, workspacePath, allProduced
|
|
|
473
473
|
}
|
|
474
474
|
catch { }
|
|
475
475
|
if (!conventionsExist) {
|
|
476
|
-
const starterContent = `# Repository Conventions — ${repoName}
|
|
477
|
-
|
|
478
|
-
Use this file to record project-specific coding conventions, patterns, gotchas, and constraints learned during development.
|
|
479
|
-
Future AI assistant sessions will read these conventions from the repository map.
|
|
480
|
-
|
|
481
|
-
## Coding Patterns
|
|
482
|
-
<!-- E.g., Use ErrorContent structure for errors instead of plain strings -->
|
|
483
|
-
|
|
484
|
-
- None recorded yet.
|
|
485
|
-
|
|
486
|
-
## Gotchas & Watch-outs
|
|
487
|
-
<!-- E.g., Non-nullable enum required attributes gotchas -->
|
|
488
|
-
|
|
489
|
-
- None recorded yet.
|
|
476
|
+
const starterContent = `# Repository Conventions — ${repoName}
|
|
477
|
+
|
|
478
|
+
Use this file to record project-specific coding conventions, patterns, gotchas, and constraints learned during development.
|
|
479
|
+
Future AI assistant sessions will read these conventions from the repository map.
|
|
480
|
+
|
|
481
|
+
## Coding Patterns
|
|
482
|
+
<!-- E.g., Use ErrorContent structure for errors instead of plain strings -->
|
|
483
|
+
|
|
484
|
+
- None recorded yet.
|
|
485
|
+
|
|
486
|
+
## Gotchas & Watch-outs
|
|
487
|
+
<!-- E.g., Non-nullable enum required attributes gotchas -->
|
|
488
|
+
|
|
489
|
+
- None recorded yet.
|
|
490
490
|
`;
|
|
491
491
|
try {
|
|
492
492
|
await fs.writeFile(conventionsFile, starterContent, 'utf-8');
|