Skip to content

ServiceDeps

Defined in: src/service.ts:85

optional agentIngressPort?: () => number | undefined

Defined in: src/service.ts:132

Restricted agent-ingress listener port accessor (lazy: the listener starts after this service is constructed; see src/index.ts). Returns undefined when not wired (tests) or not yet started; resolveSpawnBaseUrl/prepareSpawn fall back to the loopback main port then.

number | undefined


optional beforeArchive?: (s) => Promise<void>

Defined in: src/service.ts:140

Best-effort pre-teardown hook (recap generation) — runs while the worktree still exists; bounded + swallowed so it can never block teardown. Absent → no hook.

Session

Promise<void>


optional beforeArchiveTimeoutMs?: number

Defined in: src/service.ts:143

Hard cap on the beforeArchive hook (ms) so a stuck git can never permanently stall teardown / the merge train. Defaults to 15_000; tests inject a tiny value.


optional detectBackend?: () => SandboxBackend

Defined in: src/service.ts:124

Sandbox backend probe seam (tests inject () => "bwrap" / () => null so no real bwrap is spawned); defaults to the cached real self-test in sandbox.ts.

SandboxBackend


optional detectEgressBackend?: () => EgressBackend

Defined in: src/service.ts:128

Egress-firewall backend probe seam (tests inject () => "slirp4netns" / () => null so no real netns/dnsmasq stack is spawned); defaults to the cached real self-test in egress.ts. Probed only for an autonomous spawn that already has an FS backend.

EgressBackend


optional detectEgressHostLoopback?: () => boolean

Defined in: src/service.ts:135

slirp host-loopback capability probe seam (tests inject () => true / () => false); defaults to the cached real version probe in egress.ts. Gates reaching Shepherd via 10.0.2.2.

boolean


optional egressWatcher?: Pick<EgressWatcher, "start" | "stop">

Defined in: src/service.ts:137

Per-session DNS-drop watcher; absent in tests that don’t care → no-op.


optional events?: Pick<EventHub, "emit">

Defined in: src/service.ts:103

Event bus for live state pushes (e.g. session:ready); absent in tests that skip it.


herdr: Pick<HerdrDriver, "start" | "list" | "stop" | "send" | "relabel">

Defined in: src/service.ts:98


optional moveUploads?: (images, worktreePath) => string[]

Defined in: src/service.ts:105

Inject point for tests; defaults to the real fs move.

string[]

string

string[]


namer: (prompt) => string | Promise<string>

Defined in: src/service.ts:99

string

string | Promise<string>


optional pluginIds?: () => Promise<string[]>

Defined in: src/service.ts:121

Plugin ids to disable on trimmed auto spawns; defaults to the memoized read of ~/.claude/settings.json enabledPlugins (installedPluginIds). Inject point for tests.

Promise<string[]>


optional preview?: Pick<PreviewService, "devPortFor">

Defined in: src/service.ts:109

Live preview service; provides devPortFor for stopPreview. Absent → stopPreview returns not_found.


optional prSnapshot?: () => Record<string, GitState>

Defined in: src/service.ts:118

Live PR-state map keyed by session id (= prPoller.snapshot), the source the merge-train reconcile reads to derive which active sessions hold a selected, still-open PR. Absent → reconcile sees an empty snapshot (marks nothing). Wired from the poller in src/index.ts.

Record<string, GitState>


optional reaper?: Pick<ProcessReaper, "detect" | "reap" | "stopListenersOnPort">

Defined in: src/service.ts:107

Detects/terminates leftover subprocesses at close; absent in tests that skip it.


optional refineName?: (args) => Promise<string | null>

Defined in: src/service.ts:101

Background namer: comprehends the prompt into a slug (null = keep heuristic). Absent → no refine.

string

string

Promise<string | null>


optional refreshPr?: (id) => void

Defined in: src/service.ts:113

Fast-poll one session’s PR (= prPoller.pollSession), to nudge merge detection when a merge train archives before the 120s sweep surfaces its members’ merges. Fire-and-forget, debounced, no-ops on archived sessions. Absent → no nudge.

string

void


store: SessionStore

Defined in: src/service.ts:86


worktree: Pick<WorktreeMgr, "create" | "ensureBaseRef" | "remove" | "renameBranch" | "branchExists" | "commitsAhead" | "currentBranch" | "gitCommonDir">

Defined in: src/service.ts:87