@mrpatronz/nexusflow 0.2.13 → 0.2.18
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/.agents/skills/ccc/SKILL.md +71 -0
- package/.agents/skills/ccc/references/management.md +110 -0
- package/.agents/skills/ccc/references/settings.md +126 -0
- package/.github/workflows/ci.yml +44 -0
- package/.github/workflows/dependabot-merge.yml +53 -0
- package/.github/workflows/release-desktop.yml +67 -0
- package/.github/workflows/release-npm.yml +65 -0
- package/.github/workflows/release-vscode.yml +61 -0
- package/GETTING_STARTED.md +5 -0
- package/README.md +53 -0
- 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/adapter.d.ts +27 -0
- package/dist/commands/adapter.d.ts.map +1 -0
- package/dist/commands/adapter.js +318 -0
- package/dist/commands/adapter.js.map +1 -0
- package/dist/commands/add-repo.d.ts.map +1 -1
- package/dist/commands/add-repo.js +0 -1
- package/dist/commands/add-repo.js.map +1 -1
- package/dist/commands/commands.test.js +2 -2
- package/dist/commands/commands.test.js.map +1 -1
- package/dist/commands/config.d.ts +22 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +50 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/create.d.ts.map +1 -1
- package/dist/commands/create.js +14 -17
- package/dist/commands/create.js.map +1 -1
- 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/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +11 -0
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/refresh.d.ts +1 -0
- package/dist/commands/refresh.d.ts.map +1 -1
- package/dist/commands/refresh.js +2 -14
- package/dist/commands/refresh.js.map +1 -1
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js +1 -8
- 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 +439 -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/core/adapters/local-storage.d.ts +14 -0
- package/dist/core/adapters/local-storage.d.ts.map +1 -0
- package/dist/core/adapters/local-storage.js +58 -0
- package/dist/core/adapters/local-storage.js.map +1 -0
- package/dist/core/adapters/obsidian-storage.d.ts +28 -0
- package/dist/core/adapters/obsidian-storage.d.ts.map +1 -0
- package/dist/core/adapters/obsidian-storage.js +135 -0
- package/dist/core/adapters/obsidian-storage.js.map +1 -0
- package/dist/core/adapters/registry.d.ts +8 -0
- package/dist/core/adapters/registry.d.ts.map +1 -0
- package/dist/core/adapters/registry.js +37 -0
- package/dist/core/adapters/registry.js.map +1 -0
- package/dist/core/adapters/storage.test.d.ts +2 -0
- package/dist/core/adapters/storage.test.d.ts.map +1 -0
- package/dist/core/adapters/storage.test.js +106 -0
- package/dist/core/adapters/storage.test.js.map +1 -0
- package/dist/core/adapters/vault-storage.d.ts +16 -0
- package/dist/core/adapters/vault-storage.d.ts.map +1 -0
- package/dist/core/adapters/vault-storage.js +77 -0
- package/dist/core/adapters/vault-storage.js.map +1 -0
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +28 -4
- package/dist/core/config.js.map +1 -1
- package/dist/core/plugins/index.d.ts +14 -0
- package/dist/core/plugins/index.d.ts.map +1 -0
- package/dist/core/plugins/index.js +2 -0
- package/dist/core/plugins/index.js.map +1 -0
- package/dist/core/plugins/loader.d.ts +2 -0
- package/dist/core/plugins/loader.d.ts.map +1 -0
- package/dist/core/plugins/loader.js +34 -0
- package/dist/core/plugins/loader.js.map +1 -0
- package/dist/core/ports/storage.d.ts +59 -0
- package/dist/core/ports/storage.d.ts.map +1 -0
- package/dist/core/ports/storage.js +10 -0
- package/dist/core/ports/storage.js.map +1 -0
- package/dist/core/storage.d.ts +10 -0
- package/dist/core/storage.d.ts.map +1 -0
- package/dist/core/storage.js +29 -0
- package/dist/core/storage.js.map +1 -0
- package/dist/core/workspace.d.ts.map +1 -1
- package/dist/core/workspace.js +110 -16
- package/dist/core/workspace.js.map +1 -1
- package/dist/generators/base.d.ts.map +1 -1
- package/dist/generators/base.js +19 -6
- package/dist/generators/base.js.map +1 -1
- package/dist/generators/diff-context.d.ts +6 -0
- package/dist/generators/diff-context.d.ts.map +1 -0
- package/dist/generators/diff-context.js +68 -0
- package/dist/generators/diff-context.js.map +1 -0
- package/dist/generators/index.d.ts +1 -1
- package/dist/generators/index.d.ts.map +1 -1
- package/dist/generators/index.js +75 -18
- package/dist/generators/index.js.map +1 -1
- package/dist/generators/map-generator.d.ts.map +1 -1
- package/dist/generators/map-generator.js +7 -11
- package/dist/generators/map-generator.js.map +1 -1
- package/dist/generators/plan-generator.d.ts.map +1 -1
- package/dist/generators/plan-generator.js +3 -5
- package/dist/generators/plan-generator.js.map +1 -1
- package/dist/gui/app_logo.png +0 -0
- package/dist/gui/assets/index-CB-jWded.css +1 -0
- package/dist/gui/assets/index-DDXpZZu3.js +25 -0
- package/dist/gui/index.html +2 -2
- package/dist/index.js +174 -20
- package/dist/index.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +212 -28
- package/dist/server.js.map +1 -1
- package/dist/server.test.js +173 -38
- package/dist/server.test.js.map +1 -1
- package/dist/types.d.ts +11 -2
- 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/local-ai.d.ts.map +1 -1
- package/dist/utils/local-ai.js +7 -3
- package/dist/utils/local-ai.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 -34
- package/dist/utils/update-check.js.map +1 -1
- package/dist/utils/workflow-advisor.d.ts +16 -0
- package/dist/utils/workflow-advisor.d.ts.map +1 -0
- package/dist/utils/workflow-advisor.js +100 -0
- package/dist/utils/workflow-advisor.js.map +1 -0
- 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 +4893 -1660
- package/extension/package.json +58 -11
- package/extension/src/extension.ts +476 -27
- package/extension/tsconfig.json +4 -2
- package/gui/e2e/wizard.spec.ts +19 -0
- package/gui/package-lock.json +342 -381
- package/gui/package.json +12 -12
- package/gui/public/app_logo.png +0 -0
- package/gui/src/App.tsx +991 -81
- package/gui/src/features/workspace/WorkspaceList.tsx +30 -30
- package/gui/src/index.css +64 -22
- package/gui/src/main.tsx +89 -5
- package/package.json +11 -12
- 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/skills-lock.json +11 -0
- package/src/commands/adapter.ts +348 -0
- package/src/commands/add-repo.ts +0 -1
- package/src/commands/commands.test.ts +3 -2
- package/src/commands/config.ts +52 -0
- package/src/commands/create.ts +14 -17
- package/src/commands/desktop.ts +128 -0
- package/src/commands/doctor.ts +13 -0
- package/src/commands/mcp.ts +2 -0
- package/src/commands/refresh.ts +4 -14
- package/src/commands/sync.ts +2 -8
- package/src/commands/tui.ts +484 -0
- package/src/commands/ui.ts +83 -19
- package/src/core/adapters/local-storage.ts +66 -0
- package/src/core/adapters/obsidian-storage.ts +151 -0
- package/src/core/adapters/registry.ts +44 -0
- package/src/core/adapters/storage.test.ts +174 -0
- package/src/core/adapters/vault-storage.ts +86 -0
- package/src/core/config.ts +29 -4
- package/src/core/plugins/index.ts +17 -0
- package/src/core/plugins/loader.ts +36 -0
- package/src/core/ports/storage.ts +71 -0
- package/src/core/storage.ts +37 -0
- package/src/core/workspace.ts +122 -15
- package/src/generators/base.ts +21 -5
- package/src/generators/diff-context.ts +75 -0
- package/src/generators/index.ts +93 -21
- package/src/generators/map-generator.ts +7 -10
- package/src/generators/plan-generator.ts +6 -4
- package/src/index.ts +178 -21
- package/src/server.test.ts +193 -39
- package/src/server.ts +238 -28
- package/src/types.ts +14 -2
- package/src/utils/git.ts +56 -0
- package/src/utils/local-ai.ts +8 -3
- package/src/utils/multi-git.ts +16 -9
- package/src/utils/update-check.ts +42 -31
- package/src/utils/workflow-advisor.ts +118 -0
- package/src/utils/workflows.test.ts +114 -0
- package/src/utils/workflows.ts +178 -0
- package/.github/workflows/release.yml +0 -100
- package/dist/commands/pack.d.ts +0 -7
- package/dist/commands/pack.d.ts.map +0 -1
- package/dist/commands/pack.js +0 -64
- package/dist/commands/pack.js.map +0 -1
- package/dist/core/packer.d.ts +0 -14
- package/dist/core/packer.d.ts.map +0 -1
- package/dist/core/packer.js +0 -87
- package/dist/core/packer.js.map +0 -1
- package/dist/core/packer.test.d.ts +0 -2
- package/dist/core/packer.test.d.ts.map +0 -1
- package/dist/core/packer.test.js +0 -82
- package/dist/core/packer.test.js.map +0 -1
- package/dist/gui/assets/index-CFWwqFux.js +0 -23
- package/dist/gui/assets/index-Dvc9QMvl.css +0 -2
- package/src/commands/pack.ts +0 -73
- package/src/core/packer.test.ts +0 -99
- package/src/core/packer.ts +0 -107
package/dist/core/packer.js
DELETED
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
import * as fs from 'node:fs/promises';
|
|
2
|
-
import * as path from 'node:path';
|
|
3
|
-
import { runCli } from 'repomix';
|
|
4
|
-
import { loadFeatureConfig } from './workspace.js';
|
|
5
|
-
import { loadConfig } from './config.js';
|
|
6
|
-
/**
|
|
7
|
-
* Packs all repositories in a workspace into individual XML files using Repomix.
|
|
8
|
-
*/
|
|
9
|
-
export async function packWorkspace(workspacePath, options = {}) {
|
|
10
|
-
const feature = await loadFeatureConfig(workspacePath);
|
|
11
|
-
if (!feature) {
|
|
12
|
-
throw new Error(`Workspace not found at ${workspacePath}`);
|
|
13
|
-
}
|
|
14
|
-
const config = await loadConfig();
|
|
15
|
-
const ignorePatterns = (config.excludePatterns || []).join(',');
|
|
16
|
-
const compress = options.compress !== false; // default true
|
|
17
|
-
let totalFilesCount = 0;
|
|
18
|
-
let totalCharsCount = 0;
|
|
19
|
-
let totalFileSize = 0;
|
|
20
|
-
const outputPaths = [];
|
|
21
|
-
for (const repoPath of feature.repos) {
|
|
22
|
-
const repoName = path.basename(repoPath);
|
|
23
|
-
const worktreePath = path.join(workspacePath, repoName);
|
|
24
|
-
try {
|
|
25
|
-
await fs.access(worktreePath);
|
|
26
|
-
}
|
|
27
|
-
catch {
|
|
28
|
-
continue;
|
|
29
|
-
}
|
|
30
|
-
const outputXmlPath = path.join(workspacePath, `nexusflow-context-${repoName}.xml`);
|
|
31
|
-
const instructionsPath = path.join(worktreePath, 'repomix-instruction.md');
|
|
32
|
-
// Generate dynamic repomix-instruction.md for this repo
|
|
33
|
-
const mapPath = path.join(workspacePath, `nexusflow-map-${repoName}.md`).replace(/\\/g, '/');
|
|
34
|
-
const planPath = path.join(workspacePath, `nexusflow-plan.md`).replace(/\\/g, '/');
|
|
35
|
-
const instructionsContent = [
|
|
36
|
-
`# AI Assistant Instructions for ${repoName}`,
|
|
37
|
-
'',
|
|
38
|
-
`This XML file contains the packed codebase for the repository \`${repoName}\` in the workspace \`${feature.id}\`.`,
|
|
39
|
-
'',
|
|
40
|
-
`When working with this code, you MUST follow these guidelines:`,
|
|
41
|
-
`1. **Explore Locally**: Do not rely on this XML snapshot as the source of truth for edits. Always use your native search, grep, and view tools on the live files in: \`${worktreePath.replace(/\\/g, '/')}\`.`,
|
|
42
|
-
`2. **Read the Architecture Map**: Before implementing any changes, read the generated map file at: [nexusflow-map-${repoName}.md](file:///${mapPath}) to understand its layout, API endpoints, test commands, and detected usage patterns.`,
|
|
43
|
-
`3. **Follow the Implementation Order**: See the phased plan at: [nexusflow-plan.md](file:///${planPath}) to avoid cross-repo dependency build ordering issues.`,
|
|
44
|
-
`4. **Git Operations**: Run git commands (status, add, commit) strictly inside the repository subdirectories (e.g. \`cd ${repoName} && git commit -m "..."\`), NOT in the workspace root.`,
|
|
45
|
-
'',
|
|
46
|
-
].join('\n');
|
|
47
|
-
try {
|
|
48
|
-
// Write instructions to repo worktree root so Repomix picks it up and appends it at the end
|
|
49
|
-
await fs.writeFile(instructionsPath, instructionsContent, 'utf-8');
|
|
50
|
-
// Run repomix programmatically
|
|
51
|
-
const result = await runCli(['.'], worktreePath, {
|
|
52
|
-
style: 'xml',
|
|
53
|
-
output: outputXmlPath,
|
|
54
|
-
compress,
|
|
55
|
-
quiet: true,
|
|
56
|
-
ignore: ignorePatterns,
|
|
57
|
-
});
|
|
58
|
-
if (result && result.packResult) {
|
|
59
|
-
totalFilesCount += result.packResult.totalFiles;
|
|
60
|
-
totalCharsCount += result.packResult.totalCharacters;
|
|
61
|
-
}
|
|
62
|
-
const stats = await fs.stat(outputXmlPath);
|
|
63
|
-
totalFileSize += stats.size;
|
|
64
|
-
outputPaths.push(outputXmlPath);
|
|
65
|
-
}
|
|
66
|
-
catch (error) {
|
|
67
|
-
console.error(`Error packing repository ${repoName}:`, error.message);
|
|
68
|
-
}
|
|
69
|
-
finally {
|
|
70
|
-
// Clean up the temporary instruction file from the repo's worktree
|
|
71
|
-
try {
|
|
72
|
-
await fs.unlink(instructionsPath);
|
|
73
|
-
}
|
|
74
|
-
catch {
|
|
75
|
-
// ignore
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
return {
|
|
80
|
-
outputPath: outputPaths[0] || '',
|
|
81
|
-
outputPaths,
|
|
82
|
-
totalFiles: totalFilesCount,
|
|
83
|
-
totalCharacters: totalCharsCount,
|
|
84
|
-
fileSize: totalFileSize,
|
|
85
|
-
};
|
|
86
|
-
}
|
|
87
|
-
//# sourceMappingURL=packer.js.map
|
package/dist/core/packer.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"packer.js","sourceRoot":"","sources":["../../src/core/packer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"packer.test.d.ts","sourceRoot":"","sources":["../../src/core/packer.test.ts"],"names":[],"mappings":""}
|
package/dist/core/packer.test.js
DELETED
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
|
|
2
|
-
import * as fs from 'node:fs/promises';
|
|
3
|
-
import * as path from 'node:path';
|
|
4
|
-
import { fileURLToPath } from 'node:url';
|
|
5
|
-
import { packWorkspace } from './packer.js';
|
|
6
|
-
import * as workspace from './workspace.js';
|
|
7
|
-
import * as repomix from 'repomix';
|
|
8
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
9
|
-
const __dirname = path.dirname(__filename);
|
|
10
|
-
// Mock dependencies
|
|
11
|
-
vi.mock('./workspace.js');
|
|
12
|
-
vi.mock('repomix');
|
|
13
|
-
describe('packWorkspace', () => {
|
|
14
|
-
const workspacePath = path.join(__dirname, '..', '..', 'temp-test-workspace');
|
|
15
|
-
beforeEach(async () => {
|
|
16
|
-
await fs.mkdir(workspacePath, { recursive: true });
|
|
17
|
-
});
|
|
18
|
-
afterEach(async () => {
|
|
19
|
-
await fs.rm(workspacePath, { recursive: true, force: true });
|
|
20
|
-
vi.clearAllMocks();
|
|
21
|
-
});
|
|
22
|
-
it('should successfully pack a workspace and stream repomix output', async () => {
|
|
23
|
-
// 1. Mock the workspace config
|
|
24
|
-
const mockFeature = {
|
|
25
|
-
id: 'test-feature',
|
|
26
|
-
description: 'Test description',
|
|
27
|
-
repos: [path.join(workspacePath, 'repo-a')]
|
|
28
|
-
};
|
|
29
|
-
vi.spyOn(workspace, 'loadFeatureConfig').mockResolvedValue(mockFeature);
|
|
30
|
-
// Create fake repo directory so fs.access passes
|
|
31
|
-
await fs.mkdir(path.join(workspacePath, 'repo-a'), { recursive: true });
|
|
32
|
-
// 2. Mock repomix runCli
|
|
33
|
-
vi.spyOn(repomix, 'runCli').mockImplementation(async (dirs, cwd, options) => {
|
|
34
|
-
// Create the expected output file to simulate repomix success
|
|
35
|
-
if (options && options.output) {
|
|
36
|
-
await fs.writeFile(options.output, '<file path="test.txt">mock repomix content</file>\n', 'utf-8');
|
|
37
|
-
}
|
|
38
|
-
return {
|
|
39
|
-
packResult: {
|
|
40
|
-
totalFiles: 42,
|
|
41
|
-
totalCharacters: 9001,
|
|
42
|
-
totalTokens: 100,
|
|
43
|
-
fileCharCounts: {},
|
|
44
|
-
fileTokenCounts: {}
|
|
45
|
-
},
|
|
46
|
-
suspiciousFilesResults: [],
|
|
47
|
-
config: {}
|
|
48
|
-
};
|
|
49
|
-
});
|
|
50
|
-
// 3. Run the packer
|
|
51
|
-
const result = await packWorkspace(workspacePath);
|
|
52
|
-
// 4. Assertions
|
|
53
|
-
expect(result.totalFiles).toBe(42);
|
|
54
|
-
expect(result.totalCharacters).toBe(9001);
|
|
55
|
-
expect(result.fileSize).toBeGreaterThan(0);
|
|
56
|
-
// Read the generated output file and verify
|
|
57
|
-
const outputContent = await fs.readFile(result.outputPath, 'utf-8');
|
|
58
|
-
expect(outputContent).toContain('<file path="test.txt">mock repomix content</file>');
|
|
59
|
-
expect(result.outputPaths).toContain(result.outputPath);
|
|
60
|
-
// Verify repomix was called correctly
|
|
61
|
-
expect(repomix.runCli).toHaveBeenCalledTimes(1);
|
|
62
|
-
});
|
|
63
|
-
it('should skip repos that do not exist', async () => {
|
|
64
|
-
const mockFeature = {
|
|
65
|
-
id: 'test-feature',
|
|
66
|
-
description: 'Test description',
|
|
67
|
-
repos: [path.join(workspacePath, 'non-existent-repo')]
|
|
68
|
-
};
|
|
69
|
-
vi.spyOn(workspace, 'loadFeatureConfig').mockResolvedValue(mockFeature);
|
|
70
|
-
// We intentionally don't create the directory 'non-existent-repo'
|
|
71
|
-
const result = await packWorkspace(workspacePath);
|
|
72
|
-
expect(result.totalFiles).toBe(0);
|
|
73
|
-
expect(result.totalCharacters).toBe(0);
|
|
74
|
-
expect(result.outputPath).toBe('');
|
|
75
|
-
expect(result.outputPaths?.length).toBe(0);
|
|
76
|
-
});
|
|
77
|
-
it('should throw if workspace feature config is not found', async () => {
|
|
78
|
-
vi.spyOn(workspace, 'loadFeatureConfig').mockResolvedValue(null);
|
|
79
|
-
await expect(packWorkspace(workspacePath)).rejects.toThrow(/Workspace not found/);
|
|
80
|
-
});
|
|
81
|
-
});
|
|
82
|
-
//# sourceMappingURL=packer.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"packer.test.js","sourceRoot":"","sources":["../../src/core/packer.test.ts"],"names":[],"mappings":"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"}
|