@shipit-ai/cli 1.165.0-pr11.8598321 → 1.165.0-pr9.2eeb845
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/web/.next/BUILD_ID +1 -1
- package/web/.next/build-manifest.json +3 -3
- package/web/.next/fallback-build-manifest.json +3 -3
- package/web/.next/prerender-manifest.json +3 -3
- package/web/.next/required-server-files.js +1 -1
- package/web/.next/required-server-files.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +29 -29
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/chat/page/server-reference-manifest.json +27 -27
- package/web/.next/server/app/(dashboard)/@drawer/chat/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/chat/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +30 -30
- package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +37 -37
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +37 -37
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +28 -28
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +28 -28
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/chat/page/server-reference-manifest.json +27 -27
- package/web/.next/server/app/(dashboard)/chat/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/chat/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +30 -30
- package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +37 -37
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +37 -37
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +27 -27
- package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +28 -28
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +28 -28
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/_global-error.html +1 -1
- package/web/.next/server/app/_global-error.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/web/.next/server/app/_not-found/page/server-reference-manifest.json +6 -6
- package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/api/sessions/route.js +2 -2
- package/web/.next/server/app/settings/page/server-reference-manifest.json +11 -11
- package/web/.next/server/app/settings/page.js.nft.json +1 -1
- package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/skills/page/server-reference-manifest.json +11 -11
- package/web/.next/server/app/skills/page.js.nft.json +1 -1
- package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/tools/page/server-reference-manifest.json +11 -11
- package/web/.next/server/app/tools/page.js.nft.json +1 -1
- package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/version/page/server-reference-manifest.json +6 -6
- package/web/.next/server/app/version/page.js.nft.json +1 -1
- package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__0_.w-eb._.js +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__0tb~wwk._.js +1 -1
- package/web/.next/server/chunks/ssr/0j.8_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_00~eq5i.js +1 -1
- package/web/.next/server/chunks/ssr/0j.8_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_00~eq5i.js.map +1 -1
- package/web/.next/server/chunks/ssr/0j.8_web__next-internal_server_app_(dashboard)_@drawer_chat_page_actions_0979_c..js +1 -1
- package/web/.next/server/chunks/ssr/0j.8_web__next-internal_server_app_(dashboard)_@drawer_chat_page_actions_0979_c..js.map +1 -1
- package/web/.next/server/chunks/ssr/0j.8_web__next-internal_server_app_(dashboard)_chat_page_actions_0dqll_1.js +1 -1
- package/web/.next/server/chunks/ssr/0j.8_web__next-internal_server_app_(dashboard)_chat_page_actions_0dqll_1.js.map +1 -1
- package/web/.next/server/chunks/ssr/0j.8_web_components_common_control-center-drawer_create-drawer-client_tsx_0g70fc5._.js +1 -1
- package/web/.next/server/chunks/ssr/0j.8_web_components_common_control-center-drawer_create-drawer-client_tsx_0g70fc5._.js.map +1 -1
- package/web/.next/server/chunks/ssr/0j.8_web_components_common_control-center-drawer_feature-drawer-client_tsx_104cna.._.js +2 -2
- package/web/.next/server/chunks/ssr/0j.8_web_components_common_control-center-drawer_feature-drawer-client_tsx_104cna.._.js.map +1 -1
- package/web/.next/server/chunks/ssr/0ukq_presentation_web_components_features_settings_settings-page-client_tsx_0j1uius._.js +1 -1
- package/web/.next/server/chunks/ssr/0ukq_presentation_web_components_features_settings_settings-page-client_tsx_0j1uius._.js.map +1 -1
- package/web/.next/server/chunks/ssr/11es_next_dist_esm_build_templates_app-page_0l-25e2.js +1 -1
- package/web/.next/server/chunks/ssr/11y9_components_common_control-center-drawer_repository-drawer-client_tsx_09z.znp._.js +1 -1
- package/web/.next/server/chunks/ssr/11y9_components_common_control-center-drawer_repository-drawer-client_tsx_09z.znp._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__01~y8wi._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__01~y8wi._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0np51e2._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0np51e2._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0rv1gci._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0uxn6-j._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0uxn6-j._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__0_ag.8y._.js → [root-of-the-server]__0vd39s9._.js} +2 -2
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__0_ag.8y._.js.map → [root-of-the-server]__0vd39s9._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0~h382a._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0~h382a._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__12g8h3_._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__12qqi.~._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__12qqi.~._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_01mq~sm._.js +1 -1
- package/web/.next/server/chunks/ssr/_01mq~sm._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{_0tk2.oz._.js → _078s~4v._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_0tk2.oz._.js.map → _078s~4v._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/_0ez.1o4._.js +1 -1
- package/web/.next/server/chunks/ssr/_0ez.1o4._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{_05xlgp0._.js → _0gze8fc._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_05xlgp0._.js.map → _0gze8fc._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/_0j9vx-1._.js +1 -1
- package/web/.next/server/chunks/ssr/_0jpbsh_._.js +1 -1
- package/web/.next/server/chunks/ssr/{_0lkemih._.js → _0prp~74._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_0lkemih._.js.map → _0prp~74._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/_0rvaoj4._.js +1 -1
- package/web/.next/server/chunks/ssr/_0v.yfmg._.js +1 -1
- package/web/.next/server/chunks/ssr/_0v.yfmg._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_0w-_hww._.js +1 -1
- package/web/.next/server/chunks/ssr/_0w-_hww._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_11kuznh._.js +1 -1
- package/web/.next/server/chunks/ssr/_11kuznh._.js.map +1 -1
- package/web/.next/server/chunks/ssr/node_modules__pnpm_0ayym15._.js +3 -0
- package/web/.next/server/chunks/ssr/{node_modules__pnpm_0xyo1be._.js.map → node_modules__pnpm_0ayym15._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_0.e4~xc._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_0.e4~xc._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_00dvh.m._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_00dvh.m._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_06b6~lt._.js +2 -2
- package/web/.next/server/chunks/ssr/src_presentation_web_06b6~lt._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_08fy2mf._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_08fy2mf._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_0f~udu1._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_0f~udu1._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_0qys821._.js +2 -2
- package/web/.next/server/chunks/ssr/src_presentation_web_0qys821._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_0q~dt0o._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_0q~dt0o._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_11jrkxt._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_11jrkxt._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_1199d3x.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_1199d3x.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app__not-found_page_actions_0m2jqxx.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app__not-found_page_actions_0m2jqxx.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_version_page_actions_0krkh_0.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_version_page_actions_0krkh_0.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_load-settings_ts_0b8f3pf._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-ide_ts_0w2wqvu._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_0l3oxx9._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_0l3oxx9._.js.map +1 -1
- package/web/.next/server/middleware-build-manifest.js +3 -3
- package/web/.next/server/pages/500.html +1 -1
- package/web/.next/server/server-reference-manifest.js +1 -1
- package/web/.next/server/server-reference-manifest.json +49 -49
- package/web/.next/static/chunks/{0r2mwqxc0v4n5.js → 08m43hy-s53ew.js} +1 -1
- package/web/.next/static/chunks/{0z996q2k3d.g0.js → 0dhzb8ku1-58i.js} +1 -1
- package/web/.next/static/chunks/{0uydgl~tzc8jf.js → 0he4~0v5flvbl.js} +1 -1
- package/web/.next/static/chunks/{05wxq..ljkx~8.js → 0k5slz11ri6.3.js} +2 -2
- package/web/.next/static/chunks/{11dcv8ilx0i3p.js → 0lvi-qwkq0s-f.js} +1 -1
- package/web/.next/static/chunks/{0hz4voo3l~1q0.js → 0sfbpbi5-kdry.js} +1 -1
- package/web/.next/static/chunks/{0rxhygp1wctu0.js → 0t-nbheb_yokh.js} +1 -1
- package/web/.next/static/chunks/{139b_8tpi-94g.js → 0t.x5g9s1k9gg.js} +1 -1
- package/web/.next/static/chunks/{0v34l64-7uf8g.js → 0xmadesypntsx.js} +2 -2
- package/web/.next/static/chunks/{0mff9v2tok0iu.js → 0y9bmk.ka6ovn.js} +1 -1
- package/web/.next/static/chunks/{0ck_tvdt72yqk.js → 0yf3nvb6oc2ue.js} +1 -1
- package/web/.next/static/chunks/{0ytegp-a66bg_.js → 0~5~d2r0okbzu.js} +1 -1
- package/web/.next/static/chunks/0~_228bvayobk.js +1 -0
- package/web/.next/static/chunks/{10--deyd63evw.js → 0~q-rpyccnova.js} +3 -3
- package/web/.next/static/chunks/{09b2usag59_bi.js → 14bjyfto_93~m.js} +1 -1
- package/web/.next/server/chunks/ssr/node_modules__pnpm_0xyo1be._.js +0 -3
- package/web/.next/static/chunks/0zz.xgsd83.3n.js +0 -1
- /package/web/.next/static/{g_IbOz_ALo2NrP2vhGtKn → sDp6ega1FNIAe6xtmh7NH}/_buildManifest.js +0 -0
- /package/web/.next/static/{g_IbOz_ALo2NrP2vhGtKn → sDp6ega1FNIAe6xtmh7NH}/_clientMiddlewareManifest.js +0 -0
- /package/web/.next/static/{g_IbOz_ALo2NrP2vhGtKn → sDp6ega1FNIAe6xtmh7NH}/_ssgManifest.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/presentation/web/app/actions/get-git-log.ts","../../../../../../../src/presentation/web/.next-internal/server/app/%28dashboard%29/repository/%5BrepositoryId%5D/%5Btab%5D/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["'use server';\n\nimport { execFile } from 'node:child_process';\nimport { promisify } from 'node:util';\n\nconst execFileAsync = promisify(execFile);\n\nasync function git(cwd: string, args: string[]): Promise<string> {\n const { stdout } = await execFileAsync('git', args, { cwd, timeout: 5000 });\n return stdout.trim();\n}\n\nexport interface GitLogEntry {\n hash: string;\n shortHash: string;\n subject: string;\n author: string;\n relativeDate: string;\n branch?: string;\n}\n\nexport interface GitBranchInfo {\n name: string;\n isCurrent: boolean;\n lastCommitDate: string;\n}\n\nexport interface GitRemoteInfo {\n name: string;\n url: string;\n}\n\nexport interface GitWorkingTreeStatus {\n staged: number;\n modified: number;\n untracked: number;\n}\n\nexport interface GitDiffStats {\n filesChanged: number;\n insertions: number;\n deletions: number;\n}\n\nexport interface GitRepoInfo {\n commits: GitLogEntry[];\n branches: GitBranchInfo[];\n remotes: GitRemoteInfo[];\n tags: string[];\n stashCount: number;\n currentBranch: string;\n diffStats: GitDiffStats | null;\n workingTree: GitWorkingTreeStatus;\n error?: string;\n}\n\nexport async function getGitRepoInfo(\n repositoryPath: string,\n commitLimit = 8\n): Promise<GitRepoInfo> {\n const empty: GitRepoInfo = {\n commits: [],\n branches: [],\n remotes: [],\n tags: [],\n stashCount: 0,\n currentBranch: '',\n diffStats: null,\n workingTree: { staged: 0, modified: 0, untracked: 0 },\n };\n\n if (!repositoryPath.trim()) {\n return { ...empty, error: 'Repository path is required' };\n }\n\n const results = await Promise.allSettled([\n // 0: commits\n git(repositoryPath, [\n 'log',\n `--max-count=${commitLimit}`,\n '--format=%H%x00%h%x00%s%x00%an%x00%cr',\n '--no-color',\n ]),\n // 1: current branch\n git(repositoryPath, ['branch', '--show-current']),\n // 2: branches with dates\n git(repositoryPath, [\n 'branch',\n '--sort=-committerdate',\n '--format=%(HEAD)%(refname:short)%00%(committerdate:relative)',\n '--no-color',\n ]),\n // 3: remotes\n git(repositoryPath, ['remote', '-v']),\n // 4: tags (recent 5)\n git(repositoryPath, ['tag', '--sort=-creatordate', '-l', '--format=%(refname:short)']),\n // 5: stash count\n git(repositoryPath, ['stash', 'list']),\n // 6: working tree status\n git(repositoryPath, ['status', '--porcelain']),\n // 7: diff stats (uncommitted)\n git(repositoryPath, ['diff', '--shortstat']),\n ]);\n\n const val = (i: number) => (results[i].status === 'fulfilled' ? results[i].value : '');\n\n // Parse commits\n const commits: GitLogEntry[] = val(0)\n .split('\\n')\n .filter(Boolean)\n .map((line: string) => {\n const [hash, shortHash, subject, author, relativeDate] = line.split('\\0');\n return { hash, shortHash, subject, author, relativeDate };\n });\n\n const currentBranch = val(1);\n if (commits.length > 0 && currentBranch) {\n commits[0].branch = currentBranch;\n }\n\n // Parse branches\n const branches: GitBranchInfo[] = val(2)\n .split('\\n')\n .filter(Boolean)\n .slice(0, 10)\n .map((line: string) => {\n const isCurrent = line.startsWith('*');\n const clean = isCurrent ? line.slice(1) : line;\n const [name, lastCommitDate] = clean.split('\\0');\n return { name: name.trim(), isCurrent, lastCommitDate: lastCommitDate?.trim() ?? '' };\n });\n\n // Parse remotes (dedup fetch/push)\n const remoteMap = new Map<string, string>();\n val(3)\n .split('\\n')\n .filter(Boolean)\n .forEach((line: string) => {\n const match = line.match(/^(\\S+)\\s+(\\S+)\\s+\\(fetch\\)/);\n if (match) {\n // Strip credentials/tokens from URL before sending to client\n const sanitized = match[2].replace(/\\/\\/[^@]+@/, '//').replace(/x-access-token:[^@]+@/, '');\n remoteMap.set(match[1], sanitized);\n }\n });\n const remotes: GitRemoteInfo[] = Array.from(remoteMap, ([name, url]) => ({ name, url }));\n\n // Parse tags (top 5)\n const tags = val(4).split('\\n').filter(Boolean).slice(0, 5);\n\n // Stash count\n const stashCount = val(5).split('\\n').filter(Boolean).length;\n\n // Working tree status\n const statusLines = val(6).split('\\n').filter(Boolean);\n const workingTree: GitWorkingTreeStatus = { staged: 0, modified: 0, untracked: 0 };\n for (const line of statusLines) {\n const x = line[0];\n const y = line[1];\n if (x === '?' && y === '?') workingTree.untracked++;\n else if (x !== ' ' && x !== '?') workingTree.staged++;\n if (y !== ' ' && y !== '?') workingTree.modified++;\n }\n\n // Diff stats\n let diffStats: GitDiffStats | null = null;\n const diffLine = val(7);\n if (diffLine) {\n const files = diffLine.match(/(\\d+) file/);\n const ins = diffLine.match(/(\\d+) insertion/);\n const del = diffLine.match(/(\\d+) deletion/);\n diffStats = {\n filesChanged: files ? parseInt(files[1], 10) : 0,\n insertions: ins ? parseInt(ins[1], 10) : 0,\n deletions: del ? parseInt(del[1], 10) : 0,\n };\n }\n\n return { commits, branches, remotes, tags, stashCount, currentBranch, diffStats, workingTree };\n}\n\n// Keep backward compat\nexport async function getGitLog(\n repositoryPath: string,\n limit = 10\n): Promise<{ entries: GitLogEntry[]; error?: string }> {\n const info = await getGitRepoInfo(repositoryPath, limit);\n return { entries: info.commits, error: info.error };\n}\n","export {getAllAgentModels as '0063d960a1e4655e04c9527d3f0a97fc9dfaf90e25'} from 'ACTIONS_MODULE0'\nexport {updateAgentAndModel as '603f1c8b771ea07b92d719de27f8ff2db85705ce27'} from 'ACTIONS_MODULE1'\nexport {pickFolder as '00da9dd4653d294d92ba4a213413259db6c5b1dd3f'} from 'ACTIONS_MODULE2'\nexport {listGitHubRepositories as '404d39fe5caf186d1c0838e290bf736069e9c7a5e3'} from 'ACTIONS_MODULE3'\nexport {listGitHubOrganizations as '00c1ea9a6acbcccdb38c1dbf965df6cd90d181e8dc'} from 'ACTIONS_MODULE4'\nexport {importGitHubRepository as '40db7f449fd40f063c30a64cad52dedd38db6cc68a'} from 'ACTIONS_MODULE5'\nexport {deployFeature as '406c32a8dcec51d98ca7209989a96bcc211da43f1a'} from 'ACTIONS_MODULE6'\nexport {deployRepository as '400b67f4dbbbd6ec44a1f8fb15d9982d3af9cf2f3f'} from 'ACTIONS_MODULE7'\nexport {stopDeployment as '403e76cfc92b40504c0cc5f23a7a524c1e08a0f269'} from 'ACTIONS_MODULE8'\nexport {getDeploymentStatus as '40338c79072aed58cfe9a0b65a452d5c9f6cf14ec8'} from 'ACTIONS_MODULE9'\nexport {openIde as '40f4a566f8ad38a7a04c7f8de1ba937e68b7b4d0b9'} from 'ACTIONS_MODULE10'\nexport {openShell as '40b5039e1d0456ca864aefdc86c6f151de5ea114bd'} from 'ACTIONS_MODULE11'\nexport {openFolder as '4062c7773c7615ff725e24ff2c9c88cdaf65138292'} from 'ACTIONS_MODULE12'\nexport {syncRepository as '409f5aed614351ffa3b83f2c1e50bc39b42a598206'} from 'ACTIONS_MODULE13'\nexport {getDeploymentLogs as '40227625f5029cdced4c34de5751400c4dcfb84d25'} from 'ACTIONS_MODULE14'\nexport {isAgentSetupComplete as '00419e0d1ade61c590d866570d346f425d76e1256c'} from 'ACTIONS_MODULE15'\nexport {checkAgentAuth as '00877403a672b3c071f5b3473952d8ff1328a6050e'} from 'ACTIONS_MODULE16'\nexport {checkToolStatus as '00fc9496d19a60d5861389e9d11ad65eb7f5e70f85'} from 'ACTIONS_MODULE17'\nexport {getFeatureMetadata as '40d95b431ae8f504e22a9503dc21155a443b1a5566'} from 'ACTIONS_MODULE18'\nexport {archiveFeature as '40ec2622c929f3c2b28cb9832fca5958185aba7f79'} from 'ACTIONS_MODULE19'\nexport {deleteFeature as '78bdcef2bb0d67a6f7df636a86c616532d8ee45031'} from 'ACTIONS_MODULE20'\nexport {resumeFeature as '40adcbc49975d3124cda4580941fb7b21d1caacdc5'} from 'ACTIONS_MODULE21'\nexport {startFeature as '40b391b7606e291b56829fe45341f598904cdd3bf6'} from 'ACTIONS_MODULE22'\nexport {stopFeature as '40b705572a498acdf4d32739f8e727cac6cbac911c'} from 'ACTIONS_MODULE23'\nexport {unarchiveFeature as '405442f1421a5ad4ea3d493ba4219739c81ca344ed'} from 'ACTIONS_MODULE24'\nexport {addRepository as '40a176148d42295602ba233f835c63b7da5df8e4bd'} from 'ACTIONS_MODULE25'\nexport {deleteRepository as '402dde29c47e8f11112d47bcd28f2424991b64c39a'} from 'ACTIONS_MODULE26'\nexport {getGitRepoInfo as '60cb86542292a35b2b87394613ecf9308457d22e18'} from 'ACTIONS_MODULE27'\n"],"names":["execFileAsync","git","cwd","args","stdout","timeout","trim","getGitRepoInfo","repositoryPath","commitLimit","empty","commits","branches","remotes","tags","stashCount","currentBranch","diffStats","workingTree","staged","modified","untracked","error","results","Promise","allSettled","val","i","status","value","split","filter","Boolean","map","line","hash","shortHash","subject","author","relativeDate","length","branch","slice","isCurrent","startsWith","clean","name","lastCommitDate","remoteMap","Map","forEach","match","sanitized","replace","set","Array","from","url","statusLines","x","y","diffLine","files","ins","del","filesChanged","parseInt","insertions","deletions","getGitLog","limit","info","entries"],"mappings":"uDAEA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,oBAEA,IAAMA,EAAgB,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,EAAA,QAAQ,EAExC,eAAeC,EAAIC,CAAW,CAAEC,CAAc,EAC5C,GAAM,QAAEC,CAAM,CAAE,CAAG,MAAMJ,EAAc,MAAOG,EAAM,KAAED,EAAKG,QAAS,GAAK,GACzE,OAAOD,EAAOE,IAAI,EACpB,CA8CO,eAAeC,EACpBC,CAAsB,CACtBC,EAAc,CAAC,EAaf,GAAI,CAACD,EAAeF,IAAI,GACtB,CAD0B,KACnB,CAXPK,QAAS,EAAE,CACXC,SAAU,EAAE,CACZC,QAAS,EAAE,CACXC,KAAM,EAAE,CACRC,WAAY,EACZC,cAAe,GACfC,UAAW,KACXC,YAAa,CAAEC,OAAQ,EAAGC,SAAU,EAAGC,UAAW,CAAE,EAIjCC,MAAO,6BAA8B,EAG1D,IAAMC,EAAU,MAAMC,QAAQC,UAAU,CAAC,CAEvCxB,EAAIO,EAAgB,CAClB,MACA,CAAC,YAAY,EAAEC,EAAAA,CAAa,CAC5B,wCACA,aACD,EAEDR,EAAIO,EAAgB,CAAC,SAAU,iBAAiB,EAEhDP,EAAIO,EAAgB,CAClB,SACA,wBACA,+DACA,aACD,EAEDP,EAAIO,EAAgB,CAAC,SAAU,KAAK,EAEpCP,EAAIO,EAAgB,CAAC,MAAO,sBAAuB,KAAM,4BAA4B,EAErFP,EAAIO,EAAgB,CAAC,QAAS,OAAO,EAErCP,EAAIO,EAAgB,CAAC,SAAU,cAAc,EAE7CP,EAAIO,EAAgB,CAAC,OAAQ,cAAc,EAC5C,EAEKkB,EAAM,AAACC,GAAqC,cAAtBJ,CAAO,CAACI,EAAE,CAACC,MAAM,CAAmBL,CAAO,CAACI,EAAE,CAACE,KAAK,CAAG,GAG7ElB,EAAyBe,EAAI,GAChCI,KAAK,CAAC,MACNC,MAAM,CAACC,SACPC,GAAG,CAAC,AAACC,IACJ,GAAM,CAACC,EAAMC,EAAWC,EAASC,EAAQC,EAAa,CAAGL,EAAKJ,KAAK,CAAC,MACpE,MAAO,MAAEK,YAAMC,UAAWC,SAASC,eAAQC,CAAa,CAC1D,GAEIvB,EAAgBU,EAAI,GACtBf,EAAQ6B,MAAM,CAAG,GAAKxB,IACxBL,CAAO,CAAC,EAAE,CAAC8B,MAAM,AADsB,CACnBzB,CAAAA,EAItB,IAAMJ,EAA4Bc,EAAI,GACnCI,KAAK,CAAC,MACNC,MAAM,CAACC,SACPU,KAAK,CAAC,EAAG,IACTT,GAAG,CAAC,AAACC,IACJ,IAAMS,EAAYT,EAAKU,UAAU,CAAC,KAE5B,CAACE,EAAMC,EAAe,CAAGF,CADjBF,EAAYT,EAAKQ,KAAK,CAAC,GAAKR,CAAAA,EACLJ,KAAK,CAAC,MAC3C,MAAO,CAAEgB,KAAMA,EAAKxC,IAAI,GAAIqC,YAAWI,eAAgBA,GAAgBzC,QAAU,EAAG,CACtF,GAGI0C,EAAY,IAAIC,IACtBvB,EAAI,GACDI,KAAK,CAAC,MACNC,MAAM,CAACC,SACPkB,OAAO,CAAC,AAAChB,IACR,IAAMiB,EAAQjB,EAAKiB,KAAK,CAAC,8BACzB,GAAIA,EAAO,CAET,IAAMC,EAAYD,CAAK,CAAC,EAAE,CAACE,OAAO,CAAC,aAAc,MAAMA,OAAO,CAAC,wBAAyB,IACxFL,EAAUM,GAAG,CAACH,CAAK,CAAC,EAAE,CAAEC,EAC1B,CACF,GACF,IAAMvC,EAA2B0C,MAAMC,IAAI,CAACR,EAAW,CAAC,CAACF,EAAMW,EAAI,GAAK,AAAC,OAAEX,MAAMW,EAAI,CAAC,EAGhF3C,EAAOY,EAAI,GAAGI,KAAK,CAAC,MAAMC,MAAM,CAACC,SAASU,KAAK,CAAC,EAAG,GAGnD3B,EAAaW,EAAI,GAAGI,KAAK,CAAC,MAAMC,MAAM,CAACC,SAASQ,MAAM,CAGtDkB,EAAchC,EAAI,GAAGI,KAAK,CAAC,MAAMC,MAAM,CAACC,SACxCd,EAAoC,CAAEC,OAAQ,EAAGC,SAAU,EAAGC,UAAW,CAAE,EACjF,IAAK,IAAMa,KAAQwB,EAAa,CAC9B,IAAMC,EAAIzB,CAAI,CAAC,EAAE,CACX0B,EAAI1B,CAAI,CAAC,EAAE,CACP,MAANyB,GAAmB,MAANC,EAAW1C,EAAYG,SAAS,GAClC,MAANsC,GAAmB,MAANA,GAAWzC,EAAYC,MAAM,GAC/CyC,AAAM,SAAa,MAANA,GAAW1C,EAAYE,QAAQ,EAClD,CAGA,IAAIH,EAAiC,KAC/B4C,EAAWnC,EAAI,GACrB,GAAImC,EAAU,CACZ,IAAMC,EAAQD,EAASV,KAAK,CAAC,cACvBY,EAAMF,EAASV,KAAK,CAAC,mBACrBa,EAAMH,EAASV,KAAK,CAAC,kBAC3BlC,EAAY,CACVgD,aAAcH,EAAQI,SAASJ,CAAK,CAAC,EAAE,CAAE,IAAM,EAC/CK,WAAYJ,EAAMG,SAASH,CAAG,CAAC,EAAE,CAAE,IAAM,EACzCK,UAAWJ,EAAME,SAASF,CAAG,CAAC,EAAE,CAAE,IAAM,CAC1C,CACF,CAEA,MAAO,SAAErD,WAASC,UAAUC,EAASC,OAAMC,2BAAYC,YAAeC,cAAWC,CAAY,CAC/F,CAGO,eAAemD,EACpB7D,CAAsB,CACtB8D,EAAQ,EAAE,EAEV,IAAMC,EAAO,MAAMhE,EAAeC,EAAgB8D,GAClD,MAAO,CAAEE,QAASD,EAAK5D,OAAO,CAAEW,MAAOiD,EAAKjD,KAAK,AAAC,CACpD,iCApIsBf,EA8HA8D,IA9HA9D,CAAAA,EAAAA,EAAAA,uBAAAA,EAAAA,EAAAA,6CAAAA,MA8HA8D,CAAAA,EAAAA,EAAAA,uBAAAA,EAAAA,EAAAA,6CAAAA,0DCtLtB,IAAA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,MACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/presentation/web/app/actions/get-git-log.ts","../../../../../../../src/presentation/web/.next-internal/server/app/%28dashboard%29/repository/%5BrepositoryId%5D/%5Btab%5D/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["'use server';\n\nimport { execFile } from 'node:child_process';\nimport { promisify } from 'node:util';\n\nconst execFileAsync = promisify(execFile);\n\nasync function git(cwd: string, args: string[]): Promise<string> {\n const { stdout } = await execFileAsync('git', args, { cwd, timeout: 5000 });\n return stdout.trim();\n}\n\nexport interface GitLogEntry {\n hash: string;\n shortHash: string;\n subject: string;\n author: string;\n relativeDate: string;\n branch?: string;\n}\n\nexport interface GitBranchInfo {\n name: string;\n isCurrent: boolean;\n lastCommitDate: string;\n}\n\nexport interface GitRemoteInfo {\n name: string;\n url: string;\n}\n\nexport interface GitWorkingTreeStatus {\n staged: number;\n modified: number;\n untracked: number;\n}\n\nexport interface GitDiffStats {\n filesChanged: number;\n insertions: number;\n deletions: number;\n}\n\nexport interface GitRepoInfo {\n commits: GitLogEntry[];\n branches: GitBranchInfo[];\n remotes: GitRemoteInfo[];\n tags: string[];\n stashCount: number;\n currentBranch: string;\n diffStats: GitDiffStats | null;\n workingTree: GitWorkingTreeStatus;\n error?: string;\n}\n\nexport async function getGitRepoInfo(\n repositoryPath: string,\n commitLimit = 8\n): Promise<GitRepoInfo> {\n const empty: GitRepoInfo = {\n commits: [],\n branches: [],\n remotes: [],\n tags: [],\n stashCount: 0,\n currentBranch: '',\n diffStats: null,\n workingTree: { staged: 0, modified: 0, untracked: 0 },\n };\n\n if (!repositoryPath.trim()) {\n return { ...empty, error: 'Repository path is required' };\n }\n\n const results = await Promise.allSettled([\n // 0: commits\n git(repositoryPath, [\n 'log',\n `--max-count=${commitLimit}`,\n '--format=%H%x00%h%x00%s%x00%an%x00%cr',\n '--no-color',\n ]),\n // 1: current branch\n git(repositoryPath, ['branch', '--show-current']),\n // 2: branches with dates\n git(repositoryPath, [\n 'branch',\n '--sort=-committerdate',\n '--format=%(HEAD)%(refname:short)%00%(committerdate:relative)',\n '--no-color',\n ]),\n // 3: remotes\n git(repositoryPath, ['remote', '-v']),\n // 4: tags (recent 5)\n git(repositoryPath, ['tag', '--sort=-creatordate', '-l', '--format=%(refname:short)']),\n // 5: stash count\n git(repositoryPath, ['stash', 'list']),\n // 6: working tree status\n git(repositoryPath, ['status', '--porcelain']),\n // 7: diff stats (uncommitted)\n git(repositoryPath, ['diff', '--shortstat']),\n ]);\n\n const val = (i: number) => (results[i].status === 'fulfilled' ? results[i].value : '');\n\n // Parse commits\n const commits: GitLogEntry[] = val(0)\n .split('\\n')\n .filter(Boolean)\n .map((line: string) => {\n const [hash, shortHash, subject, author, relativeDate] = line.split('\\0');\n return { hash, shortHash, subject, author, relativeDate };\n });\n\n const currentBranch = val(1);\n if (commits.length > 0 && currentBranch) {\n commits[0].branch = currentBranch;\n }\n\n // Parse branches\n const branches: GitBranchInfo[] = val(2)\n .split('\\n')\n .filter(Boolean)\n .slice(0, 10)\n .map((line: string) => {\n const isCurrent = line.startsWith('*');\n const clean = isCurrent ? line.slice(1) : line;\n const [name, lastCommitDate] = clean.split('\\0');\n return { name: name.trim(), isCurrent, lastCommitDate: lastCommitDate?.trim() ?? '' };\n });\n\n // Parse remotes (dedup fetch/push)\n const remoteMap = new Map<string, string>();\n val(3)\n .split('\\n')\n .filter(Boolean)\n .forEach((line: string) => {\n const match = line.match(/^(\\S+)\\s+(\\S+)\\s+\\(fetch\\)/);\n if (match) {\n // Strip credentials/tokens from URL before sending to client\n const sanitized = match[2].replace(/\\/\\/[^@]+@/, '//').replace(/x-access-token:[^@]+@/, '');\n remoteMap.set(match[1], sanitized);\n }\n });\n const remotes: GitRemoteInfo[] = Array.from(remoteMap, ([name, url]) => ({ name, url }));\n\n // Parse tags (top 5)\n const tags = val(4).split('\\n').filter(Boolean).slice(0, 5);\n\n // Stash count\n const stashCount = val(5).split('\\n').filter(Boolean).length;\n\n // Working tree status\n const statusLines = val(6).split('\\n').filter(Boolean);\n const workingTree: GitWorkingTreeStatus = { staged: 0, modified: 0, untracked: 0 };\n for (const line of statusLines) {\n const x = line[0];\n const y = line[1];\n if (x === '?' && y === '?') workingTree.untracked++;\n else if (x !== ' ' && x !== '?') workingTree.staged++;\n if (y !== ' ' && y !== '?') workingTree.modified++;\n }\n\n // Diff stats\n let diffStats: GitDiffStats | null = null;\n const diffLine = val(7);\n if (diffLine) {\n const files = diffLine.match(/(\\d+) file/);\n const ins = diffLine.match(/(\\d+) insertion/);\n const del = diffLine.match(/(\\d+) deletion/);\n diffStats = {\n filesChanged: files ? parseInt(files[1], 10) : 0,\n insertions: ins ? parseInt(ins[1], 10) : 0,\n deletions: del ? parseInt(del[1], 10) : 0,\n };\n }\n\n return { commits, branches, remotes, tags, stashCount, currentBranch, diffStats, workingTree };\n}\n\n// Keep backward compat\nexport async function getGitLog(\n repositoryPath: string,\n limit = 10\n): Promise<{ entries: GitLogEntry[]; error?: string }> {\n const info = await getGitRepoInfo(repositoryPath, limit);\n return { entries: info.commits, error: info.error };\n}\n","export {getAllAgentModels as '0001646280e908679c3138f1ac25fb2433e32dd1b9'} from 'ACTIONS_MODULE0'\nexport {updateAgentAndModel as '60c3bd7311a1d9df132c7a07881b9d9bcb86c5ecf4'} from 'ACTIONS_MODULE1'\nexport {pickFolder as '00d8fb08a7dba52132389265ec4eb081f02a547187'} from 'ACTIONS_MODULE2'\nexport {listGitHubRepositories as '409dba37e21d4549c18ca2a1ad2e151d778fc47c0a'} from 'ACTIONS_MODULE3'\nexport {listGitHubOrganizations as '0079e34070bffa2d0e7952067ffc98534044a3f47f'} from 'ACTIONS_MODULE4'\nexport {importGitHubRepository as '409bd776367ae0414e61a14766b43d6fd2f50a4fdc'} from 'ACTIONS_MODULE5'\nexport {deployFeature as '40c5d85f4158d92e322eff01a37b0c6fbfa808d924'} from 'ACTIONS_MODULE6'\nexport {deployRepository as '400c270aefa32609d2064e1074a3b9cca2ecd7ac40'} from 'ACTIONS_MODULE7'\nexport {stopDeployment as '4025e7565e144546a41753500aed288fd2e822bb35'} from 'ACTIONS_MODULE8'\nexport {getDeploymentStatus as '402dfcc9c77913dbcb80cbb028bd9325ebba11cbff'} from 'ACTIONS_MODULE9'\nexport {openIde as '400644903ed6894eedbf0b001dcbbb7e3ca3e309c7'} from 'ACTIONS_MODULE10'\nexport {openShell as '4098b761c8813bd6c7b0f130c2704912265def7222'} from 'ACTIONS_MODULE11'\nexport {openFolder as '409012491a994da842a75da0beffa5ceb08da18b4b'} from 'ACTIONS_MODULE12'\nexport {syncRepository as '404e186bc93375e8827c855048b8206ec2e95af43a'} from 'ACTIONS_MODULE13'\nexport {getDeploymentLogs as '400f6b6f5c319087323956e68e3c1af167a0097c0d'} from 'ACTIONS_MODULE14'\nexport {isAgentSetupComplete as '0020452c03f2732119e7561d4c1fba86eee90d0441'} from 'ACTIONS_MODULE15'\nexport {checkAgentAuth as '00f9cb9318f5f4e2ad95eab420832c3e2a8d80b823'} from 'ACTIONS_MODULE16'\nexport {checkToolStatus as '0079bf88ddd1853c0adb03b925c1136af2ea7b2b58'} from 'ACTIONS_MODULE17'\nexport {getFeatureMetadata as '407082b8991005bcda465d223757d9d050f8d3253a'} from 'ACTIONS_MODULE18'\nexport {archiveFeature as '40eea0d894f3ce984a612e879a6c87cd025bb05e9b'} from 'ACTIONS_MODULE19'\nexport {deleteFeature as '78534c974dbc5aa14d299e67270e0961c3fec6aacf'} from 'ACTIONS_MODULE20'\nexport {resumeFeature as '40d9bb377bc84684536d6617ebc31de0750eb63bac'} from 'ACTIONS_MODULE21'\nexport {startFeature as '4018bef3bc92ffa047953aebcb3b972add0d07fa0e'} from 'ACTIONS_MODULE22'\nexport {stopFeature as '4095611cbecd750cce932da99d031ed579999f1074'} from 'ACTIONS_MODULE23'\nexport {unarchiveFeature as '4094e1182ef68e30f7807eea0cae32386ca9e65b4b'} from 'ACTIONS_MODULE24'\nexport {addRepository as '40a9edd85d70236c79c5b5f48de3ac570508b38a59'} from 'ACTIONS_MODULE25'\nexport {deleteRepository as '40305f12b445fdd66736a073063014f5162474e9fa'} from 'ACTIONS_MODULE26'\nexport {getGitRepoInfo as '609e008e96a3b01556d124846e9c324ca5200e7986'} from 'ACTIONS_MODULE27'\n"],"names":["execFileAsync","git","cwd","args","stdout","timeout","trim","getGitRepoInfo","repositoryPath","commitLimit","empty","commits","branches","remotes","tags","stashCount","currentBranch","diffStats","workingTree","staged","modified","untracked","error","results","Promise","allSettled","val","i","status","value","split","filter","Boolean","map","line","hash","shortHash","subject","author","relativeDate","length","branch","slice","isCurrent","startsWith","clean","name","lastCommitDate","remoteMap","Map","forEach","match","sanitized","replace","set","Array","from","url","statusLines","x","y","diffLine","files","ins","del","filesChanged","parseInt","insertions","deletions","getGitLog","limit","info","entries"],"mappings":"uDAEA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,oBAEA,IAAMA,EAAgB,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,EAAA,QAAQ,EAExC,eAAeC,EAAIC,CAAW,CAAEC,CAAc,EAC5C,GAAM,QAAEC,CAAM,CAAE,CAAG,MAAMJ,EAAc,MAAOG,EAAM,KAAED,EAAKG,QAAS,GAAK,GACzE,OAAOD,EAAOE,IAAI,EACpB,CA8CO,eAAeC,EACpBC,CAAsB,CACtBC,EAAc,CAAC,EAaf,GAAI,CAACD,EAAeF,IAAI,GACtB,CAD0B,KACnB,CAXPK,QAAS,EAAE,CACXC,SAAU,EAAE,CACZC,QAAS,EAAE,CACXC,KAAM,EAAE,CACRC,WAAY,EACZC,cAAe,GACfC,UAAW,KACXC,YAAa,CAAEC,OAAQ,EAAGC,SAAU,EAAGC,UAAW,CAAE,EAIjCC,MAAO,6BAA8B,EAG1D,IAAMC,EAAU,MAAMC,QAAQC,UAAU,CAAC,CAEvCxB,EAAIO,EAAgB,CAClB,MACA,CAAC,YAAY,EAAEC,EAAAA,CAAa,CAC5B,wCACA,aACD,EAEDR,EAAIO,EAAgB,CAAC,SAAU,iBAAiB,EAEhDP,EAAIO,EAAgB,CAClB,SACA,wBACA,+DACA,aACD,EAEDP,EAAIO,EAAgB,CAAC,SAAU,KAAK,EAEpCP,EAAIO,EAAgB,CAAC,MAAO,sBAAuB,KAAM,4BAA4B,EAErFP,EAAIO,EAAgB,CAAC,QAAS,OAAO,EAErCP,EAAIO,EAAgB,CAAC,SAAU,cAAc,EAE7CP,EAAIO,EAAgB,CAAC,OAAQ,cAAc,EAC5C,EAEKkB,EAAM,AAACC,GAAqC,cAAtBJ,CAAO,CAACI,EAAE,CAACC,MAAM,CAAmBL,CAAO,CAACI,EAAE,CAACE,KAAK,CAAG,GAG7ElB,EAAyBe,EAAI,GAChCI,KAAK,CAAC,MACNC,MAAM,CAACC,SACPC,GAAG,CAAC,AAACC,IACJ,GAAM,CAACC,EAAMC,EAAWC,EAASC,EAAQC,EAAa,CAAGL,EAAKJ,KAAK,CAAC,MACpE,MAAO,MAAEK,YAAMC,UAAWC,SAASC,eAAQC,CAAa,CAC1D,GAEIvB,EAAgBU,EAAI,GACtBf,EAAQ6B,MAAM,CAAG,GAAKxB,IACxBL,CAAO,CAAC,EAAE,CAAC8B,MAAM,AADsB,CACnBzB,CAAAA,EAItB,IAAMJ,EAA4Bc,EAAI,GACnCI,KAAK,CAAC,MACNC,MAAM,CAACC,SACPU,KAAK,CAAC,EAAG,IACTT,GAAG,CAAC,AAACC,IACJ,IAAMS,EAAYT,EAAKU,UAAU,CAAC,KAE5B,CAACE,EAAMC,EAAe,CAAGF,CADjBF,EAAYT,EAAKQ,KAAK,CAAC,GAAKR,CAAAA,EACLJ,KAAK,CAAC,MAC3C,MAAO,CAAEgB,KAAMA,EAAKxC,IAAI,GAAIqC,YAAWI,eAAgBA,GAAgBzC,QAAU,EAAG,CACtF,GAGI0C,EAAY,IAAIC,IACtBvB,EAAI,GACDI,KAAK,CAAC,MACNC,MAAM,CAACC,SACPkB,OAAO,CAAC,AAAChB,IACR,IAAMiB,EAAQjB,EAAKiB,KAAK,CAAC,8BACzB,GAAIA,EAAO,CAET,IAAMC,EAAYD,CAAK,CAAC,EAAE,CAACE,OAAO,CAAC,aAAc,MAAMA,OAAO,CAAC,wBAAyB,IACxFL,EAAUM,GAAG,CAACH,CAAK,CAAC,EAAE,CAAEC,EAC1B,CACF,GACF,IAAMvC,EAA2B0C,MAAMC,IAAI,CAACR,EAAW,CAAC,CAACF,EAAMW,EAAI,GAAK,AAAC,OAAEX,MAAMW,EAAI,CAAC,EAGhF3C,EAAOY,EAAI,GAAGI,KAAK,CAAC,MAAMC,MAAM,CAACC,SAASU,KAAK,CAAC,EAAG,GAGnD3B,EAAaW,EAAI,GAAGI,KAAK,CAAC,MAAMC,MAAM,CAACC,SAASQ,MAAM,CAGtDkB,EAAchC,EAAI,GAAGI,KAAK,CAAC,MAAMC,MAAM,CAACC,SACxCd,EAAoC,CAAEC,OAAQ,EAAGC,SAAU,EAAGC,UAAW,CAAE,EACjF,IAAK,IAAMa,KAAQwB,EAAa,CAC9B,IAAMC,EAAIzB,CAAI,CAAC,EAAE,CACX0B,EAAI1B,CAAI,CAAC,EAAE,CACP,MAANyB,GAAmB,MAANC,EAAW1C,EAAYG,SAAS,GAClC,MAANsC,GAAmB,MAANA,GAAWzC,EAAYC,MAAM,GAC/CyC,AAAM,SAAa,MAANA,GAAW1C,EAAYE,QAAQ,EAClD,CAGA,IAAIH,EAAiC,KAC/B4C,EAAWnC,EAAI,GACrB,GAAImC,EAAU,CACZ,IAAMC,EAAQD,EAASV,KAAK,CAAC,cACvBY,EAAMF,EAASV,KAAK,CAAC,mBACrBa,EAAMH,EAASV,KAAK,CAAC,kBAC3BlC,EAAY,CACVgD,aAAcH,EAAQI,SAASJ,CAAK,CAAC,EAAE,CAAE,IAAM,EAC/CK,WAAYJ,EAAMG,SAASH,CAAG,CAAC,EAAE,CAAE,IAAM,EACzCK,UAAWJ,EAAME,SAASF,CAAG,CAAC,EAAE,CAAE,IAAM,CAC1C,CACF,CAEA,MAAO,SAAErD,WAASC,UAAUC,EAASC,OAAMC,2BAAYC,YAAeC,cAAWC,CAAY,CAC/F,CAGO,eAAemD,EACpB7D,CAAsB,CACtB8D,EAAQ,EAAE,EAEV,IAAMC,EAAO,MAAMhE,EAAeC,EAAgB8D,GAClD,MAAO,CAAEE,QAASD,EAAK5D,OAAO,CAAEW,MAAOiD,EAAKjD,KAAK,AAAC,CACpD,iCApIsBf,EA8HA8D,IA9HA9D,CAAAA,EAAAA,EAAAA,uBAAAA,EAAAA,EAAAA,6CAAAA,MA8HA8D,CAAAA,EAAAA,EAAAA,uBAAAA,EAAAA,EAAAA,6CAAAA,0DCtLtB,IAAA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,MACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[35556,a=>{"use strict";var b=a.i(2211),c=a.i(74533),d=a.i(12057),e=a.i(50961);let f=(0,d.promisify)(c.execFile);async function g(a,b){let{stdout:c}=await f("git",b,{cwd:a,timeout:5e3});return c.trim()}async function h(a,b=8){if(!a.trim())return{commits:[],branches:[],remotes:[],tags:[],stashCount:0,currentBranch:"",diffStats:null,workingTree:{staged:0,modified:0,untracked:0},error:"Repository path is required"};let c=await Promise.allSettled([g(a,["log",`--max-count=${b}`,"--format=%H%x00%h%x00%s%x00%an%x00%cr","--no-color"]),g(a,["branch","--show-current"]),g(a,["branch","--sort=-committerdate","--format=%(HEAD)%(refname:short)%00%(committerdate:relative)","--no-color"]),g(a,["remote","-v"]),g(a,["tag","--sort=-creatordate","-l","--format=%(refname:short)"]),g(a,["stash","list"]),g(a,["status","--porcelain"]),g(a,["diff","--shortstat"])]),d=a=>"fulfilled"===c[a].status?c[a].value:"",e=d(0).split("\n").filter(Boolean).map(a=>{let[b,c,d,e,f]=a.split("\0");return{hash:b,shortHash:c,subject:d,author:e,relativeDate:f}}),f=d(1);e.length>0&&f&&(e[0].branch=f);let i=d(2).split("\n").filter(Boolean).slice(0,10).map(a=>{let b=a.startsWith("*"),[c,d]=(b?a.slice(1):a).split("\0");return{name:c.trim(),isCurrent:b,lastCommitDate:d?.trim()??""}}),j=new Map;d(3).split("\n").filter(Boolean).forEach(a=>{let b=a.match(/^(\S+)\s+(\S+)\s+\(fetch\)/);if(b){let a=b[2].replace(/\/\/[^@]+@/,"//").replace(/x-access-token:[^@]+@/,"");j.set(b[1],a)}});let k=Array.from(j,([a,b])=>({name:a,url:b})),l=d(4).split("\n").filter(Boolean).slice(0,5),m=d(5).split("\n").filter(Boolean).length,n=d(6).split("\n").filter(Boolean),o={staged:0,modified:0,untracked:0};for(let a of n){let b=a[0],c=a[1];"?"===b&&"?"===c?o.untracked++:" "!==b&&"?"!==b&&o.staged++," "!==c&&"?"!==c&&o.modified++}let p=null,q=d(7);if(q){let a=q.match(/(\d+) file/),b=q.match(/(\d+) insertion/),c=q.match(/(\d+) deletion/);p={filesChanged:a?parseInt(a[1],10):0,insertions:b?parseInt(b[1],10):0,deletions:c?parseInt(c[1],10):0}}return{commits:e,branches:i,remotes:k,tags:l,stashCount:m,currentBranch:f,diffStats:p,workingTree:o}}async function i(a,b=10){let c=await h(a,b);return{entries:c.commits,error:c.error}}(0,e.ensureServerEntryExports)([h,i]),(0,b.registerServerReference)(h,"
|
|
1
|
+
module.exports=[35556,a=>{"use strict";var b=a.i(2211),c=a.i(74533),d=a.i(12057),e=a.i(50961);let f=(0,d.promisify)(c.execFile);async function g(a,b){let{stdout:c}=await f("git",b,{cwd:a,timeout:5e3});return c.trim()}async function h(a,b=8){if(!a.trim())return{commits:[],branches:[],remotes:[],tags:[],stashCount:0,currentBranch:"",diffStats:null,workingTree:{staged:0,modified:0,untracked:0},error:"Repository path is required"};let c=await Promise.allSettled([g(a,["log",`--max-count=${b}`,"--format=%H%x00%h%x00%s%x00%an%x00%cr","--no-color"]),g(a,["branch","--show-current"]),g(a,["branch","--sort=-committerdate","--format=%(HEAD)%(refname:short)%00%(committerdate:relative)","--no-color"]),g(a,["remote","-v"]),g(a,["tag","--sort=-creatordate","-l","--format=%(refname:short)"]),g(a,["stash","list"]),g(a,["status","--porcelain"]),g(a,["diff","--shortstat"])]),d=a=>"fulfilled"===c[a].status?c[a].value:"",e=d(0).split("\n").filter(Boolean).map(a=>{let[b,c,d,e,f]=a.split("\0");return{hash:b,shortHash:c,subject:d,author:e,relativeDate:f}}),f=d(1);e.length>0&&f&&(e[0].branch=f);let i=d(2).split("\n").filter(Boolean).slice(0,10).map(a=>{let b=a.startsWith("*"),[c,d]=(b?a.slice(1):a).split("\0");return{name:c.trim(),isCurrent:b,lastCommitDate:d?.trim()??""}}),j=new Map;d(3).split("\n").filter(Boolean).forEach(a=>{let b=a.match(/^(\S+)\s+(\S+)\s+\(fetch\)/);if(b){let a=b[2].replace(/\/\/[^@]+@/,"//").replace(/x-access-token:[^@]+@/,"");j.set(b[1],a)}});let k=Array.from(j,([a,b])=>({name:a,url:b})),l=d(4).split("\n").filter(Boolean).slice(0,5),m=d(5).split("\n").filter(Boolean).length,n=d(6).split("\n").filter(Boolean),o={staged:0,modified:0,untracked:0};for(let a of n){let b=a[0],c=a[1];"?"===b&&"?"===c?o.untracked++:" "!==b&&"?"!==b&&o.staged++," "!==c&&"?"!==c&&o.modified++}let p=null,q=d(7);if(q){let a=q.match(/(\d+) file/),b=q.match(/(\d+) insertion/),c=q.match(/(\d+) deletion/);p={filesChanged:a?parseInt(a[1],10):0,insertions:b?parseInt(b[1],10):0,deletions:c?parseInt(c[1],10):0}}return{commits:e,branches:i,remotes:k,tags:l,stashCount:m,currentBranch:f,diffStats:p,workingTree:o}}async function i(a,b=10){let c=await h(a,b);return{entries:c.commits,error:c.error}}(0,e.ensureServerEntryExports)([h,i]),(0,b.registerServerReference)(h,"609e008e96a3b01556d124846e9c324ca5200e7986",null),(0,b.registerServerReference)(i,"6051977981f1ba2218b058d723541043ae5bbebeed",null),a.s(["getGitRepoInfo",0,h])},59044,a=>{"use strict";var b=a.i(23504),c=a.i(27900),d=a.i(12513),e=a.i(73101),f=a.i(54775),g=a.i(65324),h=a.i(33841),i=a.i(46646),j=a.i(68670),k=a.i(85321),l=a.i(84095),m=a.i(56799),n=a.i(80496),o=a.i(93225),p=a.i(94691),q=a.i(41872),r=a.i(9959),s=a.i(79124),t=a.i(29207),u=a.i(10528),v=a.i(50845),w=a.i(26604),x=a.i(54723),y=a.i(18942),z=a.i(42886),A=a.i(49560),B=a.i(39353),C=a.i(35556);a.s([],93888),a.i(93888),a.s(["0001646280e908679c3138f1ac25fb2433e32dd1b9",()=>b.getAllAgentModels,"0020452c03f2732119e7561d4c1fba86eee90d0441",()=>q.isAgentSetupComplete,"0079bf88ddd1853c0adb03b925c1136af2ea7b2b58",()=>s.checkToolStatus,"0079e34070bffa2d0e7952067ffc98534044a3f47f",()=>f.listGitHubOrganizations,"00d8fb08a7dba52132389265ec4eb081f02a547187",()=>d.pickFolder,"00f9cb9318f5f4e2ad95eab420832c3e2a8d80b823",()=>r.checkAgentAuth,"400644903ed6894eedbf0b001dcbbb7e3ca3e309c7",()=>l.openIde,"400c270aefa32609d2064e1074a3b9cca2ecd7ac40",()=>i.deployRepository,"400f6b6f5c319087323956e68e3c1af167a0097c0d",()=>p.getDeploymentLogs,"4018bef3bc92ffa047953aebcb3b972add0d07fa0e",()=>x.startFeature,"4025e7565e144546a41753500aed288fd2e822bb35",()=>j.stopDeployment,"402dfcc9c77913dbcb80cbb028bd9325ebba11cbff",()=>k.getDeploymentStatus,"40305f12b445fdd66736a073063014f5162474e9fa",()=>B.deleteRepository,"404e186bc93375e8827c855048b8206ec2e95af43a",()=>o.syncRepository,"407082b8991005bcda465d223757d9d050f8d3253a",()=>t.getFeatureMetadata,"409012491a994da842a75da0beffa5ceb08da18b4b",()=>n.openFolder,"4094e1182ef68e30f7807eea0cae32386ca9e65b4b",()=>z.unarchiveFeature,"4095611cbecd750cce932da99d031ed579999f1074",()=>y.stopFeature,"4098b761c8813bd6c7b0f130c2704912265def7222",()=>m.openShell,"409bd776367ae0414e61a14766b43d6fd2f50a4fdc",()=>g.importGitHubRepository,"409dba37e21d4549c18ca2a1ad2e151d778fc47c0a",()=>e.listGitHubRepositories,"40a9edd85d70236c79c5b5f48de3ac570508b38a59",()=>A.addRepository,"40c5d85f4158d92e322eff01a37b0c6fbfa808d924",()=>h.deployFeature,"40d9bb377bc84684536d6617ebc31de0750eb63bac",()=>w.resumeFeature,"40eea0d894f3ce984a612e879a6c87cd025bb05e9b",()=>u.archiveFeature,"609e008e96a3b01556d124846e9c324ca5200e7986",()=>C.getGitRepoInfo,"60c3bd7311a1d9df132c7a07881b9d9bcb86c5ecf4",()=>c.updateAgentAndModel,"78534c974dbc5aa14d299e67270e0961c3fec6aacf",()=>v.deleteFeature],59044)}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=src_presentation_web_00dvh.m._.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/presentation/web/app/actions/get-git-log.ts","../../../../../../../src/presentation/web/.next-internal/server/app/%28dashboard%29/%40drawer/repository/%5BrepositoryId%5D/%5Btab%5D/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["'use server';\n\nimport { execFile } from 'node:child_process';\nimport { promisify } from 'node:util';\n\nconst execFileAsync = promisify(execFile);\n\nasync function git(cwd: string, args: string[]): Promise<string> {\n const { stdout } = await execFileAsync('git', args, { cwd, timeout: 5000 });\n return stdout.trim();\n}\n\nexport interface GitLogEntry {\n hash: string;\n shortHash: string;\n subject: string;\n author: string;\n relativeDate: string;\n branch?: string;\n}\n\nexport interface GitBranchInfo {\n name: string;\n isCurrent: boolean;\n lastCommitDate: string;\n}\n\nexport interface GitRemoteInfo {\n name: string;\n url: string;\n}\n\nexport interface GitWorkingTreeStatus {\n staged: number;\n modified: number;\n untracked: number;\n}\n\nexport interface GitDiffStats {\n filesChanged: number;\n insertions: number;\n deletions: number;\n}\n\nexport interface GitRepoInfo {\n commits: GitLogEntry[];\n branches: GitBranchInfo[];\n remotes: GitRemoteInfo[];\n tags: string[];\n stashCount: number;\n currentBranch: string;\n diffStats: GitDiffStats | null;\n workingTree: GitWorkingTreeStatus;\n error?: string;\n}\n\nexport async function getGitRepoInfo(\n repositoryPath: string,\n commitLimit = 8\n): Promise<GitRepoInfo> {\n const empty: GitRepoInfo = {\n commits: [],\n branches: [],\n remotes: [],\n tags: [],\n stashCount: 0,\n currentBranch: '',\n diffStats: null,\n workingTree: { staged: 0, modified: 0, untracked: 0 },\n };\n\n if (!repositoryPath.trim()) {\n return { ...empty, error: 'Repository path is required' };\n }\n\n const results = await Promise.allSettled([\n // 0: commits\n git(repositoryPath, [\n 'log',\n `--max-count=${commitLimit}`,\n '--format=%H%x00%h%x00%s%x00%an%x00%cr',\n '--no-color',\n ]),\n // 1: current branch\n git(repositoryPath, ['branch', '--show-current']),\n // 2: branches with dates\n git(repositoryPath, [\n 'branch',\n '--sort=-committerdate',\n '--format=%(HEAD)%(refname:short)%00%(committerdate:relative)',\n '--no-color',\n ]),\n // 3: remotes\n git(repositoryPath, ['remote', '-v']),\n // 4: tags (recent 5)\n git(repositoryPath, ['tag', '--sort=-creatordate', '-l', '--format=%(refname:short)']),\n // 5: stash count\n git(repositoryPath, ['stash', 'list']),\n // 6: working tree status\n git(repositoryPath, ['status', '--porcelain']),\n // 7: diff stats (uncommitted)\n git(repositoryPath, ['diff', '--shortstat']),\n ]);\n\n const val = (i: number) => (results[i].status === 'fulfilled' ? results[i].value : '');\n\n // Parse commits\n const commits: GitLogEntry[] = val(0)\n .split('\\n')\n .filter(Boolean)\n .map((line: string) => {\n const [hash, shortHash, subject, author, relativeDate] = line.split('\\0');\n return { hash, shortHash, subject, author, relativeDate };\n });\n\n const currentBranch = val(1);\n if (commits.length > 0 && currentBranch) {\n commits[0].branch = currentBranch;\n }\n\n // Parse branches\n const branches: GitBranchInfo[] = val(2)\n .split('\\n')\n .filter(Boolean)\n .slice(0, 10)\n .map((line: string) => {\n const isCurrent = line.startsWith('*');\n const clean = isCurrent ? line.slice(1) : line;\n const [name, lastCommitDate] = clean.split('\\0');\n return { name: name.trim(), isCurrent, lastCommitDate: lastCommitDate?.trim() ?? '' };\n });\n\n // Parse remotes (dedup fetch/push)\n const remoteMap = new Map<string, string>();\n val(3)\n .split('\\n')\n .filter(Boolean)\n .forEach((line: string) => {\n const match = line.match(/^(\\S+)\\s+(\\S+)\\s+\\(fetch\\)/);\n if (match) {\n // Strip credentials/tokens from URL before sending to client\n const sanitized = match[2].replace(/\\/\\/[^@]+@/, '//').replace(/x-access-token:[^@]+@/, '');\n remoteMap.set(match[1], sanitized);\n }\n });\n const remotes: GitRemoteInfo[] = Array.from(remoteMap, ([name, url]) => ({ name, url }));\n\n // Parse tags (top 5)\n const tags = val(4).split('\\n').filter(Boolean).slice(0, 5);\n\n // Stash count\n const stashCount = val(5).split('\\n').filter(Boolean).length;\n\n // Working tree status\n const statusLines = val(6).split('\\n').filter(Boolean);\n const workingTree: GitWorkingTreeStatus = { staged: 0, modified: 0, untracked: 0 };\n for (const line of statusLines) {\n const x = line[0];\n const y = line[1];\n if (x === '?' && y === '?') workingTree.untracked++;\n else if (x !== ' ' && x !== '?') workingTree.staged++;\n if (y !== ' ' && y !== '?') workingTree.modified++;\n }\n\n // Diff stats\n let diffStats: GitDiffStats | null = null;\n const diffLine = val(7);\n if (diffLine) {\n const files = diffLine.match(/(\\d+) file/);\n const ins = diffLine.match(/(\\d+) insertion/);\n const del = diffLine.match(/(\\d+) deletion/);\n diffStats = {\n filesChanged: files ? parseInt(files[1], 10) : 0,\n insertions: ins ? parseInt(ins[1], 10) : 0,\n deletions: del ? parseInt(del[1], 10) : 0,\n };\n }\n\n return { commits, branches, remotes, tags, stashCount, currentBranch, diffStats, workingTree };\n}\n\n// Keep backward compat\nexport async function getGitLog(\n repositoryPath: string,\n limit = 10\n): Promise<{ entries: GitLogEntry[]; error?: string }> {\n const info = await getGitRepoInfo(repositoryPath, limit);\n return { entries: info.commits, error: info.error };\n}\n","export {getAllAgentModels as '0063d960a1e4655e04c9527d3f0a97fc9dfaf90e25'} from 'ACTIONS_MODULE0'\nexport {updateAgentAndModel as '603f1c8b771ea07b92d719de27f8ff2db85705ce27'} from 'ACTIONS_MODULE1'\nexport {pickFolder as '00da9dd4653d294d92ba4a213413259db6c5b1dd3f'} from 'ACTIONS_MODULE2'\nexport {listGitHubRepositories as '404d39fe5caf186d1c0838e290bf736069e9c7a5e3'} from 'ACTIONS_MODULE3'\nexport {listGitHubOrganizations as '00c1ea9a6acbcccdb38c1dbf965df6cd90d181e8dc'} from 'ACTIONS_MODULE4'\nexport {importGitHubRepository as '40db7f449fd40f063c30a64cad52dedd38db6cc68a'} from 'ACTIONS_MODULE5'\nexport {deployFeature as '406c32a8dcec51d98ca7209989a96bcc211da43f1a'} from 'ACTIONS_MODULE6'\nexport {deployRepository as '400b67f4dbbbd6ec44a1f8fb15d9982d3af9cf2f3f'} from 'ACTIONS_MODULE7'\nexport {stopDeployment as '403e76cfc92b40504c0cc5f23a7a524c1e08a0f269'} from 'ACTIONS_MODULE8'\nexport {getDeploymentStatus as '40338c79072aed58cfe9a0b65a452d5c9f6cf14ec8'} from 'ACTIONS_MODULE9'\nexport {openIde as '40f4a566f8ad38a7a04c7f8de1ba937e68b7b4d0b9'} from 'ACTIONS_MODULE10'\nexport {openShell as '40b5039e1d0456ca864aefdc86c6f151de5ea114bd'} from 'ACTIONS_MODULE11'\nexport {openFolder as '4062c7773c7615ff725e24ff2c9c88cdaf65138292'} from 'ACTIONS_MODULE12'\nexport {syncRepository as '409f5aed614351ffa3b83f2c1e50bc39b42a598206'} from 'ACTIONS_MODULE13'\nexport {getDeploymentLogs as '40227625f5029cdced4c34de5751400c4dcfb84d25'} from 'ACTIONS_MODULE14'\nexport {isAgentSetupComplete as '00419e0d1ade61c590d866570d346f425d76e1256c'} from 'ACTIONS_MODULE15'\nexport {checkAgentAuth as '00877403a672b3c071f5b3473952d8ff1328a6050e'} from 'ACTIONS_MODULE16'\nexport {checkToolStatus as '00fc9496d19a60d5861389e9d11ad65eb7f5e70f85'} from 'ACTIONS_MODULE17'\nexport {getFeatureMetadata as '40d95b431ae8f504e22a9503dc21155a443b1a5566'} from 'ACTIONS_MODULE18'\nexport {archiveFeature as '40ec2622c929f3c2b28cb9832fca5958185aba7f79'} from 'ACTIONS_MODULE19'\nexport {deleteFeature as '78bdcef2bb0d67a6f7df636a86c616532d8ee45031'} from 'ACTIONS_MODULE20'\nexport {resumeFeature as '40adcbc49975d3124cda4580941fb7b21d1caacdc5'} from 'ACTIONS_MODULE21'\nexport {startFeature as '40b391b7606e291b56829fe45341f598904cdd3bf6'} from 'ACTIONS_MODULE22'\nexport {stopFeature as '40b705572a498acdf4d32739f8e727cac6cbac911c'} from 'ACTIONS_MODULE23'\nexport {unarchiveFeature as '405442f1421a5ad4ea3d493ba4219739c81ca344ed'} from 'ACTIONS_MODULE24'\nexport {addRepository as '40a176148d42295602ba233f835c63b7da5df8e4bd'} from 'ACTIONS_MODULE25'\nexport {deleteRepository as '402dde29c47e8f11112d47bcd28f2424991b64c39a'} from 'ACTIONS_MODULE26'\nexport {getGitRepoInfo as '60cb86542292a35b2b87394613ecf9308457d22e18'} from 'ACTIONS_MODULE27'\n"],"names":["execFileAsync","git","cwd","args","stdout","timeout","trim","getGitRepoInfo","repositoryPath","commitLimit","empty","commits","branches","remotes","tags","stashCount","currentBranch","diffStats","workingTree","staged","modified","untracked","error","results","Promise","allSettled","val","i","status","value","split","filter","Boolean","map","line","hash","shortHash","subject","author","relativeDate","length","branch","slice","isCurrent","startsWith","clean","name","lastCommitDate","remoteMap","Map","forEach","match","sanitized","replace","set","Array","from","url","statusLines","x","y","diffLine","files","ins","del","filesChanged","parseInt","insertions","deletions","getGitLog","limit","info","entries"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/presentation/web/app/actions/get-git-log.ts","../../../../../../../src/presentation/web/.next-internal/server/app/%28dashboard%29/%40drawer/repository/%5BrepositoryId%5D/%5Btab%5D/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["'use server';\n\nimport { execFile } from 'node:child_process';\nimport { promisify } from 'node:util';\n\nconst execFileAsync = promisify(execFile);\n\nasync function git(cwd: string, args: string[]): Promise<string> {\n const { stdout } = await execFileAsync('git', args, { cwd, timeout: 5000 });\n return stdout.trim();\n}\n\nexport interface GitLogEntry {\n hash: string;\n shortHash: string;\n subject: string;\n author: string;\n relativeDate: string;\n branch?: string;\n}\n\nexport interface GitBranchInfo {\n name: string;\n isCurrent: boolean;\n lastCommitDate: string;\n}\n\nexport interface GitRemoteInfo {\n name: string;\n url: string;\n}\n\nexport interface GitWorkingTreeStatus {\n staged: number;\n modified: number;\n untracked: number;\n}\n\nexport interface GitDiffStats {\n filesChanged: number;\n insertions: number;\n deletions: number;\n}\n\nexport interface GitRepoInfo {\n commits: GitLogEntry[];\n branches: GitBranchInfo[];\n remotes: GitRemoteInfo[];\n tags: string[];\n stashCount: number;\n currentBranch: string;\n diffStats: GitDiffStats | null;\n workingTree: GitWorkingTreeStatus;\n error?: string;\n}\n\nexport async function getGitRepoInfo(\n repositoryPath: string,\n commitLimit = 8\n): Promise<GitRepoInfo> {\n const empty: GitRepoInfo = {\n commits: [],\n branches: [],\n remotes: [],\n tags: [],\n stashCount: 0,\n currentBranch: '',\n diffStats: null,\n workingTree: { staged: 0, modified: 0, untracked: 0 },\n };\n\n if (!repositoryPath.trim()) {\n return { ...empty, error: 'Repository path is required' };\n }\n\n const results = await Promise.allSettled([\n // 0: commits\n git(repositoryPath, [\n 'log',\n `--max-count=${commitLimit}`,\n '--format=%H%x00%h%x00%s%x00%an%x00%cr',\n '--no-color',\n ]),\n // 1: current branch\n git(repositoryPath, ['branch', '--show-current']),\n // 2: branches with dates\n git(repositoryPath, [\n 'branch',\n '--sort=-committerdate',\n '--format=%(HEAD)%(refname:short)%00%(committerdate:relative)',\n '--no-color',\n ]),\n // 3: remotes\n git(repositoryPath, ['remote', '-v']),\n // 4: tags (recent 5)\n git(repositoryPath, ['tag', '--sort=-creatordate', '-l', '--format=%(refname:short)']),\n // 5: stash count\n git(repositoryPath, ['stash', 'list']),\n // 6: working tree status\n git(repositoryPath, ['status', '--porcelain']),\n // 7: diff stats (uncommitted)\n git(repositoryPath, ['diff', '--shortstat']),\n ]);\n\n const val = (i: number) => (results[i].status === 'fulfilled' ? results[i].value : '');\n\n // Parse commits\n const commits: GitLogEntry[] = val(0)\n .split('\\n')\n .filter(Boolean)\n .map((line: string) => {\n const [hash, shortHash, subject, author, relativeDate] = line.split('\\0');\n return { hash, shortHash, subject, author, relativeDate };\n });\n\n const currentBranch = val(1);\n if (commits.length > 0 && currentBranch) {\n commits[0].branch = currentBranch;\n }\n\n // Parse branches\n const branches: GitBranchInfo[] = val(2)\n .split('\\n')\n .filter(Boolean)\n .slice(0, 10)\n .map((line: string) => {\n const isCurrent = line.startsWith('*');\n const clean = isCurrent ? line.slice(1) : line;\n const [name, lastCommitDate] = clean.split('\\0');\n return { name: name.trim(), isCurrent, lastCommitDate: lastCommitDate?.trim() ?? '' };\n });\n\n // Parse remotes (dedup fetch/push)\n const remoteMap = new Map<string, string>();\n val(3)\n .split('\\n')\n .filter(Boolean)\n .forEach((line: string) => {\n const match = line.match(/^(\\S+)\\s+(\\S+)\\s+\\(fetch\\)/);\n if (match) {\n // Strip credentials/tokens from URL before sending to client\n const sanitized = match[2].replace(/\\/\\/[^@]+@/, '//').replace(/x-access-token:[^@]+@/, '');\n remoteMap.set(match[1], sanitized);\n }\n });\n const remotes: GitRemoteInfo[] = Array.from(remoteMap, ([name, url]) => ({ name, url }));\n\n // Parse tags (top 5)\n const tags = val(4).split('\\n').filter(Boolean).slice(0, 5);\n\n // Stash count\n const stashCount = val(5).split('\\n').filter(Boolean).length;\n\n // Working tree status\n const statusLines = val(6).split('\\n').filter(Boolean);\n const workingTree: GitWorkingTreeStatus = { staged: 0, modified: 0, untracked: 0 };\n for (const line of statusLines) {\n const x = line[0];\n const y = line[1];\n if (x === '?' && y === '?') workingTree.untracked++;\n else if (x !== ' ' && x !== '?') workingTree.staged++;\n if (y !== ' ' && y !== '?') workingTree.modified++;\n }\n\n // Diff stats\n let diffStats: GitDiffStats | null = null;\n const diffLine = val(7);\n if (diffLine) {\n const files = diffLine.match(/(\\d+) file/);\n const ins = diffLine.match(/(\\d+) insertion/);\n const del = diffLine.match(/(\\d+) deletion/);\n diffStats = {\n filesChanged: files ? parseInt(files[1], 10) : 0,\n insertions: ins ? parseInt(ins[1], 10) : 0,\n deletions: del ? parseInt(del[1], 10) : 0,\n };\n }\n\n return { commits, branches, remotes, tags, stashCount, currentBranch, diffStats, workingTree };\n}\n\n// Keep backward compat\nexport async function getGitLog(\n repositoryPath: string,\n limit = 10\n): Promise<{ entries: GitLogEntry[]; error?: string }> {\n const info = await getGitRepoInfo(repositoryPath, limit);\n return { entries: info.commits, error: info.error };\n}\n","export {getAllAgentModels as '0001646280e908679c3138f1ac25fb2433e32dd1b9'} from 'ACTIONS_MODULE0'\nexport {updateAgentAndModel as '60c3bd7311a1d9df132c7a07881b9d9bcb86c5ecf4'} from 'ACTIONS_MODULE1'\nexport {pickFolder as '00d8fb08a7dba52132389265ec4eb081f02a547187'} from 'ACTIONS_MODULE2'\nexport {listGitHubRepositories as '409dba37e21d4549c18ca2a1ad2e151d778fc47c0a'} from 'ACTIONS_MODULE3'\nexport {listGitHubOrganizations as '0079e34070bffa2d0e7952067ffc98534044a3f47f'} from 'ACTIONS_MODULE4'\nexport {importGitHubRepository as '409bd776367ae0414e61a14766b43d6fd2f50a4fdc'} from 'ACTIONS_MODULE5'\nexport {deployFeature as '40c5d85f4158d92e322eff01a37b0c6fbfa808d924'} from 'ACTIONS_MODULE6'\nexport {deployRepository as '400c270aefa32609d2064e1074a3b9cca2ecd7ac40'} from 'ACTIONS_MODULE7'\nexport {stopDeployment as '4025e7565e144546a41753500aed288fd2e822bb35'} from 'ACTIONS_MODULE8'\nexport {getDeploymentStatus as '402dfcc9c77913dbcb80cbb028bd9325ebba11cbff'} from 'ACTIONS_MODULE9'\nexport {openIde as '400644903ed6894eedbf0b001dcbbb7e3ca3e309c7'} from 'ACTIONS_MODULE10'\nexport {openShell as '4098b761c8813bd6c7b0f130c2704912265def7222'} from 'ACTIONS_MODULE11'\nexport {openFolder as '409012491a994da842a75da0beffa5ceb08da18b4b'} from 'ACTIONS_MODULE12'\nexport {syncRepository as '404e186bc93375e8827c855048b8206ec2e95af43a'} from 'ACTIONS_MODULE13'\nexport {getDeploymentLogs as '400f6b6f5c319087323956e68e3c1af167a0097c0d'} from 'ACTIONS_MODULE14'\nexport {isAgentSetupComplete as '0020452c03f2732119e7561d4c1fba86eee90d0441'} from 'ACTIONS_MODULE15'\nexport {checkAgentAuth as '00f9cb9318f5f4e2ad95eab420832c3e2a8d80b823'} from 'ACTIONS_MODULE16'\nexport {checkToolStatus as '0079bf88ddd1853c0adb03b925c1136af2ea7b2b58'} from 'ACTIONS_MODULE17'\nexport {getFeatureMetadata as '407082b8991005bcda465d223757d9d050f8d3253a'} from 'ACTIONS_MODULE18'\nexport {archiveFeature as '40eea0d894f3ce984a612e879a6c87cd025bb05e9b'} from 'ACTIONS_MODULE19'\nexport {deleteFeature as '78534c974dbc5aa14d299e67270e0961c3fec6aacf'} from 'ACTIONS_MODULE20'\nexport {resumeFeature as '40d9bb377bc84684536d6617ebc31de0750eb63bac'} from 'ACTIONS_MODULE21'\nexport {startFeature as '4018bef3bc92ffa047953aebcb3b972add0d07fa0e'} from 'ACTIONS_MODULE22'\nexport {stopFeature as '4095611cbecd750cce932da99d031ed579999f1074'} from 'ACTIONS_MODULE23'\nexport {unarchiveFeature as '4094e1182ef68e30f7807eea0cae32386ca9e65b4b'} from 'ACTIONS_MODULE24'\nexport {addRepository as '40a9edd85d70236c79c5b5f48de3ac570508b38a59'} from 'ACTIONS_MODULE25'\nexport {deleteRepository as '40305f12b445fdd66736a073063014f5162474e9fa'} from 'ACTIONS_MODULE26'\nexport {getGitRepoInfo as '609e008e96a3b01556d124846e9c324ca5200e7986'} from 'ACTIONS_MODULE27'\n"],"names":["execFileAsync","git","cwd","args","stdout","timeout","trim","getGitRepoInfo","repositoryPath","commitLimit","empty","commits","branches","remotes","tags","stashCount","currentBranch","diffStats","workingTree","staged","modified","untracked","error","results","Promise","allSettled","val","i","status","value","split","filter","Boolean","map","line","hash","shortHash","subject","author","relativeDate","length","branch","slice","isCurrent","startsWith","clean","name","lastCommitDate","remoteMap","Map","forEach","match","sanitized","replace","set","Array","from","url","statusLines","x","y","diffLine","files","ins","del","filesChanged","parseInt","insertions","deletions","getGitLog","limit","info","entries"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
module.exports=[21447,19720,a=>{"use strict";var b=a.i(2211),c=a.i(96380),d=a.i(50961);async function e(){let a=(0,c.resolve)("LoadSettingsUseCase"),{workflow:b}=await a.execute();return{approvalGates:{allowPrd:b.approvalGateDefaults.allowPrd,allowPlan:b.approvalGateDefaults.allowPlan,allowMerge:b.approvalGateDefaults.allowMerge},push:b.approvalGateDefaults.pushOnImplementationComplete,openPr:b.openPrOnImplementationComplete,ciWatchEnabled:b.ciWatchEnabled,enableEvidence:b.enableEvidence,commitEvidence:b.commitEvidence,fast:b.defaultFastMode}}(0,d.ensureServerEntryExports)([e]),(0,b.registerServerReference)(e,"
|
|
1
|
+
module.exports=[21447,19720,a=>{"use strict";var b=a.i(2211),c=a.i(96380),d=a.i(50961);async function e(){let a=(0,c.resolve)("LoadSettingsUseCase"),{workflow:b}=await a.execute();return{approvalGates:{allowPrd:b.approvalGateDefaults.allowPrd,allowPlan:b.approvalGateDefaults.allowPlan,allowMerge:b.approvalGateDefaults.allowMerge},push:b.approvalGateDefaults.pushOnImplementationComplete,openPr:b.openPrOnImplementationComplete,ciWatchEnabled:b.ciWatchEnabled,enableEvidence:b.enableEvidence,commitEvidence:b.commitEvidence,fast:b.defaultFastMode}}(0,d.ensureServerEntryExports)([e]),(0,b.registerServerReference)(e,"00f1bbb76f1f1894d8fbe5ccca13a823e94989dd5a",null),a.s(["getWorkflowDefaults",0,e],21447);let f=new Set(["ADMIN","MAINTAIN","WRITE"]);async function g(a){try{let b=(0,c.resolve)("IGitHubRepositoryService"),d=await b.getViewerPermission(a);return{canPushDirectly:f.has(d)}}catch{return{canPushDirectly:!1}}}(0,d.ensureServerEntryExports)([g]),(0,b.registerServerReference)(g,"40a22541950e1859673db63a0fa239b98c8f097e6f",null),a.s(["getViewerPermission",0,g],19720)},77605,a=>{"use strict";var b=a.i(2211),c=a.i(96380);async function d(a){let{description:b,repositoryPath:d,attachments:e,sessionId:f,approvalGates:g,push:h,openPr:i,parentId:j,fast:k,pending:l,forkAndPr:m,commitSpecs:n,ciWatchEnabled:o,enableEvidence:p,commitEvidence:q,agentType:r,model:s,rebaseBeforeBranch:t}=a;if(!b?.trim())return{error:"description is required"};if(!d?.trim())return{error:"repositoryPath is required"};let u=function(a,b){if(!b||0===b.length)return a;let c=b.map(a=>a.notes?.trim()?`@${a.path} [Note: ${a.notes.trim()}]`:`@${a.path}`).join(" ");return`${a}
|
|
2
2
|
|
|
3
|
-
${c}`}(b,e),v={allowPrd:g?.allowPrd??!1,allowPlan:g?.allowPlan??!1,allowMerge:g?.allowMerge??!1};try{let a=(0,c.resolve)("CreateFeatureUseCase"),{feature:e,shouldSpawn:g}=await a.createRecord({userInput:u,repositoryPath:d,approvalGates:v,push:h??!1,openPr:i??!1,...j?{parentId:j}:{},description:b,...k?{fast:k}:{},...l?{pending:l}:{},...null!=m?{forkAndPr:m}:{},...null!=n?{commitSpecs:n}:{},...null!=o?{ciWatchEnabled:o}:{},...null!=p?{enableEvidence:p}:{},...null!=q?{commitEvidence:q}:{},...r?{agentType:r}:{},...s?{model:s}:{},...null!=t?{rebaseBeforeBranch:t}:{}});return a.initializeAndSpawn(e,{userInput:u,repositoryPath:d,approvalGates:v,push:h??!1,openPr:i??!1,...j?{parentId:j}:{},...k?{fast:k}:{},...l?{pending:l}:{},...null!=m?{forkAndPr:m}:{},...null!=n?{commitSpecs:n}:{},...null!=o?{ciWatchEnabled:o}:{},...null!=p?{enableEvidence:p}:{},...null!=q?{commitEvidence:q}:{},...r?{agentType:r}:{},...s?{model:s}:{},...f?{sessionId:f}:{},...null!=t?{rebaseBeforeBranch:t}:{}},g).catch(a=>{console.error("[createFeature] initializeAndSpawn failed:",a)}),{feature:e}}catch(a){return{error:a instanceof Error?a.message:"Failed to create feature"}}}(0,a.i(50961).ensureServerEntryExports)([d]),(0,b.registerServerReference)(d,"
|
|
3
|
+
${c}`}(b,e),v={allowPrd:g?.allowPrd??!1,allowPlan:g?.allowPlan??!1,allowMerge:g?.allowMerge??!1};try{let a=(0,c.resolve)("CreateFeatureUseCase"),{feature:e,shouldSpawn:g}=await a.createRecord({userInput:u,repositoryPath:d,approvalGates:v,push:h??!1,openPr:i??!1,...j?{parentId:j}:{},description:b,...k?{fast:k}:{},...l?{pending:l}:{},...null!=m?{forkAndPr:m}:{},...null!=n?{commitSpecs:n}:{},...null!=o?{ciWatchEnabled:o}:{},...null!=p?{enableEvidence:p}:{},...null!=q?{commitEvidence:q}:{},...r?{agentType:r}:{},...s?{model:s}:{},...null!=t?{rebaseBeforeBranch:t}:{}});return a.initializeAndSpawn(e,{userInput:u,repositoryPath:d,approvalGates:v,push:h??!1,openPr:i??!1,...j?{parentId:j}:{},...k?{fast:k}:{},...l?{pending:l}:{},...null!=m?{forkAndPr:m}:{},...null!=n?{commitSpecs:n}:{},...null!=o?{ciWatchEnabled:o}:{},...null!=p?{enableEvidence:p}:{},...null!=q?{commitEvidence:q}:{},...r?{agentType:r}:{},...s?{model:s}:{},...f?{sessionId:f}:{},...null!=t?{rebaseBeforeBranch:t}:{}},g).catch(a=>{console.error("[createFeature] initializeAndSpawn failed:",a)}),{feature:e}}catch(a){return{error:a instanceof Error?a.message:"Failed to create feature"}}}(0,a.i(50961).ensureServerEntryExports)([d]),(0,b.registerServerReference)(d,"40db41890e6c3231cc280da8d122da36be957442c6",null),a.s(["createFeature",0,d],77605)},71100,a=>{"use strict";var b=a.i(23504),c=a.i(27900),d=a.i(12513),e=a.i(73101),f=a.i(54775),g=a.i(65324),h=a.i(33841),i=a.i(46646),j=a.i(68670),k=a.i(85321),l=a.i(84095),m=a.i(56799),n=a.i(80496),o=a.i(93225),p=a.i(94691),q=a.i(41872),r=a.i(9959),s=a.i(79124),t=a.i(29207),u=a.i(10528),v=a.i(50845),w=a.i(26604),x=a.i(54723),y=a.i(18942),z=a.i(42886),A=a.i(49560),B=a.i(39353),C=a.i(21447),D=a.i(19720),E=a.i(77605);a.s([],82094),a.i(82094),a.s(["0001646280e908679c3138f1ac25fb2433e32dd1b9",()=>b.getAllAgentModels,"0020452c03f2732119e7561d4c1fba86eee90d0441",()=>q.isAgentSetupComplete,"0079bf88ddd1853c0adb03b925c1136af2ea7b2b58",()=>s.checkToolStatus,"0079e34070bffa2d0e7952067ffc98534044a3f47f",()=>f.listGitHubOrganizations,"00d8fb08a7dba52132389265ec4eb081f02a547187",()=>d.pickFolder,"00f1bbb76f1f1894d8fbe5ccca13a823e94989dd5a",()=>C.getWorkflowDefaults,"00f9cb9318f5f4e2ad95eab420832c3e2a8d80b823",()=>r.checkAgentAuth,"400644903ed6894eedbf0b001dcbbb7e3ca3e309c7",()=>l.openIde,"400c270aefa32609d2064e1074a3b9cca2ecd7ac40",()=>i.deployRepository,"400f6b6f5c319087323956e68e3c1af167a0097c0d",()=>p.getDeploymentLogs,"4018bef3bc92ffa047953aebcb3b972add0d07fa0e",()=>x.startFeature,"4025e7565e144546a41753500aed288fd2e822bb35",()=>j.stopDeployment,"402dfcc9c77913dbcb80cbb028bd9325ebba11cbff",()=>k.getDeploymentStatus,"40305f12b445fdd66736a073063014f5162474e9fa",()=>B.deleteRepository,"404e186bc93375e8827c855048b8206ec2e95af43a",()=>o.syncRepository,"407082b8991005bcda465d223757d9d050f8d3253a",()=>t.getFeatureMetadata,"409012491a994da842a75da0beffa5ceb08da18b4b",()=>n.openFolder,"4094e1182ef68e30f7807eea0cae32386ca9e65b4b",()=>z.unarchiveFeature,"4095611cbecd750cce932da99d031ed579999f1074",()=>y.stopFeature,"4098b761c8813bd6c7b0f130c2704912265def7222",()=>m.openShell,"409bd776367ae0414e61a14766b43d6fd2f50a4fdc",()=>g.importGitHubRepository,"409dba37e21d4549c18ca2a1ad2e151d778fc47c0a",()=>e.listGitHubRepositories,"40a22541950e1859673db63a0fa239b98c8f097e6f",()=>D.getViewerPermission,"40a9edd85d70236c79c5b5f48de3ac570508b38a59",()=>A.addRepository,"40c5d85f4158d92e322eff01a37b0c6fbfa808d924",()=>h.deployFeature,"40d9bb377bc84684536d6617ebc31de0750eb63bac",()=>w.resumeFeature,"40db41890e6c3231cc280da8d122da36be957442c6",()=>E.createFeature,"40eea0d894f3ce984a612e879a6c87cd025bb05e9b",()=>u.archiveFeature,"60c3bd7311a1d9df132c7a07881b9d9bcb86c5ecf4",()=>c.updateAgentAndModel,"78534c974dbc5aa14d299e67270e0961c3fec6aacf",()=>v.deleteFeature],71100)}];
|
|
4
4
|
|
|
5
5
|
//# sourceMappingURL=src_presentation_web_06b6~lt._.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/presentation/web/app/actions/get-workflow-defaults.ts","../../../../../../../src/presentation/web/app/actions/get-viewer-permission.ts","../../../../../../../src/presentation/web/app/actions/create-feature.ts","../../../../../../../src/presentation/web/app/actions/compose-user-input.ts","../../../../../../../src/presentation/web/.next-internal/server/app/%28dashboard%29/%40drawer/create/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { LoadSettingsUseCase } from '@shipit-ai/core/application/use-cases/settings/load-settings.use-case';\n\nexport interface WorkflowDefaults {\n approvalGates: {\n allowPrd: boolean;\n allowPlan: boolean;\n allowMerge: boolean;\n };\n push: boolean;\n openPr: boolean;\n ciWatchEnabled: boolean;\n enableEvidence: boolean;\n commitEvidence: boolean;\n fast: boolean;\n}\n\nexport async function getWorkflowDefaults(): Promise<WorkflowDefaults> {\n const loadSettings = resolve<LoadSettingsUseCase>('LoadSettingsUseCase');\n const settings = await loadSettings.execute();\n const { workflow } = settings;\n\n return {\n approvalGates: {\n allowPrd: workflow.approvalGateDefaults.allowPrd,\n allowPlan: workflow.approvalGateDefaults.allowPlan,\n allowMerge: workflow.approvalGateDefaults.allowMerge,\n },\n push: workflow.approvalGateDefaults.pushOnImplementationComplete,\n openPr: workflow.openPrOnImplementationComplete,\n ciWatchEnabled: workflow.ciWatchEnabled,\n enableEvidence: workflow.enableEvidence,\n commitEvidence: workflow.commitEvidence,\n fast: workflow.defaultFastMode,\n };\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { IGitHubRepositoryService } from '@shipit-ai/core/application/ports/output/services/github-repository-service.interface';\n\n/** Permissions that grant direct push access to a repository. */\nconst PUSH_PERMISSIONS = new Set(['ADMIN', 'MAINTAIN', 'WRITE']);\n\nexport async function getViewerPermission(repoPath: string): Promise<{ canPushDirectly: boolean }> {\n try {\n const service = resolve<IGitHubRepositoryService>('IGitHubRepositoryService');\n const permission = await service.getViewerPermission(repoPath);\n return { canPushDirectly: PUSH_PERMISSIONS.has(permission) };\n } catch {\n return { canPushDirectly: false };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { CreateFeatureUseCase } from '@shipit-ai/core/application/use-cases/features/create/create-feature.use-case';\nimport type { Feature } from '@shipit-ai/core/domain/generated/output';\nimport { composeUserInput } from './compose-user-input';\n\ninterface Attachment {\n path: string;\n name: string;\n notes?: string;\n}\n\ninterface ApprovalGates {\n allowPrd: boolean;\n allowPlan: boolean;\n allowMerge: boolean;\n}\n\ninterface CreateFeatureInput {\n description: string;\n repositoryPath: string;\n attachments?: Attachment[];\n sessionId?: string;\n approvalGates?: {\n allowPrd: boolean;\n allowPlan: boolean;\n allowMerge?: boolean;\n };\n push?: boolean;\n openPr?: boolean;\n parentId?: string;\n /** When true, skip SDLC phases and implement directly from the prompt. */\n fast?: boolean;\n /** When true, create the feature in pending state (no agent spawned). */\n pending?: boolean;\n /** Fork repo and create PR to upstream at merge time. */\n forkAndPr?: boolean;\n /** Commit specs/evidences into the repo (default: true, auto-false when forkAndPr). */\n commitSpecs?: boolean;\n /** Enable CI watch/fix loop after push. */\n ciWatchEnabled?: boolean;\n /** Enable evidence collection after implementation. */\n enableEvidence?: boolean;\n /** Commit evidence to PR. */\n commitEvidence?: boolean;\n /** Optional agent type override for this feature run */\n agentType?: string;\n /** Optional model identifier for this feature run */\n model?: string;\n /** Sync main from remote before creating the feature branch (default: true). */\n rebaseBeforeBranch?: boolean;\n}\n\nexport async function createFeature(\n input: CreateFeatureInput\n): Promise<{ feature?: Feature; error?: string }> {\n const {\n description,\n repositoryPath,\n attachments,\n sessionId,\n approvalGates,\n push,\n openPr,\n parentId,\n fast,\n pending,\n forkAndPr,\n commitSpecs,\n ciWatchEnabled,\n enableEvidence,\n commitEvidence,\n agentType,\n model,\n rebaseBeforeBranch,\n } = input;\n\n if (!description?.trim()) {\n return { error: 'description is required' };\n }\n\n if (!repositoryPath?.trim()) {\n return { error: 'repositoryPath is required' };\n }\n\n const userInput = composeUserInput(description, attachments);\n const gates: ApprovalGates = {\n allowPrd: approvalGates?.allowPrd ?? false,\n allowPlan: approvalGates?.allowPlan ?? false,\n allowMerge: approvalGates?.allowMerge ?? false,\n };\n\n try {\n const createFeatureUseCase = resolve<CreateFeatureUseCase>('CreateFeatureUseCase');\n\n // Phase 1 (fast): create DB record with real UUID — returns immediately\n const { feature, shouldSpawn } = await createFeatureUseCase.createRecord({\n userInput,\n repositoryPath,\n approvalGates: gates,\n push: push ?? false,\n openPr: openPr ?? false,\n ...(parentId ? { parentId } : {}),\n description,\n ...(fast ? { fast } : {}),\n ...(pending ? { pending } : {}),\n ...(forkAndPr != null ? { forkAndPr } : {}),\n ...(commitSpecs != null ? { commitSpecs } : {}),\n ...(ciWatchEnabled != null ? { ciWatchEnabled } : {}),\n ...(enableEvidence != null ? { enableEvidence } : {}),\n ...(commitEvidence != null ? { commitEvidence } : {}),\n ...(agentType ? { agentType } : {}),\n ...(model ? { model } : {}),\n ...(rebaseBeforeBranch != null ? { rebaseBeforeBranch } : {}),\n });\n\n // Phase 2 (background): metadata generation, worktree, spec, agent spawn\n // Fire-and-forget — the UI gets the real feature ID immediately\n createFeatureUseCase\n .initializeAndSpawn(\n feature,\n {\n userInput,\n repositoryPath,\n approvalGates: gates,\n push: push ?? false,\n openPr: openPr ?? false,\n ...(parentId ? { parentId } : {}),\n ...(fast ? { fast } : {}),\n ...(pending ? { pending } : {}),\n ...(forkAndPr != null ? { forkAndPr } : {}),\n ...(commitSpecs != null ? { commitSpecs } : {}),\n ...(ciWatchEnabled != null ? { ciWatchEnabled } : {}),\n ...(enableEvidence != null ? { enableEvidence } : {}),\n ...(commitEvidence != null ? { commitEvidence } : {}),\n ...(agentType ? { agentType } : {}),\n ...(model ? { model } : {}),\n ...(sessionId ? { sessionId } : {}),\n ...(rebaseBeforeBranch != null ? { rebaseBeforeBranch } : {}),\n },\n shouldSpawn\n )\n .catch((err: unknown) => {\n // eslint-disable-next-line no-console\n console.error('[createFeature] initializeAndSpawn failed:', err);\n });\n\n return { feature };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to create feature';\n return { error: message };\n }\n}\n","interface Attachment {\n path: string;\n name: string;\n notes?: string;\n}\n\nexport function composeUserInput(\n description: string,\n attachments: Attachment[] | undefined\n): string {\n if (!attachments || attachments.length === 0) {\n return description;\n }\n\n const refs = attachments\n .map((a) => (a.notes?.trim() ? `@${a.path} [Note: ${a.notes.trim()}]` : `@${a.path}`))\n .join(' ');\n return `${description}\\n\\n${refs}`;\n}\n","export {getAllAgentModels as '0063d960a1e4655e04c9527d3f0a97fc9dfaf90e25'} from 'ACTIONS_MODULE0'\nexport {updateAgentAndModel as '603f1c8b771ea07b92d719de27f8ff2db85705ce27'} from 'ACTIONS_MODULE1'\nexport {pickFolder as '00da9dd4653d294d92ba4a213413259db6c5b1dd3f'} from 'ACTIONS_MODULE2'\nexport {listGitHubRepositories as '404d39fe5caf186d1c0838e290bf736069e9c7a5e3'} from 'ACTIONS_MODULE3'\nexport {listGitHubOrganizations as '00c1ea9a6acbcccdb38c1dbf965df6cd90d181e8dc'} from 'ACTIONS_MODULE4'\nexport {importGitHubRepository as '40db7f449fd40f063c30a64cad52dedd38db6cc68a'} from 'ACTIONS_MODULE5'\nexport {deployFeature as '406c32a8dcec51d98ca7209989a96bcc211da43f1a'} from 'ACTIONS_MODULE6'\nexport {deployRepository as '400b67f4dbbbd6ec44a1f8fb15d9982d3af9cf2f3f'} from 'ACTIONS_MODULE7'\nexport {stopDeployment as '403e76cfc92b40504c0cc5f23a7a524c1e08a0f269'} from 'ACTIONS_MODULE8'\nexport {getDeploymentStatus as '40338c79072aed58cfe9a0b65a452d5c9f6cf14ec8'} from 'ACTIONS_MODULE9'\nexport {openIde as '40f4a566f8ad38a7a04c7f8de1ba937e68b7b4d0b9'} from 'ACTIONS_MODULE10'\nexport {openShell as '40b5039e1d0456ca864aefdc86c6f151de5ea114bd'} from 'ACTIONS_MODULE11'\nexport {openFolder as '4062c7773c7615ff725e24ff2c9c88cdaf65138292'} from 'ACTIONS_MODULE12'\nexport {syncRepository as '409f5aed614351ffa3b83f2c1e50bc39b42a598206'} from 'ACTIONS_MODULE13'\nexport {getDeploymentLogs as '40227625f5029cdced4c34de5751400c4dcfb84d25'} from 'ACTIONS_MODULE14'\nexport {isAgentSetupComplete as '00419e0d1ade61c590d866570d346f425d76e1256c'} from 'ACTIONS_MODULE15'\nexport {checkAgentAuth as '00877403a672b3c071f5b3473952d8ff1328a6050e'} from 'ACTIONS_MODULE16'\nexport {checkToolStatus as '00fc9496d19a60d5861389e9d11ad65eb7f5e70f85'} from 'ACTIONS_MODULE17'\nexport {getFeatureMetadata as '40d95b431ae8f504e22a9503dc21155a443b1a5566'} from 'ACTIONS_MODULE18'\nexport {archiveFeature as '40ec2622c929f3c2b28cb9832fca5958185aba7f79'} from 'ACTIONS_MODULE19'\nexport {deleteFeature as '78bdcef2bb0d67a6f7df636a86c616532d8ee45031'} from 'ACTIONS_MODULE20'\nexport {resumeFeature as '40adcbc49975d3124cda4580941fb7b21d1caacdc5'} from 'ACTIONS_MODULE21'\nexport {startFeature as '40b391b7606e291b56829fe45341f598904cdd3bf6'} from 'ACTIONS_MODULE22'\nexport {stopFeature as '40b705572a498acdf4d32739f8e727cac6cbac911c'} from 'ACTIONS_MODULE23'\nexport {unarchiveFeature as '405442f1421a5ad4ea3d493ba4219739c81ca344ed'} from 'ACTIONS_MODULE24'\nexport {addRepository as '40a176148d42295602ba233f835c63b7da5df8e4bd'} from 'ACTIONS_MODULE25'\nexport {deleteRepository as '402dde29c47e8f11112d47bcd28f2424991b64c39a'} from 'ACTIONS_MODULE26'\nexport {getWorkflowDefaults as '00bc1bb098f36a8595e2e8a436429a173d7f9d4c5f'} from 'ACTIONS_MODULE27'\nexport {getViewerPermission as '4002062177d6c16608b0f1c195af4d8e64058f0cbd'} from 'ACTIONS_MODULE28'\nexport {createFeature as '40c893afec92786b20a6a32cd02eccf54d0142c269'} from 'ACTIONS_MODULE29'\nexport {getViewerPermission as '4002062177d6c16608b0f1c195af4d8e64058f0cbd'} from 'ACTIONS_MODULE28'\n"],"names":["getWorkflowDefaults","loadSettings","settings","execute","workflow","approvalGates","allowPrd","approvalGateDefaults","allowPlan","allowMerge","push","pushOnImplementationComplete","openPr","openPrOnImplementationComplete","ciWatchEnabled","enableEvidence","commitEvidence","fast","defaultFastMode","composeUserInput","description","attachments","length","refs","map","a","notes","trim","path","join"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/presentation/web/app/actions/get-workflow-defaults.ts","../../../../../../../src/presentation/web/app/actions/get-viewer-permission.ts","../../../../../../../src/presentation/web/app/actions/create-feature.ts","../../../../../../../src/presentation/web/app/actions/compose-user-input.ts","../../../../../../../src/presentation/web/.next-internal/server/app/%28dashboard%29/%40drawer/create/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { LoadSettingsUseCase } from '@shipit-ai/core/application/use-cases/settings/load-settings.use-case';\n\nexport interface WorkflowDefaults {\n approvalGates: {\n allowPrd: boolean;\n allowPlan: boolean;\n allowMerge: boolean;\n };\n push: boolean;\n openPr: boolean;\n ciWatchEnabled: boolean;\n enableEvidence: boolean;\n commitEvidence: boolean;\n fast: boolean;\n}\n\nexport async function getWorkflowDefaults(): Promise<WorkflowDefaults> {\n const loadSettings = resolve<LoadSettingsUseCase>('LoadSettingsUseCase');\n const settings = await loadSettings.execute();\n const { workflow } = settings;\n\n return {\n approvalGates: {\n allowPrd: workflow.approvalGateDefaults.allowPrd,\n allowPlan: workflow.approvalGateDefaults.allowPlan,\n allowMerge: workflow.approvalGateDefaults.allowMerge,\n },\n push: workflow.approvalGateDefaults.pushOnImplementationComplete,\n openPr: workflow.openPrOnImplementationComplete,\n ciWatchEnabled: workflow.ciWatchEnabled,\n enableEvidence: workflow.enableEvidence,\n commitEvidence: workflow.commitEvidence,\n fast: workflow.defaultFastMode,\n };\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { IGitHubRepositoryService } from '@shipit-ai/core/application/ports/output/services/github-repository-service.interface';\n\n/** Permissions that grant direct push access to a repository. */\nconst PUSH_PERMISSIONS = new Set(['ADMIN', 'MAINTAIN', 'WRITE']);\n\nexport async function getViewerPermission(repoPath: string): Promise<{ canPushDirectly: boolean }> {\n try {\n const service = resolve<IGitHubRepositoryService>('IGitHubRepositoryService');\n const permission = await service.getViewerPermission(repoPath);\n return { canPushDirectly: PUSH_PERMISSIONS.has(permission) };\n } catch {\n return { canPushDirectly: false };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { CreateFeatureUseCase } from '@shipit-ai/core/application/use-cases/features/create/create-feature.use-case';\nimport type { Feature } from '@shipit-ai/core/domain/generated/output';\nimport { composeUserInput } from './compose-user-input';\n\ninterface Attachment {\n path: string;\n name: string;\n notes?: string;\n}\n\ninterface ApprovalGates {\n allowPrd: boolean;\n allowPlan: boolean;\n allowMerge: boolean;\n}\n\ninterface CreateFeatureInput {\n description: string;\n repositoryPath: string;\n attachments?: Attachment[];\n sessionId?: string;\n approvalGates?: {\n allowPrd: boolean;\n allowPlan: boolean;\n allowMerge?: boolean;\n };\n push?: boolean;\n openPr?: boolean;\n parentId?: string;\n /** When true, skip SDLC phases and implement directly from the prompt. */\n fast?: boolean;\n /** When true, create the feature in pending state (no agent spawned). */\n pending?: boolean;\n /** Fork repo and create PR to upstream at merge time. */\n forkAndPr?: boolean;\n /** Commit specs/evidences into the repo (default: true, auto-false when forkAndPr). */\n commitSpecs?: boolean;\n /** Enable CI watch/fix loop after push. */\n ciWatchEnabled?: boolean;\n /** Enable evidence collection after implementation. */\n enableEvidence?: boolean;\n /** Commit evidence to PR. */\n commitEvidence?: boolean;\n /** Optional agent type override for this feature run */\n agentType?: string;\n /** Optional model identifier for this feature run */\n model?: string;\n /** Sync main from remote before creating the feature branch (default: true). */\n rebaseBeforeBranch?: boolean;\n}\n\nexport async function createFeature(\n input: CreateFeatureInput\n): Promise<{ feature?: Feature; error?: string }> {\n const {\n description,\n repositoryPath,\n attachments,\n sessionId,\n approvalGates,\n push,\n openPr,\n parentId,\n fast,\n pending,\n forkAndPr,\n commitSpecs,\n ciWatchEnabled,\n enableEvidence,\n commitEvidence,\n agentType,\n model,\n rebaseBeforeBranch,\n } = input;\n\n if (!description?.trim()) {\n return { error: 'description is required' };\n }\n\n if (!repositoryPath?.trim()) {\n return { error: 'repositoryPath is required' };\n }\n\n const userInput = composeUserInput(description, attachments);\n const gates: ApprovalGates = {\n allowPrd: approvalGates?.allowPrd ?? false,\n allowPlan: approvalGates?.allowPlan ?? false,\n allowMerge: approvalGates?.allowMerge ?? false,\n };\n\n try {\n const createFeatureUseCase = resolve<CreateFeatureUseCase>('CreateFeatureUseCase');\n\n // Phase 1 (fast): create DB record with real UUID — returns immediately\n const { feature, shouldSpawn } = await createFeatureUseCase.createRecord({\n userInput,\n repositoryPath,\n approvalGates: gates,\n push: push ?? false,\n openPr: openPr ?? false,\n ...(parentId ? { parentId } : {}),\n description,\n ...(fast ? { fast } : {}),\n ...(pending ? { pending } : {}),\n ...(forkAndPr != null ? { forkAndPr } : {}),\n ...(commitSpecs != null ? { commitSpecs } : {}),\n ...(ciWatchEnabled != null ? { ciWatchEnabled } : {}),\n ...(enableEvidence != null ? { enableEvidence } : {}),\n ...(commitEvidence != null ? { commitEvidence } : {}),\n ...(agentType ? { agentType } : {}),\n ...(model ? { model } : {}),\n ...(rebaseBeforeBranch != null ? { rebaseBeforeBranch } : {}),\n });\n\n // Phase 2 (background): metadata generation, worktree, spec, agent spawn\n // Fire-and-forget — the UI gets the real feature ID immediately\n createFeatureUseCase\n .initializeAndSpawn(\n feature,\n {\n userInput,\n repositoryPath,\n approvalGates: gates,\n push: push ?? false,\n openPr: openPr ?? false,\n ...(parentId ? { parentId } : {}),\n ...(fast ? { fast } : {}),\n ...(pending ? { pending } : {}),\n ...(forkAndPr != null ? { forkAndPr } : {}),\n ...(commitSpecs != null ? { commitSpecs } : {}),\n ...(ciWatchEnabled != null ? { ciWatchEnabled } : {}),\n ...(enableEvidence != null ? { enableEvidence } : {}),\n ...(commitEvidence != null ? { commitEvidence } : {}),\n ...(agentType ? { agentType } : {}),\n ...(model ? { model } : {}),\n ...(sessionId ? { sessionId } : {}),\n ...(rebaseBeforeBranch != null ? { rebaseBeforeBranch } : {}),\n },\n shouldSpawn\n )\n .catch((err: unknown) => {\n // eslint-disable-next-line no-console\n console.error('[createFeature] initializeAndSpawn failed:', err);\n });\n\n return { feature };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to create feature';\n return { error: message };\n }\n}\n","interface Attachment {\n path: string;\n name: string;\n notes?: string;\n}\n\nexport function composeUserInput(\n description: string,\n attachments: Attachment[] | undefined\n): string {\n if (!attachments || attachments.length === 0) {\n return description;\n }\n\n const refs = attachments\n .map((a) => (a.notes?.trim() ? `@${a.path} [Note: ${a.notes.trim()}]` : `@${a.path}`))\n .join(' ');\n return `${description}\\n\\n${refs}`;\n}\n","export {getAllAgentModels as '0001646280e908679c3138f1ac25fb2433e32dd1b9'} from 'ACTIONS_MODULE0'\nexport {updateAgentAndModel as '60c3bd7311a1d9df132c7a07881b9d9bcb86c5ecf4'} from 'ACTIONS_MODULE1'\nexport {pickFolder as '00d8fb08a7dba52132389265ec4eb081f02a547187'} from 'ACTIONS_MODULE2'\nexport {listGitHubRepositories as '409dba37e21d4549c18ca2a1ad2e151d778fc47c0a'} from 'ACTIONS_MODULE3'\nexport {listGitHubOrganizations as '0079e34070bffa2d0e7952067ffc98534044a3f47f'} from 'ACTIONS_MODULE4'\nexport {importGitHubRepository as '409bd776367ae0414e61a14766b43d6fd2f50a4fdc'} from 'ACTIONS_MODULE5'\nexport {deployFeature as '40c5d85f4158d92e322eff01a37b0c6fbfa808d924'} from 'ACTIONS_MODULE6'\nexport {deployRepository as '400c270aefa32609d2064e1074a3b9cca2ecd7ac40'} from 'ACTIONS_MODULE7'\nexport {stopDeployment as '4025e7565e144546a41753500aed288fd2e822bb35'} from 'ACTIONS_MODULE8'\nexport {getDeploymentStatus as '402dfcc9c77913dbcb80cbb028bd9325ebba11cbff'} from 'ACTIONS_MODULE9'\nexport {openIde as '400644903ed6894eedbf0b001dcbbb7e3ca3e309c7'} from 'ACTIONS_MODULE10'\nexport {openShell as '4098b761c8813bd6c7b0f130c2704912265def7222'} from 'ACTIONS_MODULE11'\nexport {openFolder as '409012491a994da842a75da0beffa5ceb08da18b4b'} from 'ACTIONS_MODULE12'\nexport {syncRepository as '404e186bc93375e8827c855048b8206ec2e95af43a'} from 'ACTIONS_MODULE13'\nexport {getDeploymentLogs as '400f6b6f5c319087323956e68e3c1af167a0097c0d'} from 'ACTIONS_MODULE14'\nexport {isAgentSetupComplete as '0020452c03f2732119e7561d4c1fba86eee90d0441'} from 'ACTIONS_MODULE15'\nexport {checkAgentAuth as '00f9cb9318f5f4e2ad95eab420832c3e2a8d80b823'} from 'ACTIONS_MODULE16'\nexport {checkToolStatus as '0079bf88ddd1853c0adb03b925c1136af2ea7b2b58'} from 'ACTIONS_MODULE17'\nexport {getFeatureMetadata as '407082b8991005bcda465d223757d9d050f8d3253a'} from 'ACTIONS_MODULE18'\nexport {archiveFeature as '40eea0d894f3ce984a612e879a6c87cd025bb05e9b'} from 'ACTIONS_MODULE19'\nexport {deleteFeature as '78534c974dbc5aa14d299e67270e0961c3fec6aacf'} from 'ACTIONS_MODULE20'\nexport {resumeFeature as '40d9bb377bc84684536d6617ebc31de0750eb63bac'} from 'ACTIONS_MODULE21'\nexport {startFeature as '4018bef3bc92ffa047953aebcb3b972add0d07fa0e'} from 'ACTIONS_MODULE22'\nexport {stopFeature as '4095611cbecd750cce932da99d031ed579999f1074'} from 'ACTIONS_MODULE23'\nexport {unarchiveFeature as '4094e1182ef68e30f7807eea0cae32386ca9e65b4b'} from 'ACTIONS_MODULE24'\nexport {addRepository as '40a9edd85d70236c79c5b5f48de3ac570508b38a59'} from 'ACTIONS_MODULE25'\nexport {deleteRepository as '40305f12b445fdd66736a073063014f5162474e9fa'} from 'ACTIONS_MODULE26'\nexport {getWorkflowDefaults as '00f1bbb76f1f1894d8fbe5ccca13a823e94989dd5a'} from 'ACTIONS_MODULE27'\nexport {getViewerPermission as '40a22541950e1859673db63a0fa239b98c8f097e6f'} from 'ACTIONS_MODULE28'\nexport {createFeature as '40db41890e6c3231cc280da8d122da36be957442c6'} from 'ACTIONS_MODULE29'\nexport {getViewerPermission as '40a22541950e1859673db63a0fa239b98c8f097e6f'} from 'ACTIONS_MODULE28'\n"],"names":["getWorkflowDefaults","loadSettings","settings","execute","workflow","approvalGates","allowPrd","approvalGateDefaults","allowPlan","allowMerge","push","pushOnImplementationComplete","openPr","openPrOnImplementationComplete","ciWatchEnabled","enableEvidence","commitEvidence","fast","defaultFastMode","composeUserInput","description","attachments","length","refs","map","a","notes","trim","path","join"],"mappings":"6DAEA,EAAA,EAAA,CAAA,CAAA,oBAiBO,eAAeA,IACpB,IAAMC,EAAe,CAAA,EAAA,EAAA,OAAA,AAAO,EAAsB,uBAE5C,UAAEG,CAAQ,CAAE,CADD,EACIF,IADED,EAAaE,OAAO,GAG3C,MAAO,CACLE,cAAe,CACbC,SAAUF,EAASG,oBAAoB,CAACD,QAAQ,CAChDE,UAAWJ,EAASG,oBAAoB,CAACC,SAAS,CAClDC,WAAYL,EAASG,oBAAoB,CAACE,UAAU,AACtD,EACAC,KAAMN,EAASG,oBAAoB,CAACI,4BAA4B,CAChEC,OAAQR,EAASS,8BAA8B,CAC/CC,eAAgBV,EAASU,cAAc,CACvCC,eAAgBX,EAASW,cAAc,CACvCC,eAAgBZ,EAASY,cAAc,CACvCC,KAAMb,EAASc,eAAe,AAChC,CACF,iCAlBsBlB,IAAAA,CAAAA,EAAAA,EAAAA,uBAAAA,EAAAA,EAAAA,6CAAAA,6CCbtB,IAAM,EAAmB,IAAI,IAAI,CAAC,QAAS,WAAY,QAAQ,EAExD,eAAe,EAAoB,CAAgB,EACxD,GAAI,CACF,IAAM,EAAU,CAAA,EAAA,EAAA,OAAA,AAAO,EAA2B,4BAC5C,EAAa,MAAM,EAAQ,mBAAmB,CAAC,GACrD,MAAO,CAAE,gBAAiB,EAAiB,GAAG,CAAC,EAAYI,CAC7D,CAAE,KAAMF,CACN,MAAO,CAAE,iBAAiB,CAAM,CAClC,CACF,iCARsB,IAAA,CAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,6CAAA,qFCNtB,EAAA,EAAA,CAAA,CAAA,OAoDO,eAAe,EACpB,CAAyB,EAEzB,GAAM,aACJ,CAAW,gBACX,CAAc,aACd,CAAW,WACX,CAAS,eACT,CAAa,MACb,CAAI,QACJ,CAAM,UACN,CAAQ,MACR,CAAI,SACJ,CAAO,WACP,CAAS,CACT,aAAW,gBACX,CAAc,gBACd,CAAc,CACd,gBAAc,WACd,CAAS,OACT,CAAK,oBACL,CAAkB,CACnB,CAAG,EAEJ,GAAI,CAAC,GAAa,OAChB,CADwB,KACjB,CAAE,MAAO,yBAA0B,EAG5C,GAAI,CAAC,GAAgB,OACnB,CAD2B,KACpB,CAAE,MAAO,4BAA6B,EAG/C,IAAM,EAAY,AChFb,SAASiB,AACdC,CAAmB,CACnBC,CAAqC,EAErC,GAAI,CAACA,GAAsC,GAAG,CAA1BA,EAAYC,MAAM,CACpC,OAAOF,EAGT,IAAMG,EAAOF,EACVG,GAAG,CAAC,AAACC,GAAOA,EAAEC,KAAK,EAAEC,OAAS,CAAC,CAAC,EAAEF,EAAEG,IAAI,CAAC,QAAQ,EAAEH,EAAEC,KAAK,CAACC,IAAI,GAAG,CAAC,CAAC,CAAG,CAAC,CAAC,EAAEF,EAAEG,IAAI,CAAA,CAAE,EACnFC,IAAI,CAAC,KACR,MAAO,CAAA,EAAGT,YAAY;AAAA;AAAI,EAAEG,EAAAA,CAAM,AACpC,EDoEqC,EAAa,GAC1C,EAAuB,CAC3B,SAAU,GAAe,WAAY,EACrC,UAAW,GAAe,YAAa,EACvC,WAAY,GAAe,aAAc,CAC3C,EAEA,GAAI,CACF,IAAM,EAAuB,CAAA,EAAA,EAAA,OAAO,AAAP,EAA8B,wBAGrD,SAAE,CAAO,aAAE,CAAW,CAAE,CAAG,MAAM,EAAqB,YAAY,CAAC,WACvE,iBACA,EACA,cAAe,EACf,KAAM,IAAQ,EACd,OAAQ,IAAU,EAClB,GAAI,EAAW,UAAE,CAAS,EAAI,CAAC,CAAC,aAChC,EACA,GAAI,EAAO,MAAE,CAAK,EAAI,CAAC,CAAC,CACxB,GAAI,EAAU,SAAE,CAAQ,EAAI,CAAC,CAAC,CAC9B,GAAiB,MAAb,EAAoB,WAAE,CAAU,EAAI,CAAC,CAAC,CAC1C,GAAmB,MAAf,EAAsB,CAAE,aAAY,EAAI,CAAC,CAAC,CAC9C,GAAsB,MAAlB,EAAyB,gBAAE,CAAe,EAAI,CAAC,CAAC,CACpD,GAAsB,MAAlB,EAAyB,gBAAE,CAAe,EAAI,CAAC,CAAC,CACpD,GAAsB,MAAlB,EAAyB,CAAE,gBAAe,EAAI,CAAC,CAAC,CACpD,GAAI,EAAY,WAAE,CAAU,EAAI,CAAC,CAAC,CAClC,GAAI,EAAQ,OAAE,CAAM,EAAI,CAAC,CAAC,CAC1B,GAA0B,MAAtB,EAA6B,oBAAE,CAAmB,EAAI,CAAC,CAAC,AAC9D,GAiCA,OA7BA,EACG,kBAAkB,CACjB,EACA,WACE,iBACA,EACA,cAAe,EACf,KAAM,IAAQ,EACd,OAAQ,IAAU,EAClB,GAAI,EAAW,UAAE,CAAS,EAAI,CAAC,CAAC,CAChC,GAAI,EAAO,CAAE,MAAK,EAAI,CAAC,CAAC,CACxB,GAAI,EAAU,SAAE,CAAQ,EAAI,CAAC,CAAC,CAC9B,GAAiB,MAAb,EAAoB,WAAE,CAAU,EAAI,CAAC,CAAC,CAC1C,GAAmB,MAAf,EAAsB,aAAE,CAAY,EAAI,CAAC,CAAC,CAC9C,GAAsB,MAAlB,EAAyB,gBAAE,CAAe,EAAI,CAAC,CAAC,CACpD,GAAsB,MAAlB,EAAyB,gBAAE,CAAe,EAAI,CAAC,CAAC,CACpD,GAAI,AAAkB,QAAO,CAAE,gBAAe,EAAI,CAAC,CAAC,CACpD,GAAI,EAAY,WAAE,CAAU,EAAI,CAAC,CAAC,CAClC,GAAI,EAAQ,OAAE,CAAM,EAAI,CAAC,CAAC,CAC1B,GAAI,EAAY,WAAE,CAAU,EAAI,CAAC,CAAC,CAClC,GAAI,AAAsB,QAAO,oBAAE,CAAmB,EAAI,CAAC,CAAC,AAC9D,EACA,GAED,KAAK,CAAC,AAAC,IAEN,QAAQ,KAAK,CAAC,6CAA8C,EAC9D,GAEK,SAAE,CAAQ,CACnB,CAAE,MAAO,EAAgB,CAEvB,MAAO,CAAE,MADO,CACA,YADiB,MAAQ,EAAM,OAAO,CAAG,0BACjC,CAC1B,CACF,0CAnGsB,IAAA,CAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,6CAAA,+DEtDtB,IAAA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,MACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[35556,a=>{"use strict";var b=a.i(2211),c=a.i(74533),d=a.i(12057),e=a.i(50961);let f=(0,d.promisify)(c.execFile);async function g(a,b){let{stdout:c}=await f("git",b,{cwd:a,timeout:5e3});return c.trim()}async function h(a,b=8){if(!a.trim())return{commits:[],branches:[],remotes:[],tags:[],stashCount:0,currentBranch:"",diffStats:null,workingTree:{staged:0,modified:0,untracked:0},error:"Repository path is required"};let c=await Promise.allSettled([g(a,["log",`--max-count=${b}`,"--format=%H%x00%h%x00%s%x00%an%x00%cr","--no-color"]),g(a,["branch","--show-current"]),g(a,["branch","--sort=-committerdate","--format=%(HEAD)%(refname:short)%00%(committerdate:relative)","--no-color"]),g(a,["remote","-v"]),g(a,["tag","--sort=-creatordate","-l","--format=%(refname:short)"]),g(a,["stash","list"]),g(a,["status","--porcelain"]),g(a,["diff","--shortstat"])]),d=a=>"fulfilled"===c[a].status?c[a].value:"",e=d(0).split("\n").filter(Boolean).map(a=>{let[b,c,d,e,f]=a.split("\0");return{hash:b,shortHash:c,subject:d,author:e,relativeDate:f}}),f=d(1);e.length>0&&f&&(e[0].branch=f);let i=d(2).split("\n").filter(Boolean).slice(0,10).map(a=>{let b=a.startsWith("*"),[c,d]=(b?a.slice(1):a).split("\0");return{name:c.trim(),isCurrent:b,lastCommitDate:d?.trim()??""}}),j=new Map;d(3).split("\n").filter(Boolean).forEach(a=>{let b=a.match(/^(\S+)\s+(\S+)\s+\(fetch\)/);if(b){let a=b[2].replace(/\/\/[^@]+@/,"//").replace(/x-access-token:[^@]+@/,"");j.set(b[1],a)}});let k=Array.from(j,([a,b])=>({name:a,url:b})),l=d(4).split("\n").filter(Boolean).slice(0,5),m=d(5).split("\n").filter(Boolean).length,n=d(6).split("\n").filter(Boolean),o={staged:0,modified:0,untracked:0};for(let a of n){let b=a[0],c=a[1];"?"===b&&"?"===c?o.untracked++:" "!==b&&"?"!==b&&o.staged++," "!==c&&"?"!==c&&o.modified++}let p=null,q=d(7);if(q){let a=q.match(/(\d+) file/),b=q.match(/(\d+) insertion/),c=q.match(/(\d+) deletion/);p={filesChanged:a?parseInt(a[1],10):0,insertions:b?parseInt(b[1],10):0,deletions:c?parseInt(c[1],10):0}}return{commits:e,branches:i,remotes:k,tags:l,stashCount:m,currentBranch:f,diffStats:p,workingTree:o}}async function i(a,b=10){let c=await h(a,b);return{entries:c.commits,error:c.error}}(0,e.ensureServerEntryExports)([h,i]),(0,b.registerServerReference)(h,"
|
|
1
|
+
module.exports=[35556,a=>{"use strict";var b=a.i(2211),c=a.i(74533),d=a.i(12057),e=a.i(50961);let f=(0,d.promisify)(c.execFile);async function g(a,b){let{stdout:c}=await f("git",b,{cwd:a,timeout:5e3});return c.trim()}async function h(a,b=8){if(!a.trim())return{commits:[],branches:[],remotes:[],tags:[],stashCount:0,currentBranch:"",diffStats:null,workingTree:{staged:0,modified:0,untracked:0},error:"Repository path is required"};let c=await Promise.allSettled([g(a,["log",`--max-count=${b}`,"--format=%H%x00%h%x00%s%x00%an%x00%cr","--no-color"]),g(a,["branch","--show-current"]),g(a,["branch","--sort=-committerdate","--format=%(HEAD)%(refname:short)%00%(committerdate:relative)","--no-color"]),g(a,["remote","-v"]),g(a,["tag","--sort=-creatordate","-l","--format=%(refname:short)"]),g(a,["stash","list"]),g(a,["status","--porcelain"]),g(a,["diff","--shortstat"])]),d=a=>"fulfilled"===c[a].status?c[a].value:"",e=d(0).split("\n").filter(Boolean).map(a=>{let[b,c,d,e,f]=a.split("\0");return{hash:b,shortHash:c,subject:d,author:e,relativeDate:f}}),f=d(1);e.length>0&&f&&(e[0].branch=f);let i=d(2).split("\n").filter(Boolean).slice(0,10).map(a=>{let b=a.startsWith("*"),[c,d]=(b?a.slice(1):a).split("\0");return{name:c.trim(),isCurrent:b,lastCommitDate:d?.trim()??""}}),j=new Map;d(3).split("\n").filter(Boolean).forEach(a=>{let b=a.match(/^(\S+)\s+(\S+)\s+\(fetch\)/);if(b){let a=b[2].replace(/\/\/[^@]+@/,"//").replace(/x-access-token:[^@]+@/,"");j.set(b[1],a)}});let k=Array.from(j,([a,b])=>({name:a,url:b})),l=d(4).split("\n").filter(Boolean).slice(0,5),m=d(5).split("\n").filter(Boolean).length,n=d(6).split("\n").filter(Boolean),o={staged:0,modified:0,untracked:0};for(let a of n){let b=a[0],c=a[1];"?"===b&&"?"===c?o.untracked++:" "!==b&&"?"!==b&&o.staged++," "!==c&&"?"!==c&&o.modified++}let p=null,q=d(7);if(q){let a=q.match(/(\d+) file/),b=q.match(/(\d+) insertion/),c=q.match(/(\d+) deletion/);p={filesChanged:a?parseInt(a[1],10):0,insertions:b?parseInt(b[1],10):0,deletions:c?parseInt(c[1],10):0}}return{commits:e,branches:i,remotes:k,tags:l,stashCount:m,currentBranch:f,diffStats:p,workingTree:o}}async function i(a,b=10){let c=await h(a,b);return{entries:c.commits,error:c.error}}(0,e.ensureServerEntryExports)([h,i]),(0,b.registerServerReference)(h,"609e008e96a3b01556d124846e9c324ca5200e7986",null),(0,b.registerServerReference)(i,"6051977981f1ba2218b058d723541043ae5bbebeed",null),a.s(["getGitRepoInfo",0,h])},29507,a=>{"use strict";var b=a.i(23504),c=a.i(27900),d=a.i(12513),e=a.i(73101),f=a.i(54775),g=a.i(65324),h=a.i(33841),i=a.i(46646),j=a.i(68670),k=a.i(85321),l=a.i(84095),m=a.i(56799),n=a.i(80496),o=a.i(93225),p=a.i(94691),q=a.i(41872),r=a.i(9959),s=a.i(79124),t=a.i(29207),u=a.i(10528),v=a.i(50845),w=a.i(26604),x=a.i(54723),y=a.i(18942),z=a.i(42886),A=a.i(49560),B=a.i(39353),C=a.i(35556);a.s([],37447),a.i(37447),a.s(["0001646280e908679c3138f1ac25fb2433e32dd1b9",()=>b.getAllAgentModels,"0020452c03f2732119e7561d4c1fba86eee90d0441",()=>q.isAgentSetupComplete,"0079bf88ddd1853c0adb03b925c1136af2ea7b2b58",()=>s.checkToolStatus,"0079e34070bffa2d0e7952067ffc98534044a3f47f",()=>f.listGitHubOrganizations,"00d8fb08a7dba52132389265ec4eb081f02a547187",()=>d.pickFolder,"00f9cb9318f5f4e2ad95eab420832c3e2a8d80b823",()=>r.checkAgentAuth,"400644903ed6894eedbf0b001dcbbb7e3ca3e309c7",()=>l.openIde,"400c270aefa32609d2064e1074a3b9cca2ecd7ac40",()=>i.deployRepository,"400f6b6f5c319087323956e68e3c1af167a0097c0d",()=>p.getDeploymentLogs,"4018bef3bc92ffa047953aebcb3b972add0d07fa0e",()=>x.startFeature,"4025e7565e144546a41753500aed288fd2e822bb35",()=>j.stopDeployment,"402dfcc9c77913dbcb80cbb028bd9325ebba11cbff",()=>k.getDeploymentStatus,"40305f12b445fdd66736a073063014f5162474e9fa",()=>B.deleteRepository,"404e186bc93375e8827c855048b8206ec2e95af43a",()=>o.syncRepository,"407082b8991005bcda465d223757d9d050f8d3253a",()=>t.getFeatureMetadata,"409012491a994da842a75da0beffa5ceb08da18b4b",()=>n.openFolder,"4094e1182ef68e30f7807eea0cae32386ca9e65b4b",()=>z.unarchiveFeature,"4095611cbecd750cce932da99d031ed579999f1074",()=>y.stopFeature,"4098b761c8813bd6c7b0f130c2704912265def7222",()=>m.openShell,"409bd776367ae0414e61a14766b43d6fd2f50a4fdc",()=>g.importGitHubRepository,"409dba37e21d4549c18ca2a1ad2e151d778fc47c0a",()=>e.listGitHubRepositories,"40a9edd85d70236c79c5b5f48de3ac570508b38a59",()=>A.addRepository,"40c5d85f4158d92e322eff01a37b0c6fbfa808d924",()=>h.deployFeature,"40d9bb377bc84684536d6617ebc31de0750eb63bac",()=>w.resumeFeature,"40eea0d894f3ce984a612e879a6c87cd025bb05e9b",()=>u.archiveFeature,"609e008e96a3b01556d124846e9c324ca5200e7986",()=>C.getGitRepoInfo,"60c3bd7311a1d9df132c7a07881b9d9bcb86c5ecf4",()=>c.updateAgentAndModel,"78534c974dbc5aa14d299e67270e0961c3fec6aacf",()=>v.deleteFeature],29507)}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=src_presentation_web_08fy2mf._.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/presentation/web/app/actions/get-git-log.ts","../../../../../../../src/presentation/web/.next-internal/server/app/%28dashboard%29/%40drawer/repository/%5BrepositoryId%5D/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["'use server';\n\nimport { execFile } from 'node:child_process';\nimport { promisify } from 'node:util';\n\nconst execFileAsync = promisify(execFile);\n\nasync function git(cwd: string, args: string[]): Promise<string> {\n const { stdout } = await execFileAsync('git', args, { cwd, timeout: 5000 });\n return stdout.trim();\n}\n\nexport interface GitLogEntry {\n hash: string;\n shortHash: string;\n subject: string;\n author: string;\n relativeDate: string;\n branch?: string;\n}\n\nexport interface GitBranchInfo {\n name: string;\n isCurrent: boolean;\n lastCommitDate: string;\n}\n\nexport interface GitRemoteInfo {\n name: string;\n url: string;\n}\n\nexport interface GitWorkingTreeStatus {\n staged: number;\n modified: number;\n untracked: number;\n}\n\nexport interface GitDiffStats {\n filesChanged: number;\n insertions: number;\n deletions: number;\n}\n\nexport interface GitRepoInfo {\n commits: GitLogEntry[];\n branches: GitBranchInfo[];\n remotes: GitRemoteInfo[];\n tags: string[];\n stashCount: number;\n currentBranch: string;\n diffStats: GitDiffStats | null;\n workingTree: GitWorkingTreeStatus;\n error?: string;\n}\n\nexport async function getGitRepoInfo(\n repositoryPath: string,\n commitLimit = 8\n): Promise<GitRepoInfo> {\n const empty: GitRepoInfo = {\n commits: [],\n branches: [],\n remotes: [],\n tags: [],\n stashCount: 0,\n currentBranch: '',\n diffStats: null,\n workingTree: { staged: 0, modified: 0, untracked: 0 },\n };\n\n if (!repositoryPath.trim()) {\n return { ...empty, error: 'Repository path is required' };\n }\n\n const results = await Promise.allSettled([\n // 0: commits\n git(repositoryPath, [\n 'log',\n `--max-count=${commitLimit}`,\n '--format=%H%x00%h%x00%s%x00%an%x00%cr',\n '--no-color',\n ]),\n // 1: current branch\n git(repositoryPath, ['branch', '--show-current']),\n // 2: branches with dates\n git(repositoryPath, [\n 'branch',\n '--sort=-committerdate',\n '--format=%(HEAD)%(refname:short)%00%(committerdate:relative)',\n '--no-color',\n ]),\n // 3: remotes\n git(repositoryPath, ['remote', '-v']),\n // 4: tags (recent 5)\n git(repositoryPath, ['tag', '--sort=-creatordate', '-l', '--format=%(refname:short)']),\n // 5: stash count\n git(repositoryPath, ['stash', 'list']),\n // 6: working tree status\n git(repositoryPath, ['status', '--porcelain']),\n // 7: diff stats (uncommitted)\n git(repositoryPath, ['diff', '--shortstat']),\n ]);\n\n const val = (i: number) => (results[i].status === 'fulfilled' ? results[i].value : '');\n\n // Parse commits\n const commits: GitLogEntry[] = val(0)\n .split('\\n')\n .filter(Boolean)\n .map((line: string) => {\n const [hash, shortHash, subject, author, relativeDate] = line.split('\\0');\n return { hash, shortHash, subject, author, relativeDate };\n });\n\n const currentBranch = val(1);\n if (commits.length > 0 && currentBranch) {\n commits[0].branch = currentBranch;\n }\n\n // Parse branches\n const branches: GitBranchInfo[] = val(2)\n .split('\\n')\n .filter(Boolean)\n .slice(0, 10)\n .map((line: string) => {\n const isCurrent = line.startsWith('*');\n const clean = isCurrent ? line.slice(1) : line;\n const [name, lastCommitDate] = clean.split('\\0');\n return { name: name.trim(), isCurrent, lastCommitDate: lastCommitDate?.trim() ?? '' };\n });\n\n // Parse remotes (dedup fetch/push)\n const remoteMap = new Map<string, string>();\n val(3)\n .split('\\n')\n .filter(Boolean)\n .forEach((line: string) => {\n const match = line.match(/^(\\S+)\\s+(\\S+)\\s+\\(fetch\\)/);\n if (match) {\n // Strip credentials/tokens from URL before sending to client\n const sanitized = match[2].replace(/\\/\\/[^@]+@/, '//').replace(/x-access-token:[^@]+@/, '');\n remoteMap.set(match[1], sanitized);\n }\n });\n const remotes: GitRemoteInfo[] = Array.from(remoteMap, ([name, url]) => ({ name, url }));\n\n // Parse tags (top 5)\n const tags = val(4).split('\\n').filter(Boolean).slice(0, 5);\n\n // Stash count\n const stashCount = val(5).split('\\n').filter(Boolean).length;\n\n // Working tree status\n const statusLines = val(6).split('\\n').filter(Boolean);\n const workingTree: GitWorkingTreeStatus = { staged: 0, modified: 0, untracked: 0 };\n for (const line of statusLines) {\n const x = line[0];\n const y = line[1];\n if (x === '?' && y === '?') workingTree.untracked++;\n else if (x !== ' ' && x !== '?') workingTree.staged++;\n if (y !== ' ' && y !== '?') workingTree.modified++;\n }\n\n // Diff stats\n let diffStats: GitDiffStats | null = null;\n const diffLine = val(7);\n if (diffLine) {\n const files = diffLine.match(/(\\d+) file/);\n const ins = diffLine.match(/(\\d+) insertion/);\n const del = diffLine.match(/(\\d+) deletion/);\n diffStats = {\n filesChanged: files ? parseInt(files[1], 10) : 0,\n insertions: ins ? parseInt(ins[1], 10) : 0,\n deletions: del ? parseInt(del[1], 10) : 0,\n };\n }\n\n return { commits, branches, remotes, tags, stashCount, currentBranch, diffStats, workingTree };\n}\n\n// Keep backward compat\nexport async function getGitLog(\n repositoryPath: string,\n limit = 10\n): Promise<{ entries: GitLogEntry[]; error?: string }> {\n const info = await getGitRepoInfo(repositoryPath, limit);\n return { entries: info.commits, error: info.error };\n}\n","export {getAllAgentModels as '0063d960a1e4655e04c9527d3f0a97fc9dfaf90e25'} from 'ACTIONS_MODULE0'\nexport {updateAgentAndModel as '603f1c8b771ea07b92d719de27f8ff2db85705ce27'} from 'ACTIONS_MODULE1'\nexport {pickFolder as '00da9dd4653d294d92ba4a213413259db6c5b1dd3f'} from 'ACTIONS_MODULE2'\nexport {listGitHubRepositories as '404d39fe5caf186d1c0838e290bf736069e9c7a5e3'} from 'ACTIONS_MODULE3'\nexport {listGitHubOrganizations as '00c1ea9a6acbcccdb38c1dbf965df6cd90d181e8dc'} from 'ACTIONS_MODULE4'\nexport {importGitHubRepository as '40db7f449fd40f063c30a64cad52dedd38db6cc68a'} from 'ACTIONS_MODULE5'\nexport {deployFeature as '406c32a8dcec51d98ca7209989a96bcc211da43f1a'} from 'ACTIONS_MODULE6'\nexport {deployRepository as '400b67f4dbbbd6ec44a1f8fb15d9982d3af9cf2f3f'} from 'ACTIONS_MODULE7'\nexport {stopDeployment as '403e76cfc92b40504c0cc5f23a7a524c1e08a0f269'} from 'ACTIONS_MODULE8'\nexport {getDeploymentStatus as '40338c79072aed58cfe9a0b65a452d5c9f6cf14ec8'} from 'ACTIONS_MODULE9'\nexport {openIde as '40f4a566f8ad38a7a04c7f8de1ba937e68b7b4d0b9'} from 'ACTIONS_MODULE10'\nexport {openShell as '40b5039e1d0456ca864aefdc86c6f151de5ea114bd'} from 'ACTIONS_MODULE11'\nexport {openFolder as '4062c7773c7615ff725e24ff2c9c88cdaf65138292'} from 'ACTIONS_MODULE12'\nexport {syncRepository as '409f5aed614351ffa3b83f2c1e50bc39b42a598206'} from 'ACTIONS_MODULE13'\nexport {getDeploymentLogs as '40227625f5029cdced4c34de5751400c4dcfb84d25'} from 'ACTIONS_MODULE14'\nexport {isAgentSetupComplete as '00419e0d1ade61c590d866570d346f425d76e1256c'} from 'ACTIONS_MODULE15'\nexport {checkAgentAuth as '00877403a672b3c071f5b3473952d8ff1328a6050e'} from 'ACTIONS_MODULE16'\nexport {checkToolStatus as '00fc9496d19a60d5861389e9d11ad65eb7f5e70f85'} from 'ACTIONS_MODULE17'\nexport {getFeatureMetadata as '40d95b431ae8f504e22a9503dc21155a443b1a5566'} from 'ACTIONS_MODULE18'\nexport {archiveFeature as '40ec2622c929f3c2b28cb9832fca5958185aba7f79'} from 'ACTIONS_MODULE19'\nexport {deleteFeature as '78bdcef2bb0d67a6f7df636a86c616532d8ee45031'} from 'ACTIONS_MODULE20'\nexport {resumeFeature as '40adcbc49975d3124cda4580941fb7b21d1caacdc5'} from 'ACTIONS_MODULE21'\nexport {startFeature as '40b391b7606e291b56829fe45341f598904cdd3bf6'} from 'ACTIONS_MODULE22'\nexport {stopFeature as '40b705572a498acdf4d32739f8e727cac6cbac911c'} from 'ACTIONS_MODULE23'\nexport {unarchiveFeature as '405442f1421a5ad4ea3d493ba4219739c81ca344ed'} from 'ACTIONS_MODULE24'\nexport {addRepository as '40a176148d42295602ba233f835c63b7da5df8e4bd'} from 'ACTIONS_MODULE25'\nexport {deleteRepository as '402dde29c47e8f11112d47bcd28f2424991b64c39a'} from 'ACTIONS_MODULE26'\nexport {getGitRepoInfo as '60cb86542292a35b2b87394613ecf9308457d22e18'} from 'ACTIONS_MODULE27'\n"],"names":["execFileAsync","git","cwd","args","stdout","timeout","trim","getGitRepoInfo","repositoryPath","commitLimit","empty","commits","branches","remotes","tags","stashCount","currentBranch","diffStats","workingTree","staged","modified","untracked","error","results","Promise","allSettled","val","i","status","value","split","filter","Boolean","map","line","hash","shortHash","subject","author","relativeDate","length","branch","slice","isCurrent","startsWith","clean","name","lastCommitDate","remoteMap","Map","forEach","match","sanitized","replace","set","Array","from","url","statusLines","x","y","diffLine","files","ins","del","filesChanged","parseInt","insertions","deletions","getGitLog","limit","info","entries"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/presentation/web/app/actions/get-git-log.ts","../../../../../../../src/presentation/web/.next-internal/server/app/%28dashboard%29/%40drawer/repository/%5BrepositoryId%5D/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["'use server';\n\nimport { execFile } from 'node:child_process';\nimport { promisify } from 'node:util';\n\nconst execFileAsync = promisify(execFile);\n\nasync function git(cwd: string, args: string[]): Promise<string> {\n const { stdout } = await execFileAsync('git', args, { cwd, timeout: 5000 });\n return stdout.trim();\n}\n\nexport interface GitLogEntry {\n hash: string;\n shortHash: string;\n subject: string;\n author: string;\n relativeDate: string;\n branch?: string;\n}\n\nexport interface GitBranchInfo {\n name: string;\n isCurrent: boolean;\n lastCommitDate: string;\n}\n\nexport interface GitRemoteInfo {\n name: string;\n url: string;\n}\n\nexport interface GitWorkingTreeStatus {\n staged: number;\n modified: number;\n untracked: number;\n}\n\nexport interface GitDiffStats {\n filesChanged: number;\n insertions: number;\n deletions: number;\n}\n\nexport interface GitRepoInfo {\n commits: GitLogEntry[];\n branches: GitBranchInfo[];\n remotes: GitRemoteInfo[];\n tags: string[];\n stashCount: number;\n currentBranch: string;\n diffStats: GitDiffStats | null;\n workingTree: GitWorkingTreeStatus;\n error?: string;\n}\n\nexport async function getGitRepoInfo(\n repositoryPath: string,\n commitLimit = 8\n): Promise<GitRepoInfo> {\n const empty: GitRepoInfo = {\n commits: [],\n branches: [],\n remotes: [],\n tags: [],\n stashCount: 0,\n currentBranch: '',\n diffStats: null,\n workingTree: { staged: 0, modified: 0, untracked: 0 },\n };\n\n if (!repositoryPath.trim()) {\n return { ...empty, error: 'Repository path is required' };\n }\n\n const results = await Promise.allSettled([\n // 0: commits\n git(repositoryPath, [\n 'log',\n `--max-count=${commitLimit}`,\n '--format=%H%x00%h%x00%s%x00%an%x00%cr',\n '--no-color',\n ]),\n // 1: current branch\n git(repositoryPath, ['branch', '--show-current']),\n // 2: branches with dates\n git(repositoryPath, [\n 'branch',\n '--sort=-committerdate',\n '--format=%(HEAD)%(refname:short)%00%(committerdate:relative)',\n '--no-color',\n ]),\n // 3: remotes\n git(repositoryPath, ['remote', '-v']),\n // 4: tags (recent 5)\n git(repositoryPath, ['tag', '--sort=-creatordate', '-l', '--format=%(refname:short)']),\n // 5: stash count\n git(repositoryPath, ['stash', 'list']),\n // 6: working tree status\n git(repositoryPath, ['status', '--porcelain']),\n // 7: diff stats (uncommitted)\n git(repositoryPath, ['diff', '--shortstat']),\n ]);\n\n const val = (i: number) => (results[i].status === 'fulfilled' ? results[i].value : '');\n\n // Parse commits\n const commits: GitLogEntry[] = val(0)\n .split('\\n')\n .filter(Boolean)\n .map((line: string) => {\n const [hash, shortHash, subject, author, relativeDate] = line.split('\\0');\n return { hash, shortHash, subject, author, relativeDate };\n });\n\n const currentBranch = val(1);\n if (commits.length > 0 && currentBranch) {\n commits[0].branch = currentBranch;\n }\n\n // Parse branches\n const branches: GitBranchInfo[] = val(2)\n .split('\\n')\n .filter(Boolean)\n .slice(0, 10)\n .map((line: string) => {\n const isCurrent = line.startsWith('*');\n const clean = isCurrent ? line.slice(1) : line;\n const [name, lastCommitDate] = clean.split('\\0');\n return { name: name.trim(), isCurrent, lastCommitDate: lastCommitDate?.trim() ?? '' };\n });\n\n // Parse remotes (dedup fetch/push)\n const remoteMap = new Map<string, string>();\n val(3)\n .split('\\n')\n .filter(Boolean)\n .forEach((line: string) => {\n const match = line.match(/^(\\S+)\\s+(\\S+)\\s+\\(fetch\\)/);\n if (match) {\n // Strip credentials/tokens from URL before sending to client\n const sanitized = match[2].replace(/\\/\\/[^@]+@/, '//').replace(/x-access-token:[^@]+@/, '');\n remoteMap.set(match[1], sanitized);\n }\n });\n const remotes: GitRemoteInfo[] = Array.from(remoteMap, ([name, url]) => ({ name, url }));\n\n // Parse tags (top 5)\n const tags = val(4).split('\\n').filter(Boolean).slice(0, 5);\n\n // Stash count\n const stashCount = val(5).split('\\n').filter(Boolean).length;\n\n // Working tree status\n const statusLines = val(6).split('\\n').filter(Boolean);\n const workingTree: GitWorkingTreeStatus = { staged: 0, modified: 0, untracked: 0 };\n for (const line of statusLines) {\n const x = line[0];\n const y = line[1];\n if (x === '?' && y === '?') workingTree.untracked++;\n else if (x !== ' ' && x !== '?') workingTree.staged++;\n if (y !== ' ' && y !== '?') workingTree.modified++;\n }\n\n // Diff stats\n let diffStats: GitDiffStats | null = null;\n const diffLine = val(7);\n if (diffLine) {\n const files = diffLine.match(/(\\d+) file/);\n const ins = diffLine.match(/(\\d+) insertion/);\n const del = diffLine.match(/(\\d+) deletion/);\n diffStats = {\n filesChanged: files ? parseInt(files[1], 10) : 0,\n insertions: ins ? parseInt(ins[1], 10) : 0,\n deletions: del ? parseInt(del[1], 10) : 0,\n };\n }\n\n return { commits, branches, remotes, tags, stashCount, currentBranch, diffStats, workingTree };\n}\n\n// Keep backward compat\nexport async function getGitLog(\n repositoryPath: string,\n limit = 10\n): Promise<{ entries: GitLogEntry[]; error?: string }> {\n const info = await getGitRepoInfo(repositoryPath, limit);\n return { entries: info.commits, error: info.error };\n}\n","export {getAllAgentModels as '0001646280e908679c3138f1ac25fb2433e32dd1b9'} from 'ACTIONS_MODULE0'\nexport {updateAgentAndModel as '60c3bd7311a1d9df132c7a07881b9d9bcb86c5ecf4'} from 'ACTIONS_MODULE1'\nexport {pickFolder as '00d8fb08a7dba52132389265ec4eb081f02a547187'} from 'ACTIONS_MODULE2'\nexport {listGitHubRepositories as '409dba37e21d4549c18ca2a1ad2e151d778fc47c0a'} from 'ACTIONS_MODULE3'\nexport {listGitHubOrganizations as '0079e34070bffa2d0e7952067ffc98534044a3f47f'} from 'ACTIONS_MODULE4'\nexport {importGitHubRepository as '409bd776367ae0414e61a14766b43d6fd2f50a4fdc'} from 'ACTIONS_MODULE5'\nexport {deployFeature as '40c5d85f4158d92e322eff01a37b0c6fbfa808d924'} from 'ACTIONS_MODULE6'\nexport {deployRepository as '400c270aefa32609d2064e1074a3b9cca2ecd7ac40'} from 'ACTIONS_MODULE7'\nexport {stopDeployment as '4025e7565e144546a41753500aed288fd2e822bb35'} from 'ACTIONS_MODULE8'\nexport {getDeploymentStatus as '402dfcc9c77913dbcb80cbb028bd9325ebba11cbff'} from 'ACTIONS_MODULE9'\nexport {openIde as '400644903ed6894eedbf0b001dcbbb7e3ca3e309c7'} from 'ACTIONS_MODULE10'\nexport {openShell as '4098b761c8813bd6c7b0f130c2704912265def7222'} from 'ACTIONS_MODULE11'\nexport {openFolder as '409012491a994da842a75da0beffa5ceb08da18b4b'} from 'ACTIONS_MODULE12'\nexport {syncRepository as '404e186bc93375e8827c855048b8206ec2e95af43a'} from 'ACTIONS_MODULE13'\nexport {getDeploymentLogs as '400f6b6f5c319087323956e68e3c1af167a0097c0d'} from 'ACTIONS_MODULE14'\nexport {isAgentSetupComplete as '0020452c03f2732119e7561d4c1fba86eee90d0441'} from 'ACTIONS_MODULE15'\nexport {checkAgentAuth as '00f9cb9318f5f4e2ad95eab420832c3e2a8d80b823'} from 'ACTIONS_MODULE16'\nexport {checkToolStatus as '0079bf88ddd1853c0adb03b925c1136af2ea7b2b58'} from 'ACTIONS_MODULE17'\nexport {getFeatureMetadata as '407082b8991005bcda465d223757d9d050f8d3253a'} from 'ACTIONS_MODULE18'\nexport {archiveFeature as '40eea0d894f3ce984a612e879a6c87cd025bb05e9b'} from 'ACTIONS_MODULE19'\nexport {deleteFeature as '78534c974dbc5aa14d299e67270e0961c3fec6aacf'} from 'ACTIONS_MODULE20'\nexport {resumeFeature as '40d9bb377bc84684536d6617ebc31de0750eb63bac'} from 'ACTIONS_MODULE21'\nexport {startFeature as '4018bef3bc92ffa047953aebcb3b972add0d07fa0e'} from 'ACTIONS_MODULE22'\nexport {stopFeature as '4095611cbecd750cce932da99d031ed579999f1074'} from 'ACTIONS_MODULE23'\nexport {unarchiveFeature as '4094e1182ef68e30f7807eea0cae32386ca9e65b4b'} from 'ACTIONS_MODULE24'\nexport {addRepository as '40a9edd85d70236c79c5b5f48de3ac570508b38a59'} from 'ACTIONS_MODULE25'\nexport {deleteRepository as '40305f12b445fdd66736a073063014f5162474e9fa'} from 'ACTIONS_MODULE26'\nexport {getGitRepoInfo as '609e008e96a3b01556d124846e9c324ca5200e7986'} from 'ACTIONS_MODULE27'\n"],"names":["execFileAsync","git","cwd","args","stdout","timeout","trim","getGitRepoInfo","repositoryPath","commitLimit","empty","commits","branches","remotes","tags","stashCount","currentBranch","diffStats","workingTree","staged","modified","untracked","error","results","Promise","allSettled","val","i","status","value","split","filter","Boolean","map","line","hash","shortHash","subject","author","relativeDate","length","branch","slice","isCurrent","startsWith","clean","name","lastCommitDate","remoteMap","Map","forEach","match","sanitized","replace","set","Array","from","url","statusLines","x","y","diffLine","files","ins","del","filesChanged","parseInt","insertions","deletions","getGitLog","limit","info","entries"],"mappings":"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"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[35556,a=>{"use strict";var b=a.i(2211),c=a.i(74533),d=a.i(12057),e=a.i(50961);let f=(0,d.promisify)(c.execFile);async function g(a,b){let{stdout:c}=await f("git",b,{cwd:a,timeout:5e3});return c.trim()}async function h(a,b=8){if(!a.trim())return{commits:[],branches:[],remotes:[],tags:[],stashCount:0,currentBranch:"",diffStats:null,workingTree:{staged:0,modified:0,untracked:0},error:"Repository path is required"};let c=await Promise.allSettled([g(a,["log",`--max-count=${b}`,"--format=%H%x00%h%x00%s%x00%an%x00%cr","--no-color"]),g(a,["branch","--show-current"]),g(a,["branch","--sort=-committerdate","--format=%(HEAD)%(refname:short)%00%(committerdate:relative)","--no-color"]),g(a,["remote","-v"]),g(a,["tag","--sort=-creatordate","-l","--format=%(refname:short)"]),g(a,["stash","list"]),g(a,["status","--porcelain"]),g(a,["diff","--shortstat"])]),d=a=>"fulfilled"===c[a].status?c[a].value:"",e=d(0).split("\n").filter(Boolean).map(a=>{let[b,c,d,e,f]=a.split("\0");return{hash:b,shortHash:c,subject:d,author:e,relativeDate:f}}),f=d(1);e.length>0&&f&&(e[0].branch=f);let i=d(2).split("\n").filter(Boolean).slice(0,10).map(a=>{let b=a.startsWith("*"),[c,d]=(b?a.slice(1):a).split("\0");return{name:c.trim(),isCurrent:b,lastCommitDate:d?.trim()??""}}),j=new Map;d(3).split("\n").filter(Boolean).forEach(a=>{let b=a.match(/^(\S+)\s+(\S+)\s+\(fetch\)/);if(b){let a=b[2].replace(/\/\/[^@]+@/,"//").replace(/x-access-token:[^@]+@/,"");j.set(b[1],a)}});let k=Array.from(j,([a,b])=>({name:a,url:b})),l=d(4).split("\n").filter(Boolean).slice(0,5),m=d(5).split("\n").filter(Boolean).length,n=d(6).split("\n").filter(Boolean),o={staged:0,modified:0,untracked:0};for(let a of n){let b=a[0],c=a[1];"?"===b&&"?"===c?o.untracked++:" "!==b&&"?"!==b&&o.staged++," "!==c&&"?"!==c&&o.modified++}let p=null,q=d(7);if(q){let a=q.match(/(\d+) file/),b=q.match(/(\d+) insertion/),c=q.match(/(\d+) deletion/);p={filesChanged:a?parseInt(a[1],10):0,insertions:b?parseInt(b[1],10):0,deletions:c?parseInt(c[1],10):0}}return{commits:e,branches:i,remotes:k,tags:l,stashCount:m,currentBranch:f,diffStats:p,workingTree:o}}async function i(a,b=10){let c=await h(a,b);return{entries:c.commits,error:c.error}}(0,e.ensureServerEntryExports)([h,i]),(0,b.registerServerReference)(h,"
|
|
1
|
+
module.exports=[35556,a=>{"use strict";var b=a.i(2211),c=a.i(74533),d=a.i(12057),e=a.i(50961);let f=(0,d.promisify)(c.execFile);async function g(a,b){let{stdout:c}=await f("git",b,{cwd:a,timeout:5e3});return c.trim()}async function h(a,b=8){if(!a.trim())return{commits:[],branches:[],remotes:[],tags:[],stashCount:0,currentBranch:"",diffStats:null,workingTree:{staged:0,modified:0,untracked:0},error:"Repository path is required"};let c=await Promise.allSettled([g(a,["log",`--max-count=${b}`,"--format=%H%x00%h%x00%s%x00%an%x00%cr","--no-color"]),g(a,["branch","--show-current"]),g(a,["branch","--sort=-committerdate","--format=%(HEAD)%(refname:short)%00%(committerdate:relative)","--no-color"]),g(a,["remote","-v"]),g(a,["tag","--sort=-creatordate","-l","--format=%(refname:short)"]),g(a,["stash","list"]),g(a,["status","--porcelain"]),g(a,["diff","--shortstat"])]),d=a=>"fulfilled"===c[a].status?c[a].value:"",e=d(0).split("\n").filter(Boolean).map(a=>{let[b,c,d,e,f]=a.split("\0");return{hash:b,shortHash:c,subject:d,author:e,relativeDate:f}}),f=d(1);e.length>0&&f&&(e[0].branch=f);let i=d(2).split("\n").filter(Boolean).slice(0,10).map(a=>{let b=a.startsWith("*"),[c,d]=(b?a.slice(1):a).split("\0");return{name:c.trim(),isCurrent:b,lastCommitDate:d?.trim()??""}}),j=new Map;d(3).split("\n").filter(Boolean).forEach(a=>{let b=a.match(/^(\S+)\s+(\S+)\s+\(fetch\)/);if(b){let a=b[2].replace(/\/\/[^@]+@/,"//").replace(/x-access-token:[^@]+@/,"");j.set(b[1],a)}});let k=Array.from(j,([a,b])=>({name:a,url:b})),l=d(4).split("\n").filter(Boolean).slice(0,5),m=d(5).split("\n").filter(Boolean).length,n=d(6).split("\n").filter(Boolean),o={staged:0,modified:0,untracked:0};for(let a of n){let b=a[0],c=a[1];"?"===b&&"?"===c?o.untracked++:" "!==b&&"?"!==b&&o.staged++," "!==c&&"?"!==c&&o.modified++}let p=null,q=d(7);if(q){let a=q.match(/(\d+) file/),b=q.match(/(\d+) insertion/),c=q.match(/(\d+) deletion/);p={filesChanged:a?parseInt(a[1],10):0,insertions:b?parseInt(b[1],10):0,deletions:c?parseInt(c[1],10):0}}return{commits:e,branches:i,remotes:k,tags:l,stashCount:m,currentBranch:f,diffStats:p,workingTree:o}}async function i(a,b=10){let c=await h(a,b);return{entries:c.commits,error:c.error}}(0,e.ensureServerEntryExports)([h,i]),(0,b.registerServerReference)(h,"609e008e96a3b01556d124846e9c324ca5200e7986",null),(0,b.registerServerReference)(i,"6051977981f1ba2218b058d723541043ae5bbebeed",null),a.s(["getGitRepoInfo",0,h])},5357,a=>{"use strict";var b=a.i(23504),c=a.i(27900),d=a.i(12513),e=a.i(73101),f=a.i(54775),g=a.i(65324),h=a.i(33841),i=a.i(46646),j=a.i(68670),k=a.i(85321),l=a.i(84095),m=a.i(56799),n=a.i(80496),o=a.i(93225),p=a.i(94691),q=a.i(41872),r=a.i(9959),s=a.i(79124),t=a.i(29207),u=a.i(10528),v=a.i(50845),w=a.i(26604),x=a.i(54723),y=a.i(18942),z=a.i(42886),A=a.i(49560),B=a.i(39353),C=a.i(35556);a.s([],3748),a.i(3748),a.s(["0001646280e908679c3138f1ac25fb2433e32dd1b9",()=>b.getAllAgentModels,"0020452c03f2732119e7561d4c1fba86eee90d0441",()=>q.isAgentSetupComplete,"0079bf88ddd1853c0adb03b925c1136af2ea7b2b58",()=>s.checkToolStatus,"0079e34070bffa2d0e7952067ffc98534044a3f47f",()=>f.listGitHubOrganizations,"00d8fb08a7dba52132389265ec4eb081f02a547187",()=>d.pickFolder,"00f9cb9318f5f4e2ad95eab420832c3e2a8d80b823",()=>r.checkAgentAuth,"400644903ed6894eedbf0b001dcbbb7e3ca3e309c7",()=>l.openIde,"400c270aefa32609d2064e1074a3b9cca2ecd7ac40",()=>i.deployRepository,"400f6b6f5c319087323956e68e3c1af167a0097c0d",()=>p.getDeploymentLogs,"4018bef3bc92ffa047953aebcb3b972add0d07fa0e",()=>x.startFeature,"4025e7565e144546a41753500aed288fd2e822bb35",()=>j.stopDeployment,"402dfcc9c77913dbcb80cbb028bd9325ebba11cbff",()=>k.getDeploymentStatus,"40305f12b445fdd66736a073063014f5162474e9fa",()=>B.deleteRepository,"404e186bc93375e8827c855048b8206ec2e95af43a",()=>o.syncRepository,"407082b8991005bcda465d223757d9d050f8d3253a",()=>t.getFeatureMetadata,"409012491a994da842a75da0beffa5ceb08da18b4b",()=>n.openFolder,"4094e1182ef68e30f7807eea0cae32386ca9e65b4b",()=>z.unarchiveFeature,"4095611cbecd750cce932da99d031ed579999f1074",()=>y.stopFeature,"4098b761c8813bd6c7b0f130c2704912265def7222",()=>m.openShell,"409bd776367ae0414e61a14766b43d6fd2f50a4fdc",()=>g.importGitHubRepository,"409dba37e21d4549c18ca2a1ad2e151d778fc47c0a",()=>e.listGitHubRepositories,"40a9edd85d70236c79c5b5f48de3ac570508b38a59",()=>A.addRepository,"40c5d85f4158d92e322eff01a37b0c6fbfa808d924",()=>h.deployFeature,"40d9bb377bc84684536d6617ebc31de0750eb63bac",()=>w.resumeFeature,"40eea0d894f3ce984a612e879a6c87cd025bb05e9b",()=>u.archiveFeature,"609e008e96a3b01556d124846e9c324ca5200e7986",()=>C.getGitRepoInfo,"60c3bd7311a1d9df132c7a07881b9d9bcb86c5ecf4",()=>c.updateAgentAndModel,"78534c974dbc5aa14d299e67270e0961c3fec6aacf",()=>v.deleteFeature],5357)}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=src_presentation_web_0f~udu1._.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/presentation/web/app/actions/get-git-log.ts","../../../../../../../src/presentation/web/.next-internal/server/app/%28dashboard%29/repository/%5BrepositoryId%5D/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["'use server';\n\nimport { execFile } from 'node:child_process';\nimport { promisify } from 'node:util';\n\nconst execFileAsync = promisify(execFile);\n\nasync function git(cwd: string, args: string[]): Promise<string> {\n const { stdout } = await execFileAsync('git', args, { cwd, timeout: 5000 });\n return stdout.trim();\n}\n\nexport interface GitLogEntry {\n hash: string;\n shortHash: string;\n subject: string;\n author: string;\n relativeDate: string;\n branch?: string;\n}\n\nexport interface GitBranchInfo {\n name: string;\n isCurrent: boolean;\n lastCommitDate: string;\n}\n\nexport interface GitRemoteInfo {\n name: string;\n url: string;\n}\n\nexport interface GitWorkingTreeStatus {\n staged: number;\n modified: number;\n untracked: number;\n}\n\nexport interface GitDiffStats {\n filesChanged: number;\n insertions: number;\n deletions: number;\n}\n\nexport interface GitRepoInfo {\n commits: GitLogEntry[];\n branches: GitBranchInfo[];\n remotes: GitRemoteInfo[];\n tags: string[];\n stashCount: number;\n currentBranch: string;\n diffStats: GitDiffStats | null;\n workingTree: GitWorkingTreeStatus;\n error?: string;\n}\n\nexport async function getGitRepoInfo(\n repositoryPath: string,\n commitLimit = 8\n): Promise<GitRepoInfo> {\n const empty: GitRepoInfo = {\n commits: [],\n branches: [],\n remotes: [],\n tags: [],\n stashCount: 0,\n currentBranch: '',\n diffStats: null,\n workingTree: { staged: 0, modified: 0, untracked: 0 },\n };\n\n if (!repositoryPath.trim()) {\n return { ...empty, error: 'Repository path is required' };\n }\n\n const results = await Promise.allSettled([\n // 0: commits\n git(repositoryPath, [\n 'log',\n `--max-count=${commitLimit}`,\n '--format=%H%x00%h%x00%s%x00%an%x00%cr',\n '--no-color',\n ]),\n // 1: current branch\n git(repositoryPath, ['branch', '--show-current']),\n // 2: branches with dates\n git(repositoryPath, [\n 'branch',\n '--sort=-committerdate',\n '--format=%(HEAD)%(refname:short)%00%(committerdate:relative)',\n '--no-color',\n ]),\n // 3: remotes\n git(repositoryPath, ['remote', '-v']),\n // 4: tags (recent 5)\n git(repositoryPath, ['tag', '--sort=-creatordate', '-l', '--format=%(refname:short)']),\n // 5: stash count\n git(repositoryPath, ['stash', 'list']),\n // 6: working tree status\n git(repositoryPath, ['status', '--porcelain']),\n // 7: diff stats (uncommitted)\n git(repositoryPath, ['diff', '--shortstat']),\n ]);\n\n const val = (i: number) => (results[i].status === 'fulfilled' ? results[i].value : '');\n\n // Parse commits\n const commits: GitLogEntry[] = val(0)\n .split('\\n')\n .filter(Boolean)\n .map((line: string) => {\n const [hash, shortHash, subject, author, relativeDate] = line.split('\\0');\n return { hash, shortHash, subject, author, relativeDate };\n });\n\n const currentBranch = val(1);\n if (commits.length > 0 && currentBranch) {\n commits[0].branch = currentBranch;\n }\n\n // Parse branches\n const branches: GitBranchInfo[] = val(2)\n .split('\\n')\n .filter(Boolean)\n .slice(0, 10)\n .map((line: string) => {\n const isCurrent = line.startsWith('*');\n const clean = isCurrent ? line.slice(1) : line;\n const [name, lastCommitDate] = clean.split('\\0');\n return { name: name.trim(), isCurrent, lastCommitDate: lastCommitDate?.trim() ?? '' };\n });\n\n // Parse remotes (dedup fetch/push)\n const remoteMap = new Map<string, string>();\n val(3)\n .split('\\n')\n .filter(Boolean)\n .forEach((line: string) => {\n const match = line.match(/^(\\S+)\\s+(\\S+)\\s+\\(fetch\\)/);\n if (match) {\n // Strip credentials/tokens from URL before sending to client\n const sanitized = match[2].replace(/\\/\\/[^@]+@/, '//').replace(/x-access-token:[^@]+@/, '');\n remoteMap.set(match[1], sanitized);\n }\n });\n const remotes: GitRemoteInfo[] = Array.from(remoteMap, ([name, url]) => ({ name, url }));\n\n // Parse tags (top 5)\n const tags = val(4).split('\\n').filter(Boolean).slice(0, 5);\n\n // Stash count\n const stashCount = val(5).split('\\n').filter(Boolean).length;\n\n // Working tree status\n const statusLines = val(6).split('\\n').filter(Boolean);\n const workingTree: GitWorkingTreeStatus = { staged: 0, modified: 0, untracked: 0 };\n for (const line of statusLines) {\n const x = line[0];\n const y = line[1];\n if (x === '?' && y === '?') workingTree.untracked++;\n else if (x !== ' ' && x !== '?') workingTree.staged++;\n if (y !== ' ' && y !== '?') workingTree.modified++;\n }\n\n // Diff stats\n let diffStats: GitDiffStats | null = null;\n const diffLine = val(7);\n if (diffLine) {\n const files = diffLine.match(/(\\d+) file/);\n const ins = diffLine.match(/(\\d+) insertion/);\n const del = diffLine.match(/(\\d+) deletion/);\n diffStats = {\n filesChanged: files ? parseInt(files[1], 10) : 0,\n insertions: ins ? parseInt(ins[1], 10) : 0,\n deletions: del ? parseInt(del[1], 10) : 0,\n };\n }\n\n return { commits, branches, remotes, tags, stashCount, currentBranch, diffStats, workingTree };\n}\n\n// Keep backward compat\nexport async function getGitLog(\n repositoryPath: string,\n limit = 10\n): Promise<{ entries: GitLogEntry[]; error?: string }> {\n const info = await getGitRepoInfo(repositoryPath, limit);\n return { entries: info.commits, error: info.error };\n}\n","export {getAllAgentModels as '0063d960a1e4655e04c9527d3f0a97fc9dfaf90e25'} from 'ACTIONS_MODULE0'\nexport {updateAgentAndModel as '603f1c8b771ea07b92d719de27f8ff2db85705ce27'} from 'ACTIONS_MODULE1'\nexport {pickFolder as '00da9dd4653d294d92ba4a213413259db6c5b1dd3f'} from 'ACTIONS_MODULE2'\nexport {listGitHubRepositories as '404d39fe5caf186d1c0838e290bf736069e9c7a5e3'} from 'ACTIONS_MODULE3'\nexport {listGitHubOrganizations as '00c1ea9a6acbcccdb38c1dbf965df6cd90d181e8dc'} from 'ACTIONS_MODULE4'\nexport {importGitHubRepository as '40db7f449fd40f063c30a64cad52dedd38db6cc68a'} from 'ACTIONS_MODULE5'\nexport {deployFeature as '406c32a8dcec51d98ca7209989a96bcc211da43f1a'} from 'ACTIONS_MODULE6'\nexport {deployRepository as '400b67f4dbbbd6ec44a1f8fb15d9982d3af9cf2f3f'} from 'ACTIONS_MODULE7'\nexport {stopDeployment as '403e76cfc92b40504c0cc5f23a7a524c1e08a0f269'} from 'ACTIONS_MODULE8'\nexport {getDeploymentStatus as '40338c79072aed58cfe9a0b65a452d5c9f6cf14ec8'} from 'ACTIONS_MODULE9'\nexport {openIde as '40f4a566f8ad38a7a04c7f8de1ba937e68b7b4d0b9'} from 'ACTIONS_MODULE10'\nexport {openShell as '40b5039e1d0456ca864aefdc86c6f151de5ea114bd'} from 'ACTIONS_MODULE11'\nexport {openFolder as '4062c7773c7615ff725e24ff2c9c88cdaf65138292'} from 'ACTIONS_MODULE12'\nexport {syncRepository as '409f5aed614351ffa3b83f2c1e50bc39b42a598206'} from 'ACTIONS_MODULE13'\nexport {getDeploymentLogs as '40227625f5029cdced4c34de5751400c4dcfb84d25'} from 'ACTIONS_MODULE14'\nexport {isAgentSetupComplete as '00419e0d1ade61c590d866570d346f425d76e1256c'} from 'ACTIONS_MODULE15'\nexport {checkAgentAuth as '00877403a672b3c071f5b3473952d8ff1328a6050e'} from 'ACTIONS_MODULE16'\nexport {checkToolStatus as '00fc9496d19a60d5861389e9d11ad65eb7f5e70f85'} from 'ACTIONS_MODULE17'\nexport {getFeatureMetadata as '40d95b431ae8f504e22a9503dc21155a443b1a5566'} from 'ACTIONS_MODULE18'\nexport {archiveFeature as '40ec2622c929f3c2b28cb9832fca5958185aba7f79'} from 'ACTIONS_MODULE19'\nexport {deleteFeature as '78bdcef2bb0d67a6f7df636a86c616532d8ee45031'} from 'ACTIONS_MODULE20'\nexport {resumeFeature as '40adcbc49975d3124cda4580941fb7b21d1caacdc5'} from 'ACTIONS_MODULE21'\nexport {startFeature as '40b391b7606e291b56829fe45341f598904cdd3bf6'} from 'ACTIONS_MODULE22'\nexport {stopFeature as '40b705572a498acdf4d32739f8e727cac6cbac911c'} from 'ACTIONS_MODULE23'\nexport {unarchiveFeature as '405442f1421a5ad4ea3d493ba4219739c81ca344ed'} from 'ACTIONS_MODULE24'\nexport {addRepository as '40a176148d42295602ba233f835c63b7da5df8e4bd'} from 'ACTIONS_MODULE25'\nexport {deleteRepository as '402dde29c47e8f11112d47bcd28f2424991b64c39a'} from 'ACTIONS_MODULE26'\nexport {getGitRepoInfo as '60cb86542292a35b2b87394613ecf9308457d22e18'} from 'ACTIONS_MODULE27'\n"],"names":["execFileAsync","git","cwd","args","stdout","timeout","trim","getGitRepoInfo","repositoryPath","commitLimit","empty","commits","branches","remotes","tags","stashCount","currentBranch","diffStats","workingTree","staged","modified","untracked","error","results","Promise","allSettled","val","i","status","value","split","filter","Boolean","map","line","hash","shortHash","subject","author","relativeDate","length","branch","slice","isCurrent","startsWith","clean","name","lastCommitDate","remoteMap","Map","forEach","match","sanitized","replace","set","Array","from","url","statusLines","x","y","diffLine","files","ins","del","filesChanged","parseInt","insertions","deletions","getGitLog","limit","info","entries"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/presentation/web/app/actions/get-git-log.ts","../../../../../../../src/presentation/web/.next-internal/server/app/%28dashboard%29/repository/%5BrepositoryId%5D/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["'use server';\n\nimport { execFile } from 'node:child_process';\nimport { promisify } from 'node:util';\n\nconst execFileAsync = promisify(execFile);\n\nasync function git(cwd: string, args: string[]): Promise<string> {\n const { stdout } = await execFileAsync('git', args, { cwd, timeout: 5000 });\n return stdout.trim();\n}\n\nexport interface GitLogEntry {\n hash: string;\n shortHash: string;\n subject: string;\n author: string;\n relativeDate: string;\n branch?: string;\n}\n\nexport interface GitBranchInfo {\n name: string;\n isCurrent: boolean;\n lastCommitDate: string;\n}\n\nexport interface GitRemoteInfo {\n name: string;\n url: string;\n}\n\nexport interface GitWorkingTreeStatus {\n staged: number;\n modified: number;\n untracked: number;\n}\n\nexport interface GitDiffStats {\n filesChanged: number;\n insertions: number;\n deletions: number;\n}\n\nexport interface GitRepoInfo {\n commits: GitLogEntry[];\n branches: GitBranchInfo[];\n remotes: GitRemoteInfo[];\n tags: string[];\n stashCount: number;\n currentBranch: string;\n diffStats: GitDiffStats | null;\n workingTree: GitWorkingTreeStatus;\n error?: string;\n}\n\nexport async function getGitRepoInfo(\n repositoryPath: string,\n commitLimit = 8\n): Promise<GitRepoInfo> {\n const empty: GitRepoInfo = {\n commits: [],\n branches: [],\n remotes: [],\n tags: [],\n stashCount: 0,\n currentBranch: '',\n diffStats: null,\n workingTree: { staged: 0, modified: 0, untracked: 0 },\n };\n\n if (!repositoryPath.trim()) {\n return { ...empty, error: 'Repository path is required' };\n }\n\n const results = await Promise.allSettled([\n // 0: commits\n git(repositoryPath, [\n 'log',\n `--max-count=${commitLimit}`,\n '--format=%H%x00%h%x00%s%x00%an%x00%cr',\n '--no-color',\n ]),\n // 1: current branch\n git(repositoryPath, ['branch', '--show-current']),\n // 2: branches with dates\n git(repositoryPath, [\n 'branch',\n '--sort=-committerdate',\n '--format=%(HEAD)%(refname:short)%00%(committerdate:relative)',\n '--no-color',\n ]),\n // 3: remotes\n git(repositoryPath, ['remote', '-v']),\n // 4: tags (recent 5)\n git(repositoryPath, ['tag', '--sort=-creatordate', '-l', '--format=%(refname:short)']),\n // 5: stash count\n git(repositoryPath, ['stash', 'list']),\n // 6: working tree status\n git(repositoryPath, ['status', '--porcelain']),\n // 7: diff stats (uncommitted)\n git(repositoryPath, ['diff', '--shortstat']),\n ]);\n\n const val = (i: number) => (results[i].status === 'fulfilled' ? results[i].value : '');\n\n // Parse commits\n const commits: GitLogEntry[] = val(0)\n .split('\\n')\n .filter(Boolean)\n .map((line: string) => {\n const [hash, shortHash, subject, author, relativeDate] = line.split('\\0');\n return { hash, shortHash, subject, author, relativeDate };\n });\n\n const currentBranch = val(1);\n if (commits.length > 0 && currentBranch) {\n commits[0].branch = currentBranch;\n }\n\n // Parse branches\n const branches: GitBranchInfo[] = val(2)\n .split('\\n')\n .filter(Boolean)\n .slice(0, 10)\n .map((line: string) => {\n const isCurrent = line.startsWith('*');\n const clean = isCurrent ? line.slice(1) : line;\n const [name, lastCommitDate] = clean.split('\\0');\n return { name: name.trim(), isCurrent, lastCommitDate: lastCommitDate?.trim() ?? '' };\n });\n\n // Parse remotes (dedup fetch/push)\n const remoteMap = new Map<string, string>();\n val(3)\n .split('\\n')\n .filter(Boolean)\n .forEach((line: string) => {\n const match = line.match(/^(\\S+)\\s+(\\S+)\\s+\\(fetch\\)/);\n if (match) {\n // Strip credentials/tokens from URL before sending to client\n const sanitized = match[2].replace(/\\/\\/[^@]+@/, '//').replace(/x-access-token:[^@]+@/, '');\n remoteMap.set(match[1], sanitized);\n }\n });\n const remotes: GitRemoteInfo[] = Array.from(remoteMap, ([name, url]) => ({ name, url }));\n\n // Parse tags (top 5)\n const tags = val(4).split('\\n').filter(Boolean).slice(0, 5);\n\n // Stash count\n const stashCount = val(5).split('\\n').filter(Boolean).length;\n\n // Working tree status\n const statusLines = val(6).split('\\n').filter(Boolean);\n const workingTree: GitWorkingTreeStatus = { staged: 0, modified: 0, untracked: 0 };\n for (const line of statusLines) {\n const x = line[0];\n const y = line[1];\n if (x === '?' && y === '?') workingTree.untracked++;\n else if (x !== ' ' && x !== '?') workingTree.staged++;\n if (y !== ' ' && y !== '?') workingTree.modified++;\n }\n\n // Diff stats\n let diffStats: GitDiffStats | null = null;\n const diffLine = val(7);\n if (diffLine) {\n const files = diffLine.match(/(\\d+) file/);\n const ins = diffLine.match(/(\\d+) insertion/);\n const del = diffLine.match(/(\\d+) deletion/);\n diffStats = {\n filesChanged: files ? parseInt(files[1], 10) : 0,\n insertions: ins ? parseInt(ins[1], 10) : 0,\n deletions: del ? parseInt(del[1], 10) : 0,\n };\n }\n\n return { commits, branches, remotes, tags, stashCount, currentBranch, diffStats, workingTree };\n}\n\n// Keep backward compat\nexport async function getGitLog(\n repositoryPath: string,\n limit = 10\n): Promise<{ entries: GitLogEntry[]; error?: string }> {\n const info = await getGitRepoInfo(repositoryPath, limit);\n return { entries: info.commits, error: info.error };\n}\n","export {getAllAgentModels as '0001646280e908679c3138f1ac25fb2433e32dd1b9'} from 'ACTIONS_MODULE0'\nexport {updateAgentAndModel as '60c3bd7311a1d9df132c7a07881b9d9bcb86c5ecf4'} from 'ACTIONS_MODULE1'\nexport {pickFolder as '00d8fb08a7dba52132389265ec4eb081f02a547187'} from 'ACTIONS_MODULE2'\nexport {listGitHubRepositories as '409dba37e21d4549c18ca2a1ad2e151d778fc47c0a'} from 'ACTIONS_MODULE3'\nexport {listGitHubOrganizations as '0079e34070bffa2d0e7952067ffc98534044a3f47f'} from 'ACTIONS_MODULE4'\nexport {importGitHubRepository as '409bd776367ae0414e61a14766b43d6fd2f50a4fdc'} from 'ACTIONS_MODULE5'\nexport {deployFeature as '40c5d85f4158d92e322eff01a37b0c6fbfa808d924'} from 'ACTIONS_MODULE6'\nexport {deployRepository as '400c270aefa32609d2064e1074a3b9cca2ecd7ac40'} from 'ACTIONS_MODULE7'\nexport {stopDeployment as '4025e7565e144546a41753500aed288fd2e822bb35'} from 'ACTIONS_MODULE8'\nexport {getDeploymentStatus as '402dfcc9c77913dbcb80cbb028bd9325ebba11cbff'} from 'ACTIONS_MODULE9'\nexport {openIde as '400644903ed6894eedbf0b001dcbbb7e3ca3e309c7'} from 'ACTIONS_MODULE10'\nexport {openShell as '4098b761c8813bd6c7b0f130c2704912265def7222'} from 'ACTIONS_MODULE11'\nexport {openFolder as '409012491a994da842a75da0beffa5ceb08da18b4b'} from 'ACTIONS_MODULE12'\nexport {syncRepository as '404e186bc93375e8827c855048b8206ec2e95af43a'} from 'ACTIONS_MODULE13'\nexport {getDeploymentLogs as '400f6b6f5c319087323956e68e3c1af167a0097c0d'} from 'ACTIONS_MODULE14'\nexport {isAgentSetupComplete as '0020452c03f2732119e7561d4c1fba86eee90d0441'} from 'ACTIONS_MODULE15'\nexport {checkAgentAuth as '00f9cb9318f5f4e2ad95eab420832c3e2a8d80b823'} from 'ACTIONS_MODULE16'\nexport {checkToolStatus as '0079bf88ddd1853c0adb03b925c1136af2ea7b2b58'} from 'ACTIONS_MODULE17'\nexport {getFeatureMetadata as '407082b8991005bcda465d223757d9d050f8d3253a'} from 'ACTIONS_MODULE18'\nexport {archiveFeature as '40eea0d894f3ce984a612e879a6c87cd025bb05e9b'} from 'ACTIONS_MODULE19'\nexport {deleteFeature as '78534c974dbc5aa14d299e67270e0961c3fec6aacf'} from 'ACTIONS_MODULE20'\nexport {resumeFeature as '40d9bb377bc84684536d6617ebc31de0750eb63bac'} from 'ACTIONS_MODULE21'\nexport {startFeature as '4018bef3bc92ffa047953aebcb3b972add0d07fa0e'} from 'ACTIONS_MODULE22'\nexport {stopFeature as '4095611cbecd750cce932da99d031ed579999f1074'} from 'ACTIONS_MODULE23'\nexport {unarchiveFeature as '4094e1182ef68e30f7807eea0cae32386ca9e65b4b'} from 'ACTIONS_MODULE24'\nexport {addRepository as '40a9edd85d70236c79c5b5f48de3ac570508b38a59'} from 'ACTIONS_MODULE25'\nexport {deleteRepository as '40305f12b445fdd66736a073063014f5162474e9fa'} from 'ACTIONS_MODULE26'\nexport {getGitRepoInfo as '609e008e96a3b01556d124846e9c324ca5200e7986'} from 'ACTIONS_MODULE27'\n"],"names":["execFileAsync","git","cwd","args","stdout","timeout","trim","getGitRepoInfo","repositoryPath","commitLimit","empty","commits","branches","remotes","tags","stashCount","currentBranch","diffStats","workingTree","staged","modified","untracked","error","results","Promise","allSettled","val","i","status","value","split","filter","Boolean","map","line","hash","shortHash","subject","author","relativeDate","length","branch","slice","isCurrent","startsWith","clean","name","lastCommitDate","remoteMap","Map","forEach","match","sanitized","replace","set","Array","from","url","statusLines","x","y","diffLine","files","ins","del","filesChanged","parseInt","insertions","deletions","getGitLog","limit","info","entries"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
module.exports=[21447,19720,a=>{"use strict";var b=a.i(2211),c=a.i(96380),d=a.i(50961);async function e(){let a=(0,c.resolve)("LoadSettingsUseCase"),{workflow:b}=await a.execute();return{approvalGates:{allowPrd:b.approvalGateDefaults.allowPrd,allowPlan:b.approvalGateDefaults.allowPlan,allowMerge:b.approvalGateDefaults.allowMerge},push:b.approvalGateDefaults.pushOnImplementationComplete,openPr:b.openPrOnImplementationComplete,ciWatchEnabled:b.ciWatchEnabled,enableEvidence:b.enableEvidence,commitEvidence:b.commitEvidence,fast:b.defaultFastMode}}(0,d.ensureServerEntryExports)([e]),(0,b.registerServerReference)(e,"
|
|
1
|
+
module.exports=[21447,19720,a=>{"use strict";var b=a.i(2211),c=a.i(96380),d=a.i(50961);async function e(){let a=(0,c.resolve)("LoadSettingsUseCase"),{workflow:b}=await a.execute();return{approvalGates:{allowPrd:b.approvalGateDefaults.allowPrd,allowPlan:b.approvalGateDefaults.allowPlan,allowMerge:b.approvalGateDefaults.allowMerge},push:b.approvalGateDefaults.pushOnImplementationComplete,openPr:b.openPrOnImplementationComplete,ciWatchEnabled:b.ciWatchEnabled,enableEvidence:b.enableEvidence,commitEvidence:b.commitEvidence,fast:b.defaultFastMode}}(0,d.ensureServerEntryExports)([e]),(0,b.registerServerReference)(e,"00f1bbb76f1f1894d8fbe5ccca13a823e94989dd5a",null),a.s(["getWorkflowDefaults",0,e],21447);let f=new Set(["ADMIN","MAINTAIN","WRITE"]);async function g(a){try{let b=(0,c.resolve)("IGitHubRepositoryService"),d=await b.getViewerPermission(a);return{canPushDirectly:f.has(d)}}catch{return{canPushDirectly:!1}}}(0,d.ensureServerEntryExports)([g]),(0,b.registerServerReference)(g,"40a22541950e1859673db63a0fa239b98c8f097e6f",null),a.s(["getViewerPermission",0,g],19720)},77605,a=>{"use strict";var b=a.i(2211),c=a.i(96380);async function d(a){let{description:b,repositoryPath:d,attachments:e,sessionId:f,approvalGates:g,push:h,openPr:i,parentId:j,fast:k,pending:l,forkAndPr:m,commitSpecs:n,ciWatchEnabled:o,enableEvidence:p,commitEvidence:q,agentType:r,model:s,rebaseBeforeBranch:t}=a;if(!b?.trim())return{error:"description is required"};if(!d?.trim())return{error:"repositoryPath is required"};let u=function(a,b){if(!b||0===b.length)return a;let c=b.map(a=>a.notes?.trim()?`@${a.path} [Note: ${a.notes.trim()}]`:`@${a.path}`).join(" ");return`${a}
|
|
2
2
|
|
|
3
|
-
${c}`}(b,e),v={allowPrd:g?.allowPrd??!1,allowPlan:g?.allowPlan??!1,allowMerge:g?.allowMerge??!1};try{let a=(0,c.resolve)("CreateFeatureUseCase"),{feature:e,shouldSpawn:g}=await a.createRecord({userInput:u,repositoryPath:d,approvalGates:v,push:h??!1,openPr:i??!1,...j?{parentId:j}:{},description:b,...k?{fast:k}:{},...l?{pending:l}:{},...null!=m?{forkAndPr:m}:{},...null!=n?{commitSpecs:n}:{},...null!=o?{ciWatchEnabled:o}:{},...null!=p?{enableEvidence:p}:{},...null!=q?{commitEvidence:q}:{},...r?{agentType:r}:{},...s?{model:s}:{},...null!=t?{rebaseBeforeBranch:t}:{}});return a.initializeAndSpawn(e,{userInput:u,repositoryPath:d,approvalGates:v,push:h??!1,openPr:i??!1,...j?{parentId:j}:{},...k?{fast:k}:{},...l?{pending:l}:{},...null!=m?{forkAndPr:m}:{},...null!=n?{commitSpecs:n}:{},...null!=o?{ciWatchEnabled:o}:{},...null!=p?{enableEvidence:p}:{},...null!=q?{commitEvidence:q}:{},...r?{agentType:r}:{},...s?{model:s}:{},...f?{sessionId:f}:{},...null!=t?{rebaseBeforeBranch:t}:{}},g).catch(a=>{console.error("[createFeature] initializeAndSpawn failed:",a)}),{feature:e}}catch(a){return{error:a instanceof Error?a.message:"Failed to create feature"}}}(0,a.i(50961).ensureServerEntryExports)([d]),(0,b.registerServerReference)(d,"
|
|
3
|
+
${c}`}(b,e),v={allowPrd:g?.allowPrd??!1,allowPlan:g?.allowPlan??!1,allowMerge:g?.allowMerge??!1};try{let a=(0,c.resolve)("CreateFeatureUseCase"),{feature:e,shouldSpawn:g}=await a.createRecord({userInput:u,repositoryPath:d,approvalGates:v,push:h??!1,openPr:i??!1,...j?{parentId:j}:{},description:b,...k?{fast:k}:{},...l?{pending:l}:{},...null!=m?{forkAndPr:m}:{},...null!=n?{commitSpecs:n}:{},...null!=o?{ciWatchEnabled:o}:{},...null!=p?{enableEvidence:p}:{},...null!=q?{commitEvidence:q}:{},...r?{agentType:r}:{},...s?{model:s}:{},...null!=t?{rebaseBeforeBranch:t}:{}});return a.initializeAndSpawn(e,{userInput:u,repositoryPath:d,approvalGates:v,push:h??!1,openPr:i??!1,...j?{parentId:j}:{},...k?{fast:k}:{},...l?{pending:l}:{},...null!=m?{forkAndPr:m}:{},...null!=n?{commitSpecs:n}:{},...null!=o?{ciWatchEnabled:o}:{},...null!=p?{enableEvidence:p}:{},...null!=q?{commitEvidence:q}:{},...r?{agentType:r}:{},...s?{model:s}:{},...f?{sessionId:f}:{},...null!=t?{rebaseBeforeBranch:t}:{}},g).catch(a=>{console.error("[createFeature] initializeAndSpawn failed:",a)}),{feature:e}}catch(a){return{error:a instanceof Error?a.message:"Failed to create feature"}}}(0,a.i(50961).ensureServerEntryExports)([d]),(0,b.registerServerReference)(d,"40db41890e6c3231cc280da8d122da36be957442c6",null),a.s(["createFeature",0,d],77605)},37644,a=>{"use strict";var b=a.i(23504),c=a.i(27900),d=a.i(12513),e=a.i(73101),f=a.i(54775),g=a.i(65324),h=a.i(33841),i=a.i(46646),j=a.i(68670),k=a.i(85321),l=a.i(84095),m=a.i(56799),n=a.i(80496),o=a.i(93225),p=a.i(94691),q=a.i(41872),r=a.i(9959),s=a.i(79124),t=a.i(29207),u=a.i(10528),v=a.i(50845),w=a.i(26604),x=a.i(54723),y=a.i(18942),z=a.i(42886),A=a.i(49560),B=a.i(39353),C=a.i(21447),D=a.i(19720),E=a.i(77605);a.s([],67047),a.i(67047),a.s(["0001646280e908679c3138f1ac25fb2433e32dd1b9",()=>b.getAllAgentModels,"0020452c03f2732119e7561d4c1fba86eee90d0441",()=>q.isAgentSetupComplete,"0079bf88ddd1853c0adb03b925c1136af2ea7b2b58",()=>s.checkToolStatus,"0079e34070bffa2d0e7952067ffc98534044a3f47f",()=>f.listGitHubOrganizations,"00d8fb08a7dba52132389265ec4eb081f02a547187",()=>d.pickFolder,"00f1bbb76f1f1894d8fbe5ccca13a823e94989dd5a",()=>C.getWorkflowDefaults,"00f9cb9318f5f4e2ad95eab420832c3e2a8d80b823",()=>r.checkAgentAuth,"400644903ed6894eedbf0b001dcbbb7e3ca3e309c7",()=>l.openIde,"400c270aefa32609d2064e1074a3b9cca2ecd7ac40",()=>i.deployRepository,"400f6b6f5c319087323956e68e3c1af167a0097c0d",()=>p.getDeploymentLogs,"4018bef3bc92ffa047953aebcb3b972add0d07fa0e",()=>x.startFeature,"4025e7565e144546a41753500aed288fd2e822bb35",()=>j.stopDeployment,"402dfcc9c77913dbcb80cbb028bd9325ebba11cbff",()=>k.getDeploymentStatus,"40305f12b445fdd66736a073063014f5162474e9fa",()=>B.deleteRepository,"404e186bc93375e8827c855048b8206ec2e95af43a",()=>o.syncRepository,"407082b8991005bcda465d223757d9d050f8d3253a",()=>t.getFeatureMetadata,"409012491a994da842a75da0beffa5ceb08da18b4b",()=>n.openFolder,"4094e1182ef68e30f7807eea0cae32386ca9e65b4b",()=>z.unarchiveFeature,"4095611cbecd750cce932da99d031ed579999f1074",()=>y.stopFeature,"4098b761c8813bd6c7b0f130c2704912265def7222",()=>m.openShell,"409bd776367ae0414e61a14766b43d6fd2f50a4fdc",()=>g.importGitHubRepository,"409dba37e21d4549c18ca2a1ad2e151d778fc47c0a",()=>e.listGitHubRepositories,"40a22541950e1859673db63a0fa239b98c8f097e6f",()=>D.getViewerPermission,"40a9edd85d70236c79c5b5f48de3ac570508b38a59",()=>A.addRepository,"40c5d85f4158d92e322eff01a37b0c6fbfa808d924",()=>h.deployFeature,"40d9bb377bc84684536d6617ebc31de0750eb63bac",()=>w.resumeFeature,"40db41890e6c3231cc280da8d122da36be957442c6",()=>E.createFeature,"40eea0d894f3ce984a612e879a6c87cd025bb05e9b",()=>u.archiveFeature,"60c3bd7311a1d9df132c7a07881b9d9bcb86c5ecf4",()=>c.updateAgentAndModel,"78534c974dbc5aa14d299e67270e0961c3fec6aacf",()=>v.deleteFeature],37644)}];
|
|
4
4
|
|
|
5
5
|
//# sourceMappingURL=src_presentation_web_0qys821._.js.map
|