@mrpatronz/nexusflow 0.2.17 → 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/dependabot.yml +52 -52
- package/.github/workflows/ci.yml +44 -0
- package/.github/workflows/dependabot-merge.yml +53 -53
- 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/.vscode/launch.json +17 -17
- package/.vscode/tasks.json +17 -17
- package/GETTING_STARTED.md +114 -114
- package/README.md +364 -336
- package/desktop/build-installer.js +228 -228
- package/desktop/build.js +118 -118
- package/desktop/installer/nexusflow.iss +35 -35
- package/desktop/neutralino.config.json +38 -38
- package/desktop/package-lock.json +1060 -1060
- package/desktop/package.json +14 -14
- 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/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 +0 -5
- package/dist/commands/sync.js.map +1 -1
- package/dist/commands/tui.d.ts.map +1 -1
- package/dist/commands/tui.js +63 -10
- package/dist/commands/tui.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 +80 -79
- 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/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 +125 -68
- package/dist/generators/index.js.map +1 -1
- package/dist/generators/map-generator.d.ts.map +1 -1
- package/dist/generators/map-generator.js +21 -25
- 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/generators/skills-generator.js +28 -28
- package/dist/gui/assets/index-CB-jWded.css +1 -0
- package/dist/gui/assets/index-DDXpZZu3.js +25 -0
- package/dist/gui/icons.svg +24 -24
- package/dist/gui/index.html +18 -18
- package/dist/index.js +131 -20
- package/dist/index.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +46 -43
- package/dist/server.js.map +1 -1
- package/dist/server.test.js +105 -48
- package/dist/server.test.js.map +1 -1
- package/dist/types.d.ts +7 -2
- package/dist/types.d.ts.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/update-check.d.ts.map +1 -1
- package/dist/utils/update-check.js +0 -28
- 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/extension/package-lock.json +6044 -2673
- package/extension/package.json +117 -108
- package/extension/src/extension.ts +653 -631
- package/extension/tsconfig.json +21 -21
- package/gui/README.md +73 -73
- package/gui/e2e/wizard.spec.ts +346 -346
- package/gui/eslint.config.js +26 -26
- package/gui/index.html +17 -17
- package/gui/package-lock.json +3079 -3079
- package/gui/package.json +36 -36
- package/gui/playwright.config.ts +41 -41
- package/gui/public/icons.svg +24 -24
- package/gui/src/App.css +1 -1
- package/gui/src/App.tsx +3632 -3407
- 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 -152
- package/gui/src/main.tsx +94 -94
- 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 +55 -56
- package/resources/workflows/plan-implement-review.md +8 -8
- package/resources/workflows/research-verify.md +6 -6
- package/resources/workflows/solo-developer.md +3 -3
- package/scripts/simulate-workspaces.ts +55 -55
- package/skills-lock.json +11 -0
- 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/adapter.ts +348 -0
- package/src/commands/add-repo.ts +156 -157
- package/src/commands/commands.test.ts +156 -155
- package/src/commands/commit.ts +131 -131
- package/src/commands/config.ts +52 -0
- package/src/commands/create.ts +204 -207
- package/src/commands/desktop.ts +128 -128
- package/src/commands/diff.ts +125 -125
- package/src/commands/doctor.ts +370 -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 +94 -92
- package/src/commands/open.ts +129 -129
- package/src/commands/refresh.ts +137 -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 +147 -151
- package/src/commands/tui.ts +484 -424
- package/src/commands/ui.ts +111 -111
- 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.test.ts +96 -96
- package/src/core/config.ts +140 -115
- package/src/core/graph.ts +344 -344
- 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/scanner.test.ts +61 -61
- package/src/core/scanner.ts +91 -91
- package/src/core/storage.ts +37 -0
- package/src/core/workspace.ts +487 -380
- package/src/core/worktree.ts +120 -120
- package/src/generators/antigravity.ts +32 -32
- package/src/generators/base.ts +243 -240
- 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/diff-context.ts +75 -0
- package/src/generators/index.ts +322 -250
- package/src/generators/map-generator.test.ts +159 -159
- package/src/generators/map-generator.ts +539 -542
- package/src/generators/plan-generator.ts +483 -481
- package/src/generators/skills-generator.ts +259 -259
- package/src/index.ts +539 -426
- 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 +618 -555
- package/src/server.ts +1314 -1308
- package/src/types.ts +415 -408
- 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 -117
- package/src/utils/local-ai.test.ts +130 -130
- package/src/utils/local-ai.ts +116 -111
- package/src/utils/multi-git.ts +313 -313
- 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 +286 -309
- package/src/utils/workflow-advisor.ts +118 -0
- package/src/utils/workflows.test.ts +114 -114
- package/src/utils/workflows.ts +178 -178
- package/tsconfig.json +19 -19
- package/vitest.config.ts +14 -14
- package/.github/workflows/release.yml +0 -112
- 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-Ct3qq-X4.js +0 -25
- package/dist/gui/assets/index-P_ZrgHXg.css +0 -1
- package/src/commands/pack.ts +0 -73
- package/src/core/packer.test.ts +0 -99
- package/src/core/packer.ts +0 -107
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module core/ports/storage
|
|
3
|
+
* Storage Port defining the interface for workspace document persistence.
|
|
4
|
+
*
|
|
5
|
+
* Adapters implement this interface to provide different storage backends.
|
|
6
|
+
* Each adapter is self-describing via the `meta` property, which enables
|
|
7
|
+
* automatic discovery in CLI, GUI, and plugin systems.
|
|
8
|
+
*/
|
|
9
|
+
/** Describes a single configurable field for an adapter. */
|
|
10
|
+
export interface AdapterConfigField {
|
|
11
|
+
/** Machine-readable key, stored in config.json. */
|
|
12
|
+
key: string;
|
|
13
|
+
/** Human-readable label for CLI prompts and GUI forms. */
|
|
14
|
+
label: string;
|
|
15
|
+
/** Value type — 'path' renders a file picker in the GUI. */
|
|
16
|
+
type: 'string' | 'boolean' | 'number' | 'path';
|
|
17
|
+
/** Whether the field must be set before the adapter can be used. */
|
|
18
|
+
required?: boolean;
|
|
19
|
+
/** Default value when not explicitly configured. */
|
|
20
|
+
default?: unknown;
|
|
21
|
+
/** Help text shown in CLI prompts and GUI tooltips. */
|
|
22
|
+
description?: string;
|
|
23
|
+
}
|
|
24
|
+
/** Metadata that makes an adapter self-describing and discoverable. */
|
|
25
|
+
export interface StorageAdapterMeta {
|
|
26
|
+
/** Unique machine-readable identifier (e.g. 'obsidian'). */
|
|
27
|
+
name: string;
|
|
28
|
+
/** Human-readable name for CLI tables and GUI dropdowns (e.g. 'Obsidian Vault'). */
|
|
29
|
+
displayName: string;
|
|
30
|
+
/** One-line description of what this adapter does. */
|
|
31
|
+
description: string;
|
|
32
|
+
/** Configuration fields this adapter accepts. Empty array = no config needed. */
|
|
33
|
+
configFields: AdapterConfigField[];
|
|
34
|
+
}
|
|
35
|
+
export interface StoragePort {
|
|
36
|
+
/** Adapter metadata — who am I, what do I need? */
|
|
37
|
+
readonly meta: StorageAdapterMeta;
|
|
38
|
+
/** Called once after registration with the user's per-adapter settings. */
|
|
39
|
+
configure?(settings: Record<string, unknown>): void;
|
|
40
|
+
/** Writes a workspace context/metadata document. */
|
|
41
|
+
writeWorkspaceFile(workspacePath: string, featureId: string, filename: string, content: string): Promise<void>;
|
|
42
|
+
/** Reads a workspace context/metadata document. */
|
|
43
|
+
readWorkspaceFile(workspacePath: string, featureId: string, filename: string): Promise<string>;
|
|
44
|
+
/** Checks if a workspace context/metadata document exists. */
|
|
45
|
+
workspaceFileExists(workspacePath: string, featureId: string, filename: string): Promise<boolean>;
|
|
46
|
+
/** Resolves the human-readable path or link to the workspace document for the AI assistant. */
|
|
47
|
+
resolveWorkspaceFileUrl(workspacePath: string, featureId: string, filename: string): string;
|
|
48
|
+
/** Writes a base-layer context document (stable maps/conventions across workspaces). */
|
|
49
|
+
writeBaseFile(workspacePath: string, repoName: string, filename: string, content: string): Promise<void>;
|
|
50
|
+
/** Reads a base-layer context document. */
|
|
51
|
+
readBaseFile(workspacePath: string, repoName: string, filename: string): Promise<string>;
|
|
52
|
+
/** Checks if a base-layer context document exists. */
|
|
53
|
+
baseFileExists(workspacePath: string, repoName: string, filename: string): Promise<boolean>;
|
|
54
|
+
/** Resolves the human-readable path or link to the base document. */
|
|
55
|
+
resolveBaseFileUrl(workspacePath: string, repoName: string, filename: string): string;
|
|
56
|
+
/** Cleanly deletes all workspace-specific documents from the storage backend. */
|
|
57
|
+
deleteWorkspace(workspacePath: string, featureId: string): Promise<void>;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=storage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../../src/core/ports/storage.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,4DAA4D;AAC5D,MAAM,WAAW,kBAAkB;IACjC,mDAAmD;IACnD,GAAG,EAAE,MAAM,CAAC;IACZ,0DAA0D;IAC1D,KAAK,EAAE,MAAM,CAAC;IACd,4DAA4D;IAC5D,IAAI,EAAE,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC/C,oEAAoE;IACpE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,oDAAoD;IACpD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,uDAAuD;IACvD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,uEAAuE;AACvE,MAAM,WAAW,kBAAkB;IACjC,4DAA4D;IAC5D,IAAI,EAAE,MAAM,CAAC;IACb,oFAAoF;IACpF,WAAW,EAAE,MAAM,CAAC;IACpB,sDAAsD;IACtD,WAAW,EAAE,MAAM,CAAC;IACpB,iFAAiF;IACjF,YAAY,EAAE,kBAAkB,EAAE,CAAC;CACpC;AAED,MAAM,WAAW,WAAW;IAC1B,mDAAmD;IACnD,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;IAElC,2EAA2E;IAC3E,SAAS,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAEpD,oDAAoD;IACpD,kBAAkB,CAAC,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE/G,mDAAmD;IACnD,iBAAiB,CAAC,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAE/F,8DAA8D;IAC9D,mBAAmB,CAAC,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAElG,+FAA+F;IAC/F,uBAAuB,CAAC,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;IAE5F,wFAAwF;IACxF,aAAa,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzG,2CAA2C;IAC3C,YAAY,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAEzF,sDAAsD;IACtD,cAAc,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAE5F,qEAAqE;IACrE,kBAAkB,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;IAEtF,iFAAiF;IACjF,eAAe,CAAC,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1E"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module core/ports/storage
|
|
3
|
+
* Storage Port defining the interface for workspace document persistence.
|
|
4
|
+
*
|
|
5
|
+
* Adapters implement this interface to provide different storage backends.
|
|
6
|
+
* Each adapter is self-describing via the `meta` property, which enables
|
|
7
|
+
* automatic discovery in CLI, GUI, and plugin systems.
|
|
8
|
+
*/
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=storage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage.js","sourceRoot":"","sources":["../../../src/core/ports/storage.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare function writeWorkspaceFile(workspacePath: string, featureId: string, filename: string, content: string): Promise<void>;
|
|
2
|
+
export declare function readWorkspaceFile(workspacePath: string, featureId: string, filename: string): Promise<string>;
|
|
3
|
+
export declare function workspaceFileExists(workspacePath: string, featureId: string, filename: string): Promise<boolean>;
|
|
4
|
+
export declare function resolveWorkspaceFileUrl(workspacePath: string, featureId: string, filename: string): string;
|
|
5
|
+
export declare function writeBaseFile(workspacePath: string, repoName: string, filename: string, content: string): Promise<void>;
|
|
6
|
+
export declare function readBaseFile(workspacePath: string, repoName: string, filename: string): Promise<string>;
|
|
7
|
+
export declare function baseFileExists(workspacePath: string, repoName: string, filename: string): Promise<boolean>;
|
|
8
|
+
export declare function resolveBaseFileUrl(workspacePath: string, repoName: string, filename: string): string;
|
|
9
|
+
export declare function deleteWorkspaceFiles(workspacePath: string, featureId: string): Promise<void>;
|
|
10
|
+
//# sourceMappingURL=storage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../src/core/storage.ts"],"names":[],"mappings":"AAEA,wBAAsB,kBAAkB,CAAC,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEnI;AAED,wBAAsB,iBAAiB,CAAC,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAEnH;AAED,wBAAsB,mBAAmB,CAAC,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAEtH;AAED,wBAAgB,uBAAuB,CAAC,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE1G;AAED,wBAAsB,aAAa,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE7H;AAED,wBAAsB,YAAY,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAE7G;AAED,wBAAsB,cAAc,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAEhH;AAED,wBAAgB,kBAAkB,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEpG;AAED,wBAAsB,oBAAoB,CAAC,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAElG"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { getActiveStorageProvider } from './adapters/registry.js';
|
|
2
|
+
export async function writeWorkspaceFile(workspacePath, featureId, filename, content) {
|
|
3
|
+
await getActiveStorageProvider().writeWorkspaceFile(workspacePath, featureId, filename, content);
|
|
4
|
+
}
|
|
5
|
+
export async function readWorkspaceFile(workspacePath, featureId, filename) {
|
|
6
|
+
return await getActiveStorageProvider().readWorkspaceFile(workspacePath, featureId, filename);
|
|
7
|
+
}
|
|
8
|
+
export async function workspaceFileExists(workspacePath, featureId, filename) {
|
|
9
|
+
return await getActiveStorageProvider().workspaceFileExists(workspacePath, featureId, filename);
|
|
10
|
+
}
|
|
11
|
+
export function resolveWorkspaceFileUrl(workspacePath, featureId, filename) {
|
|
12
|
+
return getActiveStorageProvider().resolveWorkspaceFileUrl(workspacePath, featureId, filename);
|
|
13
|
+
}
|
|
14
|
+
export async function writeBaseFile(workspacePath, repoName, filename, content) {
|
|
15
|
+
await getActiveStorageProvider().writeBaseFile(workspacePath, repoName, filename, content);
|
|
16
|
+
}
|
|
17
|
+
export async function readBaseFile(workspacePath, repoName, filename) {
|
|
18
|
+
return await getActiveStorageProvider().readBaseFile(workspacePath, repoName, filename);
|
|
19
|
+
}
|
|
20
|
+
export async function baseFileExists(workspacePath, repoName, filename) {
|
|
21
|
+
return await getActiveStorageProvider().baseFileExists(workspacePath, repoName, filename);
|
|
22
|
+
}
|
|
23
|
+
export function resolveBaseFileUrl(workspacePath, repoName, filename) {
|
|
24
|
+
return getActiveStorageProvider().resolveBaseFileUrl(workspacePath, repoName, filename);
|
|
25
|
+
}
|
|
26
|
+
export async function deleteWorkspaceFiles(workspacePath, featureId) {
|
|
27
|
+
await getActiveStorageProvider().deleteWorkspace(workspacePath, featureId);
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=storage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage.js","sourceRoot":"","sources":["../../src/core/storage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAElE,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,aAAqB,EAAE,SAAiB,EAAE,QAAgB,EAAE,OAAe;IAClH,MAAM,wBAAwB,EAAE,CAAC,kBAAkB,CAAC,aAAa,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AACnG,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,aAAqB,EAAE,SAAiB,EAAE,QAAgB;IAChG,OAAO,MAAM,wBAAwB,EAAE,CAAC,iBAAiB,CAAC,aAAa,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;AAChG,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,aAAqB,EAAE,SAAiB,EAAE,QAAgB;IAClG,OAAO,MAAM,wBAAwB,EAAE,CAAC,mBAAmB,CAAC,aAAa,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;AAClG,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,aAAqB,EAAE,SAAiB,EAAE,QAAgB;IAChG,OAAO,wBAAwB,EAAE,CAAC,uBAAuB,CAAC,aAAa,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;AAChG,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,aAAqB,EAAE,QAAgB,EAAE,QAAgB,EAAE,OAAe;IAC5G,MAAM,wBAAwB,EAAE,CAAC,aAAa,CAAC,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AAC7F,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,aAAqB,EAAE,QAAgB,EAAE,QAAgB;IAC1F,OAAO,MAAM,wBAAwB,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAC1F,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,aAAqB,EAAE,QAAgB,EAAE,QAAgB;IAC5F,OAAO,MAAM,wBAAwB,EAAE,CAAC,cAAc,CAAC,aAAa,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAC5F,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,aAAqB,EAAE,QAAgB,EAAE,QAAgB;IAC1F,OAAO,wBAAwB,EAAE,CAAC,kBAAkB,CAAC,aAAa,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAC1F,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,aAAqB,EAAE,SAAiB;IACjF,MAAM,wBAAwB,EAAE,CAAC,eAAe,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;AAC7E,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../../src/core/workspace.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../../src/core/workspace.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAoB,MAAM,aAAa,CAAC;AAYvE;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,MAAM,GACjB,MAAM,CAER;AAED;;;;;;;;;GASG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,QAAQ,EAAE,GAChB,OAAO,CAAC,MAAM,CAAC,CAiGjB;AAED;;;;;;;;GAQG;AACH,wBAAsB,cAAc,CAClC,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,OAAO,EAAE,CAAC,CAmCpB;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,IAAI,CAAC,CAIf;AAED;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CACrC,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CA+BzB;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAgBjF;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAOzE;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CACnC,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,IAAI,CAAC,CAwDf;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CA6Df"}
|
package/dist/core/workspace.js
CHANGED
|
@@ -6,13 +6,14 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import * as fs from 'node:fs/promises';
|
|
8
8
|
import * as path from 'node:path';
|
|
9
|
+
import * as os from 'node:os';
|
|
9
10
|
import { execa } from 'execa';
|
|
10
11
|
import { createWorktree, removeWorktree } from './worktree.js';
|
|
11
12
|
import { detectDefaultBranch } from '../utils/git.js';
|
|
12
13
|
import { analyzeAllRepos } from '../analyzers/index.js';
|
|
13
14
|
import { generateContextFiles } from '../generators/index.js';
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
15
|
+
import { getActiveStorageProvider } from './adapters/registry.js';
|
|
16
|
+
import { deleteWorkspaceFiles } from './storage.js';
|
|
16
17
|
/** Name of the per-workspace manifest file. */
|
|
17
18
|
const MANIFEST_FILE = 'nexusflow.json';
|
|
18
19
|
/**
|
|
@@ -51,12 +52,31 @@ export async function createWorkspace(feature, repos) {
|
|
|
51
52
|
// Silently ignore or log warning if git init fails
|
|
52
53
|
console.warn('Warning: Failed to initialize git repository at workspace root:', error);
|
|
53
54
|
}
|
|
54
|
-
//
|
|
55
|
+
// Generate a .code-workspace file so VS Code opens each repo as a top-level workspace
|
|
56
|
+
// folder with its own SCM provider. Without this, VS Code's git scanner respects the
|
|
57
|
+
// root .gitignore (which lists every repo dir) and never discovers the worktrees.
|
|
58
|
+
try {
|
|
59
|
+
const workspaceName = path.basename(workspacePath);
|
|
60
|
+
const codeWorkspace = {
|
|
61
|
+
folders: [
|
|
62
|
+
{ path: '.', name: `${workspaceName} (workspace)` },
|
|
63
|
+
...repos.map((repo) => ({ path: repo.name, name: repo.name })),
|
|
64
|
+
],
|
|
65
|
+
settings: {
|
|
66
|
+
'search.useIgnoreFiles': false,
|
|
67
|
+
},
|
|
68
|
+
};
|
|
69
|
+
await fs.writeFile(path.join(workspacePath, `${workspaceName}.code-workspace`), JSON.stringify(codeWorkspace, null, 2) + '\n', 'utf-8');
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
console.warn('Warning: Failed to create .code-workspace file:', error);
|
|
73
|
+
}
|
|
74
|
+
// Create .vscode/settings.json for editors that don't use the .code-workspace file
|
|
55
75
|
try {
|
|
56
76
|
const vscodeDir = path.join(workspacePath, '.vscode');
|
|
57
77
|
await fs.mkdir(vscodeDir, { recursive: true });
|
|
58
78
|
const settings = {
|
|
59
|
-
|
|
79
|
+
'search.useIgnoreFiles': false,
|
|
60
80
|
};
|
|
61
81
|
await fs.writeFile(path.join(vscodeDir, 'settings.json'), JSON.stringify(settings, null, 2) + '\n', 'utf-8');
|
|
62
82
|
}
|
|
@@ -71,7 +91,7 @@ export async function createWorkspace(feature, repos) {
|
|
|
71
91
|
"mcpServers": {
|
|
72
92
|
"nexusflow": {
|
|
73
93
|
"command": "npx",
|
|
74
|
-
"args": ["-y", "@mrpatronz/nexusflow", "mcp", "
|
|
94
|
+
"args": ["-y", "@mrpatronz/nexusflow", "mcp", "start"]
|
|
75
95
|
}
|
|
76
96
|
}
|
|
77
97
|
};
|
|
@@ -87,6 +107,8 @@ export async function createWorkspace(feature, repos) {
|
|
|
87
107
|
}
|
|
88
108
|
// Persist the feature manifest.
|
|
89
109
|
await saveFeatureConfig(workspacePath, feature);
|
|
110
|
+
// Exclude NexusFlow files from git
|
|
111
|
+
await excludeNexusFlowFiles(workspacePath, feature);
|
|
90
112
|
return workspacePath;
|
|
91
113
|
}
|
|
92
114
|
/**
|
|
@@ -136,9 +158,9 @@ export async function listWorkspaces(workspacesDir) {
|
|
|
136
158
|
* @param feature - The feature definition to persist.
|
|
137
159
|
*/
|
|
138
160
|
export async function saveFeatureConfig(workspacePath, feature) {
|
|
139
|
-
const manifestPath = path.join(workspacePath, MANIFEST_FILE);
|
|
140
161
|
const data = JSON.stringify(feature, null, 2) + '\n';
|
|
141
|
-
|
|
162
|
+
const adapter = getActiveStorageProvider();
|
|
163
|
+
await adapter.writeWorkspaceFile(workspacePath, feature.id, MANIFEST_FILE, data);
|
|
142
164
|
}
|
|
143
165
|
/**
|
|
144
166
|
* Loads a {@link Feature} from the `nexusflow.json` manifest inside a
|
|
@@ -149,17 +171,34 @@ export async function saveFeatureConfig(workspacePath, feature) {
|
|
|
149
171
|
* invalid.
|
|
150
172
|
*/
|
|
151
173
|
export async function loadFeatureConfig(workspacePath) {
|
|
152
|
-
const
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
174
|
+
const featureId = path.basename(workspacePath);
|
|
175
|
+
const adapter = getActiveStorageProvider();
|
|
176
|
+
// 1. Try reading via the storage adapter first
|
|
177
|
+
try {
|
|
178
|
+
const raw = await adapter.readWorkspaceFile(workspacePath, featureId, MANIFEST_FILE);
|
|
179
|
+
return JSON.parse(raw);
|
|
180
|
+
}
|
|
181
|
+
catch { }
|
|
182
|
+
// 2. Try direct local check
|
|
183
|
+
const manifestPath = path.join(workspacePath, MANIFEST_FILE);
|
|
156
184
|
try {
|
|
157
185
|
const raw = await fs.readFile(manifestPath, 'utf-8');
|
|
158
186
|
return JSON.parse(raw);
|
|
159
187
|
}
|
|
160
|
-
catch {
|
|
161
|
-
|
|
188
|
+
catch { }
|
|
189
|
+
// 3. Try direct vault check
|
|
190
|
+
const vaultManifest = path.join(os.homedir(), '.nexusflow', 'vault', featureId, MANIFEST_FILE);
|
|
191
|
+
try {
|
|
192
|
+
const raw = await fs.readFile(vaultManifest, 'utf-8');
|
|
193
|
+
return JSON.parse(raw);
|
|
194
|
+
}
|
|
195
|
+
catch { }
|
|
196
|
+
// 4. Traverse parent directories
|
|
197
|
+
const rootDir = await findWorkspaceRoot(workspacePath);
|
|
198
|
+
if (rootDir && rootDir !== workspacePath) {
|
|
199
|
+
return loadFeatureConfig(rootDir);
|
|
162
200
|
}
|
|
201
|
+
return null;
|
|
163
202
|
}
|
|
164
203
|
/**
|
|
165
204
|
* Traverses up parent directories to find a directory containing `nexusflow.json`.
|
|
@@ -207,6 +246,12 @@ export async function resolveRepoInfo(repoPath) {
|
|
|
207
246
|
export async function deleteWorkspace(workspacePath) {
|
|
208
247
|
const feature = await loadFeatureConfig(workspacePath);
|
|
209
248
|
if (feature) {
|
|
249
|
+
try {
|
|
250
|
+
await deleteWorkspaceFiles(workspacePath, feature.id);
|
|
251
|
+
}
|
|
252
|
+
catch (error) {
|
|
253
|
+
console.warn(`Warning: failed to delete workspace context files from storage:`, error);
|
|
254
|
+
}
|
|
210
255
|
const origRepos = feature.originalRepos || [];
|
|
211
256
|
for (let i = 0; i < feature.repos.length; i++) {
|
|
212
257
|
const worktreePath = feature.repos[i];
|
|
@@ -315,9 +360,58 @@ export async function addRepoToWorkspace(workspacePath, repoPath) {
|
|
|
315
360
|
analysis,
|
|
316
361
|
};
|
|
317
362
|
await generateContextFiles(ctx, feature.assistants, workspacePath);
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
363
|
+
await excludeNexusFlowFiles(workspacePath, feature);
|
|
364
|
+
}
|
|
365
|
+
/**
|
|
366
|
+
* Automatically adds NexusFlow workspace context and config files to git's local
|
|
367
|
+
* exclude list for each repository so they never show up in `git status` or get committed.
|
|
368
|
+
*/
|
|
369
|
+
async function excludeNexusFlowFiles(workspacePath, feature) {
|
|
370
|
+
const excludeEntries = [
|
|
371
|
+
'CLAUDE.md',
|
|
372
|
+
'AGENTS.md',
|
|
373
|
+
'WORKSPACE.md',
|
|
374
|
+
'nexusflow-knowledge.md',
|
|
375
|
+
'nexusflow-plan.md',
|
|
376
|
+
'nexusflow-conventions-*.md',
|
|
377
|
+
'nexusflow-map-*.md',
|
|
378
|
+
'nexusflow-diff-context.md',
|
|
379
|
+
'.cursor/rules/',
|
|
380
|
+
'.vscode/settings.json'
|
|
381
|
+
];
|
|
382
|
+
for (const repoPath of feature.repos) {
|
|
383
|
+
try {
|
|
384
|
+
const gitDir = path.join(repoPath, '.git');
|
|
385
|
+
let worktreeGitDir = gitDir;
|
|
386
|
+
const stat = await fs.stat(gitDir);
|
|
387
|
+
if (stat.isFile()) {
|
|
388
|
+
const fileContent = await fs.readFile(gitDir, 'utf8');
|
|
389
|
+
const match = fileContent.match(/gitdir:\s*(.+)/);
|
|
390
|
+
if (match) {
|
|
391
|
+
worktreeGitDir = match[1].trim();
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
const excludeFilePath = path.join(worktreeGitDir, 'info', 'exclude');
|
|
395
|
+
await fs.mkdir(path.dirname(excludeFilePath), { recursive: true });
|
|
396
|
+
let excludeContent = '';
|
|
397
|
+
try {
|
|
398
|
+
excludeContent = await fs.readFile(excludeFilePath, 'utf8');
|
|
399
|
+
}
|
|
400
|
+
catch { }
|
|
401
|
+
let updated = false;
|
|
402
|
+
for (const entry of excludeEntries) {
|
|
403
|
+
if (!excludeContent.includes(entry)) {
|
|
404
|
+
excludeContent = excludeContent.trim() + '\n' + entry + '\n';
|
|
405
|
+
updated = true;
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
if (updated) {
|
|
409
|
+
await fs.writeFile(excludeFilePath, excludeContent.trim() + '\n', 'utf8');
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
catch {
|
|
413
|
+
// Ignore if not a git repo or directory missing
|
|
414
|
+
}
|
|
321
415
|
}
|
|
322
416
|
}
|
|
323
417
|
//# sourceMappingURL=workspace.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../src/core/workspace.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../src/core/workspace.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;
|
|
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;AA4DrE;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,gBAAgB,GAAG,MAAM,CAsKjE"}
|
package/dist/generators/base.js
CHANGED
|
@@ -3,16 +3,18 @@
|
|
|
3
3
|
* Builds the shared markdown context content that all AI assistant generators
|
|
4
4
|
* use as their foundation. Now includes rich project analysis data when available.
|
|
5
5
|
*/
|
|
6
|
-
import * as path from 'node:path';
|
|
7
6
|
import * as fs from 'node:fs';
|
|
7
|
+
import { resolveBaseFileUrl, resolveWorkspaceFileUrl } from '../core/storage.js';
|
|
8
8
|
/**
|
|
9
9
|
* Formats a ProjectAnalysis into a readable markdown section.
|
|
10
10
|
*/
|
|
11
11
|
function formatProjectSection(analysis, workspacePath) {
|
|
12
12
|
const lines = [];
|
|
13
13
|
lines.push(`### ${analysis.name}`);
|
|
14
|
-
const mapPath =
|
|
14
|
+
const mapPath = resolveBaseFileUrl(workspacePath, analysis.name, `nexusflow-map-${analysis.name}.md`);
|
|
15
15
|
lines.push(`- **Architecture Map**: [nexusflow-map-${analysis.name}.md](file:///${mapPath}) — **Instruction**: Before modifying this repository, read its architecture map. For exploration, consult the map's section index on demand.`);
|
|
16
|
+
const baseKnowledgePath = resolveBaseFileUrl(workspacePath, analysis.name, 'nexusflow-knowledge.md');
|
|
17
|
+
lines.push(`- **Base Knowledge & Decisions**: [nexusflow-knowledge.md](file:///${baseKnowledgePath}) — **Instruction**: Read this for persistent codebase learnings, decisions, and conventions.`);
|
|
16
18
|
// Tech stack
|
|
17
19
|
const { techStack } = analysis;
|
|
18
20
|
if (techStack.languages.length > 0 && techStack.languages[0] !== 'other') {
|
|
@@ -86,15 +88,15 @@ export function buildContextContent(ctx) {
|
|
|
86
88
|
}
|
|
87
89
|
}
|
|
88
90
|
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')}
|
|
91
|
+
existingConfigsSection = `
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## Existing AI Configurations
|
|
95
|
+
|
|
96
|
+
The following repos already have AI assistant configuration files.
|
|
97
|
+
Incorporate their instructions when working in those repos:
|
|
98
|
+
|
|
99
|
+
${allConfigs.join('\n')}
|
|
98
100
|
`;
|
|
99
101
|
}
|
|
100
102
|
}
|
|
@@ -122,23 +124,22 @@ ${allConfigs.join('\n')}
|
|
|
122
124
|
}
|
|
123
125
|
}
|
|
124
126
|
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')}
|
|
127
|
+
resumptionSection = `
|
|
128
|
+
---
|
|
129
|
+
|
|
130
|
+
## Workspace Resumption & Verification Commands
|
|
131
|
+
|
|
132
|
+
Use these pre-configured commands to spin up mocks, run background services, and verify your changes:
|
|
133
|
+
|
|
134
|
+
${parts.join('\n')}
|
|
133
135
|
`;
|
|
134
136
|
}
|
|
135
137
|
}
|
|
136
|
-
const knowledgePath =
|
|
138
|
+
const knowledgePath = resolveWorkspaceFileUrl(workspacePath, feature.id, 'nexusflow-knowledge.md').replace(/\\/g, '/');
|
|
137
139
|
let setupDone = false;
|
|
138
140
|
try {
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
const content = fs.readFileSync(realKnowledgePath, 'utf-8');
|
|
141
|
+
if (fs.existsSync(knowledgePath)) {
|
|
142
|
+
const content = fs.readFileSync(knowledgePath, 'utf-8');
|
|
142
143
|
if (!content.includes('No assumptions recorded yet') && !content.includes('AI assistant to populate')) {
|
|
143
144
|
setupDone = true;
|
|
144
145
|
}
|
|
@@ -148,69 +149,69 @@ ${parts.join('\n')}
|
|
|
148
149
|
// Teamwork strategy section
|
|
149
150
|
let teamworkSection = '';
|
|
150
151
|
if (feature.teamworkInstructions) {
|
|
151
|
-
teamworkSection = `
|
|
152
|
-
---
|
|
153
|
-
|
|
154
|
-
## Team Collaboration Strategy
|
|
155
|
-
|
|
156
|
-
${feature.teamworkInstructions}
|
|
152
|
+
teamworkSection = `
|
|
153
|
+
---
|
|
154
|
+
|
|
155
|
+
## Team Collaboration Strategy
|
|
156
|
+
|
|
157
|
+
${feature.teamworkInstructions}
|
|
157
158
|
`;
|
|
158
159
|
}
|
|
159
160
|
const taskSection = setupDone
|
|
160
161
|
? `## 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.`
|
|
161
162
|
: `## 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.`;
|
|
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.
|
|
163
|
+
return `# Multi-Repo Workspace Context
|
|
164
|
+
|
|
165
|
+
## Feature: ${feature.id}
|
|
166
|
+
|
|
167
|
+
**Description:** ${feature.description}
|
|
168
|
+
|
|
169
|
+
> For the detailed feature specification, architecture decisions, and session memory, see [nexusflow-knowledge.md](file:///${knowledgePath}).
|
|
170
|
+
|
|
171
|
+
---
|
|
172
|
+
|
|
173
|
+
## Projects
|
|
174
|
+
|
|
175
|
+
This workspace contains the following projects, each checked out as a
|
|
176
|
+
git worktree on the feature branch:
|
|
177
|
+
|
|
178
|
+
${projectSections}
|
|
179
|
+
${existingConfigsSection}
|
|
180
|
+
${resumptionSection}
|
|
181
|
+
---
|
|
182
|
+
|
|
183
|
+
${taskSection}
|
|
184
|
+
${teamworkSection}
|
|
185
|
+
---
|
|
186
|
+
|
|
187
|
+
## Guidelines
|
|
188
|
+
|
|
189
|
+
- **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}\`.
|
|
190
|
+
- **All code changes** must be made within the appropriate project subdirectories.
|
|
191
|
+
- **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.
|
|
192
|
+
- **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.
|
|
193
|
+
- **Project commands** (like \`npm install\`, \`npm run build\`, \`npm run test\`) must be run inside the project subdirectories.
|
|
194
|
+
- **Global helpers**: Alternatively, you can run NexusFlow CLI commands from the workspace root:
|
|
195
|
+
- \`nexusflow diff\` — view changes across all sub-repositories.
|
|
196
|
+
- \`nexusflow commit\` — commit and push changes across modified repositories.
|
|
197
|
+
- \`nexusflow sync\` — rebase all repositories with their default base branches.
|
|
198
|
+
- \`nexusflow refresh\` — regenerate maps, context files and plans without rebasing.
|
|
199
|
+
- \`nexusflow doctor\` — run diagnostics to verify workspace health.
|
|
200
|
+
- **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.
|
|
201
|
+
- **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.
|
|
201
202
|
${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)
|
|
202
203
|
? 'This is a highly capable model; you can delegate complex reasoning and larger code generation tasks.'
|
|
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
|
-
|
|
204
|
+
: 'This is a smaller model; it is best suited for targeted search, log parsing, summarization, and simple boilerplate.'}` : ''}
|
|
205
|
+
- **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.
|
|
206
|
+
- 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.
|
|
207
|
+
` : ''}- Read each project's existing \`README.md\` and any doc files before proposing changes.
|
|
208
|
+
- When modifying a shared library, check every downstream consumer for breakage.
|
|
209
|
+
- Prefer small, focused commits that touch one repo at a time when possible.
|
|
210
|
+
- If a change must span repos, describe the ordering and any migration steps.
|
|
211
|
+
|
|
212
|
+
|
|
213
|
+
|
|
214
|
+
|
|
214
215
|
`;
|
|
215
216
|
}
|
|
216
217
|
//# sourceMappingURL=base.js.map
|