@shepai/cli 1.106.0-pr313.e9fa158 → 1.106.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.d.ts.map +1 -1
- package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.js +2 -2
- package/dist/packages/core/src/application/use-cases/repositories/add-repository.use-case.d.ts.map +1 -1
- package/dist/packages/core/src/application/use-cases/repositories/add-repository.use-case.js +2 -6
- package/dist/packages/core/src/infrastructure/repositories/sqlite-feature.repository.js +4 -4
- package/dist/packages/core/src/infrastructure/repositories/sqlite-repository.repository.js +4 -4
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/claude-code-executor.service.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/claude-code-executor.service.js +0 -9
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/dev-executor.service.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/common/executors/dev-executor.service.js +3 -5
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/evidence-prompts.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/evidence-prompts.js +3 -4
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/repair.node.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/repair.node.js +1 -2
- package/dist/packages/core/src/infrastructure/services/agents/sessions/claude-code-session.repository.js +1 -1
- package/dist/packages/core/src/infrastructure/services/attachment-storage.service.js +3 -3
- package/dist/packages/core/src/infrastructure/services/deployment/deployment.service.d.ts +1 -1
- package/dist/packages/core/src/infrastructure/services/deployment/deployment.service.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/deployment/deployment.service.js +7 -8
- package/dist/packages/core/src/infrastructure/services/git/worktree.service.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/git/worktree.service.js +4 -17
- package/dist/packages/core/src/infrastructure/services/ide-launchers/compute-worktree-path.js +1 -1
- package/dist/packages/core/src/infrastructure/services/ide-launchers/json-driven-ide-launcher.service.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/ide-launchers/json-driven-ide-launcher.service.js +8 -6
- package/dist/packages/core/src/infrastructure/services/tool-installer/tool-installer.service.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/tool-installer/tool-installer.service.js +27 -4
- package/dist/packages/core/src/infrastructure/services/tool-installer/tools/alacritty.json +2 -3
- package/dist/packages/core/src/infrastructure/services/tool-installer/tools/claude-code.json +2 -3
- package/dist/packages/core/src/infrastructure/services/tool-installer/tools/cursor-cli.json +2 -3
- package/dist/packages/core/src/infrastructure/services/tool-installer/tools/cursor.json +1 -2
- package/dist/packages/core/src/infrastructure/services/tool-installer/tools/gh.json +1 -2
- package/dist/packages/core/src/infrastructure/services/tool-installer/tools/git.json +1 -2
- package/dist/packages/core/src/infrastructure/services/tool-installer/tools/vscode.json +1 -2
- package/dist/packages/core/src/infrastructure/services/tool-installer/tools/warp.json +2 -3
- package/dist/packages/core/src/infrastructure/services/tool-installer/tools/windsurf.json +2 -3
- package/dist/packages/core/src/infrastructure/services/tool-installer/tools/zed.json +2 -3
- package/dist/src/presentation/cli/commands/daemon/start-daemon.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/daemon/start-daemon.js +0 -1
- package/dist/src/presentation/cli/commands/daemon/stop-daemon.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/daemon/stop-daemon.js +4 -5
- package/dist/src/presentation/cli/commands/upgrade.command.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/upgrade.command.js +0 -4
- package/dist/src/presentation/web/app/actions/deploy-repository.d.ts.map +1 -1
- package/dist/src/presentation/web/app/actions/deploy-repository.js +1 -2
- package/dist/src/presentation/web/app/actions/open-folder.d.ts.map +1 -1
- package/dist/src/presentation/web/app/actions/open-folder.js +2 -4
- package/dist/src/presentation/web/app/actions/open-ide.d.ts.map +1 -1
- package/dist/src/presentation/web/app/actions/open-ide.js +1 -2
- package/dist/src/presentation/web/app/actions/open-shell.d.ts.map +1 -1
- package/dist/src/presentation/web/app/actions/open-shell.js +2 -4
- package/dist/src/presentation/web/app/build-graph-nodes.d.ts.map +1 -1
- package/dist/src/presentation/web/app/build-graph-nodes.js +5 -8
- package/dist/src/presentation/web/components/common/merge-review/diff-view.js +1 -1
- package/dist/src/presentation/web/lib/derive-graph.d.ts.map +1 -1
- package/dist/src/presentation/web/lib/derive-graph.js +2 -4
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +6 -10
- package/web/.next/BUILD_ID +1 -1
- package/web/.next/build-manifest.json +2 -2
- package/web/.next/fallback-build-manifest.json +2 -2
- package/web/.next/prerender-manifest.json +3 -3
- package/web/.next/required-server-files.js +3 -3
- package/web/.next/required-server-files.json +3 -3
- package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +20 -20
- package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +25 -25
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +25 -25
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +18 -18
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +20 -20
- package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +25 -25
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +25 -25
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +18 -18
- package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +18 -18
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/_global-error.html +2 -2
- package/web/.next/server/app/_global-error.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
- package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/settings/page/server-reference-manifest.json +5 -5
- package/web/.next/server/app/settings/page.js.nft.json +1 -1
- package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/skills/page/server-reference-manifest.json +6 -6
- package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/tools/page/server-reference-manifest.json +6 -6
- package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/version/page/server-reference-manifest.json +1 -1
- package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__f47bb8a5._.js +1 -1
- package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
- package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
- package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_0a7546ed.js +1 -1
- package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_0a7546ed.js.map +1 -1
- package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_978cbb4c.js +1 -1
- package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_978cbb4c.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__11033878._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__11033878._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__24dd0927._.js +2 -2
- package/web/.next/server/chunks/ssr/[root-of-the-server]__24dd0927._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__357d99f9._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__51fc98b0._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__51fc98b0._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__57f37786._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__57f37786._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__5d87af2e._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__708dcad1._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__708dcad1._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__845a9d2a._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__845a9d2a._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__89e8a5cc._.js +2 -2
- package/web/.next/server/chunks/ssr/[root-of-the-server]__89e8a5cc._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__8e002910._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__8e002910._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js +2 -2
- package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__fdc75809._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__fdc75809._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_135edb9c._.js +1 -1
- package/web/.next/server/chunks/ssr/_135edb9c._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_8dacd1e7._.js +1 -1
- package/web/.next/server/chunks/ssr/_8dacd1e7._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{_b1bbe3cd._.js → _ace6ae7f._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_b1bbe3cd._.js.map → _ace6ae7f._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/{_77f506b6._.js → _b17ec930._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_77f506b6._.js.map → _b17ec930._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/_cc77a143._.js +1 -1
- package/web/.next/server/chunks/ssr/_cc77a143._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{_d8c97e13._.js → _fa027412._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_d8c97e13._.js.map → _fa027412._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +1 -1
- package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_7275ce5d._.js +2 -2
- package/web/.next/server/chunks/ssr/src_presentation_web_7275ce5d._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_758dfa10._.js +2 -2
- package/web/.next/server/chunks/ssr/src_presentation_web_758dfa10._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_84803221.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_84803221.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1fa8042e.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1fa8042e.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_24684200.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_24684200.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_app_(dashboard)_get-graph-data_ts_b018483e._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_app_(dashboard)_get-graph-data_ts_b018483e._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_bf50c527._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_de814675._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
- package/web/.next/server/pages/500.html +2 -2
- package/web/.next/server/server-reference-manifest.js +1 -1
- package/web/.next/server/server-reference-manifest.json +30 -30
- package/web/.next/static/chunks/{52a7597f541defb8.js → 0dbb7106dc1d14f0.js} +1 -1
- package/web/.next/static/chunks/{f8608b847c7a0136.js → 4731bd6b3845ae5b.js} +1 -1
- package/web/.next/static/chunks/{cf8e107354cc0159.js → 524db7fb83eb1b0a.js} +1 -1
- package/web/.next/static/chunks/{d7c39cd622a695c4.js → 5b305180fecefa25.js} +1 -1
- package/web/.next/static/chunks/{310da8e04e750294.js → 7efb0c42a34fecc0.js} +1 -1
- package/web/.next/static/chunks/{af561a5913def091.js → 85baab3c23206768.js} +1 -1
- package/web/.next/static/chunks/{1b865c5b424cba9e.js → aa8d9e8c8bf51cd8.js} +1 -1
- package/web/.next/static/chunks/{1b7418778f5a6927.js → c7f8025b210beec0.js} +1 -1
- package/web/.next/static/chunks/{8117620ed55b5113.js → c8fac6b569cb729e.js} +1 -1
- package/web/.next/static/chunks/{be7ad52cd86e161e.js → e87acba9497e0fa9.js} +2 -2
- package/dist/packages/core/src/infrastructure/services/process/tree-kill.d.ts +0 -12
- package/dist/packages/core/src/infrastructure/services/process/tree-kill.d.ts.map +0 -1
- package/dist/packages/core/src/infrastructure/services/process/tree-kill.js +0 -11
- package/dist/packages/core/src/infrastructure/services/tool-installer/binary-exists.d.ts +0 -25
- package/dist/packages/core/src/infrastructure/services/tool-installer/binary-exists.d.ts.map +0 -1
- package/dist/packages/core/src/infrastructure/services/tool-installer/binary-exists.js +0 -32
- /package/web/.next/static/{DhQ9HMzgdS2AYNz0twCIf → j7LoqaY49SHJhvQzViLfV}/_buildManifest.js +0 -0
- /package/web/.next/static/{DhQ9HMzgdS2AYNz0twCIf → j7LoqaY49SHJhvQzViLfV}/_clientMiddlewareManifest.json +0 -0
- /package/web/.next/static/{DhQ9HMzgdS2AYNz0twCIf → j7LoqaY49SHJhvQzViLfV}/_ssgManifest.js +0 -0
|
@@ -5,14 +5,13 @@
|
|
|
5
5
|
"tags": ["ide"],
|
|
6
6
|
"author": "Codeium",
|
|
7
7
|
"website": "https://codeium.com/windsurf",
|
|
8
|
-
"platforms": ["linux", "darwin"
|
|
8
|
+
"platforms": ["linux", "darwin"],
|
|
9
9
|
"iconUrl": "https://cdn.simpleicons.org/windsurf",
|
|
10
10
|
"binary": "windsurf",
|
|
11
11
|
"packageManager": "apt",
|
|
12
12
|
"commands": {
|
|
13
13
|
"linux": "curl -fsSL \"https://windsurf-stable.codeiumdata.com/wVxQEIWkwPUEAGf3/windsurf.gpg\" | sudo gpg --yes --dearmor -o /usr/share/keyrings/windsurf-stable-archive-keyring.gpg && echo \"deb [signed-by=/usr/share/keyrings/windsurf-stable-archive-keyring.gpg arch=amd64] https://windsurf-stable.codeiumdata.com/wVxQEIWkwPUEAGf3/apt stable main\" | sudo tee /etc/apt/sources.list.d/windsurf.list > /dev/null && sudo apt-get update && sudo apt-get install -y windsurf",
|
|
14
|
-
"darwin": "brew install --cask windsurf"
|
|
15
|
-
"win32": "winget install --id Codeium.Windsurf -e --source winget"
|
|
14
|
+
"darwin": "brew install --cask windsurf"
|
|
16
15
|
},
|
|
17
16
|
"timeout": 300000,
|
|
18
17
|
"documentationUrl": "https://docs.windsurf.com/windsurf/getting-started",
|
|
@@ -5,14 +5,13 @@
|
|
|
5
5
|
"tags": ["ide"],
|
|
6
6
|
"author": "Zed Industries",
|
|
7
7
|
"website": "https://zed.dev",
|
|
8
|
-
"platforms": ["linux", "darwin"
|
|
8
|
+
"platforms": ["linux", "darwin"],
|
|
9
9
|
"iconUrl": "https://cdn.simpleicons.org/zedindustries",
|
|
10
10
|
"binary": "zed",
|
|
11
11
|
"packageManager": "curl",
|
|
12
12
|
"commands": {
|
|
13
13
|
"linux": "curl -f https://zed.dev/install.sh | sh",
|
|
14
|
-
"darwin": "curl -f https://zed.dev/install.sh | sh"
|
|
15
|
-
"win32": "winget install --id ZedIndustries.Zed -e --source winget"
|
|
14
|
+
"darwin": "curl -f https://zed.dev/install.sh | sh"
|
|
16
15
|
},
|
|
17
16
|
"timeout": 300000,
|
|
18
17
|
"documentationUrl": "https://zed.dev/docs/installation",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start-daemon.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/daemon/start-daemon.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAoBH,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAAC,IAAI,GAAE,kBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"start-daemon.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/daemon/start-daemon.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAoBH,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAAC,IAAI,GAAE,kBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CA+F9E"}
|
|
@@ -67,7 +67,6 @@ export async function startDaemon(opts = {}) {
|
|
|
67
67
|
const child = spawn(process.execPath, [...process.execArgv, process.argv[1], '_serve', '--port', String(port)], {
|
|
68
68
|
detached: true,
|
|
69
69
|
stdio: ['ignore', logFd, logFd],
|
|
70
|
-
windowsHide: true,
|
|
71
70
|
});
|
|
72
71
|
// Wait briefly for the child to either settle or crash.
|
|
73
72
|
const exitCode = await Promise.race([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stop-daemon.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/daemon/stop-daemon.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;
|
|
1
|
+
{"version":3,"file":"stop-daemon.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/daemon/stop-daemon.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iEAAiE,CAAC;AA0BtG;;;GAGG;AACH,wBAAsB,UAAU,CAAC,aAAa,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAyC7E"}
|
|
@@ -18,7 +18,6 @@
|
|
|
18
18
|
*
|
|
19
19
|
* @param daemonService - IDaemonService instance (injected by caller for testability, NFR-4)
|
|
20
20
|
*/
|
|
21
|
-
import { treeKill } from '../../../../../packages/core/src/infrastructure/services/process/tree-kill.js';
|
|
22
21
|
import { messages } from '../../ui/index.js';
|
|
23
22
|
const POLL_INTERVAL_MS = 200;
|
|
24
23
|
const MAX_WAIT_MS = 5000;
|
|
@@ -55,15 +54,15 @@ export async function stopDaemon(daemonService) {
|
|
|
55
54
|
}
|
|
56
55
|
try {
|
|
57
56
|
messages.info(`Stopping Shep daemon (PID ${pid})...`);
|
|
58
|
-
// Send SIGTERM
|
|
59
|
-
|
|
57
|
+
// Send SIGTERM — request graceful shutdown
|
|
58
|
+
process.kill(pid, 'SIGTERM');
|
|
60
59
|
// Poll for up to 5s waiting for the process to exit
|
|
61
60
|
const died = await pollUntilDead(daemonService, pid, MAX_WAIT_MS, POLL_INTERVAL_MS);
|
|
62
61
|
if (!died) {
|
|
63
|
-
// Graceful shutdown timed out — force kill
|
|
62
|
+
// Graceful shutdown timed out — force kill
|
|
64
63
|
messages.info('Daemon did not stop gracefully, sending SIGKILL...');
|
|
65
64
|
try {
|
|
66
|
-
|
|
65
|
+
process.kill(pid, 'SIGKILL');
|
|
67
66
|
}
|
|
68
67
|
catch {
|
|
69
68
|
// Process may have exited between the check and the kill — ignore
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upgrade.command.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/cli/commands/upgrade.command.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,KAAK,IAAI,YAAY,EAAqB,MAAM,oBAAoB,CAAC;AAQ9E,KAAK,OAAO,GAAG,OAAO,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"upgrade.command.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/cli/commands/upgrade.command.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,KAAK,IAAI,YAAY,EAAqB,MAAM,oBAAoB,CAAC;AAQ9E,KAAK,OAAO,GAAG,OAAO,YAAY,CAAC;AAyEnC;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,GAAE,OAAsB,GAAG,OAAO,CA+D7E"}
|
|
@@ -13,8 +13,6 @@ import { messages } from '../ui/index.js';
|
|
|
13
13
|
import { stopDaemon } from './daemon/stop-daemon.js';
|
|
14
14
|
import { startDaemon } from './daemon/start-daemon.js';
|
|
15
15
|
const VERSION_CHECK_TIMEOUT_MS = 10_000;
|
|
16
|
-
/** On Windows, npm is a .cmd batch file — spawn() needs shell: true to resolve it. */
|
|
17
|
-
const IS_WINDOWS = process.platform === 'win32';
|
|
18
16
|
/**
|
|
19
17
|
* Get the latest published version of @shepai/cli from npm registry.
|
|
20
18
|
* Returns null if the check fails (fail-open).
|
|
@@ -25,7 +23,6 @@ function getLatestVersion(spawnFn) {
|
|
|
25
23
|
let settled = false;
|
|
26
24
|
const child = spawnFn('npm', ['view', '@shepai/cli', 'version'], {
|
|
27
25
|
stdio: ['ignore', 'pipe', 'pipe'],
|
|
28
|
-
...(IS_WINDOWS && { shell: true }),
|
|
29
26
|
});
|
|
30
27
|
const timeout = setTimeout(() => {
|
|
31
28
|
if (!settled) {
|
|
@@ -68,7 +65,6 @@ function runNpmInstall(spawnFn) {
|
|
|
68
65
|
return new Promise((resolve, reject) => {
|
|
69
66
|
const child = spawnFn('npm', ['i', '-g', '@shepai/cli@latest'], {
|
|
70
67
|
stdio: 'inherit',
|
|
71
|
-
...(IS_WINDOWS && { shell: true }),
|
|
72
68
|
});
|
|
73
69
|
child.on('close', (code) => {
|
|
74
70
|
resolve(code ?? 1);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy-repository.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/app/actions/deploy-repository.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"deploy-repository.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/app/actions/deploy-repository.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAIvE,wBAAsB,gBAAgB,CACpC,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,eAAe,CAAA;CAAE,CAAC,CAyBxE"}
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
'use server';
|
|
2
2
|
import { existsSync } from 'node:fs';
|
|
3
|
-
import { isAbsolute } from 'node:path';
|
|
4
3
|
import { resolve } from '../../lib/server-container.js';
|
|
5
4
|
import { createDeploymentLogger } from '../../../../../packages/core/src/infrastructure/services/deployment/deployment-logger.js';
|
|
6
5
|
import { DeploymentState } from '../../../../../packages/core/src/domain/generated/output.js';
|
|
7
6
|
const log = createDeploymentLogger('[deployRepository]');
|
|
8
7
|
export async function deployRepository(repositoryPath) {
|
|
9
8
|
log.info(`called — repositoryPath="${repositoryPath}"`);
|
|
10
|
-
if (!repositoryPath
|
|
9
|
+
if (!repositoryPath?.startsWith('/')) {
|
|
11
10
|
log.warn('rejected — not an absolute path');
|
|
12
11
|
return { success: false, error: 'repositoryPath must be an absolute path' };
|
|
13
12
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"open-folder.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/app/actions/open-folder.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"open-folder.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/app/actions/open-folder.ts"],"names":[],"mappings":"AAeA,wBAAsB,UAAU,CAC9B,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CA8B9D"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
'use server';
|
|
2
2
|
import { existsSync } from 'node:fs';
|
|
3
3
|
import { platform } from 'node:os';
|
|
4
|
-
import { isAbsolute } from 'node:path';
|
|
5
4
|
import { spawn } from 'node:child_process';
|
|
6
5
|
// Use a record lookup instead of if/else to prevent the bundler from
|
|
7
6
|
// tree-shaking platform branches at build time. Turbopack evaluates
|
|
@@ -10,10 +9,9 @@ import { spawn } from 'node:child_process';
|
|
|
10
9
|
const FOLDER_COMMANDS = {
|
|
11
10
|
darwin: { cmd: 'open', args: (p) => [p] },
|
|
12
11
|
linux: { cmd: 'xdg-open', args: (p) => [p] },
|
|
13
|
-
win32: { cmd: 'explorer', args: (p) => [p] },
|
|
14
12
|
};
|
|
15
13
|
export async function openFolder(repositoryPath) {
|
|
16
|
-
if (!repositoryPath
|
|
14
|
+
if (!repositoryPath?.startsWith('/')) {
|
|
17
15
|
return { success: false, error: 'repositoryPath must be an absolute path' };
|
|
18
16
|
}
|
|
19
17
|
try {
|
|
@@ -24,7 +22,7 @@ export async function openFolder(repositoryPath) {
|
|
|
24
22
|
if (!entry) {
|
|
25
23
|
return {
|
|
26
24
|
success: false,
|
|
27
|
-
error: `Unsupported platform: ${platform()}
|
|
25
|
+
error: `Unsupported platform: ${platform()}. Folder open is supported on macOS and Linux only.`,
|
|
28
26
|
};
|
|
29
27
|
}
|
|
30
28
|
const child = spawn(entry.cmd, entry.args(repositoryPath), {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"open-ide.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/app/actions/open-ide.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"open-ide.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/app/actions/open-ide.ts"],"names":[],"mappings":"AAMA,UAAU,YAAY;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,OAAO,CAC3B,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAuB/E"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
'use server';
|
|
2
|
-
import { isAbsolute } from 'node:path';
|
|
3
2
|
import { getSettings } from '../../../../../packages/core/src/infrastructure/services/settings.service.js';
|
|
4
3
|
import { resolve } from '../../lib/server-container.js';
|
|
5
4
|
export async function openIde(input) {
|
|
6
5
|
const { repositoryPath, branch } = input;
|
|
7
|
-
if (!repositoryPath
|
|
6
|
+
if (!repositoryPath?.startsWith('/')) {
|
|
8
7
|
return { success: false, error: 'repositoryPath must be an absolute path' };
|
|
9
8
|
}
|
|
10
9
|
const settings = getSettings();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"open-shell.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/app/actions/open-shell.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"open-shell.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/app/actions/open-shell.ts"],"names":[],"mappings":"AAiBA,UAAU,cAAc;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,SAAS,CAC7B,KAAK,EAAE,cAAc,GACpB,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAoC9E"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
'use server';
|
|
2
2
|
import { existsSync } from 'node:fs';
|
|
3
3
|
import { platform } from 'node:os';
|
|
4
|
-
import { isAbsolute } from 'node:path';
|
|
5
4
|
import { spawn } from 'node:child_process';
|
|
6
5
|
import { getSettings } from '../../../../../packages/core/src/infrastructure/services/settings.service.js';
|
|
7
6
|
import { computeWorktreePath } from '../../../../../packages/core/src/infrastructure/services/ide-launchers/compute-worktree-path.js';
|
|
@@ -12,11 +11,10 @@ import { computeWorktreePath } from '../../../../../packages/core/src/infrastruc
|
|
|
12
11
|
const SHELL_COMMANDS = {
|
|
13
12
|
darwin: { cmd: 'open', args: (p) => ['-a', 'Terminal', p] },
|
|
14
13
|
linux: { cmd: 'x-terminal-emulator', args: (p) => [`--working-directory=${p}`] },
|
|
15
|
-
win32: { cmd: 'powershell', args: (p) => ['-NoExit', '-Command', `Set-Location "${p}"`] },
|
|
16
14
|
};
|
|
17
15
|
export async function openShell(input) {
|
|
18
16
|
const { repositoryPath, branch } = input;
|
|
19
|
-
if (!repositoryPath
|
|
17
|
+
if (!repositoryPath?.startsWith('/')) {
|
|
20
18
|
return { success: false, error: 'repositoryPath must be an absolute path' };
|
|
21
19
|
}
|
|
22
20
|
try {
|
|
@@ -30,7 +28,7 @@ export async function openShell(input) {
|
|
|
30
28
|
if (!entry) {
|
|
31
29
|
return {
|
|
32
30
|
success: false,
|
|
33
|
-
error: `Unsupported platform: ${platform()}
|
|
31
|
+
error: `Unsupported platform: ${platform()}. Shell launch is supported on macOS and Linux only.`,
|
|
34
32
|
};
|
|
35
33
|
}
|
|
36
34
|
const child = spawn(entry.cmd, entry.args(targetPath), {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-graph-nodes.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/web/app/build-graph-nodes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,sCAAsC,CAAC;AAM1F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAG1C,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,QAAQ,GAAG,IAAI,CAAC;CACtB;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,YAAY,EAAE,UAAU,EAAE,EAC1B,gBAAgB,EAAE,cAAc,EAAE,GACjC;IAAE,KAAK,EAAE,cAAc,EAAE,CAAC;IAAC,KAAK,EAAE,IAAI,EAAE,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"build-graph-nodes.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/web/app/build-graph-nodes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,sCAAsC,CAAC;AAM1F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAG1C,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,QAAQ,GAAG,IAAI,CAAC;CACtB;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,YAAY,EAAE,UAAU,EAAE,EAC1B,gBAAgB,EAAE,cAAc,EAAE,GACjC;IAAE,KAAK,EAAE,cAAc,EAAE,CAAC;IAAC,KAAK,EAAE,IAAI,EAAE,CAAA;CAAE,CAuE5C"}
|
|
@@ -8,12 +8,10 @@ import { deriveNodeState, deriveProgress, deriveLifecycle, } from '../components
|
|
|
8
8
|
* renders empty when features exist but their repository rows are missing.
|
|
9
9
|
*/
|
|
10
10
|
export function buildGraphNodes(repositories, featuresWithRuns) {
|
|
11
|
-
//
|
|
12
|
-
const normalizePath = (p) => p.replace(/\\/g, '/');
|
|
13
|
-
// Group features by normalized repository path
|
|
11
|
+
// Group features by repository path
|
|
14
12
|
const featuresByRepo = {};
|
|
15
13
|
featuresWithRuns.forEach((entry) => {
|
|
16
|
-
const repoKey =
|
|
14
|
+
const repoKey = entry.feature.repositoryPath;
|
|
17
15
|
if (!featuresByRepo[repoKey]) {
|
|
18
16
|
featuresByRepo[repoKey] = [];
|
|
19
17
|
}
|
|
@@ -25,8 +23,7 @@ export function buildGraphNodes(repositories, featuresWithRuns) {
|
|
|
25
23
|
const coveredPaths = new Set();
|
|
26
24
|
// First, add nodes for all persisted repositories (including those without features)
|
|
27
25
|
for (const repo of repositories) {
|
|
28
|
-
|
|
29
|
-
coveredPaths.add(normalizedRepoPath);
|
|
26
|
+
coveredPaths.add(repo.path);
|
|
30
27
|
const repoNodeId = `repo-${repo.id}`;
|
|
31
28
|
nodes.push({
|
|
32
29
|
id: repoNodeId,
|
|
@@ -34,12 +31,12 @@ export function buildGraphNodes(repositories, featuresWithRuns) {
|
|
|
34
31
|
position: { x: 0, y: 0 },
|
|
35
32
|
data: {
|
|
36
33
|
name: repo.name,
|
|
37
|
-
repositoryPath:
|
|
34
|
+
repositoryPath: repo.path,
|
|
38
35
|
id: repo.id,
|
|
39
36
|
createdAt: repo.createdAt instanceof Date ? repo.createdAt.getTime() : Number(repo.createdAt),
|
|
40
37
|
},
|
|
41
38
|
});
|
|
42
|
-
const repoFeatures = featuresByRepo[
|
|
39
|
+
const repoFeatures = featuresByRepo[repo.path] ?? [];
|
|
43
40
|
appendFeatureNodes(repoFeatures, repoNodeId, featuresWithRuns, nodes, edges, repo.name);
|
|
44
41
|
}
|
|
45
42
|
// Second pass: group orphaned features under virtual repository nodes
|
|
@@ -26,5 +26,5 @@ function FileDiffItem({ file }) {
|
|
|
26
26
|
export function DiffView({ fileDiffs }) {
|
|
27
27
|
if (fileDiffs.length === 0)
|
|
28
28
|
return null;
|
|
29
|
-
return (_jsxs("div", { className: "border-border rounded-lg border", children: [_jsx("div", { className: "px-4 py-3", children: _jsxs("div", { className: "mb-2 flex items-center gap-2", children: [_jsx(FileText, { className: "text-muted-foreground h-4 w-4" }), _jsx("span", { className: "text-foreground text-xs font-semibold", children: "Changed Files" }), _jsxs("span", { className: "text-muted-foreground text-[10px]", children: ["(", fileDiffs.length, ")"] })] }) }), _jsx("div", { className: "border-border border-t", children: fileDiffs.map((file) => (_jsx(FileDiffItem, { file: file },
|
|
29
|
+
return (_jsxs("div", { className: "border-border rounded-lg border", children: [_jsx("div", { className: "px-4 py-3", children: _jsxs("div", { className: "mb-2 flex items-center gap-2", children: [_jsx(FileText, { className: "text-muted-foreground h-4 w-4" }), _jsx("span", { className: "text-foreground text-xs font-semibold", children: "Changed Files" }), _jsxs("span", { className: "text-muted-foreground text-[10px]", children: ["(", fileDiffs.length, ")"] })] }) }), _jsx("div", { className: "border-border border-t", children: fileDiffs.map((file) => (_jsx(FileDiffItem, { file: file }, file.path))) })] }));
|
|
30
30
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"derive-graph.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/web/lib/derive-graph.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,qDAAqD;AACrD,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,eAAe,CAAC;IACtB,sGAAsG;IACtG,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wDAAwD;AACxD,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,kBAAkB,CAAC;CAC1B;AAED,gFAAgF;AAChF,MAAM,WAAW,cAAc;IAC7B,4FAA4F;IAC5F,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,qEAAqE;IACrE,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,8CAA8C;IAC9C,eAAe,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACjE,6EAA6E;IAC7E,eAAe,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,8EAA8E;IAC9E,iBAAiB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IACjD,iDAAiD;IACjD,kBAAkB,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;CACrD;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CACzB,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,EACrC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,EAC/B,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,EACrC,SAAS,CAAC,EAAE,cAAc,GACzB;IAAE,KAAK,EAAE,cAAc,EAAE,CAAC;IAAC,KAAK,EAAE,IAAI,EAAE,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"derive-graph.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/web/lib/derive-graph.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,qDAAqD;AACrD,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,eAAe,CAAC;IACtB,sGAAsG;IACtG,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wDAAwD;AACxD,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,kBAAkB,CAAC;CAC1B;AAED,gFAAgF;AAChF,MAAM,WAAW,cAAc;IAC7B,4FAA4F;IAC5F,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,qEAAqE;IACrE,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,8CAA8C;IAC9C,eAAe,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACjE,6EAA6E;IAC7E,eAAe,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,8EAA8E;IAC9E,iBAAiB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IACjD,iDAAiD;IACjD,kBAAkB,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;CACrD;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CACzB,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,EACrC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,EAC/B,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,EACrC,SAAS,CAAC,EAAE,cAAc,GACzB;IAAE,KAAK,EAAE,cAAc,EAAE,CAAC;IAAC,KAAK,EAAE,IAAI,EAAE,CAAA;CAAE,CAgI5C"}
|
|
@@ -17,13 +17,11 @@
|
|
|
17
17
|
export function deriveGraph(featureMap, repoMap, pendingMap, callbacks) {
|
|
18
18
|
const nodes = [];
|
|
19
19
|
const edges = [];
|
|
20
|
-
// Normalize path separators so Windows backslash paths match forward-slash paths
|
|
21
|
-
const normalizePath = (p) => p.replace(/\\/g, '/');
|
|
22
20
|
// Build a lookup: repositoryPath → repoNodeId
|
|
23
21
|
const repoByPath = new Map();
|
|
24
22
|
for (const [nodeId, entry] of repoMap) {
|
|
25
23
|
if (entry.data.repositoryPath) {
|
|
26
|
-
repoByPath.set(
|
|
24
|
+
repoByPath.set(entry.data.repositoryPath, nodeId);
|
|
27
25
|
}
|
|
28
26
|
}
|
|
29
27
|
// Virtual repo nodes created for orphaned features (not in repoMap)
|
|
@@ -116,7 +114,7 @@ export function deriveGraph(featureMap, repoMap, pendingMap, callbacks) {
|
|
|
116
114
|
}
|
|
117
115
|
else {
|
|
118
116
|
// Repo→feature edge (matched by repositoryPath)
|
|
119
|
-
const repositoryPath =
|
|
117
|
+
const repositoryPath = entry.data.repositoryPath;
|
|
120
118
|
const repoNodeId = repoByPath.get(repositoryPath) ?? getOrCreateVirtualRepo(repositoryPath);
|
|
121
119
|
edges.push({
|
|
122
120
|
id: `edge-${repoNodeId}-${nodeId}`,
|