mirror of
https://github.com/stablyai/orca.git
synced 2026-10-16 16:03:26 +00:00
The four agent hook services, the main hooks module, and the two relay modules each carried a file-level `eslint-disable max-lines` and ran 365-628 counted lines against a 300-line budget. AGENTS.md calls for splitting rather than suppressing, and config/max-lines-baseline.txt is a shrink-only ratchet, so this removes all seven suppressions and prunes their entries (341 -> 334). Pure move, no behavior change. Each hook service splits into its managed script source, its config/bundle serialization, and its remote-install path, keeping the per-agent integrations independent: copilot, amp, antigravity and hermes each retain their own getManagedScript rather than sharing one, because each emits a different script body for a different agent. Merging them by name would have been a behavior change, not a refactor. For antigravity the suppression's stated rationale -- that local install, Windows wrapper generation, status cleanup, and SSH remote install must share one event list and managed-command matcher so stale-hook cleanup cannot drift by platform -- is now enforced structurally instead: both install paths call buildInstalledConfig + createAntigravityManagedCommandMatcher over the single ANTIGRAVITY_EVENTS catalog, with the graph a strict DAG. Also registers the six new antigravity/ and copilot/ modules in config/tsconfig.cli.json. That project uses a curated `include` list rather than a glob, so an unlisted module fails `tsc -p config/tsconfig.tc.cli.json` with TS6307 even though the entire unit suite passes. Verified: oxlint clean, ratchet passes, typecheck clean, full unit suite green (remaining failures are pre-existing load flakes in untouched files, green when re-run serially), no new runtime import cycles, and no lint suppression added.
32 lines
1.2 KiB
TypeScript
32 lines
1.2 KiB
TypeScript
import { getRuntimePathBasename } from '../shared/cross-platform-path'
|
|
import { TERMINAL_GIT_CREDENTIAL_GUARD_POLICY_ENV } from '../shared/terminal-git-credential-guard'
|
|
import type { Repo } from '../shared/repo-types'
|
|
|
|
// Why: kept in sync with pty/wsl-orca-env.ts, which path-translates the same keys for WSL.
|
|
// ORCA_WORKSPACE_NAME is a display name and the credential-guard policy is an enum — never paths.
|
|
export const SETUP_RUNNER_PATH_ENV_KEYS = [
|
|
'ORCA_ROOT_PATH',
|
|
'ORCA_WORKTREE_PATH',
|
|
'CONDUCTOR_ROOT_PATH',
|
|
'GHOSTX_ROOT_PATH'
|
|
] as const
|
|
|
|
export function getSetupEnvVars(repo: Repo, worktreePath: string): Record<string, string> {
|
|
return {
|
|
ORCA_ROOT_PATH: repo.path,
|
|
ORCA_WORKTREE_PATH: worktreePath,
|
|
ORCA_WORKSPACE_NAME: getRuntimePathBasename(worktreePath),
|
|
// Compat with conductor.json users
|
|
CONDUCTOR_ROOT_PATH: repo.path,
|
|
GHOSTX_ROOT_PATH: repo.path
|
|
}
|
|
}
|
|
|
|
export function getSetupRunnerEnvVars(repo: Repo, worktreePath: string): Record<string, string> {
|
|
return {
|
|
...getSetupEnvVars(repo, worktreePath),
|
|
// Why: the Setup terminal is unattended automation, so force the credential guard regardless of user opt-out.
|
|
[TERMINAL_GIT_CREDENTIAL_GUARD_POLICY_ENV]: 'guard'
|
|
}
|
|
}
|