diff --git a/.gemini/skills/workspaces/scripts/setup.ts b/.gemini/skills/workspaces/scripts/setup.ts index 28cf877305..7848b8e9e1 100644 --- a/.gemini/skills/workspaces/scripts/setup.ts +++ b/.gemini/skills/workspaces/scripts/setup.ts @@ -70,14 +70,9 @@ and full builds) to a dedicated, high-performance GCP worker. // 2. Repository Discovery (Dynamic) console.log('\nšŸ” Detecting repository origins...'); - // Get remote URL - const remoteUrlRes = spawnSync('git', ['remote', 'get-url', 'origin'], { stdio: 'pipe' }); - const remoteUrl = remoteUrlRes.stdout.toString().trim(); - - // Use gh to get full details const repoInfoRes = spawnSync('gh', ['repo', 'view', '--json', 'nameWithOwner,parent,isFork'], { stdio: 'pipe' }); - let upstreamRepo = 'google-gemini/gemini-cli'; // Fallback - let userFork = upstreamRepo; + let upstreamRepo = 'google-gemini/gemini-cli'; + let userFork = ''; if (repoInfoRes.status === 0) { try { @@ -85,15 +80,33 @@ and full builds) to a dedicated, high-performance GCP worker. if (repoInfo.isFork && repoInfo.parent) { upstreamRepo = repoInfo.parent.nameWithOwner; userFork = repoInfo.nameWithOwner; + console.log(` āœ… Detected Existing Fork: ${userFork}`); } else { upstreamRepo = repoInfo.nameWithOwner; - userFork = repoInfo.nameWithOwner; + console.log(` āœ… Working on Upstream: ${upstreamRepo}`); + + const shouldFork = await confirm(`ā“ No fork detected. Create a personal fork for sandboxed implementations?`); + if (shouldFork) { + console.log(` - Creating fork for ${upstreamRepo}...`); + const forkRes = spawnSync('gh', ['repo', 'fork', upstreamRepo, '--clone=false'], { stdio: 'inherit' }); + if (forkRes.status === 0) { + // Get the new fork name (usually /) + const userRes = spawnSync('gh', ['api', 'user', '-q', '.login'], { stdio: 'pipe' }); + const user = userRes.stdout.toString().trim(); + userFork = `${user}/${upstreamRepo.split('/')[1]}`; + console.log(` āœ… Fork created: ${userFork}`); + } + } else { + userFork = upstreamRepo; + } } - } catch (e) {} + } catch (e) { + userFork = upstreamRepo; + } } - console.log(` āœ… Target Repo: ${userFork}`); console.log(` āœ… Upstream: ${upstreamRepo}`); + console.log(` āœ… Workspace: ${userFork}`); // 3. Security & Auth let githubToken = env.WORKSPACE_GH_TOKEN || '';