@shipit-ai/cli 1.164.2-pr9.fdd3eb0 → 1.165.0-pr10.fb1e062
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 +2 -2
- package/web/.next/required-server-files.json +2 -2
- 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]__0vd39s9._.js → [root-of-the-server]__0_ag.8y._.js} +2 -2
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__0vd39s9._.js.map → [root-of-the-server]__0_ag.8y._.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~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/{_0b8rkvn._.js → _0ck-4tu._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_0b8rkvn._.js.map → _0ck-4tu._.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/_0j9vx-1._.js +1 -1
- package/web/.next/server/chunks/ssr/_0jpbsh_._.js +1 -1
- package/web/.next/server/chunks/ssr/{_091c_f9._.js → _0qwfbti._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_091c_f9._.js.map → _0qwfbti._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/_0rvaoj4._.js +1 -1
- package/web/.next/server/chunks/ssr/_0rvaoj4._.js.map +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/{_0djr-aw._.js → _1251jyh._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_0djr-aw._.js.map → _1251jyh._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/node_modules__pnpm_0xyo1be._.js +3 -0
- package/web/.next/server/chunks/ssr/{node_modules__pnpm_0ayym15._.js.map → node_modules__pnpm_0xyo1be._.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/{0w3h632akwmjj.js → 021w~-m1dz332.js} +1 -1
- package/web/.next/static/chunks/{06fuh2nvpirmg.js → 048ak2fupcqxa.js} +1 -1
- package/web/.next/static/chunks/{134o_ag.q_viy.js → 05ma7tqgte2rp.js} +2 -2
- package/web/.next/static/chunks/{0r990ua~igkqj.js → 07tgqua6s0jzi.js} +1 -1
- package/web/.next/static/chunks/{0wlv._qkau1f1.js → 09b2usag59_bi.js} +2 -2
- package/web/.next/static/chunks/{0pdwjzz5fqyi7.js → 0a0v6oq0y8qjf.js} +1 -1
- package/web/.next/static/chunks/{0ttgwaa4r_ssq.js → 0ashjp4xvee.t.js} +2 -2
- package/web/.next/static/chunks/{0b4_f_x20k4lt.js → 0fca5-jv6y2tr.js} +1 -1
- package/web/.next/static/chunks/0gq630zq4bom1.js +1 -0
- package/web/.next/static/chunks/{0bgh91x4g6-p9.js → 0ol9d.q-22uu9.js} +1 -1
- package/web/.next/static/chunks/{13tsq8xckdd0p.js → 0t_0ao9.hyo5c.js} +1 -1
- package/web/.next/static/chunks/{0fnrtwo.n2vij.js → 0v-p~icea44vo.js} +1 -1
- package/web/.next/static/chunks/{0evxdvnturego.js → 0wmckrtphfa12.js} +1 -1
- package/web/.next/static/chunks/0zz.xgsd83.3n.js +1 -0
- package/web/.next/static/chunks/{05csnguxeu_6..js → 13wut_4~i-~5e.js} +1 -1
- package/web/.next/static/chunks/{0h0q5yqipg5-2.js → 14tk-xc-yijov.js} +3 -3
- package/web/.next/server/chunks/ssr/node_modules__pnpm_0ayym15._.js +0 -3
- package/web/.next/static/chunks/010wdbmhyou5l.js +0 -1
- package/web/.next/static/chunks/0~_228bvayobk.js +0 -1
- /package/web/.next/static/{JAkg8eEoRUotjG8QQldwP → eHSSUbH123C8dRCmILzEY}/_buildManifest.js +0 -0
- /package/web/.next/static/{JAkg8eEoRUotjG8QQldwP → eHSSUbH123C8dRCmILzEY}/_clientMiddlewareManifest.js +0 -0
- /package/web/.next/static/{JAkg8eEoRUotjG8QQldwP → eHSSUbH123C8dRCmILzEY}/_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 '002670c3d4ee0edb61f57117f37bed9fe037957335'} from 'ACTIONS_MODULE0'\nexport {updateAgentAndModel as '60b82c522414a21d8f70c109d334b48ccddec14caa'} from 'ACTIONS_MODULE1'\nexport {pickFolder as '0024998ff81fd6d120222831a57fee689b8687c12b'} from 'ACTIONS_MODULE2'\nexport {listGitHubRepositories as '409a87e4ab5dfa4a5b459908a627ef91f8a22376f5'} from 'ACTIONS_MODULE3'\nexport {listGitHubOrganizations as '00cd1ca6892497bdda9bb473aeda15e14d1f74a00a'} from 'ACTIONS_MODULE4'\nexport {importGitHubRepository as '4071dd45198a850e19b1d84d5d3c8de4b2fd074ef1'} from 'ACTIONS_MODULE5'\nexport {deployFeature as '40d73014331a1b4aedc7cc15e76a55370085f6e0df'} from 'ACTIONS_MODULE6'\nexport {deployRepository as '40e643ab82f3648efffe8adbc642fe87a44a18a579'} from 'ACTIONS_MODULE7'\nexport {stopDeployment as '40f878b2d8030789dcf12db7f1f07f3ae1ff34bb21'} from 'ACTIONS_MODULE8'\nexport {getDeploymentStatus as '40fc8d02b628bca4904885836bce866dc238f57cd3'} from 'ACTIONS_MODULE9'\nexport {openIde as '401f0187c1b1351cf48c2ae49610ea052d5ea32c43'} from 'ACTIONS_MODULE10'\nexport {openShell as '40e65ff9949ecee54ddd146a2c7e2a9e7c561a1535'} from 'ACTIONS_MODULE11'\nexport {openFolder as '401ea4944866507535beedf2b6ef40052cde511075'} from 'ACTIONS_MODULE12'\nexport {syncRepository as '40df1f2d7d8eec3fe24a3728efeb0fa922ed455405'} from 'ACTIONS_MODULE13'\nexport {getDeploymentLogs as '40e25ec3a63cd4b36a7e33564d39743f8f0242e533'} from 'ACTIONS_MODULE14'\nexport {isAgentSetupComplete as '001a531c882f3973b6d172970784bc95accc8a963f'} from 'ACTIONS_MODULE15'\nexport {checkAgentAuth as '00b0314d184e575c8efde646289d902978ee5072b4'} from 'ACTIONS_MODULE16'\nexport {checkToolStatus as '001fa077e21fd2647ce5b9d1ea48fd692fc28c01c1'} from 'ACTIONS_MODULE17'\nexport {getFeatureMetadata as '40840249913f1c6888facd0f654d338c7bc0f40fb3'} from 'ACTIONS_MODULE18'\nexport {archiveFeature as '40eaa73659ccb6e91fad718657b01eb21e89b184ab'} from 'ACTIONS_MODULE19'\nexport {deleteFeature as '786c14f4c6f35a4426da7fb7712ea7ab189658277e'} from 'ACTIONS_MODULE20'\nexport {resumeFeature as '404419228389bd40355e0ac1ca6434ed6ea1d02f27'} from 'ACTIONS_MODULE21'\nexport {startFeature as '40f2d1a24f3802389f97050f4ba875c60f44f1d518'} from 'ACTIONS_MODULE22'\nexport {stopFeature as '4011992157506e3d599fd654e0d32c2b76018a2ce2'} from 'ACTIONS_MODULE23'\nexport {unarchiveFeature as '40375a34aa49ffb41002bbbf3e4605034770cdfec0'} from 'ACTIONS_MODULE24'\nexport {addRepository as '40c3bd5358fbb3217c0d8c67093c69ccf346479f01'} from 'ACTIONS_MODULE25'\nexport {deleteRepository as '40ee5231b968993c6e4650d0c4d80c67c9dcedb7d8'} from 'ACTIONS_MODULE26'\nexport {getGitRepoInfo as '60fafb3a16793b4e2e368d79ea4a9710e49901a827'} 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/%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 '0018666dc32d8d6743f4fc14191c9513509c6475c2'} from 'ACTIONS_MODULE0'\nexport {updateAgentAndModel as '60d3ec7e6d248abb625037a7a5aa84512ea802c846'} from 'ACTIONS_MODULE1'\nexport {pickFolder as '0006b4e86479d61a772d236073489a1d0c9aacc773'} from 'ACTIONS_MODULE2'\nexport {listGitHubRepositories as '40b0d1d55ddad83e6cc907346584808b2f8f51b557'} from 'ACTIONS_MODULE3'\nexport {listGitHubOrganizations as '003a378a2e3d31a5e7b882aea740d0acd4a5408355'} from 'ACTIONS_MODULE4'\nexport {importGitHubRepository as '40145d3a42c1bcb2d3041bf7b3f392bd3c8dfc7b42'} from 'ACTIONS_MODULE5'\nexport {deployFeature as '407d5023c049bf96b5d35d582b43eac082bf164c81'} from 'ACTIONS_MODULE6'\nexport {deployRepository as '401b03df256d95efacc772f18f65821d5ad563a06e'} from 'ACTIONS_MODULE7'\nexport {stopDeployment as '4093cf76292234eda2020f6c59c19c3309205bf7b6'} from 'ACTIONS_MODULE8'\nexport {getDeploymentStatus as '40cfadeb18cd46eb8612485a70c6061cc7ee96021b'} from 'ACTIONS_MODULE9'\nexport {openIde as '408db660a5d1288fca3e9892753a0d046ded53a03c'} from 'ACTIONS_MODULE10'\nexport {openShell as '401e2c687d4269575b14b24372cbb494fcdef8dd99'} from 'ACTIONS_MODULE11'\nexport {openFolder as '40ce8c1bc3f3b4c6188ca01b0ec9331a59d851d23e'} from 'ACTIONS_MODULE12'\nexport {syncRepository as '406acadfeceb7968815b7b7a8633af7faa0746e351'} from 'ACTIONS_MODULE13'\nexport {getDeploymentLogs as '404b84ad3de41919a008a90136fca164e9c6b8f158'} from 'ACTIONS_MODULE14'\nexport {isAgentSetupComplete as '0068fc0cd326e02f301d38880dc869801e9dc4a5da'} from 'ACTIONS_MODULE15'\nexport {checkAgentAuth as '00ff606feefe8c84ed567473b4350ee6eeca8cf91e'} from 'ACTIONS_MODULE16'\nexport {checkToolStatus as '00396841cf297c9ad4cf91270837d87ffb5a46ca66'} from 'ACTIONS_MODULE17'\nexport {getFeatureMetadata as '40a07aeee48a340b4e68e0f30eb3b2db8cb4b9b5b1'} from 'ACTIONS_MODULE18'\nexport {archiveFeature as '40750562c322fbec832d8b0da56bc3b62f2c7830da'} from 'ACTIONS_MODULE19'\nexport {deleteFeature as '785bda77115c7cac7ecf90af2c506af36ce3b37fed'} from 'ACTIONS_MODULE20'\nexport {resumeFeature as '40f9df78a43fde004835715d9ed8c3836c9a8389c2'} from 'ACTIONS_MODULE21'\nexport {startFeature as '403f576801faefe52cf4af10a23b1aae2922866c6d'} from 'ACTIONS_MODULE22'\nexport {stopFeature as '4010d40b54301692d3284f44821491e9835c4cc837'} from 'ACTIONS_MODULE23'\nexport {unarchiveFeature as '4041dd5ed14cfb414639fab1737e109aed8ca621f3'} from 'ACTIONS_MODULE24'\nexport {addRepository as '406fb037aa9a5c9956fce7bee84ca0e2aace0fecb7'} from 'ACTIONS_MODULE25'\nexport {deleteRepository as '402172775e57601e801ffacfa9aa35202b4d5540f5'} from 'ACTIONS_MODULE26'\nexport {getGitRepoInfo as '6033fc53b32a97737eee3e726966f8b26f7e7ea4bd'} 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,"6033fc53b32a97737eee3e726966f8b26f7e7ea4bd",null),(0,b.registerServerReference)(i,"6098cd75e6c8e89d75c300bbde3344d774dc29ae1a",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(["0006b4e86479d61a772d236073489a1d0c9aacc773",()=>d.pickFolder,"0018666dc32d8d6743f4fc14191c9513509c6475c2",()=>b.getAllAgentModels,"00396841cf297c9ad4cf91270837d87ffb5a46ca66",()=>s.checkToolStatus,"003a378a2e3d31a5e7b882aea740d0acd4a5408355",()=>f.listGitHubOrganizations,"0068fc0cd326e02f301d38880dc869801e9dc4a5da",()=>q.isAgentSetupComplete,"00ff606feefe8c84ed567473b4350ee6eeca8cf91e",()=>r.checkAgentAuth,"4010d40b54301692d3284f44821491e9835c4cc837",()=>y.stopFeature,"40145d3a42c1bcb2d3041bf7b3f392bd3c8dfc7b42",()=>g.importGitHubRepository,"401b03df256d95efacc772f18f65821d5ad563a06e",()=>i.deployRepository,"401e2c687d4269575b14b24372cbb494fcdef8dd99",()=>m.openShell,"402172775e57601e801ffacfa9aa35202b4d5540f5",()=>B.deleteRepository,"403f576801faefe52cf4af10a23b1aae2922866c6d",()=>x.startFeature,"4041dd5ed14cfb414639fab1737e109aed8ca621f3",()=>z.unarchiveFeature,"404b84ad3de41919a008a90136fca164e9c6b8f158",()=>p.getDeploymentLogs,"406acadfeceb7968815b7b7a8633af7faa0746e351",()=>o.syncRepository,"406fb037aa9a5c9956fce7bee84ca0e2aace0fecb7",()=>A.addRepository,"40750562c322fbec832d8b0da56bc3b62f2c7830da",()=>u.archiveFeature,"407d5023c049bf96b5d35d582b43eac082bf164c81",()=>h.deployFeature,"408db660a5d1288fca3e9892753a0d046ded53a03c",()=>l.openIde,"4093cf76292234eda2020f6c59c19c3309205bf7b6",()=>j.stopDeployment,"40a07aeee48a340b4e68e0f30eb3b2db8cb4b9b5b1",()=>t.getFeatureMetadata,"40b0d1d55ddad83e6cc907346584808b2f8f51b557",()=>e.listGitHubRepositories,"40ce8c1bc3f3b4c6188ca01b0ec9331a59d851d23e",()=>n.openFolder,"40cfadeb18cd46eb8612485a70c6061cc7ee96021b",()=>k.getDeploymentStatus,"40f9df78a43fde004835715d9ed8c3836c9a8389c2",()=>w.resumeFeature,"6033fc53b32a97737eee3e726966f8b26f7e7ea4bd",()=>C.getGitRepoInfo,"60d3ec7e6d248abb625037a7a5aa84512ea802c846",()=>c.updateAgentAndModel,"785bda77115c7cac7ecf90af2c506af36ce3b37fed",()=>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 '002670c3d4ee0edb61f57117f37bed9fe037957335'} from 'ACTIONS_MODULE0'\nexport {updateAgentAndModel as '60b82c522414a21d8f70c109d334b48ccddec14caa'} from 'ACTIONS_MODULE1'\nexport {pickFolder as '0024998ff81fd6d120222831a57fee689b8687c12b'} from 'ACTIONS_MODULE2'\nexport {listGitHubRepositories as '409a87e4ab5dfa4a5b459908a627ef91f8a22376f5'} from 'ACTIONS_MODULE3'\nexport {listGitHubOrganizations as '00cd1ca6892497bdda9bb473aeda15e14d1f74a00a'} from 'ACTIONS_MODULE4'\nexport {importGitHubRepository as '4071dd45198a850e19b1d84d5d3c8de4b2fd074ef1'} from 'ACTIONS_MODULE5'\nexport {deployFeature as '40d73014331a1b4aedc7cc15e76a55370085f6e0df'} from 'ACTIONS_MODULE6'\nexport {deployRepository as '40e643ab82f3648efffe8adbc642fe87a44a18a579'} from 'ACTIONS_MODULE7'\nexport {stopDeployment as '40f878b2d8030789dcf12db7f1f07f3ae1ff34bb21'} from 'ACTIONS_MODULE8'\nexport {getDeploymentStatus as '40fc8d02b628bca4904885836bce866dc238f57cd3'} from 'ACTIONS_MODULE9'\nexport {openIde as '401f0187c1b1351cf48c2ae49610ea052d5ea32c43'} from 'ACTIONS_MODULE10'\nexport {openShell as '40e65ff9949ecee54ddd146a2c7e2a9e7c561a1535'} from 'ACTIONS_MODULE11'\nexport {openFolder as '401ea4944866507535beedf2b6ef40052cde511075'} from 'ACTIONS_MODULE12'\nexport {syncRepository as '40df1f2d7d8eec3fe24a3728efeb0fa922ed455405'} from 'ACTIONS_MODULE13'\nexport {getDeploymentLogs as '40e25ec3a63cd4b36a7e33564d39743f8f0242e533'} from 'ACTIONS_MODULE14'\nexport {isAgentSetupComplete as '001a531c882f3973b6d172970784bc95accc8a963f'} from 'ACTIONS_MODULE15'\nexport {checkAgentAuth as '00b0314d184e575c8efde646289d902978ee5072b4'} from 'ACTIONS_MODULE16'\nexport {checkToolStatus as '001fa077e21fd2647ce5b9d1ea48fd692fc28c01c1'} from 'ACTIONS_MODULE17'\nexport {getFeatureMetadata as '40840249913f1c6888facd0f654d338c7bc0f40fb3'} from 'ACTIONS_MODULE18'\nexport {archiveFeature as '40eaa73659ccb6e91fad718657b01eb21e89b184ab'} from 'ACTIONS_MODULE19'\nexport {deleteFeature as '786c14f4c6f35a4426da7fb7712ea7ab189658277e'} from 'ACTIONS_MODULE20'\nexport {resumeFeature as '404419228389bd40355e0ac1ca6434ed6ea1d02f27'} from 'ACTIONS_MODULE21'\nexport {startFeature as '40f2d1a24f3802389f97050f4ba875c60f44f1d518'} from 'ACTIONS_MODULE22'\nexport {stopFeature as '4011992157506e3d599fd654e0d32c2b76018a2ce2'} from 'ACTIONS_MODULE23'\nexport {unarchiveFeature as '40375a34aa49ffb41002bbbf3e4605034770cdfec0'} from 'ACTIONS_MODULE24'\nexport {addRepository as '40c3bd5358fbb3217c0d8c67093c69ccf346479f01'} from 'ACTIONS_MODULE25'\nexport {deleteRepository as '40ee5231b968993c6e4650d0c4d80c67c9dcedb7d8'} from 'ACTIONS_MODULE26'\nexport {getGitRepoInfo as '60fafb3a16793b4e2e368d79ea4a9710e49901a827'} 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 '0018666dc32d8d6743f4fc14191c9513509c6475c2'} from 'ACTIONS_MODULE0'\nexport {updateAgentAndModel as '60d3ec7e6d248abb625037a7a5aa84512ea802c846'} from 'ACTIONS_MODULE1'\nexport {pickFolder as '0006b4e86479d61a772d236073489a1d0c9aacc773'} from 'ACTIONS_MODULE2'\nexport {listGitHubRepositories as '40b0d1d55ddad83e6cc907346584808b2f8f51b557'} from 'ACTIONS_MODULE3'\nexport {listGitHubOrganizations as '003a378a2e3d31a5e7b882aea740d0acd4a5408355'} from 'ACTIONS_MODULE4'\nexport {importGitHubRepository as '40145d3a42c1bcb2d3041bf7b3f392bd3c8dfc7b42'} from 'ACTIONS_MODULE5'\nexport {deployFeature as '407d5023c049bf96b5d35d582b43eac082bf164c81'} from 'ACTIONS_MODULE6'\nexport {deployRepository as '401b03df256d95efacc772f18f65821d5ad563a06e'} from 'ACTIONS_MODULE7'\nexport {stopDeployment as '4093cf76292234eda2020f6c59c19c3309205bf7b6'} from 'ACTIONS_MODULE8'\nexport {getDeploymentStatus as '40cfadeb18cd46eb8612485a70c6061cc7ee96021b'} from 'ACTIONS_MODULE9'\nexport {openIde as '408db660a5d1288fca3e9892753a0d046ded53a03c'} from 'ACTIONS_MODULE10'\nexport {openShell as '401e2c687d4269575b14b24372cbb494fcdef8dd99'} from 'ACTIONS_MODULE11'\nexport {openFolder as '40ce8c1bc3f3b4c6188ca01b0ec9331a59d851d23e'} from 'ACTIONS_MODULE12'\nexport {syncRepository as '406acadfeceb7968815b7b7a8633af7faa0746e351'} from 'ACTIONS_MODULE13'\nexport {getDeploymentLogs as '404b84ad3de41919a008a90136fca164e9c6b8f158'} from 'ACTIONS_MODULE14'\nexport {isAgentSetupComplete as '0068fc0cd326e02f301d38880dc869801e9dc4a5da'} from 'ACTIONS_MODULE15'\nexport {checkAgentAuth as '00ff606feefe8c84ed567473b4350ee6eeca8cf91e'} from 'ACTIONS_MODULE16'\nexport {checkToolStatus as '00396841cf297c9ad4cf91270837d87ffb5a46ca66'} from 'ACTIONS_MODULE17'\nexport {getFeatureMetadata as '40a07aeee48a340b4e68e0f30eb3b2db8cb4b9b5b1'} from 'ACTIONS_MODULE18'\nexport {archiveFeature as '40750562c322fbec832d8b0da56bc3b62f2c7830da'} from 'ACTIONS_MODULE19'\nexport {deleteFeature as '785bda77115c7cac7ecf90af2c506af36ce3b37fed'} from 'ACTIONS_MODULE20'\nexport {resumeFeature as '40f9df78a43fde004835715d9ed8c3836c9a8389c2'} from 'ACTIONS_MODULE21'\nexport {startFeature as '403f576801faefe52cf4af10a23b1aae2922866c6d'} from 'ACTIONS_MODULE22'\nexport {stopFeature as '4010d40b54301692d3284f44821491e9835c4cc837'} from 'ACTIONS_MODULE23'\nexport {unarchiveFeature as '4041dd5ed14cfb414639fab1737e109aed8ca621f3'} from 'ACTIONS_MODULE24'\nexport {addRepository as '406fb037aa9a5c9956fce7bee84ca0e2aace0fecb7'} from 'ACTIONS_MODULE25'\nexport {deleteRepository as '402172775e57601e801ffacfa9aa35202b4d5540f5'} from 'ACTIONS_MODULE26'\nexport {getGitRepoInfo as '6033fc53b32a97737eee3e726966f8b26f7e7ea4bd'} 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,"00fdba6a70eb26e6d53bef475dd72cf52c78d330ae",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,"409e6a107e5d196e2483b89e30d5e4d5558789ed36",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,"401ff1026b89897e7d92eb29cc8c95bd092af688da",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(["0006b4e86479d61a772d236073489a1d0c9aacc773",()=>d.pickFolder,"0018666dc32d8d6743f4fc14191c9513509c6475c2",()=>b.getAllAgentModels,"00396841cf297c9ad4cf91270837d87ffb5a46ca66",()=>s.checkToolStatus,"003a378a2e3d31a5e7b882aea740d0acd4a5408355",()=>f.listGitHubOrganizations,"0068fc0cd326e02f301d38880dc869801e9dc4a5da",()=>q.isAgentSetupComplete,"00fdba6a70eb26e6d53bef475dd72cf52c78d330ae",()=>C.getWorkflowDefaults,"00ff606feefe8c84ed567473b4350ee6eeca8cf91e",()=>r.checkAgentAuth,"4010d40b54301692d3284f44821491e9835c4cc837",()=>y.stopFeature,"40145d3a42c1bcb2d3041bf7b3f392bd3c8dfc7b42",()=>g.importGitHubRepository,"401b03df256d95efacc772f18f65821d5ad563a06e",()=>i.deployRepository,"401e2c687d4269575b14b24372cbb494fcdef8dd99",()=>m.openShell,"401ff1026b89897e7d92eb29cc8c95bd092af688da",()=>E.createFeature,"402172775e57601e801ffacfa9aa35202b4d5540f5",()=>B.deleteRepository,"403f576801faefe52cf4af10a23b1aae2922866c6d",()=>x.startFeature,"4041dd5ed14cfb414639fab1737e109aed8ca621f3",()=>z.unarchiveFeature,"404b84ad3de41919a008a90136fca164e9c6b8f158",()=>p.getDeploymentLogs,"406acadfeceb7968815b7b7a8633af7faa0746e351",()=>o.syncRepository,"406fb037aa9a5c9956fce7bee84ca0e2aace0fecb7",()=>A.addRepository,"40750562c322fbec832d8b0da56bc3b62f2c7830da",()=>u.archiveFeature,"407d5023c049bf96b5d35d582b43eac082bf164c81",()=>h.deployFeature,"408db660a5d1288fca3e9892753a0d046ded53a03c",()=>l.openIde,"4093cf76292234eda2020f6c59c19c3309205bf7b6",()=>j.stopDeployment,"409e6a107e5d196e2483b89e30d5e4d5558789ed36",()=>D.getViewerPermission,"40a07aeee48a340b4e68e0f30eb3b2db8cb4b9b5b1",()=>t.getFeatureMetadata,"40b0d1d55ddad83e6cc907346584808b2f8f51b557",()=>e.listGitHubRepositories,"40ce8c1bc3f3b4c6188ca01b0ec9331a59d851d23e",()=>n.openFolder,"40cfadeb18cd46eb8612485a70c6061cc7ee96021b",()=>k.getDeploymentStatus,"40f9df78a43fde004835715d9ed8c3836c9a8389c2",()=>w.resumeFeature,"60d3ec7e6d248abb625037a7a5aa84512ea802c846",()=>c.updateAgentAndModel,"785bda77115c7cac7ecf90af2c506af36ce3b37fed",()=>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 '002670c3d4ee0edb61f57117f37bed9fe037957335'} from 'ACTIONS_MODULE0'\nexport {updateAgentAndModel as '60b82c522414a21d8f70c109d334b48ccddec14caa'} from 'ACTIONS_MODULE1'\nexport {pickFolder as '0024998ff81fd6d120222831a57fee689b8687c12b'} from 'ACTIONS_MODULE2'\nexport {listGitHubRepositories as '409a87e4ab5dfa4a5b459908a627ef91f8a22376f5'} from 'ACTIONS_MODULE3'\nexport {listGitHubOrganizations as '00cd1ca6892497bdda9bb473aeda15e14d1f74a00a'} from 'ACTIONS_MODULE4'\nexport {importGitHubRepository as '4071dd45198a850e19b1d84d5d3c8de4b2fd074ef1'} from 'ACTIONS_MODULE5'\nexport {deployFeature as '40d73014331a1b4aedc7cc15e76a55370085f6e0df'} from 'ACTIONS_MODULE6'\nexport {deployRepository as '40e643ab82f3648efffe8adbc642fe87a44a18a579'} from 'ACTIONS_MODULE7'\nexport {stopDeployment as '40f878b2d8030789dcf12db7f1f07f3ae1ff34bb21'} from 'ACTIONS_MODULE8'\nexport {getDeploymentStatus as '40fc8d02b628bca4904885836bce866dc238f57cd3'} from 'ACTIONS_MODULE9'\nexport {openIde as '401f0187c1b1351cf48c2ae49610ea052d5ea32c43'} from 'ACTIONS_MODULE10'\nexport {openShell as '40e65ff9949ecee54ddd146a2c7e2a9e7c561a1535'} from 'ACTIONS_MODULE11'\nexport {openFolder as '401ea4944866507535beedf2b6ef40052cde511075'} from 'ACTIONS_MODULE12'\nexport {syncRepository as '40df1f2d7d8eec3fe24a3728efeb0fa922ed455405'} from 'ACTIONS_MODULE13'\nexport {getDeploymentLogs as '40e25ec3a63cd4b36a7e33564d39743f8f0242e533'} from 'ACTIONS_MODULE14'\nexport {isAgentSetupComplete as '001a531c882f3973b6d172970784bc95accc8a963f'} from 'ACTIONS_MODULE15'\nexport {checkAgentAuth as '00b0314d184e575c8efde646289d902978ee5072b4'} from 'ACTIONS_MODULE16'\nexport {checkToolStatus as '001fa077e21fd2647ce5b9d1ea48fd692fc28c01c1'} from 'ACTIONS_MODULE17'\nexport {getFeatureMetadata as '40840249913f1c6888facd0f654d338c7bc0f40fb3'} from 'ACTIONS_MODULE18'\nexport {archiveFeature as '40eaa73659ccb6e91fad718657b01eb21e89b184ab'} from 'ACTIONS_MODULE19'\nexport {deleteFeature as '786c14f4c6f35a4426da7fb7712ea7ab189658277e'} from 'ACTIONS_MODULE20'\nexport {resumeFeature as '404419228389bd40355e0ac1ca6434ed6ea1d02f27'} from 'ACTIONS_MODULE21'\nexport {startFeature as '40f2d1a24f3802389f97050f4ba875c60f44f1d518'} from 'ACTIONS_MODULE22'\nexport {stopFeature as '4011992157506e3d599fd654e0d32c2b76018a2ce2'} from 'ACTIONS_MODULE23'\nexport {unarchiveFeature as '40375a34aa49ffb41002bbbf3e4605034770cdfec0'} from 'ACTIONS_MODULE24'\nexport {addRepository as '40c3bd5358fbb3217c0d8c67093c69ccf346479f01'} from 'ACTIONS_MODULE25'\nexport {deleteRepository as '40ee5231b968993c6e4650d0c4d80c67c9dcedb7d8'} from 'ACTIONS_MODULE26'\nexport {getWorkflowDefaults as '001266a413033d33f48c3f7e4a5e748fb6593f0e68'} from 'ACTIONS_MODULE27'\nexport {getViewerPermission as '4001bc463a8f92f64c361cfc540c2a115447e8e29b'} from 'ACTIONS_MODULE28'\nexport {createFeature as '40c9cd1db51077a55e49dafcdc2a1a2f1986280c6c'} from 'ACTIONS_MODULE29'\nexport {getViewerPermission as '4001bc463a8f92f64c361cfc540c2a115447e8e29b'} 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 '0018666dc32d8d6743f4fc14191c9513509c6475c2'} from 'ACTIONS_MODULE0'\nexport {updateAgentAndModel as '60d3ec7e6d248abb625037a7a5aa84512ea802c846'} from 'ACTIONS_MODULE1'\nexport {pickFolder as '0006b4e86479d61a772d236073489a1d0c9aacc773'} from 'ACTIONS_MODULE2'\nexport {listGitHubRepositories as '40b0d1d55ddad83e6cc907346584808b2f8f51b557'} from 'ACTIONS_MODULE3'\nexport {listGitHubOrganizations as '003a378a2e3d31a5e7b882aea740d0acd4a5408355'} from 'ACTIONS_MODULE4'\nexport {importGitHubRepository as '40145d3a42c1bcb2d3041bf7b3f392bd3c8dfc7b42'} from 'ACTIONS_MODULE5'\nexport {deployFeature as '407d5023c049bf96b5d35d582b43eac082bf164c81'} from 'ACTIONS_MODULE6'\nexport {deployRepository as '401b03df256d95efacc772f18f65821d5ad563a06e'} from 'ACTIONS_MODULE7'\nexport {stopDeployment as '4093cf76292234eda2020f6c59c19c3309205bf7b6'} from 'ACTIONS_MODULE8'\nexport {getDeploymentStatus as '40cfadeb18cd46eb8612485a70c6061cc7ee96021b'} from 'ACTIONS_MODULE9'\nexport {openIde as '408db660a5d1288fca3e9892753a0d046ded53a03c'} from 'ACTIONS_MODULE10'\nexport {openShell as '401e2c687d4269575b14b24372cbb494fcdef8dd99'} from 'ACTIONS_MODULE11'\nexport {openFolder as '40ce8c1bc3f3b4c6188ca01b0ec9331a59d851d23e'} from 'ACTIONS_MODULE12'\nexport {syncRepository as '406acadfeceb7968815b7b7a8633af7faa0746e351'} from 'ACTIONS_MODULE13'\nexport {getDeploymentLogs as '404b84ad3de41919a008a90136fca164e9c6b8f158'} from 'ACTIONS_MODULE14'\nexport {isAgentSetupComplete as '0068fc0cd326e02f301d38880dc869801e9dc4a5da'} from 'ACTIONS_MODULE15'\nexport {checkAgentAuth as '00ff606feefe8c84ed567473b4350ee6eeca8cf91e'} from 'ACTIONS_MODULE16'\nexport {checkToolStatus as '00396841cf297c9ad4cf91270837d87ffb5a46ca66'} from 'ACTIONS_MODULE17'\nexport {getFeatureMetadata as '40a07aeee48a340b4e68e0f30eb3b2db8cb4b9b5b1'} from 'ACTIONS_MODULE18'\nexport {archiveFeature as '40750562c322fbec832d8b0da56bc3b62f2c7830da'} from 'ACTIONS_MODULE19'\nexport {deleteFeature as '785bda77115c7cac7ecf90af2c506af36ce3b37fed'} from 'ACTIONS_MODULE20'\nexport {resumeFeature as '40f9df78a43fde004835715d9ed8c3836c9a8389c2'} from 'ACTIONS_MODULE21'\nexport {startFeature as '403f576801faefe52cf4af10a23b1aae2922866c6d'} from 'ACTIONS_MODULE22'\nexport {stopFeature as '4010d40b54301692d3284f44821491e9835c4cc837'} from 'ACTIONS_MODULE23'\nexport {unarchiveFeature as '4041dd5ed14cfb414639fab1737e109aed8ca621f3'} from 'ACTIONS_MODULE24'\nexport {addRepository as '406fb037aa9a5c9956fce7bee84ca0e2aace0fecb7'} from 'ACTIONS_MODULE25'\nexport {deleteRepository as '402172775e57601e801ffacfa9aa35202b4d5540f5'} from 'ACTIONS_MODULE26'\nexport {getWorkflowDefaults as '00fdba6a70eb26e6d53bef475dd72cf52c78d330ae'} from 'ACTIONS_MODULE27'\nexport {getViewerPermission as '409e6a107e5d196e2483b89e30d5e4d5558789ed36'} from 'ACTIONS_MODULE28'\nexport {createFeature as '401ff1026b89897e7d92eb29cc8c95bd092af688da'} from 'ACTIONS_MODULE29'\nexport {getViewerPermission as '409e6a107e5d196e2483b89e30d5e4d5558789ed36'} 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,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,"6033fc53b32a97737eee3e726966f8b26f7e7ea4bd",null),(0,b.registerServerReference)(i,"6098cd75e6c8e89d75c300bbde3344d774dc29ae1a",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(["0006b4e86479d61a772d236073489a1d0c9aacc773",()=>d.pickFolder,"0018666dc32d8d6743f4fc14191c9513509c6475c2",()=>b.getAllAgentModels,"00396841cf297c9ad4cf91270837d87ffb5a46ca66",()=>s.checkToolStatus,"003a378a2e3d31a5e7b882aea740d0acd4a5408355",()=>f.listGitHubOrganizations,"0068fc0cd326e02f301d38880dc869801e9dc4a5da",()=>q.isAgentSetupComplete,"00ff606feefe8c84ed567473b4350ee6eeca8cf91e",()=>r.checkAgentAuth,"4010d40b54301692d3284f44821491e9835c4cc837",()=>y.stopFeature,"40145d3a42c1bcb2d3041bf7b3f392bd3c8dfc7b42",()=>g.importGitHubRepository,"401b03df256d95efacc772f18f65821d5ad563a06e",()=>i.deployRepository,"401e2c687d4269575b14b24372cbb494fcdef8dd99",()=>m.openShell,"402172775e57601e801ffacfa9aa35202b4d5540f5",()=>B.deleteRepository,"403f576801faefe52cf4af10a23b1aae2922866c6d",()=>x.startFeature,"4041dd5ed14cfb414639fab1737e109aed8ca621f3",()=>z.unarchiveFeature,"404b84ad3de41919a008a90136fca164e9c6b8f158",()=>p.getDeploymentLogs,"406acadfeceb7968815b7b7a8633af7faa0746e351",()=>o.syncRepository,"406fb037aa9a5c9956fce7bee84ca0e2aace0fecb7",()=>A.addRepository,"40750562c322fbec832d8b0da56bc3b62f2c7830da",()=>u.archiveFeature,"407d5023c049bf96b5d35d582b43eac082bf164c81",()=>h.deployFeature,"408db660a5d1288fca3e9892753a0d046ded53a03c",()=>l.openIde,"4093cf76292234eda2020f6c59c19c3309205bf7b6",()=>j.stopDeployment,"40a07aeee48a340b4e68e0f30eb3b2db8cb4b9b5b1",()=>t.getFeatureMetadata,"40b0d1d55ddad83e6cc907346584808b2f8f51b557",()=>e.listGitHubRepositories,"40ce8c1bc3f3b4c6188ca01b0ec9331a59d851d23e",()=>n.openFolder,"40cfadeb18cd46eb8612485a70c6061cc7ee96021b",()=>k.getDeploymentStatus,"40f9df78a43fde004835715d9ed8c3836c9a8389c2",()=>w.resumeFeature,"6033fc53b32a97737eee3e726966f8b26f7e7ea4bd",()=>C.getGitRepoInfo,"60d3ec7e6d248abb625037a7a5aa84512ea802c846",()=>c.updateAgentAndModel,"785bda77115c7cac7ecf90af2c506af36ce3b37fed",()=>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 '002670c3d4ee0edb61f57117f37bed9fe037957335'} from 'ACTIONS_MODULE0'\nexport {updateAgentAndModel as '60b82c522414a21d8f70c109d334b48ccddec14caa'} from 'ACTIONS_MODULE1'\nexport {pickFolder as '0024998ff81fd6d120222831a57fee689b8687c12b'} from 'ACTIONS_MODULE2'\nexport {listGitHubRepositories as '409a87e4ab5dfa4a5b459908a627ef91f8a22376f5'} from 'ACTIONS_MODULE3'\nexport {listGitHubOrganizations as '00cd1ca6892497bdda9bb473aeda15e14d1f74a00a'} from 'ACTIONS_MODULE4'\nexport {importGitHubRepository as '4071dd45198a850e19b1d84d5d3c8de4b2fd074ef1'} from 'ACTIONS_MODULE5'\nexport {deployFeature as '40d73014331a1b4aedc7cc15e76a55370085f6e0df'} from 'ACTIONS_MODULE6'\nexport {deployRepository as '40e643ab82f3648efffe8adbc642fe87a44a18a579'} from 'ACTIONS_MODULE7'\nexport {stopDeployment as '40f878b2d8030789dcf12db7f1f07f3ae1ff34bb21'} from 'ACTIONS_MODULE8'\nexport {getDeploymentStatus as '40fc8d02b628bca4904885836bce866dc238f57cd3'} from 'ACTIONS_MODULE9'\nexport {openIde as '401f0187c1b1351cf48c2ae49610ea052d5ea32c43'} from 'ACTIONS_MODULE10'\nexport {openShell as '40e65ff9949ecee54ddd146a2c7e2a9e7c561a1535'} from 'ACTIONS_MODULE11'\nexport {openFolder as '401ea4944866507535beedf2b6ef40052cde511075'} from 'ACTIONS_MODULE12'\nexport {syncRepository as '40df1f2d7d8eec3fe24a3728efeb0fa922ed455405'} from 'ACTIONS_MODULE13'\nexport {getDeploymentLogs as '40e25ec3a63cd4b36a7e33564d39743f8f0242e533'} from 'ACTIONS_MODULE14'\nexport {isAgentSetupComplete as '001a531c882f3973b6d172970784bc95accc8a963f'} from 'ACTIONS_MODULE15'\nexport {checkAgentAuth as '00b0314d184e575c8efde646289d902978ee5072b4'} from 'ACTIONS_MODULE16'\nexport {checkToolStatus as '001fa077e21fd2647ce5b9d1ea48fd692fc28c01c1'} from 'ACTIONS_MODULE17'\nexport {getFeatureMetadata as '40840249913f1c6888facd0f654d338c7bc0f40fb3'} from 'ACTIONS_MODULE18'\nexport {archiveFeature as '40eaa73659ccb6e91fad718657b01eb21e89b184ab'} from 'ACTIONS_MODULE19'\nexport {deleteFeature as '786c14f4c6f35a4426da7fb7712ea7ab189658277e'} from 'ACTIONS_MODULE20'\nexport {resumeFeature as '404419228389bd40355e0ac1ca6434ed6ea1d02f27'} from 'ACTIONS_MODULE21'\nexport {startFeature as '40f2d1a24f3802389f97050f4ba875c60f44f1d518'} from 'ACTIONS_MODULE22'\nexport {stopFeature as '4011992157506e3d599fd654e0d32c2b76018a2ce2'} from 'ACTIONS_MODULE23'\nexport {unarchiveFeature as '40375a34aa49ffb41002bbbf3e4605034770cdfec0'} from 'ACTIONS_MODULE24'\nexport {addRepository as '40c3bd5358fbb3217c0d8c67093c69ccf346479f01'} from 'ACTIONS_MODULE25'\nexport {deleteRepository as '40ee5231b968993c6e4650d0c4d80c67c9dcedb7d8'} from 'ACTIONS_MODULE26'\nexport {getGitRepoInfo as '60fafb3a16793b4e2e368d79ea4a9710e49901a827'} 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 '0018666dc32d8d6743f4fc14191c9513509c6475c2'} from 'ACTIONS_MODULE0'\nexport {updateAgentAndModel as '60d3ec7e6d248abb625037a7a5aa84512ea802c846'} from 'ACTIONS_MODULE1'\nexport {pickFolder as '0006b4e86479d61a772d236073489a1d0c9aacc773'} from 'ACTIONS_MODULE2'\nexport {listGitHubRepositories as '40b0d1d55ddad83e6cc907346584808b2f8f51b557'} from 'ACTIONS_MODULE3'\nexport {listGitHubOrganizations as '003a378a2e3d31a5e7b882aea740d0acd4a5408355'} from 'ACTIONS_MODULE4'\nexport {importGitHubRepository as '40145d3a42c1bcb2d3041bf7b3f392bd3c8dfc7b42'} from 'ACTIONS_MODULE5'\nexport {deployFeature as '407d5023c049bf96b5d35d582b43eac082bf164c81'} from 'ACTIONS_MODULE6'\nexport {deployRepository as '401b03df256d95efacc772f18f65821d5ad563a06e'} from 'ACTIONS_MODULE7'\nexport {stopDeployment as '4093cf76292234eda2020f6c59c19c3309205bf7b6'} from 'ACTIONS_MODULE8'\nexport {getDeploymentStatus as '40cfadeb18cd46eb8612485a70c6061cc7ee96021b'} from 'ACTIONS_MODULE9'\nexport {openIde as '408db660a5d1288fca3e9892753a0d046ded53a03c'} from 'ACTIONS_MODULE10'\nexport {openShell as '401e2c687d4269575b14b24372cbb494fcdef8dd99'} from 'ACTIONS_MODULE11'\nexport {openFolder as '40ce8c1bc3f3b4c6188ca01b0ec9331a59d851d23e'} from 'ACTIONS_MODULE12'\nexport {syncRepository as '406acadfeceb7968815b7b7a8633af7faa0746e351'} from 'ACTIONS_MODULE13'\nexport {getDeploymentLogs as '404b84ad3de41919a008a90136fca164e9c6b8f158'} from 'ACTIONS_MODULE14'\nexport {isAgentSetupComplete as '0068fc0cd326e02f301d38880dc869801e9dc4a5da'} from 'ACTIONS_MODULE15'\nexport {checkAgentAuth as '00ff606feefe8c84ed567473b4350ee6eeca8cf91e'} from 'ACTIONS_MODULE16'\nexport {checkToolStatus as '00396841cf297c9ad4cf91270837d87ffb5a46ca66'} from 'ACTIONS_MODULE17'\nexport {getFeatureMetadata as '40a07aeee48a340b4e68e0f30eb3b2db8cb4b9b5b1'} from 'ACTIONS_MODULE18'\nexport {archiveFeature as '40750562c322fbec832d8b0da56bc3b62f2c7830da'} from 'ACTIONS_MODULE19'\nexport {deleteFeature as '785bda77115c7cac7ecf90af2c506af36ce3b37fed'} from 'ACTIONS_MODULE20'\nexport {resumeFeature as '40f9df78a43fde004835715d9ed8c3836c9a8389c2'} from 'ACTIONS_MODULE21'\nexport {startFeature as '403f576801faefe52cf4af10a23b1aae2922866c6d'} from 'ACTIONS_MODULE22'\nexport {stopFeature as '4010d40b54301692d3284f44821491e9835c4cc837'} from 'ACTIONS_MODULE23'\nexport {unarchiveFeature as '4041dd5ed14cfb414639fab1737e109aed8ca621f3'} from 'ACTIONS_MODULE24'\nexport {addRepository as '406fb037aa9a5c9956fce7bee84ca0e2aace0fecb7'} from 'ACTIONS_MODULE25'\nexport {deleteRepository as '402172775e57601e801ffacfa9aa35202b4d5540f5'} from 'ACTIONS_MODULE26'\nexport {getGitRepoInfo as '6033fc53b32a97737eee3e726966f8b26f7e7ea4bd'} 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,"6033fc53b32a97737eee3e726966f8b26f7e7ea4bd",null),(0,b.registerServerReference)(i,"6098cd75e6c8e89d75c300bbde3344d774dc29ae1a",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(["0006b4e86479d61a772d236073489a1d0c9aacc773",()=>d.pickFolder,"0018666dc32d8d6743f4fc14191c9513509c6475c2",()=>b.getAllAgentModels,"00396841cf297c9ad4cf91270837d87ffb5a46ca66",()=>s.checkToolStatus,"003a378a2e3d31a5e7b882aea740d0acd4a5408355",()=>f.listGitHubOrganizations,"0068fc0cd326e02f301d38880dc869801e9dc4a5da",()=>q.isAgentSetupComplete,"00ff606feefe8c84ed567473b4350ee6eeca8cf91e",()=>r.checkAgentAuth,"4010d40b54301692d3284f44821491e9835c4cc837",()=>y.stopFeature,"40145d3a42c1bcb2d3041bf7b3f392bd3c8dfc7b42",()=>g.importGitHubRepository,"401b03df256d95efacc772f18f65821d5ad563a06e",()=>i.deployRepository,"401e2c687d4269575b14b24372cbb494fcdef8dd99",()=>m.openShell,"402172775e57601e801ffacfa9aa35202b4d5540f5",()=>B.deleteRepository,"403f576801faefe52cf4af10a23b1aae2922866c6d",()=>x.startFeature,"4041dd5ed14cfb414639fab1737e109aed8ca621f3",()=>z.unarchiveFeature,"404b84ad3de41919a008a90136fca164e9c6b8f158",()=>p.getDeploymentLogs,"406acadfeceb7968815b7b7a8633af7faa0746e351",()=>o.syncRepository,"406fb037aa9a5c9956fce7bee84ca0e2aace0fecb7",()=>A.addRepository,"40750562c322fbec832d8b0da56bc3b62f2c7830da",()=>u.archiveFeature,"407d5023c049bf96b5d35d582b43eac082bf164c81",()=>h.deployFeature,"408db660a5d1288fca3e9892753a0d046ded53a03c",()=>l.openIde,"4093cf76292234eda2020f6c59c19c3309205bf7b6",()=>j.stopDeployment,"40a07aeee48a340b4e68e0f30eb3b2db8cb4b9b5b1",()=>t.getFeatureMetadata,"40b0d1d55ddad83e6cc907346584808b2f8f51b557",()=>e.listGitHubRepositories,"40ce8c1bc3f3b4c6188ca01b0ec9331a59d851d23e",()=>n.openFolder,"40cfadeb18cd46eb8612485a70c6061cc7ee96021b",()=>k.getDeploymentStatus,"40f9df78a43fde004835715d9ed8c3836c9a8389c2",()=>w.resumeFeature,"6033fc53b32a97737eee3e726966f8b26f7e7ea4bd",()=>C.getGitRepoInfo,"60d3ec7e6d248abb625037a7a5aa84512ea802c846",()=>c.updateAgentAndModel,"785bda77115c7cac7ecf90af2c506af36ce3b37fed",()=>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 '002670c3d4ee0edb61f57117f37bed9fe037957335'} from 'ACTIONS_MODULE0'\nexport {updateAgentAndModel as '60b82c522414a21d8f70c109d334b48ccddec14caa'} from 'ACTIONS_MODULE1'\nexport {pickFolder as '0024998ff81fd6d120222831a57fee689b8687c12b'} from 'ACTIONS_MODULE2'\nexport {listGitHubRepositories as '409a87e4ab5dfa4a5b459908a627ef91f8a22376f5'} from 'ACTIONS_MODULE3'\nexport {listGitHubOrganizations as '00cd1ca6892497bdda9bb473aeda15e14d1f74a00a'} from 'ACTIONS_MODULE4'\nexport {importGitHubRepository as '4071dd45198a850e19b1d84d5d3c8de4b2fd074ef1'} from 'ACTIONS_MODULE5'\nexport {deployFeature as '40d73014331a1b4aedc7cc15e76a55370085f6e0df'} from 'ACTIONS_MODULE6'\nexport {deployRepository as '40e643ab82f3648efffe8adbc642fe87a44a18a579'} from 'ACTIONS_MODULE7'\nexport {stopDeployment as '40f878b2d8030789dcf12db7f1f07f3ae1ff34bb21'} from 'ACTIONS_MODULE8'\nexport {getDeploymentStatus as '40fc8d02b628bca4904885836bce866dc238f57cd3'} from 'ACTIONS_MODULE9'\nexport {openIde as '401f0187c1b1351cf48c2ae49610ea052d5ea32c43'} from 'ACTIONS_MODULE10'\nexport {openShell as '40e65ff9949ecee54ddd146a2c7e2a9e7c561a1535'} from 'ACTIONS_MODULE11'\nexport {openFolder as '401ea4944866507535beedf2b6ef40052cde511075'} from 'ACTIONS_MODULE12'\nexport {syncRepository as '40df1f2d7d8eec3fe24a3728efeb0fa922ed455405'} from 'ACTIONS_MODULE13'\nexport {getDeploymentLogs as '40e25ec3a63cd4b36a7e33564d39743f8f0242e533'} from 'ACTIONS_MODULE14'\nexport {isAgentSetupComplete as '001a531c882f3973b6d172970784bc95accc8a963f'} from 'ACTIONS_MODULE15'\nexport {checkAgentAuth as '00b0314d184e575c8efde646289d902978ee5072b4'} from 'ACTIONS_MODULE16'\nexport {checkToolStatus as '001fa077e21fd2647ce5b9d1ea48fd692fc28c01c1'} from 'ACTIONS_MODULE17'\nexport {getFeatureMetadata as '40840249913f1c6888facd0f654d338c7bc0f40fb3'} from 'ACTIONS_MODULE18'\nexport {archiveFeature as '40eaa73659ccb6e91fad718657b01eb21e89b184ab'} from 'ACTIONS_MODULE19'\nexport {deleteFeature as '786c14f4c6f35a4426da7fb7712ea7ab189658277e'} from 'ACTIONS_MODULE20'\nexport {resumeFeature as '404419228389bd40355e0ac1ca6434ed6ea1d02f27'} from 'ACTIONS_MODULE21'\nexport {startFeature as '40f2d1a24f3802389f97050f4ba875c60f44f1d518'} from 'ACTIONS_MODULE22'\nexport {stopFeature as '4011992157506e3d599fd654e0d32c2b76018a2ce2'} from 'ACTIONS_MODULE23'\nexport {unarchiveFeature as '40375a34aa49ffb41002bbbf3e4605034770cdfec0'} from 'ACTIONS_MODULE24'\nexport {addRepository as '40c3bd5358fbb3217c0d8c67093c69ccf346479f01'} from 'ACTIONS_MODULE25'\nexport {deleteRepository as '40ee5231b968993c6e4650d0c4d80c67c9dcedb7d8'} from 'ACTIONS_MODULE26'\nexport {getGitRepoInfo as '60fafb3a16793b4e2e368d79ea4a9710e49901a827'} 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 '0018666dc32d8d6743f4fc14191c9513509c6475c2'} from 'ACTIONS_MODULE0'\nexport {updateAgentAndModel as '60d3ec7e6d248abb625037a7a5aa84512ea802c846'} from 'ACTIONS_MODULE1'\nexport {pickFolder as '0006b4e86479d61a772d236073489a1d0c9aacc773'} from 'ACTIONS_MODULE2'\nexport {listGitHubRepositories as '40b0d1d55ddad83e6cc907346584808b2f8f51b557'} from 'ACTIONS_MODULE3'\nexport {listGitHubOrganizations as '003a378a2e3d31a5e7b882aea740d0acd4a5408355'} from 'ACTIONS_MODULE4'\nexport {importGitHubRepository as '40145d3a42c1bcb2d3041bf7b3f392bd3c8dfc7b42'} from 'ACTIONS_MODULE5'\nexport {deployFeature as '407d5023c049bf96b5d35d582b43eac082bf164c81'} from 'ACTIONS_MODULE6'\nexport {deployRepository as '401b03df256d95efacc772f18f65821d5ad563a06e'} from 'ACTIONS_MODULE7'\nexport {stopDeployment as '4093cf76292234eda2020f6c59c19c3309205bf7b6'} from 'ACTIONS_MODULE8'\nexport {getDeploymentStatus as '40cfadeb18cd46eb8612485a70c6061cc7ee96021b'} from 'ACTIONS_MODULE9'\nexport {openIde as '408db660a5d1288fca3e9892753a0d046ded53a03c'} from 'ACTIONS_MODULE10'\nexport {openShell as '401e2c687d4269575b14b24372cbb494fcdef8dd99'} from 'ACTIONS_MODULE11'\nexport {openFolder as '40ce8c1bc3f3b4c6188ca01b0ec9331a59d851d23e'} from 'ACTIONS_MODULE12'\nexport {syncRepository as '406acadfeceb7968815b7b7a8633af7faa0746e351'} from 'ACTIONS_MODULE13'\nexport {getDeploymentLogs as '404b84ad3de41919a008a90136fca164e9c6b8f158'} from 'ACTIONS_MODULE14'\nexport {isAgentSetupComplete as '0068fc0cd326e02f301d38880dc869801e9dc4a5da'} from 'ACTIONS_MODULE15'\nexport {checkAgentAuth as '00ff606feefe8c84ed567473b4350ee6eeca8cf91e'} from 'ACTIONS_MODULE16'\nexport {checkToolStatus as '00396841cf297c9ad4cf91270837d87ffb5a46ca66'} from 'ACTIONS_MODULE17'\nexport {getFeatureMetadata as '40a07aeee48a340b4e68e0f30eb3b2db8cb4b9b5b1'} from 'ACTIONS_MODULE18'\nexport {archiveFeature as '40750562c322fbec832d8b0da56bc3b62f2c7830da'} from 'ACTIONS_MODULE19'\nexport {deleteFeature as '785bda77115c7cac7ecf90af2c506af36ce3b37fed'} from 'ACTIONS_MODULE20'\nexport {resumeFeature as '40f9df78a43fde004835715d9ed8c3836c9a8389c2'} from 'ACTIONS_MODULE21'\nexport {startFeature as '403f576801faefe52cf4af10a23b1aae2922866c6d'} from 'ACTIONS_MODULE22'\nexport {stopFeature as '4010d40b54301692d3284f44821491e9835c4cc837'} from 'ACTIONS_MODULE23'\nexport {unarchiveFeature as '4041dd5ed14cfb414639fab1737e109aed8ca621f3'} from 'ACTIONS_MODULE24'\nexport {addRepository as '406fb037aa9a5c9956fce7bee84ca0e2aace0fecb7'} from 'ACTIONS_MODULE25'\nexport {deleteRepository as '402172775e57601e801ffacfa9aa35202b4d5540f5'} from 'ACTIONS_MODULE26'\nexport {getGitRepoInfo as '6033fc53b32a97737eee3e726966f8b26f7e7ea4bd'} 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,"00fdba6a70eb26e6d53bef475dd72cf52c78d330ae",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,"409e6a107e5d196e2483b89e30d5e4d5558789ed36",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,"401ff1026b89897e7d92eb29cc8c95bd092af688da",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(["0006b4e86479d61a772d236073489a1d0c9aacc773",()=>d.pickFolder,"0018666dc32d8d6743f4fc14191c9513509c6475c2",()=>b.getAllAgentModels,"00396841cf297c9ad4cf91270837d87ffb5a46ca66",()=>s.checkToolStatus,"003a378a2e3d31a5e7b882aea740d0acd4a5408355",()=>f.listGitHubOrganizations,"0068fc0cd326e02f301d38880dc869801e9dc4a5da",()=>q.isAgentSetupComplete,"00fdba6a70eb26e6d53bef475dd72cf52c78d330ae",()=>C.getWorkflowDefaults,"00ff606feefe8c84ed567473b4350ee6eeca8cf91e",()=>r.checkAgentAuth,"4010d40b54301692d3284f44821491e9835c4cc837",()=>y.stopFeature,"40145d3a42c1bcb2d3041bf7b3f392bd3c8dfc7b42",()=>g.importGitHubRepository,"401b03df256d95efacc772f18f65821d5ad563a06e",()=>i.deployRepository,"401e2c687d4269575b14b24372cbb494fcdef8dd99",()=>m.openShell,"401ff1026b89897e7d92eb29cc8c95bd092af688da",()=>E.createFeature,"402172775e57601e801ffacfa9aa35202b4d5540f5",()=>B.deleteRepository,"403f576801faefe52cf4af10a23b1aae2922866c6d",()=>x.startFeature,"4041dd5ed14cfb414639fab1737e109aed8ca621f3",()=>z.unarchiveFeature,"404b84ad3de41919a008a90136fca164e9c6b8f158",()=>p.getDeploymentLogs,"406acadfeceb7968815b7b7a8633af7faa0746e351",()=>o.syncRepository,"406fb037aa9a5c9956fce7bee84ca0e2aace0fecb7",()=>A.addRepository,"40750562c322fbec832d8b0da56bc3b62f2c7830da",()=>u.archiveFeature,"407d5023c049bf96b5d35d582b43eac082bf164c81",()=>h.deployFeature,"408db660a5d1288fca3e9892753a0d046ded53a03c",()=>l.openIde,"4093cf76292234eda2020f6c59c19c3309205bf7b6",()=>j.stopDeployment,"409e6a107e5d196e2483b89e30d5e4d5558789ed36",()=>D.getViewerPermission,"40a07aeee48a340b4e68e0f30eb3b2db8cb4b9b5b1",()=>t.getFeatureMetadata,"40b0d1d55ddad83e6cc907346584808b2f8f51b557",()=>e.listGitHubRepositories,"40ce8c1bc3f3b4c6188ca01b0ec9331a59d851d23e",()=>n.openFolder,"40cfadeb18cd46eb8612485a70c6061cc7ee96021b",()=>k.getDeploymentStatus,"40f9df78a43fde004835715d9ed8c3836c9a8389c2",()=>w.resumeFeature,"60d3ec7e6d248abb625037a7a5aa84512ea802c846",()=>c.updateAgentAndModel,"785bda77115c7cac7ecf90af2c506af36ce3b37fed",()=>v.deleteFeature],37644)}];
|
|
4
4
|
|
|
5
5
|
//# sourceMappingURL=src_presentation_web_0qys821._.js.map
|