SYMBOL INDEX (346 symbols across 66 files) FILE: src/adapters/amp.ts function isAmpDeepMode (line 14) | function isAmpDeepMode(flags?: string[]): boolean { class AmpAdapter (line 20) | class AmpAdapter extends BaseAdapter { method getEffectiveReadOnlyLevel (line 40) | getEffectiveReadOnlyLevel(toolConfig: ToolConfig): ReadOnlyLevel { method buildInvocation (line 46) | buildInvocation(req: RunRequest): Invocation { method parseResult (line 80) | parseResult(result: ExecResult): Partial { function parseAmpUsage (line 90) | function parseAmpUsage(output: string): { function computeAmpCost (line 108) | function computeAmpCost( FILE: src/adapters/base.ts method getEffectiveReadOnlyLevel (line 23) | getEffectiveReadOnlyLevel(_toolConfig: ToolConfig): ReadOnlyLevel { method parseResult (line 27) | parseResult(result: ExecResult): Partial { FILE: src/adapters/claude.ts class ClaudeAdapter (line 5) | class ClaudeAdapter extends BaseAdapter { method buildInvocation (line 31) | buildInvocation(req: RunRequest): Invocation { FILE: src/adapters/codex.ts class CodexAdapter (line 5) | class CodexAdapter extends BaseAdapter { method buildInvocation (line 38) | buildInvocation(req: RunRequest): Invocation { FILE: src/adapters/custom.ts class CustomAdapter (line 10) | class CustomAdapter extends BaseAdapter { method constructor (line 20) | constructor(id: string, config: ToolConfig) { method buildInvocation (line 29) | buildInvocation(req: RunRequest): Invocation { FILE: src/adapters/gemini.ts class GeminiAdapter (line 4) | class GeminiAdapter extends BaseAdapter { method buildInvocation (line 34) | buildInvocation(req: RunRequest): Invocation { FILE: src/adapters/index.ts function getAdapter (line 15) | function getAdapter(id: string, config?: ToolConfig): ToolAdapter { function getAllBuiltInAdapters (line 27) | function getAllBuiltInAdapters(): ToolAdapter[] { function isBuiltInTool (line 31) | function isBuiltInTool(id: string): boolean { function getBuiltInToolIds (line 35) | function getBuiltInToolIds(): string[] { function resolveAdapter (line 39) | function resolveAdapter( FILE: src/commands/_run-shared.ts function expandDuplicateToolIds (line 24) | function expandDuplicateToolIds( type ToolOpts (line 70) | interface ToolOpts { type ResolvedTools (line 76) | interface ResolvedTools { function resolveTools (line 81) | async function resolveTools( constant READ_ONLY_MAP (line 191) | const READ_ONLY_MAP: [cli: string, internal: ReadOnlyLevel][] = [ function resolveReadOnlyPolicy (line 199) | function resolveReadOnlyPolicy( type PromptOpts (line 220) | interface PromptOpts { type ResolvedPrompt (line 226) | interface ResolvedPrompt { function resolvePrompt (line 232) | async function resolvePrompt( type OutputDirResult (line 320) | interface OutputDirResult { function createOutputDir (line 325) | function createOutputDir( function buildDryRunInvocations (line 358) | function buildDryRunInvocations( function getPromptLabel (line 391) | function getPromptLabel( FILE: src/commands/agent.ts function registerAgentCommand (line 4) | function registerAgentCommand(program: Command): void { FILE: src/commands/cleanup.ts function formatDurationForHumans (line 12) | function formatDurationForHumans(ms: number): string { function registerCleanupCommand (line 23) | function registerCleanupCommand(program: Command): void { FILE: src/commands/config.ts function registerConfigCommand (line 6) | function registerConfigCommand(program: Command): void { FILE: src/commands/doctor.ts function registerDoctorCommand (line 18) | function registerDoctorCommand(program: Command): void { FILE: src/commands/groups/add.ts function parseToolList (line 6) | function parseToolList(value: string | undefined): string[] { function registerGroupAddCommand (line 14) | function registerGroupAddCommand(program: Command): void { FILE: src/commands/groups/list.ts function formatGroupList (line 5) | function formatGroupList(groups: Record): string { function registerGroupListCommand (line 22) | function registerGroupListCommand(program: Command): void { FILE: src/commands/groups/remove.ts function registerGroupRemoveCommand (line 9) | function registerGroupRemoveCommand(program: Command): void { FILE: src/commands/init.ts function buildToolConfig (line 16) | function buildToolConfig( function compoundId (line 28) | function compoundId(adapterId: string, modelId: string): string { function registerInitCommand (line 33) | function registerInitCommand(program: Command): void { FILE: src/commands/loop.ts constant INLINE_PROMPT_ENHANCEMENT_DESCRIPTION (line 26) | const INLINE_PROMPT_ENHANCEMENT_DESCRIPTION = `You are preparing a multi... function withExecutionBoilerplate (line 28) | function withExecutionBoilerplate(promptContent: string): string { function registerLoopCommand (line 35) | function registerLoopCommand(program: Command): void { FILE: src/commands/make-dir.ts function registerMakeDirCommand (line 12) | function registerMakeDirCommand(program: Command): void { FILE: src/commands/run.ts function registerRunCommand (line 20) | function registerRunCommand(program: Command): void { FILE: src/commands/skill.ts function registerSkillCommand (line 4) | function registerSkillCommand(program: Command): void { FILE: src/commands/tools/add.ts constant CUSTOM_TOOL_VALUE (line 26) | const CUSTOM_TOOL_VALUE = '__custom__'; function runAddWizard (line 33) | async function runAddWizard(): Promise<{ toolId: string; isCustom: boole... function validateBinary (line 86) | function validateBinary(input: string): string | null { function addBuiltInTool (line 103) | async function addBuiltInTool( function collectCustomConfig (line 206) | async function collectCustomConfig( function registerAddCommand (line 339) | function registerAddCommand(program: Command): void { FILE: src/commands/tools/discover.ts function registerDiscoverCommand (line 7) | function registerDiscoverCommand(program: Command): void { FILE: src/commands/tools/list.ts function registerListCommand (line 7) | function registerListCommand(program: Command): void { FILE: src/commands/tools/remove.ts function registerRemoveCommand (line 11) | function registerRemoveCommand(program: Command): void { FILE: src/commands/tools/rename.ts function registerRenameCommand (line 10) | function registerRenameCommand(program: Command): void { FILE: src/commands/tools/test.ts function registerTestCommand (line 9) | function registerTestCommand(program: Command): void { FILE: src/commands/upgrade.ts constant METHOD_LABEL (line 10) | const METHOD_LABEL: Record = { constant INSTALL_SCRIPT (line 19) | const INSTALL_SCRIPT = constant MANUAL_UPGRADE_OPTIONS (line 21) | const MANUAL_UPGRADE_OPTIONS = [ constant FORCE_NOTE (line 28) | const FORCE_NOTE = constant SKILL_TEMPLATE_HISTORY_URL (line 30) | const SKILL_TEMPLATE_HISTORY_URL = function printSkillUpdateGuidance (line 33) | function printSkillUpdateGuidance(): void { function printManualUpgradeGuidance (line 52) | function printManualUpgradeGuidance(): void { function registerUpgradeCommand (line 59) | function registerUpgradeCommand(program: Command): void { FILE: src/constants.ts constant CONFIG_DIR (line 7) | const CONFIG_DIR = join(xdgConfig, 'counselors'); constant CONFIG_FILE (line 8) | const CONFIG_FILE = join(CONFIG_DIR, 'config.json'); constant AMP_SETTINGS_FILE (line 9) | const AMP_SETTINGS_FILE = join(CONFIG_DIR, 'amp-readonly-settings.json'); constant AMP_DEEP_SETTINGS_FILE (line 10) | const AMP_DEEP_SETTINGS_FILE = join( constant DEFAULT_OUTPUT_DIR (line 17) | const DEFAULT_OUTPUT_DIR = './agents/counselors'; constant DEFAULT_TIMEOUT (line 21) | const DEFAULT_TIMEOUT = 540; constant KILL_GRACE_PERIOD (line 22) | const KILL_GRACE_PERIOD = 15_000; constant TEST_TIMEOUT (line 23) | const TEST_TIMEOUT = 30_000; constant DISCOVERY_TIMEOUT (line 24) | const DISCOVERY_TIMEOUT = 5_000; constant VERSION_TIMEOUT (line 25) | const VERSION_TIMEOUT = 10_000; constant DEFAULT_MAX_PARALLEL (line 29) | const DEFAULT_MAX_PARALLEL = 4; constant DEFAULT_MAX_CONTEXT_KB (line 33) | const DEFAULT_MAX_CONTEXT_KB = 50; function getExtendedSearchPaths (line 37) | function getExtendedSearchPaths(): string[] { constant MODEL_PATTERN (line 61) | const MODEL_PATTERN = /^[a-zA-Z0-9._:\-/]+$/; constant MAX_SLUG_LENGTH (line 65) | const MAX_SLUG_LENGTH = 40; constant CONFIG_FILE_MODE (line 69) | const CONFIG_FILE_MODE = 0o600; function sanitizeId (line 74) | function sanitizeId(id: string): string { constant SAFE_ID_RE (line 79) | const SAFE_ID_RE = /^[a-zA-Z0-9._-]+$/; function sanitizePath (line 83) | function sanitizePath(p: string): string { constant VERSION (line 91) | const VERSION = FILE: src/core/amp-utils.ts function copyAmpSettings (line 11) | function copyAmpSettings(): void { FILE: src/core/boilerplate.ts function getExecutionBoilerplate (line 4) | function getExecutionBoilerplate(): string { FILE: src/core/cleanup.ts type CleanupCandidate (line 4) | type CleanupCandidate = { constant SECOND (line 11) | const SECOND = 1000 * MS; constant MINUTE (line 12) | const MINUTE = 60 * SECOND; constant HOUR (line 13) | const HOUR = 60 * MINUTE; constant DAY (line 14) | const DAY = 24 * HOUR; constant WEEK (line 15) | const WEEK = 7 * DAY; function parseDurationMs (line 24) | function parseDurationMs(input: string): number { function scanCleanupCandidates (line 63) | function scanCleanupCandidates( function deleteCleanupCandidates (line 103) | function deleteCleanupCandidates(candidates: CleanupCandidate[]): { FILE: src/core/config.ts constant READ_ONLY_STRICTNESS (line 14) | const READ_ONLY_STRICTNESS: Record = { function stricterReadOnly (line 21) | function stricterReadOnly(a: ReadOnlyLevel, b: ReadOnlyLevel): ReadOnlyL... constant DEFAULT_CONFIG (line 25) | const DEFAULT_CONFIG: Config = { function loadConfig (line 38) | function loadConfig(globalPath?: string): Config { type ProjectConfig (line 68) | type ProjectConfig = z.infer; function loadProjectConfig (line 70) | function loadProjectConfig(cwd: string): ProjectConfig | null { function mergeConfigs (line 85) | function mergeConfigs( function saveConfig (line 117) | function saveConfig(config: Config, path?: string): void { function addToolToConfig (line 125) | function addToolToConfig( function removeToolFromConfig (line 136) | function removeToolFromConfig(config: Config, id: string): Config { function renameToolInConfig (line 150) | function renameToolInConfig( function getConfiguredTools (line 169) | function getConfiguredTools(config: Config): string[] { function addGroupToConfig (line 173) | function addGroupToConfig( function removeGroupFromConfig (line 184) | function removeGroupFromConfig(config: Config, name: string): Config { function getConfiguredGroups (line 190) | function getConfiguredGroups(config: Config): string[] { FILE: src/core/context.ts function safeFence (line 8) | function safeFence(content: string): string { function truncateUtf8 (line 15) | function truncateUtf8(str: string, maxBytes: number): string { function gatherContext (line 40) | function gatherContext( function getGitDiff (line 114) | function getGitDiff(cwd: string): string | null { FILE: src/core/discovery.ts constant DEFAULT_WINDOWS_EXTENSIONS (line 20) | const DEFAULT_WINDOWS_EXTENSIONS = ['.com', '.exe', '.bat', '.cmd']; function getWindowsExecutableExtensions (line 23) | function getWindowsExecutableExtensions( function buildBinaryCandidatesForScan (line 41) | function buildBinaryCandidatesForScan( function findBinary (line 71) | function findBinary(command: string): string | null { function getPathEntries (line 114) | function getPathEntries(pathEnv = process.env.PATH): string[] { function getNvmPaths (line 126) | function getNvmPaths(): string[] { function getFnmPaths (line 164) | function getFnmPaths(): string[] { function getBinaryVersion (line 217) | function getBinaryVersion(binaryPath: string): string | null { function discoverTool (line 239) | function discoverTool( FILE: src/core/dispatcher.ts type ProgressEvent (line 19) | interface ProgressEvent { type DispatchOptions (line 26) | interface DispatchOptions { function dispatch (line 40) | async function dispatch( FILE: src/core/executor.ts constant MAX_OUTPUT_BYTES (line 17) | const MAX_OUTPUT_BYTES = 10 * 1024 * 1024; constant WINDOWS_TASKKILL_TIMEOUT_MS (line 18) | const WINDOWS_TASKKILL_TIMEOUT_MS = 1500; function killProcessGroup (line 23) | function killProcessGroup(child: ChildProcess, signal: NodeJS.Signals): ... function clearSigintExit (line 72) | function clearSigintExit(): void { constant ENV_DENYLIST (line 79) | const ENV_DENYLIST = new Set([ constant ENV_ALLOWLIST (line 91) | const ENV_ALLOWLIST = [ function buildSafeEnv (line 136) | function buildSafeEnv(extra?: Record): Record { function computeAmpCostFromSnapshots (line 330) | function computeAmpCostFromSnapshots( function executeTest (line 346) | async function executeTest( FILE: src/core/fs-utils.ts function safeWriteFile (line 8) | function safeWriteFile( FILE: src/core/loop.ts type LoopOptions (line 10) | interface LoopOptions { type LoopResult (line 28) | interface LoopResult { constant MAX_PRIOR_REPORT_REFS (line 33) | const MAX_PRIOR_REPORT_REFS = 8; function totalWordCount (line 36) | function totalWordCount(round: RoundManifest): number { function runLoop (line 43) | async function runLoop(options: LoopOptions): Promise { function collectPriorOutputPaths (line 181) | function collectPriorOutputPaths( function augmentPromptWithPriorOutputs (line 208) | function augmentPromptWithPriorOutputs( FILE: src/core/prompt-builder.ts function secondsTimestamp (line 5) | function secondsTimestamp(): number { function slugify (line 9) | function slugify(text: string): string { function generateSlug (line 25) | function generateSlug(text: string): string { function generateSlugFromFile (line 33) | function generateSlugFromFile(filePath: string): string { function resolveOutputDir (line 46) | function resolveOutputDir(baseDir: string, slug: string): string { function buildPrompt (line 65) | function buildPrompt(question: string, context?: string): string { FILE: src/core/prompt-writer.ts type PromptWriterOptions (line 10) | interface PromptWriterOptions { type PromptWriterResult (line 20) | interface PromptWriterResult { function writePrompt (line 29) | async function writePrompt( FILE: src/core/repo-discovery.ts type RepoDiscoveryOptions (line 10) | interface RepoDiscoveryOptions { type RepoDiscoveryResult (line 18) | interface RepoDiscoveryResult { function runRepoDiscovery (line 27) | async function runRepoDiscovery( FILE: src/core/synthesis.ts function synthesize (line 11) | function synthesize(manifest: RunManifest, outputDir: string): string { function synthesizeFinal (line 84) | function synthesizeFinal( function extractHeadings (line 130) | function extractHeadings(outputDir: string, report: ToolReport): string[] { FILE: src/core/text-utils.ts function countWords (line 3) | function countWords(text: string): number { function buildToolReport (line 7) | function buildToolReport( FILE: src/core/upgrade.ts type InstallMethod (line 21) | type InstallMethod = type InstallDetection (line 29) | interface InstallDetection { type DetectInstallMethodInput (line 44) | interface DetectInstallMethodInput { type CaptureResult (line 55) | interface CaptureResult { type RunResult (line 62) | interface RunResult { type UpgradeDeps (line 68) | interface UpgradeDeps { type PerformUpgradeOptions (line 77) | interface PerformUpgradeOptions { type UpgradeOutcome (line 81) | interface UpgradeOutcome { type GithubReleaseAsset (line 87) | interface GithubReleaseAsset { type GithubLatestRelease (line 92) | interface GithubLatestRelease { type StandaloneUpgradeResult (line 97) | interface StandaloneUpgradeResult { function parseBrewVersion (line 105) | function parseBrewVersion(output: string): string | null { function parseNpmLsVersion (line 112) | function parseNpmLsVersion(output: string): string | null { function getStandaloneAssetName (line 125) | function getStandaloneAssetName( function getSafeStandaloneRoots (line 150) | function getSafeStandaloneRoots(homeDir: string): string[] { function isSafeStandalonePath (line 158) | function isSafeStandalonePath(path: string | null, homeDir: string): boo... function isLikelyPnpmInstall (line 168) | function isLikelyPnpmInstall( function isLikelyYarnGlobalInstall (line 190) | function isLikelyYarnGlobalInstall( function detectInstallMethod (line 210) | function detectInstallMethod( function detectInstallation (line 271) | function detectInstallation(deps: UpgradeDeps = {}): InstallDetection { function performUpgrade (line 356) | async function performUpgrade( function upgradeStandaloneBinary (line 453) | async function upgradeStandaloneBinary( function runManagerUpgrade (line 609) | function runManagerUpgrade( function resolveStandaloneTargetPath (line 631) | function resolveStandaloneTargetPath(binaryPath: string): string { function extractVersion (line 643) | function extractVersion(value: string | null): string | null { function stripLeadingV (line 651) | function stripLeadingV(version: string): string { function safeRealPath (line 655) | function safeRealPath( function normalizePath (line 666) | function normalizePath(path: string | null): string | null { function defaultCaptureCommand (line 671) | function defaultCaptureCommand(cmd: string, args: string[]): CaptureResu... function defaultRunCommand (line 700) | function defaultRunCommand(cmd: string, args: string[]): RunResult { function readNpmGlobalVersion (line 718) | function readNpmGlobalVersion(npmPrefix: string): string | null { function readNpmGlobalVersionFromNpmLs (line 743) | function readNpmGlobalVersionFromNpmLs( function parseSha256File (line 758) | function parseSha256File(text: string, filename: string): string | null { function sha256 (line 790) | function sha256(bytes: Buffer): string { function hashesEqual (line 794) | function hashesEqual(a: string, b: string): boolean { function uniqueBackupPath (line 798) | function uniqueBackupPath(targetPath: string): string { function ensureWritable (line 804) | function ensureWritable(dir: string): void { function validateExecutable (line 815) | function validateExecutable(path: string): void { function toText (line 829) | function toText(value: unknown): string { FILE: src/presets/index.ts function findPackageRoot (line 8) | function findPackageRoot(): string { function builtinPresetsDir (line 19) | function builtinPresetsDir(): string { function isFilePath (line 23) | function isFilePath(input: string): boolean { function parsePresetYaml (line 32) | function parsePresetYaml( function resolvePreset (line 56) | function resolvePreset(input: string): PresetDefinition { function getPresetNames (line 78) | function getPresetNames(): string[] { FILE: src/presets/types.ts type PresetDefinition (line 4) | interface PresetDefinition { FILE: src/types.ts type ReadOnlyLevel (line 5) | type ReadOnlyLevel = 'enforced' | 'bestEffort' | 'none'; type ToolConfig (line 22) | type ToolConfig = z.infer; type Config (line 41) | type Config = z.infer; type RunRequest (line 45) | interface RunRequest { type Invocation (line 57) | interface Invocation { type ExecResult (line 65) | interface ExecResult { type CostInfo (line 73) | interface CostInfo { type ToolReport (line 83) | interface ToolReport { type ToolAdapter (line 97) | interface ToolAdapter { type DiscoveryResult (line 120) | interface DiscoveryResult { type DoctorCheck (line 129) | interface DoctorCheck { type TestResult (line 137) | interface TestResult { type RoundManifest (line 148) | interface RoundManifest { type RunManifest (line 156) | interface RunManifest { FILE: src/ui/agent-reporter.ts constant HEARTBEAT_INTERVAL (line 5) | const HEARTBEAT_INTERVAL = 60_000; function formatDuration (line 7) | function formatDuration(ms: number): string { type ToolState (line 15) | interface ToolState { class AgentReporter (line 25) | class AgentReporter implements Reporter { method discoveryStarted (line 35) | discoveryStarted(toolId: string): void { method discoveryCompleted (line 39) | discoveryCompleted(_toolId: string): void { method promptWritingStarted (line 43) | promptWritingStarted(toolId: string): void { method promptWritingCompleted (line 47) | promptWritingCompleted(_toolId: string): void { method phasePidReported (line 51) | phasePidReported(toolId: string, pid: number): void { method executionStarted (line 57) | executionStarted( method toolStarted (line 81) | toolStarted(toolId: string, pid?: number): void { method toolCompleted (line 91) | toolCompleted(toolId: string, report: ToolReport): void { method executionFinished (line 111) | executionFinished(): void { method roundStarted (line 117) | roundStarted(round: number, totalRounds: number | null): void { method roundCompleted (line 137) | roundCompleted(_round: number): void { method convergenceDetected (line 141) | convergenceDetected(round: number, ratio: number, threshold: number): ... method printSummary (line 149) | printSummary(manifest: RunManifest, opts: { json?: boolean }): void { method stderr (line 159) | private stderr(line: string): void { method startHeartbeat (line 163) | private startHeartbeat(): void { method stopHeartbeat (line 179) | private stopHeartbeat(): void { FILE: src/ui/logger.ts function isDebug (line 1) | function isDebug(): boolean { function debug (line 5) | function debug(msg: string): void { function warn (line 11) | function warn(msg: string): void { function error (line 15) | function error(msg: string): void { function info (line 19) | function info(msg: string): void { function success (line 23) | function success(msg: string): void { FILE: src/ui/output.ts function clickablePath (line 10) | function clickablePath(p: string): string { function createSpinner (line 14) | function createSpinner(text: string): Ora { function formatDiscoveryResults (line 18) | function formatDiscoveryResults( function formatDoctorResults (line 36) | function formatDoctorResults(checks: DoctorCheck[]): string { type ToolListEntry (line 56) | interface ToolListEntry { function formatToolList (line 62) | function formatToolList( function formatTestResults (line 109) | function formatTestResults(results: TestResult[]): string { function formatRunSummary (line 128) | function formatRunSummary(manifest: RunManifest): string { function formatMultiRoundSummary (line 156) | function formatMultiRoundSummary(manifest: RunManifest): string { function formatDryRun (line 185) | function formatDryRun( FILE: src/ui/prompts.ts function selectModelDetails (line 3) | async function selectModelDetails( function selectModels (line 37) | async function selectModels( function selectTools (line 59) | async function selectTools( function confirmOverwrite (line 75) | async function confirmOverwrite(toolId: string): Promise { function selectRunTools (line 82) | async function selectRunTools(tools: string[]): Promise { function confirmAction (line 95) | async function confirmAction(message: string): Promise { function promptInput (line 99) | async function promptInput( function promptSelect (line 106) | async function promptSelect( FILE: src/ui/reporter.ts type Reporter (line 5) | interface Reporter { class NullReporter (line 32) | class NullReporter implements Reporter { method discoveryStarted (line 33) | discoveryStarted(): void {} method discoveryCompleted (line 34) | discoveryCompleted(): void {} method promptWritingStarted (line 35) | promptWritingStarted(): void {} method promptWritingCompleted (line 36) | promptWritingCompleted(): void {} method phasePidReported (line 37) | phasePidReported(): void {} method executionStarted (line 38) | executionStarted(): void {} method toolStarted (line 39) | toolStarted(): void {} method toolCompleted (line 40) | toolCompleted(): void {} method executionFinished (line 41) | executionFinished(): void {} method roundStarted (line 42) | roundStarted(): void {} method roundCompleted (line 43) | roundCompleted(): void {} method convergenceDetected (line 44) | convergenceDetected(): void {} method printSummary (line 45) | printSummary(): void {} function createReporter (line 48) | function createReporter(opts?: { dryRun?: boolean }): Reporter { FILE: src/ui/terminal-reporter.ts constant SPINNER_FRAMES (line 5) | const SPINNER_FRAMES = ['\u25d0', '\u25d3', '\u25d1', '\u25d2']; constant TICK_INTERVAL (line 6) | const TICK_INTERVAL = 200; constant LABEL_COL_WIDTH (line 7) | const LABEL_COL_WIDTH = 40; constant RED (line 9) | const RED = '\x1b[31m'; constant DIM (line 10) | const DIM = '\x1b[2m'; constant GREEN (line 11) | const GREEN = '\x1b[32m'; constant BOLD (line 12) | const BOLD = '\x1b[1m'; constant RESET (line 13) | const RESET = '\x1b[0m'; function formatDuration (line 15) | function formatDuration(ms: number): string { type ToolPhase (line 23) | type ToolPhase = 'pending' | 'running' | 'done'; type ToolState (line 25) | interface ToolState { class TerminalReporter (line 42) | class TerminalReporter implements Reporter { method discoveryStarted (line 60) | discoveryStarted(toolId: string): void { method discoveryCompleted (line 64) | discoveryCompleted(_toolId: string): void { method promptWritingStarted (line 69) | promptWritingStarted(toolId: string): void { method promptWritingCompleted (line 73) | promptWritingCompleted(_toolId: string): void { method phasePidReported (line 78) | phasePidReported(toolId: string, pid: number): void { method executionStarted (line 85) | executionStarted( method toolStarted (line 112) | toolStarted(toolId: string, pid?: number): void { method toolCompleted (line 120) | toolCompleted(toolId: string, report: ToolReport): void { method executionFinished (line 127) | executionFinished(): void { method roundStarted (line 138) | roundStarted(round: number, totalRounds: number | null): void { method roundCompleted (line 165) | roundCompleted(_round: number): void { method convergenceDetected (line 169) | convergenceDetected(round: number, ratio: number, threshold: number): ... method printSummary (line 179) | printSummary(manifest: RunManifest, opts: { json?: boolean }): void { method startPhaseSpinner (line 189) | private startPhaseSpinner(text: string): void { method stopPhaseSpinner (line 199) | private stopPhaseSpinner(): void { method renderPhase (line 208) | private renderPhase(): void { method clearStatus (line 219) | private clearStatus(): void { method restoreStatus (line 229) | private restoreStatus(): void { method stderr (line 233) | private stderr(line: string): void { method render (line 237) | private render(): void { method formatLine (line 281) | private formatLine(tool: ToolState): string { FILE: tests/integration/cli.test.ts constant CLI (line 15) | const CLI = resolve(import.meta.dirname, '../../dist/cli.js'); function run (line 17) | function run(args: string, options?: { env?: Record }): ... FILE: tests/unit/agent-reporter.test.ts function createReporter (line 27) | async function createReporter() { function makeReport (line 32) | function makeReport(overrides: Partial = {}): ToolReport { FILE: tests/unit/dispatcher.test.ts function makeConfig (line 43) | function makeConfig(tools: Config['tools']): Config { FILE: tests/unit/loop-command.test.ts function createProgramHarness (line 61) | function createProgramHarness() { function makeConfig (line 91) | function makeConfig(): Config { FILE: tests/unit/loop.test.ts function makeConfig (line 55) | function makeConfig(): Config { function baseOptions (line 75) | function baseOptions(overrides: Record = {}) { FILE: tests/unit/prompt-writer.test.ts function makeConfig (line 29) | function makeConfig(tools?: Config['tools']): Config { FILE: tests/unit/repo-discovery.test.ts function makeConfig (line 29) | function makeConfig(tools?: Config['tools']): Config { FILE: tests/unit/run-shared.test.ts function makeConfig (line 22) | function makeConfig( FILE: tests/unit/terminal-reporter.test.ts function createReporter (line 29) | async function createReporter() { function makeReport (line 36) | function makeReport(overrides: Partial = {}): ToolReport { FILE: tests/unit/text-utils.test.ts function makeResult (line 24) | function makeResult(overrides: Partial = {}): ExecResult { FILE: tests/unit/tools-add-custom-model.test.ts function createProgram (line 98) | function createProgram() { FILE: tests/unit/upgrade-exec.test.ts function makeDetection (line 7) | function makeDetection( FILE: tests/unit/upgrade-standalone.test.ts function sha256Hex (line 21) | function sha256Hex(buf: Buffer): string { function makeRelease (line 25) | function makeRelease(tag: string, name: string) { function makeFetch (line 41) | function makeFetch(opts: {