π― Use case
This file lives under βutils/β, which covers cross-cutting helpers (shell, tempfiles, settings, messages, process input, β¦). On the API surface it exposes runWithCwdOverride, pwd, and getCwd β mainly functions, hooks, or classes. Dependencies touch async_hooks. It composes internal code from bootstrap (relative imports).
Generated from folder role, exports, dependency roots, and inline comments β not hand-reviewed for every path.
π§ Inline summary
import { AsyncLocalStorage } from 'async_hooks' import { getCwdState, getOriginalCwd } from '../bootstrap/state.js' const cwdOverrideStorage = new AsyncLocalStorage<string>()
π€ Exports (heuristic)
runWithCwdOverridepwdgetCwd
π External import roots
Package roots from from "β¦" (relative paths omitted).
async_hooks
π₯οΈ Source preview
import { AsyncLocalStorage } from 'async_hooks'
import { getCwdState, getOriginalCwd } from '../bootstrap/state.js'
const cwdOverrideStorage = new AsyncLocalStorage<string>()
/**
* Run a function with an overridden working directory for the current async context.
* All calls to pwd()/getCwd() within the function (and its async descendants) will
* return the overridden cwd instead of the global one. This enables concurrent
* agents to each see their own working directory without affecting each other.
*/
export function runWithCwdOverride<T>(cwd: string, fn: () => T): T {
return cwdOverrideStorage.run(cwd, fn)
}
/**
* Get the current working directory
*/
export function pwd(): string {
return cwdOverrideStorage.getStore() ?? getCwdState()
}
/**
* Get the current working directory or the original working directory if the current one is not available
*/
export function getCwd(): string {
try {
return pwd()
} catch {
return getOriginalCwd()
}
}