vibe-pal 0.42.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/.next/BUILD_ID +1 -0
- package/.next/app-path-routes-manifest.json +32 -0
- package/.next/build-manifest.json +21 -0
- package/.next/export-marker.json +6 -0
- package/.next/fallback-build-manifest.json +12 -0
- package/.next/images-manifest.json +67 -0
- package/.next/next-minimal-server.js.nft.json +1 -0
- package/.next/next-server.js.nft.json +1 -0
- package/.next/package.json +1 -0
- package/.next/prerender-manifest.json +258 -0
- package/.next/required-server-files.js +343 -0
- package/.next/required-server-files.json +343 -0
- package/.next/routes-manifest.json +233 -0
- package/.next/server/app/_global-error/page/app-paths-manifest.json +3 -0
- package/.next/server/app/_global-error/page/build-manifest.json +18 -0
- package/.next/server/app/_global-error/page/next-font-manifest.json +6 -0
- package/.next/server/app/_global-error/page/react-loadable-manifest.json +1 -0
- package/.next/server/app/_global-error/page/server-reference-manifest.json +4 -0
- package/.next/server/app/_global-error/page.js +10 -0
- package/.next/server/app/_global-error/page.js.map +5 -0
- package/.next/server/app/_global-error/page.js.nft.json +1 -0
- package/.next/server/app/_global-error/page_client-reference-manifest.js +2 -0
- package/.next/server/app/_global-error.html +2 -0
- package/.next/server/app/_global-error.meta +15 -0
- package/.next/server/app/_global-error.rsc +12 -0
- package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +5 -0
- package/.next/server/app/_global-error.segments/_full.segment.rsc +12 -0
- package/.next/server/app/_global-error.segments/_head.segment.rsc +5 -0
- package/.next/server/app/_global-error.segments/_index.segment.rsc +4 -0
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -0
- package/.next/server/app/_not-found/page/app-paths-manifest.json +3 -0
- package/.next/server/app/_not-found/page/build-manifest.json +18 -0
- package/.next/server/app/_not-found/page/next-font-manifest.json +11 -0
- package/.next/server/app/_not-found/page/react-loadable-manifest.json +1 -0
- package/.next/server/app/_not-found/page/server-reference-manifest.json +4 -0
- package/.next/server/app/_not-found/page.js +15 -0
- package/.next/server/app/_not-found/page.js.map +5 -0
- package/.next/server/app/_not-found/page.js.nft.json +1 -0
- package/.next/server/app/_not-found/page_client-reference-manifest.js +2 -0
- package/.next/server/app/_not-found.html +54 -0
- package/.next/server/app/_not-found.meta +16 -0
- package/.next/server/app/_not-found.rsc +73 -0
- package/.next/server/app/_not-found.segments/_full.segment.rsc +73 -0
- package/.next/server/app/_not-found.segments/_head.segment.rsc +6 -0
- package/.next/server/app/_not-found.segments/_index.segment.rsc +61 -0
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +5 -0
- package/.next/server/app/_not-found.segments/_not-found.segment.rsc +4 -0
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +4 -0
- package/.next/server/app/api/component-source/resolve/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/component-source/resolve/route/build-manifest.json +11 -0
- package/.next/server/app/api/component-source/resolve/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/component-source/resolve/route.js +8 -0
- package/.next/server/app/api/component-source/resolve/route.js.map +5 -0
- package/.next/server/app/api/component-source/resolve/route.js.nft.json +1 -0
- package/.next/server/app/api/component-source/resolve/route_client-reference-manifest.js +2 -0
- package/.next/server/app/api/credentials/github/repos/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/credentials/github/repos/route/build-manifest.json +11 -0
- package/.next/server/app/api/credentials/github/repos/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/credentials/github/repos/route.js +8 -0
- package/.next/server/app/api/credentials/github/repos/route.js.map +5 -0
- package/.next/server/app/api/credentials/github/repos/route.js.nft.json +1 -0
- package/.next/server/app/api/credentials/github/repos/route_client-reference-manifest.js +2 -0
- package/.next/server/app/api/credentials/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/credentials/route/build-manifest.json +11 -0
- package/.next/server/app/api/credentials/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/credentials/route.js +8 -0
- package/.next/server/app/api/credentials/route.js.map +5 -0
- package/.next/server/app/api/credentials/route.js.nft.json +1 -0
- package/.next/server/app/api/credentials/route_client-reference-manifest.js +2 -0
- package/.next/server/app/api/custom-scripts/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/custom-scripts/route/build-manifest.json +11 -0
- package/.next/server/app/api/custom-scripts/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/custom-scripts/route.js +10 -0
- package/.next/server/app/api/custom-scripts/route.js.map +5 -0
- package/.next/server/app/api/custom-scripts/route.js.nft.json +1 -0
- package/.next/server/app/api/custom-scripts/route_client-reference-manifest.js +2 -0
- package/.next/server/app/api/file-thumbnail/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/file-thumbnail/route/build-manifest.json +11 -0
- package/.next/server/app/api/file-thumbnail/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/file-thumbnail/route.js +6 -0
- package/.next/server/app/api/file-thumbnail/route.js.map +5 -0
- package/.next/server/app/api/file-thumbnail/route.js.nft.json +1 -0
- package/.next/server/app/api/file-thumbnail/route_client-reference-manifest.js +2 -0
- package/.next/server/app/api/fs/open/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/fs/open/route/build-manifest.json +11 -0
- package/.next/server/app/api/fs/open/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/fs/open/route.js +8 -0
- package/.next/server/app/api/fs/open/route.js.map +5 -0
- package/.next/server/app/api/fs/open/route.js.nft.json +1 -0
- package/.next/server/app/api/fs/open/route_client-reference-manifest.js +2 -0
- package/.next/server/app/api/fs/open-terminal/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/fs/open-terminal/route/build-manifest.json +11 -0
- package/.next/server/app/api/fs/open-terminal/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/fs/open-terminal/route.js +8 -0
- package/.next/server/app/api/fs/open-terminal/route.js.map +5 -0
- package/.next/server/app/api/fs/open-terminal/route.js.nft.json +1 -0
- package/.next/server/app/api/fs/open-terminal/route_client-reference-manifest.js +2 -0
- package/.next/server/app/api/git/action/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/git/action/route/build-manifest.json +11 -0
- package/.next/server/app/api/git/action/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/git/action/route.js +10 -0
- package/.next/server/app/api/git/action/route.js.map +5 -0
- package/.next/server/app/api/git/action/route.js.nft.json +1 -0
- package/.next/server/app/api/git/action/route_client-reference-manifest.js +2 -0
- package/.next/server/app/api/git/branches/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/git/branches/route/build-manifest.json +11 -0
- package/.next/server/app/api/git/branches/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/git/branches/route.js +10 -0
- package/.next/server/app/api/git/branches/route.js.map +5 -0
- package/.next/server/app/api/git/branches/route.js.nft.json +1 -0
- package/.next/server/app/api/git/branches/route_client-reference-manifest.js +2 -0
- package/.next/server/app/api/git/diff/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/git/diff/route/build-manifest.json +11 -0
- package/.next/server/app/api/git/diff/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/git/diff/route.js +9 -0
- package/.next/server/app/api/git/diff/route.js.map +5 -0
- package/.next/server/app/api/git/diff/route.js.nft.json +1 -0
- package/.next/server/app/api/git/diff/route_client-reference-manifest.js +2 -0
- package/.next/server/app/api/git/log/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/git/log/route/build-manifest.json +11 -0
- package/.next/server/app/api/git/log/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/git/log/route.js +10 -0
- package/.next/server/app/api/git/log/route.js.map +5 -0
- package/.next/server/app/api/git/log/route.js.nft.json +1 -0
- package/.next/server/app/api/git/log/route_client-reference-manifest.js +2 -0
- package/.next/server/app/api/git/status/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/git/status/route/build-manifest.json +11 -0
- package/.next/server/app/api/git/status/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/git/status/route.js +10 -0
- package/.next/server/app/api/git/status/route.js.map +5 -0
- package/.next/server/app/api/git/status/route.js.nft.json +1 -0
- package/.next/server/app/api/git/status/route_client-reference-manifest.js +2 -0
- package/.next/server/app/api/notifications/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/notifications/route/build-manifest.json +11 -0
- package/.next/server/app/api/notifications/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/notifications/route.js +8 -0
- package/.next/server/app/api/notifications/route.js.map +5 -0
- package/.next/server/app/api/notifications/route.js.nft.json +1 -0
- package/.next/server/app/api/notifications/route_client-reference-manifest.js +2 -0
- package/.next/server/app/api/notifications/socket/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/notifications/socket/route/build-manifest.json +11 -0
- package/.next/server/app/api/notifications/socket/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/notifications/socket/route.js +8 -0
- package/.next/server/app/api/notifications/socket/route.js.map +5 -0
- package/.next/server/app/api/notifications/socket/route.js.nft.json +1 -0
- package/.next/server/app/api/notifications/socket/route_client-reference-manifest.js +2 -0
- package/.next/server/app/api/preview-proxy/start/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/preview-proxy/start/route/build-manifest.json +11 -0
- package/.next/server/app/api/preview-proxy/start/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/preview-proxy/start/route.js +8 -0
- package/.next/server/app/api/preview-proxy/start/route.js.map +5 -0
- package/.next/server/app/api/preview-proxy/start/route.js.nft.json +1 -0
- package/.next/server/app/api/preview-proxy/start/route_client-reference-manifest.js +2 -0
- package/.next/server/app/api/repos/clone/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/repos/clone/route/build-manifest.json +11 -0
- package/.next/server/app/api/repos/clone/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/repos/clone/route.js +9 -0
- package/.next/server/app/api/repos/clone/route.js.map +5 -0
- package/.next/server/app/api/repos/clone/route.js.nft.json +1 -0
- package/.next/server/app/api/repos/clone/route_client-reference-manifest.js +2 -0
- package/.next/server/app/api/repos/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/repos/route/build-manifest.json +11 -0
- package/.next/server/app/api/repos/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/repos/route.js +9 -0
- package/.next/server/app/api/repos/route.js.map +5 -0
- package/.next/server/app/api/repos/route.js.nft.json +1 -0
- package/.next/server/app/api/repos/route_client-reference-manifest.js +2 -0
- package/.next/server/app/api/settings/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/settings/route/build-manifest.json +11 -0
- package/.next/server/app/api/settings/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/settings/route.js +8 -0
- package/.next/server/app/api/settings/route.js.map +5 -0
- package/.next/server/app/api/settings/route.js.nft.json +1 -0
- package/.next/server/app/api/settings/route_client-reference-manifest.js +2 -0
- package/.next/server/app/credentials/page/app-paths-manifest.json +3 -0
- package/.next/server/app/credentials/page/build-manifest.json +18 -0
- package/.next/server/app/credentials/page/next-font-manifest.json +11 -0
- package/.next/server/app/credentials/page/react-loadable-manifest.json +1 -0
- package/.next/server/app/credentials/page/server-reference-manifest.json +110 -0
- package/.next/server/app/credentials/page.js +18 -0
- package/.next/server/app/credentials/page.js.map +5 -0
- package/.next/server/app/credentials/page.js.nft.json +1 -0
- package/.next/server/app/credentials/page_client-reference-manifest.js +2 -0
- package/.next/server/app/credentials.html +54 -0
- package/.next/server/app/credentials.meta +15 -0
- package/.next/server/app/credentials.rsc +79 -0
- package/.next/server/app/credentials.segments/_full.segment.rsc +79 -0
- package/.next/server/app/credentials.segments/_head.segment.rsc +6 -0
- package/.next/server/app/credentials.segments/_index.segment.rsc +61 -0
- package/.next/server/app/credentials.segments/_tree.segment.rsc +6 -0
- package/.next/server/app/credentials.segments/credentials/__PAGE__.segment.rsc +9 -0
- package/.next/server/app/credentials.segments/credentials.segment.rsc +4 -0
- package/.next/server/app/git/changes/page/app-paths-manifest.json +3 -0
- package/.next/server/app/git/changes/page/build-manifest.json +18 -0
- package/.next/server/app/git/changes/page/next-font-manifest.json +11 -0
- package/.next/server/app/git/changes/page/react-loadable-manifest.json +1 -0
- package/.next/server/app/git/changes/page/server-reference-manifest.json +4 -0
- package/.next/server/app/git/changes/page.js +18 -0
- package/.next/server/app/git/changes/page.js.map +5 -0
- package/.next/server/app/git/changes/page.js.nft.json +1 -0
- package/.next/server/app/git/changes/page_client-reference-manifest.js +2 -0
- package/.next/server/app/git/changes.html +54 -0
- package/.next/server/app/git/changes.meta +16 -0
- package/.next/server/app/git/changes.rsc +83 -0
- package/.next/server/app/git/changes.segments/_full.segment.rsc +83 -0
- package/.next/server/app/git/changes.segments/_head.segment.rsc +6 -0
- package/.next/server/app/git/changes.segments/_index.segment.rsc +61 -0
- package/.next/server/app/git/changes.segments/_tree.segment.rsc +7 -0
- package/.next/server/app/git/changes.segments/git/changes/__PAGE__.segment.rsc +10 -0
- package/.next/server/app/git/changes.segments/git/changes.segment.rsc +4 -0
- package/.next/server/app/git/changes.segments/git.segment.rsc +7 -0
- package/.next/server/app/git/custom-scripts/page/app-paths-manifest.json +3 -0
- package/.next/server/app/git/custom-scripts/page/build-manifest.json +18 -0
- package/.next/server/app/git/custom-scripts/page/next-font-manifest.json +11 -0
- package/.next/server/app/git/custom-scripts/page/react-loadable-manifest.json +1 -0
- package/.next/server/app/git/custom-scripts/page/server-reference-manifest.json +4 -0
- package/.next/server/app/git/custom-scripts/page.js +18 -0
- package/.next/server/app/git/custom-scripts/page.js.map +5 -0
- package/.next/server/app/git/custom-scripts/page.js.nft.json +1 -0
- package/.next/server/app/git/custom-scripts/page_client-reference-manifest.js +2 -0
- package/.next/server/app/git/custom-scripts.html +54 -0
- package/.next/server/app/git/custom-scripts.meta +16 -0
- package/.next/server/app/git/custom-scripts.rsc +82 -0
- package/.next/server/app/git/custom-scripts.segments/_full.segment.rsc +82 -0
- package/.next/server/app/git/custom-scripts.segments/_head.segment.rsc +6 -0
- package/.next/server/app/git/custom-scripts.segments/_index.segment.rsc +61 -0
- package/.next/server/app/git/custom-scripts.segments/_tree.segment.rsc +6 -0
- package/.next/server/app/git/custom-scripts.segments/git/custom-scripts/__PAGE__.segment.rsc +9 -0
- package/.next/server/app/git/custom-scripts.segments/git/custom-scripts.segment.rsc +4 -0
- package/.next/server/app/git/custom-scripts.segments/git.segment.rsc +7 -0
- package/.next/server/app/git/history/page/app-paths-manifest.json +3 -0
- package/.next/server/app/git/history/page/build-manifest.json +18 -0
- package/.next/server/app/git/history/page/next-font-manifest.json +11 -0
- package/.next/server/app/git/history/page/react-loadable-manifest.json +1 -0
- package/.next/server/app/git/history/page/server-reference-manifest.json +20 -0
- package/.next/server/app/git/history/page.js +19 -0
- package/.next/server/app/git/history/page.js.map +5 -0
- package/.next/server/app/git/history/page.js.nft.json +1 -0
- package/.next/server/app/git/history/page_client-reference-manifest.js +2 -0
- package/.next/server/app/git/history.html +54 -0
- package/.next/server/app/git/history.meta +16 -0
- package/.next/server/app/git/history.rsc +83 -0
- package/.next/server/app/git/history.segments/_full.segment.rsc +83 -0
- package/.next/server/app/git/history.segments/_head.segment.rsc +6 -0
- package/.next/server/app/git/history.segments/_index.segment.rsc +61 -0
- package/.next/server/app/git/history.segments/_tree.segment.rsc +7 -0
- package/.next/server/app/git/history.segments/git/history/__PAGE__.segment.rsc +10 -0
- package/.next/server/app/git/history.segments/git/history.segment.rsc +4 -0
- package/.next/server/app/git/history.segments/git.segment.rsc +7 -0
- package/.next/server/app/git/page/app-paths-manifest.json +3 -0
- package/.next/server/app/git/page/build-manifest.json +18 -0
- package/.next/server/app/git/page/next-font-manifest.json +11 -0
- package/.next/server/app/git/page/react-loadable-manifest.json +1 -0
- package/.next/server/app/git/page/server-reference-manifest.json +20 -0
- package/.next/server/app/git/page.js +19 -0
- package/.next/server/app/git/page.js.map +5 -0
- package/.next/server/app/git/page.js.nft.json +1 -0
- package/.next/server/app/git/page_client-reference-manifest.js +2 -0
- package/.next/server/app/git/stashes/page/app-paths-manifest.json +3 -0
- package/.next/server/app/git/stashes/page/build-manifest.json +18 -0
- package/.next/server/app/git/stashes/page/next-font-manifest.json +11 -0
- package/.next/server/app/git/stashes/page/react-loadable-manifest.json +1 -0
- package/.next/server/app/git/stashes/page/server-reference-manifest.json +4 -0
- package/.next/server/app/git/stashes/page.js +18 -0
- package/.next/server/app/git/stashes/page.js.map +5 -0
- package/.next/server/app/git/stashes/page.js.nft.json +1 -0
- package/.next/server/app/git/stashes/page_client-reference-manifest.js +2 -0
- package/.next/server/app/git/stashes.html +54 -0
- package/.next/server/app/git/stashes.meta +16 -0
- package/.next/server/app/git/stashes.rsc +83 -0
- package/.next/server/app/git/stashes.segments/_full.segment.rsc +83 -0
- package/.next/server/app/git/stashes.segments/_head.segment.rsc +6 -0
- package/.next/server/app/git/stashes.segments/_index.segment.rsc +61 -0
- package/.next/server/app/git/stashes.segments/_tree.segment.rsc +7 -0
- package/.next/server/app/git/stashes.segments/git/stashes/__PAGE__.segment.rsc +10 -0
- package/.next/server/app/git/stashes.segments/git/stashes.segment.rsc +4 -0
- package/.next/server/app/git/stashes.segments/git.segment.rsc +7 -0
- package/.next/server/app/git.html +54 -0
- package/.next/server/app/git.meta +15 -0
- package/.next/server/app/git.rsc +82 -0
- package/.next/server/app/git.segments/_full.segment.rsc +82 -0
- package/.next/server/app/git.segments/_head.segment.rsc +6 -0
- package/.next/server/app/git.segments/_index.segment.rsc +61 -0
- package/.next/server/app/git.segments/_tree.segment.rsc +7 -0
- package/.next/server/app/git.segments/git/__PAGE__.segment.rsc +10 -0
- package/.next/server/app/git.segments/git.segment.rsc +7 -0
- package/.next/server/app/icon.png/route/app-paths-manifest.json +3 -0
- package/.next/server/app/icon.png/route/build-manifest.json +11 -0
- package/.next/server/app/icon.png/route.js +8 -0
- package/.next/server/app/icon.png/route.js.map +5 -0
- package/.next/server/app/icon.png/route.js.nft.json +1 -0
- package/.next/server/app/icon.png.body +0 -0
- package/.next/server/app/icon.png.meta +1 -0
- package/.next/server/app/index.html +54 -0
- package/.next/server/app/index.meta +14 -0
- package/.next/server/app/index.rsc +78 -0
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +9 -0
- package/.next/server/app/index.segments/_full.segment.rsc +78 -0
- package/.next/server/app/index.segments/_head.segment.rsc +6 -0
- package/.next/server/app/index.segments/_index.segment.rsc +61 -0
- package/.next/server/app/index.segments/_tree.segment.rsc +6 -0
- package/.next/server/app/new/page/app-paths-manifest.json +3 -0
- package/.next/server/app/new/page/build-manifest.json +18 -0
- package/.next/server/app/new/page/next-font-manifest.json +11 -0
- package/.next/server/app/new/page/react-loadable-manifest.json +1 -0
- package/.next/server/app/new/page/server-reference-manifest.json +440 -0
- package/.next/server/app/new/page.js +19 -0
- package/.next/server/app/new/page.js.map +5 -0
- package/.next/server/app/new/page.js.nft.json +1 -0
- package/.next/server/app/new/page_client-reference-manifest.js +2 -0
- package/.next/server/app/page/app-paths-manifest.json +3 -0
- package/.next/server/app/page/build-manifest.json +18 -0
- package/.next/server/app/page/next-font-manifest.json +11 -0
- package/.next/server/app/page/react-loadable-manifest.json +1 -0
- package/.next/server/app/page/server-reference-manifest.json +440 -0
- package/.next/server/app/page.js +19 -0
- package/.next/server/app/page.js.map +5 -0
- package/.next/server/app/page.js.nft.json +1 -0
- package/.next/server/app/page_client-reference-manifest.js +2 -0
- package/.next/server/app/session/[sessionId]/page/app-paths-manifest.json +3 -0
- package/.next/server/app/session/[sessionId]/page/build-manifest.json +18 -0
- package/.next/server/app/session/[sessionId]/page/next-font-manifest.json +11 -0
- package/.next/server/app/session/[sessionId]/page/react-loadable-manifest.json +1 -0
- package/.next/server/app/session/[sessionId]/page/server-reference-manifest.json +305 -0
- package/.next/server/app/session/[sessionId]/page.js +18 -0
- package/.next/server/app/session/[sessionId]/page.js.map +5 -0
- package/.next/server/app/session/[sessionId]/page.js.nft.json +1 -0
- package/.next/server/app/session/[sessionId]/page_client-reference-manifest.js +2 -0
- package/.next/server/app-paths-manifest.json +32 -0
- package/.next/server/chunks/07f91_next_9d45f6d5._.js +17 -0
- package/.next/server/chunks/07f91_next_9d45f6d5._.js.map +1 -0
- package/.next/server/chunks/07f91_next_dist_esm_build_templates_app-route_46f1593d.js +3 -0
- package/.next/server/chunks/07f91_next_dist_esm_build_templates_app-route_46f1593d.js.map +1 -0
- package/.next/server/chunks/07f91_next_dist_esm_build_templates_app-route_90bd67a9.js +3 -0
- package/.next/server/chunks/07f91_next_dist_esm_build_templates_app-route_90bd67a9.js.map +1 -0
- package/.next/server/chunks/07f91_next_dist_esm_build_templates_app-route_f20df18e.js +3 -0
- package/.next/server/chunks/07f91_next_dist_esm_build_templates_app-route_f20df18e.js.map +1 -0
- package/.next/server/chunks/07f91_zod_v4_classic_external_d5e5e58f.js +39 -0
- package/.next/server/chunks/07f91_zod_v4_classic_external_d5e5e58f.js.map +1 -0
- package/.next/server/chunks/6c7f9_projects_viba__next-internal_server_app_api_credentials_route_actions_26ba0a95.js +3 -0
- package/.next/server/chunks/6c7f9_projects_viba__next-internal_server_app_api_credentials_route_actions_26ba0a95.js.map +1 -0
- package/.next/server/chunks/6c7f9_projects_viba__next-internal_server_app_api_fs_open_route_actions_032a4104.js +3 -0
- package/.next/server/chunks/6c7f9_projects_viba__next-internal_server_app_api_fs_open_route_actions_032a4104.js.map +1 -0
- package/.next/server/chunks/6c7f9_projects_viba__next-internal_server_app_api_git_action_route_actions_be1fb514.js +3 -0
- package/.next/server/chunks/6c7f9_projects_viba__next-internal_server_app_api_git_action_route_actions_be1fb514.js.map +1 -0
- package/.next/server/chunks/6c7f9_projects_viba__next-internal_server_app_api_git_branches_route_actions_82f3fb01.js +3 -0
- package/.next/server/chunks/6c7f9_projects_viba__next-internal_server_app_api_git_branches_route_actions_82f3fb01.js.map +1 -0
- package/.next/server/chunks/6c7f9_projects_viba__next-internal_server_app_api_git_diff_route_actions_2e33c2ae.js +3 -0
- package/.next/server/chunks/6c7f9_projects_viba__next-internal_server_app_api_git_diff_route_actions_2e33c2ae.js.map +1 -0
- package/.next/server/chunks/6c7f9_projects_viba__next-internal_server_app_api_git_log_route_actions_f07c3897.js +3 -0
- package/.next/server/chunks/6c7f9_projects_viba__next-internal_server_app_api_git_log_route_actions_f07c3897.js.map +1 -0
- package/.next/server/chunks/6c7f9_projects_viba__next-internal_server_app_api_git_status_route_actions_f81eb7b9.js +3 -0
- package/.next/server/chunks/6c7f9_projects_viba__next-internal_server_app_api_git_status_route_actions_f81eb7b9.js.map +1 -0
- package/.next/server/chunks/6c7f9_projects_viba__next-internal_server_app_api_repos_clone_route_actions_25fa7ec8.js +3 -0
- package/.next/server/chunks/6c7f9_projects_viba__next-internal_server_app_api_repos_clone_route_actions_25fa7ec8.js.map +1 -0
- package/.next/server/chunks/6c7f9_projects_viba__next-internal_server_app_api_repos_route_actions_bfe1f1f8.js +3 -0
- package/.next/server/chunks/6c7f9_projects_viba__next-internal_server_app_api_repos_route_actions_bfe1f1f8.js.map +1 -0
- package/.next/server/chunks/6c7f9_projects_viba__next-internal_server_app_api_settings_route_actions_21365dd0.js +3 -0
- package/.next/server/chunks/6c7f9_projects_viba__next-internal_server_app_api_settings_route_actions_21365dd0.js.map +1 -0
- package/.next/server/chunks/6c7f9_projects_viba__next-internal_server_app_icon_png_route_actions_6ca1b9f2.js +3 -0
- package/.next/server/chunks/6c7f9_projects_viba__next-internal_server_app_icon_png_route_actions_6ca1b9f2.js.map +1 -0
- package/.next/server/chunks/[externals]__4610b07e._.js +3 -0
- package/.next/server/chunks/[externals]__4610b07e._.js.map +1 -0
- package/.next/server/chunks/[externals]_keytar_be364400._.js +3 -0
- package/.next/server/chunks/[externals]_keytar_be364400._.js.map +1 -0
- package/.next/server/chunks/[externals]_next_dist_a6d89067._.js +3 -0
- package/.next/server/chunks/[externals]_next_dist_a6d89067._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__03cff574._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__03cff574._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__13277fdb._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__13277fdb._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__1e250bd8._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1e250bd8._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__3bd99321._.js +4 -0
- package/.next/server/chunks/[root-of-the-server]__3bd99321._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__4425ca0b._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__4425ca0b._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__534c2265._.js +7 -0
- package/.next/server/chunks/[root-of-the-server]__534c2265._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__5e629757._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__5e629757._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__6f61c772._.js +5 -0
- package/.next/server/chunks/[root-of-the-server]__6f61c772._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__7382f924._.js +519 -0
- package/.next/server/chunks/[root-of-the-server]__7382f924._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__747b62e9._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__747b62e9._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__75dd8619._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__75dd8619._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__8303caaa._.js +7 -0
- package/.next/server/chunks/[root-of-the-server]__8303caaa._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__86bb1f97._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__86bb1f97._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__9535c729._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__9535c729._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__9fdd5d22._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__9fdd5d22._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__bb058465._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__bb058465._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__d0cd49f6._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__d0cd49f6._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__df538917._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__df538917._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__e0fe0ef3._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__e0fe0ef3._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__e70b4dcf._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__e70b4dcf._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__f09d5069._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__f09d5069._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__fa82312c._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__fa82312c._.js.map +1 -0
- package/.next/server/chunks/[turbopack]_runtime.js +795 -0
- package/.next/server/chunks/[turbopack]_runtime.js.map +10 -0
- package/.next/server/chunks/bea2c_viba__next-internal_server_app_api_custom-scripts_route_actions_246e6a14.js +3 -0
- package/.next/server/chunks/bea2c_viba__next-internal_server_app_api_custom-scripts_route_actions_246e6a14.js.map +1 -0
- package/.next/server/chunks/bea2c_viba__next-internal_server_app_api_file-thumbnail_route_actions_3d4e18bd.js +3 -0
- package/.next/server/chunks/bea2c_viba__next-internal_server_app_api_file-thumbnail_route_actions_3d4e18bd.js.map +1 -0
- package/.next/server/chunks/bea2c_viba__next-internal_server_app_api_fs_open-terminal_route_actions_64251327.js +3 -0
- package/.next/server/chunks/bea2c_viba__next-internal_server_app_api_fs_open-terminal_route_actions_64251327.js.map +1 -0
- package/.next/server/chunks/bea2c_viba__next-internal_server_app_api_notifications_route_actions_2a3fb889.js +3 -0
- package/.next/server/chunks/bea2c_viba__next-internal_server_app_api_notifications_route_actions_2a3fb889.js.map +1 -0
- package/.next/server/chunks/bea2c_viba__next-internal_server_app_api_notifications_socket_route_actions_2dfcbdcd.js +3 -0
- package/.next/server/chunks/bea2c_viba__next-internal_server_app_api_notifications_socket_route_actions_2dfcbdcd.js.map +1 -0
- package/.next/server/chunks/bea2c_viba__next-internal_server_app_api_preview-proxy_start_route_actions_70ba3b43.js +3 -0
- package/.next/server/chunks/bea2c_viba__next-internal_server_app_api_preview-proxy_start_route_actions_70ba3b43.js.map +1 -0
- package/.next/server/chunks/daa62__next-internal_server_app_api_component-source_resolve_route_actions_fbcf9527.js +3 -0
- package/.next/server/chunks/daa62__next-internal_server_app_api_component-source_resolve_route_actions_fbcf9527.js.map +1 -0
- package/.next/server/chunks/daa62__next-internal_server_app_api_credentials_github_repos_route_actions_50499a50.js +3 -0
- package/.next/server/chunks/daa62__next-internal_server_app_api_credentials_github_repos_route_actions_50499a50.js.map +1 -0
- package/.next/server/chunks/ssr/07f91_854b7f96._.js +5 -0
- package/.next/server/chunks/ssr/07f91_854b7f96._.js.map +1 -0
- package/.next/server/chunks/ssr/07f91_8f9c8869._.js +5 -0
- package/.next/server/chunks/ssr/07f91_8f9c8869._.js.map +1 -0
- package/.next/server/chunks/ssr/07f91_956ea508._.js +6 -0
- package/.next/server/chunks/ssr/07f91_956ea508._.js.map +1 -0
- package/.next/server/chunks/ssr/07f91_a8df8b0c._.js +3 -0
- package/.next/server/chunks/ssr/07f91_a8df8b0c._.js.map +1 -0
- package/.next/server/chunks/ssr/07f91_c074daa5._.js +5 -0
- package/.next/server/chunks/ssr/07f91_c074daa5._.js.map +1 -0
- package/.next/server/chunks/ssr/07f91_next_dist_43e2f24c._.js +10 -0
- package/.next/server/chunks/ssr/07f91_next_dist_43e2f24c._.js.map +1 -0
- package/.next/server/chunks/ssr/07f91_next_dist_7d0992b2._.js +3 -0
- package/.next/server/chunks/ssr/07f91_next_dist_7d0992b2._.js.map +1 -0
- package/.next/server/chunks/ssr/07f91_next_dist_847902a0._.js +4 -0
- package/.next/server/chunks/ssr/07f91_next_dist_847902a0._.js.map +1 -0
- package/.next/server/chunks/ssr/07f91_next_dist_9854b44b._.js +3 -0
- package/.next/server/chunks/ssr/07f91_next_dist_9854b44b._.js.map +1 -0
- package/.next/server/chunks/ssr/07f91_next_dist_afbe6819._.js +3 -0
- package/.next/server/chunks/ssr/07f91_next_dist_afbe6819._.js.map +1 -0
- package/.next/server/chunks/ssr/07f91_next_dist_client_components_4ae0ede8._.js +3 -0
- package/.next/server/chunks/ssr/07f91_next_dist_client_components_4ae0ede8._.js.map +1 -0
- package/.next/server/chunks/ssr/07f91_next_dist_client_components_builtin_forbidden_c3ca8aa4.js +3 -0
- package/.next/server/chunks/ssr/07f91_next_dist_client_components_builtin_forbidden_c3ca8aa4.js.map +1 -0
- package/.next/server/chunks/ssr/07f91_next_dist_client_components_builtin_global-error_cf183d39.js +3 -0
- package/.next/server/chunks/ssr/07f91_next_dist_client_components_builtin_global-error_cf183d39.js.map +1 -0
- package/.next/server/chunks/ssr/07f91_next_dist_client_components_builtin_unauthorized_b89fa42f.js +3 -0
- package/.next/server/chunks/ssr/07f91_next_dist_client_components_builtin_unauthorized_b89fa42f.js.map +1 -0
- package/.next/server/chunks/ssr/07f91_next_dist_esm_build_templates_app-page_ea68f183.js +4 -0
- package/.next/server/chunks/ssr/07f91_next_dist_esm_build_templates_app-page_ea68f183.js.map +1 -0
- package/.next/server/chunks/ssr/07f91_next_dist_esm_f542aeaf._.js +6 -0
- package/.next/server/chunks/ssr/07f91_next_dist_esm_f542aeaf._.js.map +1 -0
- package/.next/server/chunks/ssr/07f91_next_dist_f989a591._.js +3 -0
- package/.next/server/chunks/ssr/07f91_next_dist_f989a591._.js.map +1 -0
- package/.next/server/chunks/ssr/6c7f9_projects_viba__next-internal_server_app__global-error_page_actions_12a76065.js +3 -0
- package/.next/server/chunks/ssr/6c7f9_projects_viba__next-internal_server_app__global-error_page_actions_12a76065.js.map +1 -0
- package/.next/server/chunks/ssr/6c7f9_projects_viba__next-internal_server_app__not-found_page_actions_8eddae2d.js +3 -0
- package/.next/server/chunks/ssr/6c7f9_projects_viba__next-internal_server_app__not-found_page_actions_8eddae2d.js.map +1 -0
- package/.next/server/chunks/ssr/6c7f9_projects_viba__next-internal_server_app_git_changes_page_actions_b65abe22.js +3 -0
- package/.next/server/chunks/ssr/6c7f9_projects_viba__next-internal_server_app_git_changes_page_actions_b65abe22.js.map +1 -0
- package/.next/server/chunks/ssr/6c7f9_projects_viba__next-internal_server_app_git_stashes_page_actions_5ca1e320.js +3 -0
- package/.next/server/chunks/ssr/6c7f9_projects_viba__next-internal_server_app_git_stashes_page_actions_5ca1e320.js.map +1 -0
- package/.next/server/chunks/ssr/6c7f9_projects_viba_src_app_session_[sessionId]_SessionPageClient_tsx_9a60a43f._.js +3 -0
- package/.next/server/chunks/ssr/6c7f9_projects_viba_src_app_session_[sessionId]_SessionPageClient_tsx_9a60a43f._.js.map +1 -0
- package/.next/server/chunks/ssr/Downloads_projects_viba_023b240f._.js +3 -0
- package/.next/server/chunks/ssr/Downloads_projects_viba_023b240f._.js.map +1 -0
- package/.next/server/chunks/ssr/Downloads_projects_viba_2e71073c._.js +3 -0
- package/.next/server/chunks/ssr/Downloads_projects_viba_2e71073c._.js.map +1 -0
- package/.next/server/chunks/ssr/Downloads_projects_viba_36a9a2a6._.js +4 -0
- package/.next/server/chunks/ssr/Downloads_projects_viba_36a9a2a6._.js.map +1 -0
- package/.next/server/chunks/ssr/Downloads_projects_viba_441ff8fc._.js +3 -0
- package/.next/server/chunks/ssr/Downloads_projects_viba_441ff8fc._.js.map +1 -0
- package/.next/server/chunks/ssr/Downloads_projects_viba_4575bb25._.js +4 -0
- package/.next/server/chunks/ssr/Downloads_projects_viba_4575bb25._.js.map +1 -0
- package/.next/server/chunks/ssr/Downloads_projects_viba_491c66b5._.js +3 -0
- package/.next/server/chunks/ssr/Downloads_projects_viba_491c66b5._.js.map +1 -0
- package/.next/server/chunks/ssr/Downloads_projects_viba_5b83b11b._.js +4 -0
- package/.next/server/chunks/ssr/Downloads_projects_viba_5b83b11b._.js.map +1 -0
- package/.next/server/chunks/ssr/Downloads_projects_viba_5f81da3d._.js +4 -0
- package/.next/server/chunks/ssr/Downloads_projects_viba_5f81da3d._.js.map +1 -0
- package/.next/server/chunks/ssr/Downloads_projects_viba_737eaea2._.js +3 -0
- package/.next/server/chunks/ssr/Downloads_projects_viba_737eaea2._.js.map +1 -0
- package/.next/server/chunks/ssr/Downloads_projects_viba_8321a620._.js +3 -0
- package/.next/server/chunks/ssr/Downloads_projects_viba_8321a620._.js.map +1 -0
- package/.next/server/chunks/ssr/Downloads_projects_viba_86e2b7ee._.js +4 -0
- package/.next/server/chunks/ssr/Downloads_projects_viba_86e2b7ee._.js.map +1 -0
- package/.next/server/chunks/ssr/Downloads_projects_viba_886b5c21._.js +4 -0
- package/.next/server/chunks/ssr/Downloads_projects_viba_886b5c21._.js.map +1 -0
- package/.next/server/chunks/ssr/Downloads_projects_viba_91e6563b._.js +3 -0
- package/.next/server/chunks/ssr/Downloads_projects_viba_91e6563b._.js.map +1 -0
- package/.next/server/chunks/ssr/Downloads_projects_viba_a4a069bf._.js +4 -0
- package/.next/server/chunks/ssr/Downloads_projects_viba_a4a069bf._.js.map +1 -0
- package/.next/server/chunks/ssr/Downloads_projects_viba_a7330c23._.js +3 -0
- package/.next/server/chunks/ssr/Downloads_projects_viba_a7330c23._.js.map +1 -0
- package/.next/server/chunks/ssr/Downloads_projects_viba_a947365f._.js +3 -0
- package/.next/server/chunks/ssr/Downloads_projects_viba_a947365f._.js.map +1 -0
- package/.next/server/chunks/ssr/Downloads_projects_viba_bbe91f86._.js +4 -0
- package/.next/server/chunks/ssr/Downloads_projects_viba_bbe91f86._.js.map +1 -0
- package/.next/server/chunks/ssr/Downloads_projects_viba_d76b8119._.js +3 -0
- package/.next/server/chunks/ssr/Downloads_projects_viba_d76b8119._.js.map +1 -0
- package/.next/server/chunks/ssr/Downloads_projects_viba_e0cfd1bd._.js +3 -0
- package/.next/server/chunks/ssr/Downloads_projects_viba_e0cfd1bd._.js.map +1 -0
- package/.next/server/chunks/ssr/Downloads_projects_viba_e12bbfe7._.js +3 -0
- package/.next/server/chunks/ssr/Downloads_projects_viba_e12bbfe7._.js.map +1 -0
- package/.next/server/chunks/ssr/Downloads_projects_viba_f5bcd322._.js +4 -0
- package/.next/server/chunks/ssr/Downloads_projects_viba_f5bcd322._.js.map +1 -0
- package/.next/server/chunks/ssr/Downloads_projects_viba_src_60d6e4a8._.js +3 -0
- package/.next/server/chunks/ssr/Downloads_projects_viba_src_60d6e4a8._.js.map +1 -0
- package/.next/server/chunks/ssr/Downloads_projects_viba_src_7080dcd5._.js +3 -0
- package/.next/server/chunks/ssr/Downloads_projects_viba_src_7080dcd5._.js.map +1 -0
- package/.next/server/chunks/ssr/Downloads_projects_viba_src_902b4f97._.js +3 -0
- package/.next/server/chunks/ssr/Downloads_projects_viba_src_902b4f97._.js.map +1 -0
- package/.next/server/chunks/ssr/Downloads_projects_viba_src_app_credentials_page_tsx_feca31b0._.js +3 -0
- package/.next/server/chunks/ssr/Downloads_projects_viba_src_app_credentials_page_tsx_feca31b0._.js.map +1 -0
- package/.next/server/chunks/ssr/Downloads_projects_viba_src_app_f00671d8._.js +3 -0
- package/.next/server/chunks/ssr/Downloads_projects_viba_src_app_f00671d8._.js.map +1 -0
- package/.next/server/chunks/ssr/Downloads_projects_viba_src_app_git_changes_page_tsx_2ddb49ff._.js +5 -0
- package/.next/server/chunks/ssr/Downloads_projects_viba_src_app_git_changes_page_tsx_2ddb49ff._.js.map +1 -0
- package/.next/server/chunks/ssr/Downloads_projects_viba_src_app_providers_tsx_1935a601._.js +3 -0
- package/.next/server/chunks/ssr/Downloads_projects_viba_src_app_providers_tsx_1935a601._.js.map +1 -0
- package/.next/server/chunks/ssr/Downloads_projects_viba_src_components_GitRepoSelector_tsx_12f84b24._.js +11 -0
- package/.next/server/chunks/ssr/Downloads_projects_viba_src_components_GitRepoSelector_tsx_12f84b24._.js.map +1 -0
- package/.next/server/chunks/ssr/Downloads_projects_viba_src_components_git_719ec297._.js +3 -0
- package/.next/server/chunks/ssr/Downloads_projects_viba_src_components_git_719ec297._.js.map +1 -0
- package/.next/server/chunks/ssr/Downloads_projects_viba_src_components_git_grouped-diff-viewer_tsx_c6c96363._.js +20 -0
- package/.next/server/chunks/ssr/Downloads_projects_viba_src_components_git_grouped-diff-viewer_tsx_c6c96363._.js.map +1 -0
- package/.next/server/chunks/ssr/Downloads_projects_viba_src_components_git_history-view_tsx_da929479._.js +10 -0
- package/.next/server/chunks/ssr/Downloads_projects_viba_src_components_git_history-view_tsx_da929479._.js.map +1 -0
- package/.next/server/chunks/ssr/[externals]_keytar_be364400._.js +3 -0
- package/.next/server/chunks/ssr/[externals]_keytar_be364400._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__042e77f3._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__042e77f3._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0da720c2._.js +4 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0da720c2._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__11f96c04._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__11f96c04._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__14783fb7._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__14783fb7._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__15e62f6d._.js +4 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__15e62f6d._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__32a09bd5._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__32a09bd5._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__34682e2a._.js +4 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__34682e2a._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__3e589204._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__3e589204._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__477bb0b6._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__477bb0b6._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__4a454aa7._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__4a454aa7._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__539b91c4._.js +4 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__539b91c4._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__5e9108d1._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__5e9108d1._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__70d9971b._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__70d9971b._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__7982c07d._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__7982c07d._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__86283715._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__86283715._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__890874d7._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__890874d7._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__99444007._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__99444007._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__9f9c4c2a._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__9f9c4c2a._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__a4cce383._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__a4cce383._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__a7d02cf0._.js +4 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__a7d02cf0._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__a895bef0._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__a895bef0._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__bbbc1dcd._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__bbbc1dcd._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__c6036d32._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__c6036d32._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__d2fd5c45._.js +56 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__d2fd5c45._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__e980891e._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__e980891e._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__ebae5f25._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__ebae5f25._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__f4a7b848._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__f4a7b848._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__f96af125._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__f96af125._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__fbf4e5d6._.js +4 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__fbf4e5d6._.js.map +1 -0
- package/.next/server/chunks/ssr/[turbopack]_runtime.js +795 -0
- package/.next/server/chunks/ssr/[turbopack]_runtime.js.map +10 -0
- package/.next/server/chunks/ssr/bea2c_viba__next-internal_server_app_git_custom-scripts_page_actions_a5c460bd.js +3 -0
- package/.next/server/chunks/ssr/bea2c_viba__next-internal_server_app_git_custom-scripts_page_actions_a5c460bd.js.map +1 -0
- package/.next/server/functions-config-manifest.json +12 -0
- package/.next/server/interception-route-rewrite-manifest.js +1 -0
- package/.next/server/middleware-build-manifest.js +22 -0
- package/.next/server/middleware-manifest.json +6 -0
- package/.next/server/next-font-manifest.js +1 -0
- package/.next/server/next-font-manifest.json +47 -0
- package/.next/server/pages/404.html +54 -0
- package/.next/server/pages/500.html +2 -0
- package/.next/server/pages-manifest.json +4 -0
- package/.next/server/server-reference-manifest.js +1 -0
- package/.next/server/server-reference-manifest.json +999 -0
- package/.next/static/4Ptt2Q-nwEMnEyBKuchtV/_buildManifest.js +15 -0
- package/.next/static/4Ptt2Q-nwEMnEyBKuchtV/_clientMiddlewareManifest.json +1 -0
- package/.next/static/4Ptt2Q-nwEMnEyBKuchtV/_ssgManifest.js +1 -0
- package/.next/static/chunks/065655f25ed22132.css +1 -0
- package/.next/static/chunks/16162035a1262102.js +3 -0
- package/.next/static/chunks/1b4e8e45df39fdf3.js +1 -0
- package/.next/static/chunks/1d78f85c04265bde.js +9 -0
- package/.next/static/chunks/2473c16c0c2f6b5f.css +2 -0
- package/.next/static/chunks/2dc27b124db2f6a9.js +4 -0
- package/.next/static/chunks/3e473d64e3c1431e.js +1 -0
- package/.next/static/chunks/420b7135218137d0.js +1 -0
- package/.next/static/chunks/4e0c5fc850347be6.js +3 -0
- package/.next/static/chunks/569b2039db4d4590.js +1 -0
- package/.next/static/chunks/6bccf66f04746085.js +1 -0
- package/.next/static/chunks/6e4ef91f4fe56ee8.js +1 -0
- package/.next/static/chunks/76695fea59118edb.js +8 -0
- package/.next/static/chunks/7c3e3b5c3bc4f99f.js +3 -0
- package/.next/static/chunks/91220a448294b75d.js +18 -0
- package/.next/static/chunks/9177eac6e25015f8.js +1 -0
- package/.next/static/chunks/9ba08e490fcd45b8.js +1 -0
- package/.next/static/chunks/a3f8b5278efb004c.js +1 -0
- package/.next/static/chunks/a6dad97d9634a72d.js +1 -0
- package/.next/static/chunks/a6dad97d9634a72d.js.map +1 -0
- package/.next/static/chunks/b9562dbba593a710.js +1 -0
- package/.next/static/chunks/be3f519ecde0dfd6.js +2 -0
- package/.next/static/chunks/bfd59950e8067110.js +1 -0
- package/.next/static/chunks/c1a983df0a5e5f3a.css +1 -0
- package/.next/static/chunks/d8fd59ffef2546e2.js +1 -0
- package/.next/static/chunks/e2058ce506df05d9.js +1 -0
- package/.next/static/chunks/e57609679806b605.js +3 -0
- package/.next/static/chunks/eacff8cb21733ad6.js +3 -0
- package/.next/static/chunks/f85b7c5a018ca0e1.js +1 -0
- package/.next/static/chunks/turbopack-ec0a0bd80d5d46df.js +4 -0
- package/.next/static/media/4fa387ec64143e14-s.c1fdd6c2.woff2 +0 -0
- package/.next/static/media/7178b3e590c64307-s.b97b3418.woff2 +0 -0
- package/.next/static/media/797e433ab948586e-s.p.dbea232f.woff2 +0 -0
- package/.next/static/media/8a480f0b521d4e75-s.8e0177b5.woff2 +0 -0
- package/.next/static/media/bbc41e54d2fcbd21-s.799d8ef8.woff2 +0 -0
- package/.next/static/media/caa3a2e1cccd8315-s.p.853070df.woff2 +0 -0
- package/.next/static/media/icon.9a6971e1.png +0 -0
- package/README.md +92 -0
- package/bin/viba.mjs +489 -0
- package/next.config.mjs +25 -0
- package/package.json +72 -0
- package/public/file.svg +1 -0
- package/public/github.png +0 -0
- package/public/globe.svg +1 -0
- package/public/next.svg +1 -0
- package/public/palx-icon.png +0 -0
- package/public/vercel.svg +1 -0
- package/public/window.svg +1 -0
- package/src/lib/cli-args.mjs +41 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
module.exports=[93695,(a,b,c)=>{b.exports=a.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},33715,a=>{a.n(a.i(51123))},89806,a=>{a.n(a.i(13314))},16842,a=>{a.n(a.i(3644))},58228,a=>{a.n(a.i(419))},81190,a=>{a.n(a.i(53918))},31573,a=>{a.n(a.i(39515))},46356,a=>{a.n(a.i(79222))},9702,a=>{"use strict";a.s(["default",()=>b]);let b=(0,a.i(5672).registerClientReference)(function(){throw Error("Attempted to call the default export of [project]/Downloads/projects/viba/src/app/page.tsx <module evaluation> from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/Downloads/projects/viba/src/app/page.tsx <module evaluation>","default")},66728,a=>{"use strict";a.s(["default",()=>b]);let b=(0,a.i(5672).registerClientReference)(function(){throw Error("Attempted to call the default export of [project]/Downloads/projects/viba/src/app/page.tsx from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/Downloads/projects/viba/src/app/page.tsx","default")},73329,a=>{"use strict";a.i(9702);var b=a.i(66728);a.n(b)}];
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=%5Broot-of-the-server%5D__042e77f3._.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../../Downloads/projects/viba/src/app/page.tsx/__nextjs-internal-proxy.mjs"],"sourcesContent":["// This file is generated by next-core EcmascriptClientReferenceModule.\nimport { registerClientReference } from \"react-server-dom-turbopack/server\";\nexport default registerClientReference(\n function() { throw new Error(\"Attempted to call the default export of [project]/Downloads/projects/viba/src/app/page.tsx from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.\"); },\n \"[project]/Downloads/projects/viba/src/app/page.tsx\",\n \"default\",\n);\n"],"names":[],"mappings":"oZAEe,CAAA,EAAA,AADf,EAAA,CAAA,CAAA,MACe,uBAAA,AAAuB,EAClC,WAAa,MAAM,AAAI,MAAM,0SAA4S,EACzU,yEACA,gEAHW,CAAA,EADf,AACe,EADf,CAAA,CAAA,MACe,uBAAA,AAAuB,EAClC,WAAa,MAAM,AAAI,MAAM,sRAAwR,EACrT,qDACA","ignoreList":[0]}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
module.exports=[24868,(a,b,c)=>{b.exports=a.x("fs/promises",()=>require("fs/promises"))},81023,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"registerServerReference",{enumerable:!0,get:function(){return d.registerServerReference}});let d=a.r(5672)},25059,(a,b,c)=>{"use strict";function d(a){for(let b=0;b<a.length;b++){let c=a[b];if("function"!=typeof c)throw Object.defineProperty(Error(`A "use server" file can only export async functions, found ${typeof c}.
|
|
2
|
+
Read more: https://nextjs.org/docs/messages/invalid-use-server-value`),"__NEXT_ERROR_CODE",{value:"E352",enumerable:!1,configurable:!0})}}Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"ensureServerEntryExports",{enumerable:!0,get:function(){return d}})},21185,a=>{"use strict";var b=a.i(24868),c=a.i(46786),d=a.i(14747);let e="viba-agent-api-credentials",f=["codex"],g=null,h=null,i=!1;function j(a){return f.includes(a)}function k(){return h?`Secure credential storage is unavailable: ${h}`:"Secure credential storage is unavailable in this runtime."}async function l(){return g||(g=a.A(51969).then(a=>a.default??a).catch(a=>(h=a instanceof Error?a.message:String(a),i||(i=!0,console.warn(`[agent-api-credentials] ${k()}`)),null))),g}async function m(){let a=await l();if(!a)throw Error(k());return a}function n(a){return`agent-api-${a}`}function o(a){return a.keytarAccount||n(a.agent)}function p(a){return{agent:a.agent,apiProxy:a.apiProxy,createdAt:a.createdAt,updatedAt:a.updatedAt}}function q(a){return!!a&&"object"==typeof a&&"string"==typeof a.agent&&!!j(a.agent)&&"string"==typeof a.createdAt&&"string"==typeof a.updatedAt&&(void 0===a.apiProxy||"string"==typeof a.apiProxy)&&(void 0===a.keytarAccount||"string"==typeof a.keytarAccount)}async function r(){let a=d.default.join(c.default.homedir(),".viba");return await b.default.mkdir(a,{recursive:!0}),d.default.join(a,"agent-api-configs.json")}async function s(a){let c=await r();await b.default.writeFile(c,JSON.stringify(a,null,2),"utf-8")}async function t(){let a=await r();try{let c=await b.default.readFile(a,"utf-8"),d=JSON.parse(c);if(Array.isArray(d))return d.filter(q);if(!d||"object"!=typeof d)return[];let e=Object.entries(d).filter(([a])=>j(a)).map(([a,b])=>b&&"object"==typeof b?void 0===b.agent?{...b,agent:a}:b:null).filter(q);return e.length>0&&await s(e),e}catch(a){if(a?.code==="ENOENT")return[];return console.error("Failed to parse agent API credential metadata:",a),[]}}async function u(){return(await t()).map(p).sort((a,b)=>b.updatedAt.localeCompare(a.updatedAt))}async function v(a,b,c){let d,f;if(!j(a))return{success:!1,error:`Unsupported agent: ${a}`};let g=b.trim();if(!g)return{success:!1,error:"API key is required."};try{d=function(a){let b=a.trim();if(b){try{new URL(b)}catch{throw Error("API proxy must be a valid URL.")}return b}}(c)}catch(a){return{success:!1,error:a.message}}try{f=await m()}catch(a){return{success:!1,error:a.message}}let h=await t(),i=new Date().toISOString(),k=h.findIndex(b=>b.agent===a),l=k>=0?o(h[k]):n(a);if(await f.setPassword(e,l,g),k>=0){let a=h[k];h[k]={...a,apiProxy:d,updatedAt:i,keytarAccount:l}}else h.push({agent:a,apiProxy:d,createdAt:i,updatedAt:i,keytarAccount:l});await s(h);let q=h.find(b=>b.agent===a);return q?{success:!0,credential:p(q)}:{success:!1,error:"Failed to persist agent API credential."}}async function w(a){if(!j(a))return{success:!1,error:`Unsupported agent: ${a}`};let b=await t(),c=b.findIndex(b=>b.agent===a);if(-1===c)return{success:!1,error:"Agent API credential not found."};let[d]=b.splice(c,1);await s(b);let f=await l();return f&&await f.deletePassword(e,o(d)),{success:!0}}async function x(a){if(!j(a))return null;let b=(await t()).find(b=>b.agent===a);if(!b)return null;let c=await l();if(!c)return null;let d=await c.getPassword(e,o(b));return d?{agent:b.agent,apiKey:d,apiProxy:b.apiProxy}:null}a.s(["createOrUpdateAgentApiCredential",()=>v,"deleteAgentApiCredential",()=>w,"getAgentApiCredentialSecret",()=>x,"getAllAgentApiCredentials",()=>u])},33897,a=>{"use strict";var b=a.i(24868),c=a.i(46786),d=a.i(14747);let e="viba-git-credentials",f=null,g=null,h=!1;function i(){return g?`Secure credential storage is unavailable: ${g}`:"Secure credential storage is unavailable in this runtime."}async function j(){return f||(f=a.A(51969).then(a=>a.default??a).catch(a=>(g=a instanceof Error?a.message:String(a),h||(h=!0,console.warn(`[credentials] ${i()}`)),null))),f}async function k(){let a=await j();if(!a)throw Error(i());return a}function l(){return`${Date.now()}-${Math.random().toString(36).slice(2,9)}`}function m(a){return a.trim().replace(/\/$/,"")}function n(a){return`credential-${a}`}function o(a){return`credential-${a}`}function p(a){return a.keytarAccount||n(a.id)}function q(a){return"gitlab"===a.type?{id:a.id,type:"gitlab",username:a.username,serverUrl:a.serverUrl||"https://gitlab.com",createdAt:a.createdAt,updatedAt:a.updatedAt}:{id:a.id,type:"github",username:a.username,createdAt:a.createdAt,updatedAt:a.updatedAt}}async function r(){let a=d.default.join(c.default.homedir(),".viba");return await b.default.mkdir(a,{recursive:!0}),d.default.join(a,"credentials.json")}function s(a,b){return!!a&&"object"==typeof a&&a.type===b&&"string"==typeof a.username&&"string"==typeof a.createdAt&&"string"==typeof a.updatedAt&&("gitlab"!==b||"string"==typeof a.serverUrl)}function t(a){return!!a&&"object"==typeof a&&"string"==typeof a.id&&!!a.id.trim()&&("github"===a.type||"gitlab"===a.type)&&"string"==typeof a.username&&"string"==typeof a.createdAt&&"string"==typeof a.updatedAt&&(void 0===a.keytarAccount||"string"==typeof a.keytarAccount)&&("gitlab"!==a.type||"string"==typeof a.serverUrl)}async function u(a){let c=await r();await b.default.writeFile(c,JSON.stringify(a,null,2),"utf-8")}async function v(){let a=await r();try{let c=await b.default.readFile(a,"utf-8"),d=JSON.parse(c);if(Array.isArray(d))return d.filter(t);if(!d||"object"!=typeof d)return[];let e=[];if(s(d.github,"github")){let a=d.github;e.push({id:l(),type:"github",username:a.username,createdAt:a.createdAt,updatedAt:a.updatedAt,keytarAccount:o("github")})}if(s(d.gitlab,"gitlab")){let a=d.gitlab;e.push({id:l(),type:"gitlab",username:a.username,serverUrl:a.serverUrl,createdAt:a.createdAt,updatedAt:a.updatedAt,keytarAccount:o("gitlab")})}return e.length>0&&await u(e),e}catch(a){if(a?.code==="ENOENT")return[];return console.error("Failed to parse credentials metadata:",a),[]}}async function w(){return(await v()).map(q).sort((a,b)=>b.updatedAt.localeCompare(a.updatedAt))}async function x(a){let b=(await v()).find(b=>b.id===a);return b?q(b):null}async function y(a){let b=(await v()).find(b=>b.id===a);if(!b)return null;let c=await j();return c?c.getPassword(e,p(b)):null}async function z(a){try{let b=await fetch("https://api.github.com/user",{headers:{Authorization:`Bearer ${a}`,Accept:"application/vnd.github+json","X-GitHub-Api-Version":"2022-11-28"}});if(!b.ok){if(401===b.status)return{valid:!1,error:"Invalid or expired GitHub token."};return{valid:!1,error:`GitHub API returned ${b.status}.`}}let c=await b.json(),d="string"==typeof c?.login?c.login:null;if(!d)return{valid:!1,error:"GitHub API response did not include a username."};return{valid:!0,username:d}}catch(a){return{valid:!1,error:`Failed to verify GitHub token: ${a.message}`}}}async function A(a,b){try{let c=m(a),d=await fetch(`${c}/api/v4/user`,{headers:{"PRIVATE-TOKEN":b}});if(!d.ok){if(401===d.status)return{valid:!1,error:"Invalid or expired GitLab token."};return{valid:!1,error:`GitLab API returned ${d.status}.`}}let e=await d.json(),f="string"==typeof e?.username?e.username:null;if(!f)return{valid:!1,error:"GitLab API response did not include a username."};return{valid:!0,username:f}}catch(a){return{valid:!1,error:`Failed to verify GitLab token: ${a.message}`}}}async function B(a){let b,c=a.trim();if(!c)return{success:!1,error:"GitHub token is required."};try{b=await k()}catch(a){return{success:!1,error:a.message}}let d=await z(c);if(!d.valid||!d.username)return{success:!1,error:d.error||"Failed to verify GitHub token."};let f=await v();if(f.find(a=>"github"===a.type&&a.username===d.username))return{success:!1,error:`A GitHub credential for ${d.username} already exists.`};let g=l(),h=new Date().toISOString(),i=n(g);await b.setPassword(e,i,c);let j={id:g,type:"github",username:d.username,createdAt:h,updatedAt:h,keytarAccount:i};return f.push(j),await u(f),{success:!0,credential:{id:j.id,type:"github",username:j.username,createdAt:j.createdAt,updatedAt:j.updatedAt}}}async function C(a,b){let c,d=m(a),f=b.trim();if(!d)return{success:!1,error:"GitLab server URL is required."};try{new URL(d)}catch{return{success:!1,error:"GitLab server URL must be a valid URL."}}if(!f)return{success:!1,error:"GitLab token is required."};try{c=await k()}catch(a){return{success:!1,error:a.message}}let g=await A(d,f);if(!g.valid||!g.username)return{success:!1,error:g.error||"Failed to verify GitLab token."};let h=await v();if(h.find(a=>"gitlab"===a.type&&a.username===g.username&&a.serverUrl===d))return{success:!1,error:`A GitLab credential for ${g.username} on ${d} already exists.`};let i=l(),j=new Date().toISOString(),o=n(i);await c.setPassword(e,o,f);let p={id:i,type:"gitlab",username:g.username,serverUrl:d,createdAt:j,updatedAt:j,keytarAccount:o};return h.push(p),await u(h),{success:!0,credential:{id:p.id,type:"gitlab",username:p.username,serverUrl:p.serverUrl||d,createdAt:p.createdAt,updatedAt:p.updatedAt}}}async function D(a){let b=await v(),c=b.findIndex(b=>b.id===a);if(-1===c)return{success:!1,error:"Credential not found."};let d=b[c];b.splice(c,1),await u(b);let f=await j();return f&&await f.deletePassword(e,p(d)),{success:!0}}a.s(["createGitHubCredential",()=>B,"createGitLabCredential",()=>C,"deleteCredential",()=>D,"getAllCredentials",()=>w,"getCredentialById",()=>x,"getCredentialToken",()=>y])},57477,a=>{"use strict";var b=a.i(81023),c=a.i(33897),d=a.i(21185);async function e(){try{let a=await (0,c.getAllCredentials)();return{success:!0,credentials:a}}catch(a){return console.error("Failed to list credentials:",a),{success:!1,error:"Failed to load credentials."}}}async function f(a){let b=await (0,c.createGitHubCredential)(a);return b.success&&b.credential?{success:!0,credential:b.credential}:{success:!1,error:b.error||"Failed to save GitHub credential."}}async function g(a,b){let d=await (0,c.createGitLabCredential)(a,b);return d.success&&d.credential?{success:!0,credential:d.credential}:{success:!1,error:d.error||"Failed to save GitLab credential."}}async function h(){try{let a=await (0,d.getAllAgentApiCredentials)();return{success:!0,credentials:a}}catch(a){return console.error("Failed to list agent API credentials:",a),{success:!1,error:"Failed to load agent API credentials."}}}async function i(a,b,c){let e=await (0,d.createOrUpdateAgentApiCredential)(a,b,c);return e.success&&e.credential?{success:!0,credential:e.credential}:{success:!1,error:e.error||"Failed to save agent API credential."}}async function j(a){try{let b=await (0,c.deleteCredential)(a);if(!b.success)return{success:!1,error:b.error||"Failed to remove credential."};return{success:!0}}catch(a){return console.error("Failed to remove credential:",a),{success:!1,error:"Failed to remove credential."}}}async function k(a){try{let b=await (0,d.deleteAgentApiCredential)(a);if(!b.success)return{success:!1,error:b.error||"Failed to remove agent API credential."};return{success:!0}}catch(a){return console.error("Failed to remove agent API credential:",a),{success:!1,error:"Failed to remove agent API credential."}}}(0,a.i(25059).ensureServerEntryExports)([e,f,g,h,i,j,k]),(0,b.registerServerReference)(e,"009482e578e852b940ca87671a117903e32af652da",null),(0,b.registerServerReference)(f,"40b485480e8f63bf69c7d3ccb52778a60d39349dbd",null),(0,b.registerServerReference)(g,"605f61938bf5e427ed5388e455820dd042e2f3d2c0",null),(0,b.registerServerReference)(h,"00c47cd2b1004ae5c2efb45897381eb2a9b3552589",null),(0,b.registerServerReference)(i,"70b7afe2c0a2f6d6eddab7bca16522ddb38d4abf40",null),(0,b.registerServerReference)(j,"4082e4c269bb79962d6ea42dc5084f64dc7dbdabb8",null),(0,b.registerServerReference)(k,"407c96ca4ba5bd24be8887252f61c0e2364c606365",null),a.s(["listAgentApiCredentials",()=>h,"listCredentials",()=>e,"removeAgentApiCredential",()=>k,"removeCredential",()=>j,"saveAgentApiCredential",()=>i,"saveGitHubCredential",()=>f,"saveGitLabCredential",()=>g])}];
|
|
3
|
+
|
|
4
|
+
//# sourceMappingURL=%5Broot-of-the-server%5D__0da720c2._.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../../Downloads/projects/viba/node_modules/next/src/build/webpack/loaders/next-flight-loader/server-reference.ts","../../../../../../../Downloads/projects/viba/node_modules/next/src/build/webpack/loaders/next-flight-loader/action-validate.ts","../../../../../../../Downloads/projects/viba/src/lib/agent-api-credentials.ts","../../../../../../../Downloads/projects/viba/src/lib/credentials.ts","../../../../../../../Downloads/projects/viba/src/app/actions/credentials.ts"],"sourcesContent":["/* eslint-disable import/no-extraneous-dependencies */\nexport { registerServerReference } from 'react-server-dom-webpack/server'\n","// This function ensures that all the exported values are valid server actions,\n// during the runtime. By definition all actions are required to be async\n// functions, but here we can only check that they are functions.\nexport function ensureServerEntryExports(actions: any[]) {\n for (let i = 0; i < actions.length; i++) {\n const action = actions[i]\n if (typeof action !== 'function') {\n throw new Error(\n `A \"use server\" file can only export async functions, found ${typeof action}.\\nRead more: https://nextjs.org/docs/messages/invalid-use-server-value`\n )\n }\n }\n}\n","import fs from 'fs/promises';\nimport os from 'os';\nimport path from 'path';\n\nconst SERVICE_NAME = 'viba-agent-api-credentials';\nconst CONFIGS_FILE_NAME = 'agent-api-configs.json';\nconst SUPPORTED_AGENT_APIS = ['codex'] as const;\n\nexport type AgentApiCredentialAgent = typeof SUPPORTED_AGENT_APIS[number];\n\nexport interface AgentApiCredential {\n agent: AgentApiCredentialAgent;\n apiProxy?: string;\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface AgentApiCredentialSecret {\n agent: AgentApiCredentialAgent;\n apiKey: string;\n apiProxy?: string;\n}\n\ntype AgentApiCredentialMetadata = {\n agent: AgentApiCredentialAgent;\n apiProxy?: string;\n createdAt: string;\n updatedAt: string;\n keytarAccount?: string;\n};\n\ntype KeytarModule = {\n getPassword(service: string, account: string): Promise<string | null>;\n setPassword(service: string, account: string, password: string): Promise<void>;\n deletePassword(service: string, account: string): Promise<boolean>;\n};\n\nlet keytarPromise: Promise<KeytarModule | null> | null = null;\nlet keytarUnavailableReason: string | null = null;\nlet didLogKeytarWarning = false;\n\nfunction isSupportedAgentApi(value: string): value is AgentApiCredentialAgent {\n return SUPPORTED_AGENT_APIS.includes(value as AgentApiCredentialAgent);\n}\n\nfunction keytarUnavailableMessage(): string {\n if (keytarUnavailableReason) {\n return `Secure credential storage is unavailable: ${keytarUnavailableReason}`;\n }\n return 'Secure credential storage is unavailable in this runtime.';\n}\n\nasync function loadKeytar(): Promise<KeytarModule | null> {\n if (!keytarPromise) {\n keytarPromise = import('keytar')\n .then((module) => (module.default ?? module) as KeytarModule)\n .catch((error: unknown) => {\n keytarUnavailableReason = error instanceof Error ? error.message : String(error);\n if (!didLogKeytarWarning) {\n didLogKeytarWarning = true;\n console.warn(`[agent-api-credentials] ${keytarUnavailableMessage()}`);\n }\n return null;\n });\n }\n\n return keytarPromise;\n}\n\nasync function requireKeytar(): Promise<KeytarModule> {\n const keytar = await loadKeytar();\n if (!keytar) {\n throw new Error(keytarUnavailableMessage());\n }\n return keytar;\n}\n\nfunction getDefaultKeytarAccount(agent: AgentApiCredentialAgent): string {\n return `agent-api-${agent}`;\n}\n\nfunction getKeytarAccountForMetadata(metadata: AgentApiCredentialMetadata): string {\n return metadata.keytarAccount || getDefaultKeytarAccount(metadata.agent);\n}\n\nfunction normalizeApiProxy(apiProxy: string): string | undefined {\n const trimmed = apiProxy.trim();\n if (!trimmed) return undefined;\n\n try {\n // Validate and persist as-entered once it is a valid URL.\n new URL(trimmed);\n } catch {\n throw new Error('API proxy must be a valid URL.');\n }\n\n return trimmed;\n}\n\nfunction toAgentApiCredential(metadata: AgentApiCredentialMetadata): AgentApiCredential {\n return {\n agent: metadata.agent,\n apiProxy: metadata.apiProxy,\n createdAt: metadata.createdAt,\n updatedAt: metadata.updatedAt,\n };\n}\n\nfunction isAgentApiCredentialMetadata(value: unknown): value is AgentApiCredentialMetadata {\n if (!value || typeof value !== 'object') return false;\n\n const candidate = value as Record<string, unknown>;\n if (typeof candidate.agent !== 'string' || !isSupportedAgentApi(candidate.agent)) return false;\n if (typeof candidate.createdAt !== 'string') return false;\n if (typeof candidate.updatedAt !== 'string') return false;\n if (candidate.apiProxy !== undefined && typeof candidate.apiProxy !== 'string') return false;\n if (candidate.keytarAccount !== undefined && typeof candidate.keytarAccount !== 'string') return false;\n\n return true;\n}\n\nasync function getConfigsFilePath(): Promise<string> {\n const vibaDir = path.join(os.homedir(), '.viba');\n await fs.mkdir(vibaDir, { recursive: true });\n return path.join(vibaDir, CONFIGS_FILE_NAME);\n}\n\nasync function writeAgentApiCredentialMetadata(metadata: AgentApiCredentialMetadata[]): Promise<void> {\n const configsFilePath = await getConfigsFilePath();\n await fs.writeFile(configsFilePath, JSON.stringify(metadata, null, 2), 'utf-8');\n}\n\nasync function readAgentApiCredentialMetadata(): Promise<AgentApiCredentialMetadata[]> {\n const configsFilePath = await getConfigsFilePath();\n\n try {\n const content = await fs.readFile(configsFilePath, 'utf-8');\n const parsed = JSON.parse(content) as unknown;\n\n if (Array.isArray(parsed)) {\n return parsed.filter(isAgentApiCredentialMetadata);\n }\n\n if (!parsed || typeof parsed !== 'object') {\n return [];\n }\n\n // Legacy map shape: { codex: { ... }, ... }\n const entries = Object.entries(parsed as Record<string, unknown>);\n const migrated = entries\n .filter(([agent]) => isSupportedAgentApi(agent))\n .map(([agent, value]) => {\n if (!value || typeof value !== 'object') return null;\n const candidate = value as Record<string, unknown>;\n if (candidate.agent === undefined) {\n return {\n ...candidate,\n agent,\n } as unknown;\n }\n return candidate;\n })\n .filter(isAgentApiCredentialMetadata);\n\n if (migrated.length > 0) {\n await writeAgentApiCredentialMetadata(migrated);\n }\n\n return migrated;\n } catch (error) {\n if ((error as NodeJS.ErrnoException)?.code === 'ENOENT') {\n return [];\n }\n\n console.error('Failed to parse agent API credential metadata:', error);\n return [];\n }\n}\n\nexport async function getAllAgentApiCredentials(): Promise<AgentApiCredential[]> {\n const metadata = await readAgentApiCredentialMetadata();\n return metadata\n .map(toAgentApiCredential)\n .sort((a, b) => b.updatedAt.localeCompare(a.updatedAt));\n}\n\nexport async function createOrUpdateAgentApiCredential(\n agent: AgentApiCredentialAgent,\n apiKey: string,\n apiProxy: string,\n): Promise<{ success: boolean; credential?: AgentApiCredential; error?: string }> {\n if (!isSupportedAgentApi(agent)) {\n return { success: false, error: `Unsupported agent: ${agent}` };\n }\n\n const trimmedApiKey = apiKey.trim();\n if (!trimmedApiKey) {\n return { success: false, error: 'API key is required.' };\n }\n\n let normalizedApiProxy: string | undefined;\n try {\n normalizedApiProxy = normalizeApiProxy(apiProxy);\n } catch (error) {\n return { success: false, error: (error as Error).message };\n }\n\n let keytar: KeytarModule;\n try {\n keytar = await requireKeytar();\n } catch (error) {\n return { success: false, error: (error as Error).message };\n }\n\n const metadata = await readAgentApiCredentialMetadata();\n const now = new Date().toISOString();\n const index = metadata.findIndex((credential) => credential.agent === agent);\n const keytarAccount = index >= 0\n ? getKeytarAccountForMetadata(metadata[index])\n : getDefaultKeytarAccount(agent);\n\n await keytar.setPassword(SERVICE_NAME, keytarAccount, trimmedApiKey);\n\n if (index >= 0) {\n const existing = metadata[index];\n metadata[index] = {\n ...existing,\n apiProxy: normalizedApiProxy,\n updatedAt: now,\n keytarAccount,\n };\n } else {\n metadata.push({\n agent,\n apiProxy: normalizedApiProxy,\n createdAt: now,\n updatedAt: now,\n keytarAccount,\n });\n }\n\n await writeAgentApiCredentialMetadata(metadata);\n\n const saved = metadata.find((credential) => credential.agent === agent);\n if (!saved) {\n return { success: false, error: 'Failed to persist agent API credential.' };\n }\n\n return { success: true, credential: toAgentApiCredential(saved) };\n}\n\nexport async function deleteAgentApiCredential(\n agent: AgentApiCredentialAgent,\n): Promise<{ success: boolean; error?: string }> {\n if (!isSupportedAgentApi(agent)) {\n return { success: false, error: `Unsupported agent: ${agent}` };\n }\n\n const metadata = await readAgentApiCredentialMetadata();\n const index = metadata.findIndex((credential) => credential.agent === agent);\n if (index === -1) {\n return { success: false, error: 'Agent API credential not found.' };\n }\n\n const [removed] = metadata.splice(index, 1);\n await writeAgentApiCredentialMetadata(metadata);\n\n const keytar = await loadKeytar();\n if (keytar) {\n await keytar.deletePassword(SERVICE_NAME, getKeytarAccountForMetadata(removed));\n }\n\n return { success: true };\n}\n\nexport async function getAgentApiCredentialSecret(\n agent: AgentApiCredentialAgent,\n): Promise<AgentApiCredentialSecret | null> {\n if (!isSupportedAgentApi(agent)) {\n return null;\n }\n\n const metadata = await readAgentApiCredentialMetadata();\n const found = metadata.find((credential) => credential.agent === agent);\n if (!found) {\n return null;\n }\n\n const keytar = await loadKeytar();\n if (!keytar) {\n return null;\n }\n\n const apiKey = await keytar.getPassword(SERVICE_NAME, getKeytarAccountForMetadata(found));\n if (!apiKey) {\n return null;\n }\n\n return {\n agent: found.agent,\n apiKey,\n apiProxy: found.apiProxy,\n };\n}\n","import fs from 'fs/promises';\nimport os from 'os';\nimport path from 'path';\n\nconst SERVICE_NAME = 'viba-git-credentials';\nconst CREDENTIALS_FILE_NAME = 'credentials.json';\n\nexport type CredentialType = 'github' | 'gitlab';\n\nexport interface BaseCredential {\n id: string;\n type: CredentialType;\n username: string;\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface GitHubCredential extends BaseCredential {\n type: 'github';\n}\n\nexport interface GitLabCredential extends BaseCredential {\n type: 'gitlab';\n serverUrl: string;\n}\n\nexport type Credential = GitHubCredential | GitLabCredential;\n\ntype CredentialMetadata = {\n id: string;\n type: CredentialType;\n username: string;\n serverUrl?: string;\n createdAt: string;\n updatedAt: string;\n keytarAccount?: string;\n};\n\ntype LegacyCredentialMetadata = {\n type: CredentialType;\n username: string;\n serverUrl?: string;\n createdAt: string;\n updatedAt: string;\n};\n\ntype KeytarModule = {\n getPassword(service: string, account: string): Promise<string | null>;\n setPassword(service: string, account: string, password: string): Promise<void>;\n deletePassword(service: string, account: string): Promise<boolean>;\n};\n\nlet keytarPromise: Promise<KeytarModule | null> | null = null;\nlet keytarUnavailableReason: string | null = null;\nlet didLogKeytarWarning = false;\n\nfunction keytarUnavailableMessage(): string {\n if (keytarUnavailableReason) {\n return `Secure credential storage is unavailable: ${keytarUnavailableReason}`;\n }\n return 'Secure credential storage is unavailable in this runtime.';\n}\n\nasync function loadKeytar(): Promise<KeytarModule | null> {\n if (!keytarPromise) {\n keytarPromise = import('keytar')\n .then((module) => (module.default ?? module) as KeytarModule)\n .catch((error: unknown) => {\n keytarUnavailableReason = error instanceof Error ? error.message : String(error);\n if (!didLogKeytarWarning) {\n didLogKeytarWarning = true;\n console.warn(`[credentials] ${keytarUnavailableMessage()}`);\n }\n return null;\n });\n }\n\n return keytarPromise;\n}\n\nasync function requireKeytar(): Promise<KeytarModule> {\n const keytar = await loadKeytar();\n if (!keytar) {\n throw new Error(keytarUnavailableMessage());\n }\n return keytar;\n}\n\nfunction generateId(): string {\n return `${Date.now()}-${Math.random().toString(36).slice(2, 9)}`;\n}\n\nfunction normalizeGitLabServerUrl(serverUrl: string): string {\n return serverUrl.trim().replace(/\\/$/, '');\n}\n\nfunction getDefaultKeytarAccount(id: string): string {\n return `credential-${id}`;\n}\n\nfunction getLegacyKeytarAccount(type: CredentialType): string {\n return `credential-${type}`;\n}\n\nfunction getKeytarAccountForMetadata(metadata: CredentialMetadata): string {\n return metadata.keytarAccount || getDefaultKeytarAccount(metadata.id);\n}\n\nfunction toCredential(metadata: CredentialMetadata): Credential {\n if (metadata.type === 'gitlab') {\n return {\n id: metadata.id,\n type: 'gitlab',\n username: metadata.username,\n serverUrl: metadata.serverUrl || 'https://gitlab.com',\n createdAt: metadata.createdAt,\n updatedAt: metadata.updatedAt,\n };\n }\n\n return {\n id: metadata.id,\n type: 'github',\n username: metadata.username,\n createdAt: metadata.createdAt,\n updatedAt: metadata.updatedAt,\n };\n}\n\nasync function getCredentialsFilePath(): Promise<string> {\n const vibaDir = path.join(os.homedir(), '.viba');\n await fs.mkdir(vibaDir, { recursive: true });\n return path.join(vibaDir, CREDENTIALS_FILE_NAME);\n}\n\nfunction isLegacyCredentialMetadata(value: unknown, expectedType: CredentialType): value is LegacyCredentialMetadata {\n if (!value || typeof value !== 'object') return false;\n\n const candidate = value as Record<string, unknown>;\n if (candidate.type !== expectedType) return false;\n if (typeof candidate.username !== 'string') return false;\n if (typeof candidate.createdAt !== 'string') return false;\n if (typeof candidate.updatedAt !== 'string') return false;\n\n if (expectedType === 'gitlab') {\n return typeof candidate.serverUrl === 'string';\n }\n\n return true;\n}\n\nfunction isCredentialMetadata(value: unknown): value is CredentialMetadata {\n if (!value || typeof value !== 'object') return false;\n\n const candidate = value as Record<string, unknown>;\n if (typeof candidate.id !== 'string' || !candidate.id.trim()) return false;\n if (candidate.type !== 'github' && candidate.type !== 'gitlab') return false;\n if (typeof candidate.username !== 'string') return false;\n if (typeof candidate.createdAt !== 'string') return false;\n if (typeof candidate.updatedAt !== 'string') return false;\n if (candidate.keytarAccount !== undefined && typeof candidate.keytarAccount !== 'string') return false;\n\n if (candidate.type === 'gitlab') {\n return typeof candidate.serverUrl === 'string';\n }\n\n return true;\n}\n\nasync function writeCredentialsMetadata(metadata: CredentialMetadata[]): Promise<void> {\n const credentialsFilePath = await getCredentialsFilePath();\n await fs.writeFile(credentialsFilePath, JSON.stringify(metadata, null, 2), 'utf-8');\n}\n\nasync function readCredentialsMetadata(): Promise<CredentialMetadata[]> {\n const credentialsFilePath = await getCredentialsFilePath();\n\n try {\n const content = await fs.readFile(credentialsFilePath, 'utf-8');\n const parsed = JSON.parse(content) as unknown;\n\n if (Array.isArray(parsed)) {\n return parsed.filter(isCredentialMetadata);\n }\n\n if (!parsed || typeof parsed !== 'object') {\n return [];\n }\n\n const legacyMapped = parsed as Record<string, unknown>;\n const migrated: CredentialMetadata[] = [];\n\n if (isLegacyCredentialMetadata(legacyMapped.github, 'github')) {\n const metadata = legacyMapped.github;\n migrated.push({\n id: generateId(),\n type: 'github',\n username: metadata.username,\n createdAt: metadata.createdAt,\n updatedAt: metadata.updatedAt,\n keytarAccount: getLegacyKeytarAccount('github'),\n });\n }\n\n if (isLegacyCredentialMetadata(legacyMapped.gitlab, 'gitlab')) {\n const metadata = legacyMapped.gitlab;\n migrated.push({\n id: generateId(),\n type: 'gitlab',\n username: metadata.username,\n serverUrl: metadata.serverUrl,\n createdAt: metadata.createdAt,\n updatedAt: metadata.updatedAt,\n keytarAccount: getLegacyKeytarAccount('gitlab'),\n });\n }\n\n if (migrated.length > 0) {\n await writeCredentialsMetadata(migrated);\n }\n\n return migrated;\n } catch (error) {\n if ((error as NodeJS.ErrnoException)?.code === 'ENOENT') {\n return [];\n }\n\n console.error('Failed to parse credentials metadata:', error);\n return [];\n }\n}\n\nexport async function getAllCredentials(): Promise<Credential[]> {\n const metadata = await readCredentialsMetadata();\n\n return metadata\n .map(toCredential)\n .sort((a, b) => b.updatedAt.localeCompare(a.updatedAt));\n}\n\nexport async function getCredentialById(id: string): Promise<Credential | null> {\n const metadata = await readCredentialsMetadata();\n const found = metadata.find((credential) => credential.id === id);\n return found ? toCredential(found) : null;\n}\n\nexport async function getCredentialToken(id: string): Promise<string | null> {\n const metadata = await readCredentialsMetadata();\n const found = metadata.find((credential) => credential.id === id);\n if (!found) {\n return null;\n }\n\n const keytar = await loadKeytar();\n if (!keytar) {\n return null;\n }\n\n return keytar.getPassword(SERVICE_NAME, getKeytarAccountForMetadata(found));\n}\n\nasync function verifyGitHubToken(token: string): Promise<{ valid: boolean; username?: string; error?: string }> {\n try {\n const response = await fetch('https://api.github.com/user', {\n headers: {\n Authorization: `Bearer ${token}`,\n Accept: 'application/vnd.github+json',\n 'X-GitHub-Api-Version': '2022-11-28',\n },\n });\n\n if (!response.ok) {\n if (response.status === 401) {\n return { valid: false, error: 'Invalid or expired GitHub token.' };\n }\n return { valid: false, error: `GitHub API returned ${response.status}.` };\n }\n\n const data = await response.json();\n const username = typeof data?.login === 'string' ? data.login : null;\n if (!username) {\n return { valid: false, error: 'GitHub API response did not include a username.' };\n }\n\n return { valid: true, username };\n } catch (error) {\n return { valid: false, error: `Failed to verify GitHub token: ${(error as Error).message}` };\n }\n}\n\nasync function verifyGitLabToken(serverUrl: string, token: string): Promise<{ valid: boolean; username?: string; error?: string }> {\n try {\n const normalizedUrl = normalizeGitLabServerUrl(serverUrl);\n const response = await fetch(`${normalizedUrl}/api/v4/user`, {\n headers: {\n 'PRIVATE-TOKEN': token,\n },\n });\n\n if (!response.ok) {\n if (response.status === 401) {\n return { valid: false, error: 'Invalid or expired GitLab token.' };\n }\n return { valid: false, error: `GitLab API returned ${response.status}.` };\n }\n\n const data = await response.json();\n const username = typeof data?.username === 'string' ? data.username : null;\n if (!username) {\n return { valid: false, error: 'GitLab API response did not include a username.' };\n }\n\n return { valid: true, username };\n } catch (error) {\n return { valid: false, error: `Failed to verify GitLab token: ${(error as Error).message}` };\n }\n}\n\nexport async function createGitHubCredential(token: string): Promise<{ success: boolean; credential?: GitHubCredential; error?: string }> {\n const trimmedToken = token.trim();\n if (!trimmedToken) {\n return { success: false, error: 'GitHub token is required.' };\n }\n\n let keytar: KeytarModule;\n try {\n keytar = await requireKeytar();\n } catch (error) {\n return { success: false, error: (error as Error).message };\n }\n\n const verification = await verifyGitHubToken(trimmedToken);\n if (!verification.valid || !verification.username) {\n return { success: false, error: verification.error || 'Failed to verify GitHub token.' };\n }\n\n const metadata = await readCredentialsMetadata();\n const duplicate = metadata.find((credential) => (\n credential.type === 'github'\n && credential.username === verification.username\n ));\n\n if (duplicate) {\n return { success: false, error: `A GitHub credential for ${verification.username} already exists.` };\n }\n\n const id = generateId();\n const now = new Date().toISOString();\n const keytarAccount = getDefaultKeytarAccount(id);\n\n await keytar.setPassword(SERVICE_NAME, keytarAccount, trimmedToken);\n\n const created: CredentialMetadata = {\n id,\n type: 'github',\n username: verification.username,\n createdAt: now,\n updatedAt: now,\n keytarAccount,\n };\n\n metadata.push(created);\n await writeCredentialsMetadata(metadata);\n\n return {\n success: true,\n credential: {\n id: created.id,\n type: 'github',\n username: created.username,\n createdAt: created.createdAt,\n updatedAt: created.updatedAt,\n },\n };\n}\n\nexport async function createGitLabCredential(\n serverUrl: string,\n token: string,\n): Promise<{ success: boolean; credential?: GitLabCredential; error?: string }> {\n const normalizedServerUrl = normalizeGitLabServerUrl(serverUrl);\n const trimmedToken = token.trim();\n\n if (!normalizedServerUrl) {\n return { success: false, error: 'GitLab server URL is required.' };\n }\n\n try {\n new URL(normalizedServerUrl);\n } catch {\n return { success: false, error: 'GitLab server URL must be a valid URL.' };\n }\n\n if (!trimmedToken) {\n return { success: false, error: 'GitLab token is required.' };\n }\n\n let keytar: KeytarModule;\n try {\n keytar = await requireKeytar();\n } catch (error) {\n return { success: false, error: (error as Error).message };\n }\n\n const verification = await verifyGitLabToken(normalizedServerUrl, trimmedToken);\n if (!verification.valid || !verification.username) {\n return { success: false, error: verification.error || 'Failed to verify GitLab token.' };\n }\n\n const metadata = await readCredentialsMetadata();\n const duplicate = metadata.find((credential) => (\n credential.type === 'gitlab'\n && credential.username === verification.username\n && credential.serverUrl === normalizedServerUrl\n ));\n\n if (duplicate) {\n return {\n success: false,\n error: `A GitLab credential for ${verification.username} on ${normalizedServerUrl} already exists.`,\n };\n }\n\n const id = generateId();\n const now = new Date().toISOString();\n const keytarAccount = getDefaultKeytarAccount(id);\n\n await keytar.setPassword(SERVICE_NAME, keytarAccount, trimmedToken);\n\n const created: CredentialMetadata = {\n id,\n type: 'gitlab',\n username: verification.username,\n serverUrl: normalizedServerUrl,\n createdAt: now,\n updatedAt: now,\n keytarAccount,\n };\n\n metadata.push(created);\n await writeCredentialsMetadata(metadata);\n\n return {\n success: true,\n credential: {\n id: created.id,\n type: 'gitlab',\n username: created.username,\n serverUrl: created.serverUrl || normalizedServerUrl,\n createdAt: created.createdAt,\n updatedAt: created.updatedAt,\n },\n };\n}\n\nexport async function deleteCredential(id: string): Promise<{ success: boolean; error?: string }> {\n const metadata = await readCredentialsMetadata();\n const index = metadata.findIndex((credential) => credential.id === id);\n\n if (index === -1) {\n return { success: false, error: 'Credential not found.' };\n }\n\n const credential = metadata[index];\n metadata.splice(index, 1);\n await writeCredentialsMetadata(metadata);\n\n const keytar = await loadKeytar();\n if (keytar) {\n await keytar.deletePassword(SERVICE_NAME, getKeytarAccountForMetadata(credential));\n }\n\n return { success: true };\n}\n\nexport async function updateCredential(id: string, token: string): Promise<{ success: boolean; credential?: Credential; error?: string }> {\n const trimmedToken = token.trim();\n if (!trimmedToken) {\n return { success: false, error: 'Token is required.' };\n }\n\n let keytar: KeytarModule;\n try {\n keytar = await requireKeytar();\n } catch (error) {\n return { success: false, error: (error as Error).message };\n }\n\n const metadata = await readCredentialsMetadata();\n const index = metadata.findIndex((c) => c.id === id);\n\n if (index === -1) {\n return { success: false, error: 'Credential not found' };\n }\n\n const existing = metadata[index];\n\n // Verify the new token\n let verification;\n if (existing.type === 'github') {\n verification = await verifyGitHubToken(trimmedToken);\n } else {\n verification = await verifyGitLabToken(existing.serverUrl || 'https://gitlab.com', trimmedToken);\n }\n\n if (!verification.valid || !verification.username) {\n return { success: false, error: verification.error || 'Failed to verify token' };\n }\n\n // Update token in keytar\n await keytar.setPassword(SERVICE_NAME, getKeytarAccountForMetadata(existing), trimmedToken);\n\n // Update metadata\n const now = new Date().toISOString();\n metadata[index] = {\n ...existing,\n username: verification.username,\n updatedAt: now,\n };\n await writeCredentialsMetadata(metadata);\n\n return {\n success: true,\n credential: toCredential(metadata[index]),\n };\n}\n\nexport async function findCredentialForRemote(remoteUrl: string): Promise<{ credential: Credential; token: string } | null> {\n const credentials = await getAllCredentials();\n\n // Check if it's a GitHub URL\n if (remoteUrl.includes('github.com')) {\n const githubCred = credentials.find((c) => c.type === 'github');\n if (githubCred) {\n const token = await getCredentialToken(githubCred.id);\n if (token) {\n return { credential: githubCred, token };\n }\n }\n }\n\n // Check GitLab servers\n for (const cred of credentials) {\n if (cred.type === 'gitlab') {\n // Extract host from remote URL\n let host: string;\n try {\n if (remoteUrl.startsWith('git@')) {\n // SSH URL: git@gitlab.com:user/repo.git\n host = remoteUrl.split('@')[1].split(':')[0];\n } else {\n // HTTP URL\n host = new URL(remoteUrl).host;\n }\n } catch {\n continue;\n }\n\n // Check if the credential's server URL matches\n const credHost = new URL(cred.serverUrl).host;\n if (host === credHost) {\n const token = await getCredentialToken(cred.id);\n if (token) {\n return { credential: cred, token };\n }\n }\n }\n }\n\n return null;\n}\n\n","'use server';\n\nimport {\n createGitHubCredential,\n createGitLabCredential,\n deleteCredential,\n getAllCredentials,\n} from '@/lib/credentials';\nimport type { Credential } from '@/lib/credentials';\nimport {\n createOrUpdateAgentApiCredential,\n deleteAgentApiCredential,\n getAllAgentApiCredentials,\n} from '@/lib/agent-api-credentials';\nimport type {\n AgentApiCredential,\n AgentApiCredentialAgent,\n} from '@/lib/agent-api-credentials';\n\ntype ListCredentialsResult =\n | { success: true; credentials: Credential[] }\n | { success: false; error: string };\n\nexport async function listCredentials(): Promise<ListCredentialsResult> {\n try {\n const credentials = await getAllCredentials();\n return { success: true, credentials };\n } catch (error) {\n console.error('Failed to list credentials:', error);\n return { success: false, error: 'Failed to load credentials.' };\n }\n}\n\ntype SaveCredentialResult =\n | { success: true; credential: Credential }\n | { success: false; error: string };\n\nexport async function saveGitHubCredential(token: string): Promise<SaveCredentialResult> {\n const result = await createGitHubCredential(token);\n if (!result.success || !result.credential) {\n return { success: false, error: result.error || 'Failed to save GitHub credential.' };\n }\n\n return { success: true, credential: result.credential };\n}\n\nexport async function saveGitLabCredential(serverUrl: string, token: string): Promise<SaveCredentialResult> {\n const result = await createGitLabCredential(serverUrl, token);\n if (!result.success || !result.credential) {\n return { success: false, error: result.error || 'Failed to save GitLab credential.' };\n }\n\n return { success: true, credential: result.credential };\n}\n\ntype ListAgentApiCredentialsResult =\n | { success: true; credentials: AgentApiCredential[] }\n | { success: false; error: string };\n\nexport async function listAgentApiCredentials(): Promise<ListAgentApiCredentialsResult> {\n try {\n const credentials = await getAllAgentApiCredentials();\n return { success: true, credentials };\n } catch (error) {\n console.error('Failed to list agent API credentials:', error);\n return { success: false, error: 'Failed to load agent API credentials.' };\n }\n}\n\ntype SaveAgentApiCredentialResult =\n | { success: true; credential: AgentApiCredential }\n | { success: false; error: string };\n\nexport async function saveAgentApiCredential(\n agent: AgentApiCredentialAgent,\n apiKey: string,\n apiProxy: string,\n): Promise<SaveAgentApiCredentialResult> {\n const result = await createOrUpdateAgentApiCredential(agent, apiKey, apiProxy);\n if (!result.success || !result.credential) {\n return { success: false, error: result.error || 'Failed to save agent API credential.' };\n }\n\n return { success: true, credential: result.credential };\n}\n\ntype RemoveCredentialResult =\n | { success: true }\n | { success: false; error: string };\n\nexport async function removeCredential(id: string): Promise<RemoveCredentialResult> {\n try {\n const result = await deleteCredential(id);\n if (!result.success) {\n return { success: false, error: result.error || 'Failed to remove credential.' };\n }\n\n return { success: true };\n } catch (error) {\n console.error('Failed to remove credential:', error);\n return { success: false, error: 'Failed to remove credential.' };\n }\n}\n\nexport async function removeAgentApiCredential(agent: AgentApiCredentialAgent): Promise<RemoveCredentialResult> {\n try {\n const result = await deleteAgentApiCredential(agent);\n if (!result.success) {\n return { success: false, error: result.error || 'Failed to remove agent API credential.' };\n }\n\n return { success: true };\n } catch (error) {\n console.error('Failed to remove agent API credential:', error);\n return { success: false, error: 'Failed to remove agent API credential.' };\n }\n}\n"],"names":["registerServerReference","ensureServerEntryExports","actions","i","length","action","Error"],"mappings":"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","ignoreList":[0,1]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
module.exports=[50227,(a,b,c)=>{b.exports=a.x("node:path",()=>require("node:path"))},46786,(a,b,c)=>{b.exports=a.x("os",()=>require("os"))},22734,(a,b,c)=>{b.exports=a.x("fs",()=>require("fs"))},33405,(a,b,c)=>{b.exports=a.x("child_process",()=>require("child_process"))},70722,(a,b,c)=>{b.exports=a.x("tty",()=>require("tty"))},51615,(a,b,c)=>{b.exports=a.x("node:buffer",()=>require("node:buffer"))},87769,(a,b,c)=>{b.exports=a.x("node:events",()=>require("node:events"))},80290,3568,a=>{"use strict";var b=a.i(81023),c=a.i(24868),d=a.i(46786),e=a.i(14747),f=a.i(6649),g=a.i(74814);let h=new Set([".git","node_modules",".next",".viba","dist","build","coverage"]);function i(){return global.repoResolutionCache||(global.repoResolutionCache=new Map),global.repoResolutionCache}function j(a,b){i().set(a.toLowerCase(),{repoPath:b,resolvedAt:Date.now()})}async function k(a){let b=i().get(a.toLowerCase());return b?Date.now()-b.resolvedAt>3e5?(i().delete(a.toLowerCase()),null):await l(b.repoPath)?b.repoPath:(i().delete(a.toLowerCase()),null):null}async function l(a){try{return await c.default.access(e.default.join(a,".git")),!0}catch{return!1}}async function m(a,b){let d=e.default.join(a,b);if(await l(d))return d;let f=[{dirPath:a,depth:0}],g=0,i=b.toLowerCase();for(let a=0;a<f.length;a+=1){let b,d=f[a];if((g+=1)>5e3)break;try{b=await c.default.readdir(d.dirPath,{withFileTypes:!0})}catch{continue}for(let a of b){if(!a.isDirectory()||function(a,b){let c=a.toLowerCase();return c!==b&&!!(h.has(c)||a.startsWith("."))}(a.name,i))continue;let b=e.default.join(d.dirPath,a.name);if(a.name.toLowerCase()===i&&await l(b))return b;d.depth+1<=5&&f.push({dirPath:b,depth:d.depth+1})}}return null}async function n(a){let b=a.trim();if(!b)return null;let c=await k(b);if(c)return c;let d=await (0,g.getConfig)();for(let a of d.recentRepos.filter(a=>e.default.basename(a).toLowerCase()===b.toLowerCase()))if(await l(a))return j(b,a),a;let f=[],h=new Set;for(let a of d.recentRepos){let b=e.default.dirname(a);h.has(b)||(h.add(b),f.push(b))}for(let a of(d.defaultRoot&&!h.has(d.defaultRoot)&&(h.add(d.defaultRoot),f.push(d.defaultRoot)),f)){let c=await m(a,b);if(c)return j(b,c),c}return null}var o=a.i(33897),p=a.i(70403),q=a.i(25059);async function r(a){try{let b=await n(a);return{success:!0,repoPath:b}}catch(a){return console.error("Failed to resolve repository by name:",a),{success:!1,repoPath:null,error:"Failed to search repositories. Please try again."}}}function s(a){if("gitlab"!==a.type)return null;try{return new URL(a.serverUrl).hostname.toLowerCase()}catch{return null}}async function t(a,b){let c=await (0,o.getAllCredentials)(),d=(0,p.detectGitRemoteProvider)(a,{gitlabHosts:c.flatMap(a=>{if("gitlab"!==a.type)return[];let b=s(a);return b?[b]:[]})}),e=(0,p.parseGitRemoteHost)(a);if(b){let a=await (0,o.getCredentialById)(b);if(!a)return{success:!1,error:"Selected credential was not found. Please choose another credential."};if("github"===d&&"github"!==a.type)return{success:!1,error:"Selected credential does not match this GitHub repository."};if("gitlab"===d&&"gitlab"!==a.type)return{success:!1,error:"Selected credential does not match this GitLab repository."};if("gitlab"===a.type&&e){let b=s(a);if(b&&b!==e)return{success:!1,error:`Selected GitLab credential targets ${b}, but this repository uses ${e}.`}}let c=await (0,o.getCredentialToken)(a.id);return c?{success:!0,credential:a,token:c}:{success:!1,error:"Could not load token for selected credential."}}if(!d)return{success:!0,credential:null,token:null};let f=function(a,b,c){if("github"===b)return a.find(a=>"github"===a.type)||null;if(c){let b=a.find(a=>"gitlab"===a.type&&s(a)===c);if(b)return b}return a.find(a=>"gitlab"===a.type)||null}(c,d,e);if(!f)return{success:!0,credential:null,token:null};let g=await (0,o.getCredentialToken)(f.id);return g?{success:!0,credential:f,token:g}:{success:!0,credential:null,token:null}}async function u(a,b){let g=a.trim();if(!g)return{success:!1,repoPath:null,error:"Please enter a remote repository URL."};let h=function(a){let b=a.trim();if(!b)return null;let c="";try{c=new URL(b).pathname}catch{let a=b.match(/^([^@]+@)?([^:]+):(.+)$/);c=a?a[3]:b}let d=c.replace(/\\/g,"/").replace(/\/+$/,"");if(!d)return null;let f=e.default.posix.basename(d);return f&&"."!==f&&".."!==f?(f.toLowerCase().endsWith(".git")&&(f=f.slice(0,-4)),f.replace(/[^a-zA-Z0-9._-]/g,"-").replace(/^-+/,"").replace(/-+$/,"")||null):null}(g);if(!h)return{success:!1,repoPath:null,error:"Could not determine repository name from URL."};let i=e.default.join(d.default.homedir(),".viba","repos");await c.default.mkdir(i,{recursive:!0});let j=e.default.join(i,h);try{return await c.default.access(j),{success:!1,repoPath:null,error:`Repository already exists at ${j}.`}}catch{}let k=await t(g,b);if(!k.success)return{success:!1,repoPath:null,error:k.error};let l=k.credential&&k.token?function(a,b,c){let d;try{d=new URL(a)}catch{return a}return"https:"!==d.protocol&&"http:"!==d.protocol?a:("github"===b.type?d.username="x-access-token":d.username="oauth2",d.password=c,d.toString())}(g,k.credential,k.token):g,m=(0,f.default)();try{if(await m.clone(l,j),l!==g){let a=(0,f.default)(j);await a.remote(["set-url","origin",g])}return{success:!0,repoPath:j}}catch(b){let a=function(a,b){let c=a;for(let a of b)a&&(c=c.replace(RegExp(a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),"g"),"***"));return c.replace(/:\/\/[^/\s@]+@/g,"://***@")}(b instanceof Error?b.message:String(b),[l,k.token??""]);try{await c.default.rm(j,{recursive:!0,force:!0})}catch{}return{success:!1,repoPath:null,error:a||"Failed to clone repository."}}}async function v(){let a=d.default.homedir(),b=e.default.join(a,".viba","drafts");try{await c.default.mkdir(b,{recursive:!0})}catch{}return b}async function w(a){try{let b=await v(),d=e.default.basename(a.id),f=e.default.join(b,`${d}.json`);return await c.default.writeFile(f,JSON.stringify(a,null,2),"utf-8"),{success:!0}}catch(a){return console.error("Failed to save draft:",a),{success:!1,error:"Failed to save draft"}}}async function x(a){try{let b=await v(),d=(await c.default.readdir(b)).filter(a=>a.endsWith(".json")).map(async a=>{try{let d=e.default.join(b,a),f=await c.default.readFile(d,"utf-8");return JSON.parse(f)}catch(b){return console.error(`Failed to parse draft file ${a}:`,b),null}}),f=(await Promise.all(d)).filter(a=>null!==a);if(a)return f.filter(b=>b.repoPath===a).sort((a,b)=>b.timestamp.localeCompare(a.timestamp));return f.sort((a,b)=>b.timestamp.localeCompare(a.timestamp))}catch(a){if("ENOENT"===a.code)return[];return console.error("Failed to list drafts:",a),[]}}async function y(a){try{let b=await v(),d=e.default.basename(a),f=e.default.join(b,`${d}.json`);return await c.default.rm(f,{force:!0}),{success:!0}}catch(a){return console.error("Failed to delete draft:",a),{success:!1,error:"Failed to delete draft"}}}(0,q.ensureServerEntryExports)([r,u]),(0,b.registerServerReference)(r,"407a41b2c1fa75217250bdb25a3453f8b3f3be4e45",null),(0,b.registerServerReference)(u,"601a54776507ec8db5c96139fd887ef83898e9d21f",null),a.s(["cloneRemoteRepository",()=>u,"resolveRepositoryByName",()=>r],80290),(0,q.ensureServerEntryExports)([w,x,y]),(0,b.registerServerReference)(w,"409cf724353176fc7eab3a3e210a168c56860d8c52",null),(0,b.registerServerReference)(x,"402bc28662d0e9adcb79c12f25066702b59ecebb8b",null),(0,b.registerServerReference)(y,"406d64653a8b8084df8bf947585df44dec8b6c888b",null),a.s(["deleteDraft",()=>y,"listDrafts",()=>x,"saveDraft",()=>w],3568)},72203,a=>{"use strict";var b=a.i(94639),c=a.i(80290),d=a.i(71910),e=a.i(3568),f=a.i(74814),g=a.i(57477);a.s([],70872),a.i(70872),a.s(["002ce3f1876998bb0a26838d833bfe46c678cc571b",()=>b.getHomeDirectory,"009482e578e852b940ca87671a117903e32af652da",()=>g.listCredentials,"00c47cd2b1004ae5c2efb45897381eb2a9b3552589",()=>g.listAgentApiCredentials,"00f720b775e9b8256a765d16378efd1766d992316b",()=>f.getConfig,"40116c8b3049086695b9dc565db2102abb622dfb06",()=>b.listDirectories,"401ad0095c024672ac1ab3ea234fd56d31b1b8aa23",()=>b.checkDirectoryAccessible,"402bc28662d0e9adcb79c12f25066702b59ecebb8b",()=>e.listDrafts,"4035f3701ec173bd37f630d43a57e49890e16d5bd8",()=>b.checkIsGitRepo,"4043f5840d1db11c31a8d812c8b04be10b5652f31f",()=>d.getSessionPrefillContext,"404d3fa413647629c256543edce90820cfd0774f68",()=>b.getBranches,"404e1f598e6c8af75c4836fe640e0794a291b06978",()=>b.listPathEntries,"406d64653a8b8084df8bf947585df44dec8b6c888b",()=>e.deleteDraft,"407a41b2c1fa75217250bdb25a3453f8b3f3be4e45",()=>c.resolveRepositoryByName,"40853a4e3d65bb57d1e595d033afe1e02cc9a6ac4c",()=>b.installAgentCli,"409cf724353176fc7eab3a3e210a168c56860d8c52",()=>e.saveDraft,"40be5d1358bb99b47a56a8f670cfdc7ce0301c4956",()=>b.checkAgentCliInstalled,"40cc13d21c80a65a2f0cb499982e828d68c8265334",()=>d.listSessions,"40d6cb22c450ed2d22f6b85d329c033df42359d6dc",()=>f.updateConfig,"40d9a1c671824ba32834da12d55d2f8b6986d04a74",()=>d.deleteSession,"601a54776507ec8db5c96139fd887ef83898e9d21f",()=>c.cloneRemoteRepository,"608efa70f873f755fad07b3da4c12bf67c11d60f91",()=>f.updateRepoSettings,"60d3ddab34ae13435d1746981b4da9000c104c4eaf",()=>d.saveSessionLaunchContext,"60f6109caf242081c2ccae20406b75d118c3da7cb8",()=>b.checkoutBranch,"7060418d7f02763eabcdc0f1840a2f5d93dc94f37d",()=>d.createSession,"7f31162550908955ed60459f7fdf32ee113d2edce9",()=>b.saveAttachments,"7f46bc105472dee2d70416a0c7733cb918b8eec898",()=>b.getDefaultDevServerScript,"7f5979301647b7a640df880cdd13bc1b6d860db2ea",()=>b.getStartupScript,"7f645b5ca98bc9f5d8d53e2aded1dcbf590e58fed7",()=>b.startTtydProcess,"7f9da74de6f77d5c292bff064d51a50b12695afcaf",()=>b.listRepoFiles],72203)},51969,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[externals]_keytar_be364400._.js"].map(b=>a.l(b))).then(()=>b(88891)))},44264,a=>{a.v(a=>Promise.resolve().then(()=>a(33405)))},76681,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[root-of-the-server]__4a454aa7._.js"].map(b=>a.l(b))).then(()=>b(99277)))}];
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=%5Broot-of-the-server%5D__11f96c04._.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../../Downloads/projects/viba/src/app/actions/repository.ts","../../../../../../../Downloads/projects/viba/src/lib/repo-resolver.ts","../../../../../../../Downloads/projects/viba/src/app/actions/draft.ts","../../../../../../../Downloads/projects/viba/.next-internal/server/app/new/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["'use server';\n\nimport fs from 'fs/promises';\nimport os from 'os';\nimport path from 'path';\nimport simpleGit from 'simple-git';\nimport { resolveRepositoryPathByName } from '@/lib/repo-resolver';\nimport { getAllCredentials, getCredentialById, getCredentialToken } from '@/lib/credentials';\nimport type { Credential } from '@/lib/credentials';\nimport { detectGitRemoteProvider, parseGitRemoteHost } from '@/lib/terminal-session';\n\ntype ResolveRepositoryResult = {\n success: boolean;\n repoPath: string | null;\n error?: string;\n};\n\ntype CloneRemoteRepositoryResult = {\n success: boolean;\n repoPath: string | null;\n error?: string;\n};\n\nexport async function resolveRepositoryByName(repoName: string): Promise<ResolveRepositoryResult> {\n try {\n const resolvedPath = await resolveRepositoryPathByName(repoName);\n return {\n success: true,\n repoPath: resolvedPath,\n };\n } catch (error) {\n console.error('Failed to resolve repository by name:', error);\n return {\n success: false,\n repoPath: null,\n error: 'Failed to search repositories. Please try again.',\n };\n }\n}\n\nfunction getGitLabCredentialHost(credential: Credential): string | null {\n if (credential.type !== 'gitlab') return null;\n\n try {\n return new URL(credential.serverUrl).hostname.toLowerCase();\n } catch {\n return null;\n }\n}\n\nfunction pickCandidateCredential(\n credentials: Credential[],\n provider: 'github' | 'gitlab',\n remoteHost: string | null,\n): Credential | null {\n if (provider === 'github') {\n return credentials.find((credential) => credential.type === 'github') || null;\n }\n\n if (remoteHost) {\n const hostMatch = credentials.find((credential) => (\n credential.type === 'gitlab'\n && getGitLabCredentialHost(credential) === remoteHost\n ));\n if (hostMatch) return hostMatch;\n }\n\n return credentials.find((credential) => credential.type === 'gitlab') || null;\n}\n\nfunction getRepoNameFromRemoteUrl(remoteUrl: string): string | null {\n const trimmed = remoteUrl.trim();\n if (!trimmed) return null;\n\n let rawPath = '';\n\n try {\n const parsed = new URL(trimmed);\n rawPath = parsed.pathname;\n } catch {\n const scpLikeMatch = trimmed.match(/^([^@]+@)?([^:]+):(.+)$/);\n if (scpLikeMatch) {\n rawPath = scpLikeMatch[3];\n } else {\n rawPath = trimmed;\n }\n }\n\n const normalized = rawPath.replace(/\\\\/g, '/').replace(/\\/+$/, '');\n if (!normalized) return null;\n\n let baseName = path.posix.basename(normalized);\n if (!baseName || baseName === '.' || baseName === '..') return null;\n\n if (baseName.toLowerCase().endsWith('.git')) {\n baseName = baseName.slice(0, -4);\n }\n\n const sanitized = baseName\n .replace(/[^a-zA-Z0-9._-]/g, '-')\n .replace(/^-+/, '')\n .replace(/-+$/, '');\n\n return sanitized || null;\n}\n\nfunction escapeRegExp(value: string): string {\n return value.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n\nfunction sanitizeErrorMessage(message: string, secretValues: string[]): string {\n let sanitized = message;\n\n for (const value of secretValues) {\n if (!value) continue;\n sanitized = sanitized.replace(new RegExp(escapeRegExp(value), 'g'), '***');\n }\n\n return sanitized.replace(/:\\/\\/[^/\\s@]+@/g, '://***@');\n}\n\nfunction buildAuthenticatedCloneUrl(remoteUrl: string, credential: Credential, token: string): string {\n let parsed: URL;\n try {\n parsed = new URL(remoteUrl);\n } catch {\n return remoteUrl;\n }\n\n if (parsed.protocol !== 'https:' && parsed.protocol !== 'http:') {\n return remoteUrl;\n }\n\n if (credential.type === 'github') {\n parsed.username = 'x-access-token';\n parsed.password = token;\n return parsed.toString();\n }\n\n parsed.username = 'oauth2';\n parsed.password = token;\n return parsed.toString();\n}\n\ntype CloneCredentialResolution =\n | { success: true; credential: Credential | null; token: string | null }\n | { success: false; error: string };\n\nasync function resolveCloneCredential(\n remoteUrl: string,\n credentialId: string | null,\n): Promise<CloneCredentialResolution> {\n const allCredentials = await getAllCredentials();\n const provider = detectGitRemoteProvider(remoteUrl, {\n gitlabHosts: allCredentials.flatMap((credential) => {\n if (credential.type !== 'gitlab') return [];\n const host = getGitLabCredentialHost(credential);\n return host ? [host] : [];\n }),\n });\n const remoteHost = parseGitRemoteHost(remoteUrl);\n\n if (credentialId) {\n const selectedCredential = await getCredentialById(credentialId);\n if (!selectedCredential) {\n return { success: false, error: 'Selected credential was not found. Please choose another credential.' };\n }\n\n if (provider === 'github' && selectedCredential.type !== 'github') {\n return { success: false, error: 'Selected credential does not match this GitHub repository.' };\n }\n if (provider === 'gitlab' && selectedCredential.type !== 'gitlab') {\n return { success: false, error: 'Selected credential does not match this GitLab repository.' };\n }\n\n if (selectedCredential.type === 'gitlab' && remoteHost) {\n const credentialHost = getGitLabCredentialHost(selectedCredential);\n if (credentialHost && credentialHost !== remoteHost) {\n return {\n success: false,\n error: `Selected GitLab credential targets ${credentialHost}, but this repository uses ${remoteHost}.`,\n };\n }\n }\n\n const token = await getCredentialToken(selectedCredential.id);\n if (!token) {\n return { success: false, error: 'Could not load token for selected credential.' };\n }\n\n return { success: true, credential: selectedCredential, token };\n }\n\n if (!provider) {\n return { success: true, credential: null, token: null };\n }\n\n const candidate = pickCandidateCredential(allCredentials, provider, remoteHost);\n if (!candidate) {\n return { success: true, credential: null, token: null };\n }\n\n const token = await getCredentialToken(candidate.id);\n if (!token) {\n return { success: true, credential: null, token: null };\n }\n\n return { success: true, credential: candidate, token };\n}\n\nexport async function cloneRemoteRepository(\n remoteUrl: string,\n credentialId: string | null,\n): Promise<CloneRemoteRepositoryResult> {\n const trimmedRemoteUrl = remoteUrl.trim();\n if (!trimmedRemoteUrl) {\n return { success: false, repoPath: null, error: 'Please enter a remote repository URL.' };\n }\n\n const repoName = getRepoNameFromRemoteUrl(trimmedRemoteUrl);\n if (!repoName) {\n return { success: false, repoPath: null, error: 'Could not determine repository name from URL.' };\n }\n\n const cloneRoot = path.join(os.homedir(), '.viba', 'repos');\n await fs.mkdir(cloneRoot, { recursive: true });\n\n const targetPath = path.join(cloneRoot, repoName);\n try {\n await fs.access(targetPath);\n return {\n success: false,\n repoPath: null,\n error: `Repository already exists at ${targetPath}.`,\n };\n } catch {\n // Path does not exist yet.\n }\n\n const credentialResolution = await resolveCloneCredential(trimmedRemoteUrl, credentialId);\n if (!credentialResolution.success) {\n return { success: false, repoPath: null, error: credentialResolution.error };\n }\n\n const cloneUrl = (credentialResolution.credential && credentialResolution.token)\n ? buildAuthenticatedCloneUrl(trimmedRemoteUrl, credentialResolution.credential, credentialResolution.token)\n : trimmedRemoteUrl;\n\n const git = simpleGit();\n\n try {\n await git.clone(cloneUrl, targetPath);\n\n if (cloneUrl !== trimmedRemoteUrl) {\n const clonedRepoGit = simpleGit(targetPath);\n await clonedRepoGit.remote(['set-url', 'origin', trimmedRemoteUrl]);\n }\n\n return {\n success: true,\n repoPath: targetPath,\n };\n } catch (error) {\n const rawMessage = error instanceof Error ? error.message : String(error);\n const safeMessage = sanitizeErrorMessage(rawMessage, [\n cloneUrl,\n credentialResolution.token ?? '',\n ]);\n\n try {\n await fs.rm(targetPath, { recursive: true, force: true });\n } catch {\n // Ignore cleanup errors.\n }\n\n return {\n success: false,\n repoPath: null,\n error: safeMessage || 'Failed to clone repository.',\n };\n }\n}\n","import fs from 'fs/promises';\nimport type { Dirent } from 'fs';\nimport path from 'path';\nimport { getConfig } from '@/app/actions/config';\n\nconst MAX_SCAN_DEPTH = 5;\nconst MAX_SCANNED_DIRECTORIES = 5000;\nconst RESOLUTION_CACHE_TTL_MS = 5 * 60 * 1000;\nconst SKIPPED_DIR_NAMES = new Set([\n '.git',\n 'node_modules',\n '.next',\n '.viba',\n 'dist',\n 'build',\n 'coverage',\n]);\n\ntype RepoResolutionCacheEntry = {\n repoPath: string;\n resolvedAt: number;\n};\n\ndeclare global {\n var repoResolutionCache: Map<string, RepoResolutionCacheEntry> | undefined;\n}\n\nfunction getResolutionCache(): Map<string, RepoResolutionCacheEntry> {\n if (!global.repoResolutionCache) {\n global.repoResolutionCache = new Map<string, RepoResolutionCacheEntry>();\n }\n return global.repoResolutionCache;\n}\n\nfunction cacheResolution(repoName: string, repoPath: string): void {\n getResolutionCache().set(repoName.toLowerCase(), {\n repoPath,\n resolvedAt: Date.now(),\n });\n}\n\nasync function getValidCachedResolution(repoName: string): Promise<string | null> {\n const entry = getResolutionCache().get(repoName.toLowerCase());\n if (!entry) return null;\n if (Date.now() - entry.resolvedAt > RESOLUTION_CACHE_TTL_MS) {\n getResolutionCache().delete(repoName.toLowerCase());\n return null;\n }\n\n if (await isGitRepository(entry.repoPath)) {\n return entry.repoPath;\n }\n\n getResolutionCache().delete(repoName.toLowerCase());\n return null;\n}\n\nasync function isGitRepository(dirPath: string): Promise<boolean> {\n try {\n await fs.access(path.join(dirPath, '.git'));\n return true;\n } catch {\n return false;\n }\n}\n\nfunction hasMatchingName(repoPath: string, repoName: string): boolean {\n return path.basename(repoPath).toLowerCase() === repoName.toLowerCase();\n}\n\nfunction shouldSkipDirectory(entryName: string, targetName: string): boolean {\n const lowerName = entryName.toLowerCase();\n if (lowerName === targetName) return false;\n if (SKIPPED_DIR_NAMES.has(lowerName)) return true;\n if (entryName.startsWith('.')) return true;\n return false;\n}\n\nasync function findByNameWithinRoot(rootPath: string, repoName: string): Promise<string | null> {\n const directCandidate = path.join(rootPath, repoName);\n if (await isGitRepository(directCandidate)) {\n return directCandidate;\n }\n\n const queue: Array<{ dirPath: string; depth: number }> = [{ dirPath: rootPath, depth: 0 }];\n let scannedCount = 0;\n const targetName = repoName.toLowerCase();\n\n for (let index = 0; index < queue.length; index += 1) {\n const current = queue[index];\n scannedCount += 1;\n if (scannedCount > MAX_SCANNED_DIRECTORIES) {\n break;\n }\n\n let entries: Dirent[];\n try {\n entries = await fs.readdir(current.dirPath, { withFileTypes: true });\n } catch {\n continue;\n }\n\n for (const entry of entries) {\n if (!entry.isDirectory()) continue;\n if (shouldSkipDirectory(entry.name, targetName)) continue;\n\n const nextDirPath = path.join(current.dirPath, entry.name);\n\n if (entry.name.toLowerCase() === targetName && await isGitRepository(nextDirPath)) {\n return nextDirPath;\n }\n\n if (current.depth + 1 <= MAX_SCAN_DEPTH) {\n queue.push({ dirPath: nextDirPath, depth: current.depth + 1 });\n }\n }\n }\n\n return null;\n}\n\nexport async function resolveRepositoryPathByName(repoName: string): Promise<string | null> {\n const trimmedName = repoName.trim();\n if (!trimmedName) return null;\n\n const cachedResolution = await getValidCachedResolution(trimmedName);\n if (cachedResolution) {\n return cachedResolution;\n }\n\n const config = await getConfig();\n\n const recentMatches = config.recentRepos.filter((repoPath) => hasMatchingName(repoPath, trimmedName));\n for (const repoPath of recentMatches) {\n if (await isGitRepository(repoPath)) {\n cacheResolution(trimmedName, repoPath);\n return repoPath;\n }\n }\n\n const searchRoots: string[] = [];\n const visitedRoots = new Set<string>();\n for (const repoPath of config.recentRepos) {\n const parentPath = path.dirname(repoPath);\n if (!visitedRoots.has(parentPath)) {\n visitedRoots.add(parentPath);\n searchRoots.push(parentPath);\n }\n }\n if (config.defaultRoot && !visitedRoots.has(config.defaultRoot)) {\n visitedRoots.add(config.defaultRoot);\n searchRoots.push(config.defaultRoot);\n }\n\n for (const rootPath of searchRoots) {\n const resolvedPath = await findByNameWithinRoot(rootPath, trimmedName);\n if (resolvedPath) {\n cacheResolution(trimmedName, resolvedPath);\n return resolvedPath;\n }\n }\n\n return null;\n}\n","'use server';\n\nimport fs from 'fs/promises';\nimport path from 'path';\nimport os from 'os';\n\nexport type DraftMetadata = {\n id: string;\n repoPath: string;\n branchName: string;\n message: string;\n attachmentPaths: string[];\n agentProvider: string;\n model: string;\n timestamp: string;\n title: string;\n startupScript: string;\n devServerScript: string;\n sessionMode: 'fast' | 'plan';\n};\n\nasync function getDraftsDir(): Promise<string> {\n const homedir = os.homedir();\n const draftsDir = path.join(homedir, '.viba', 'drafts');\n try {\n await fs.mkdir(draftsDir, { recursive: true });\n } catch {\n // Ignore if exists\n }\n return draftsDir;\n}\n\nexport async function saveDraft(draft: DraftMetadata): Promise<{ success: boolean; error?: string }> {\n try {\n const draftsDir = await getDraftsDir();\n const safeId = path.basename(draft.id);\n const filePath = path.join(draftsDir, `${safeId}.json`);\n await fs.writeFile(filePath, JSON.stringify(draft, null, 2), 'utf-8');\n return { success: true };\n } catch (e) {\n console.error('Failed to save draft:', e);\n return { success: false, error: 'Failed to save draft' };\n }\n}\n\nexport async function listDrafts(repoPath?: string): Promise<DraftMetadata[]> {\n try {\n const draftsDir = await getDraftsDir();\n const entries = await fs.readdir(draftsDir);\n\n const draftPromises = entries\n .filter((entry) => entry.endsWith('.json'))\n .map(async (entry) => {\n try {\n const filePath = path.join(draftsDir, entry);\n const content = await fs.readFile(filePath, 'utf-8');\n return JSON.parse(content) as DraftMetadata;\n } catch (e) {\n console.error(`Failed to parse draft file ${entry}:`, e);\n return null;\n }\n });\n\n const drafts = (await Promise.all(draftPromises)).filter((d): d is DraftMetadata => d !== null);\n\n if (repoPath) {\n return drafts.filter((d) => d.repoPath === repoPath).sort((a, b) => b.timestamp.localeCompare(a.timestamp));\n }\n\n return drafts.sort((a, b) => b.timestamp.localeCompare(a.timestamp));\n } catch (e: any) {\n if (e.code === 'ENOENT') {\n return [];\n }\n console.error('Failed to list drafts:', e);\n return [];\n }\n}\n\nexport async function deleteDraft(id: string): Promise<{ success: boolean; error?: string }> {\n try {\n const draftsDir = await getDraftsDir();\n const safeId = path.basename(id);\n const filePath = path.join(draftsDir, `${safeId}.json`);\n await fs.rm(filePath, { force: true });\n return { success: true };\n } catch (e) {\n console.error('Failed to delete draft:', e);\n return { success: false, error: 'Failed to delete draft' };\n }\n}\n","export {checkDirectoryAccessible as '401ad0095c024672ac1ab3ea234fd56d31b1b8aa23'} from 'ACTIONS_MODULE0'\nexport {listDirectories as '40116c8b3049086695b9dc565db2102abb622dfb06'} from 'ACTIONS_MODULE0'\nexport {getHomeDirectory as '002ce3f1876998bb0a26838d833bfe46c678cc571b'} from 'ACTIONS_MODULE0'\nexport {checkIsGitRepo as '4035f3701ec173bd37f630d43a57e49890e16d5bd8'} from 'ACTIONS_MODULE0'\nexport {getBranches as '404d3fa413647629c256543edce90820cfd0774f68'} from 'ACTIONS_MODULE0'\nexport {checkoutBranch as '60f6109caf242081c2ccae20406b75d118c3da7cb8'} from 'ACTIONS_MODULE0'\nexport {startTtydProcess as '7f645b5ca98bc9f5d8d53e2aded1dcbf590e58fed7'} from 'ACTIONS_MODULE0'\nexport {getStartupScript as '7f5979301647b7a640df880cdd13bc1b6d860db2ea'} from 'ACTIONS_MODULE0'\nexport {getDefaultDevServerScript as '7f46bc105472dee2d70416a0c7733cb918b8eec898'} from 'ACTIONS_MODULE0'\nexport {listRepoFiles as '7f9da74de6f77d5c292bff064d51a50b12695afcaf'} from 'ACTIONS_MODULE0'\nexport {checkAgentCliInstalled as '40be5d1358bb99b47a56a8f670cfdc7ce0301c4956'} from 'ACTIONS_MODULE0'\nexport {installAgentCli as '40853a4e3d65bb57d1e595d033afe1e02cc9a6ac4c'} from 'ACTIONS_MODULE0'\nexport {cloneRemoteRepository as '601a54776507ec8db5c96139fd887ef83898e9d21f'} from 'ACTIONS_MODULE1'\nexport {resolveRepositoryByName as '407a41b2c1fa75217250bdb25a3453f8b3f3be4e45'} from 'ACTIONS_MODULE1'\nexport {createSession as '7060418d7f02763eabcdc0f1840a2f5d93dc94f37d'} from 'ACTIONS_MODULE2'\nexport {deleteSession as '40d9a1c671824ba32834da12d55d2f8b6986d04a74'} from 'ACTIONS_MODULE2'\nexport {getSessionPrefillContext as '4043f5840d1db11c31a8d812c8b04be10b5652f31f'} from 'ACTIONS_MODULE2'\nexport {listSessions as '40cc13d21c80a65a2f0cb499982e828d68c8265334'} from 'ACTIONS_MODULE2'\nexport {saveSessionLaunchContext as '60d3ddab34ae13435d1746981b4da9000c104c4eaf'} from 'ACTIONS_MODULE2'\nexport {deleteDraft as '406d64653a8b8084df8bf947585df44dec8b6c888b'} from 'ACTIONS_MODULE3'\nexport {listDrafts as '402bc28662d0e9adcb79c12f25066702b59ecebb8b'} from 'ACTIONS_MODULE3'\nexport {saveDraft as '409cf724353176fc7eab3a3e210a168c56860d8c52'} from 'ACTIONS_MODULE3'\nexport {getConfig as '00f720b775e9b8256a765d16378efd1766d992316b'} from 'ACTIONS_MODULE4'\nexport {updateConfig as '40d6cb22c450ed2d22f6b85d329c033df42359d6dc'} from 'ACTIONS_MODULE4'\nexport {updateRepoSettings as '608efa70f873f755fad07b3da4c12bf67c11d60f91'} from 'ACTIONS_MODULE4'\nexport {listAgentApiCredentials as '00c47cd2b1004ae5c2efb45897381eb2a9b3552589'} from 'ACTIONS_MODULE5'\nexport {listCredentials as '009482e578e852b940ca87671a117903e32af652da'} from 'ACTIONS_MODULE5'\nexport {listPathEntries as '404e1f598e6c8af75c4836fe640e0794a291b06978'} from 'ACTIONS_MODULE0'\nexport {saveAttachments as '7f31162550908955ed60459f7fdf32ee113d2edce9'} from 'ACTIONS_MODULE0'\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
module.exports=[93695,(a,b,c)=>{b.exports=a.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},12714,(a,b,c)=>{b.exports=a.x("node:fs/promises",()=>require("node:fs/promises"))},33715,a=>{a.n(a.i(51123))},89806,a=>{a.n(a.i(13314))},16842,a=>{a.n(a.i(3644))},58228,a=>{a.n(a.i(419))},81190,a=>{a.n(a.i(53918))},31573,a=>{a.n(a.i(39515))},46356,a=>{a.n(a.i(79222))},8434,a=>{"use strict";a.s(["default",()=>b]);let b=(0,a.i(5672).registerClientReference)(function(){throw Error("Attempted to call the default export of [project]/Downloads/projects/viba/src/components/GitRepoSelector.tsx <module evaluation> from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/Downloads/projects/viba/src/components/GitRepoSelector.tsx <module evaluation>","default")},29559,a=>{"use strict";a.s(["default",()=>b]);let b=(0,a.i(5672).registerClientReference)(function(){throw Error("Attempted to call the default export of [project]/Downloads/projects/viba/src/components/GitRepoSelector.tsx from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/Downloads/projects/viba/src/components/GitRepoSelector.tsx","default")},22379,a=>{"use strict";a.i(8434);var b=a.i(29559);a.n(b)},59882,a=>{"use strict";var b=a.i(7388),c=a.i(22379),d=a.i(12714),e=a.i(50227);let f=[{id:"design",label:"Design",fileName:"design.md"},{id:"performance",label:"Performance",fileName:"performance.md"},{id:"security",label:"Security",fileName:"security.md"}];async function g(){let a=e.default.join(process.cwd(),"docs/prompts/jules"),b=await Promise.all(f.map(async({id:b,label:c,fileName:f})=>{try{let g=(await (0,d.readFile)(e.default.join(a,f),"utf8")).trim();if(!g)return null;return{id:b,label:c,content:g}}catch(a){return console.error(`Failed to load predefined prompt: ${f}`,a),null}})),c=[];for(let a of b)a&&c.push(a);return c}async function h({searchParams:a}){let d=await a,e=await g(),f=d.repo,h=d.from,i=d.prefillFromSession,j=Array.isArray(f)?f[0]:f,k=Array.isArray(h)?h[0]:h,l=Array.isArray(i)?i[0]:i;return(0,b.jsx)("main",{className:"flex min-h-screen flex-col items-center bg-[#f6f6f8] p-4 md:p-8 dark:bg-[#0d1117]",children:(0,b.jsx)(c.default,{mode:"new",repoPath:j??null,fromRepoName:k??null,prefillFromSession:l??null,predefinedPrompts:e})})}a.s(["default",()=>h])}];
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=%5Broot-of-the-server%5D__14783fb7._.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../../Downloads/projects/viba/src/components/GitRepoSelector.tsx/__nextjs-internal-proxy.mjs","../../../../../../../Downloads/projects/viba/src/app/new/page.tsx"],"sourcesContent":["// This file is generated by next-core EcmascriptClientReferenceModule.\nimport { registerClientReference } from \"react-server-dom-turbopack/server\";\nexport default registerClientReference(\n function() { throw new Error(\"Attempted to call the default export of [project]/Downloads/projects/viba/src/components/GitRepoSelector.tsx from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.\"); },\n \"[project]/Downloads/projects/viba/src/components/GitRepoSelector.tsx\",\n \"default\",\n);\n","import GitRepoSelector from '@/components/GitRepoSelector';\nimport { readFile } from 'node:fs/promises';\nimport path from 'node:path';\n\ntype PredefinedPrompt = {\n id: string;\n label: string;\n content: string;\n};\n\nconst PREDEFINED_PROMPT_CONFIG = [\n { id: 'design', label: 'Design', fileName: 'design.md' },\n { id: 'performance', label: 'Performance', fileName: 'performance.md' },\n { id: 'security', label: 'Security', fileName: 'security.md' },\n] as const;\n\nasync function loadJulesPredefinedPrompts(): Promise<PredefinedPrompt[]> {\n const promptDirectory = path.join(process.cwd(), 'docs/prompts/jules');\n\n const prompts = await Promise.all(\n PREDEFINED_PROMPT_CONFIG.map(async ({ id, label, fileName }) => {\n try {\n const content = (await readFile(path.join(promptDirectory, fileName), 'utf8')).trim();\n if (!content) return null;\n return { id, label, content };\n } catch (error) {\n console.error(`Failed to load predefined prompt: ${fileName}`, error);\n return null;\n }\n }),\n );\n\n const availablePrompts: PredefinedPrompt[] = [];\n for (const prompt of prompts) {\n if (prompt) {\n availablePrompts.push(prompt);\n }\n }\n\n return availablePrompts;\n}\n\ntype NewSessionPageProps = {\n searchParams: Promise<{\n repo?: string | string[];\n from?: string | string[];\n prefillFromSession?: string | string[];\n }>;\n};\n\nexport default async function NewSessionPage({ searchParams }: NewSessionPageProps) {\n const params = await searchParams;\n const predefinedPrompts = await loadJulesPredefinedPrompts();\n const repoParam = params.repo;\n const fromParam = params.from;\n const prefillParam = params.prefillFromSession;\n const repoPathFromParam = Array.isArray(repoParam) ? repoParam[0] : repoParam;\n const fromName = Array.isArray(fromParam) ? fromParam[0] : fromParam;\n const prefillFromSession = Array.isArray(prefillParam) ? prefillParam[0] : prefillParam;\n const repoPath = repoPathFromParam;\n\n return (\n <main className=\"flex min-h-screen flex-col items-center bg-[#f6f6f8] p-4 md:p-8 dark:bg-[#0d1117]\">\n <GitRepoSelector\n mode=\"new\"\n repoPath={repoPath ?? null}\n fromRepoName={fromName ?? null}\n prefillFromSession={prefillFromSession ?? null}\n predefinedPrompts={predefinedPrompts}\n />\n </main>\n );\n}\n"],"names":[],"mappings":"ueAEe,CAAA,EAAA,AADf,EAAA,CAAA,CAAA,MACe,uBAAA,AAAuB,EAClC,WAAa,MAAM,AAAI,MAAM,4TAA8T,EAC3V,2FACA,gEAHW,CAAA,EADf,AACe,EADf,CAAA,CAAA,MACe,uBAAA,AAAuB,EAClC,WAAa,MAAM,AAAI,MAAM,wSAA0S,EACvU,uEACA,6GCLJ,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OAQA,IAAM,EAA2B,CAC/B,CAAE,GAAI,SAAU,MAAO,SAAU,SAAU,WAAY,EACvD,CAAE,GAAI,cAAe,MAAO,cAAe,SAAU,gBAAiB,EACtE,CAAE,GAAI,WAAY,MAAO,WAAY,SAAU,aAAc,EAC9D,CAED,eAAe,IACb,IAAM,EAAkB,EAAA,OAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,GAAI,sBAE3C,EAAU,MAAM,QAAQ,GAAG,CAC/B,EAAyB,GAAG,CAAC,MAAO,IAAE,CAAE,OAAE,CAAK,UAAE,CAAQ,CAAE,IACzD,GAAI,CACF,IAAM,EAAU,CAAC,MAAM,CAAA,EAAA,EAAA,QAAQ,AAAR,EAAS,EAAA,OAAI,CAAC,IAAI,CAAC,EAAiB,GAAW,OAAA,CAAO,CAAE,IAAI,GACnF,GAAI,CAAC,EAAS,OAAO,KACrB,MAAO,IAAE,QAAI,UAAO,CAAQ,CAC9B,CAAE,MAAO,EAAO,CAEd,OADA,QAAQ,KAAK,CAAC,CAAC,kCAAkC,EAAE,EAAA,CAAU,CAAE,GACxD,IACT,CACF,IAGI,EAAuC,EAAE,CAC/C,IAAK,IAAM,KAAU,EACf,GACF,EAAiB,CAFS,EAChB,CACW,CAAC,GAI1B,OAAO,CACT,CAUe,eAAe,EAAe,cAAE,CAAY,CAAuB,EAChF,IAAM,EAAS,MAAM,EACf,EAAoB,MAAM,IAC1B,EAAY,EAAO,IAAI,CACvB,EAAY,EAAO,IAAI,CACvB,EAAe,EAAO,kBAAkB,CACxC,EAAoB,MAAM,OAAO,CAAC,GAAa,CAAS,CAAC,EAAE,CAAG,EAC9D,EAAW,MAAM,OAAO,CAAC,GAAa,CAAS,CAAC,EAAE,CAAG,EACrD,EAAqB,MAAM,OAAO,CAAC,GAAgB,CAAY,CAAC,EAAE,CAAG,EAG3E,MACE,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,6FACd,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,OAAe,CAAA,CACd,KAAK,MACL,SANW,AAMD,GAAY,KACtB,aAAc,GAAY,KAC1B,mBAAoB,GAAsB,KAC1C,kBAAmB,KAI3B","ignoreList":[0]}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
module.exports=[46786,(a,b,c)=>{b.exports=a.x("os",()=>require("os"))},24868,(a,b,c)=>{b.exports=a.x("fs/promises",()=>require("fs/promises"))},81023,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"registerServerReference",{enumerable:!0,get:function(){return d.registerServerReference}});let d=a.r(5672)},33897,a=>{"use strict";var b=a.i(24868),c=a.i(46786),d=a.i(14747);let e="viba-git-credentials",f=null,g=null,h=!1;function i(){return g?`Secure credential storage is unavailable: ${g}`:"Secure credential storage is unavailable in this runtime."}async function j(){return f||(f=a.A(51969).then(a=>a.default??a).catch(a=>(g=a instanceof Error?a.message:String(a),h||(h=!0,console.warn(`[credentials] ${i()}`)),null))),f}async function k(){let a=await j();if(!a)throw Error(i());return a}function l(){return`${Date.now()}-${Math.random().toString(36).slice(2,9)}`}function m(a){return a.trim().replace(/\/$/,"")}function n(a){return`credential-${a}`}function o(a){return`credential-${a}`}function p(a){return a.keytarAccount||n(a.id)}function q(a){return"gitlab"===a.type?{id:a.id,type:"gitlab",username:a.username,serverUrl:a.serverUrl||"https://gitlab.com",createdAt:a.createdAt,updatedAt:a.updatedAt}:{id:a.id,type:"github",username:a.username,createdAt:a.createdAt,updatedAt:a.updatedAt}}async function r(){let a=d.default.join(c.default.homedir(),".viba");return await b.default.mkdir(a,{recursive:!0}),d.default.join(a,"credentials.json")}function s(a,b){return!!a&&"object"==typeof a&&a.type===b&&"string"==typeof a.username&&"string"==typeof a.createdAt&&"string"==typeof a.updatedAt&&("gitlab"!==b||"string"==typeof a.serverUrl)}function t(a){return!!a&&"object"==typeof a&&"string"==typeof a.id&&!!a.id.trim()&&("github"===a.type||"gitlab"===a.type)&&"string"==typeof a.username&&"string"==typeof a.createdAt&&"string"==typeof a.updatedAt&&(void 0===a.keytarAccount||"string"==typeof a.keytarAccount)&&("gitlab"!==a.type||"string"==typeof a.serverUrl)}async function u(a){let c=await r();await b.default.writeFile(c,JSON.stringify(a,null,2),"utf-8")}async function v(){let a=await r();try{let c=await b.default.readFile(a,"utf-8"),d=JSON.parse(c);if(Array.isArray(d))return d.filter(t);if(!d||"object"!=typeof d)return[];let e=[];if(s(d.github,"github")){let a=d.github;e.push({id:l(),type:"github",username:a.username,createdAt:a.createdAt,updatedAt:a.updatedAt,keytarAccount:o("github")})}if(s(d.gitlab,"gitlab")){let a=d.gitlab;e.push({id:l(),type:"gitlab",username:a.username,serverUrl:a.serverUrl,createdAt:a.createdAt,updatedAt:a.updatedAt,keytarAccount:o("gitlab")})}return e.length>0&&await u(e),e}catch(a){if(a?.code==="ENOENT")return[];return console.error("Failed to parse credentials metadata:",a),[]}}async function w(){return(await v()).map(q).sort((a,b)=>b.updatedAt.localeCompare(a.updatedAt))}async function x(a){let b=(await v()).find(b=>b.id===a);return b?q(b):null}async function y(a){let b=(await v()).find(b=>b.id===a);if(!b)return null;let c=await j();return c?c.getPassword(e,p(b)):null}async function z(a){try{let b=await fetch("https://api.github.com/user",{headers:{Authorization:`Bearer ${a}`,Accept:"application/vnd.github+json","X-GitHub-Api-Version":"2022-11-28"}});if(!b.ok){if(401===b.status)return{valid:!1,error:"Invalid or expired GitHub token."};return{valid:!1,error:`GitHub API returned ${b.status}.`}}let c=await b.json(),d="string"==typeof c?.login?c.login:null;if(!d)return{valid:!1,error:"GitHub API response did not include a username."};return{valid:!0,username:d}}catch(a){return{valid:!1,error:`Failed to verify GitHub token: ${a.message}`}}}async function A(a,b){try{let c=m(a),d=await fetch(`${c}/api/v4/user`,{headers:{"PRIVATE-TOKEN":b}});if(!d.ok){if(401===d.status)return{valid:!1,error:"Invalid or expired GitLab token."};return{valid:!1,error:`GitLab API returned ${d.status}.`}}let e=await d.json(),f="string"==typeof e?.username?e.username:null;if(!f)return{valid:!1,error:"GitLab API response did not include a username."};return{valid:!0,username:f}}catch(a){return{valid:!1,error:`Failed to verify GitLab token: ${a.message}`}}}async function B(a){let b,c=a.trim();if(!c)return{success:!1,error:"GitHub token is required."};try{b=await k()}catch(a){return{success:!1,error:a.message}}let d=await z(c);if(!d.valid||!d.username)return{success:!1,error:d.error||"Failed to verify GitHub token."};let f=await v();if(f.find(a=>"github"===a.type&&a.username===d.username))return{success:!1,error:`A GitHub credential for ${d.username} already exists.`};let g=l(),h=new Date().toISOString(),i=n(g);await b.setPassword(e,i,c);let j={id:g,type:"github",username:d.username,createdAt:h,updatedAt:h,keytarAccount:i};return f.push(j),await u(f),{success:!0,credential:{id:j.id,type:"github",username:j.username,createdAt:j.createdAt,updatedAt:j.updatedAt}}}async function C(a,b){let c,d=m(a),f=b.trim();if(!d)return{success:!1,error:"GitLab server URL is required."};try{new URL(d)}catch{return{success:!1,error:"GitLab server URL must be a valid URL."}}if(!f)return{success:!1,error:"GitLab token is required."};try{c=await k()}catch(a){return{success:!1,error:a.message}}let g=await A(d,f);if(!g.valid||!g.username)return{success:!1,error:g.error||"Failed to verify GitLab token."};let h=await v();if(h.find(a=>"gitlab"===a.type&&a.username===g.username&&a.serverUrl===d))return{success:!1,error:`A GitLab credential for ${g.username} on ${d} already exists.`};let i=l(),j=new Date().toISOString(),o=n(i);await c.setPassword(e,o,f);let p={id:i,type:"gitlab",username:g.username,serverUrl:d,createdAt:j,updatedAt:j,keytarAccount:o};return h.push(p),await u(h),{success:!0,credential:{id:p.id,type:"gitlab",username:p.username,serverUrl:p.serverUrl||d,createdAt:p.createdAt,updatedAt:p.updatedAt}}}async function D(a){let b=await v(),c=b.findIndex(b=>b.id===a);if(-1===c)return{success:!1,error:"Credential not found."};let d=b[c];b.splice(c,1),await u(b);let f=await j();return f&&await f.deletePassword(e,p(d)),{success:!0}}a.s(["createGitHubCredential",()=>B,"createGitLabCredential",()=>C,"deleteCredential",()=>D,"getAllCredentials",()=>w,"getCredentialById",()=>x,"getCredentialToken",()=>y])},21185,a=>{"use strict";var b=a.i(24868),c=a.i(46786),d=a.i(14747);let e="viba-agent-api-credentials",f=["codex"],g=null,h=null,i=!1;function j(a){return f.includes(a)}function k(){return h?`Secure credential storage is unavailable: ${h}`:"Secure credential storage is unavailable in this runtime."}async function l(){return g||(g=a.A(51969).then(a=>a.default??a).catch(a=>(h=a instanceof Error?a.message:String(a),i||(i=!0,console.warn(`[agent-api-credentials] ${k()}`)),null))),g}async function m(){let a=await l();if(!a)throw Error(k());return a}function n(a){return`agent-api-${a}`}function o(a){return a.keytarAccount||n(a.agent)}function p(a){return{agent:a.agent,apiProxy:a.apiProxy,createdAt:a.createdAt,updatedAt:a.updatedAt}}function q(a){return!!a&&"object"==typeof a&&"string"==typeof a.agent&&!!j(a.agent)&&"string"==typeof a.createdAt&&"string"==typeof a.updatedAt&&(void 0===a.apiProxy||"string"==typeof a.apiProxy)&&(void 0===a.keytarAccount||"string"==typeof a.keytarAccount)}async function r(){let a=d.default.join(c.default.homedir(),".viba");return await b.default.mkdir(a,{recursive:!0}),d.default.join(a,"agent-api-configs.json")}async function s(a){let c=await r();await b.default.writeFile(c,JSON.stringify(a,null,2),"utf-8")}async function t(){let a=await r();try{let c=await b.default.readFile(a,"utf-8"),d=JSON.parse(c);if(Array.isArray(d))return d.filter(q);if(!d||"object"!=typeof d)return[];let e=Object.entries(d).filter(([a])=>j(a)).map(([a,b])=>b&&"object"==typeof b?void 0===b.agent?{...b,agent:a}:b:null).filter(q);return e.length>0&&await s(e),e}catch(a){if(a?.code==="ENOENT")return[];return console.error("Failed to parse agent API credential metadata:",a),[]}}async function u(){return(await t()).map(p).sort((a,b)=>b.updatedAt.localeCompare(a.updatedAt))}async function v(a,b,c){let d,f;if(!j(a))return{success:!1,error:`Unsupported agent: ${a}`};let g=b.trim();if(!g)return{success:!1,error:"API key is required."};try{d=function(a){let b=a.trim();if(b){try{new URL(b)}catch{throw Error("API proxy must be a valid URL.")}return b}}(c)}catch(a){return{success:!1,error:a.message}}try{f=await m()}catch(a){return{success:!1,error:a.message}}let h=await t(),i=new Date().toISOString(),k=h.findIndex(b=>b.agent===a),l=k>=0?o(h[k]):n(a);if(await f.setPassword(e,l,g),k>=0){let a=h[k];h[k]={...a,apiProxy:d,updatedAt:i,keytarAccount:l}}else h.push({agent:a,apiProxy:d,createdAt:i,updatedAt:i,keytarAccount:l});await s(h);let q=h.find(b=>b.agent===a);return q?{success:!0,credential:p(q)}:{success:!1,error:"Failed to persist agent API credential."}}async function w(a){if(!j(a))return{success:!1,error:`Unsupported agent: ${a}`};let b=await t(),c=b.findIndex(b=>b.agent===a);if(-1===c)return{success:!1,error:"Agent API credential not found."};let[d]=b.splice(c,1);await s(b);let f=await l();return f&&await f.deletePassword(e,o(d)),{success:!0}}async function x(a){if(!j(a))return null;let b=(await t()).find(b=>b.agent===a);if(!b)return null;let c=await l();if(!c)return null;let d=await c.getPassword(e,o(b));return d?{agent:b.agent,apiKey:d,apiProxy:b.apiProxy}:null}a.s(["createOrUpdateAgentApiCredential",()=>v,"deleteAgentApiCredential",()=>w,"getAgentApiCredentialSecret",()=>x,"getAllAgentApiCredentials",()=>u])},25059,(a,b,c)=>{"use strict";function d(a){for(let b=0;b<a.length;b++){let c=a[b];if("function"!=typeof c)throw Object.defineProperty(Error(`A "use server" file can only export async functions, found ${typeof c}.
|
|
2
|
+
Read more: https://nextjs.org/docs/messages/invalid-use-server-value`),"__NEXT_ERROR_CODE",{value:"E352",enumerable:!1,configurable:!0})}}Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"ensureServerEntryExports",{enumerable:!0,get:function(){return d}})},57477,a=>{"use strict";var b=a.i(81023),c=a.i(33897),d=a.i(21185);async function e(){try{let a=await (0,c.getAllCredentials)();return{success:!0,credentials:a}}catch(a){return console.error("Failed to list credentials:",a),{success:!1,error:"Failed to load credentials."}}}async function f(a){let b=await (0,c.createGitHubCredential)(a);return b.success&&b.credential?{success:!0,credential:b.credential}:{success:!1,error:b.error||"Failed to save GitHub credential."}}async function g(a,b){let d=await (0,c.createGitLabCredential)(a,b);return d.success&&d.credential?{success:!0,credential:d.credential}:{success:!1,error:d.error||"Failed to save GitLab credential."}}async function h(){try{let a=await (0,d.getAllAgentApiCredentials)();return{success:!0,credentials:a}}catch(a){return console.error("Failed to list agent API credentials:",a),{success:!1,error:"Failed to load agent API credentials."}}}async function i(a,b,c){let e=await (0,d.createOrUpdateAgentApiCredential)(a,b,c);return e.success&&e.credential?{success:!0,credential:e.credential}:{success:!1,error:e.error||"Failed to save agent API credential."}}async function j(a){try{let b=await (0,c.deleteCredential)(a);if(!b.success)return{success:!1,error:b.error||"Failed to remove credential."};return{success:!0}}catch(a){return console.error("Failed to remove credential:",a),{success:!1,error:"Failed to remove credential."}}}async function k(a){try{let b=await (0,d.deleteAgentApiCredential)(a);if(!b.success)return{success:!1,error:b.error||"Failed to remove agent API credential."};return{success:!0}}catch(a){return console.error("Failed to remove agent API credential:",a),{success:!1,error:"Failed to remove agent API credential."}}}(0,a.i(25059).ensureServerEntryExports)([e,f,g,h,i,j,k]),(0,b.registerServerReference)(e,"009482e578e852b940ca87671a117903e32af652da",null),(0,b.registerServerReference)(f,"40b485480e8f63bf69c7d3ccb52778a60d39349dbd",null),(0,b.registerServerReference)(g,"605f61938bf5e427ed5388e455820dd042e2f3d2c0",null),(0,b.registerServerReference)(h,"00c47cd2b1004ae5c2efb45897381eb2a9b3552589",null),(0,b.registerServerReference)(i,"70b7afe2c0a2f6d6eddab7bca16522ddb38d4abf40",null),(0,b.registerServerReference)(j,"4082e4c269bb79962d6ea42dc5084f64dc7dbdabb8",null),(0,b.registerServerReference)(k,"407c96ca4ba5bd24be8887252f61c0e2364c606365",null),a.s(["listAgentApiCredentials",()=>h,"listCredentials",()=>e,"removeAgentApiCredential",()=>k,"removeCredential",()=>j,"saveAgentApiCredential",()=>i,"saveGitHubCredential",()=>f,"saveGitLabCredential",()=>g])}];
|
|
3
|
+
|
|
4
|
+
//# sourceMappingURL=%5Broot-of-the-server%5D__15e62f6d._.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../../Downloads/projects/viba/node_modules/next/src/build/webpack/loaders/next-flight-loader/server-reference.ts","../../../../../../../Downloads/projects/viba/src/lib/credentials.ts","../../../../../../../Downloads/projects/viba/src/lib/agent-api-credentials.ts","../../../../../../../Downloads/projects/viba/node_modules/next/src/build/webpack/loaders/next-flight-loader/action-validate.ts","../../../../../../../Downloads/projects/viba/src/app/actions/credentials.ts"],"sourcesContent":["/* eslint-disable import/no-extraneous-dependencies */\nexport { registerServerReference } from 'react-server-dom-webpack/server'\n","import fs from 'fs/promises';\nimport os from 'os';\nimport path from 'path';\n\nconst SERVICE_NAME = 'viba-git-credentials';\nconst CREDENTIALS_FILE_NAME = 'credentials.json';\n\nexport type CredentialType = 'github' | 'gitlab';\n\nexport interface BaseCredential {\n id: string;\n type: CredentialType;\n username: string;\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface GitHubCredential extends BaseCredential {\n type: 'github';\n}\n\nexport interface GitLabCredential extends BaseCredential {\n type: 'gitlab';\n serverUrl: string;\n}\n\nexport type Credential = GitHubCredential | GitLabCredential;\n\ntype CredentialMetadata = {\n id: string;\n type: CredentialType;\n username: string;\n serverUrl?: string;\n createdAt: string;\n updatedAt: string;\n keytarAccount?: string;\n};\n\ntype LegacyCredentialMetadata = {\n type: CredentialType;\n username: string;\n serverUrl?: string;\n createdAt: string;\n updatedAt: string;\n};\n\ntype KeytarModule = {\n getPassword(service: string, account: string): Promise<string | null>;\n setPassword(service: string, account: string, password: string): Promise<void>;\n deletePassword(service: string, account: string): Promise<boolean>;\n};\n\nlet keytarPromise: Promise<KeytarModule | null> | null = null;\nlet keytarUnavailableReason: string | null = null;\nlet didLogKeytarWarning = false;\n\nfunction keytarUnavailableMessage(): string {\n if (keytarUnavailableReason) {\n return `Secure credential storage is unavailable: ${keytarUnavailableReason}`;\n }\n return 'Secure credential storage is unavailable in this runtime.';\n}\n\nasync function loadKeytar(): Promise<KeytarModule | null> {\n if (!keytarPromise) {\n keytarPromise = import('keytar')\n .then((module) => (module.default ?? module) as KeytarModule)\n .catch((error: unknown) => {\n keytarUnavailableReason = error instanceof Error ? error.message : String(error);\n if (!didLogKeytarWarning) {\n didLogKeytarWarning = true;\n console.warn(`[credentials] ${keytarUnavailableMessage()}`);\n }\n return null;\n });\n }\n\n return keytarPromise;\n}\n\nasync function requireKeytar(): Promise<KeytarModule> {\n const keytar = await loadKeytar();\n if (!keytar) {\n throw new Error(keytarUnavailableMessage());\n }\n return keytar;\n}\n\nfunction generateId(): string {\n return `${Date.now()}-${Math.random().toString(36).slice(2, 9)}`;\n}\n\nfunction normalizeGitLabServerUrl(serverUrl: string): string {\n return serverUrl.trim().replace(/\\/$/, '');\n}\n\nfunction getDefaultKeytarAccount(id: string): string {\n return `credential-${id}`;\n}\n\nfunction getLegacyKeytarAccount(type: CredentialType): string {\n return `credential-${type}`;\n}\n\nfunction getKeytarAccountForMetadata(metadata: CredentialMetadata): string {\n return metadata.keytarAccount || getDefaultKeytarAccount(metadata.id);\n}\n\nfunction toCredential(metadata: CredentialMetadata): Credential {\n if (metadata.type === 'gitlab') {\n return {\n id: metadata.id,\n type: 'gitlab',\n username: metadata.username,\n serverUrl: metadata.serverUrl || 'https://gitlab.com',\n createdAt: metadata.createdAt,\n updatedAt: metadata.updatedAt,\n };\n }\n\n return {\n id: metadata.id,\n type: 'github',\n username: metadata.username,\n createdAt: metadata.createdAt,\n updatedAt: metadata.updatedAt,\n };\n}\n\nasync function getCredentialsFilePath(): Promise<string> {\n const vibaDir = path.join(os.homedir(), '.viba');\n await fs.mkdir(vibaDir, { recursive: true });\n return path.join(vibaDir, CREDENTIALS_FILE_NAME);\n}\n\nfunction isLegacyCredentialMetadata(value: unknown, expectedType: CredentialType): value is LegacyCredentialMetadata {\n if (!value || typeof value !== 'object') return false;\n\n const candidate = value as Record<string, unknown>;\n if (candidate.type !== expectedType) return false;\n if (typeof candidate.username !== 'string') return false;\n if (typeof candidate.createdAt !== 'string') return false;\n if (typeof candidate.updatedAt !== 'string') return false;\n\n if (expectedType === 'gitlab') {\n return typeof candidate.serverUrl === 'string';\n }\n\n return true;\n}\n\nfunction isCredentialMetadata(value: unknown): value is CredentialMetadata {\n if (!value || typeof value !== 'object') return false;\n\n const candidate = value as Record<string, unknown>;\n if (typeof candidate.id !== 'string' || !candidate.id.trim()) return false;\n if (candidate.type !== 'github' && candidate.type !== 'gitlab') return false;\n if (typeof candidate.username !== 'string') return false;\n if (typeof candidate.createdAt !== 'string') return false;\n if (typeof candidate.updatedAt !== 'string') return false;\n if (candidate.keytarAccount !== undefined && typeof candidate.keytarAccount !== 'string') return false;\n\n if (candidate.type === 'gitlab') {\n return typeof candidate.serverUrl === 'string';\n }\n\n return true;\n}\n\nasync function writeCredentialsMetadata(metadata: CredentialMetadata[]): Promise<void> {\n const credentialsFilePath = await getCredentialsFilePath();\n await fs.writeFile(credentialsFilePath, JSON.stringify(metadata, null, 2), 'utf-8');\n}\n\nasync function readCredentialsMetadata(): Promise<CredentialMetadata[]> {\n const credentialsFilePath = await getCredentialsFilePath();\n\n try {\n const content = await fs.readFile(credentialsFilePath, 'utf-8');\n const parsed = JSON.parse(content) as unknown;\n\n if (Array.isArray(parsed)) {\n return parsed.filter(isCredentialMetadata);\n }\n\n if (!parsed || typeof parsed !== 'object') {\n return [];\n }\n\n const legacyMapped = parsed as Record<string, unknown>;\n const migrated: CredentialMetadata[] = [];\n\n if (isLegacyCredentialMetadata(legacyMapped.github, 'github')) {\n const metadata = legacyMapped.github;\n migrated.push({\n id: generateId(),\n type: 'github',\n username: metadata.username,\n createdAt: metadata.createdAt,\n updatedAt: metadata.updatedAt,\n keytarAccount: getLegacyKeytarAccount('github'),\n });\n }\n\n if (isLegacyCredentialMetadata(legacyMapped.gitlab, 'gitlab')) {\n const metadata = legacyMapped.gitlab;\n migrated.push({\n id: generateId(),\n type: 'gitlab',\n username: metadata.username,\n serverUrl: metadata.serverUrl,\n createdAt: metadata.createdAt,\n updatedAt: metadata.updatedAt,\n keytarAccount: getLegacyKeytarAccount('gitlab'),\n });\n }\n\n if (migrated.length > 0) {\n await writeCredentialsMetadata(migrated);\n }\n\n return migrated;\n } catch (error) {\n if ((error as NodeJS.ErrnoException)?.code === 'ENOENT') {\n return [];\n }\n\n console.error('Failed to parse credentials metadata:', error);\n return [];\n }\n}\n\nexport async function getAllCredentials(): Promise<Credential[]> {\n const metadata = await readCredentialsMetadata();\n\n return metadata\n .map(toCredential)\n .sort((a, b) => b.updatedAt.localeCompare(a.updatedAt));\n}\n\nexport async function getCredentialById(id: string): Promise<Credential | null> {\n const metadata = await readCredentialsMetadata();\n const found = metadata.find((credential) => credential.id === id);\n return found ? toCredential(found) : null;\n}\n\nexport async function getCredentialToken(id: string): Promise<string | null> {\n const metadata = await readCredentialsMetadata();\n const found = metadata.find((credential) => credential.id === id);\n if (!found) {\n return null;\n }\n\n const keytar = await loadKeytar();\n if (!keytar) {\n return null;\n }\n\n return keytar.getPassword(SERVICE_NAME, getKeytarAccountForMetadata(found));\n}\n\nasync function verifyGitHubToken(token: string): Promise<{ valid: boolean; username?: string; error?: string }> {\n try {\n const response = await fetch('https://api.github.com/user', {\n headers: {\n Authorization: `Bearer ${token}`,\n Accept: 'application/vnd.github+json',\n 'X-GitHub-Api-Version': '2022-11-28',\n },\n });\n\n if (!response.ok) {\n if (response.status === 401) {\n return { valid: false, error: 'Invalid or expired GitHub token.' };\n }\n return { valid: false, error: `GitHub API returned ${response.status}.` };\n }\n\n const data = await response.json();\n const username = typeof data?.login === 'string' ? data.login : null;\n if (!username) {\n return { valid: false, error: 'GitHub API response did not include a username.' };\n }\n\n return { valid: true, username };\n } catch (error) {\n return { valid: false, error: `Failed to verify GitHub token: ${(error as Error).message}` };\n }\n}\n\nasync function verifyGitLabToken(serverUrl: string, token: string): Promise<{ valid: boolean; username?: string; error?: string }> {\n try {\n const normalizedUrl = normalizeGitLabServerUrl(serverUrl);\n const response = await fetch(`${normalizedUrl}/api/v4/user`, {\n headers: {\n 'PRIVATE-TOKEN': token,\n },\n });\n\n if (!response.ok) {\n if (response.status === 401) {\n return { valid: false, error: 'Invalid or expired GitLab token.' };\n }\n return { valid: false, error: `GitLab API returned ${response.status}.` };\n }\n\n const data = await response.json();\n const username = typeof data?.username === 'string' ? data.username : null;\n if (!username) {\n return { valid: false, error: 'GitLab API response did not include a username.' };\n }\n\n return { valid: true, username };\n } catch (error) {\n return { valid: false, error: `Failed to verify GitLab token: ${(error as Error).message}` };\n }\n}\n\nexport async function createGitHubCredential(token: string): Promise<{ success: boolean; credential?: GitHubCredential; error?: string }> {\n const trimmedToken = token.trim();\n if (!trimmedToken) {\n return { success: false, error: 'GitHub token is required.' };\n }\n\n let keytar: KeytarModule;\n try {\n keytar = await requireKeytar();\n } catch (error) {\n return { success: false, error: (error as Error).message };\n }\n\n const verification = await verifyGitHubToken(trimmedToken);\n if (!verification.valid || !verification.username) {\n return { success: false, error: verification.error || 'Failed to verify GitHub token.' };\n }\n\n const metadata = await readCredentialsMetadata();\n const duplicate = metadata.find((credential) => (\n credential.type === 'github'\n && credential.username === verification.username\n ));\n\n if (duplicate) {\n return { success: false, error: `A GitHub credential for ${verification.username} already exists.` };\n }\n\n const id = generateId();\n const now = new Date().toISOString();\n const keytarAccount = getDefaultKeytarAccount(id);\n\n await keytar.setPassword(SERVICE_NAME, keytarAccount, trimmedToken);\n\n const created: CredentialMetadata = {\n id,\n type: 'github',\n username: verification.username,\n createdAt: now,\n updatedAt: now,\n keytarAccount,\n };\n\n metadata.push(created);\n await writeCredentialsMetadata(metadata);\n\n return {\n success: true,\n credential: {\n id: created.id,\n type: 'github',\n username: created.username,\n createdAt: created.createdAt,\n updatedAt: created.updatedAt,\n },\n };\n}\n\nexport async function createGitLabCredential(\n serverUrl: string,\n token: string,\n): Promise<{ success: boolean; credential?: GitLabCredential; error?: string }> {\n const normalizedServerUrl = normalizeGitLabServerUrl(serverUrl);\n const trimmedToken = token.trim();\n\n if (!normalizedServerUrl) {\n return { success: false, error: 'GitLab server URL is required.' };\n }\n\n try {\n new URL(normalizedServerUrl);\n } catch {\n return { success: false, error: 'GitLab server URL must be a valid URL.' };\n }\n\n if (!trimmedToken) {\n return { success: false, error: 'GitLab token is required.' };\n }\n\n let keytar: KeytarModule;\n try {\n keytar = await requireKeytar();\n } catch (error) {\n return { success: false, error: (error as Error).message };\n }\n\n const verification = await verifyGitLabToken(normalizedServerUrl, trimmedToken);\n if (!verification.valid || !verification.username) {\n return { success: false, error: verification.error || 'Failed to verify GitLab token.' };\n }\n\n const metadata = await readCredentialsMetadata();\n const duplicate = metadata.find((credential) => (\n credential.type === 'gitlab'\n && credential.username === verification.username\n && credential.serverUrl === normalizedServerUrl\n ));\n\n if (duplicate) {\n return {\n success: false,\n error: `A GitLab credential for ${verification.username} on ${normalizedServerUrl} already exists.`,\n };\n }\n\n const id = generateId();\n const now = new Date().toISOString();\n const keytarAccount = getDefaultKeytarAccount(id);\n\n await keytar.setPassword(SERVICE_NAME, keytarAccount, trimmedToken);\n\n const created: CredentialMetadata = {\n id,\n type: 'gitlab',\n username: verification.username,\n serverUrl: normalizedServerUrl,\n createdAt: now,\n updatedAt: now,\n keytarAccount,\n };\n\n metadata.push(created);\n await writeCredentialsMetadata(metadata);\n\n return {\n success: true,\n credential: {\n id: created.id,\n type: 'gitlab',\n username: created.username,\n serverUrl: created.serverUrl || normalizedServerUrl,\n createdAt: created.createdAt,\n updatedAt: created.updatedAt,\n },\n };\n}\n\nexport async function deleteCredential(id: string): Promise<{ success: boolean; error?: string }> {\n const metadata = await readCredentialsMetadata();\n const index = metadata.findIndex((credential) => credential.id === id);\n\n if (index === -1) {\n return { success: false, error: 'Credential not found.' };\n }\n\n const credential = metadata[index];\n metadata.splice(index, 1);\n await writeCredentialsMetadata(metadata);\n\n const keytar = await loadKeytar();\n if (keytar) {\n await keytar.deletePassword(SERVICE_NAME, getKeytarAccountForMetadata(credential));\n }\n\n return { success: true };\n}\n\nexport async function updateCredential(id: string, token: string): Promise<{ success: boolean; credential?: Credential; error?: string }> {\n const trimmedToken = token.trim();\n if (!trimmedToken) {\n return { success: false, error: 'Token is required.' };\n }\n\n let keytar: KeytarModule;\n try {\n keytar = await requireKeytar();\n } catch (error) {\n return { success: false, error: (error as Error).message };\n }\n\n const metadata = await readCredentialsMetadata();\n const index = metadata.findIndex((c) => c.id === id);\n\n if (index === -1) {\n return { success: false, error: 'Credential not found' };\n }\n\n const existing = metadata[index];\n\n // Verify the new token\n let verification;\n if (existing.type === 'github') {\n verification = await verifyGitHubToken(trimmedToken);\n } else {\n verification = await verifyGitLabToken(existing.serverUrl || 'https://gitlab.com', trimmedToken);\n }\n\n if (!verification.valid || !verification.username) {\n return { success: false, error: verification.error || 'Failed to verify token' };\n }\n\n // Update token in keytar\n await keytar.setPassword(SERVICE_NAME, getKeytarAccountForMetadata(existing), trimmedToken);\n\n // Update metadata\n const now = new Date().toISOString();\n metadata[index] = {\n ...existing,\n username: verification.username,\n updatedAt: now,\n };\n await writeCredentialsMetadata(metadata);\n\n return {\n success: true,\n credential: toCredential(metadata[index]),\n };\n}\n\nexport async function findCredentialForRemote(remoteUrl: string): Promise<{ credential: Credential; token: string } | null> {\n const credentials = await getAllCredentials();\n\n // Check if it's a GitHub URL\n if (remoteUrl.includes('github.com')) {\n const githubCred = credentials.find((c) => c.type === 'github');\n if (githubCred) {\n const token = await getCredentialToken(githubCred.id);\n if (token) {\n return { credential: githubCred, token };\n }\n }\n }\n\n // Check GitLab servers\n for (const cred of credentials) {\n if (cred.type === 'gitlab') {\n // Extract host from remote URL\n let host: string;\n try {\n if (remoteUrl.startsWith('git@')) {\n // SSH URL: git@gitlab.com:user/repo.git\n host = remoteUrl.split('@')[1].split(':')[0];\n } else {\n // HTTP URL\n host = new URL(remoteUrl).host;\n }\n } catch {\n continue;\n }\n\n // Check if the credential's server URL matches\n const credHost = new URL(cred.serverUrl).host;\n if (host === credHost) {\n const token = await getCredentialToken(cred.id);\n if (token) {\n return { credential: cred, token };\n }\n }\n }\n }\n\n return null;\n}\n\n","import fs from 'fs/promises';\nimport os from 'os';\nimport path from 'path';\n\nconst SERVICE_NAME = 'viba-agent-api-credentials';\nconst CONFIGS_FILE_NAME = 'agent-api-configs.json';\nconst SUPPORTED_AGENT_APIS = ['codex'] as const;\n\nexport type AgentApiCredentialAgent = typeof SUPPORTED_AGENT_APIS[number];\n\nexport interface AgentApiCredential {\n agent: AgentApiCredentialAgent;\n apiProxy?: string;\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface AgentApiCredentialSecret {\n agent: AgentApiCredentialAgent;\n apiKey: string;\n apiProxy?: string;\n}\n\ntype AgentApiCredentialMetadata = {\n agent: AgentApiCredentialAgent;\n apiProxy?: string;\n createdAt: string;\n updatedAt: string;\n keytarAccount?: string;\n};\n\ntype KeytarModule = {\n getPassword(service: string, account: string): Promise<string | null>;\n setPassword(service: string, account: string, password: string): Promise<void>;\n deletePassword(service: string, account: string): Promise<boolean>;\n};\n\nlet keytarPromise: Promise<KeytarModule | null> | null = null;\nlet keytarUnavailableReason: string | null = null;\nlet didLogKeytarWarning = false;\n\nfunction isSupportedAgentApi(value: string): value is AgentApiCredentialAgent {\n return SUPPORTED_AGENT_APIS.includes(value as AgentApiCredentialAgent);\n}\n\nfunction keytarUnavailableMessage(): string {\n if (keytarUnavailableReason) {\n return `Secure credential storage is unavailable: ${keytarUnavailableReason}`;\n }\n return 'Secure credential storage is unavailable in this runtime.';\n}\n\nasync function loadKeytar(): Promise<KeytarModule | null> {\n if (!keytarPromise) {\n keytarPromise = import('keytar')\n .then((module) => (module.default ?? module) as KeytarModule)\n .catch((error: unknown) => {\n keytarUnavailableReason = error instanceof Error ? error.message : String(error);\n if (!didLogKeytarWarning) {\n didLogKeytarWarning = true;\n console.warn(`[agent-api-credentials] ${keytarUnavailableMessage()}`);\n }\n return null;\n });\n }\n\n return keytarPromise;\n}\n\nasync function requireKeytar(): Promise<KeytarModule> {\n const keytar = await loadKeytar();\n if (!keytar) {\n throw new Error(keytarUnavailableMessage());\n }\n return keytar;\n}\n\nfunction getDefaultKeytarAccount(agent: AgentApiCredentialAgent): string {\n return `agent-api-${agent}`;\n}\n\nfunction getKeytarAccountForMetadata(metadata: AgentApiCredentialMetadata): string {\n return metadata.keytarAccount || getDefaultKeytarAccount(metadata.agent);\n}\n\nfunction normalizeApiProxy(apiProxy: string): string | undefined {\n const trimmed = apiProxy.trim();\n if (!trimmed) return undefined;\n\n try {\n // Validate and persist as-entered once it is a valid URL.\n new URL(trimmed);\n } catch {\n throw new Error('API proxy must be a valid URL.');\n }\n\n return trimmed;\n}\n\nfunction toAgentApiCredential(metadata: AgentApiCredentialMetadata): AgentApiCredential {\n return {\n agent: metadata.agent,\n apiProxy: metadata.apiProxy,\n createdAt: metadata.createdAt,\n updatedAt: metadata.updatedAt,\n };\n}\n\nfunction isAgentApiCredentialMetadata(value: unknown): value is AgentApiCredentialMetadata {\n if (!value || typeof value !== 'object') return false;\n\n const candidate = value as Record<string, unknown>;\n if (typeof candidate.agent !== 'string' || !isSupportedAgentApi(candidate.agent)) return false;\n if (typeof candidate.createdAt !== 'string') return false;\n if (typeof candidate.updatedAt !== 'string') return false;\n if (candidate.apiProxy !== undefined && typeof candidate.apiProxy !== 'string') return false;\n if (candidate.keytarAccount !== undefined && typeof candidate.keytarAccount !== 'string') return false;\n\n return true;\n}\n\nasync function getConfigsFilePath(): Promise<string> {\n const vibaDir = path.join(os.homedir(), '.viba');\n await fs.mkdir(vibaDir, { recursive: true });\n return path.join(vibaDir, CONFIGS_FILE_NAME);\n}\n\nasync function writeAgentApiCredentialMetadata(metadata: AgentApiCredentialMetadata[]): Promise<void> {\n const configsFilePath = await getConfigsFilePath();\n await fs.writeFile(configsFilePath, JSON.stringify(metadata, null, 2), 'utf-8');\n}\n\nasync function readAgentApiCredentialMetadata(): Promise<AgentApiCredentialMetadata[]> {\n const configsFilePath = await getConfigsFilePath();\n\n try {\n const content = await fs.readFile(configsFilePath, 'utf-8');\n const parsed = JSON.parse(content) as unknown;\n\n if (Array.isArray(parsed)) {\n return parsed.filter(isAgentApiCredentialMetadata);\n }\n\n if (!parsed || typeof parsed !== 'object') {\n return [];\n }\n\n // Legacy map shape: { codex: { ... }, ... }\n const entries = Object.entries(parsed as Record<string, unknown>);\n const migrated = entries\n .filter(([agent]) => isSupportedAgentApi(agent))\n .map(([agent, value]) => {\n if (!value || typeof value !== 'object') return null;\n const candidate = value as Record<string, unknown>;\n if (candidate.agent === undefined) {\n return {\n ...candidate,\n agent,\n } as unknown;\n }\n return candidate;\n })\n .filter(isAgentApiCredentialMetadata);\n\n if (migrated.length > 0) {\n await writeAgentApiCredentialMetadata(migrated);\n }\n\n return migrated;\n } catch (error) {\n if ((error as NodeJS.ErrnoException)?.code === 'ENOENT') {\n return [];\n }\n\n console.error('Failed to parse agent API credential metadata:', error);\n return [];\n }\n}\n\nexport async function getAllAgentApiCredentials(): Promise<AgentApiCredential[]> {\n const metadata = await readAgentApiCredentialMetadata();\n return metadata\n .map(toAgentApiCredential)\n .sort((a, b) => b.updatedAt.localeCompare(a.updatedAt));\n}\n\nexport async function createOrUpdateAgentApiCredential(\n agent: AgentApiCredentialAgent,\n apiKey: string,\n apiProxy: string,\n): Promise<{ success: boolean; credential?: AgentApiCredential; error?: string }> {\n if (!isSupportedAgentApi(agent)) {\n return { success: false, error: `Unsupported agent: ${agent}` };\n }\n\n const trimmedApiKey = apiKey.trim();\n if (!trimmedApiKey) {\n return { success: false, error: 'API key is required.' };\n }\n\n let normalizedApiProxy: string | undefined;\n try {\n normalizedApiProxy = normalizeApiProxy(apiProxy);\n } catch (error) {\n return { success: false, error: (error as Error).message };\n }\n\n let keytar: KeytarModule;\n try {\n keytar = await requireKeytar();\n } catch (error) {\n return { success: false, error: (error as Error).message };\n }\n\n const metadata = await readAgentApiCredentialMetadata();\n const now = new Date().toISOString();\n const index = metadata.findIndex((credential) => credential.agent === agent);\n const keytarAccount = index >= 0\n ? getKeytarAccountForMetadata(metadata[index])\n : getDefaultKeytarAccount(agent);\n\n await keytar.setPassword(SERVICE_NAME, keytarAccount, trimmedApiKey);\n\n if (index >= 0) {\n const existing = metadata[index];\n metadata[index] = {\n ...existing,\n apiProxy: normalizedApiProxy,\n updatedAt: now,\n keytarAccount,\n };\n } else {\n metadata.push({\n agent,\n apiProxy: normalizedApiProxy,\n createdAt: now,\n updatedAt: now,\n keytarAccount,\n });\n }\n\n await writeAgentApiCredentialMetadata(metadata);\n\n const saved = metadata.find((credential) => credential.agent === agent);\n if (!saved) {\n return { success: false, error: 'Failed to persist agent API credential.' };\n }\n\n return { success: true, credential: toAgentApiCredential(saved) };\n}\n\nexport async function deleteAgentApiCredential(\n agent: AgentApiCredentialAgent,\n): Promise<{ success: boolean; error?: string }> {\n if (!isSupportedAgentApi(agent)) {\n return { success: false, error: `Unsupported agent: ${agent}` };\n }\n\n const metadata = await readAgentApiCredentialMetadata();\n const index = metadata.findIndex((credential) => credential.agent === agent);\n if (index === -1) {\n return { success: false, error: 'Agent API credential not found.' };\n }\n\n const [removed] = metadata.splice(index, 1);\n await writeAgentApiCredentialMetadata(metadata);\n\n const keytar = await loadKeytar();\n if (keytar) {\n await keytar.deletePassword(SERVICE_NAME, getKeytarAccountForMetadata(removed));\n }\n\n return { success: true };\n}\n\nexport async function getAgentApiCredentialSecret(\n agent: AgentApiCredentialAgent,\n): Promise<AgentApiCredentialSecret | null> {\n if (!isSupportedAgentApi(agent)) {\n return null;\n }\n\n const metadata = await readAgentApiCredentialMetadata();\n const found = metadata.find((credential) => credential.agent === agent);\n if (!found) {\n return null;\n }\n\n const keytar = await loadKeytar();\n if (!keytar) {\n return null;\n }\n\n const apiKey = await keytar.getPassword(SERVICE_NAME, getKeytarAccountForMetadata(found));\n if (!apiKey) {\n return null;\n }\n\n return {\n agent: found.agent,\n apiKey,\n apiProxy: found.apiProxy,\n };\n}\n","// This function ensures that all the exported values are valid server actions,\n// during the runtime. By definition all actions are required to be async\n// functions, but here we can only check that they are functions.\nexport function ensureServerEntryExports(actions: any[]) {\n for (let i = 0; i < actions.length; i++) {\n const action = actions[i]\n if (typeof action !== 'function') {\n throw new Error(\n `A \"use server\" file can only export async functions, found ${typeof action}.\\nRead more: https://nextjs.org/docs/messages/invalid-use-server-value`\n )\n }\n }\n}\n","'use server';\n\nimport {\n createGitHubCredential,\n createGitLabCredential,\n deleteCredential,\n getAllCredentials,\n} from '@/lib/credentials';\nimport type { Credential } from '@/lib/credentials';\nimport {\n createOrUpdateAgentApiCredential,\n deleteAgentApiCredential,\n getAllAgentApiCredentials,\n} from '@/lib/agent-api-credentials';\nimport type {\n AgentApiCredential,\n AgentApiCredentialAgent,\n} from '@/lib/agent-api-credentials';\n\ntype ListCredentialsResult =\n | { success: true; credentials: Credential[] }\n | { success: false; error: string };\n\nexport async function listCredentials(): Promise<ListCredentialsResult> {\n try {\n const credentials = await getAllCredentials();\n return { success: true, credentials };\n } catch (error) {\n console.error('Failed to list credentials:', error);\n return { success: false, error: 'Failed to load credentials.' };\n }\n}\n\ntype SaveCredentialResult =\n | { success: true; credential: Credential }\n | { success: false; error: string };\n\nexport async function saveGitHubCredential(token: string): Promise<SaveCredentialResult> {\n const result = await createGitHubCredential(token);\n if (!result.success || !result.credential) {\n return { success: false, error: result.error || 'Failed to save GitHub credential.' };\n }\n\n return { success: true, credential: result.credential };\n}\n\nexport async function saveGitLabCredential(serverUrl: string, token: string): Promise<SaveCredentialResult> {\n const result = await createGitLabCredential(serverUrl, token);\n if (!result.success || !result.credential) {\n return { success: false, error: result.error || 'Failed to save GitLab credential.' };\n }\n\n return { success: true, credential: result.credential };\n}\n\ntype ListAgentApiCredentialsResult =\n | { success: true; credentials: AgentApiCredential[] }\n | { success: false; error: string };\n\nexport async function listAgentApiCredentials(): Promise<ListAgentApiCredentialsResult> {\n try {\n const credentials = await getAllAgentApiCredentials();\n return { success: true, credentials };\n } catch (error) {\n console.error('Failed to list agent API credentials:', error);\n return { success: false, error: 'Failed to load agent API credentials.' };\n }\n}\n\ntype SaveAgentApiCredentialResult =\n | { success: true; credential: AgentApiCredential }\n | { success: false; error: string };\n\nexport async function saveAgentApiCredential(\n agent: AgentApiCredentialAgent,\n apiKey: string,\n apiProxy: string,\n): Promise<SaveAgentApiCredentialResult> {\n const result = await createOrUpdateAgentApiCredential(agent, apiKey, apiProxy);\n if (!result.success || !result.credential) {\n return { success: false, error: result.error || 'Failed to save agent API credential.' };\n }\n\n return { success: true, credential: result.credential };\n}\n\ntype RemoveCredentialResult =\n | { success: true }\n | { success: false; error: string };\n\nexport async function removeCredential(id: string): Promise<RemoveCredentialResult> {\n try {\n const result = await deleteCredential(id);\n if (!result.success) {\n return { success: false, error: result.error || 'Failed to remove credential.' };\n }\n\n return { success: true };\n } catch (error) {\n console.error('Failed to remove credential:', error);\n return { success: false, error: 'Failed to remove credential.' };\n }\n}\n\nexport async function removeAgentApiCredential(agent: AgentApiCredentialAgent): Promise<RemoveCredentialResult> {\n try {\n const result = await deleteAgentApiCredential(agent);\n if (!result.success) {\n return { success: false, error: result.error || 'Failed to remove agent API credential.' };\n }\n\n return { success: true };\n } catch (error) {\n console.error('Failed to remove agent API credential:', error);\n return { success: false, error: 'Failed to remove agent API credential.' };\n }\n}\n"],"names":["registerServerReference","ensureServerEntryExports","actions","i","length","action","Error"],"mappings":"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","ignoreList":[0,3]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
module.exports=[93695,(a,b,c)=>{b.exports=a.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},33715,a=>{a.n(a.i(51123))},89806,a=>{a.n(a.i(13314))},16842,a=>{a.n(a.i(3644))},58228,a=>{a.n(a.i(419))},81190,a=>{a.n(a.i(53918))},31573,a=>{a.n(a.i(39515))},46356,a=>{a.n(a.i(79222))},63939,a=>{a.n(a.i(91125))},90352,a=>{"use strict";a.s(["default",()=>b]);let b=(0,a.i(5672).registerClientReference)(function(){throw Error("Attempted to call the default export of [project]/Downloads/projects/viba/src/app/git/custom-scripts/page.tsx <module evaluation> from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/Downloads/projects/viba/src/app/git/custom-scripts/page.tsx <module evaluation>","default")},87662,a=>{"use strict";a.s(["default",()=>b]);let b=(0,a.i(5672).registerClientReference)(function(){throw Error("Attempted to call the default export of [project]/Downloads/projects/viba/src/app/git/custom-scripts/page.tsx from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/Downloads/projects/viba/src/app/git/custom-scripts/page.tsx","default")},19367,a=>{"use strict";a.i(90352);var b=a.i(87662);a.n(b)}];
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=%5Broot-of-the-server%5D__32a09bd5._.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../../Downloads/projects/viba/src/app/git/custom-scripts/page.tsx/__nextjs-internal-proxy.mjs"],"sourcesContent":["// This file is generated by next-core EcmascriptClientReferenceModule.\nimport { registerClientReference } from \"react-server-dom-turbopack/server\";\nexport default registerClientReference(\n function() { throw new Error(\"Attempted to call the default export of [project]/Downloads/projects/viba/src/app/git/custom-scripts/page.tsx from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.\"); },\n \"[project]/Downloads/projects/viba/src/app/git/custom-scripts/page.tsx\",\n \"default\",\n);\n"],"names":[],"mappings":"gbAEe,CAAA,EAAA,AADf,EAAA,CAAA,CAAA,MACe,uBAAA,AAAuB,EAClC,WAAa,MAAM,AAAI,MAAM,6TAA+T,EAC5V,4FACA,gEAHW,CAAA,EADf,AACe,EADf,CAAA,CAAA,MACe,uBAAA,AAAuB,EAClC,WAAa,MAAM,AAAI,MAAM,ySAA2S,EACxU,wEACA","ignoreList":[0]}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
module.exports=[93695,(a,b,c)=>{b.exports=a.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},54818,(a,b,c)=>{(()=>{"use strict";"u">typeof __nccwpck_require__&&(__nccwpck_require__.ab="/ROOT/Downloads/projects/viba/node_modules/next/dist/compiled/cookie/");var a,c,d,e,f={};f.parse=function(b,c){if("string"!=typeof b)throw TypeError("argument str must be a string");for(var e={},f=b.split(d),g=(c||{}).decode||a,h=0;h<f.length;h++){var i=f[h],j=i.indexOf("=");if(!(j<0)){var k=i.substr(0,j).trim(),l=i.substr(++j,i.length).trim();'"'==l[0]&&(l=l.slice(1,-1)),void 0==e[k]&&(e[k]=function(a,b){try{return b(a)}catch(b){return a}}(l,g))}}return e},f.serialize=function(a,b,d){var f=d||{},g=f.encode||c;if("function"!=typeof g)throw TypeError("option encode is invalid");if(!e.test(a))throw TypeError("argument name is invalid");var h=g(b);if(h&&!e.test(h))throw TypeError("argument val is invalid");var i=a+"="+h;if(null!=f.maxAge){var j=f.maxAge-0;if(isNaN(j)||!isFinite(j))throw TypeError("option maxAge is invalid");i+="; Max-Age="+Math.floor(j)}if(f.domain){if(!e.test(f.domain))throw TypeError("option domain is invalid");i+="; Domain="+f.domain}if(f.path){if(!e.test(f.path))throw TypeError("option path is invalid");i+="; Path="+f.path}if(f.expires){if("function"!=typeof f.expires.toUTCString)throw TypeError("option expires is invalid");i+="; Expires="+f.expires.toUTCString()}if(f.httpOnly&&(i+="; HttpOnly"),f.secure&&(i+="; Secure"),f.sameSite)switch("string"==typeof f.sameSite?f.sameSite.toLowerCase():f.sameSite){case!0:case"strict":i+="; SameSite=Strict";break;case"lax":i+="; SameSite=Lax";break;case"none":i+="; SameSite=None";break;default:throw TypeError("option sameSite is invalid")}return i},a=decodeURIComponent,c=encodeURIComponent,d=/; */,e=/^[\u0009\u0020-\u007e\u0080-\u00ff]+$/,b.exports=f})()},25560,a=>{a.n(a.i(79222))},56419,(a,b,c)=>{"use strict";c._=function(a){return a&&a.__esModule?a:{default:a}}},80886,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"default",{enumerable:!0,get:function(){return k}}),a.r(56419);let d=a.r(7388);a.r(13528);let e={fontFamily:'system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"',height:"100vh",textAlign:"center",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center"},f={lineHeight:"48px"},g={display:"inline-block",margin:"0 20px 0 0",paddingRight:23,fontSize:24,fontWeight:500,verticalAlign:"top"},h={fontSize:14,fontWeight:400,lineHeight:"28px"},i={display:"inline-block"},j=`body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}
|
|
2
|
+
@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}`,k=function(){let a="Internal Server Error.",b=`500: ${a}`;return(0,d.jsxs)("html",{id:"__next_error__",children:[(0,d.jsx)("head",{children:(0,d.jsx)("title",{children:b})}),(0,d.jsx)("body",{children:(0,d.jsx)("div",{style:e,children:(0,d.jsxs)("div",{style:f,children:[(0,d.jsx)("style",{dangerouslySetInnerHTML:{__html:j}}),(0,d.jsx)("h1",{className:"next-error-h1",style:g,children:"500"}),(0,d.jsx)("div",{style:i,children:(0,d.jsx)("h2",{style:h,children:a})})]})})})]})};("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)}];
|
|
3
|
+
|
|
4
|
+
//# sourceMappingURL=%5Broot-of-the-server%5D__34682e2a._.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../../Downloads/projects/viba/node_modules/next/dist/compiled/cookie/index.js","../../../../../../../Downloads/projects/viba/node_modules/%40swc/helpers/cjs/_interop_require_default.cjs","../../../../../../../Downloads/projects/viba/node_modules/next/src/client/components/builtin/app-error.tsx"],"sourcesContent":["(()=>{\"use strict\";if(typeof __nccwpck_require__!==\"undefined\")__nccwpck_require__.ab=__dirname+\"/\";var e={};(()=>{var r=e;\n/*!\n * cookie\n * Copyright(c) 2012-2014 Roman Shtylman\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */r.parse=parse;r.serialize=serialize;var i=decodeURIComponent;var t=encodeURIComponent;var a=/; */;var n=/^[\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+$/;function parse(e,r){if(typeof e!==\"string\"){throw new TypeError(\"argument str must be a string\")}var t={};var n=r||{};var o=e.split(a);var s=n.decode||i;for(var p=0;p<o.length;p++){var f=o[p];var u=f.indexOf(\"=\");if(u<0){continue}var v=f.substr(0,u).trim();var c=f.substr(++u,f.length).trim();if('\"'==c[0]){c=c.slice(1,-1)}if(undefined==t[v]){t[v]=tryDecode(c,s)}}return t}function serialize(e,r,i){var a=i||{};var o=a.encode||t;if(typeof o!==\"function\"){throw new TypeError(\"option encode is invalid\")}if(!n.test(e)){throw new TypeError(\"argument name is invalid\")}var s=o(r);if(s&&!n.test(s)){throw new TypeError(\"argument val is invalid\")}var p=e+\"=\"+s;if(null!=a.maxAge){var f=a.maxAge-0;if(isNaN(f)||!isFinite(f)){throw new TypeError(\"option maxAge is invalid\")}p+=\"; Max-Age=\"+Math.floor(f)}if(a.domain){if(!n.test(a.domain)){throw new TypeError(\"option domain is invalid\")}p+=\"; Domain=\"+a.domain}if(a.path){if(!n.test(a.path)){throw new TypeError(\"option path is invalid\")}p+=\"; Path=\"+a.path}if(a.expires){if(typeof a.expires.toUTCString!==\"function\"){throw new TypeError(\"option expires is invalid\")}p+=\"; Expires=\"+a.expires.toUTCString()}if(a.httpOnly){p+=\"; HttpOnly\"}if(a.secure){p+=\"; Secure\"}if(a.sameSite){var u=typeof a.sameSite===\"string\"?a.sameSite.toLowerCase():a.sameSite;switch(u){case true:p+=\"; SameSite=Strict\";break;case\"lax\":p+=\"; SameSite=Lax\";break;case\"strict\":p+=\"; SameSite=Strict\";break;case\"none\":p+=\"; SameSite=None\";break;default:throw new TypeError(\"option sameSite is invalid\")}}return p}function tryDecode(e,r){try{return r(e)}catch(r){return e}}})();module.exports=e})();","\"use strict\";\n\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n}\nexports._ = _interop_require_default;\n","import React from 'react'\n\nconst styles: Record<string, React.CSSProperties> = {\n error: {\n // https://github.com/sindresorhus/modern-normalize/blob/main/modern-normalize.css#L38-L52\n fontFamily:\n 'system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"',\n height: '100vh',\n textAlign: 'center',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n },\n desc: {\n lineHeight: '48px',\n },\n h1: {\n display: 'inline-block',\n margin: '0 20px 0 0',\n paddingRight: 23,\n fontSize: 24,\n fontWeight: 500,\n verticalAlign: 'top',\n },\n h2: {\n fontSize: 14,\n fontWeight: 400,\n lineHeight: '28px',\n },\n wrap: {\n display: 'inline-block',\n },\n} as const\n\n/* CSS minified from\nbody { margin: 0; color: #000; background: #fff; }\n.next-error-h1 {\n border-right: 1px solid rgba(0, 0, 0, .3);\n}\n@media (prefers-color-scheme: dark) {\n body { color: #fff; background: #000; }\n .next-error-h1 {\n border-right: 1px solid rgba(255, 255, 255, .3);\n }\n}\n*/\nconst themeCss = `body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}\n@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}`\n\nfunction AppError() {\n const errorMessage = 'Internal Server Error.'\n const title = `500: ${errorMessage}`\n return (\n <html id=\"__next_error__\">\n <head>\n <title>{title}</title>\n </head>\n <body>\n <div style={styles.error}>\n <div style={styles.desc}>\n <style\n dangerouslySetInnerHTML={{\n __html: themeCss,\n }}\n />\n <h1 className=\"next-error-h1\" style={styles.h1}>\n 500\n </h1>\n <div style={styles.wrap}>\n <h2 style={styles.h2}>{errorMessage}</h2>\n </div>\n </div>\n </div>\n </body>\n </html>\n )\n}\n\nexport default AppError\n"],"names":["styles","error","fontFamily","height","textAlign","display","flexDirection","alignItems","justifyContent","desc","lineHeight","h1","margin","paddingRight","fontSize","fontWeight","verticalAlign","h2","wrap","themeCss","AppError","errorMessage","title","html","id","head","body","div","style","dangerouslySetInnerHTML","__html","className"],"mappings":"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","ignoreList":[0,1,2]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
module.exports=[93695,(a,b,c)=>{b.exports=a.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},33715,a=>{a.n(a.i(51123))},89806,a=>{a.n(a.i(13314))},16842,a=>{a.n(a.i(3644))},58228,a=>{a.n(a.i(419))},81190,a=>{a.n(a.i(53918))},31573,a=>{a.n(a.i(39515))},25560,a=>{a.n(a.i(79222))},39515,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"default",{enumerable:!0,get:function(){return f}});let d=a.r(7388),e=a.r(66937);function f(){return(0,d.jsx)(e.HTTPAccessErrorFallback,{status:401,message:"You're not authorized to access this page."})}("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)}];
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=%5Broot-of-the-server%5D__3e589204._.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../../Downloads/projects/viba/node_modules/next/src/client/components/builtin/unauthorized.tsx"],"sourcesContent":["import { HTTPAccessErrorFallback } from '../http-access-fallback/error-fallback'\n\nexport default function Unauthorized() {\n return (\n <HTTPAccessErrorFallback\n status={401}\n message=\"You're not authorized to access this page.\"\n />\n )\n}\n"],"names":["Unauthorized","HTTPAccessErrorFallback","status","message"],"mappings":"ucAEA,UAAA,qCAAwBA,yBAFgB,CAAA,CAAA,IAAA,GAEzB,SAASA,IACtB,MACE,CADF,EACE,EAAA,GAAA,EAACC,EADH,AACGA,uBAAuB,CAAA,CACtBC,OAAQ,IACRC,QAAQ,8CAGd","ignoreList":[0]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
module.exports=[46786,(a,b,c)=>{b.exports=a.x("os",()=>require("os"))},22734,(a,b,c)=>{b.exports=a.x("fs",()=>require("fs"))},82162,a=>{"use strict";a.s(["Sidebar",()=>b]);let b=(0,a.i(5672).registerClientReference)(function(){throw Error("Attempted to call Sidebar() from the server but Sidebar is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/Downloads/projects/viba/src/components/layout/sidebar.tsx <module evaluation>","Sidebar")},12139,a=>{"use strict";a.s(["Sidebar",()=>b]);let b=(0,a.i(5672).registerClientReference)(function(){throw Error("Attempted to call Sidebar() from the server but Sidebar is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/Downloads/projects/viba/src/components/layout/sidebar.tsx","Sidebar")},77855,a=>{"use strict";a.i(82162);var b=a.i(12139);a.n(b)},6556,a=>{"use strict";a.s(["WorkspaceRepoOpenTracker",()=>b]);let b=(0,a.i(5672).registerClientReference)(function(){throw Error("Attempted to call WorkspaceRepoOpenTracker() from the server but WorkspaceRepoOpenTracker is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/Downloads/projects/viba/src/components/workspace-repo-open-tracker.tsx <module evaluation>","WorkspaceRepoOpenTracker")},54087,a=>{"use strict";a.s(["WorkspaceRepoOpenTracker",()=>b]);let b=(0,a.i(5672).registerClientReference)(function(){throw Error("Attempted to call WorkspaceRepoOpenTracker() from the server but WorkspaceRepoOpenTracker is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/Downloads/projects/viba/src/components/workspace-repo-open-tracker.tsx","WorkspaceRepoOpenTracker")},78549,a=>{"use strict";a.i(6556);var b=a.i(54087);a.n(b)},91125,a=>{"use strict";let b;var c=a.i(7388),d=a.i(77855),e=a.i(13528),f=a.i(78549),g=a.i(22734),h=a.i(46786),i=a.i(14747);let j=(process.platform,b=h.default.homedir(),i.default.join(b,"Library","Application Support","trident"));i.default.join(j,"repos.json"),g.default.existsSync(j)||g.default.mkdirSync(j,{recursive:!0});let k=i.default.join(j,"settings.json");function l({children:a}){let b=function(){let a={defaultRootFolder:null,sidebarCollapsed:!1};if(!g.default.existsSync(k))return a;try{let b=g.default.readFileSync(k,"utf-8"),c=JSON.parse(b);return{...a,...c}}catch(b){return console.error("Failed to parse settings.json",b),a}}().sidebarCollapsed??!1;return(0,c.jsxs)("div",{className:"flex h-screen gap-2 bg-slate-100/80 p-2 dark:bg-slate-950 sm:p-3",children:[(0,c.jsx)(e.Suspense,{fallback:null,children:(0,c.jsx)(f.WorkspaceRepoOpenTracker,{})}),(0,c.jsx)(e.Suspense,{fallback:(0,c.jsx)("div",{className:`${b?"w-16":"w-64"} overflow-hidden rounded-xl border border-slate-200 bg-white dark:border-slate-800 dark:bg-slate-900 flex items-center justify-center`,children:(0,c.jsx)("span",{className:"loading loading-spinner"})}),children:(0,c.jsx)("div",{className:"overflow-hidden rounded-xl border border-slate-200 bg-white dark:border-slate-800 dark:bg-slate-900",children:(0,c.jsx)(d.Sidebar,{initialCollapsed:b,className:"border-r-0 bg-transparent min-h-full"})})}),(0,c.jsx)("main",{className:"flex-1 min-w-0 overflow-auto",children:a})]})}a.s(["default",()=>l],91125)}];
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=%5Broot-of-the-server%5D__477bb0b6._.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../../Downloads/projects/viba/src/components/layout/sidebar.tsx/__nextjs-internal-proxy.mjs","../../../../../../../Downloads/projects/viba/src/components/workspace-repo-open-tracker.tsx/__nextjs-internal-proxy.mjs","../../../../../../../Downloads/projects/viba/src/app/git/layout.tsx","../../../../../../../Downloads/projects/viba/src/lib/store.ts","../../../../../../../Downloads/projects/viba/src/lib/platform-utils.ts"],"sourcesContent":["// This file is generated by next-core EcmascriptClientReferenceModule.\nimport { registerClientReference } from \"react-server-dom-turbopack/server\";\nexport const Sidebar = registerClientReference(\n function() { throw new Error(\"Attempted to call Sidebar() from the server but Sidebar is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.\"); },\n \"[project]/Downloads/projects/viba/src/components/layout/sidebar.tsx\",\n \"Sidebar\",\n);\n","// This file is generated by next-core EcmascriptClientReferenceModule.\nimport { registerClientReference } from \"react-server-dom-turbopack/server\";\nexport const WorkspaceRepoOpenTracker = registerClientReference(\n function() { throw new Error(\"Attempted to call WorkspaceRepoOpenTracker() from the server but WorkspaceRepoOpenTracker is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.\"); },\n \"[project]/Downloads/projects/viba/src/components/workspace-repo-open-tracker.tsx\",\n \"WorkspaceRepoOpenTracker\",\n);\n","import { Sidebar } from '@/components/layout/sidebar';\nimport { Suspense } from 'react';\nimport { WorkspaceRepoOpenTracker } from '@/components/workspace-repo-open-tracker';\nimport { getSettings } from '@/lib/store';\n\nexport default function WorkspaceLayout({\n children,\n}: {\n children: React.ReactNode;\n}) {\n const sidebarCollapsed = getSettings().sidebarCollapsed ?? false;\n\n return (\n <div className=\"flex h-screen gap-2 bg-slate-100/80 p-2 dark:bg-slate-950 sm:p-3\">\n <Suspense fallback={null}>\n <WorkspaceRepoOpenTracker />\n </Suspense>\n <Suspense fallback={<div className={`${sidebarCollapsed ? 'w-16' : 'w-64'} overflow-hidden rounded-xl border border-slate-200 bg-white dark:border-slate-800 dark:bg-slate-900 flex items-center justify-center`}><span className=\"loading loading-spinner\"></span></div>}>\n <div className=\"overflow-hidden rounded-xl border border-slate-200 bg-white dark:border-slate-800 dark:bg-slate-900\">\n <Sidebar initialCollapsed={sidebarCollapsed} className=\"border-r-0 bg-transparent min-h-full\" />\n </div>\n </Suspense>\n <main className=\"flex-1 min-w-0 overflow-auto\">\n {children}\n </main>\n </div>\n );\n}\n","\nimport fs from 'fs';\nimport os from 'os';\nimport path from 'path';\nimport { Repository, AppSettings } from './types';\nimport { getAppDataDir } from './platform-utils';\n\n// Store the list of known repositories in a shared app data directory.\n// This allows all instances of the app to share the same repository list.\nconst DATA_DIR = getAppDataDir();\nconst DATA_FILE = path.join(DATA_DIR, 'repos.json');\n\n// Ensure data directory exists\nif (!fs.existsSync(DATA_DIR)) {\n fs.mkdirSync(DATA_DIR, { recursive: true });\n}\n\nexport function getRepositories(): Repository[] {\n if (!fs.existsSync(DATA_FILE)) {\n return [];\n }\n try {\n const data = fs.readFileSync(DATA_FILE, 'utf-8');\n return JSON.parse(data);\n } catch (error) {\n console.error('Failed to parse repos.json', error);\n return [];\n }\n}\n\nfunction normalizeDisplayName(displayName?: string | null): string | null | undefined {\n if (displayName === undefined) return undefined;\n if (displayName === null) return null;\n const normalized = displayName.trim();\n return normalized.length > 0 ? normalized : null;\n}\n\nexport function addRepository(repoPath: string, name?: string, displayName?: string | null): Repository {\n const repos = getRepositories();\n // Check if exists\n if (repos.find(r => r.path === repoPath)) {\n throw new Error('Repository already exists');\n }\n\n const normalizedDisplayName = normalizeDisplayName(displayName);\n const newRepo: Repository = {\n path: repoPath,\n name: name || path.basename(repoPath),\n ...(normalizedDisplayName ? { displayName: normalizedDisplayName } : {}),\n };\n\n repos.push(newRepo);\n fs.writeFileSync(DATA_FILE, JSON.stringify(repos, null, 2));\n return newRepo;\n}\n\nexport function updateRepository(repoPath: string, updates: Partial<Repository>): Repository {\n const repos = getRepositories();\n const repoIndex = repos.findIndex(r => r.path === repoPath);\n \n if (repoIndex === -1) {\n throw new Error('Repository not found');\n }\n\n const normalizedUpdates: Partial<Repository> = { ...updates };\n if ('displayName' in normalizedUpdates) {\n normalizedUpdates.displayName = normalizeDisplayName(normalizedUpdates.displayName);\n }\n\n const updatedRepo = { ...repos[repoIndex], ...normalizedUpdates };\n repos[repoIndex] = updatedRepo;\n \n fs.writeFileSync(DATA_FILE, JSON.stringify(repos, null, 2));\n return updatedRepo;\n}\n\nexport function removeRepository(repoPath: string, options?: { deleteLocalFolder?: boolean }): void {\n const { deleteLocalFolder = false } = options || {};\n\n if (deleteLocalFolder) {\n const resolvedRepoPath = path.resolve(repoPath);\n const rootPath = path.parse(resolvedRepoPath).root;\n if (resolvedRepoPath === rootPath) {\n throw new Error('Refusing to delete a filesystem root path');\n }\n fs.rmSync(resolvedRepoPath, { recursive: true, force: true });\n }\n\n let repos = getRepositories();\n repos = repos.filter(r => r.path !== repoPath);\n fs.writeFileSync(DATA_FILE, JSON.stringify(repos, null, 2));\n}\n\n// Settings management\nconst SETTINGS_FILE = path.join(DATA_DIR, 'settings.json');\n\nexport function getSettings(): AppSettings {\n const defaults: AppSettings = {\n defaultRootFolder: null, // null means use user's home directory\n sidebarCollapsed: false,\n };\n\n if (!fs.existsSync(SETTINGS_FILE)) {\n return defaults;\n }\n\n try {\n const data = fs.readFileSync(SETTINGS_FILE, 'utf-8');\n const saved = JSON.parse(data);\n return { ...defaults, ...saved };\n } catch (error) {\n console.error('Failed to parse settings.json', error);\n return defaults;\n }\n}\n\nexport function updateSettings(updates: Partial<AppSettings>): AppSettings {\n const current = getSettings();\n const updated = { ...current, ...updates };\n fs.writeFileSync(SETTINGS_FILE, JSON.stringify(updated, null, 2));\n return updated;\n}\n\nexport function getDefaultRootFolder(): string {\n const settings = getSettings();\n \n // If a default folder is set, check if it still exists\n if (settings.defaultRootFolder) {\n try {\n if (fs.existsSync(settings.defaultRootFolder) && fs.statSync(settings.defaultRootFolder).isDirectory()) {\n return settings.defaultRootFolder;\n }\n } catch {\n // Folder doesn't exist or can't be accessed, fall back to home\n }\n }\n \n // Fall back to user's home directory\n return os.homedir();\n}\n","import os from 'os';\nimport path from 'path';\n\n// Get cross-platform app data directory\nexport function getAppDataDir(): string {\n const platform = process.platform;\n const homeDir = os.homedir();\n\n if (platform === 'win32') {\n // Windows: %APPDATA%\\trident\n return path.join(process.env.APPDATA || path.join(homeDir, 'AppData', 'Roaming'), 'trident');\n } else if (platform === 'darwin') {\n // macOS: ~/Library/Application Support/trident\n return path.join(homeDir, 'Library', 'Application Support', 'trident');\n } else {\n // Linux/others: ~/.config/trident\n return path.join(process.env.XDG_CONFIG_HOME || path.join(homeDir, '.config'), 'trident');\n }\n}\n"],"names":[],"mappings":"4KAEO,IAAM,EAAU,CAAA,EAAA,AADvB,EAAA,CAAA,CAAA,MACuB,uBAAA,AAAuB,EAC1C,WAAa,MAAM,AAAI,MAAM,4NAA8N,EAC3P,0FACA,0DAHG,IAAM,EAAU,CAAA,EADvB,AACuB,EADvB,CAAA,CAAA,MACuB,uBAAA,AAAuB,EAC1C,WAAa,MAAM,AAAI,MAAM,4NAA8N,EAC3P,sEACA,qICHG,IAAM,EAA2B,CAAA,EADxC,AACwC,EADxC,CAAA,CAAA,MACwC,uBAAA,AAAuB,EAC3D,WAAa,MAAU,AAAJ,MAAU,8PAAgQ,EAC7R,uGACA,4FAHG,IAAM,EAA2B,CAAA,EADxC,AACwC,EADxC,CAAA,CAAA,MACwC,uBAAA,AAAuB,EAC3D,WAAa,MAAM,AAAI,MAAM,8PAAgQ,EAC7R,mFACA,kHGCI,kBFNR,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OCDA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OAMA,IAAM,GCJa,QAAQ,ADIV,QCJkB,GACjB,EAAA,OAAE,CAAC,OAAO,GAOjB,EAAA,OAAI,CAAC,IAAI,CAAC,EAAS,UAAW,sBAAuB,YDH9C,EAAA,OAAI,CAAC,IAAI,CAAC,EAAU,cAGlC,AAAC,EAAA,OAAE,CAAC,UAAU,CAAC,IACjB,EAAA,KAD4B,EAC1B,CAAC,SAAS,CAAC,EAAU,CAAE,UAAW,EAAK,GAgF3C,IAAM,EAAgB,EAAA,OAAI,CAAC,IAAI,CAAC,EAAU,iBDzF3B,SAAS,EAAgB,UACpC,CAAQ,CAGX,EACG,IAAM,EAAmB,ACsFtB,SAAS,EACd,IAAM,EAAwB,CAC5B,kBAAmB,KACnB,kBAAkB,CACpB,EAEA,GAAI,CAAC,EAAA,OAAE,CAAC,UAAU,CAAC,GACjB,OAAO,EAGT,GAAI,CAJ+B,AAKjC,IAAM,EAAO,EAAA,OAAE,CAAC,YAAY,CAAC,EAAe,SACtC,EAAQ,KAAK,KAAK,CAAC,GACzB,MAAO,CAAE,GAAG,CAAQ,CAAE,GAAG,CAAM,AAAD,CAChC,CAAE,MAAO,EAAO,CAEd,OADA,QAAQ,KAAK,CAAC,gCAAiC,GACxC,CACT,CACF,IDxG2C,gBAAgB,GAAI,EAE3D,MACI,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,6EACX,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,QAAQ,CAAA,CAAC,SAAU,cAChB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,wBAAwB,CAAA,CAAA,KAE7B,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,QAAQ,CAAA,CAAC,SAAU,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAW,CAAA,EAAG,EAAmB,OAAS,OAAO,qIAAqI,CAAC,UAAE,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,uCAC9N,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,+GACX,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,OAAO,CAAA,CAAC,iBAAkB,EAAkB,UAAU,6CAG/D,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,wCACX,MAIjB","ignoreList":[0,1]}
|