Files
orcs-code/src/utils/getWorktreePathsPortable.ts
did:key:z6MkqDnb7Siv3Cwj7pGJq4T5EsUisECqR8KpnDLwcaZq5TPr d2542c9a62 asdf
Squash the current repository state back into one baseline commit while
preserving the README reframing and repository contents.

Constraint: User explicitly requested a single squashed commit with subject "asdf"
Confidence: high
Scope-risk: broad
Reversibility: clean
Directive: This commit intentionally rewrites published history; coordinate before future force-pushes
Tested: git status clean; local history rewritten to one commit; force-pushed main to origin and instructkr
Not-tested: Fresh clone verification after push
2026-03-31 03:34:03 -07:00

28 lines
847 B
TypeScript

import { execFile as execFileCb } from 'child_process'
import { promisify } from 'util'
const execFileAsync = promisify(execFileCb)
/**
* Portable worktree detection using only child_process — no analytics,
* no bootstrap deps, no execa. Used by listSessionsImpl.ts (SDK) and
* anywhere that needs worktree paths without pulling in the CLI
* dependency chain (execa → cross-spawn → which).
*/
export async function getWorktreePathsPortable(cwd: string): Promise<string[]> {
try {
const { stdout } = await execFileAsync(
'git',
['worktree', 'list', '--porcelain'],
{ cwd, timeout: 5000 },
)
if (!stdout) return []
return stdout
.split('\n')
.filter(line => line.startsWith('worktree '))
.map(line => line.slice('worktree '.length).normalize('NFC'))
} catch {
return []
}
}